diff --git a/app/javascript/components/ui/button.jsx b/app/javascript/components/ui/button.jsx
new file mode 100644
index 0000000..69ad71f
--- /dev/null
+++ b/app/javascript/components/ui/button.jsx
@@ -0,0 +1,55 @@
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { cva } from "class-variance-authority";
+
+import { cn } from "@/lib/utils"
+
+const buttonVariants = cva(
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
+ {
+ variants: {
+ variant: {
+ default:
+ "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
+ destructive:
+ "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
+ outline:
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
+ secondary:
+ "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
+ ghost:
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
+ link: "text-primary underline-offset-4 hover:underline",
+ },
+ size: {
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
+ icon: "size-9",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ size: "default",
+ },
+ }
+)
+
+function Button({
+ className,
+ variant,
+ size,
+ asChild = false,
+ ...props
+}) {
+ const Comp = asChild ? Slot : "button"
+
+ return (
+
+ );
+}
+
+export { Button, buttonVariants }
diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js
index d0685d3..934fbb3 100644
--- a/app/javascript/controllers/index.js
+++ b/app/javascript/controllers/index.js
@@ -5,4 +5,7 @@
import { application } from "./application"
import HelloController from "./hello_controller"
+import ShadcnTestController from "./shadcn_test_controller"
+
application.register("hello", HelloController)
+application.register("shadcn-test", ShadcnTestController)
diff --git a/app/javascript/controllers/shadcn_test_controller.js b/app/javascript/controllers/shadcn_test_controller.js
new file mode 100644
index 0000000..bbc7e7f
--- /dev/null
+++ b/app/javascript/controllers/shadcn_test_controller.js
@@ -0,0 +1,39 @@
+import { Controller } from "@hotwired/stimulus"
+import React from "react"
+import { createRoot } from "react-dom/client"
+import { Button } from "@/components/ui/button"
+
+// Connects to data-controller="shadcn-test"
+export default class extends Controller {
+ static targets = ["container"]
+
+ connect() {
+ console.log("Shadcn Button Test Controller connected")
+ this.renderButton()
+ }
+
+ renderButton() {
+ const container = this.containerTarget
+ const root = createRoot(container)
+
+ root.render(
+
+
Test Button Shadcn
+
+
Ce bouton utilise shadcn/ui + Tailwind + PostCSS
+
+ )
+ }
+
+ handleClick = () => {
+ alert("✅ Le bouton shadcn fonctionne avec PostCSS !")
+ console.log("Shadcn button clicked - PostCSS compilation successful")
+ }
+}
\ No newline at end of file
diff --git a/app/javascript/lib/utils.js b/app/javascript/lib/utils.js
new file mode 100644
index 0000000..a2b7170
--- /dev/null
+++ b/app/javascript/lib/utils.js
@@ -0,0 +1,6 @@
+import { clsx } from "clsx"
+import { twMerge } from "tailwind-merge"
+
+export function cn(...inputs) {
+ return twMerge(clsx(inputs))
+}
\ No newline at end of file
diff --git a/app/views/pages/home.html.erb b/app/views/pages/home.html.erb
index 616d69c..27b4f28 100644
--- a/app/views/pages/home.html.erb
+++ b/app/views/pages/home.html.erb
@@ -13,7 +13,7 @@
<%= link_to "Explorer les soirées", "#events", class: "bg-gradient-to-r from-purple-600 to-pink-600 hover:from-purple-700 hover:to-pink-700 text-white font-semibold py-4 px-8 rounded-full transition-all duration-300 transform hover:scale-105 shadow-lg" %>
- <%= link_to "Voir les concerts", "#", class: "bg-white bg-opacity-10 backdrop-blur-sm border border-white border-opacity-30 hover:bg-opacity-20 text-white font-semibold py-4 px-8 rounded-full transition-all duration-300" %>
+ <%= link_to "Voir les concerts", "#", class: "bg-white bg-opacity-10 backdrop-blur-sm border border-white border-opacity-30 hover:bg-opacity-20 text-black font-semibold py-4 px-8 rounded-full transition-all duration-300" %>
diff --git a/components.json b/components.json
new file mode 100644
index 0000000..2375583
--- /dev/null
+++ b/components.json
@@ -0,0 +1,17 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "new-york",
+ "rsc": false,
+ "tsx": false,
+ "tailwind": {
+ "config": "tailwind.config.js",
+ "css": "app/assets/stylesheets/application.postcss.css",
+ "baseColor": "zinc",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils"
+ }
+}
\ No newline at end of file
diff --git a/docs/application-optimization.md b/docs/application-optimization.md
new file mode 100644
index 0000000..3e4ff1d
--- /dev/null
+++ b/docs/application-optimization.md
@@ -0,0 +1,157 @@
+# Application.js Size Optimization Guide
+
+## Current Issue
+The `application.js` bundle is 1.4MB (2.3MB with source maps), which is significantly larger than recommended.
+
+## Root Causes
+1. **Single bundle includes everything**: All dependencies, React, controllers, and components
+2. **No code splitting**: Everything is bundled into one file
+3. **Development dependencies**: Alpine.js and other dev tools included
+4. **No minification/optimization**: Source maps and uncompressed code
+
+## Optimization Strategies
+
+### 1. Split Bundles (Recommended)
+Create separate bundles for different parts of the application:
+
+**Update package.json build scripts:**
+```json
+{
+ "scripts": {
+ "build": "npm run build:main && npm run build:components",
+ "build:main": "esbuild app/javascript/application.js --bundle --minify --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets",
+ "build:components": "esbuild app/javascript/components/*.* --bundle --minify --format=esm --outdir=app/assets/builds/components --public-path=/assets --loader:.js=jsx",
+ "build:css": "postcss ./app/assets/stylesheets/application.postcss.css -o ./app/assets/builds/application.css"
+ }
+}
+```
+
+### 2. Remove Unused Dependencies
+**package.json optimization:**
+```json
+{
+ "dependencies": {
+ "@hotwired/stimulus": "^3.2.2",
+ "@hotwired/turbo-rails": "^8.0.13",
+ "@radix-ui/react-slot": "^1.2.3",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
+ },
+ "devDependencies": {
+ "@tailwindcss/postcss": "^4.1.4",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "esbuild": "^0.25.4",
+ "postcss": "^8.5.3",
+ "tailwind-merge": "^3.3.1",
+ "tailwindcss": "^4.1.4",
+ "tailwindcss-animate": "^1.0.7"
+ }
+}
+```
+
+**Remove these from devDependencies:**
+- `alpinejs` - if not used
+- `@types/alpinejs` - if Alpine.js removed
+- `cssnano` - if using Tailwind's built-in minification
+- `pm2` - production deployment tool
+
+### 3. Dynamic Imports (Code Splitting)
+**Update application.js:**
+```javascript
+// Instead of importing everything statically
+import "@hotwired/turbo-rails"
+import "./controllers"
+
+// Use dynamic imports for heavy components
+const loadComponent = async (componentName) => {
+ const { default: component } = await import(`./components/${componentName}`)
+ return component
+}
+```
+
+### 4. Tree Shaking & Minification
+**Enhanced build command:**
+```json
+{
+ "build": "esbuild app/javascript/application.js --bundle --minify --tree-shaking --drop:console --drop:debugger --sourcemap=external --format=esm --outdir=app/assets/builds --public-path=/assets"
+}
+```
+
+### 5. Separate Vendor Bundle
+**Create vendor.js:**
+```javascript
+// app/javascript/vendor.js
+import "react"
+import "react-dom"
+import "@radix-ui/react-slot"
+```
+
+**Update build to create vendor bundle:**
+```json
+{
+ "build:vendor": "esbuild app/javascript/vendor.js --bundle --minify --format=esm --outdir=app/assets/builds --public-path=/assets",
+ "build:app": "esbuild app/javascript/application.js --bundle --minify --external:react --external:react-dom --format=esm --outdir=app/assets/builds --public-path=/assets"
+}
+```
+
+### 6. Conditional Loading
+**Lazy load heavy components:**
+```javascript
+// app/javascript/application.js
+if (document.querySelector('[data-controller="shadcn-test"]')) {
+ import('./controllers/shadcn_test_controller')
+}
+```
+
+### 7. Production Optimization Checklist
+
+**Step 1: Analyze bundle size**
+```bash
+npm install --save-dev webpack-bundle-analyzer
+npx esbuild app/javascript/application.js --bundle --analyze
+```
+
+**Step 2: Implement optimizations**
+```bash
+# Remove unused dependencies
+npm uninstall alpinejs @types/alpinejs cssnano pm2
+
+# Update build scripts
+npm run build
+```
+
+**Step 3: Verify size reduction**
+Should reduce from 1.4MB to ~200-400KB
+
+## Quick Fix Commands
+
+```bash
+# 1. Remove Alpine.js (if unused)
+npm uninstall alpinejs @types/alpinejs
+
+# 2. Update build with optimization
+npm install --save-dev esbuild@latest
+
+# 3. Modify package.json scripts
+# (Copy the optimized scripts above)
+
+# 4. Build with optimization
+npm run build
+```
+
+## Expected Results
+- **Before**: 1.4MB application.js
+- **After**: 200-400KB with code splitting
+- **Vendor bundle**: ~100KB (cached)
+- **App bundle**: ~100-300KB (dynamic)
+
+## Monitoring
+Add bundle size monitoring to CI/CD:
+```json
+{
+ "size-limits": {
+ "app/assets/builds/application.js": "500kb",
+ "app/assets/builds/application.css": "50kb"
+ }
+}
\ No newline at end of file
diff --git a/docs/creating-shadcn-react-components.md b/docs/creating-shadcn-react-components.md
new file mode 100644
index 0000000..cb02e96
--- /dev/null
+++ b/docs/creating-shadcn-react-components.md
@@ -0,0 +1,288 @@
+# Creating New Shadcn and React Components
+
+This guide explains how to create new Shadcn (UI) components and React components in this Rails application with React frontend.
+
+## Overview
+
+This project uses:
+- **Shadcn/ui** for UI components (built on Radix UI and Tailwind CSS)
+- **React** for frontend components
+- **Rails** as the backend framework
+- **esbuild** for JavaScript bundling
+
+## Directory Structure
+
+```
+app/
+├── javascript/
+│ ├── components/
+│ │ └── ui/ # Shadcn components
+│ └── controllers/ # React controllers
+├── views/
+│ └── components/ # Rails view components
+└── docs/ # Documentation
+```
+
+## Creating Shadcn Components
+
+### 1. Using the Shadcn CLI
+
+The easiest way to add new Shadcn components is using the CLI:
+
+```bash
+# Navigate to the project root
+cd /home/acid/Documents/aperonight
+
+# Add a new component (example: adding a card)
+npx shadcn-ui@latest add card
+```
+
+This will:
+- Install the component to `app/javascript/components/ui/`
+- Update the components.json configuration
+- Create the necessary TypeScript/JavaScript files
+
+### 2. Manual Component Creation
+
+If the CLI is not available, create components manually:
+
+#### Create the component file
+```bash
+# Create a new component (example: button.jsx)
+touch app/javascript/components/ui/button.jsx
+```
+
+#### Basic component structure
+```javascript
+// app/javascript/components/ui/button.jsx
+import * as React from "react"
+import { cn } from "@/lib/utils"
+
+const Button = React.forwardRef(({ className, ...props }, ref) => {
+ return (
+
+ )
+})
+Button.displayName = "Button"
+
+export { Button }
+```
+
+## Creating React Components
+
+### 1. Controller-Based Components
+
+For components that need Rails integration:
+
+#### Create controller file
+```bash
+# Create a new controller
+touch app/javascript/controllers/my_component_controller.js
+```
+
+#### Basic controller structure
+```javascript
+// app/javascript/controllers/my_component_controller.js
+import { Controller } from "@hotwired/stimulus"
+import React from "react"
+import ReactDOM from "react-dom/client"
+
+export default class extends Controller {
+ static targets = ["container"]
+
+ connect() {
+ const root = ReactDOM.createRoot(this.containerTarget)
+ root.render()
+ }
+}
+```
+
+### 2. Standalone React Components
+
+For reusable React components:
+
+#### Create component file
+```bash
+# Create a new React component
+touch app/javascript/components/MyNewComponent.jsx
+```
+
+#### Component structure
+```javascript
+// app/javascript/components/MyNewComponent.jsx
+import React from "react"
+
+const MyNewComponent = ({ title, description }) => {
+ return (
+
+
{title}
+
{description}
+
+ )
+}
+
+export default MyNewComponent
+```
+
+## Integration Patterns
+
+### 1. Using in Rails Views
+
+To use components in Rails views:
+
+#### Create partial
+```erb
+
+
+```
+
+#### Include in page
+```erb
+
+<%= render "components/my_component" %>
+```
+
+### 2. Direct React Rendering
+
+For pages that are primarily React:
+
+#### Create page component
+```javascript
+// app/javascript/components/pages/HomePage.jsx
+import React from "react"
+import { Button } from "@/components/ui/button"
+
+const HomePage = () => {
+ return (
+
+
Welcome
+
+
+ )
+}
+
+export default HomePage
+```
+
+## Configuration Updates
+
+### 1. Update components.json
+```json
+{
+ "style": "default",
+ "rsc": false,
+ "tsx": false,
+ "tailwind": {
+ "config": "tailwind.config.js",
+ "css": "app/assets/stylesheets/application.postcss.css",
+ "baseColor": "slate",
+ "cssVariables": true
+ },
+ "aliases": {
+ "components": "app/javascript/components",
+ "utils": "app/javascript/lib/utils"
+ }
+}
+```
+
+### 2. Update JavaScript entry point
+```javascript
+// app/javascript/application.js
+import "./components"
+import "./controllers"
+```
+
+## Naming Conventions
+
+### Shadcn Components
+- Use kebab-case for filenames: `button.jsx`, `card.jsx`
+- Use PascalCase for exports: `export { Button }`
+- Follow Radix UI naming patterns
+
+### React Components
+- Use PascalCase for filenames: `MyComponent.jsx`
+- Use PascalCase for components: `const MyComponent = () => {}`
+- Use camelCase for props: `myProp`, `onClick`
+
+## Testing Components
+
+### 1. Create test file
+```bash
+# Create test file
+touch test/components/my_component_test.rb
+```
+
+### 2. Write component test
+```javascript
+// test/components/my_component_test.jsx
+import { render, screen } from "@testing-library/react"
+import MyComponent from "../../app/javascript/components/MyComponent"
+
+test("renders component", () => {
+ render()
+ expect(screen.getByText("Test")).toBeInTheDocument()
+})
+```
+
+## Common Patterns
+
+### 1. Props Pattern
+```javascript
+// Pass Rails data as props
+const MyComponent = ({ user, config }) => {
+ return {user.name}
+}
+```
+
+### 2. Event Handling
+```javascript
+// Handle events from Rails
+const MyComponent = ({ onAction }) => {
+ return
+}
+```
+
+### 3. Styling Integration
+```javascript
+// Use Tailwind classes
+const MyComponent = () => {
+ return Content
+}
+```
+
+## Troubleshooting
+
+### Common Issues
+
+1. **Component not rendering**: Check controller connection
+2. **Styling issues**: Verify Tailwind classes
+3. **Props not passing**: Check data-controller attributes
+4. **Import errors**: Verify alias paths in components.json
+
+### Debug Steps
+
+1. Check browser console for errors
+2. Verify component file exists in correct location
+3. Check import paths in application.js
+4. Verify Rails view includes correct data attributes
+
+
+## Example created for testing purpose
+
+```html
+
+
+```
+
+
diff --git a/docs/theme-rules.md b/docs/theme-rules.md
new file mode 100644
index 0000000..4274d4b
--- /dev/null
+++ b/docs/theme-rules.md
@@ -0,0 +1,103 @@
+# Theme Rules & Color Palette - Aperonight
+
+Extracted from `app/views/pages/home.html.erb`
+
+## Color Palette
+
+### Primary Colors
+- **Indigo**: `#4338ca` (rgb(67, 56, 202)) - Used in hero gradient
+- **Purple**: `#8b5cf6` (rgb(139, 92, 246)) - Primary brand color
+- **Pink**: `#ec4899` (rgb(236, 72, 153)) - Accent color
+
+### Background Gradients
+- **Hero**: `bg-gradient-to-br from-indigo-900 via-purple-800 to-pink-700`
+- **CTA**: `bg-gradient-to-r from-purple-900 via-indigo-900 to-pink-900`
+- **Cards**: `bg-gradient-to-br from-gray-800 to-gray-900`
+- **Buttons**: `bg-gradient-to-r from-purple-600 to-pink-600`
+
+### Text Colors
+- **White**: `text-white` - Primary text
+- **Gray-200**: `text-gray-200` - Secondary text
+- **Gray-300**: `text-gray-300` - Subtle text
+- **Gray-400**: `text-gray-400` - Muted text
+- **Transparent gradient**: `text-transparent bg-clip-text bg-gradient-to-r from-purple-400 to-pink-400` - Special highlight
+
+### Background Colors
+- **Gray-900**: `bg-gray-900` - Main background
+- **Black**: `bg-black` - Overlay backgrounds
+- **Gray-800**: `bg-gray-800` - Card backgrounds
+- **White/Transparent**: `bg-white bg-opacity-10 backdrop-blur-sm` - Glass effect
+
+## Spacing & Layout
+
+### Hero Section
+- **Height**: `min-h-[70vh]`
+- **Max-width**: `max-w-7xl mx-auto`
+- **Padding**: `px-4 sm:px-6 lg:px-8`
+
+### Grid Layouts
+- **Responsive**: `grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
+- **Gap**: `gap-8` standard spacing
+
+### Padding Classes
+- **Section**: `py-16`, `py-20`
+- **Card**: `p-4`, `p-6`, `p-8`
+- **Button**: `py-3`, `py-4`, `px-6`, `px-8`
+
+## Typography
+
+### Font Sizes
+- **Hero Title**: `text-5xl md:text-7xl`
+- **Section Title**: `text-4xl`
+- **Card Title**: `text-2xl`
+- **Body**: `text-xl`, `text-lg`
+- **Small**: `text-sm`
+
+### Font Weights
+- **Bold**: `font-bold` (headings)
+- **Semibold**: `font-semibold` (buttons, important text)
+- **Medium**: `font-medium` (labels)
+
+## Interactive States
+
+### Hover Effects
+- **Scale**: `hover:scale-105`
+- **Transition**: `transition-all duration-300`
+- **Button Hover**: `hover:from-purple-700 hover:to-pink-700`
+- **Glass Hover**: `hover:bg-opacity-20`
+
+### Shadows
+- **Default**: `shadow-lg`
+- **Strong**: `shadow-xl`
+- **Card**: `shadow-2xl`
+
+## Border Radius
+- **Buttons**: `rounded-full` (pill-shaped)
+- **Cards**: `rounded-2xl`
+- **Inputs**: `rounded-lg`
+
+## Icon Colors
+- **Primary**: `text-white` (on colored backgrounds)
+- **Accent**: `text-purple-400`, `text-pink-400`
+- **Muted**: `text-gray-400`
+
+## Usage Examples
+
+### Primary Button
+```html
+class="bg-gradient-to-r from-purple-600 to-pink-600 hover:from-purple-700 hover:to-pink-700 text-white font-semibold py-4 px-8 rounded-full transition-all duration-300 transform hover:scale-105 shadow-lg"
+```
+
+### Card Background
+```html
+class="bg-gradient-to-br from-gray-800 to-gray-900 rounded-2xl overflow-hidden hover:transform hover:scale-105 transition-all duration-300 shadow-xl"
+```
+
+### Hero Gradient
+```html
+class="bg-gradient-to-br from-indigo-900 via-purple-800 to-pink-700"
+```
+
+### Glass Effect
+```html
+class="bg-white bg-opacity-10 backdrop-blur-sm border border-white border-opacity-30"
\ No newline at end of file
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..67dfc70
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["app/javascript/*"]
+ }
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 443aa31..239c90a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,10 @@
"name": "app",
"dependencies": {
"@hotwired/stimulus": "^3.2.2",
- "@hotwired/turbo-rails": "^8.0.13"
+ "@hotwired/turbo-rails": "^8.0.13",
+ "@radix-ui/react-slot": "^1.2.3",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.4",
@@ -123,6 +126,8 @@
},
"node_modules/@hotwired/turbo-rails": {
"version": "8.0.16",
+ "resolved": "https://registry.npmjs.org/@hotwired/turbo-rails/-/turbo-rails-8.0.16.tgz",
+ "integrity": "sha512-Yxiy2x+N3eOIEDokvLzSrd08aI5RDKnFYDQFl2J/LuMEWTtPdY7oNP0F/gv/sSe5AV23Lwz4FitG/uNFXNM5tA==",
"license": "MIT",
"dependencies": {
"@hotwired/turbo": "^8.0.13",
@@ -427,6 +432,39 @@
"debug": "^4.3.1"
}
},
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz",
+ "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
+ "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-compose-refs": "1.1.2"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@rails/actioncable": {
"version": "8.0.201",
"resolved": "https://registry.npmjs.org/@rails/actioncable/-/actioncable-8.0.201.tgz",
@@ -1570,6 +1608,8 @@
},
"node_modules/esbuild": {
"version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -2026,6 +2066,12 @@
"pako": "^0.2.5"
}
},
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@@ -2333,6 +2379,18 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ },
+ "bin": {
+ "loose-envify": "cli.js"
+ }
+ },
"node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -2739,6 +2797,8 @@
},
"node_modules/postcss": {
"version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"dev": true,
"funding": [
{
@@ -2913,6 +2973,8 @@
},
"node_modules/postcss-import": {
"version": "16.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.1.tgz",
+ "integrity": "sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3100,6 +3162,8 @@
},
"node_modules/postcss-nesting": {
"version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz",
+ "integrity": "sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==",
"dev": true,
"funding": [
{
@@ -3444,6 +3508,31 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/react": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "scheduler": "^0.23.2"
+ },
+ "peerDependencies": {
+ "react": "^18.3.1"
+ }
+ },
"node_modules/read": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
@@ -3582,6 +3671,15 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
+ "dependencies": {
+ "loose-envify": "^1.1.0"
+ }
+ },
"node_modules/semver": {
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
diff --git a/package.json b/package.json
index 67c57f0..0f956a8 100644
--- a/package.json
+++ b/package.json
@@ -2,13 +2,15 @@
"name": "app",
"private": true,
"scripts": {
- "build": "esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets",
+ "build": "esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets --loader:.js=jsx",
"build:css": "postcss ./app/assets/stylesheets/application.postcss.css -o ./app/assets/builds/application.css"
},
"dependencies": {
"@hotwired/stimulus": "^3.2.2",
"@hotwired/turbo-rails": "^8.0.13",
- "@radix-ui/react-slot": "^1.2.3"
+ "@radix-ui/react-slot": "^1.2.3",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
},
"devDependencies": {
"@tailwindcss/postcss": "^4.1.4",
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..7fe0603
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,81 @@
+const { fontFamily } = require("tailwindcss/defaultTheme")
+
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: [
+ './public/*.html',
+ './app/helpers/**/*.rb',
+ './app/javascript/**/*.js',
+ './app/views/**/*.{erb,haml,html,slim}',
+ './app/components/**/*.{erb,haml,html,slim,js}',
+ ],
+ theme: {
+ container: {
+ center: true,
+ padding: "2rem",
+ screens: {
+ "2xl": "1400px",
+ },
+ },
+ extend: {
+ colors: {
+ border: "hsl(var(--border))",
+ input: "hsl(var(--input))",
+ ring: "hsl(var(--ring))",
+ background: "hsl(var(--background))",
+ foreground: "hsl(var(--foreground))",
+ primary: {
+ DEFAULT: "hsl(var(--primary))",
+ foreground: "hsl(var(--primary-foreground))",
+ },
+ secondary: {
+ DEFAULT: "hsl(var(--secondary))",
+ foreground: "hsl(var(--secondary-foreground))",
+ },
+ destructive: {
+ DEFAULT: "hsl(var(--destructive))",
+ foreground: "hsl(var(--destructive-foreground))",
+ },
+ muted: {
+ DEFAULT: "hsl(var(--muted))",
+ foreground: "hsl(var(--muted-foreground))",
+ },
+ accent: {
+ DEFAULT: "hsl(var(--accent))",
+ foreground: "hsl(var(--accent-foreground))",
+ },
+ popover: {
+ DEFAULT: "hsl(var(--popover))",
+ foreground: "hsl(var(--popover-foreground))",
+ },
+ card: {
+ DEFAULT: "hsl(var(--card))",
+ foreground: "hsl(var(--card-foreground))",
+ },
+ },
+ borderRadius: {
+ lg: "var(--radius)",
+ md: "calc(var(--radius) - 2px)",
+ sm: "calc(var(--radius) - 4px)",
+ },
+ fontFamily: {
+ sans: ["var(--font-sans)", ...fontFamily.sans],
+ },
+ keyframes: {
+ "accordion-down": {
+ from: { height: "0" },
+ to: { height: "var(--radix-accordion-content-height)" },
+ },
+ "accordion-up": {
+ from: { height: "var(--radix-accordion-content-height)" },
+ to: { height: "0" },
+ },
+ },
+ animation: {
+ "accordion-down": "accordion-down 0.2s ease-out",
+ "accordion-up": "accordion-up 0.2s ease-out",
+ },
+ },
+ },
+ plugins: [require("tailwindcss-animate")],
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index 5f08548..da2878c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -17,158 +17,11 @@
resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz"
integrity sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==
-"@emnapi/core@^1.4.3", "@emnapi/core@^1.4.5":
- version "1.4.5"
- resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.5.tgz#bfbb0cbbbb9f96ec4e2c4fd917b7bbe5495ceccb"
- integrity sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==
- dependencies:
- "@emnapi/wasi-threads" "1.0.4"
- tslib "^2.4.0"
-
-"@emnapi/runtime@^1.4.3", "@emnapi/runtime@^1.4.5":
- version "1.4.5"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.5.tgz#c67710d0661070f38418b6474584f159de38aba9"
- integrity sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==
- dependencies:
- tslib "^2.4.0"
-
-"@emnapi/wasi-threads@1.0.4", "@emnapi/wasi-threads@^1.0.4":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz#703fc094d969e273b1b71c292523b2f792862bf4"
- integrity sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==
- dependencies:
- tslib "^2.4.0"
-
-"@esbuild/aix-ppc64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9"
- integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==
-
-"@esbuild/android-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c"
- integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==
-
-"@esbuild/android-arm@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419"
- integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==
-
-"@esbuild/android-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683"
- integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==
-
-"@esbuild/darwin-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae"
- integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==
-
-"@esbuild/darwin-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be"
- integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==
-
-"@esbuild/freebsd-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca"
- integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==
-
-"@esbuild/freebsd-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab"
- integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==
-
-"@esbuild/linux-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b"
- integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==
-
-"@esbuild/linux-arm@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37"
- integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==
-
-"@esbuild/linux-ia32@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4"
- integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==
-
-"@esbuild/linux-loong64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0"
- integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==
-
-"@esbuild/linux-mips64el@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5"
- integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==
-
-"@esbuild/linux-ppc64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db"
- integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==
-
-"@esbuild/linux-riscv64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547"
- integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==
-
-"@esbuild/linux-s390x@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830"
- integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==
-
"@esbuild/linux-x64@0.25.9":
version "0.25.9"
resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz"
integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==
-"@esbuild/netbsd-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548"
- integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==
-
-"@esbuild/netbsd-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52"
- integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==
-
-"@esbuild/openbsd-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935"
- integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==
-
-"@esbuild/openbsd-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf"
- integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==
-
-"@esbuild/openharmony-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314"
- integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==
-
-"@esbuild/sunos-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e"
- integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==
-
-"@esbuild/win32-arm64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b"
- integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==
-
-"@esbuild/win32-ia32@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3"
- integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==
-
-"@esbuild/win32-x64@0.25.9":
- version "0.25.9"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f"
- integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==
-
"@hotwired/stimulus@^3.2.2":
version "3.2.2"
resolved "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz"
@@ -176,7 +29,7 @@
"@hotwired/turbo-rails@^8.0.13":
version "8.0.16"
- resolved "https://registry.yarnpkg.com/@hotwired/turbo-rails/-/turbo-rails-8.0.16.tgz#096f3bec8c3c04d4aac4dd0f75305c67b3db3501"
+ resolved "https://registry.npmjs.org/@hotwired/turbo-rails/-/turbo-rails-8.0.16.tgz"
integrity sha512-Yxiy2x+N3eOIEDokvLzSrd08aI5RDKnFYDQFl2J/LuMEWTtPdY7oNP0F/gv/sSe5AV23Lwz4FitG/uNFXNM5tA==
dependencies:
"@hotwired/turbo" "^8.0.13"
@@ -228,15 +81,6 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
-"@napi-rs/wasm-runtime@^0.2.12":
- version "0.2.12"
- resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz#3e78a8b96e6c33a6c517e1894efbd5385a7cb6f2"
- integrity sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==
- dependencies:
- "@emnapi/core" "^1.4.3"
- "@emnapi/runtime" "^1.4.3"
- "@tybys/wasm-util" "^0.10.0"
-
"@pm2/agent@~2.1.1":
version "2.1.1"
resolved "https://registry.npmjs.org/@pm2/agent/-/agent-2.1.1.tgz"
@@ -289,12 +133,12 @@
"@radix-ui/react-compose-refs@1.1.2":
version "1.1.2"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz#a2c4c47af6337048ee78ff6dc0d090b390d2bb30"
+ resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz"
integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
"@radix-ui/react-slot@^1.2.3":
version "1.2.3"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz#502d6e354fc847d4169c3bc5f189de777f68cfe1"
+ resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz"
integrity sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==
dependencies:
"@radix-ui/react-compose-refs" "1.1.2"
@@ -421,13 +265,6 @@
resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz"
integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
-"@tybys/wasm-util@^0.10.0":
- version "0.10.0"
- resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.0.tgz#2fd3cd754b94b378734ce17058d0507c45c88369"
- integrity sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==
- dependencies:
- tslib "^2.4.0"
-
"@types/alpinejs@^3.13.11":
version "3.13.11"
resolved "https://registry.npmjs.org/@types/alpinejs/-/alpinejs-3.13.11.tgz"
@@ -464,7 +301,7 @@ amp-message@~0.1.1:
dependencies:
amp "0.3.1"
-amp@0.3.1, amp@~0.3.1:
+amp@~0.3.1, amp@0.3.1:
version "0.3.1"
resolved "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz"
integrity sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==
@@ -511,7 +348,7 @@ ast-types@^0.13.4:
dependencies:
tslib "^2.0.1"
-async@^2.6.3, async@~2.6.1:
+async@^2.6.3:
version "2.6.4"
resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz"
integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
@@ -523,6 +360,13 @@ async@^3.2.0, async@~3.2.0, async@~3.2.6:
resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz"
integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
+async@~2.6.1:
+ version "2.6.4"
+ resolved "https://registry.npmjs.org/async/-/async-2.6.4.tgz"
+ integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
+ dependencies:
+ lodash "^4.17.14"
+
autoprefixer@^10.4.21:
version "10.4.21"
resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz"
@@ -567,7 +411,7 @@ braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.0.0, browserslist@^4.24.4, browserslist@^4.25.1:
+browserslist@^4.0.0, browserslist@^4.24.4, browserslist@^4.25.1, "browserslist@>= 4.21.0":
version "4.25.2"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.2.tgz"
integrity sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==
@@ -597,7 +441,7 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001733:
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz"
integrity sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==
-chalk@3.0.0, chalk@~3.0.0:
+chalk@~3.0.0, chalk@3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz"
integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
@@ -675,16 +519,16 @@ colord@^2.9.3:
resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-commander@2.15.1:
- version "2.15.1"
- resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz"
- integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
-
commander@^11.1.0:
version "11.1.0"
resolved "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz"
integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==
+commander@2.15.1:
+ version "2.15.1"
+ resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz"
+ integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
+
croner@~4.1.92:
version "4.1.97"
resolved "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz"
@@ -808,13 +652,6 @@ dayjs@~1.8.24:
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz"
integrity sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==
-debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.7:
- version "4.4.1"
- resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz"
- integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
- dependencies:
- ms "^2.1.3"
-
debug@^3.2.6:
version "3.2.7"
resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
@@ -822,6 +659,13 @@ debug@^3.2.6:
dependencies:
ms "^2.1.1"
+debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.3.7, debug@4:
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz"
+ integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==
+ dependencies:
+ ms "^2.1.3"
+
debug@~4.3.1:
version "4.3.7"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz"
@@ -910,7 +754,7 @@ entities@^4.2.0:
esbuild@^0.25.4:
version "0.25.9"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz"
integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==
optionalDependencies:
"@esbuild/aix-ppc64" "0.25.9"
@@ -976,16 +820,16 @@ esutils@^2.0.2:
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-eventemitter2@5.0.1, eventemitter2@~5.0.1:
- version "5.0.1"
- resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz"
- integrity sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==
-
eventemitter2@^6.3.1:
version "6.4.9"
resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz"
integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==
+eventemitter2@~5.0.1, eventemitter2@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz"
+ integrity sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==
+
extrareqp2@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/extrareqp2/-/extrareqp2-1.0.0.tgz"
@@ -998,7 +842,7 @@ fast-json-patch@^3.1.0:
resolved "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz"
integrity sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==
-fclone@1.0.11, fclone@~1.0.11:
+fclone@~1.0.11, fclone@1.0.11:
version "1.0.11"
resolved "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz"
integrity sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==
@@ -1034,11 +878,6 @@ fs-extra@^11.0.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
-fsevents@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -1161,7 +1000,7 @@ is-number@^7.0.0:
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-jiti@^2.5.1:
+jiti@^2.5.1, jiti@>=1.21.0:
version "2.5.1"
resolved "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz"
integrity sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==
@@ -1176,6 +1015,11 @@ js-git@^0.7.8:
git-sha1 "^0.1.2"
pako "^0.2.5"
+"js-tokens@^3.0.0 || ^4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
js-yaml@~4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
@@ -1285,6 +1129,13 @@ lodash@^4.17.14:
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+loose-envify@^1.1.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
@@ -1326,16 +1177,16 @@ minizlib@^3.0.1:
dependencies:
minipass "^7.1.2"
-mkdirp@1.0.4:
- version "1.0.4"
- resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
- integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
-
mkdirp@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz"
integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
+mkdirp@1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
+ integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+
module-details-from-path@^1.0.3:
version "1.0.4"
resolved "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz"
@@ -1434,7 +1285,7 @@ picomatch@^2.0.4, picomatch@^2.2.1:
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-picomatch@^4.0.2:
+"picomatch@^3 || ^4", picomatch@^4.0.2:
version "4.0.3"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz"
integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
@@ -1610,7 +1461,7 @@ postcss-flexbugs-fixes@^5.0.2:
postcss-import@^16.1.0:
version "16.1.1"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-16.1.1.tgz#cfbe79e6c9232b0dbbe1c18f35308825cfe8ff2a"
+ resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.1.tgz"
integrity sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ==
dependencies:
postcss-value-parser "^4.0.0"
@@ -1685,7 +1536,7 @@ postcss-nested@^7.0.2:
postcss-nesting@^13.0.1:
version "13.0.2"
- resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-13.0.2.tgz#fde0d4df772b76d03b52eccc84372e8d1ca1402e"
+ resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.2.tgz"
integrity sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ==
dependencies:
"@csstools/selector-resolve-nested" "^3.1.0"
@@ -1813,9 +1664,9 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss@^8.4.41, postcss@^8.5.3:
+postcss@^8.0.0, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2.14, postcss@^8.4, postcss@^8.4.32, postcss@^8.4.38, postcss@^8.4.41, postcss@^8.5.3, postcss@>=8.0.9:
version "8.5.6"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz"
integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
dependencies:
nanoid "^3.3.11"
@@ -1853,6 +1704,21 @@ proxy-from-env@^1.1.0:
resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+react-dom@^18.3.1:
+ version "18.3.1"
+ resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
+ integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.2"
+
+"react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", react@^18.3.1:
+ version "18.3.1"
+ resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
+ integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
read-cache@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz"
@@ -1917,12 +1783,26 @@ sax@^1.2.4, sax@^1.4.1:
resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz"
integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
+scheduler@^0.23.2:
+ version "0.23.2"
+ resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz"
+ integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
semver@^7.6.2:
version "7.7.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz"
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
-semver@~7.5.0, semver@~7.5.4:
+semver@~7.5.0:
+ version "7.5.4"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@~7.5.4:
version "7.5.4"
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
@@ -2053,7 +1933,7 @@ tailwindcss-animate@^1.0.7:
resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz"
integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==
-tailwindcss@4.1.12, tailwindcss@^4.1.4:
+tailwindcss@^4.1.4, "tailwindcss@>=3.0.0 || insiders", tailwindcss@4.1.12:
version "4.1.12"
resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz"
integrity sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==
@@ -2095,16 +1975,16 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
-tslib@1.9.3:
+tslib@^2.0.1:
+ version "2.8.1"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
+ integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
+
+tslib@^2.8.0, tslib@1.9.3:
version "1.9.3"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz"
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
-tslib@^2.0.1, tslib@^2.4.0, tslib@^2.8.0:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
- integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-
tv4@^1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz"