From 5731d672a3360f76963e12325e219807581913aa Mon Sep 17 00:00:00 2001 From: Grant Forrest Date: Sat, 30 Mar 2024 14:08:10 -0400 Subject: [PATCH] fix some trip tick ui --- .../components/settings/ColorModeSelect.tsx | 38 ------ apps/gnocchi/web/src/darkMode.ts | 59 ---------- apps/gnocchi/web/src/main.tsx | 35 +++--- apps/gnocchi/web/src/pages/PlanPage.tsx | 10 +- apps/trip-tick/web/index.html | 10 +- apps/trip-tick/web/package.json | 2 +- .../web/src/components/brand/Logo.tsx | 9 ++ .../web/src/components/lists/ListEditor.tsx | 56 +++++---- .../web/src/components/lists/ListsList.tsx | 2 +- .../web/src/components/nav/Navigation.tsx | 9 +- .../src/components/trips/AddTripButton.tsx | 12 +- .../src/components/trips/TripDateRange.tsx | 4 +- .../web/src/components/trips/TripView.tsx | 7 +- .../web/src/components/trips/TripsList.tsx | 71 +++++++++--- .../web/src/components/ui/ToggleGroup.tsx | 4 +- apps/trip-tick/web/src/main.tsx | 1 + apps/trip-tick/web/src/pages/Pages.tsx | 4 + apps/trip-tick/web/src/pages/SettingsPage.tsx | 18 +++ packages/apps/src/index.ts | 4 +- .../client/src/components/DarkModeToggle.tsx | 38 ++++++ packages/client/src/components/index.ts | 1 + packages/client/src/darkMode.ts | 59 ++++++++++ packages/client/src/graphql-env.d.ts | 4 +- packages/client/src/index.ts | 1 + pnpm-lock.yaml | 108 +++++++++--------- 25 files changed, 331 insertions(+), 235 deletions(-) delete mode 100644 apps/gnocchi/web/src/components/settings/ColorModeSelect.tsx delete mode 100644 apps/gnocchi/web/src/darkMode.ts create mode 100644 apps/trip-tick/web/src/components/brand/Logo.tsx create mode 100644 apps/trip-tick/web/src/pages/SettingsPage.tsx create mode 100644 packages/client/src/components/DarkModeToggle.tsx create mode 100644 packages/client/src/darkMode.ts diff --git a/apps/gnocchi/web/src/components/settings/ColorModeSelect.tsx b/apps/gnocchi/web/src/components/settings/ColorModeSelect.tsx deleted file mode 100644 index 79d297a4..00000000 --- a/apps/gnocchi/web/src/components/settings/ColorModeSelect.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { - getColorMode, - setColorMode, - subscribeToColorModeChange, -} from '@/darkMode.js'; -import { - Select, - SelectContent, - SelectIcon, - SelectItem, - SelectTrigger, - SelectValue, -} from '@a-type/ui/components/select'; -import { useEffect, useState } from 'react'; - -export function ColorModeSelect() { - const [colorMode, setColorModeInternal] = useState< - 'light' | 'dark' | 'system' - >(getColorMode); - useEffect(() => subscribeToColorModeChange(setColorModeInternal), []); - - return ( -
- Color theme: - -
- ); -} diff --git a/apps/gnocchi/web/src/darkMode.ts b/apps/gnocchi/web/src/darkMode.ts deleted file mode 100644 index 30f323e7..00000000 --- a/apps/gnocchi/web/src/darkMode.ts +++ /dev/null @@ -1,59 +0,0 @@ -export function setColorMode(mode: 'system' | 'light' | 'dark') { - if (mode === 'system') { - window.localStorage.removeItem('colorMode'); - } else { - window.localStorage.setItem('colorMode', mode); - } - window.dispatchEvent(new Event('colorModeChanged')); -} - -const updateMode = () => { - const mode = window.localStorage.getItem('colorMode'); - document.documentElement.classList.remove('override-light', 'override-dark'); - if (mode) { - document.documentElement.classList.add('override-' + mode); - } - - // determine final mode, even if it's system - const finalMode = - mode || - (window.matchMedia('(prefers-color-scheme: dark)').matches - ? 'dark' - : 'light'); - // set the status bar color in pwas - const iosStatusBarColor = document.querySelector( - 'meta[name=apple-mobile-web-app-status-bar-style]', - ); - const androidStatusBarColor = document.querySelector( - 'meta[name=theme-color]', - ); - - if (finalMode === 'dark') { - iosStatusBarColor?.setAttribute('content', 'black'); - androidStatusBarColor?.setAttribute('content', '#000000'); - } - if (finalMode === 'light') { - iosStatusBarColor?.setAttribute('content', 'white'); - androidStatusBarColor?.setAttribute('content', '#ffffff'); - } -}; -updateMode(); - -// listen for changes and apply an override-mode to the html -window.addEventListener('colorModeChanged', updateMode); - -export function getColorMode(): 'system' | 'light' | 'dark' { - return (window.localStorage.getItem('colorMode') as any) || 'system'; -} - -export function subscribeToColorModeChange( - callback: (mode: 'system' | 'light' | 'dark') => void, -) { - const update = () => callback(getColorMode()); - window.addEventListener('colorModeChanged', update); - return () => { - window.removeEventListener('colorModeChanged', update); - }; -} - -(window as any).setColorMode = setColorMode; diff --git a/apps/gnocchi/web/src/main.tsx b/apps/gnocchi/web/src/main.tsx index ff62ced5..fa38e73e 100644 --- a/apps/gnocchi/web/src/main.tsx +++ b/apps/gnocchi/web/src/main.tsx @@ -1,5 +1,4 @@ import 'virtual:uno.css'; -import './darkMode.js'; import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import { App } from './App.js'; @@ -7,18 +6,18 @@ import { attachToPwaEvents } from './pwaEventListener.js'; import { requestPersistentStorage } from '@/lib/platform.js'; if (!import.meta.env.DEV) { - import('@vercel/analytics').then((mod) => { - mod.inject(); - }); + import('@vercel/analytics').then((mod) => { + mod.inject(); + }); } function main() { - const root = createRoot(document.getElementById('root')!); - root.render( - - - , - ); + const root = createRoot(document.getElementById('root')!); + root.render( + + + , + ); } main(); @@ -27,13 +26,13 @@ attachToPwaEvents(); requestPersistentStorage(); function debugUno() { - setTimeout( - () => - navigator.clipboard.writeText( - document.querySelector('[data-vite-dev-id="/__uno.css"]') - ?.textContent ?? 'failed to copy', - ), - 3000, - ); + setTimeout( + () => + navigator.clipboard.writeText( + document.querySelector('[data-vite-dev-id="/__uno.css"]') + ?.textContent ?? 'failed to copy', + ), + 3000, + ); } (window as any).debugUno = debugUno; diff --git a/apps/gnocchi/web/src/pages/PlanPage.tsx b/apps/gnocchi/web/src/pages/PlanPage.tsx index e281ed96..4a0de788 100644 --- a/apps/gnocchi/web/src/pages/PlanPage.tsx +++ b/apps/gnocchi/web/src/pages/PlanPage.tsx @@ -2,7 +2,6 @@ import { Icon } from '@/components/icons/Icon.jsx'; import { BugButton } from '@/components/menu/BugButton.jsx'; import { ManageCategoriesDialog } from '@/components/menu/ManageCategoriesDialog.jsx'; import { TextLink } from '@/components/nav/Link.jsx'; -import { ColorModeSelect } from '@/components/settings/ColorModeSelect.jsx'; import { ReloadButton } from '@/components/sync/ReloadButton.jsx'; import { UpdatePrompt } from '@/components/updatePrompt/UpdatePrompt.jsx'; import { checkForUpdate } from '@/components/updatePrompt/updateState.js'; @@ -24,6 +23,7 @@ import { useCanSync, useIsOffline, useMe, + DarkModeToggle, } from '@biscuits/client'; import { ArrowRightIcon } from '@radix-ui/react-icons'; import { ReactNode, useEffect } from 'react'; @@ -101,7 +101,7 @@ function OfflineContents() { return ( - + @@ -117,7 +117,7 @@ function AnonymousContents() { return ( - +
@@ -145,7 +145,7 @@ function UnsubscribedContents() { return ( - +
Subscription inactive
@@ -163,7 +163,7 @@ function OnlineContents() { return ( - +

Collaborate

diff --git a/apps/trip-tick/web/index.html b/apps/trip-tick/web/index.html index ef991a58..50f1d370 100644 --- a/apps/trip-tick/web/index.html +++ b/apps/trip-tick/web/index.html @@ -1,11 +1,11 @@ - + - packing-list + Trip Tick @@ -20,14 +20,14 @@ property="og:image:alt" content="" /> --> - + - + - + diff --git a/apps/trip-tick/web/package.json b/apps/trip-tick/web/package.json index 26e0d618..3c313964 100644 --- a/apps/trip-tick/web/package.json +++ b/apps/trip-tick/web/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "@a-type/ui": "^0.6.17", + "@a-type/ui": "^0.6.21", "@a-type/utils": "^1.0.6", "@biscuits/client": "workspace:*", "@radix-ui/react-progress": "^1.0.3", diff --git a/apps/trip-tick/web/src/components/brand/Logo.tsx b/apps/trip-tick/web/src/components/brand/Logo.tsx new file mode 100644 index 00000000..40040d32 --- /dev/null +++ b/apps/trip-tick/web/src/components/brand/Logo.tsx @@ -0,0 +1,9 @@ +export interface LogoProps { + className?: string; +} + +export function Logo({ className }: LogoProps) { + return ( + Trip Tick icon + ); +} diff --git a/apps/trip-tick/web/src/components/lists/ListEditor.tsx b/apps/trip-tick/web/src/components/lists/ListEditor.tsx index 1f352875..ddbeb981 100644 --- a/apps/trip-tick/web/src/components/lists/ListEditor.tsx +++ b/apps/trip-tick/web/src/components/lists/ListEditor.tsx @@ -18,6 +18,7 @@ import { CollapsibleTrigger, } from '@a-type/ui/components/collapsible'; import { Icon } from '@a-type/ui/components/icon'; +import { H2 } from '@a-type/ui/components/typography'; export interface ListEditorProps { list: List; @@ -27,12 +28,18 @@ export function ListEditor({ list }: ListEditorProps) { const { name } = hooks.useWatch(list); return ( -
- list.set('name', name)} - className="h-auto" - /> +
+
+ + list.set('name', name)} + className="h-auto" + id="name" + /> +
); @@ -43,21 +50,24 @@ function ListItemsEditor({ list }: { list: List }) { hooks.useWatch(items); return ( -
    - {items.map((item) => ( -
  • - { - items.removeAll(item); - }} - /> +
    +

    Items

    +
      + {items.map((item) => ( +
    • + { + items.removeAll(item); + }} + /> +
    • + ))} +
    • +
    • - ))} -
    • - -
    • -
    +
+
); } @@ -124,7 +134,7 @@ function ListItemEditor({ day{perDays === 1 ? '' : 's'}
) : ( -
+
trip diff --git a/apps/trip-tick/web/src/components/lists/ListsList.tsx b/apps/trip-tick/web/src/components/lists/ListsList.tsx index 23dd0988..ce9afd5f 100644 --- a/apps/trip-tick/web/src/components/lists/ListsList.tsx +++ b/apps/trip-tick/web/src/components/lists/ListsList.tsx @@ -76,7 +76,7 @@ function ListsListItemMenu({ list }: { list: List }) { )); }} > - Delete + Delete list diff --git a/apps/trip-tick/web/src/components/nav/Navigation.tsx b/apps/trip-tick/web/src/components/nav/Navigation.tsx index bc8f92dd..7b6085d7 100644 --- a/apps/trip-tick/web/src/components/nav/Navigation.tsx +++ b/apps/trip-tick/web/src/components/nav/Navigation.tsx @@ -9,6 +9,7 @@ import { } from '@a-type/ui/components/navBar'; import { useState } from 'react'; import { AppPicker, AppPickerNavItem } from '@biscuits/client'; +import { Logo } from '../brand/Logo.jsx'; export interface NavigationProps {} @@ -19,7 +20,13 @@ export function Navigation({}: NavigationProps) { const matchLists = pathname.startsWith('/lists'); return ( - + +
+

+ Trip Tick +

+ +
- New trip + {children} ); } diff --git a/apps/trip-tick/web/src/components/trips/TripDateRange.tsx b/apps/trip-tick/web/src/components/trips/TripDateRange.tsx index 26d151e1..2e13c85b 100644 --- a/apps/trip-tick/web/src/components/trips/TripDateRange.tsx +++ b/apps/trip-tick/web/src/components/trips/TripDateRange.tsx @@ -1,6 +1,6 @@ import { hooks } from '@/store.js'; import { Button } from '@a-type/ui/components/button'; -import { Trip } from '@packing-list/verdant'; +import { Trip } from '@trip-tick.biscuits/verdant'; import { Popover, PopoverTrigger, @@ -64,7 +64,7 @@ export function TripDateRange({ trip }: TripDateRangeProps) { {displayString} - + diff --git a/apps/trip-tick/web/src/components/trips/TripView.tsx b/apps/trip-tick/web/src/components/trips/TripView.tsx index 33e8cc1f..9b735d12 100644 --- a/apps/trip-tick/web/src/components/trips/TripView.tsx +++ b/apps/trip-tick/web/src/components/trips/TripView.tsx @@ -119,12 +119,15 @@ function TripViewChecklists({ trip }: { trip: Trip }) {
)} @@ -43,6 +78,8 @@ export function TripsList({}: TripsListProps) { function TripsListItem({ trip }: { trip: Trip }) { const { name, startsAt } = hooks.useWatch(trip); + const isPast = startsAt && startsAt < Date.now(); + const { value: completion, totalItems, @@ -51,19 +88,21 @@ function TripsListItem({ trip }: { trip: Trip }) { return ( - + {name} - - {startsAt ? new Date(startsAt).toLocaleDateString() : 'Unscheduled'}{' '} - | {completedItems} / {totalItems} items + + {startsAt ? new Date(startsAt).toLocaleDateString() : 'Unscheduled'} + {isPast ? '' : ` | {completedItems} / {totalItems} items`} -
+ {!isPast && ( +
+ )} diff --git a/apps/trip-tick/web/src/components/ui/ToggleGroup.tsx b/apps/trip-tick/web/src/components/ui/ToggleGroup.tsx index 4906d080..2e20ffe7 100644 --- a/apps/trip-tick/web/src/components/ui/ToggleGroup.tsx +++ b/apps/trip-tick/web/src/components/ui/ToggleGroup.tsx @@ -17,7 +17,7 @@ export const ToggleItem = withClassName( export const ToggleItemIndicator = withClassName( 'div', - 'self-start invisible color-primary-dark', + 'self-start invisible color-primary-dark bg-primary-wash w-4 h-4 rounded', '[[data-state=on]>&]:(visible)', ); @@ -26,7 +26,7 @@ export const ToggleItemLabel = withClassName( 'flex flex-col gap-2 items-start text-sm justify-center', ); -export const ToggleItemTitle = withClassName('span', 'font-bold'); +export const ToggleItemTitle = withClassName('span', 'font-bold color-black'); export const ToggleItemDescription = withClassName( 'span', diff --git a/apps/trip-tick/web/src/main.tsx b/apps/trip-tick/web/src/main.tsx index b062aa66..73e9331b 100644 --- a/apps/trip-tick/web/src/main.tsx +++ b/apps/trip-tick/web/src/main.tsx @@ -2,6 +2,7 @@ import 'virtual:uno.css'; import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; import { App } from './App.js'; +import '@a-type/ui/main.css'; function main() { const root = createRoot(document.getElementById('root')!); diff --git a/apps/trip-tick/web/src/pages/Pages.tsx b/apps/trip-tick/web/src/pages/Pages.tsx index 834a28c3..90d43d04 100644 --- a/apps/trip-tick/web/src/pages/Pages.tsx +++ b/apps/trip-tick/web/src/pages/Pages.tsx @@ -39,6 +39,10 @@ const routes = makeRoutes([ TripsPage.preload(); }, }, + { + path: '/settings', + component: lazy(() => import('./SettingsPage.jsx')), + }, ]); export function Pages() { diff --git a/apps/trip-tick/web/src/pages/SettingsPage.tsx b/apps/trip-tick/web/src/pages/SettingsPage.tsx new file mode 100644 index 00000000..e3816e19 --- /dev/null +++ b/apps/trip-tick/web/src/pages/SettingsPage.tsx @@ -0,0 +1,18 @@ +import { PageContent } from '@a-type/ui/components/layouts'; +import { H1 } from '@a-type/ui/components/typography'; +import { DarkModeToggle } from '@biscuits/client'; + +export interface SettingsPageProps {} + +export function SettingsPage({}: SettingsPageProps) { + return ( + +

Settings

+
+ +
+
+ ); +} + +export default SettingsPage; diff --git a/packages/apps/src/index.ts b/packages/apps/src/index.ts index 7add8848..cc3c7c39 100644 --- a/packages/apps/src/index.ts +++ b/packages/apps/src/index.ts @@ -14,7 +14,7 @@ export const apps = [ id: 'gnocchi', url: 'https://gnocchi.club', name: 'Gnocchi', - description: "Maybe you're cooking every week and want to get organized", + description: 'Organize your weekly cooking and groceries', mainImageUrl: 'https://gnocchi.club/og-image.png', iconPath: 'icon.png', size: 4, @@ -24,7 +24,7 @@ export const apps = [ id: 'trip-tick', url: 'https://trip-tick.biscuits.club', name: 'Trip Tick', - description: "Maybe you're planning what to pack on your next trip", + description: 'The smartest packing list for your next trip', iconPath: 'icon.png', size: 2, devOriginOverride: 'http://localhost:6221', diff --git a/packages/client/src/components/DarkModeToggle.tsx b/packages/client/src/components/DarkModeToggle.tsx new file mode 100644 index 00000000..f753c7ac --- /dev/null +++ b/packages/client/src/components/DarkModeToggle.tsx @@ -0,0 +1,38 @@ +import { + getColorMode, + setColorMode, + subscribeToColorModeChange, +} from '../darkMode.js'; +import { + Select, + SelectContent, + SelectIcon, + SelectItem, + SelectTrigger, + SelectValue, +} from '@a-type/ui/components/select'; +import { useEffect, useState } from 'react'; + +export function DarkModeToggle() { + const [colorMode, setColorModeInternal] = useState< + 'light' | 'dark' | 'system' + >(getColorMode); + useEffect(() => subscribeToColorModeChange(setColorModeInternal), []); + + return ( +
+ Color theme: + +
+ ); +} diff --git a/packages/client/src/components/index.ts b/packages/client/src/components/index.ts index 44838519..6c710c7c 100644 --- a/packages/client/src/components/index.ts +++ b/packages/client/src/components/index.ts @@ -18,3 +18,4 @@ export * from './AppPicker.js'; export * from './UserMenu.js'; export * from './PresencePeople.js'; export * from './AppPreviewNotice.js'; +export * from './DarkModeToggle.js'; diff --git a/packages/client/src/darkMode.ts b/packages/client/src/darkMode.ts new file mode 100644 index 00000000..2e06e7b0 --- /dev/null +++ b/packages/client/src/darkMode.ts @@ -0,0 +1,59 @@ +export function setColorMode(mode: 'system' | 'light' | 'dark') { + if (mode === 'system') { + window.localStorage.removeItem('colorMode'); + } else { + window.localStorage.setItem('colorMode', mode); + } + window.dispatchEvent(new Event('colorModeChanged')); +} + +const updateMode = () => { + const mode = window.localStorage.getItem('colorMode'); + document.documentElement.classList.remove('override-light', 'override-dark'); + if (mode) { + document.documentElement.classList.add('override-' + mode); + } + + // determine final mode, even if it's system + const finalMode = + mode || + (window.matchMedia('(prefers-color-scheme: dark)').matches + ? 'dark' + : 'light'); + // set the status bar color in pwas + const iosStatusBarColor = document.querySelector( + 'meta[name=apple-mobile-web-app-status-bar-style]', + ); + const androidStatusBarColor = document.querySelector( + 'meta[name=theme-color]', + ); + + if (finalMode === 'dark') { + iosStatusBarColor?.setAttribute('content', 'black'); + androidStatusBarColor?.setAttribute('content', '#000000'); + } + if (finalMode === 'light') { + iosStatusBarColor?.setAttribute('content', 'white'); + androidStatusBarColor?.setAttribute('content', '#ffffff'); + } +}; +updateMode(); + +// listen for changes and apply an override-mode to the html +window.addEventListener('colorModeChanged', updateMode); + +export function getColorMode(): 'system' | 'light' | 'dark' { + return (window.localStorage.getItem('colorMode') as any) || 'system'; +} + +export function subscribeToColorModeChange( + callback: (mode: 'system' | 'light' | 'dark') => void, +) { + const update = () => callback(getColorMode()); + window.addEventListener('colorModeChanged', update); + return () => { + window.removeEventListener('colorModeChanged', update); + }; +} + +(window as any).setColorMode = setColorMode; diff --git a/packages/client/src/graphql-env.d.ts b/packages/client/src/graphql-env.d.ts index 078c3287..1c32236f 100644 --- a/packages/client/src/graphql-env.d.ts +++ b/packages/client/src/graphql-env.d.ts @@ -584,7 +584,7 @@ export type introspection = { "args": [] }, { - "name": "lat", + "name": "latitude", "type": { "kind": "NON_NULL", "ofType": { @@ -596,7 +596,7 @@ export type introspection = { "args": [] }, { - "name": "lon", + "name": "longitude", "type": { "kind": "NON_NULL", "ofType": { diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 3ebc32f0..4ac0d2fa 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -7,3 +7,4 @@ export * from './react.js'; export * from './install.js'; export * from './platform.js'; export * from './featureFlags.js'; +export * from './darkMode.js'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1547587b..7aad3a6b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -373,8 +373,8 @@ importers: apps/trip-tick/web: dependencies: '@a-type/ui': - specifier: ^0.6.17 - version: 0.6.17(@types/react-dom@18.2.17)(@types/react@18.0.4) + specifier: ^0.6.21 + version: 0.6.21(@types/react-dom@18.2.17)(@types/react@18.0.4) '@a-type/utils': specifier: ^1.0.6 version: 1.0.6 @@ -876,52 +876,6 @@ packages: - '@types/react-dom' dev: false - /@a-type/ui@0.6.17(@types/react-dom@18.2.17)(@types/react@18.0.4): - resolution: {integrity: sha512-bCo3eo/NURhGKtuLhYhdtYdv6eZPE2aps9qXoA30idTHCOsOi8aYs7+MzznwdzbcaHITnrXaOCUo3BtlL3PBRg==} - dependencies: - '@a-type/utils': 1.0.8 - '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-context-menu': 2.1.5(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dropdown-menu': 1.0.0(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-icons': 1.3.0(react@18.2.0) - '@radix-ui/react-menu': 1.0.0(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.0.4)(react@18.2.0) - '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toast': 1.1.5(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) - '@react-spring/web': 9.7.3(react-dom@18.2.0)(react@18.2.0) - '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) - '@tiptap/extension-document': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/extension-paragraph': 2.2.4(@tiptap/core@2.2.4) - '@tiptap/pm': 2.2.4 - '@tiptap/react': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(react-dom@18.2.0)(react@18.2.0) - '@tiptap/starter-kit': 2.2.4(@tiptap/pm@2.2.4) - '@use-gesture/react': 10.3.0(react@18.2.0) - browser-image-resizer: 2.4.1 - calendar-blocks: 0.3.1(react@18.2.0) - clsx: 2.1.0 - color-interpolate: 1.0.5 - color-parse: 2.0.0 - color-space: 2.0.1 - date-fns: 2.30.0 - formik: 2.4.5(react@18.2.0) - pluralize: 8.0.0 - prosemirror-model: 1.19.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: false - /@a-type/ui@0.6.17(@types/react@18.0.14): resolution: {integrity: sha512-bCo3eo/NURhGKtuLhYhdtYdv6eZPE2aps9qXoA30idTHCOsOi8aYs7+MzznwdzbcaHITnrXaOCUo3BtlL3PBRg==} dependencies: @@ -1014,6 +968,52 @@ packages: - '@types/react-dom' dev: false + /@a-type/ui@0.6.21(@types/react-dom@18.2.17)(@types/react@18.0.4): + resolution: {integrity: sha512-kCvgzMltFxFh6BgGUR5cbNzK5vpvUhDNGeiMPQZ8NSeq95ngqxZixLUnJ9Ei5w2tGUmEjwXVMWJpuJvZ+9mR2Q==} + dependencies: + '@a-type/utils': 1.0.8 + '@radix-ui/react-accordion': 1.1.2(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-context-menu': 2.1.5(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dropdown-menu': 1.0.0(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-icons': 1.3.0(react@18.2.0) + '@radix-ui/react-menu': 1.0.0(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.0.4)(react@18.2.0) + '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toast': 1.1.5(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.17)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) + '@react-spring/web': 9.7.3(react-dom@18.2.0)(react@18.2.0) + '@tiptap/core': 2.2.4(@tiptap/pm@2.2.4) + '@tiptap/extension-document': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/extension-paragraph': 2.2.4(@tiptap/core@2.2.4) + '@tiptap/pm': 2.2.4 + '@tiptap/react': 2.2.4(@tiptap/core@2.2.4)(@tiptap/pm@2.2.4)(react-dom@18.2.0)(react@18.2.0) + '@tiptap/starter-kit': 2.2.4(@tiptap/pm@2.2.4) + '@use-gesture/react': 10.3.0(react@18.2.0) + browser-image-resizer: 2.4.1 + calendar-blocks: 0.3.1(react@18.2.0) + clsx: 2.1.0 + color-interpolate: 1.0.5 + color-parse: 2.0.0 + color-space: 2.0.1 + date-fns: 2.30.0 + formik: 2.4.5(react@18.2.0) + pluralize: 8.0.0 + prosemirror-model: 1.19.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - '@types/react-dom' + dev: false + /@a-type/utils@1.0.5: resolution: {integrity: sha512-1MEpaLVUVAnshysXY5+wMBLR6dBoutukdY2sFoxH2jghuSDRhMSXfUy6ai6voaVOIMqgZf3+QI06HBJDvmqikw==} dev: false @@ -7208,7 +7208,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.23.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.0.5)(@types/react@18.0.4)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.4)(react@18.2.0) @@ -7237,7 +7237,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.23.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.0.14)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.14)(react@18.2.0) @@ -7295,7 +7295,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.23.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-collection': 1.0.3(@types/react@18.0.14)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.0.14)(react@18.2.0) @@ -7869,7 +7869,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.23.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.0.4)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.0.4)(react@18.2.0) @@ -7896,7 +7896,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.23.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.0.14)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.0.14)(react@18.2.0) @@ -7950,7 +7950,7 @@ packages: '@types/react-dom': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.23.4 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.0.14)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.0.14)(react@18.2.0)