@stevederico/skateboard-ui 1.2.15 → 1.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,9 @@
1
1
  # CHANGELOG
2
+ 1.2.17
3
+
4
+ Fix SignIn layout positioning
5
+ Fix SignUp layout positioning
6
+
2
7
  1.2.14
3
8
 
4
9
  Fix isAuthenticated validation
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # skateboard-ui
2
2
 
3
- React component library built with TailwindCSS and shadcn/ui for rapid application development.
3
+ React component library for rapid application development. Built with TailwindCSS v4 and shadcn/ui.
4
4
 
5
5
  ## Installation
6
6
 
@@ -8,58 +8,195 @@ React component library built with TailwindCSS and shadcn/ui for rapid applicati
8
8
  npm install @stevederico/skateboard-ui
9
9
  ```
10
10
 
11
+ ## Quick Start
12
+
13
+ ```javascript
14
+ import './assets/styles.css';
15
+ import { createSkateboardApp } from '@stevederico/skateboard-ui/App';
16
+ import constants from './constants.json';
17
+ import HomeView from './components/HomeView.jsx';
18
+
19
+ const appRoutes = [
20
+ { path: 'home', element: <HomeView /> }
21
+ ];
22
+
23
+ createSkateboardApp({ constants, appRoutes });
24
+ ```
25
+
26
+ That's it! You get routing, auth, layout, landing page, settings, and payments.
27
+
11
28
  ## Components
12
29
 
13
30
  ### Core Components
14
- - **AppSidebar** - Application sidebar navigation
15
- - **DynamicIcon** - Dynamic icon rendering from lucide-react
16
- - **Header** - Application header component
17
- - **Layout** - Page layout wrapper
18
- - **TabBar** - Tab navigation bar
19
- - **ThemeToggle** - Dark/light mode toggle
20
- - **Sheet** - Slide-out panel component
21
- - **UpgradeSheet** - Premium upgrade UI
31
+
32
+ | Component | Import | Description |
33
+ |-----------|--------|-------------|
34
+ | Header | `@stevederico/skateboard-ui/Header` | App header with title and action button |
35
+ | Layout | `@stevederico/skateboard-ui/Layout` | Page layout with sidebar/tabbar |
36
+ | AppSidebar | `@stevederico/skateboard-ui/AppSidebar` | Desktop navigation sidebar |
37
+ | TabBar | `@stevederico/skateboard-ui/TabBar` | Mobile bottom navigation |
38
+ | DynamicIcon | `@stevederico/skateboard-ui/DynamicIcon` | Lucide icon by name |
39
+ | ThemeToggle | `@stevederico/skateboard-ui/ThemeToggle` | Dark/light mode switch |
40
+ | Sheet | `@stevederico/skateboard-ui/Sheet` | Slide-out panel |
41
+ | UpgradeSheet | `@stevederico/skateboard-ui/UpgradeSheet` | Premium upgrade UI |
42
+ | ErrorBoundary | `@stevederico/skateboard-ui/ErrorBoundary` | Error boundary wrapper |
22
43
 
23
44
  ### View Components
24
- - **LandingView** - Landing page template
25
- - **LandingViewSimple** - Simplified landing page template
26
- - **SettingsView** - Settings page template
27
- - **SignInView** - Authentication sign-in page
28
- - **SignUpView** - Authentication sign-up page
29
- - **SignOutView** - Sign out handler
30
- - **PaymentView** - Stripe payment integration
31
- - **TextView** - Text display view
32
- - **NotFound** - 404 error page
33
- - **ErrorBoundary** - React error boundary wrapper
45
+
46
+ | Component | Import | Description |
47
+ |-----------|--------|-------------|
48
+ | LandingView | `@stevederico/skateboard-ui/LandingView` | Landing page |
49
+ | SignInView | `@stevederico/skateboard-ui/SignInView` | Sign in form |
50
+ | SignUpView | `@stevederico/skateboard-ui/SignUpView` | Sign up form |
51
+ | SignOutView | `@stevederico/skateboard-ui/SignOutView` | Sign out handler |
52
+ | SettingsView | `@stevederico/skateboard-ui/SettingsView` | User settings |
53
+ | PaymentView | `@stevederico/skateboard-ui/PaymentView` | Stripe payment |
54
+ | TextView | `@stevederico/skateboard-ui/TextView` | Legal pages |
55
+ | NotFound | `@stevederico/skateboard-ui/NotFound` | 404 page |
34
56
 
35
57
  ### shadcn/ui Components
36
- Full set of shadcn/ui primitives available at `@stevederico/skateboard-ui/shadcn/ui/*`
37
58
 
38
- ## Usage
59
+ 43 components available at `@stevederico/skateboard-ui/shadcn/ui/*`:
39
60
 
40
61
  ```javascript
41
62
  import { Button } from '@stevederico/skateboard-ui/shadcn/ui/button'
42
- import { Layout } from '@stevederico/skateboard-ui/Layout'
43
- import { ThemeToggle } from '@stevederico/skateboard-ui/ThemeToggle'
63
+ import { Card } from '@stevederico/skateboard-ui/shadcn/ui/card'
64
+ import { Input } from '@stevederico/skateboard-ui/shadcn/ui/input'
65
+ import { Dialog } from '@stevederico/skateboard-ui/shadcn/ui/dialog'
66
+ ```
67
+
68
+ ## Usage Examples
69
+
70
+ ### Header
71
+
72
+ ```javascript
73
+ import Header from '@stevederico/skateboard-ui/Header';
74
+
75
+ <Header
76
+ title="Dashboard"
77
+ buttonTitle="Add"
78
+ onButtonTitleClick={() => console.log('clicked')}
79
+ />
80
+ ```
81
+
82
+ ### DynamicIcon
83
+
84
+ ```javascript
85
+ import DynamicIcon from '@stevederico/skateboard-ui/DynamicIcon';
86
+
87
+ <DynamicIcon name="home" size={24} />
88
+ <DynamicIcon name="settings" size={20} className="text-muted" />
89
+ ```
90
+
91
+ Icons from [lucide-react](https://lucide.dev/icons/).
92
+
93
+ ### UpgradeSheet
94
+
95
+ ```javascript
96
+ import { useRef } from 'react';
97
+ import UpgradeSheet from '@stevederico/skateboard-ui/UpgradeSheet';
98
+ import { showUpgradeSheet } from '@stevederico/skateboard-ui/Utilities';
99
+
100
+ function MyComponent() {
101
+ const upgradeRef = useRef();
102
+
103
+ return (
104
+ <>
105
+ <button onClick={() => showUpgradeSheet(upgradeRef)}>
106
+ Upgrade
107
+ </button>
108
+ <UpgradeSheet ref={upgradeRef} userEmail={user.email} />
109
+ </>
110
+ );
111
+ }
112
+ ```
113
+
114
+ ### Context
115
+
116
+ ```javascript
117
+ import { getState } from '@stevederico/skateboard-ui/Context';
118
+
119
+ function MyComponent() {
120
+ const { state, dispatch } = getState();
121
+
122
+ // Access user
123
+ const user = state.user;
124
+
125
+ // Update user
126
+ dispatch({ type: 'SET_USER', payload: newUser });
127
+
128
+ // Sign out
129
+ dispatch({ type: 'CLEAR_USER' });
130
+ }
44
131
  ```
45
132
 
46
133
  ## Utilities
47
134
 
135
+ ### API Requests
136
+
48
137
  ```javascript
49
- import { cn } from '@stevederico/skateboard-ui/shadcn/lib/utils'
50
- import { useMobile } from '@stevederico/skateboard-ui/shadcn/hooks/use-mobile'
51
- import { isAuthenticated, getAppKey, useAppSetup } from '@stevederico/skateboard-ui/Utilities'
138
+ import { apiRequest } from '@stevederico/skateboard-ui/Utilities';
139
+
140
+ // GET
141
+ const data = await apiRequest('/deals');
142
+
143
+ // POST
144
+ const newDeal = await apiRequest('/deals', {
145
+ method: 'POST',
146
+ body: JSON.stringify({ name: 'New Deal', amount: 5000 })
147
+ });
148
+ ```
149
+
150
+ Features:
151
+ - Auto-includes credentials
152
+ - Auto-adds CSRF token for mutations
153
+ - Auto-redirects to /signout on 401
154
+
155
+ ### Data Fetching Hook
156
+
157
+ ```javascript
158
+ import { useListData } from '@stevederico/skateboard-ui/Utilities';
159
+
160
+ function DealsList() {
161
+ const { data, loading, error, refetch } = useListData('/deals');
162
+
163
+ if (loading) return <div>Loading...</div>;
164
+ if (error) return <div>Error: {error}</div>;
165
+
166
+ return data.map(deal => <DealCard key={deal.id} {...deal} />);
167
+ }
52
168
  ```
53
169
 
54
- ## Routing
170
+ ### Usage Tracking
55
171
 
56
172
  ```javascript
57
- import ProtectedRoute from '@stevederico/skateboard-ui/ProtectedRoute'
173
+ import { getRemainingUsage, trackUsage, showUpgradeSheet } from '@stevederico/skateboard-ui/Utilities';
174
+
175
+ // Check remaining usage
176
+ const usage = await getRemainingUsage('messages');
177
+ // { remaining: 15, total: 20, isSubscriber: false }
178
+
179
+ // Track usage (decrements remaining)
180
+ const updated = await trackUsage('messages');
181
+
182
+ // Show upgrade prompt
183
+ showUpgradeSheet(upgradeSheetRef);
184
+ ```
185
+
186
+ ### Auth Utilities
187
+
188
+ ```javascript
189
+ import { isAuthenticated, getCurrentUser } from '@stevederico/skateboard-ui/Utilities';
190
+
191
+ if (isAuthenticated()) {
192
+ const user = getCurrentUser();
193
+ }
58
194
  ```
59
195
 
60
196
  ## UI Visibility Control
61
197
 
62
- ### Static Configuration (constants.json)
198
+ ### Static (constants.json)
199
+
63
200
  ```json
64
201
  {
65
202
  "hideSidebar": true,
@@ -67,36 +204,63 @@ import ProtectedRoute from '@stevederico/skateboard-ui/ProtectedRoute'
67
204
  }
68
205
  ```
69
206
 
70
- ### Programmatic Control
207
+ ### Programmatic
208
+
71
209
  ```javascript
72
- import {
73
- showSidebar,
74
- hideSidebar,
75
- showTabBar,
76
- hideTabBar,
77
- setUIVisibility
78
- } from '@stevederico/skateboard-ui/Utilities'
79
-
80
- // Individual controls
81
- hideSidebar()
82
- showSidebar()
83
- hideTabBar()
84
- showTabBar()
210
+ import { showSidebar, hideSidebar, showTabBar, hideTabBar, setUIVisibility } from '@stevederico/skateboard-ui/Utilities';
211
+
212
+ hideSidebar();
213
+ showSidebar();
214
+ hideTabBar();
215
+ showTabBar();
85
216
 
86
217
  // Batch control
87
- setUIVisibility({ sidebar: false, tabBar: false })
218
+ setUIVisibility({ sidebar: false, tabBar: false });
219
+ ```
220
+
221
+ ## Styling
222
+
223
+ Import base theme and override as needed:
224
+
225
+ ```css
226
+ /* styles.css */
227
+ @import "@stevederico/skateboard-ui/styles.css";
228
+
229
+ @source '../../node_modules/@stevederico/skateboard-ui';
230
+
231
+ @theme {
232
+ --color-app: var(--color-purple-500);
233
+ }
88
234
  ```
89
235
 
236
+ ### Theme Variables
237
+
238
+ | Variable | Description |
239
+ |----------|-------------|
240
+ | `--color-app` | Primary brand color |
241
+ | `--background` | Page background |
242
+ | `--foreground` | Text color |
243
+ | `--accent` | Secondary backgrounds |
244
+ | `--radius` | Border radius |
245
+
246
+ Dark mode is automatic via CSS custom properties.
247
+
248
+ ## Protected Routes
249
+
250
+ ```javascript
251
+ import ProtectedRoute from '@stevederico/skateboard-ui/ProtectedRoute';
252
+ ```
253
+
254
+ Used internally by createSkateboardApp. Redirects to /signin if not authenticated.
255
+
90
256
  ## Dependencies
91
257
 
92
- Built on:
93
258
  - React 19.1+
259
+ - react-router-dom 7.0+
94
260
  - Radix UI primitives
95
- - TailwindCSS
96
- - lucide-react icons
97
- - class-variance-authority
261
+ - TailwindCSS 4.0+
262
+ - lucide-react
98
263
 
99
264
  ## Repository
100
265
 
101
266
  https://github.com/stevederico/skateboard-ui
102
-
package/SignInView.jsx CHANGED
@@ -52,10 +52,10 @@ export default function LoginForm({
52
52
 
53
53
  if (response.ok) {
54
54
  const data = await response.json();
55
- // Save CSRF token from cookie to localStorage for isAuthenticated() check
55
+ // Save CSRF token to localStorage for isAuthenticated() check
56
56
  const csrfCookie = document.cookie.split('; ').find(row => row.startsWith('csrf_token='));
57
- if (csrfCookie) {
58
- const csrfToken = csrfCookie.split('=')[1];
57
+ const csrfToken = csrfCookie ? csrfCookie.split('=')[1] : data.csrfToken;
58
+ if (csrfToken) {
59
59
  const appName = constants.appName || 'skateboard';
60
60
  const csrfKey = `${appName.toLowerCase().replace(/\s+/g, '-')}_csrf`;
61
61
  localStorage.setItem(csrfKey, csrfToken);
@@ -73,7 +73,7 @@ export default function LoginForm({
73
73
  }
74
74
 
75
75
  return (
76
- <div className="min-h-screen bg-white dark:bg-black transition-colors duration-300">
76
+ <div className="fixed inset-0 bg-white dark:bg-black transition-colors duration-300 overflow-auto">
77
77
  <div className={cn("flex flex-col gap-6 p-4 max-w-lg mx-auto mt-20", className)} {...props}>
78
78
  <div className="flex flex-row items-center justify-center mb-4">
79
79
  <div className="bg-app dark:bg-app dark:border dark:border-gray-700 rounded-2xl flex aspect-square size-16 items-center justify-center">
package/SignUpView.jsx CHANGED
@@ -55,10 +55,10 @@ export default function LoginForm({
55
55
 
56
56
  if (response.ok) {
57
57
  const data = await response.json();
58
- // Save CSRF token from cookie to localStorage for isAuthenticated() check
58
+ // Save CSRF token to localStorage for isAuthenticated() check
59
59
  const csrfCookie = document.cookie.split('; ').find(row => row.startsWith('csrf_token='));
60
- if (csrfCookie) {
61
- const csrfToken = csrfCookie.split('=')[1];
60
+ const csrfToken = csrfCookie ? csrfCookie.split('=')[1] : data.csrfToken;
61
+ if (csrfToken) {
62
62
  const appName = constants.appName || 'skateboard';
63
63
  const csrfKey = `${appName.toLowerCase().replace(/\s+/g, '-')}_csrf`;
64
64
  localStorage.setItem(csrfKey, csrfToken);
@@ -75,7 +75,7 @@ export default function LoginForm({
75
75
  }
76
76
 
77
77
  return (
78
- <div className="min-h-screen bg-white dark:bg-black transition-colors duration-300">
78
+ <div className="fixed inset-0 bg-white dark:bg-black transition-colors duration-300 overflow-auto">
79
79
  <div className={cn("flex flex-col gap-6 p-4 max-w-lg mx-auto mt-20", className)} {...props}>
80
80
  <div className="flex flex-row items-center justify-center mb-4">
81
81
  <div className="bg-app dark:bg-app dark:border dark:border-gray-700 rounded-2xl flex aspect-square size-16 items-center justify-center">
package/deno.lock ADDED
@@ -0,0 +1,906 @@
1
+ {
2
+ "version": "5",
3
+ "specifiers": {
4
+ "npm:@radix-ui/react-accordion@^1.2.11": "1.2.12_react@19.2.3_react-dom@19.2.3__react@19.2.3",
5
+ "npm:@radix-ui/react-alert-dialog@^1.1.14": "1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3",
6
+ "npm:@radix-ui/react-aspect-ratio@^1.1.7": "1.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3",
7
+ "npm:@radix-ui/react-avatar@^1.1.10": "1.1.11_react@19.2.3_react-dom@19.2.3__react@19.2.3",
8
+ "npm:@radix-ui/react-checkbox@^1.3.2": "1.3.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
9
+ "npm:@radix-ui/react-collapsible@^1.1.11": "1.1.12_react@19.2.3_react-dom@19.2.3__react@19.2.3",
10
+ "npm:@radix-ui/react-context-menu@^2.2.15": "2.2.16_react@19.2.3_react-dom@19.2.3__react@19.2.3",
11
+ "npm:@radix-ui/react-dialog@^1.1.14": "1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3",
12
+ "npm:@radix-ui/react-dropdown-menu@^2.1.15": "2.1.16_react@19.2.3_react-dom@19.2.3__react@19.2.3",
13
+ "npm:@radix-ui/react-hover-card@^1.1.14": "1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3",
14
+ "npm:@radix-ui/react-label@^2.1.7": "2.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3",
15
+ "npm:@radix-ui/react-menubar@^1.1.15": "1.1.16_react@19.2.3_react-dom@19.2.3__react@19.2.3",
16
+ "npm:@radix-ui/react-navigation-menu@^1.2.13": "1.2.14_react@19.2.3_react-dom@19.2.3__react@19.2.3",
17
+ "npm:@radix-ui/react-popover@^1.1.14": "1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3",
18
+ "npm:@radix-ui/react-progress@^1.1.7": "1.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3",
19
+ "npm:@radix-ui/react-radio-group@^1.3.7": "1.3.8_react@19.2.3_react-dom@19.2.3__react@19.2.3",
20
+ "npm:@radix-ui/react-scroll-area@^1.2.9": "1.2.10_react@19.2.3_react-dom@19.2.3__react@19.2.3",
21
+ "npm:@radix-ui/react-select@^2.2.5": "2.2.6_react@19.2.3_react-dom@19.2.3__react@19.2.3",
22
+ "npm:@radix-ui/react-separator@^1.1.7": "1.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3",
23
+ "npm:@radix-ui/react-slider@^1.3.5": "1.3.6_react@19.2.3_react-dom@19.2.3__react@19.2.3",
24
+ "npm:@radix-ui/react-slot@^1.2.3": "1.2.4_react@19.2.3",
25
+ "npm:@radix-ui/react-switch@^1.2.5": "1.2.6_react@19.2.3_react-dom@19.2.3__react@19.2.3",
26
+ "npm:@radix-ui/react-tabs@^1.1.12": "1.1.13_react@19.2.3_react-dom@19.2.3__react@19.2.3",
27
+ "npm:@radix-ui/react-toggle-group@^1.1.10": "1.1.11_react@19.2.3_react-dom@19.2.3__react@19.2.3",
28
+ "npm:@radix-ui/react-toggle@^1.1.9": "1.1.10_react@19.2.3_react-dom@19.2.3__react@19.2.3",
29
+ "npm:@radix-ui/react-tooltip@^1.2.7": "1.2.8_react@19.2.3_react-dom@19.2.3__react@19.2.3",
30
+ "npm:class-variance-authority@~0.7.1": "0.7.1",
31
+ "npm:clsx@^2.1.1": "2.1.1",
32
+ "npm:cmdk@^1.1.1": "1.1.1_react@19.2.3_react-dom@19.2.3__react@19.2.3",
33
+ "npm:date-fns@^4.1.0": "4.1.0",
34
+ "npm:lucide-react@0.537": "0.537.0_react@19.2.3",
35
+ "npm:next-themes@~0.4.6": "0.4.6_react@19.2.3_react-dom@19.2.3__react@19.2.3",
36
+ "npm:react-day-picker@^9.8.1": "9.13.0_react@19.2.3",
37
+ "npm:react-resizable-panels@^3.0.4": "3.0.6_react@19.2.3_react-dom@19.2.3__react@19.2.3",
38
+ "npm:tailwind-merge@^3.3.0": "3.4.0",
39
+ "npm:tailwindcss-animate@^1.0.7": "1.0.7_tailwindcss@4.1.18",
40
+ "npm:vaul@^1.1.2": "1.1.2_react@19.2.3_react-dom@19.2.3__react@19.2.3"
41
+ },
42
+ "npm": {
43
+ "@date-fns/tz@1.4.1": {
44
+ "integrity": "sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA=="
45
+ },
46
+ "@floating-ui/core@1.7.3": {
47
+ "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
48
+ "dependencies": [
49
+ "@floating-ui/utils"
50
+ ]
51
+ },
52
+ "@floating-ui/dom@1.7.4": {
53
+ "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
54
+ "dependencies": [
55
+ "@floating-ui/core",
56
+ "@floating-ui/utils"
57
+ ]
58
+ },
59
+ "@floating-ui/react-dom@2.1.6_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
60
+ "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==",
61
+ "dependencies": [
62
+ "@floating-ui/dom",
63
+ "react",
64
+ "react-dom"
65
+ ]
66
+ },
67
+ "@floating-ui/utils@0.2.10": {
68
+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="
69
+ },
70
+ "@radix-ui/number@1.1.1": {
71
+ "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="
72
+ },
73
+ "@radix-ui/primitive@1.1.3": {
74
+ "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="
75
+ },
76
+ "@radix-ui/react-accordion@1.2.12_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
77
+ "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==",
78
+ "dependencies": [
79
+ "@radix-ui/primitive",
80
+ "@radix-ui/react-collapsible",
81
+ "@radix-ui/react-collection",
82
+ "@radix-ui/react-compose-refs",
83
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
84
+ "@radix-ui/react-direction",
85
+ "@radix-ui/react-id",
86
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
87
+ "@radix-ui/react-use-controllable-state",
88
+ "react",
89
+ "react-dom"
90
+ ]
91
+ },
92
+ "@radix-ui/react-alert-dialog@1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
93
+ "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==",
94
+ "dependencies": [
95
+ "@radix-ui/primitive",
96
+ "@radix-ui/react-compose-refs",
97
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
98
+ "@radix-ui/react-dialog",
99
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
100
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
101
+ "react",
102
+ "react-dom"
103
+ ]
104
+ },
105
+ "@radix-ui/react-arrow@1.1.7_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
106
+ "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==",
107
+ "dependencies": [
108
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
109
+ "react",
110
+ "react-dom"
111
+ ]
112
+ },
113
+ "@radix-ui/react-aspect-ratio@1.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
114
+ "integrity": "sha512-5nZrJTF7gH+e0nZS7/QxFz6tJV4VimhQb1avEgtsJxvvIp5JilL+c58HICsKzPxghdwaDt48hEfPM1au4zGy+w==",
115
+ "dependencies": [
116
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3",
117
+ "react",
118
+ "react-dom"
119
+ ]
120
+ },
121
+ "@radix-ui/react-avatar@1.1.11_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
122
+ "integrity": "sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q==",
123
+ "dependencies": [
124
+ "@radix-ui/react-context@1.1.3_react@19.2.3",
125
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3",
126
+ "@radix-ui/react-use-callback-ref",
127
+ "@radix-ui/react-use-is-hydrated",
128
+ "@radix-ui/react-use-layout-effect",
129
+ "react",
130
+ "react-dom"
131
+ ]
132
+ },
133
+ "@radix-ui/react-checkbox@1.3.3_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
134
+ "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==",
135
+ "dependencies": [
136
+ "@radix-ui/primitive",
137
+ "@radix-ui/react-compose-refs",
138
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
139
+ "@radix-ui/react-presence",
140
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
141
+ "@radix-ui/react-use-controllable-state",
142
+ "@radix-ui/react-use-previous",
143
+ "@radix-ui/react-use-size",
144
+ "react",
145
+ "react-dom"
146
+ ]
147
+ },
148
+ "@radix-ui/react-collapsible@1.1.12_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
149
+ "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==",
150
+ "dependencies": [
151
+ "@radix-ui/primitive",
152
+ "@radix-ui/react-compose-refs",
153
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
154
+ "@radix-ui/react-id",
155
+ "@radix-ui/react-presence",
156
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
157
+ "@radix-ui/react-use-controllable-state",
158
+ "@radix-ui/react-use-layout-effect",
159
+ "react",
160
+ "react-dom"
161
+ ]
162
+ },
163
+ "@radix-ui/react-collection@1.1.7_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
164
+ "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==",
165
+ "dependencies": [
166
+ "@radix-ui/react-compose-refs",
167
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
168
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
169
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
170
+ "react",
171
+ "react-dom"
172
+ ]
173
+ },
174
+ "@radix-ui/react-compose-refs@1.1.2_react@19.2.3": {
175
+ "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==",
176
+ "dependencies": [
177
+ "react"
178
+ ]
179
+ },
180
+ "@radix-ui/react-context-menu@2.2.16_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
181
+ "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==",
182
+ "dependencies": [
183
+ "@radix-ui/primitive",
184
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
185
+ "@radix-ui/react-menu",
186
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
187
+ "@radix-ui/react-use-callback-ref",
188
+ "@radix-ui/react-use-controllable-state",
189
+ "react",
190
+ "react-dom"
191
+ ]
192
+ },
193
+ "@radix-ui/react-context@1.1.2_react@19.2.3": {
194
+ "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
195
+ "dependencies": [
196
+ "react"
197
+ ]
198
+ },
199
+ "@radix-ui/react-context@1.1.3_react@19.2.3": {
200
+ "integrity": "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw==",
201
+ "dependencies": [
202
+ "react"
203
+ ]
204
+ },
205
+ "@radix-ui/react-dialog@1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
206
+ "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==",
207
+ "dependencies": [
208
+ "@radix-ui/primitive",
209
+ "@radix-ui/react-compose-refs",
210
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
211
+ "@radix-ui/react-dismissable-layer",
212
+ "@radix-ui/react-focus-guards",
213
+ "@radix-ui/react-focus-scope",
214
+ "@radix-ui/react-id",
215
+ "@radix-ui/react-portal",
216
+ "@radix-ui/react-presence",
217
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
218
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
219
+ "@radix-ui/react-use-controllable-state",
220
+ "aria-hidden",
221
+ "react",
222
+ "react-dom",
223
+ "react-remove-scroll"
224
+ ]
225
+ },
226
+ "@radix-ui/react-direction@1.1.1_react@19.2.3": {
227
+ "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==",
228
+ "dependencies": [
229
+ "react"
230
+ ]
231
+ },
232
+ "@radix-ui/react-dismissable-layer@1.1.11_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
233
+ "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==",
234
+ "dependencies": [
235
+ "@radix-ui/primitive",
236
+ "@radix-ui/react-compose-refs",
237
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
238
+ "@radix-ui/react-use-callback-ref",
239
+ "@radix-ui/react-use-escape-keydown",
240
+ "react",
241
+ "react-dom"
242
+ ]
243
+ },
244
+ "@radix-ui/react-dropdown-menu@2.1.16_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
245
+ "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==",
246
+ "dependencies": [
247
+ "@radix-ui/primitive",
248
+ "@radix-ui/react-compose-refs",
249
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
250
+ "@radix-ui/react-id",
251
+ "@radix-ui/react-menu",
252
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
253
+ "@radix-ui/react-use-controllable-state",
254
+ "react",
255
+ "react-dom"
256
+ ]
257
+ },
258
+ "@radix-ui/react-focus-guards@1.1.3_react@19.2.3": {
259
+ "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==",
260
+ "dependencies": [
261
+ "react"
262
+ ]
263
+ },
264
+ "@radix-ui/react-focus-scope@1.1.7_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
265
+ "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==",
266
+ "dependencies": [
267
+ "@radix-ui/react-compose-refs",
268
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
269
+ "@radix-ui/react-use-callback-ref",
270
+ "react",
271
+ "react-dom"
272
+ ]
273
+ },
274
+ "@radix-ui/react-hover-card@1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
275
+ "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==",
276
+ "dependencies": [
277
+ "@radix-ui/primitive",
278
+ "@radix-ui/react-compose-refs",
279
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
280
+ "@radix-ui/react-dismissable-layer",
281
+ "@radix-ui/react-popper",
282
+ "@radix-ui/react-portal",
283
+ "@radix-ui/react-presence",
284
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
285
+ "@radix-ui/react-use-controllable-state",
286
+ "react",
287
+ "react-dom"
288
+ ]
289
+ },
290
+ "@radix-ui/react-id@1.1.1_react@19.2.3": {
291
+ "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==",
292
+ "dependencies": [
293
+ "@radix-ui/react-use-layout-effect",
294
+ "react"
295
+ ]
296
+ },
297
+ "@radix-ui/react-label@2.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
298
+ "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==",
299
+ "dependencies": [
300
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3",
301
+ "react",
302
+ "react-dom"
303
+ ]
304
+ },
305
+ "@radix-ui/react-menu@2.1.16_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
306
+ "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==",
307
+ "dependencies": [
308
+ "@radix-ui/primitive",
309
+ "@radix-ui/react-collection",
310
+ "@radix-ui/react-compose-refs",
311
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
312
+ "@radix-ui/react-direction",
313
+ "@radix-ui/react-dismissable-layer",
314
+ "@radix-ui/react-focus-guards",
315
+ "@radix-ui/react-focus-scope",
316
+ "@radix-ui/react-id",
317
+ "@radix-ui/react-popper",
318
+ "@radix-ui/react-portal",
319
+ "@radix-ui/react-presence",
320
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
321
+ "@radix-ui/react-roving-focus",
322
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
323
+ "@radix-ui/react-use-callback-ref",
324
+ "aria-hidden",
325
+ "react",
326
+ "react-dom",
327
+ "react-remove-scroll"
328
+ ]
329
+ },
330
+ "@radix-ui/react-menubar@1.1.16_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
331
+ "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==",
332
+ "dependencies": [
333
+ "@radix-ui/primitive",
334
+ "@radix-ui/react-collection",
335
+ "@radix-ui/react-compose-refs",
336
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
337
+ "@radix-ui/react-direction",
338
+ "@radix-ui/react-id",
339
+ "@radix-ui/react-menu",
340
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
341
+ "@radix-ui/react-roving-focus",
342
+ "@radix-ui/react-use-controllable-state",
343
+ "react",
344
+ "react-dom"
345
+ ]
346
+ },
347
+ "@radix-ui/react-navigation-menu@1.2.14_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
348
+ "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==",
349
+ "dependencies": [
350
+ "@radix-ui/primitive",
351
+ "@radix-ui/react-collection",
352
+ "@radix-ui/react-compose-refs",
353
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
354
+ "@radix-ui/react-direction",
355
+ "@radix-ui/react-dismissable-layer",
356
+ "@radix-ui/react-id",
357
+ "@radix-ui/react-presence",
358
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
359
+ "@radix-ui/react-use-callback-ref",
360
+ "@radix-ui/react-use-controllable-state",
361
+ "@radix-ui/react-use-layout-effect",
362
+ "@radix-ui/react-use-previous",
363
+ "@radix-ui/react-visually-hidden",
364
+ "react",
365
+ "react-dom"
366
+ ]
367
+ },
368
+ "@radix-ui/react-popover@1.1.15_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
369
+ "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==",
370
+ "dependencies": [
371
+ "@radix-ui/primitive",
372
+ "@radix-ui/react-compose-refs",
373
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
374
+ "@radix-ui/react-dismissable-layer",
375
+ "@radix-ui/react-focus-guards",
376
+ "@radix-ui/react-focus-scope",
377
+ "@radix-ui/react-id",
378
+ "@radix-ui/react-popper",
379
+ "@radix-ui/react-portal",
380
+ "@radix-ui/react-presence",
381
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
382
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
383
+ "@radix-ui/react-use-controllable-state",
384
+ "aria-hidden",
385
+ "react",
386
+ "react-dom",
387
+ "react-remove-scroll"
388
+ ]
389
+ },
390
+ "@radix-ui/react-popper@1.2.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
391
+ "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==",
392
+ "dependencies": [
393
+ "@floating-ui/react-dom",
394
+ "@radix-ui/react-arrow",
395
+ "@radix-ui/react-compose-refs",
396
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
397
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
398
+ "@radix-ui/react-use-callback-ref",
399
+ "@radix-ui/react-use-layout-effect",
400
+ "@radix-ui/react-use-rect",
401
+ "@radix-ui/react-use-size",
402
+ "@radix-ui/rect",
403
+ "react",
404
+ "react-dom"
405
+ ]
406
+ },
407
+ "@radix-ui/react-portal@1.1.9_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
408
+ "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==",
409
+ "dependencies": [
410
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
411
+ "@radix-ui/react-use-layout-effect",
412
+ "react",
413
+ "react-dom"
414
+ ]
415
+ },
416
+ "@radix-ui/react-presence@1.1.5_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
417
+ "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==",
418
+ "dependencies": [
419
+ "@radix-ui/react-compose-refs",
420
+ "@radix-ui/react-use-layout-effect",
421
+ "react",
422
+ "react-dom"
423
+ ]
424
+ },
425
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
426
+ "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
427
+ "dependencies": [
428
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
429
+ "react",
430
+ "react-dom"
431
+ ]
432
+ },
433
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
434
+ "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==",
435
+ "dependencies": [
436
+ "@radix-ui/react-slot@1.2.4_react@19.2.3",
437
+ "react",
438
+ "react-dom"
439
+ ]
440
+ },
441
+ "@radix-ui/react-progress@1.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
442
+ "integrity": "sha512-+gISHcSPUJ7ktBy9RnTqbdKW78bcGke3t6taawyZ71pio1JewwGSJizycs7rLhGTvMJYCQB1DBK4KQsxs7U8dA==",
443
+ "dependencies": [
444
+ "@radix-ui/react-context@1.1.3_react@19.2.3",
445
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3",
446
+ "react",
447
+ "react-dom"
448
+ ]
449
+ },
450
+ "@radix-ui/react-radio-group@1.3.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
451
+ "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==",
452
+ "dependencies": [
453
+ "@radix-ui/primitive",
454
+ "@radix-ui/react-compose-refs",
455
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
456
+ "@radix-ui/react-direction",
457
+ "@radix-ui/react-presence",
458
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
459
+ "@radix-ui/react-roving-focus",
460
+ "@radix-ui/react-use-controllable-state",
461
+ "@radix-ui/react-use-previous",
462
+ "@radix-ui/react-use-size",
463
+ "react",
464
+ "react-dom"
465
+ ]
466
+ },
467
+ "@radix-ui/react-roving-focus@1.1.11_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
468
+ "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==",
469
+ "dependencies": [
470
+ "@radix-ui/primitive",
471
+ "@radix-ui/react-collection",
472
+ "@radix-ui/react-compose-refs",
473
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
474
+ "@radix-ui/react-direction",
475
+ "@radix-ui/react-id",
476
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
477
+ "@radix-ui/react-use-callback-ref",
478
+ "@radix-ui/react-use-controllable-state",
479
+ "react",
480
+ "react-dom"
481
+ ]
482
+ },
483
+ "@radix-ui/react-scroll-area@1.2.10_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
484
+ "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==",
485
+ "dependencies": [
486
+ "@radix-ui/number",
487
+ "@radix-ui/primitive",
488
+ "@radix-ui/react-compose-refs",
489
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
490
+ "@radix-ui/react-direction",
491
+ "@radix-ui/react-presence",
492
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
493
+ "@radix-ui/react-use-callback-ref",
494
+ "@radix-ui/react-use-layout-effect",
495
+ "react",
496
+ "react-dom"
497
+ ]
498
+ },
499
+ "@radix-ui/react-select@2.2.6_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
500
+ "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==",
501
+ "dependencies": [
502
+ "@radix-ui/number",
503
+ "@radix-ui/primitive",
504
+ "@radix-ui/react-collection",
505
+ "@radix-ui/react-compose-refs",
506
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
507
+ "@radix-ui/react-direction",
508
+ "@radix-ui/react-dismissable-layer",
509
+ "@radix-ui/react-focus-guards",
510
+ "@radix-ui/react-focus-scope",
511
+ "@radix-ui/react-id",
512
+ "@radix-ui/react-popper",
513
+ "@radix-ui/react-portal",
514
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
515
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
516
+ "@radix-ui/react-use-callback-ref",
517
+ "@radix-ui/react-use-controllable-state",
518
+ "@radix-ui/react-use-layout-effect",
519
+ "@radix-ui/react-use-previous",
520
+ "@radix-ui/react-visually-hidden",
521
+ "aria-hidden",
522
+ "react",
523
+ "react-dom",
524
+ "react-remove-scroll"
525
+ ]
526
+ },
527
+ "@radix-ui/react-separator@1.1.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
528
+ "integrity": "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==",
529
+ "dependencies": [
530
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3",
531
+ "react",
532
+ "react-dom"
533
+ ]
534
+ },
535
+ "@radix-ui/react-slider@1.3.6_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
536
+ "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==",
537
+ "dependencies": [
538
+ "@radix-ui/number",
539
+ "@radix-ui/primitive",
540
+ "@radix-ui/react-collection",
541
+ "@radix-ui/react-compose-refs",
542
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
543
+ "@radix-ui/react-direction",
544
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
545
+ "@radix-ui/react-use-controllable-state",
546
+ "@radix-ui/react-use-layout-effect",
547
+ "@radix-ui/react-use-previous",
548
+ "@radix-ui/react-use-size",
549
+ "react",
550
+ "react-dom"
551
+ ]
552
+ },
553
+ "@radix-ui/react-slot@1.2.3_react@19.2.3": {
554
+ "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
555
+ "dependencies": [
556
+ "@radix-ui/react-compose-refs",
557
+ "react"
558
+ ]
559
+ },
560
+ "@radix-ui/react-slot@1.2.4_react@19.2.3": {
561
+ "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==",
562
+ "dependencies": [
563
+ "@radix-ui/react-compose-refs",
564
+ "react"
565
+ ]
566
+ },
567
+ "@radix-ui/react-switch@1.2.6_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
568
+ "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==",
569
+ "dependencies": [
570
+ "@radix-ui/primitive",
571
+ "@radix-ui/react-compose-refs",
572
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
573
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
574
+ "@radix-ui/react-use-controllable-state",
575
+ "@radix-ui/react-use-previous",
576
+ "@radix-ui/react-use-size",
577
+ "react",
578
+ "react-dom"
579
+ ]
580
+ },
581
+ "@radix-ui/react-tabs@1.1.13_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
582
+ "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==",
583
+ "dependencies": [
584
+ "@radix-ui/primitive",
585
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
586
+ "@radix-ui/react-direction",
587
+ "@radix-ui/react-id",
588
+ "@radix-ui/react-presence",
589
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
590
+ "@radix-ui/react-roving-focus",
591
+ "@radix-ui/react-use-controllable-state",
592
+ "react",
593
+ "react-dom"
594
+ ]
595
+ },
596
+ "@radix-ui/react-toggle-group@1.1.11_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
597
+ "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==",
598
+ "dependencies": [
599
+ "@radix-ui/primitive",
600
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
601
+ "@radix-ui/react-direction",
602
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
603
+ "@radix-ui/react-roving-focus",
604
+ "@radix-ui/react-toggle",
605
+ "@radix-ui/react-use-controllable-state",
606
+ "react",
607
+ "react-dom"
608
+ ]
609
+ },
610
+ "@radix-ui/react-toggle@1.1.10_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
611
+ "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==",
612
+ "dependencies": [
613
+ "@radix-ui/primitive",
614
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
615
+ "@radix-ui/react-use-controllable-state",
616
+ "react",
617
+ "react-dom"
618
+ ]
619
+ },
620
+ "@radix-ui/react-tooltip@1.2.8_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
621
+ "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==",
622
+ "dependencies": [
623
+ "@radix-ui/primitive",
624
+ "@radix-ui/react-compose-refs",
625
+ "@radix-ui/react-context@1.1.2_react@19.2.3",
626
+ "@radix-ui/react-dismissable-layer",
627
+ "@radix-ui/react-id",
628
+ "@radix-ui/react-popper",
629
+ "@radix-ui/react-portal",
630
+ "@radix-ui/react-presence",
631
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
632
+ "@radix-ui/react-slot@1.2.3_react@19.2.3",
633
+ "@radix-ui/react-use-controllable-state",
634
+ "@radix-ui/react-visually-hidden",
635
+ "react",
636
+ "react-dom"
637
+ ]
638
+ },
639
+ "@radix-ui/react-use-callback-ref@1.1.1_react@19.2.3": {
640
+ "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==",
641
+ "dependencies": [
642
+ "react"
643
+ ]
644
+ },
645
+ "@radix-ui/react-use-controllable-state@1.2.2_react@19.2.3": {
646
+ "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==",
647
+ "dependencies": [
648
+ "@radix-ui/react-use-effect-event",
649
+ "@radix-ui/react-use-layout-effect",
650
+ "react"
651
+ ]
652
+ },
653
+ "@radix-ui/react-use-effect-event@0.0.2_react@19.2.3": {
654
+ "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==",
655
+ "dependencies": [
656
+ "@radix-ui/react-use-layout-effect",
657
+ "react"
658
+ ]
659
+ },
660
+ "@radix-ui/react-use-escape-keydown@1.1.1_react@19.2.3": {
661
+ "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==",
662
+ "dependencies": [
663
+ "@radix-ui/react-use-callback-ref",
664
+ "react"
665
+ ]
666
+ },
667
+ "@radix-ui/react-use-is-hydrated@0.1.0_react@19.2.3": {
668
+ "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==",
669
+ "dependencies": [
670
+ "react",
671
+ "use-sync-external-store"
672
+ ]
673
+ },
674
+ "@radix-ui/react-use-layout-effect@1.1.1_react@19.2.3": {
675
+ "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==",
676
+ "dependencies": [
677
+ "react"
678
+ ]
679
+ },
680
+ "@radix-ui/react-use-previous@1.1.1_react@19.2.3": {
681
+ "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==",
682
+ "dependencies": [
683
+ "react"
684
+ ]
685
+ },
686
+ "@radix-ui/react-use-rect@1.1.1_react@19.2.3": {
687
+ "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==",
688
+ "dependencies": [
689
+ "@radix-ui/rect",
690
+ "react"
691
+ ]
692
+ },
693
+ "@radix-ui/react-use-size@1.1.1_react@19.2.3": {
694
+ "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==",
695
+ "dependencies": [
696
+ "@radix-ui/react-use-layout-effect",
697
+ "react"
698
+ ]
699
+ },
700
+ "@radix-ui/react-visually-hidden@1.2.3_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
701
+ "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
702
+ "dependencies": [
703
+ "@radix-ui/react-primitive@2.1.3_react@19.2.3_react-dom@19.2.3__react@19.2.3",
704
+ "react",
705
+ "react-dom"
706
+ ]
707
+ },
708
+ "@radix-ui/rect@1.1.1": {
709
+ "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="
710
+ },
711
+ "aria-hidden@1.2.6": {
712
+ "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==",
713
+ "dependencies": [
714
+ "tslib"
715
+ ]
716
+ },
717
+ "class-variance-authority@0.7.1": {
718
+ "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==",
719
+ "dependencies": [
720
+ "clsx"
721
+ ]
722
+ },
723
+ "clsx@2.1.1": {
724
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="
725
+ },
726
+ "cmdk@1.1.1_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
727
+ "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==",
728
+ "dependencies": [
729
+ "@radix-ui/react-compose-refs",
730
+ "@radix-ui/react-dialog",
731
+ "@radix-ui/react-id",
732
+ "@radix-ui/react-primitive@2.1.4_react@19.2.3_react-dom@19.2.3__react@19.2.3",
733
+ "react",
734
+ "react-dom"
735
+ ]
736
+ },
737
+ "date-fns-jalali@4.1.0-0": {
738
+ "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg=="
739
+ },
740
+ "date-fns@4.1.0": {
741
+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg=="
742
+ },
743
+ "detect-node-es@1.1.0": {
744
+ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="
745
+ },
746
+ "get-nonce@1.0.1": {
747
+ "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="
748
+ },
749
+ "lucide-react@0.537.0_react@19.2.3": {
750
+ "integrity": "sha512-VxWsdxBGeFnlC+HwMg/l08HptN4YRU9o/lRog156jOmRxI1ERKqN+rJiNY/mPcKAdWdM0UbyO8ft1o0jq69SSQ==",
751
+ "dependencies": [
752
+ "react"
753
+ ]
754
+ },
755
+ "next-themes@0.4.6_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
756
+ "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==",
757
+ "dependencies": [
758
+ "react",
759
+ "react-dom"
760
+ ]
761
+ },
762
+ "react-day-picker@9.13.0_react@19.2.3": {
763
+ "integrity": "sha512-euzj5Hlq+lOHqI53NiuNhCP8HWgsPf/bBAVijR50hNaY1XwjKjShAnIe8jm8RD2W9IJUvihDIZ+KrmqfFzNhFQ==",
764
+ "dependencies": [
765
+ "@date-fns/tz",
766
+ "date-fns",
767
+ "date-fns-jalali",
768
+ "react"
769
+ ]
770
+ },
771
+ "react-dom@19.2.3_react@19.2.3": {
772
+ "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
773
+ "dependencies": [
774
+ "react",
775
+ "scheduler"
776
+ ]
777
+ },
778
+ "react-remove-scroll-bar@2.3.8_react@19.2.3": {
779
+ "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==",
780
+ "dependencies": [
781
+ "react",
782
+ "react-style-singleton",
783
+ "tslib"
784
+ ]
785
+ },
786
+ "react-remove-scroll@2.7.2_react@19.2.3": {
787
+ "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==",
788
+ "dependencies": [
789
+ "react",
790
+ "react-remove-scroll-bar",
791
+ "react-style-singleton",
792
+ "tslib",
793
+ "use-callback-ref",
794
+ "use-sidecar"
795
+ ]
796
+ },
797
+ "react-resizable-panels@3.0.6_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
798
+ "integrity": "sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==",
799
+ "dependencies": [
800
+ "react",
801
+ "react-dom"
802
+ ]
803
+ },
804
+ "react-style-singleton@2.2.3_react@19.2.3": {
805
+ "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==",
806
+ "dependencies": [
807
+ "get-nonce",
808
+ "react",
809
+ "tslib"
810
+ ]
811
+ },
812
+ "react@19.2.3": {
813
+ "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="
814
+ },
815
+ "scheduler@0.27.0": {
816
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="
817
+ },
818
+ "tailwind-merge@3.4.0": {
819
+ "integrity": "sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g=="
820
+ },
821
+ "tailwindcss-animate@1.0.7_tailwindcss@4.1.18": {
822
+ "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
823
+ "dependencies": [
824
+ "tailwindcss"
825
+ ]
826
+ },
827
+ "tailwindcss@4.1.18": {
828
+ "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw=="
829
+ },
830
+ "tslib@2.8.1": {
831
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
832
+ },
833
+ "use-callback-ref@1.3.3_react@19.2.3": {
834
+ "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==",
835
+ "dependencies": [
836
+ "react",
837
+ "tslib"
838
+ ]
839
+ },
840
+ "use-sidecar@1.1.3_react@19.2.3": {
841
+ "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==",
842
+ "dependencies": [
843
+ "detect-node-es",
844
+ "react",
845
+ "tslib"
846
+ ]
847
+ },
848
+ "use-sync-external-store@1.6.0_react@19.2.3": {
849
+ "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
850
+ "dependencies": [
851
+ "react"
852
+ ]
853
+ },
854
+ "vaul@1.1.2_react@19.2.3_react-dom@19.2.3__react@19.2.3": {
855
+ "integrity": "sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==",
856
+ "dependencies": [
857
+ "@radix-ui/react-dialog",
858
+ "react",
859
+ "react-dom"
860
+ ]
861
+ }
862
+ },
863
+ "workspace": {
864
+ "packageJson": {
865
+ "dependencies": [
866
+ "npm:@radix-ui/react-accordion@^1.2.11",
867
+ "npm:@radix-ui/react-alert-dialog@^1.1.14",
868
+ "npm:@radix-ui/react-aspect-ratio@^1.1.7",
869
+ "npm:@radix-ui/react-avatar@^1.1.10",
870
+ "npm:@radix-ui/react-checkbox@^1.3.2",
871
+ "npm:@radix-ui/react-collapsible@^1.1.11",
872
+ "npm:@radix-ui/react-context-menu@^2.2.15",
873
+ "npm:@radix-ui/react-dialog@^1.1.14",
874
+ "npm:@radix-ui/react-dropdown-menu@^2.1.15",
875
+ "npm:@radix-ui/react-hover-card@^1.1.14",
876
+ "npm:@radix-ui/react-label@^2.1.7",
877
+ "npm:@radix-ui/react-menubar@^1.1.15",
878
+ "npm:@radix-ui/react-navigation-menu@^1.2.13",
879
+ "npm:@radix-ui/react-popover@^1.1.14",
880
+ "npm:@radix-ui/react-progress@^1.1.7",
881
+ "npm:@radix-ui/react-radio-group@^1.3.7",
882
+ "npm:@radix-ui/react-scroll-area@^1.2.9",
883
+ "npm:@radix-ui/react-select@^2.2.5",
884
+ "npm:@radix-ui/react-separator@^1.1.7",
885
+ "npm:@radix-ui/react-slider@^1.3.5",
886
+ "npm:@radix-ui/react-slot@^1.2.3",
887
+ "npm:@radix-ui/react-switch@^1.2.5",
888
+ "npm:@radix-ui/react-tabs@^1.1.12",
889
+ "npm:@radix-ui/react-toggle-group@^1.1.10",
890
+ "npm:@radix-ui/react-toggle@^1.1.9",
891
+ "npm:@radix-ui/react-tooltip@^1.2.7",
892
+ "npm:class-variance-authority@~0.7.1",
893
+ "npm:clsx@^2.1.1",
894
+ "npm:cmdk@^1.1.1",
895
+ "npm:date-fns@^4.1.0",
896
+ "npm:lucide-react@0.537",
897
+ "npm:next-themes@~0.4.6",
898
+ "npm:react-day-picker@^9.8.1",
899
+ "npm:react-resizable-panels@^3.0.4",
900
+ "npm:tailwind-merge@^3.3.0",
901
+ "npm:tailwindcss-animate@^1.0.7",
902
+ "npm:vaul@^1.1.2"
903
+ ]
904
+ }
905
+ }
906
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stevederico/skateboard-ui",
3
3
  "private": false,
4
- "version": "1.2.15",
4
+ "version": "1.2.17",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  "./AppSidebar": {