codacus commited on
Commit
3aa90bf
·
1 Parent(s): 9f00227

refactor(SettingWindow):Updated Settings Tab Styling

Browse files
app/{styles/components/Settings.scss → components/settings/Settings.module.scss} RENAMED
@@ -45,6 +45,9 @@
45
  border-radius: 0.5rem;
46
  padding: 1rem;
47
  margin-bottom: 1rem;
 
 
 
48
 
49
  button {
50
  background-color: var(--bolt-elements-button-danger-background);
 
45
  border-radius: 0.5rem;
46
  padding: 1rem;
47
  margin-bottom: 1rem;
48
+ border-style: solid;
49
+ border-color: var(--bolt-elements-button-danger-backgroundHover) ;
50
+ border-width: thin;
51
 
52
  button {
53
  background-color: var(--bolt-elements-button-danger-background);
app/components/{ui/Settings.tsx → settings/SettingsWindow.tsx} RENAMED
@@ -2,17 +2,16 @@ import * as RadixDialog from '@radix-ui/react-dialog';
2
  import { motion } from 'framer-motion';
3
  import { useState } from 'react';
4
  import { classNames } from '~/utils/classNames';
5
- import { DialogTitle, dialogVariants, dialogBackdropVariants } from './Dialog';
6
- import { IconButton } from './IconButton';
7
  import { providersList } from '~/lib/stores/settings';
8
  import { db, getAll, deleteById } from '~/lib/persistence';
9
  import { toast } from 'react-toastify';
10
  import { useNavigate } from '@remix-run/react';
11
  import commit from '~/commit.json';
12
  import Cookies from 'js-cookie';
13
- import { SettingsSlider } from './SettingsSlider';
14
- import '~/styles/components/SettingsSlider.scss';
15
- import '~/styles/components/Settings.scss';
16
 
17
  interface SettingsProps {
18
  open: boolean;
@@ -24,7 +23,7 @@ type TabType = 'chat-history' | 'providers' | 'features' | 'debug';
24
  // Providers that support base URL configuration
25
  const URL_CONFIGURABLE_PROVIDERS = ['Ollama', 'LMStudio', 'OpenAILike'];
26
 
27
- export const Settings = ({ open, onClose }: SettingsProps) => {
28
  const navigate = useNavigate();
29
  const [activeTab, setActiveTab] = useState<TabType>('chat-history');
30
  const [isDebugEnabled, setIsDebugEnabled] = useState(false);
@@ -93,10 +92,10 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
93
  return providersList;
94
  });
95
 
96
- const handleToggleProvider = (providerName: string) => {
97
  setProviders((prevProviders) => {
98
  const newProviders = prevProviders.map((provider) =>
99
- provider.name === providerName ? { ...provider, isEnabled: !provider.isEnabled } : provider,
100
  );
101
 
102
  // Save to cookies
@@ -196,7 +195,7 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
196
  return (
197
  <RadixDialog.Root open={open}>
198
  <RadixDialog.Portal>
199
- <RadixDialog.Overlay asChild>
200
  <motion.div
201
  className="bg-black/50 fixed inset-0 z-max"
202
  initial="closed"
@@ -214,14 +213,20 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
214
  variants={dialogVariants}
215
  >
216
  <div className="flex h-full">
217
- <div className="w-48 border-r border-bolt-elements-borderColor bg-white dark:bg-gray-900 p-4 flex flex-col justify-between settings-tabs">
 
 
 
 
 
 
 
 
218
  {tabs.map((tab) => (
219
  <button
220
  key={tab.id}
221
  onClick={() => setActiveTab(tab.id)}
222
- className={classNames(
223
- activeTab === tab.id ? 'active' : ''
224
- )}
225
  >
226
  <div className={tab.icon} />
227
  {tab.label}
@@ -232,7 +237,7 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
232
  href="https://github.com/coleam00/bolt.new-any-llm"
233
  target="_blank"
234
  rel="noopener noreferrer"
235
- className="settings-button flex items-center gap-2"
236
  >
237
  <div className="i-ph:github-logo" />
238
  GitHub
@@ -241,7 +246,7 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
241
  href="https://coleam00.github.io/bolt.new-any-llm"
242
  target="_blank"
243
  rel="noopener noreferrer"
244
- className="settings-button flex items-center gap-2"
245
  >
246
  <div className="i-ph:book" />
247
  Docs
@@ -249,28 +254,41 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
249
  </div>
250
  </div>
251
 
252
- <div className="flex-1 flex flex-col p-8 bg-gray-50 dark:bg-gray-800">
253
- <DialogTitle className="flex-shrink-0 text-lg font-semibold text-bolt-elements-textPrimary">Settings</DialogTitle>
254
  <div className="flex-1 overflow-y-auto">
255
  {activeTab === 'chat-history' && (
256
  <div className="p-4">
257
  <h3 className="text-lg font-medium text-bolt-elements-textPrimary mb-4">Chat History</h3>
258
  <button
259
  onClick={handleExportAllChats}
260
- className="bg-blue-500 text-white rounded-lg px-4 py-2 hover:bg-blue-600 mb-4 transition-colors duration-200"
 
 
 
 
 
261
  >
262
  Export All Chats
263
  </button>
264
 
265
- <div className="text-bolt-elements-textPrimary rounded-lg p-4 mb-4 settings-danger-area">
 
 
 
 
 
266
  <h4 className="font-semibold">Danger Area</h4>
267
  <p className="mb-2">This action cannot be undone!</p>
268
  <button
269
  onClick={handleDeleteAllChats}
270
  disabled={isDeleting}
271
  className={classNames(
272
- 'bg-red-700 text-white rounded-lg px-4 py-2 transition-colors duration-200',
273
- isDeleting ? 'opacity-50 cursor-not-allowed' : 'hover:bg-red-800',
 
 
 
 
274
  )}
275
  >
276
  {isDeleting ? 'Deleting...' : 'Delete All Chats'}
@@ -280,39 +298,27 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
280
  )}
281
  {activeTab === 'providers' && (
282
  <div className="p-4">
283
- <div className="flex items-center justify-between mb-4">
284
- <h3 className="text-lg font-medium text-bolt-elements-textPrimary">Providers</h3>
285
  <input
286
  type="text"
287
  placeholder="Search providers..."
288
  value={searchTerm}
289
  onChange={(e) => setSearchTerm(e.target.value)}
290
- className="mb-4 p-2 rounded border border-gray-300"
291
  />
292
  </div>
293
  {filteredProviders.map((provider) => (
294
  <div
295
  key={provider.name}
296
- className="flex flex-col mb-6 provider-item hover:bg-bolt-elements-bg-depth-3 p-4 rounded-lg"
297
  >
298
  <div className="flex items-center justify-between mb-2">
299
  <span className="text-bolt-elements-textPrimary">{provider.name}</span>
300
- <label className="relative inline-flex items-center cursor-pointer">
301
- <input
302
- type="checkbox"
303
- className="sr-only"
304
- checked={provider.isEnabled}
305
- onChange={() => handleToggleProvider(provider.name)}
306
- />
307
- <div className={classNames(
308
- 'settings-toggle__track',
309
- provider.isEnabled ? 'settings-toggle__track--enabled' : 'settings-toggle__track--disabled'
310
- )}></div>
311
- <div className={classNames(
312
- 'settings-toggle__thumb',
313
- provider.isEnabled ? 'settings-toggle__thumb--enabled' : ''
314
- )}></div>
315
- </label>
316
  </div>
317
  {/* Base URL input for configurable providers */}
318
  {URL_CONFIGURABLE_PROVIDERS.includes(provider.name) && provider.isEnabled && (
@@ -323,7 +329,7 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
323
  value={baseUrls[provider.name]}
324
  onChange={(e) => handleBaseUrlChange(provider.name, e.target.value)}
325
  placeholder={`Enter ${provider.name} base URL`}
326
- className="w-full p-2 rounded border border-bolt-elements-borderColor bg-bolt-elements-bg-depth-2 text-bolt-elements-textPrimary text-sm"
327
  />
328
  </div>
329
  )}
@@ -343,14 +349,18 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
343
  checked={isDebugEnabled}
344
  onChange={() => setIsDebugEnabled(!isDebugEnabled)}
345
  />
346
- <div className={classNames(
347
- 'settings-toggle__track',
348
- isDebugEnabled ? 'settings-toggle__track--enabled' : 'settings-toggle__track--disabled'
349
- )}></div>
350
- <div className={classNames(
351
- 'settings-toggle__thumb',
352
- isDebugEnabled ? 'settings-toggle__thumb--enabled' : ''
353
- )}></div>
 
 
 
 
354
  </label>
355
  </div>
356
  </div>
@@ -367,14 +377,18 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
367
  checked={isJustSayEnabled}
368
  onChange={() => setIsJustSayEnabled(!isJustSayEnabled)}
369
  />
370
- <div className={classNames(
371
- 'settings-toggle__track',
372
- isJustSayEnabled ? 'settings-toggle__track--enabled' : 'settings-toggle__track--disabled'
373
- )}></div>
374
- <div className={classNames(
375
- 'settings-toggle__thumb',
376
- isJustSayEnabled ? 'settings-toggle__thumb--enabled' : ''
377
- )}></div>
 
 
 
 
378
  </label>
379
  </div>
380
  </div>
@@ -408,7 +422,9 @@ export const Settings = ({ open, onClose }: SettingsProps) => {
408
  <ul>
409
  <li className="text-bolt-elements-textSecondary">Ollama: {process.env.REACT_APP_OLLAMA_URL}</li>
410
  <li className="text-bolt-elements-textSecondary">OpenAI: {process.env.REACT_APP_OPENAI_URL}</li>
411
- <li className="text-bolt-elements-textSecondary">LM Studio: {process.env.REACT_APP_LM_STUDIO_URL}</li>
 
 
412
  </ul>
413
 
414
  <h4 className="text-md font-medium text-bolt-elements-textPrimary mt-4">Version Information</h4>
 
2
  import { motion } from 'framer-motion';
3
  import { useState } from 'react';
4
  import { classNames } from '~/utils/classNames';
5
+ import { DialogTitle, dialogVariants, dialogBackdropVariants } from '~/components/ui/Dialog';
6
+ import { IconButton } from '~/components/ui/IconButton';
7
  import { providersList } from '~/lib/stores/settings';
8
  import { db, getAll, deleteById } from '~/lib/persistence';
9
  import { toast } from 'react-toastify';
10
  import { useNavigate } from '@remix-run/react';
11
  import commit from '~/commit.json';
12
  import Cookies from 'js-cookie';
13
+ import styles from './Settings.module.scss';
14
+ import { Switch } from '~/components/ui/Switch';
 
15
 
16
  interface SettingsProps {
17
  open: boolean;
 
23
  // Providers that support base URL configuration
24
  const URL_CONFIGURABLE_PROVIDERS = ['Ollama', 'LMStudio', 'OpenAILike'];
25
 
26
+ export const SettingsWindow = ({ open, onClose }: SettingsProps) => {
27
  const navigate = useNavigate();
28
  const [activeTab, setActiveTab] = useState<TabType>('chat-history');
29
  const [isDebugEnabled, setIsDebugEnabled] = useState(false);
 
92
  return providersList;
93
  });
94
 
95
+ const handleToggleProvider = (providerName: string, enabled: boolean) => {
96
  setProviders((prevProviders) => {
97
  const newProviders = prevProviders.map((provider) =>
98
+ provider.name === providerName ? { ...provider, isEnabled: enabled } : provider,
99
  );
100
 
101
  // Save to cookies
 
195
  return (
196
  <RadixDialog.Root open={open}>
197
  <RadixDialog.Portal>
198
+ <RadixDialog.Overlay asChild onClick={onClose}>
199
  <motion.div
200
  className="bg-black/50 fixed inset-0 z-max"
201
  initial="closed"
 
213
  variants={dialogVariants}
214
  >
215
  <div className="flex h-full">
216
+ <div
217
+ className={classNames(
218
+ 'w-48 border-r border-bolt-elements-borderColor bg-bolt-elements-background-depth-1 p-4 flex flex-col justify-between',
219
+ styles['settings-tabs'],
220
+ )}
221
+ >
222
+ <DialogTitle className="flex-shrink-0 text-lg font-semibold text-bolt-elements-textPrimary mb-2">
223
+ Settings
224
+ </DialogTitle>
225
  {tabs.map((tab) => (
226
  <button
227
  key={tab.id}
228
  onClick={() => setActiveTab(tab.id)}
229
+ className={classNames(activeTab === tab.id ? styles.active : '')}
 
 
230
  >
231
  <div className={tab.icon} />
232
  {tab.label}
 
237
  href="https://github.com/coleam00/bolt.new-any-llm"
238
  target="_blank"
239
  rel="noopener noreferrer"
240
+ className={classNames(styles['settings-button'], 'flex items-center gap-2')}
241
  >
242
  <div className="i-ph:github-logo" />
243
  GitHub
 
246
  href="https://coleam00.github.io/bolt.new-any-llm"
247
  target="_blank"
248
  rel="noopener noreferrer"
249
+ className={classNames(styles['settings-button'], 'flex items-center gap-2')}
250
  >
251
  <div className="i-ph:book" />
252
  Docs
 
254
  </div>
255
  </div>
256
 
257
+ <div className="flex-1 flex flex-col p-8 bg-bolt-elements-background-depth-2">
 
258
  <div className="flex-1 overflow-y-auto">
259
  {activeTab === 'chat-history' && (
260
  <div className="p-4">
261
  <h3 className="text-lg font-medium text-bolt-elements-textPrimary mb-4">Chat History</h3>
262
  <button
263
  onClick={handleExportAllChats}
264
+ className={classNames(
265
+ 'bg-bolt-elements-button-primary-background',
266
+ 'rounded-lg px-4 py-2 mb-4 transition-colors duration-200',
267
+ 'hover:bg-bolt-elements-button-primary-backgroundHover',
268
+ 'text-bolt-elements-button-primary-text',
269
+ )}
270
  >
271
  Export All Chats
272
  </button>
273
 
274
+ <div
275
+ className={classNames(
276
+ 'text-bolt-elements-textPrimary rounded-lg py-4 mb-4',
277
+ styles['settings-danger-area'],
278
+ )}
279
+ >
280
  <h4 className="font-semibold">Danger Area</h4>
281
  <p className="mb-2">This action cannot be undone!</p>
282
  <button
283
  onClick={handleDeleteAllChats}
284
  disabled={isDeleting}
285
  className={classNames(
286
+ 'bg-bolt-elements-button-danger-background',
287
+ 'rounded-lg px-4 py-2 transition-colors duration-200',
288
+ isDeleting
289
+ ? 'opacity-50 cursor-not-allowed'
290
+ : 'hover:bg-bolt-elements-button-danger-backgroundHover',
291
+ 'text-bolt-elements-button-danger-text',
292
  )}
293
  >
294
  {isDeleting ? 'Deleting...' : 'Delete All Chats'}
 
298
  )}
299
  {activeTab === 'providers' && (
300
  <div className="p-4">
301
+ <div className="flex mb-4">
 
302
  <input
303
  type="text"
304
  placeholder="Search providers..."
305
  value={searchTerm}
306
  onChange={(e) => setSearchTerm(e.target.value)}
307
+ className="w-full bg-white dark:bg-bolt-elements-background-depth-4 relative px-2 py-1.5 rounded-md focus:outline-none placeholder-bolt-elements-textTertiary text-bolt-elements-textPrimary dark:text-bolt-elements-textPrimary border border-bolt-elements-borderColor"
308
  />
309
  </div>
310
  {filteredProviders.map((provider) => (
311
  <div
312
  key={provider.name}
313
+ className="flex flex-col mb-2 provider-item hover:bg-bolt-elements-bg-depth-3 p-4 rounded-lg border border-bolt-elements-borderColor "
314
  >
315
  <div className="flex items-center justify-between mb-2">
316
  <span className="text-bolt-elements-textPrimary">{provider.name}</span>
317
+ <Switch
318
+ className="ml-auto"
319
+ checked={provider.isEnabled}
320
+ onCheckedChange={(enabled) => handleToggleProvider(provider.name, enabled)}
321
+ />
 
 
 
 
 
 
 
 
 
 
 
322
  </div>
323
  {/* Base URL input for configurable providers */}
324
  {URL_CONFIGURABLE_PROVIDERS.includes(provider.name) && provider.isEnabled && (
 
329
  value={baseUrls[provider.name]}
330
  onChange={(e) => handleBaseUrlChange(provider.name, e.target.value)}
331
  placeholder={`Enter ${provider.name} base URL`}
332
+ className="w-full bg-white dark:bg-bolt-elements-background-depth-4 relative px-2 py-1.5 rounded-md focus:outline-none placeholder-bolt-elements-textTertiary text-bolt-elements-textPrimary dark:text-bolt-elements-textPrimary border border-bolt-elements-borderColor"
333
  />
334
  </div>
335
  )}
 
349
  checked={isDebugEnabled}
350
  onChange={() => setIsDebugEnabled(!isDebugEnabled)}
351
  />
352
+ <div
353
+ className={classNames(
354
+ 'settings-toggle__track',
355
+ isDebugEnabled ? 'settings-toggle__track--enabled' : 'settings-toggle__track--disabled',
356
+ )}
357
+ ></div>
358
+ <div
359
+ className={classNames(
360
+ 'settings-toggle__thumb',
361
+ isDebugEnabled ? 'settings-toggle__thumb--enabled' : '',
362
+ )}
363
+ ></div>
364
  </label>
365
  </div>
366
  </div>
 
377
  checked={isJustSayEnabled}
378
  onChange={() => setIsJustSayEnabled(!isJustSayEnabled)}
379
  />
380
+ <div
381
+ className={classNames(
382
+ 'settings-toggle__track',
383
+ isJustSayEnabled ? 'settings-toggle__track--enabled' : 'settings-toggle__track--disabled',
384
+ )}
385
+ ></div>
386
+ <div
387
+ className={classNames(
388
+ 'settings-toggle__thumb',
389
+ isJustSayEnabled ? 'settings-toggle__thumb--enabled' : '',
390
+ )}
391
+ ></div>
392
  </label>
393
  </div>
394
  </div>
 
422
  <ul>
423
  <li className="text-bolt-elements-textSecondary">Ollama: {process.env.REACT_APP_OLLAMA_URL}</li>
424
  <li className="text-bolt-elements-textSecondary">OpenAI: {process.env.REACT_APP_OPENAI_URL}</li>
425
+ <li className="text-bolt-elements-textSecondary">
426
+ LM Studio: {process.env.REACT_APP_LM_STUDIO_URL}
427
+ </li>
428
  </ul>
429
 
430
  <h4 className="text-md font-medium text-bolt-elements-textPrimary mt-4">Version Information</h4>
app/components/sidebar/Menu.client.tsx CHANGED
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useRef, useState } from 'react';
3
  import { toast } from 'react-toastify';
4
  import { Dialog, DialogButton, DialogDescription, DialogRoot, DialogTitle } from '~/components/ui/Dialog';
5
  import { ThemeSwitch } from '~/components/ui/ThemeSwitch';
6
- import { Settings } from '~/components/ui/Settings';
7
  import { SettingsButton } from '~/components/ui/SettingsButton';
8
  import { db, deleteById, getAll, chatId, type ChatHistoryItem, useChatHistory } from '~/lib/persistence';
9
  import { cubicEasingFn } from '~/utils/easings';
@@ -208,7 +208,7 @@ export const Menu = () => {
208
  <ThemeSwitch />
209
  </div>
210
  </div>
211
- <Settings open={isSettingsOpen} onClose={() => setIsSettingsOpen(false)} />
212
  </motion.div>
213
  );
214
  };
 
3
  import { toast } from 'react-toastify';
4
  import { Dialog, DialogButton, DialogDescription, DialogRoot, DialogTitle } from '~/components/ui/Dialog';
5
  import { ThemeSwitch } from '~/components/ui/ThemeSwitch';
6
+ import { SettingsWindow } from '~/components/settings/SettingsWindow';
7
  import { SettingsButton } from '~/components/ui/SettingsButton';
8
  import { db, deleteById, getAll, chatId, type ChatHistoryItem, useChatHistory } from '~/lib/persistence';
9
  import { cubicEasingFn } from '~/utils/easings';
 
208
  <ThemeSwitch />
209
  </div>
210
  </div>
211
+ <SettingsWindow open={isSettingsOpen} onClose={() => setIsSettingsOpen(false)} />
212
  </motion.div>
213
  );
214
  };
app/components/ui/SettingsButton.tsx CHANGED
@@ -1,6 +1,5 @@
1
  import { memo } from 'react';
2
- import { IconButton } from './IconButton';
3
-
4
  interface SettingsButtonProps {
5
  onClick: () => void;
6
  }
 
1
  import { memo } from 'react';
2
+ import { IconButton } from '~/components/ui/IconButton';
 
3
  interface SettingsButtonProps {
4
  onClick: () => void;
5
  }
app/components/ui/SettingsSlider.tsx DELETED
@@ -1,63 +0,0 @@
1
- import { motion } from 'framer-motion';
2
- import { memo } from 'react';
3
- import { classNames } from '~/utils/classNames';
4
- import '~/styles/components/SettingsSlider.scss';
5
-
6
- interface SliderOption<T> {
7
- value: T;
8
- text: string;
9
- }
10
-
11
- export interface SliderOptions<T> {
12
- left: SliderOption<T>;
13
- right: SliderOption<T>;
14
- }
15
-
16
- interface SettingsSliderProps<T> {
17
- selected: T;
18
- options: SliderOptions<T>;
19
- setSelected?: (selected: T) => void;
20
- }
21
-
22
- export const SettingsSlider = memo(<T,>({ selected, options, setSelected }: SettingsSliderProps<T>) => {
23
- const isLeftSelected = selected === options.left.value;
24
-
25
- return (
26
- <div className="settings-slider">
27
- <motion.div
28
- className={classNames(
29
- 'settings-slider__thumb',
30
- isLeftSelected ? 'settings-slider__thumb--left' : 'settings-slider__thumb--right'
31
- )}
32
- initial={false}
33
- animate={{
34
- x: isLeftSelected ? 0 : '100%',
35
- opacity: 0.2,
36
- }}
37
- transition={{
38
- type: 'spring',
39
- stiffness: 300,
40
- damping: 30,
41
- }}
42
- />
43
- <button
44
- onClick={() => setSelected?.(options.left.value)}
45
- className={classNames(
46
- 'settings-slider__button',
47
- isLeftSelected ? 'settings-slider__button--selected' : 'settings-slider__button--unselected'
48
- )}
49
- >
50
- {options.left.text}
51
- </button>
52
- <button
53
- onClick={() => setSelected?.(options.right.value)}
54
- className={classNames(
55
- 'settings-slider__button',
56
- !isLeftSelected ? 'settings-slider__button--selected' : 'settings-slider__button--unselected'
57
- )}
58
- >
59
- {options.right.text}
60
- </button>
61
- </div>
62
- );
63
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/components/ui/Switch.tsx ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { memo } from 'react';
2
+ import * as SwitchPrimitive from '@radix-ui/react-switch';
3
+ import { classNames } from '~/utils/classNames';
4
+
5
+ interface SwitchProps {
6
+ className?: string;
7
+ checked?: boolean;
8
+ onCheckedChange?: (event: boolean) => void;
9
+ }
10
+
11
+ export const Switch = memo(({ className, onCheckedChange, checked }: SwitchProps) => {
12
+ return (
13
+ <SwitchPrimitive.Root
14
+ className={classNames(
15
+ 'relative h-6 w-11 cursor-pointer rounded-full bg-bolt-elements-button-primary-background',
16
+ 'transition-colors duration-200 ease-in-out',
17
+ 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2',
18
+ 'disabled:cursor-not-allowed disabled:opacity-50',
19
+ 'data-[state=checked]:bg-bolt-elements-item-contentAccent',
20
+ className,
21
+ )}
22
+ checked={checked}
23
+ onCheckedChange={(e) => onCheckedChange?.(e)}
24
+ >
25
+ <SwitchPrimitive.Thumb
26
+ className={classNames(
27
+ 'block h-5 w-5 rounded-full bg-white',
28
+ 'shadow-lg shadow-black/20',
29
+ 'transition-transform duration-200 ease-in-out',
30
+ 'translate-x-0.5',
31
+ 'data-[state=checked]:translate-x-[1.375rem]',
32
+ 'will-change-transform',
33
+ )}
34
+ />
35
+ </SwitchPrimitive.Root>
36
+ );
37
+ });
app/styles/components/SettingsSlider.scss DELETED
@@ -1,51 +0,0 @@
1
- .settings-slider {
2
- @apply relative flex items-center bg-bolt-elements-prompt-background rounded-lg;
3
-
4
- &__thumb {
5
- @apply absolute h-full transition-all duration-300 rounded-lg;
6
- background-color: var(--bolt-elements-button-primary-background);
7
-
8
- &--left {
9
- @apply left-0 w-1/2;
10
- }
11
-
12
- &--right {
13
- @apply right-0 w-1/2;
14
- }
15
- }
16
-
17
- &__button {
18
- @apply relative z-10 flex-1 p-2 rounded-lg text-sm transition-colors duration-200;
19
-
20
- &--selected {
21
- @apply text-bolt-elements-textPrimary;
22
- }
23
-
24
- &--unselected {
25
- @apply text-bolt-elements-textSecondary hover:text-bolt-elements-textPrimary;
26
- }
27
- }
28
- }
29
-
30
- .settings-toggle {
31
- &__track {
32
- @apply w-11 h-6 rounded-full shadow-inner transition-colors duration-200;
33
-
34
- &--enabled {
35
- background-color: var(--bolt-elements-item-contentAccent);
36
- }
37
-
38
- &--disabled {
39
- background-color: var(--bolt-elements-bg-depth-3);
40
- }
41
- }
42
-
43
- &__thumb {
44
- @apply absolute left-0 w-6 h-6 rounded-full shadow transition-transform duration-200 ease-in-out;
45
- background-color: var(--bolt-elements-textPrimary);
46
-
47
- &--enabled {
48
- @apply transform translate-x-full;
49
- }
50
- }
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.json CHANGED
@@ -59,6 +59,7 @@
59
  "@radix-ui/react-dialog": "^1.1.2",
60
  "@radix-ui/react-dropdown-menu": "^2.1.2",
61
  "@radix-ui/react-separator": "^1.1.0",
 
62
  "@radix-ui/react-tooltip": "^1.1.4",
63
  "@remix-run/cloudflare": "^2.15.0",
64
  "@remix-run/cloudflare-pages": "^2.15.0",
 
59
  "@radix-ui/react-dialog": "^1.1.2",
60
  "@radix-ui/react-dropdown-menu": "^2.1.2",
61
  "@radix-ui/react-separator": "^1.1.0",
62
+ "@radix-ui/react-switch": "^1.1.1",
63
  "@radix-ui/react-tooltip": "^1.1.4",
64
  "@remix-run/cloudflare": "^2.15.0",
65
  "@remix-run/cloudflare-pages": "^2.15.0",
pnpm-lock.yaml CHANGED
@@ -94,16 +94,19 @@ importers:
94
  version: 0.0.5([email protected])
95
  '@radix-ui/react-dialog':
96
  specifier: ^1.1.2
97
98
  '@radix-ui/react-dropdown-menu':
99
  specifier: ^2.1.2
100
101
  '@radix-ui/react-separator':
102
  specifier: ^1.1.0
103
 
 
 
104
  '@radix-ui/react-tooltip':
105
  specifier: ^1.1.4
106
107
  '@remix-run/cloudflare':
108
  specifier: ^2.15.0
109
  version: 2.15.0(@cloudflare/[email protected])([email protected])
@@ -112,7 +115,7 @@ importers:
112
  version: 2.15.0(@cloudflare/[email protected])([email protected])
113
  '@remix-run/react':
114
  specifier: ^2.15.0
115
116
  '@uiw/codemirror-theme-vscode':
117
  specifier: ^4.23.6
118
  version: 4.23.6(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])
@@ -133,7 +136,7 @@ importers:
133
  version: 5.5.0
134
  ai:
135
  specifier: ^3.4.33
136
137
  date-fns:
138
  specifier: ^3.6.0
139
  version: 3.6.0
@@ -145,7 +148,7 @@ importers:
145
  version: 2.0.5
146
  framer-motion:
147
  specifier: ^11.12.0
148
- version: 11.12.0([email protected])([email protected])
149
  ignore:
150
  specifier: ^6.0.2
151
  version: 6.0.2
@@ -181,16 +184,16 @@ importers:
181
  version: 18.3.1([email protected])
182
  react-hotkeys-hook:
183
  specifier: ^4.6.1
184
185
  react-markdown:
186
  specifier: ^9.0.1
187
  version: 9.0.1(@types/[email protected])([email protected])
188
  react-resizable-panels:
189
  specifier: ^2.1.7
190
191
  react-toastify:
192
  specifier: ^10.0.6
193
194
  rehype-raw:
195
  specifier: ^7.0.0
196
  version: 7.0.0
@@ -202,10 +205,10 @@ importers:
202
  version: 4.0.0
203
  remix-island:
204
  specifier: ^0.2.0
205
- version: 0.2.0(@remix-run/[email protected])(@remix-run/[email protected])([email protected])([email protected])
206
  remix-utils:
207
  specifier: ^7.7.0
208
- version: 7.7.0(@remix-run/[email protected])(@remix-run/[email protected])([email protected])([email protected])
209
  shiki:
210
  specifier: ^1.24.0
211
  version: 1.24.0
@@ -215,13 +218,13 @@ importers:
215
  devDependencies:
216
  '@blitz/eslint-plugin':
217
  specifier: 0.1.0
218
219
  '@cloudflare/workers-types':
220
  specifier: ^4.20241127.0
221
  version: 4.20241127.0
222
  '@remix-run/dev':
223
  specifier: ^2.15.0
224
225
  '@types/diff':
226
  specifier: ^5.2.3
227
  version: 5.2.3
@@ -269,22 +272,22 @@ importers:
269
  version: 11.0.5
270
  unocss:
271
  specifier: ^0.61.9
272
273
  vite:
274
  specifier: ^5.4.11
275
- version: 5.4.11([email protected])
276
  vite-plugin-node-polyfills:
277
  specifier: ^0.22.0
278
- version: 0.22.0([email protected])
279
  vite-plugin-optimize-css-modules:
280
  specifier: ^1.1.0
281
- version: 1.1.0([email protected])
282
  vite-tsconfig-paths:
283
  specifier: ^4.3.2
284
285
  vitest:
286
  specifier: ^2.1.7
287
- version: 2.1.8([email protected])
288
  wrangler:
289
  specifier: ^3.91.0
290
  version: 3.91.0(@cloudflare/[email protected])
@@ -1745,6 +1748,19 @@ packages:
1745
  '@types/react':
1746
  optional: true
1747
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1748
  '@radix-ui/[email protected]':
1749
  resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==}
1750
  peerDependencies:
@@ -1794,6 +1810,15 @@ packages:
1794
  '@types/react':
1795
  optional: true
1796
 
 
 
 
 
 
 
 
 
 
1797
  '@radix-ui/[email protected]':
1798
  resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
1799
  peerDependencies:
@@ -5849,6 +5874,7 @@ snapshots:
5849
  eventsource-parser: 1.1.2
5850
  nanoid: 3.3.6
5851
  secure-json-parse: 2.7.0
 
5852
  zod: 3.23.8
5853
 
5854
@@ -5857,6 +5883,7 @@ snapshots:
5857
  eventsource-parser: 1.1.2
5858
  nanoid: 3.3.6
5859
  secure-json-parse: 2.7.0
 
5860
  zod: 3.23.8
5861
 
5862
@@ -5865,6 +5892,7 @@ snapshots:
5865
  eventsource-parser: 1.1.2
5866
  nanoid: 3.3.8
5867
  secure-json-parse: 2.7.0
 
5868
  zod: 3.23.8
5869
 
5870
@@ -5873,6 +5901,7 @@ snapshots:
5873
  eventsource-parser: 1.1.2
5874
  nanoid: 3.3.6
5875
  secure-json-parse: 2.7.0
 
5876
  zod: 3.23.8
5877
 
5878
@@ -5881,6 +5910,7 @@ snapshots:
5881
  eventsource-parser: 3.0.0
5882
  nanoid: 3.3.8
5883
  secure-json-parse: 2.7.0
 
5884
  zod: 3.23.8
5885
 
5886
  '@ai-sdk/[email protected]':
@@ -5907,9 +5937,10 @@ snapshots:
5907
  dependencies:
5908
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5909
  '@ai-sdk/ui-utils': 0.0.50([email protected])
5910
- react: 18.3.1
5911
  swr: 2.2.5([email protected])
5912
  throttleit: 2.1.0
 
 
5913
  zod: 3.23.8
5914
 
5915
@@ -5924,6 +5955,7 @@ snapshots:
5924
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5925
  '@ai-sdk/ui-utils': 0.0.50([email protected])
5926
  sswr: 2.1.0([email protected])
 
5927
  svelte: 5.4.0
5928
  transitivePeerDependencies:
5929
  - zod
@@ -5934,14 +5966,16 @@ snapshots:
5934
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5935
  json-schema: 0.4.0
5936
  secure-json-parse: 2.7.0
5937
- zod: 3.23.8
5938
  zod-to-json-schema: 3.23.5([email protected])
 
 
5939
 
5940
5941
  dependencies:
5942
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5943
  '@ai-sdk/ui-utils': 0.0.50([email protected])
5944
- swrv: 1.0.4([email protected])
 
5945
  vue: 3.5.13([email protected])
5946
  transitivePeerDependencies:
5947
  - zod
@@ -6159,19 +6193,19 @@ snapshots:
6159
  '@babel/helper-string-parser': 7.25.9
6160
  '@babel/helper-validator-identifier': 7.25.9
6161
 
6162
6163
  dependencies:
6164
- '@stylistic/eslint-plugin-ts': 2.11.0([email protected])([email protected])
6165
- '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/[email protected])([email protected])([email protected])
6166
- '@typescript-eslint/parser': 8.17.0([email protected])([email protected])
6167
- '@typescript-eslint/utils': 8.17.0([email protected])([email protected])
6168
  common-tags: 1.8.2
6169
- eslint: 9.16.0
6170
- eslint-config-prettier: 9.1.0([email protected])
6171
- eslint-plugin-jsonc: 2.18.2([email protected])
6172
- eslint-plugin-prettier: 5.2.1([email protected])([email protected])([email protected])
6173
  globals: 15.13.0
6174
- typescript-eslint: 8.17.0([email protected])([email protected])
6175
  transitivePeerDependencies:
6176
  - '@eslint/json'
6177
  - '@types/eslint'
@@ -6623,9 +6657,9 @@ snapshots:
6623
  '@esbuild/[email protected]':
6624
  optional: true
6625
 
6626
- '@eslint-community/[email protected]([email protected])':
6627
  dependencies:
6628
- eslint: 9.16.0
6629
  eslint-visitor-keys: 3.4.3
6630
 
6631
  '@eslint-community/[email protected]': {}
@@ -6673,7 +6707,7 @@ snapshots:
6673
  '@floating-ui/core': 1.6.8
6674
  '@floating-ui/utils': 0.2.8
6675
 
6676
6677
  dependencies:
6678
  '@floating-ui/dom': 1.6.12
6679
  react: 18.3.1
@@ -6956,271 +6990,320 @@ snapshots:
6956
 
6957
  '@radix-ui/[email protected]': {}
6958
 
6959
6960
  dependencies:
6961
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
6962
- '@types/react': 18.3.12
6963
- '@types/react-dom': 18.3.1
6964
  react: 18.3.1
6965
  react-dom: 18.3.1([email protected])
 
 
 
6966
 
6967
6968
  dependencies:
6969
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
6970
  '@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
6971
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
6972
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
6973
- '@types/react': 18.3.12
6974
- '@types/react-dom': 18.3.1
6975
  react: 18.3.1
6976
  react-dom: 18.3.1([email protected])
 
 
 
6977
 
6978
6979
  dependencies:
6980
- '@types/react': 18.3.12
6981
  react: 18.3.1
 
 
6982
 
6983
6984
  dependencies:
6985
- '@types/react': 18.3.12
6986
  react: 18.3.1
 
 
6987
 
6988
6989
  dependencies:
6990
- '@types/react': 18.3.12
6991
  react: 18.3.1
 
 
6992
 
6993
6994
  dependencies:
6995
  '@radix-ui/primitive': 1.1.0
6996
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
6997
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
6998
- '@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected])([email protected])
6999
  '@radix-ui/react-focus-guards': 1.1.1(@types/[email protected])([email protected])
7000
- '@radix-ui/react-focus-scope': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7001
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7002
- '@radix-ui/react-portal': 1.1.2(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7003
- '@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7004
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7005
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7006
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
7007
- '@types/react': 18.3.12
7008
- '@types/react-dom': 18.3.1
7009
  aria-hidden: 1.2.4
7010
  react: 18.3.1
7011
  react-dom: 18.3.1([email protected])
7012
  react-remove-scroll: 2.6.0(@types/[email protected])([email protected])
 
 
 
7013
 
7014
7015
  dependencies:
7016
- '@types/react': 18.3.12
7017
  react: 18.3.1
 
 
7018
 
7019
7020
  dependencies:
7021
  '@radix-ui/primitive': 1.1.0
7022
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7023
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7024
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7025
  '@radix-ui/react-use-escape-keydown': 1.1.0(@types/[email protected])([email protected])
7026
- '@types/react': 18.3.12
7027
- '@types/react-dom': 18.3.1
7028
  react: 18.3.1
7029
  react-dom: 18.3.1([email protected])
 
 
 
7030
 
7031
7032
  dependencies:
7033
  '@radix-ui/primitive': 1.1.0
7034
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7035
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7036
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7037
- '@radix-ui/react-menu': 2.1.2(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7038
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7039
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
7040
- '@types/react': 18.3.12
7041
- '@types/react-dom': 18.3.1
7042
  react: 18.3.1
7043
  react-dom: 18.3.1([email protected])
 
 
 
7044
 
7045
7046
  dependencies:
7047
- '@types/react': 18.3.12
7048
  react: 18.3.1
 
 
7049
 
7050
7051
  dependencies:
7052
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7053
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7054
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7055
- '@types/react': 18.3.12
7056
- '@types/react-dom': 18.3.1
7057
  react: 18.3.1
7058
  react-dom: 18.3.1([email protected])
 
 
 
7059
 
7060
7061
  dependencies:
7062
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
7063
- '@types/react': 18.3.12
7064
  react: 18.3.1
 
 
7065
 
7066
7067
  dependencies:
7068
  '@radix-ui/primitive': 1.1.0
7069
- '@radix-ui/react-collection': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7070
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7071
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7072
  '@radix-ui/react-direction': 1.1.0(@types/[email protected])([email protected])
7073
- '@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7074
  '@radix-ui/react-focus-guards': 1.1.1(@types/[email protected])([email protected])
7075
- '@radix-ui/react-focus-scope': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7076
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7077
- '@radix-ui/react-popper': 1.2.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7078
- '@radix-ui/react-portal': 1.1.2(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7079
- '@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7080
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7081
- '@radix-ui/react-roving-focus': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7082
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7083
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7084
- '@types/react': 18.3.12
7085
- '@types/react-dom': 18.3.1
7086
  aria-hidden: 1.2.4
7087
  react: 18.3.1
7088
  react-dom: 18.3.1([email protected])
7089
  react-remove-scroll: 2.6.0(@types/[email protected])([email protected])
 
 
 
7090
 
7091
7092
  dependencies:
7093
- '@floating-ui/react-dom': 2.1.2([email protected])([email protected])
7094
- '@radix-ui/react-arrow': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7095
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7096
  '@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
7097
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7098
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7099
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
7100
  '@radix-ui/react-use-rect': 1.1.0(@types/[email protected])([email protected])
7101
  '@radix-ui/react-use-size': 1.1.0(@types/[email protected])([email protected])
7102
  '@radix-ui/rect': 1.1.0
7103
- '@types/react': 18.3.12
7104
- '@types/react-dom': 18.3.1
7105
  react: 18.3.1
7106
  react-dom: 18.3.1([email protected])
 
 
 
7107
 
7108
7109
  dependencies:
7110
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7111
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
7112
- '@types/react': 18.3.12
7113
- '@types/react-dom': 18.3.1
7114
  react: 18.3.1
7115
  react-dom: 18.3.1([email protected])
 
 
 
7116
 
7117
7118
  dependencies:
7119
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7120
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
7121
- '@types/react': 18.3.12
7122
- '@types/react-dom': 18.3.1
7123
  react: 18.3.1
7124
  react-dom: 18.3.1([email protected])
 
 
 
7125
 
7126
7127
  dependencies:
7128
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7129
- '@types/react': 18.3.12
7130
- '@types/react-dom': 18.3.1
7131
  react: 18.3.1
7132
  react-dom: 18.3.1([email protected])
 
 
 
7133
 
7134
7135
  dependencies:
7136
  '@radix-ui/primitive': 1.1.0
7137
- '@radix-ui/react-collection': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7138
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7139
  '@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
7140
  '@radix-ui/react-direction': 1.1.0(@types/[email protected])([email protected])
7141
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7142
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7143
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7144
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
7145
- '@types/react': 18.3.12
7146
- '@types/react-dom': 18.3.1
7147
  react: 18.3.1
7148
  react-dom: 18.3.1([email protected])
7149
-
7150
7151
- dependencies:
7152
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7153
  '@types/react': 18.3.12
7154
  '@types/react-dom': 18.3.1
 
 
 
 
7155
  react: 18.3.1
7156
  react-dom: 18.3.1([email protected])
 
 
 
7157
 
7158
7159
  dependencies:
7160
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
 
 
7161
  '@types/react': 18.3.12
 
 
 
 
 
 
 
 
 
 
7162
  react: 18.3.1
 
 
 
 
7163
 
7164
7165
  dependencies:
7166
  '@radix-ui/primitive': 1.1.0
7167
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7168
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7169
- '@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7170
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7171
- '@radix-ui/react-popper': 1.2.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7172
- '@radix-ui/react-portal': 1.1.2(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7173
- '@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7174
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7175
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7176
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
7177
- '@radix-ui/react-visually-hidden': 1.1.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7178
- '@types/react': 18.3.12
7179
- '@types/react-dom': 18.3.1
7180
  react: 18.3.1
7181
  react-dom: 18.3.1([email protected])
 
 
 
7182
 
7183
7184
  dependencies:
7185
- '@types/react': 18.3.12
7186
  react: 18.3.1
 
 
7187
 
7188
7189
  dependencies:
7190
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7191
- '@types/react': 18.3.12
7192
  react: 18.3.1
 
 
7193
 
7194
7195
  dependencies:
7196
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7197
- '@types/react': 18.3.12
7198
  react: 18.3.1
 
 
7199
 
7200
7201
  dependencies:
 
 
7202
  '@types/react': 18.3.12
 
 
 
7203
  react: 18.3.1
 
 
7204
 
7205
7206
  dependencies:
7207
  '@radix-ui/rect': 1.1.0
7208
- '@types/react': 18.3.12
7209
  react: 18.3.1
 
 
7210
 
7211
7212
  dependencies:
7213
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
7214
- '@types/react': 18.3.12
7215
  react: 18.3.1
 
 
7216
 
7217
7218
  dependencies:
7219
- '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected])([email protected])
7220
- '@types/react': 18.3.12
7221
- '@types/react-dom': 18.3.1
7222
  react: 18.3.1
7223
  react-dom: 18.3.1([email protected])
 
 
 
7224
 
7225
  '@radix-ui/[email protected]': {}
7226
 
@@ -7228,6 +7311,7 @@ snapshots:
7228
  dependencies:
7229
  '@cloudflare/workers-types': 4.20241127.0
7230
  '@remix-run/cloudflare': 2.15.0(@cloudflare/[email protected])([email protected])
 
7231
  typescript: 5.7.2
7232
 
7233
@@ -7235,9 +7319,10 @@ snapshots:
7235
  '@cloudflare/kv-asset-handler': 0.1.3
7236
  '@cloudflare/workers-types': 4.20241127.0
7237
  '@remix-run/server-runtime': 2.15.0([email protected])
 
7238
  typescript: 5.7.2
7239
 
7240
7241
  dependencies:
7242
  '@babel/core': 7.26.0
7243
  '@babel/generator': 7.26.2
@@ -7250,11 +7335,11 @@ snapshots:
7250
  '@mdx-js/mdx': 2.3.0
7251
  '@npmcli/package-json': 4.0.1
7252
  '@remix-run/node': 2.15.0([email protected])
7253
- '@remix-run/react': 2.15.0([email protected])([email protected])([email protected])
7254
  '@remix-run/router': 1.21.0
7255
  '@remix-run/server-runtime': 2.15.0([email protected])
7256
  '@types/mdx': 2.0.13
7257
- '@vanilla-extract/integration': 6.5.0([email protected])
7258
  arg: 5.0.2
7259
  cacache: 17.1.4
7260
  chalk: 4.1.2
@@ -7292,12 +7377,13 @@ snapshots:
7292
  set-cookie-parser: 2.7.1
7293
  tar-fs: 2.1.1
7294
  tsconfig-paths: 4.2.0
7295
- typescript: 5.7.2
7296
  valibot: 0.41.0([email protected])
7297
- vite: 5.4.11([email protected])
7298
- vite-node: 1.6.0([email protected])
7299
- wrangler: 3.91.0(@cloudflare/[email protected])
7300
  ws: 7.5.10
 
 
 
 
7301
  transitivePeerDependencies:
7302
  - '@types/node'
7303
  - babel-plugin-macros
@@ -7322,18 +7408,20 @@ snapshots:
7322
  cookie-signature: 1.2.2
7323
  source-map-support: 0.5.21
7324
  stream-slice: 0.1.2
7325
- typescript: 5.7.2
7326
  undici: 6.21.0
 
 
7327
 
7328
7329
  dependencies:
7330
  '@remix-run/router': 1.21.0
7331
  '@remix-run/server-runtime': 2.15.0([email protected])
7332
  react: 18.3.1
7333
  react-dom: 18.3.1([email protected])
7334
  react-router: 6.28.0([email protected])
7335
- react-router-dom: 6.28.0([email protected])([email protected])
7336
  turbo-stream: 2.4.0
 
7337
  typescript: 5.7.2
7338
 
7339
  '@remix-run/[email protected]': {}
@@ -7347,6 +7435,7 @@ snapshots:
7347
  set-cookie-parser: 2.7.1
7348
  source-map: 0.7.4
7349
  turbo-stream: 2.4.0
 
7350
  typescript: 5.7.2
7351
 
7352
  '@remix-run/[email protected]':
@@ -7377,17 +7466,21 @@ snapshots:
7377
  dependencies:
7378
  web-streams-polyfill: 3.3.3
7379
 
7380
- '@rollup/[email protected]':
7381
  dependencies:
7382
- '@rollup/pluginutils': 5.1.3
7383
  estree-walker: 2.0.2
7384
  magic-string: 0.30.14
 
 
7385
 
7386
- '@rollup/[email protected]':
7387
  dependencies:
7388
  '@types/estree': 1.0.6
7389
  estree-walker: 2.0.2
7390
  picomatch: 4.0.2
 
 
7391
 
7392
  '@rollup/[email protected]':
7393
  optional: true
@@ -7470,10 +7563,10 @@ snapshots:
7470
 
7471
  '@shikijs/[email protected]': {}
7472
 
7473
7474
  dependencies:
7475
- '@typescript-eslint/utils': 8.17.0([email protected])([email protected])
7476
- eslint: 9.16.0
7477
  eslint-visitor-keys: 4.2.0
7478
  espree: 10.3.0
7479
  transitivePeerDependencies:
@@ -7494,7 +7587,6 @@ snapshots:
7494
 
7495
  '@types/[email protected]': {}
7496
 
7497
-
7498
  '@types/[email protected]': {}
7499
 
7500
  '@types/[email protected]':
@@ -7558,31 +7650,33 @@ snapshots:
7558
 
7559
  '@types/[email protected]': {}
7560
 
7561
- '@typescript-eslint/[email protected](@typescript-eslint/[email protected])([email protected])([email protected])':
7562
  dependencies:
7563
  '@eslint-community/regexpp': 4.12.1
7564
- '@typescript-eslint/parser': 8.17.0([email protected])([email protected])
7565
  '@typescript-eslint/scope-manager': 8.17.0
7566
- '@typescript-eslint/type-utils': 8.17.0([email protected])([email protected])
7567
- '@typescript-eslint/utils': 8.17.0([email protected])([email protected])
7568
  '@typescript-eslint/visitor-keys': 8.17.0
7569
- eslint: 9.16.0
7570
  graphemer: 1.4.0
7571
  ignore: 5.3.2
7572
  natural-compare: 1.4.0
7573
  ts-api-utils: 1.4.3([email protected])
 
7574
  typescript: 5.7.2
7575
  transitivePeerDependencies:
7576
  - supports-color
7577
 
7578
7579
  dependencies:
7580
  '@typescript-eslint/scope-manager': 8.17.0
7581
  '@typescript-eslint/types': 8.17.0
7582
  '@typescript-eslint/typescript-estree': 8.17.0([email protected])
7583
  '@typescript-eslint/visitor-keys': 8.17.0
7584
  debug: 4.3.7
7585
- eslint: 9.16.0
 
7586
  typescript: 5.7.2
7587
  transitivePeerDependencies:
7588
  - supports-color
@@ -7592,13 +7686,14 @@ snapshots:
7592
  '@typescript-eslint/types': 8.17.0
7593
  '@typescript-eslint/visitor-keys': 8.17.0
7594
 
7595
7596
  dependencies:
7597
  '@typescript-eslint/typescript-estree': 8.17.0([email protected])
7598
- '@typescript-eslint/utils': 8.17.0([email protected])([email protected])
7599
  debug: 4.3.7
7600
- eslint: 9.16.0
7601
  ts-api-utils: 1.4.3([email protected])
 
7602
  typescript: 5.7.2
7603
  transitivePeerDependencies:
7604
  - supports-color
@@ -7615,17 +7710,19 @@ snapshots:
7615
  minimatch: 9.0.5
7616
  semver: 7.6.3
7617
  ts-api-utils: 1.4.3([email protected])
 
7618
  typescript: 5.7.2
7619
  transitivePeerDependencies:
7620
  - supports-color
7621
 
7622
7623
  dependencies:
7624
- '@eslint-community/eslint-utils': 4.4.1([email protected])
7625
  '@typescript-eslint/scope-manager': 8.17.0
7626
  '@typescript-eslint/types': 8.17.0
7627
  '@typescript-eslint/typescript-estree': 8.17.0([email protected])
7628
- eslint: 9.16.0
 
7629
  typescript: 5.7.2
7630
  transitivePeerDependencies:
7631
  - supports-color
@@ -7651,20 +7748,21 @@ snapshots:
7651
 
7652
  '@ungap/[email protected]': {}
7653
 
7654
7655
  dependencies:
7656
  '@unocss/core': 0.61.9
7657
  '@unocss/reset': 0.61.9
7658
- '@unocss/vite': 0.61.9([email protected])
7659
- vite: 5.4.11([email protected])
 
7660
  transitivePeerDependencies:
7661
  - rollup
7662
  - supports-color
7663
 
7664
- '@unocss/[email protected]':
7665
  dependencies:
7666
  '@ampproject/remapping': 2.3.0
7667
- '@rollup/pluginutils': 5.1.3
7668
  '@unocss/config': 0.61.9
7669
  '@unocss/core': 0.61.9
7670
  '@unocss/preset-uno': 0.61.9
@@ -7793,10 +7891,10 @@ snapshots:
7793
  dependencies:
7794
  '@unocss/core': 0.61.9
7795
 
7796
7797
  dependencies:
7798
  '@ampproject/remapping': 2.3.0
7799
- '@rollup/pluginutils': 5.1.3
7800
  '@unocss/config': 0.61.9
7801
  '@unocss/core': 0.61.9
7802
  '@unocss/inspector': 0.61.9
@@ -7805,7 +7903,7 @@ snapshots:
7805
  chokidar: 3.6.0
7806
  fast-glob: 3.3.2
7807
  magic-string: 0.30.14
7808
- vite: 5.4.11([email protected])
7809
  transitivePeerDependencies:
7810
  - rollup
7811
  - supports-color
@@ -7833,7 +7931,7 @@ snapshots:
7833
  transitivePeerDependencies:
7834
  - babel-plugin-macros
7835
 
7836
- '@vanilla-extract/[email protected]([email protected])':
7837
  dependencies:
7838
  '@babel/core': 7.26.0
7839
  '@babel/plugin-syntax-typescript': 7.25.9(@babel/[email protected])
@@ -7846,8 +7944,8 @@ snapshots:
7846
  lodash: 4.17.21
7847
  mlly: 1.7.3
7848
  outdent: 0.8.0
7849
- vite: 5.4.11([email protected])
7850
- vite-node: 1.6.0([email protected])
7851
  transitivePeerDependencies:
7852
  - '@types/node'
7853
  - babel-plugin-macros
@@ -7869,12 +7967,13 @@ snapshots:
7869
  chai: 5.1.2
7870
  tinyrainbow: 1.2.0
7871
 
7872
7873
  dependencies:
7874
  '@vitest/spy': 2.1.8
7875
  estree-walker: 3.0.3
7876
  magic-string: 0.30.14
7877
- vite: 5.4.11([email protected])
 
7878
 
7879
  '@vitest/[email protected]':
7880
  dependencies:
@@ -7947,7 +8046,7 @@ snapshots:
7947
  '@vue/shared': 3.5.13
7948
  csstype: 3.1.3
7949
 
7950
7951
  dependencies:
7952
  '@vue/compiler-ssr': 3.5.13
7953
  '@vue/shared': 3.5.13
@@ -8000,7 +8099,7 @@ snapshots:
8000
  clean-stack: 2.2.0
8001
  indent-string: 4.0.0
8002
 
8003
8004
  dependencies:
8005
  '@ai-sdk/provider': 0.0.26
8006
  '@ai-sdk/provider-utils': 1.0.22([email protected])
@@ -8008,16 +8107,18 @@ snapshots:
8008
  '@ai-sdk/solid': 0.0.54([email protected])
8009
  '@ai-sdk/svelte': 0.0.57([email protected])([email protected])
8010
  '@ai-sdk/ui-utils': 0.0.50([email protected])
8011
- '@ai-sdk/vue': 0.0.59([email protected])([email protected])
8012
  '@opentelemetry/api': 1.9.0
8013
  eventsource-parser: 1.1.2
8014
  json-schema: 0.4.0
8015
  jsondiffpatch: 0.6.0
8016
- react: 18.3.1
8017
  secure-json-parse: 2.7.0
 
 
 
 
8018
  svelte: 5.4.0
8019
  zod: 3.23.8
8020
- zod-to-json-schema: 3.23.5([email protected])
8021
  transitivePeerDependencies:
8022
  - solid-js
8023
  - vue
@@ -8696,27 +8797,27 @@ snapshots:
8696
 
8697
8698
 
8699
8700
  dependencies:
8701
- eslint: 9.16.0
8702
  semver: 7.6.3
8703
 
8704
8705
  dependencies:
8706
- eslint: 9.16.0
8707
 
8708
8709
  dependencies:
8710
- eslint: 9.16.0
8711
  esquery: 1.6.0
8712
  jsonc-eslint-parser: 2.4.0
8713
 
8714
8715
  dependencies:
8716
- '@eslint-community/eslint-utils': 4.4.1([email protected])
8717
- eslint: 9.16.0
8718
- eslint-compat-utils: 0.6.4([email protected])
8719
- eslint-json-compat-utils: 0.2.1([email protected])([email protected])
8720
  espree: 9.6.1
8721
  graphemer: 1.4.0
8722
  jsonc-eslint-parser: 2.4.0
@@ -8725,13 +8826,15 @@ snapshots:
8725
  transitivePeerDependencies:
8726
  - '@eslint/json'
8727
 
8728
8729
  dependencies:
8730
- eslint: 9.16.0
8731
- eslint-config-prettier: 9.1.0([email protected])
8732
  prettier: 3.4.1
8733
  prettier-linter-helpers: 1.0.0
8734
  synckit: 0.9.2
 
 
 
8735
 
8736
8737
  dependencies:
@@ -8742,9 +8845,9 @@ snapshots:
8742
 
8743
8744
 
8745
8746
  dependencies:
8747
- '@eslint-community/eslint-utils': 4.4.1([email protected])
8748
  '@eslint-community/regexpp': 4.12.1
8749
  '@eslint/config-array': 0.19.0
8750
  '@eslint/core': 0.9.0
@@ -8778,6 +8881,8 @@ snapshots:
8778
  minimatch: 3.1.2
8779
  natural-compare: 1.4.0
8780
  optionator: 0.9.4
 
 
8781
  transitivePeerDependencies:
8782
  - supports-color
8783
 
@@ -9005,11 +9110,12 @@ snapshots:
9005
 
9006
9007
 
9008
9009
  dependencies:
 
 
9010
  react: 18.3.1
9011
  react-dom: 18.3.1([email protected])
9012
- tslib: 2.8.1
9013
 
9014
9015
 
@@ -10491,6 +10597,7 @@ snapshots:
10491
  '@ai-sdk/provider': 0.0.24
10492
  '@ai-sdk/provider-utils': 1.0.20([email protected])
10493
  partial-json: 0.1.7
 
10494
  zod: 3.23.8
10495
 
10496
@@ -10664,8 +10771,9 @@ snapshots:
10664
10665
  dependencies:
10666
  lilconfig: 3.1.2
10667
- postcss: 8.4.49
10668
  yaml: 2.6.1
 
 
10669
 
10670
10671
  dependencies:
@@ -10814,7 +10922,7 @@ snapshots:
10814
  react: 18.3.1
10815
  scheduler: 0.23.2
10816
 
10817
10818
  dependencies:
10819
  react: 18.3.1
10820
  react-dom: 18.3.1([email protected])
@@ -10840,27 +10948,29 @@ snapshots:
10840
 
10841
10842
  dependencies:
10843
- '@types/react': 18.3.12
10844
  react: 18.3.1
10845
  react-style-singleton: 2.2.1(@types/[email protected])([email protected])
10846
  tslib: 2.8.1
 
 
10847
 
10848
10849
  dependencies:
10850
- '@types/react': 18.3.12
10851
  react: 18.3.1
10852
  react-remove-scroll-bar: 2.3.6(@types/[email protected])([email protected])
10853
  react-style-singleton: 2.2.1(@types/[email protected])([email protected])
10854
  tslib: 2.8.1
10855
  use-callback-ref: 1.3.2(@types/[email protected])([email protected])
10856
  use-sidecar: 1.1.2(@types/[email protected])([email protected])
 
 
10857
 
10858
10859
  dependencies:
10860
  react: 18.3.1
10861
  react-dom: 18.3.1([email protected])
10862
 
10863
10864
  dependencies:
10865
  '@remix-run/router': 1.21.0
10866
  react: 18.3.1
@@ -10874,13 +10984,14 @@ snapshots:
10874
 
10875
10876
  dependencies:
10877
- '@types/react': 18.3.12
10878
  get-nonce: 1.0.1
10879
  invariant: 2.2.4
10880
  react: 18.3.1
10881
  tslib: 2.8.1
 
 
10882
 
10883
10884
  dependencies:
10885
  clsx: 2.1.1
10886
  react: 18.3.1
@@ -11005,19 +11116,22 @@ snapshots:
11005
  mdast-util-to-markdown: 2.1.2
11006
  unified: 11.0.5
11007
 
11008
11009
  dependencies:
11010
- '@remix-run/react': 2.15.0([email protected])([email protected])([email protected])
11011
  '@remix-run/server-runtime': 2.15.0([email protected])
11012
  react: 18.3.1
11013
  react-dom: 18.3.1([email protected])
11014
 
11015
11016
  dependencies:
 
 
11017
  '@remix-run/cloudflare': 2.15.0(@cloudflare/[email protected])([email protected])
11018
- '@remix-run/react': 2.15.0([email protected])([email protected])([email protected])
 
 
11019
  react: 18.3.1
11020
- type-fest: 4.30.0
11021
  zod: 3.23.8
11022
 
11023
@@ -11452,7 +11566,7 @@ snapshots:
11452
 
11453
11454
 
11455
11456
  dependencies:
11457
  vue: 3.5.13([email protected])
11458
 
@@ -11539,7 +11653,7 @@ snapshots:
11539
  typescript: 5.7.2
11540
 
11541
11542
- dependencies:
11543
  typescript: 5.7.2
11544
 
11545
@@ -11572,12 +11686,13 @@ snapshots:
11572
  media-typer: 0.3.0
11573
  mime-types: 2.1.35
11574
 
11575
11576
  dependencies:
11577
- '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/[email protected])([email protected])([email protected])
11578
- '@typescript-eslint/parser': 8.17.0([email protected])([email protected])
11579
- '@typescript-eslint/utils': 8.17.0([email protected])([email protected])
11580
- eslint: 9.16.0
 
11581
  typescript: 5.7.2
11582
  transitivePeerDependencies:
11583
  - supports-color
@@ -11698,10 +11813,10 @@ snapshots:
11698
 
11699
11700
 
11701
11702
  dependencies:
11703
- '@unocss/astro': 0.61.9([email protected])
11704
- '@unocss/cli': 0.61.9
11705
  '@unocss/core': 0.61.9
11706
  '@unocss/extractor-arbitrary-variants': 0.61.9
11707
  '@unocss/postcss': 0.61.9([email protected])
@@ -11719,8 +11834,9 @@ snapshots:
11719
  '@unocss/transformer-compile-class': 0.61.9
11720
  '@unocss/transformer-directives': 0.61.9
11721
  '@unocss/transformer-variant-group': 0.61.9
11722
- '@unocss/vite': 0.61.9([email protected])
11723
- vite: 5.4.11([email protected])
 
11724
  transitivePeerDependencies:
11725
  - postcss
11726
  - rollup
@@ -11745,16 +11861,18 @@ snapshots:
11745
 
11746
11747
  dependencies:
11748
- '@types/react': 18.3.12
11749
  react: 18.3.1
11750
  tslib: 2.8.1
 
 
11751
 
11752
11753
  dependencies:
11754
- '@types/react': 18.3.12
11755
  detect-node-es: 1.1.0
11756
  react: 18.3.1
11757
  tslib: 2.8.1
 
 
11758
 
11759
11760
  dependencies:
@@ -11780,7 +11898,7 @@ snapshots:
11780
  sade: 1.8.1
11781
 
11782
11783
- dependencies:
11784
  typescript: 5.7.2
11785
 
11786
@@ -11823,13 +11941,13 @@ snapshots:
11823
  '@types/unist': 3.0.3
11824
  vfile-message: 4.0.2
11825
 
11826
11827
  dependencies:
11828
  cac: 6.7.14
11829
  debug: 4.3.7
11830
  pathe: 1.1.2
11831
  picocolors: 1.1.1
11832
- vite: 5.4.11([email protected])
11833
  transitivePeerDependencies:
11834
  - '@types/node'
11835
  - less
@@ -11841,13 +11959,13 @@ snapshots:
11841
  - supports-color
11842
  - terser
11843
 
11844
11845
  dependencies:
11846
  cac: 6.7.14
11847
  debug: 4.3.7
11848
  es-module-lexer: 1.5.4
11849
  pathe: 1.1.2
11850
- vite: 5.4.11([email protected])
11851
  transitivePeerDependencies:
11852
  - '@types/node'
11853
  - less
@@ -11859,41 +11977,43 @@ snapshots:
11859
  - supports-color
11860
  - terser
11861
 
11862
11863
  dependencies:
11864
- '@rollup/plugin-inject': 5.0.5
11865
  node-stdlib-browser: 1.3.0
11866
- vite: 5.4.11([email protected])
11867
  transitivePeerDependencies:
11868
  - rollup
11869
 
11870
11871
  dependencies:
11872
- vite: 5.4.11([email protected])
11873
 
11874
11875
  dependencies:
11876
  debug: 4.3.7
11877
  globrex: 0.1.2
11878
  tsconfck: 3.1.4([email protected])
11879
- vite: 5.4.11([email protected])
 
11880
  transitivePeerDependencies:
11881
  - supports-color
11882
  - typescript
11883
 
11884
11885
  dependencies:
11886
  esbuild: 0.21.5
11887
  postcss: 8.4.49
11888
  rollup: 4.28.0
11889
- sass-embedded: 1.81.0
11890
  optionalDependencies:
 
11891
  fsevents: 2.3.3
 
11892
 
11893
11894
  dependencies:
11895
  '@vitest/expect': 2.1.8
11896
- '@vitest/mocker': 2.1.8([email protected])
11897
  '@vitest/pretty-format': 2.1.8
11898
  '@vitest/runner': 2.1.8
11899
  '@vitest/snapshot': 2.1.8
@@ -11909,9 +12029,11 @@ snapshots:
11909
  tinyexec: 0.3.1
11910
  tinypool: 1.0.2
11911
  tinyrainbow: 1.2.0
11912
- vite: 5.4.11([email protected])
11913
- vite-node: 2.1.8([email protected])
11914
  why-is-node-running: 2.3.0
 
 
11915
  transitivePeerDependencies:
11916
  - less
11917
  - lightningcss
@@ -11930,8 +12052,9 @@ snapshots:
11930
  '@vue/compiler-dom': 3.5.13
11931
  '@vue/compiler-sfc': 3.5.13
11932
  '@vue/runtime-dom': 3.5.13
11933
- '@vue/server-renderer': 3.5.13([email protected])
11934
  '@vue/shared': 3.5.13
 
11935
  typescript: 5.7.2
11936
 
11937
@@ -11985,7 +12108,6 @@ snapshots:
11985
  dependencies:
11986
  '@cloudflare/kv-asset-handler': 0.3.4
11987
  '@cloudflare/workers-shared': 0.9.0
11988
- '@cloudflare/workers-types': 4.20241127.0
11989
  '@esbuild-plugins/node-globals-polyfill': 0.2.3([email protected])
11990
  '@esbuild-plugins/node-modules-polyfill': 0.2.2([email protected])
11991
  blake3-wasm: 2.1.5
@@ -12004,6 +12126,7 @@ snapshots:
12004
  workerd: 1.20241106.1
12005
  xxhash-wasm: 1.1.0
12006
  optionalDependencies:
 
12007
  fsevents: 2.3.3
12008
  transitivePeerDependencies:
12009
  - bufferutil
 
94
  version: 0.0.5([email protected])
95
  '@radix-ui/react-dialog':
96
  specifier: ^1.1.2
97
98
  '@radix-ui/react-dropdown-menu':
99
  specifier: ^2.1.2
100
101
  '@radix-ui/react-separator':
102
  specifier: ^1.1.0
103
104
+ '@radix-ui/react-switch':
105
+ specifier: ^1.1.1
106
107
  '@radix-ui/react-tooltip':
108
  specifier: ^1.1.4
109
110
  '@remix-run/cloudflare':
111
  specifier: ^2.15.0
112
  version: 2.15.0(@cloudflare/[email protected])([email protected])
 
115
  version: 2.15.0(@cloudflare/[email protected])([email protected])
116
  '@remix-run/react':
117
  specifier: ^2.15.0
118
119
  '@uiw/codemirror-theme-vscode':
120
  specifier: ^4.23.6
121
  version: 4.23.6(@codemirror/[email protected])(@codemirror/[email protected])(@codemirror/[email protected])
 
136
  version: 5.5.0
137
  ai:
138
  specifier: ^3.4.33
139
140
  date-fns:
141
  specifier: ^3.6.0
142
  version: 3.6.0
 
148
  version: 2.0.5
149
  framer-motion:
150
  specifier: ^11.12.0
151
152
  ignore:
153
  specifier: ^6.0.2
154
  version: 6.0.2
 
184
  version: 18.3.1([email protected])
185
  react-hotkeys-hook:
186
  specifier: ^4.6.1
187
188
  react-markdown:
189
  specifier: ^9.0.1
190
  version: 9.0.1(@types/[email protected])([email protected])
191
  react-resizable-panels:
192
  specifier: ^2.1.7
193
194
  react-toastify:
195
  specifier: ^10.0.6
196
197
  rehype-raw:
198
  specifier: ^7.0.0
199
  version: 7.0.0
 
205
  version: 4.0.0
206
  remix-island:
207
  specifier: ^0.2.0
208
209
  remix-utils:
210
  specifier: ^7.7.0
211
212
  shiki:
213
  specifier: ^1.24.0
214
  version: 1.24.0
 
218
  devDependencies:
219
  '@blitz/eslint-plugin':
220
  specifier: 0.1.0
221
222
  '@cloudflare/workers-types':
223
  specifier: ^4.20241127.0
224
  version: 4.20241127.0
225
  '@remix-run/dev':
226
  specifier: ^2.15.0
227
228
  '@types/diff':
229
  specifier: ^5.2.3
230
  version: 5.2.3
 
272
  version: 11.0.5
273
  unocss:
274
  specifier: ^0.61.9
275
276
  vite:
277
  specifier: ^5.4.11
278
+ version: 5.4.11(@types/[email protected])([email protected])
279
  vite-plugin-node-polyfills:
280
  specifier: ^0.22.0
281
282
  vite-plugin-optimize-css-modules:
283
  specifier: ^1.1.0
284
285
  vite-tsconfig-paths:
286
  specifier: ^4.3.2
287
288
  vitest:
289
  specifier: ^2.1.7
290
+ version: 2.1.8(@types/[email protected])([email protected])
291
  wrangler:
292
  specifier: ^3.91.0
293
  version: 3.91.0(@cloudflare/[email protected])
 
1748
  '@types/react':
1749
  optional: true
1750
 
1751
+ '@radix-ui/[email protected]':
1752
+ resolution: {integrity: sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==}
1753
+ peerDependencies:
1754
+ '@types/react': '*'
1755
+ '@types/react-dom': '*'
1756
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1757
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1758
+ peerDependenciesMeta:
1759
+ '@types/react':
1760
+ optional: true
1761
+ '@types/react-dom':
1762
+ optional: true
1763
+
1764
  '@radix-ui/[email protected]':
1765
  resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==}
1766
  peerDependencies:
 
1810
  '@types/react':
1811
  optional: true
1812
 
1813
+ '@radix-ui/[email protected]':
1814
+ resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==}
1815
+ peerDependencies:
1816
+ '@types/react': '*'
1817
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
1818
+ peerDependenciesMeta:
1819
+ '@types/react':
1820
+ optional: true
1821
+
1822
  '@radix-ui/[email protected]':
1823
  resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
1824
  peerDependencies:
 
5874
  eventsource-parser: 1.1.2
5875
  nanoid: 3.3.6
5876
  secure-json-parse: 2.7.0
5877
+ optionalDependencies:
5878
  zod: 3.23.8
5879
 
5880
 
5883
  eventsource-parser: 1.1.2
5884
  nanoid: 3.3.6
5885
  secure-json-parse: 2.7.0
5886
+ optionalDependencies:
5887
  zod: 3.23.8
5888
 
5889
 
5892
  eventsource-parser: 1.1.2
5893
  nanoid: 3.3.8
5894
  secure-json-parse: 2.7.0
5895
+ optionalDependencies:
5896
  zod: 3.23.8
5897
 
5898
 
5901
  eventsource-parser: 1.1.2
5902
  nanoid: 3.3.6
5903
  secure-json-parse: 2.7.0
5904
+ optionalDependencies:
5905
  zod: 3.23.8
5906
 
5907
 
5910
  eventsource-parser: 3.0.0
5911
  nanoid: 3.3.8
5912
  secure-json-parse: 2.7.0
5913
+ optionalDependencies:
5914
  zod: 3.23.8
5915
 
5916
  '@ai-sdk/[email protected]':
 
5937
  dependencies:
5938
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5939
  '@ai-sdk/ui-utils': 0.0.50([email protected])
 
5940
  swr: 2.2.5([email protected])
5941
  throttleit: 2.1.0
5942
+ optionalDependencies:
5943
+ react: 18.3.1
5944
  zod: 3.23.8
5945
 
5946
 
5955
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5956
  '@ai-sdk/ui-utils': 0.0.50([email protected])
5957
  sswr: 2.1.0([email protected])
5958
+ optionalDependencies:
5959
  svelte: 5.4.0
5960
  transitivePeerDependencies:
5961
  - zod
 
5966
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5967
  json-schema: 0.4.0
5968
  secure-json-parse: 2.7.0
 
5969
  zod-to-json-schema: 3.23.5([email protected])
5970
+ optionalDependencies:
5971
+ zod: 3.23.8
5972
 
5973
5974
  dependencies:
5975
  '@ai-sdk/provider-utils': 1.0.22([email protected])
5976
  '@ai-sdk/ui-utils': 0.0.50([email protected])
5977
5978
+ optionalDependencies:
5979
  vue: 3.5.13([email protected])
5980
  transitivePeerDependencies:
5981
  - zod
 
6193
  '@babel/helper-string-parser': 7.25.9
6194
  '@babel/helper-validator-identifier': 7.25.9
6195
 
6196
6197
  dependencies:
6198
+ '@stylistic/eslint-plugin-ts': 2.11.0([email protected]([email protected]))([email protected])
6199
6200
+ '@typescript-eslint/parser': 8.17.0([email protected]([email protected]))([email protected])
6201
+ '@typescript-eslint/utils': 8.17.0([email protected]([email protected]))([email protected])
6202
  common-tags: 1.8.2
6203
+ eslint: 9.16.0([email protected])
6204
+ eslint-config-prettier: 9.1.0([email protected]([email protected]))
6205
+ eslint-plugin-jsonc: 2.18.2([email protected]([email protected]))
6206
+ eslint-plugin-prettier: 5.2.1(@types/eslint@8.56.10)(eslint[email protected]([email protected]([email protected])))([email protected]([email protected]))([email protected])
6207
  globals: 15.13.0
6208
6209
  transitivePeerDependencies:
6210
  - '@eslint/json'
6211
  - '@types/eslint'
 
6657
  '@esbuild/[email protected]':
6658
  optional: true
6659
 
6660
6661
  dependencies:
6662
+ eslint: 9.16.0([email protected])
6663
  eslint-visitor-keys: 3.4.3
6664
 
6665
  '@eslint-community/[email protected]': {}
 
6707
  '@floating-ui/core': 1.6.8
6708
  '@floating-ui/utils': 0.2.8
6709
 
6710
6711
  dependencies:
6712
  '@floating-ui/dom': 1.6.12
6713
  react: 18.3.1
 
6990
 
6991
  '@radix-ui/[email protected]': {}
6992
 
6993
6994
  dependencies:
6995
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
 
 
6996
  react: 18.3.1
6997
  react-dom: 18.3.1([email protected])
6998
+ optionalDependencies:
6999
+ '@types/react': 18.3.12
7000
+ '@types/react-dom': 18.3.1
7001
 
7002
7003
  dependencies:
7004
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7005
  '@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
7006
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7007
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
 
 
7008
  react: 18.3.1
7009
  react-dom: 18.3.1([email protected])
7010
+ optionalDependencies:
7011
+ '@types/react': 18.3.12
7012
+ '@types/react-dom': 18.3.1
7013
 
7014
7015
  dependencies:
 
7016
  react: 18.3.1
7017
+ optionalDependencies:
7018
+ '@types/react': 18.3.12
7019
 
7020
7021
  dependencies:
 
7022
  react: 18.3.1
7023
+ optionalDependencies:
7024
+ '@types/react': 18.3.12
7025
 
7026
7027
  dependencies:
 
7028
  react: 18.3.1
7029
+ optionalDependencies:
7030
+ '@types/react': 18.3.12
7031
 
7032
7033
  dependencies:
7034
  '@radix-ui/primitive': 1.1.0
7035
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7036
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7037
+ '@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7038
  '@radix-ui/react-focus-guards': 1.1.1(@types/[email protected])([email protected])
7039
+ '@radix-ui/react-focus-scope': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7040
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7041
7042
+ '@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7043
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7044
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7045
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
 
 
7046
  aria-hidden: 1.2.4
7047
  react: 18.3.1
7048
  react-dom: 18.3.1([email protected])
7049
  react-remove-scroll: 2.6.0(@types/[email protected])([email protected])
7050
+ optionalDependencies:
7051
+ '@types/react': 18.3.12
7052
+ '@types/react-dom': 18.3.1
7053
 
7054
7055
  dependencies:
 
7056
  react: 18.3.1
7057
+ optionalDependencies:
7058
+ '@types/react': 18.3.12
7059
 
7060
7061
  dependencies:
7062
  '@radix-ui/primitive': 1.1.0
7063
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7064
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7065
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7066
  '@radix-ui/react-use-escape-keydown': 1.1.0(@types/[email protected])([email protected])
 
 
7067
  react: 18.3.1
7068
  react-dom: 18.3.1([email protected])
7069
+ optionalDependencies:
7070
+ '@types/react': 18.3.12
7071
+ '@types/react-dom': 18.3.1
7072
 
7073
7074
  dependencies:
7075
  '@radix-ui/primitive': 1.1.0
7076
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7077
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7078
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7079
7080
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7081
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
 
 
7082
  react: 18.3.1
7083
  react-dom: 18.3.1([email protected])
7084
+ optionalDependencies:
7085
+ '@types/react': 18.3.12
7086
+ '@types/react-dom': 18.3.1
7087
 
7088
7089
  dependencies:
 
7090
  react: 18.3.1
7091
+ optionalDependencies:
7092
+ '@types/react': 18.3.12
7093
 
7094
7095
  dependencies:
7096
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7097
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7098
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
 
 
7099
  react: 18.3.1
7100
  react-dom: 18.3.1([email protected])
7101
+ optionalDependencies:
7102
+ '@types/react': 18.3.12
7103
+ '@types/react-dom': 18.3.1
7104
 
7105
7106
  dependencies:
7107
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
 
7108
  react: 18.3.1
7109
+ optionalDependencies:
7110
+ '@types/react': 18.3.12
7111
 
7112
7113
  dependencies:
7114
  '@radix-ui/primitive': 1.1.0
7115
+ '@radix-ui/react-collection': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7116
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7117
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7118
  '@radix-ui/react-direction': 1.1.0(@types/[email protected])([email protected])
7119
+ '@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7120
  '@radix-ui/react-focus-guards': 1.1.1(@types/[email protected])([email protected])
7121
+ '@radix-ui/react-focus-scope': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7122
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7123
7124
7125
+ '@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7126
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7127
+ '@radix-ui/react-roving-focus': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7128
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7129
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
 
 
7130
  aria-hidden: 1.2.4
7131
  react: 18.3.1
7132
  react-dom: 18.3.1([email protected])
7133
  react-remove-scroll: 2.6.0(@types/[email protected])([email protected])
7134
+ optionalDependencies:
7135
+ '@types/react': 18.3.12
7136
+ '@types/react-dom': 18.3.1
7137
 
7138
7139
  dependencies:
7140
+ '@floating-ui/react-dom': 2.1.2([email protected]([email protected]))([email protected])
7141
7142
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7143
  '@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
7144
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7145
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7146
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
7147
  '@radix-ui/react-use-rect': 1.1.0(@types/[email protected])([email protected])
7148
  '@radix-ui/react-use-size': 1.1.0(@types/[email protected])([email protected])
7149
  '@radix-ui/rect': 1.1.0
 
 
7150
  react: 18.3.1
7151
  react-dom: 18.3.1([email protected])
7152
+ optionalDependencies:
7153
+ '@types/react': 18.3.12
7154
+ '@types/react-dom': 18.3.1
7155
 
7156
7157
  dependencies:
7158
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7159
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
 
 
7160
  react: 18.3.1
7161
  react-dom: 18.3.1([email protected])
7162
+ optionalDependencies:
7163
+ '@types/react': 18.3.12
7164
+ '@types/react-dom': 18.3.1
7165
 
7166
7167
  dependencies:
7168
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7169
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
 
 
7170
  react: 18.3.1
7171
  react-dom: 18.3.1([email protected])
7172
+ optionalDependencies:
7173
+ '@types/react': 18.3.12
7174
+ '@types/react-dom': 18.3.1
7175
 
7176
7177
  dependencies:
7178
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
 
 
7179
  react: 18.3.1
7180
  react-dom: 18.3.1([email protected])
7181
+ optionalDependencies:
7182
+ '@types/react': 18.3.12
7183
+ '@types/react-dom': 18.3.1
7184
 
7185
7186
  dependencies:
7187
  '@radix-ui/primitive': 1.1.0
7188
+ '@radix-ui/react-collection': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7189
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7190
  '@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
7191
  '@radix-ui/react-direction': 1.1.0(@types/[email protected])([email protected])
7192
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7193
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7194
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
7195
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
 
 
7196
  react: 18.3.1
7197
  react-dom: 18.3.1([email protected])
7198
+ optionalDependencies:
 
 
 
7199
  '@types/react': 18.3.12
7200
  '@types/react-dom': 18.3.1
7201
+
7202
7203
+ dependencies:
7204
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7205
  react: 18.3.1
7206
  react-dom: 18.3.1([email protected])
7207
+ optionalDependencies:
7208
+ '@types/react': 18.3.12
7209
+ '@types/react-dom': 18.3.1
7210
 
7211
7212
  dependencies:
7213
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7214
+ react: 18.3.1
7215
+ optionalDependencies:
7216
  '@types/react': 18.3.12
7217
+
7218
7219
+ dependencies:
7220
+ '@radix-ui/primitive': 1.1.0
7221
+ '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7222
+ '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7223
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7224
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
7225
+ '@radix-ui/react-use-previous': 1.1.0(@types/[email protected])([email protected])
7226
+ '@radix-ui/react-use-size': 1.1.0(@types/[email protected])([email protected])
7227
  react: 18.3.1
7228
+ react-dom: 18.3.1([email protected])
7229
+ optionalDependencies:
7230
+ '@types/react': 18.3.12
7231
+ '@types/react-dom': 18.3.1
7232
 
7233
7234
  dependencies:
7235
  '@radix-ui/primitive': 1.1.0
7236
  '@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
7237
  '@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
7238
+ '@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7239
  '@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
7240
7241
7242
+ '@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7243
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
7244
  '@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
7245
  '@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
7246
+ '@radix-ui/react-visually-hidden': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
 
 
7247
  react: 18.3.1
7248
  react-dom: 18.3.1([email protected])
7249
+ optionalDependencies:
7250
+ '@types/react': 18.3.12
7251
+ '@types/react-dom': 18.3.1
7252
 
7253
7254
  dependencies:
 
7255
  react: 18.3.1
7256
+ optionalDependencies:
7257
+ '@types/react': 18.3.12
7258
 
7259
7260
  dependencies:
7261
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
 
7262
  react: 18.3.1
7263
+ optionalDependencies:
7264
+ '@types/react': 18.3.12
7265
 
7266
7267
  dependencies:
7268
  '@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
 
7269
  react: 18.3.1
7270
+ optionalDependencies:
7271
+ '@types/react': 18.3.12
7272
 
7273
7274
  dependencies:
7275
+ react: 18.3.1
7276
+ optionalDependencies:
7277
  '@types/react': 18.3.12
7278
+
7279
7280
+ dependencies:
7281
  react: 18.3.1
7282
+ optionalDependencies:
7283
+ '@types/react': 18.3.12
7284
 
7285
7286
  dependencies:
7287
  '@radix-ui/rect': 1.1.0
 
7288
  react: 18.3.1
7289
+ optionalDependencies:
7290
+ '@types/react': 18.3.12
7291
 
7292
7293
  dependencies:
7294
  '@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
 
7295
  react: 18.3.1
7296
+ optionalDependencies:
7297
+ '@types/react': 18.3.12
7298
 
7299
7300
  dependencies:
7301
+ '@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
 
 
7302
  react: 18.3.1
7303
  react-dom: 18.3.1([email protected])
7304
+ optionalDependencies:
7305
+ '@types/react': 18.3.12
7306
+ '@types/react-dom': 18.3.1
7307
 
7308
  '@radix-ui/[email protected]': {}
7309
 
 
7311
  dependencies:
7312
  '@cloudflare/workers-types': 4.20241127.0
7313
  '@remix-run/cloudflare': 2.15.0(@cloudflare/[email protected])([email protected])
7314
+ optionalDependencies:
7315
  typescript: 5.7.2
7316
 
7317
 
7319
  '@cloudflare/kv-asset-handler': 0.1.3
7320
  '@cloudflare/workers-types': 4.20241127.0
7321
  '@remix-run/server-runtime': 2.15.0([email protected])
7322
+ optionalDependencies:
7323
  typescript: 5.7.2
7324
 
7325
7326
  dependencies:
7327
  '@babel/core': 7.26.0
7328
  '@babel/generator': 7.26.2
 
7335
  '@mdx-js/mdx': 2.3.0
7336
  '@npmcli/package-json': 4.0.1
7337
  '@remix-run/node': 2.15.0([email protected])
7338
7339
  '@remix-run/router': 1.21.0
7340
  '@remix-run/server-runtime': 2.15.0([email protected])
7341
  '@types/mdx': 2.0.13
7342
+ '@vanilla-extract/integration': 6.5.0(@types/[email protected])([email protected])
7343
  arg: 5.0.2
7344
  cacache: 17.1.4
7345
  chalk: 4.1.2
 
7377
  set-cookie-parser: 2.7.1
7378
  tar-fs: 2.1.1
7379
  tsconfig-paths: 4.2.0
 
7380
  valibot: 0.41.0([email protected])
7381
+ vite-node: 1.6.0(@types/[email protected])([email protected])
 
 
7382
  ws: 7.5.10
7383
+ optionalDependencies:
7384
+ typescript: 5.7.2
7385
+ vite: 5.4.11(@types/[email protected])([email protected])
7386
+ wrangler: 3.91.0(@cloudflare/[email protected])
7387
  transitivePeerDependencies:
7388
  - '@types/node'
7389
  - babel-plugin-macros
 
7408
  cookie-signature: 1.2.2
7409
  source-map-support: 0.5.21
7410
  stream-slice: 0.1.2
 
7411
  undici: 6.21.0
7412
+ optionalDependencies:
7413
+ typescript: 5.7.2
7414
 
7415
7416
  dependencies:
7417
  '@remix-run/router': 1.21.0
7418
  '@remix-run/server-runtime': 2.15.0([email protected])
7419
  react: 18.3.1
7420
  react-dom: 18.3.1([email protected])
7421
  react-router: 6.28.0([email protected])
7422
7423
  turbo-stream: 2.4.0
7424
+ optionalDependencies:
7425
  typescript: 5.7.2
7426
 
7427
  '@remix-run/[email protected]': {}
 
7435
  set-cookie-parser: 2.7.1
7436
  source-map: 0.7.4
7437
  turbo-stream: 2.4.0
7438
+ optionalDependencies:
7439
  typescript: 5.7.2
7440
 
7441
  '@remix-run/[email protected]':
 
7466
  dependencies:
7467
  web-streams-polyfill: 3.3.3
7468
 
7469
7470
  dependencies:
7471
+ '@rollup/pluginutils': 5.1.3([email protected])
7472
  estree-walker: 2.0.2
7473
  magic-string: 0.30.14
7474
+ optionalDependencies:
7475
+ rollup: 4.28.0
7476
 
7477
7478
  dependencies:
7479
  '@types/estree': 1.0.6
7480
  estree-walker: 2.0.2
7481
  picomatch: 4.0.2
7482
+ optionalDependencies:
7483
+ rollup: 4.28.0
7484
 
7485
  '@rollup/[email protected]':
7486
  optional: true
 
7563
 
7564
  '@shikijs/[email protected]': {}
7565
 
7566
7567
  dependencies:
7568
+ '@typescript-eslint/utils': 8.17.0([email protected]([email protected]))([email protected])
7569
+ eslint: 9.16.0([email protected])
7570
  eslint-visitor-keys: 4.2.0
7571
  espree: 10.3.0
7572
  transitivePeerDependencies:
 
7587
 
7588
  '@types/[email protected]': {}
7589
 
 
7590
  '@types/[email protected]': {}
7591
 
7592
  '@types/[email protected]':
 
7650
 
7651
  '@types/[email protected]': {}
7652
 
7653
7654
  dependencies:
7655
  '@eslint-community/regexpp': 4.12.1
7656
+ '@typescript-eslint/parser': 8.17.0([email protected]([email protected]))([email protected])
7657
  '@typescript-eslint/scope-manager': 8.17.0
7658
+ '@typescript-eslint/type-utils': 8.17.0([email protected]([email protected]))([email protected])
7659
+ '@typescript-eslint/utils': 8.17.0([email protected]([email protected]))([email protected])
7660
  '@typescript-eslint/visitor-keys': 8.17.0
7661
+ eslint: 9.16.0([email protected])
7662
  graphemer: 1.4.0
7663
  ignore: 5.3.2
7664
  natural-compare: 1.4.0
7665
  ts-api-utils: 1.4.3([email protected])
7666
+ optionalDependencies:
7667
  typescript: 5.7.2
7668
  transitivePeerDependencies:
7669
  - supports-color
7670
 
7671
7672
  dependencies:
7673
  '@typescript-eslint/scope-manager': 8.17.0
7674
  '@typescript-eslint/types': 8.17.0
7675
  '@typescript-eslint/typescript-estree': 8.17.0([email protected])
7676
  '@typescript-eslint/visitor-keys': 8.17.0
7677
  debug: 4.3.7
7678
+ eslint: 9.16.0([email protected])
7679
+ optionalDependencies:
7680
  typescript: 5.7.2
7681
  transitivePeerDependencies:
7682
  - supports-color
 
7686
  '@typescript-eslint/types': 8.17.0
7687
  '@typescript-eslint/visitor-keys': 8.17.0
7688
 
7689
7690
  dependencies:
7691
  '@typescript-eslint/typescript-estree': 8.17.0([email protected])
7692
+ '@typescript-eslint/utils': 8.17.0([email protected]([email protected]))([email protected])
7693
  debug: 4.3.7
7694
+ eslint: 9.16.0([email protected])
7695
  ts-api-utils: 1.4.3([email protected])
7696
+ optionalDependencies:
7697
  typescript: 5.7.2
7698
  transitivePeerDependencies:
7699
  - supports-color
 
7710
  minimatch: 9.0.5
7711
  semver: 7.6.3
7712
  ts-api-utils: 1.4.3([email protected])
7713
+ optionalDependencies:
7714
  typescript: 5.7.2
7715
  transitivePeerDependencies:
7716
  - supports-color
7717
 
7718
7719
  dependencies:
7720
+ '@eslint-community/eslint-utils': 4.4.1([email protected]([email protected]))
7721
  '@typescript-eslint/scope-manager': 8.17.0
7722
  '@typescript-eslint/types': 8.17.0
7723
  '@typescript-eslint/typescript-estree': 8.17.0([email protected])
7724
+ eslint: 9.16.0([email protected])
7725
+ optionalDependencies:
7726
  typescript: 5.7.2
7727
  transitivePeerDependencies:
7728
  - supports-color
 
7748
 
7749
  '@ungap/[email protected]': {}
7750
 
7751
7752
  dependencies:
7753
  '@unocss/core': 0.61.9
7754
  '@unocss/reset': 0.61.9
7755
7756
+ optionalDependencies:
7757
+ vite: 5.4.11(@types/[email protected])([email protected])
7758
  transitivePeerDependencies:
7759
  - rollup
7760
  - supports-color
7761
 
7762
7763
  dependencies:
7764
  '@ampproject/remapping': 2.3.0
7765
+ '@rollup/pluginutils': 5.1.3([email protected])
7766
  '@unocss/config': 0.61.9
7767
  '@unocss/core': 0.61.9
7768
  '@unocss/preset-uno': 0.61.9
 
7891
  dependencies:
7892
  '@unocss/core': 0.61.9
7893
 
7894
7895
  dependencies:
7896
  '@ampproject/remapping': 2.3.0
7897
+ '@rollup/pluginutils': 5.1.3([email protected])
7898
  '@unocss/config': 0.61.9
7899
  '@unocss/core': 0.61.9
7900
  '@unocss/inspector': 0.61.9
 
7903
  chokidar: 3.6.0
7904
  fast-glob: 3.3.2
7905
  magic-string: 0.30.14
7906
+ vite: 5.4.11(@types/[email protected])([email protected])
7907
  transitivePeerDependencies:
7908
  - rollup
7909
  - supports-color
 
7931
  transitivePeerDependencies:
7932
  - babel-plugin-macros
7933
 
7934
7935
  dependencies:
7936
  '@babel/core': 7.26.0
7937
  '@babel/plugin-syntax-typescript': 7.25.9(@babel/[email protected])
 
7944
  lodash: 4.17.21
7945
  mlly: 1.7.3
7946
  outdent: 0.8.0
7947
+ vite: 5.4.11(@types/[email protected])([email protected])
7948
+ vite-node: 1.6.0(@types/[email protected])([email protected])
7949
  transitivePeerDependencies:
7950
  - '@types/node'
7951
  - babel-plugin-macros
 
7967
  chai: 5.1.2
7968
  tinyrainbow: 1.2.0
7969
 
7970
7971
  dependencies:
7972
  '@vitest/spy': 2.1.8
7973
  estree-walker: 3.0.3
7974
  magic-string: 0.30.14
7975
+ optionalDependencies:
7976
+ vite: 5.4.11(@types/[email protected])([email protected])
7977
 
7978
  '@vitest/[email protected]':
7979
  dependencies:
 
8046
  '@vue/shared': 3.5.13
8047
  csstype: 3.1.3
8048
 
8049
8050
  dependencies:
8051
  '@vue/compiler-ssr': 3.5.13
8052
  '@vue/shared': 3.5.13
 
8099
  clean-stack: 2.2.0
8100
  indent-string: 4.0.0
8101
 
8102
8103
  dependencies:
8104
  '@ai-sdk/provider': 0.0.26
8105
  '@ai-sdk/provider-utils': 1.0.22([email protected])
 
8107
  '@ai-sdk/solid': 0.0.54([email protected])
8108
  '@ai-sdk/svelte': 0.0.57([email protected])([email protected])
8109
  '@ai-sdk/ui-utils': 0.0.50([email protected])
8110
8111
  '@opentelemetry/api': 1.9.0
8112
  eventsource-parser: 1.1.2
8113
  json-schema: 0.4.0
8114
  jsondiffpatch: 0.6.0
 
8115
  secure-json-parse: 2.7.0
8116
+ zod-to-json-schema: 3.23.5([email protected])
8117
+ optionalDependencies:
8118
+ react: 18.3.1
8119
+ sswr: 2.1.0([email protected])
8120
  svelte: 5.4.0
8121
  zod: 3.23.8
 
8122
  transitivePeerDependencies:
8123
  - solid-js
8124
  - vue
 
8797
 
8798
8799
 
8800
8801
  dependencies:
8802
+ eslint: 9.16.0([email protected])
8803
  semver: 7.6.3
8804
 
8805
8806
  dependencies:
8807
+ eslint: 9.16.0([email protected])
8808
 
8809
8810
  dependencies:
8811
+ eslint: 9.16.0([email protected])
8812
  esquery: 1.6.0
8813
  jsonc-eslint-parser: 2.4.0
8814
 
8815
8816
  dependencies:
8817
+ '@eslint-community/eslint-utils': 4.4.1([email protected]([email protected]))
8818
+ eslint: 9.16.0([email protected])
8819
+ eslint-compat-utils: 0.6.4([email protected]([email protected]))
8820
+ eslint-json-compat-utils: 0.2.1([email protected]([email protected]))([email protected])
8821
  espree: 9.6.1
8822
  graphemer: 1.4.0
8823
  jsonc-eslint-parser: 2.4.0
 
8826
  transitivePeerDependencies:
8827
  - '@eslint/json'
8828
 
8829
8830
  dependencies:
8831
+ eslint: 9.16.0([email protected])
 
8832
  prettier: 3.4.1
8833
  prettier-linter-helpers: 1.0.0
8834
  synckit: 0.9.2
8835
+ optionalDependencies:
8836
+ '@types/eslint': 8.56.10
8837
+ eslint-config-prettier: 9.1.0([email protected]([email protected]))
8838
 
8839
8840
  dependencies:
 
8845
 
8846
8847
 
8848
8849
  dependencies:
8850
+ '@eslint-community/eslint-utils': 4.4.1([email protected]([email protected]))
8851
  '@eslint-community/regexpp': 4.12.1
8852
  '@eslint/config-array': 0.19.0
8853
  '@eslint/core': 0.9.0
 
8881
  minimatch: 3.1.2
8882
  natural-compare: 1.4.0
8883
  optionator: 0.9.4
8884
+ optionalDependencies:
8885
+ jiti: 1.21.6
8886
  transitivePeerDependencies:
8887
  - supports-color
8888
 
 
9110
 
9111
9112
 
9113
9114
  dependencies:
9115
+ tslib: 2.8.1
9116
+ optionalDependencies:
9117
  react: 18.3.1
9118
  react-dom: 18.3.1([email protected])
 
9119
 
9120
9121
 
 
10597
  '@ai-sdk/provider': 0.0.24
10598
  '@ai-sdk/provider-utils': 1.0.20([email protected])
10599
  partial-json: 0.1.7
10600
+ optionalDependencies:
10601
  zod: 3.23.8
10602
 
10603
 
10771
10772
  dependencies:
10773
  lilconfig: 3.1.2
 
10774
  yaml: 2.6.1
10775
+ optionalDependencies:
10776
+ postcss: 8.4.49
10777
 
10778
10779
  dependencies:
 
10922
  react: 18.3.1
10923
  scheduler: 0.23.2
10924
 
10925
10926
  dependencies:
10927
  react: 18.3.1
10928
  react-dom: 18.3.1([email protected])
 
10948
 
10949
10950
  dependencies:
 
10951
  react: 18.3.1
10952
  react-style-singleton: 2.2.1(@types/[email protected])([email protected])
10953
  tslib: 2.8.1
10954
+ optionalDependencies:
10955
+ '@types/react': 18.3.12
10956
 
10957
10958
  dependencies:
 
10959
  react: 18.3.1
10960
  react-remove-scroll-bar: 2.3.6(@types/[email protected])([email protected])
10961
  react-style-singleton: 2.2.1(@types/[email protected])([email protected])
10962
  tslib: 2.8.1
10963
  use-callback-ref: 1.3.2(@types/[email protected])([email protected])
10964
  use-sidecar: 1.1.2(@types/[email protected])([email protected])
10965
+ optionalDependencies:
10966
+ '@types/react': 18.3.12
10967
 
10968
10969
  dependencies:
10970
  react: 18.3.1
10971
  react-dom: 18.3.1([email protected])
10972
 
10973
10974
  dependencies:
10975
  '@remix-run/router': 1.21.0
10976
  react: 18.3.1
 
10984
 
10985
10986
  dependencies:
 
10987
  get-nonce: 1.0.1
10988
  invariant: 2.2.4
10989
  react: 18.3.1
10990
  tslib: 2.8.1
10991
+ optionalDependencies:
10992
+ '@types/react': 18.3.12
10993
 
10994
10995
  dependencies:
10996
  clsx: 2.1.1
10997
  react: 18.3.1
 
11116
  mdast-util-to-markdown: 2.1.2
11117
  unified: 11.0.5
11118
 
11119
11120
  dependencies:
11121
11122
  '@remix-run/server-runtime': 2.15.0([email protected])
11123
  react: 18.3.1
11124
  react-dom: 18.3.1([email protected])
11125
 
11126
11127
  dependencies:
11128
+ type-fest: 4.30.0
11129
+ optionalDependencies:
11130
  '@remix-run/cloudflare': 2.15.0(@cloudflare/[email protected])([email protected])
11131
+ '@remix-run/node': 2.15.0([email protected])
11132
11133
+ '@remix-run/router': 1.21.0
11134
  react: 18.3.1
 
11135
  zod: 3.23.8
11136
 
11137
 
11566
 
11567
11568
 
11569
11570
  dependencies:
11571
  vue: 3.5.13([email protected])
11572
 
 
11653
  typescript: 5.7.2
11654
 
11655
11656
+ optionalDependencies:
11657
  typescript: 5.7.2
11658
 
11659
 
11686
  media-typer: 0.3.0
11687
  mime-types: 2.1.35
11688
 
11689
11690
  dependencies:
11691
11692
+ '@typescript-eslint/parser': 8.17.0([email protected]([email protected]))([email protected])
11693
+ '@typescript-eslint/utils': 8.17.0([email protected]([email protected]))([email protected])
11694
+ eslint: 9.16.0([email protected])
11695
+ optionalDependencies:
11696
  typescript: 5.7.2
11697
  transitivePeerDependencies:
11698
  - supports-color
 
11813
 
11814
11815
 
11816
11817
  dependencies:
11818
11819
+ '@unocss/cli': 0.61.9([email protected])
11820
  '@unocss/core': 0.61.9
11821
  '@unocss/extractor-arbitrary-variants': 0.61.9
11822
  '@unocss/postcss': 0.61.9([email protected])
 
11834
  '@unocss/transformer-compile-class': 0.61.9
11835
  '@unocss/transformer-directives': 0.61.9
11836
  '@unocss/transformer-variant-group': 0.61.9
11837
11838
+ optionalDependencies:
11839
+ vite: 5.4.11(@types/[email protected])([email protected])
11840
  transitivePeerDependencies:
11841
  - postcss
11842
  - rollup
 
11861
 
11862
11863
  dependencies:
 
11864
  react: 18.3.1
11865
  tslib: 2.8.1
11866
+ optionalDependencies:
11867
+ '@types/react': 18.3.12
11868
 
11869
11870
  dependencies:
 
11871
  detect-node-es: 1.1.0
11872
  react: 18.3.1
11873
  tslib: 2.8.1
11874
+ optionalDependencies:
11875
+ '@types/react': 18.3.12
11876
 
11877
11878
  dependencies:
 
11898
  sade: 1.8.1
11899
 
11900
11901
+ optionalDependencies:
11902
  typescript: 5.7.2
11903
 
11904
 
11941
  '@types/unist': 3.0.3
11942
  vfile-message: 4.0.2
11943
 
11944
11945
  dependencies:
11946
  cac: 6.7.14
11947
  debug: 4.3.7
11948
  pathe: 1.1.2
11949
  picocolors: 1.1.1
11950
+ vite: 5.4.11(@types/[email protected])([email protected])
11951
  transitivePeerDependencies:
11952
  - '@types/node'
11953
  - less
 
11959
  - supports-color
11960
  - terser
11961
 
11962
11963
  dependencies:
11964
  cac: 6.7.14
11965
  debug: 4.3.7
11966
  es-module-lexer: 1.5.4
11967
  pathe: 1.1.2
11968
+ vite: 5.4.11(@types/[email protected])([email protected])
11969
  transitivePeerDependencies:
11970
  - '@types/node'
11971
  - less
 
11977
  - supports-color
11978
  - terser
11979
 
11980
11981
  dependencies:
11982
+ '@rollup/plugin-inject': 5.0.5([email protected])
11983
  node-stdlib-browser: 1.3.0
11984
+ vite: 5.4.11(@types/[email protected])([email protected])
11985
  transitivePeerDependencies:
11986
  - rollup
11987
 
11988
11989
  dependencies:
11990
+ vite: 5.4.11(@types/[email protected])([email protected])
11991
 
11992
11993
  dependencies:
11994
  debug: 4.3.7
11995
  globrex: 0.1.2
11996
  tsconfck: 3.1.4([email protected])
11997
+ optionalDependencies:
11998
+ vite: 5.4.11(@types/[email protected])([email protected])
11999
  transitivePeerDependencies:
12000
  - supports-color
12001
  - typescript
12002
 
12003
12004
  dependencies:
12005
  esbuild: 0.21.5
12006
  postcss: 8.4.49
12007
  rollup: 4.28.0
 
12008
  optionalDependencies:
12009
+ '@types/node': 22.10.1
12010
  fsevents: 2.3.3
12011
+ sass-embedded: 1.81.0
12012
 
12013
12014
  dependencies:
12015
  '@vitest/expect': 2.1.8
12016
+ '@vitest/mocker': 2.1.8([email protected](@types/[email protected])([email protected]))
12017
  '@vitest/pretty-format': 2.1.8
12018
  '@vitest/runner': 2.1.8
12019
  '@vitest/snapshot': 2.1.8
 
12029
  tinyexec: 0.3.1
12030
  tinypool: 1.0.2
12031
  tinyrainbow: 1.2.0
12032
+ vite: 5.4.11(@types/[email protected])([email protected])
12033
+ vite-node: 2.1.8(@types/[email protected])([email protected])
12034
  why-is-node-running: 2.3.0
12035
+ optionalDependencies:
12036
+ '@types/node': 22.10.1
12037
  transitivePeerDependencies:
12038
  - less
12039
  - lightningcss
 
12052
  '@vue/compiler-dom': 3.5.13
12053
  '@vue/compiler-sfc': 3.5.13
12054
  '@vue/runtime-dom': 3.5.13
12055
+ '@vue/server-renderer': 3.5.13([email protected]([email protected]))
12056
  '@vue/shared': 3.5.13
12057
+ optionalDependencies:
12058
  typescript: 5.7.2
12059
 
12060
 
12108
  dependencies:
12109
  '@cloudflare/kv-asset-handler': 0.3.4
12110
  '@cloudflare/workers-shared': 0.9.0
 
12111
  '@esbuild-plugins/node-globals-polyfill': 0.2.3([email protected])
12112
  '@esbuild-plugins/node-modules-polyfill': 0.2.2([email protected])
12113
  blake3-wasm: 2.1.5
 
12126
  workerd: 1.20241106.1
12127
  xxhash-wasm: 1.1.0
12128
  optionalDependencies:
12129
+ '@cloudflare/workers-types': 4.20241127.0
12130
  fsevents: 2.3.3
12131
  transitivePeerDependencies:
12132
  - bufferutil