diff --git a/.changeset/gentle-seas-jam.md b/.changeset/gentle-seas-jam.md new file mode 100644 index 00000000..01f3f8ff --- /dev/null +++ b/.changeset/gentle-seas-jam.md @@ -0,0 +1,9 @@ +--- +'@watching/clips-preact': patch +'@watching/clips-react': patch +'@watching/design': patch +'@watching/clips': patch +'@watching/tools': patch +--- + +Rename `ui-action` to `ui-button` diff --git a/app/features/Account/Account.tsx b/app/features/Account/Account.tsx index c2b5440a..4aaf8d76 100644 --- a/app/features/Account/Account.tsx +++ b/app/features/Account/Account.tsx @@ -9,7 +9,7 @@ import { Heading, TextBlock, BlockStack, - Action, + Button, Section, Text, Banner, @@ -37,7 +37,7 @@ import { useGraphQLQueryData, useGraphQLMutation, } from '~/shared/graphql.ts'; -import {SignInWithAppleAction} from '~/shared/auth.ts'; +import {SignInWithAppleButton} from '~/shared/auth.ts'; import {SearchParam, PaymentStatus} from '~/global/subscriptions.ts'; @@ -170,14 +170,14 @@ function AccountSection({
Email: {email} - { await signOut.run(); navigate('/signed-out'); }} > Sign out - + {paymentBanner} @@ -217,10 +217,10 @@ function FreeAccountSection({onUpdate}: {onUpdate(): Promise}) { - }> + + @@ -290,26 +290,26 @@ function MemberAccountSection({ {giftCode == null && ( - }> + )} {subscription?.status === 'ACTIVE' && ( - + )} - + ); } -function DeleteAccountAction() { +function DeleteAccountButton() { return ( - }> + ); } @@ -324,7 +324,7 @@ function DeleteAccountModal() { You won’t be able to get any of your data back once you delete your account. - { await deleteAccount.run(); @@ -332,17 +332,17 @@ function DeleteAccountModal() { }} > Delete account - + ); } -function CancelSubscriptionAction({onUpdate}: {onUpdate(): Promise}) { +function CancelSubscriptionButton({onUpdate}: {onUpdate(): Promise}) { return ( - }> + ); } @@ -357,7 +357,7 @@ function CancelSubscriptionModal({onUpdate}: {onUpdate(): Promise}) { current season watchthroughs will not be interrupted, and all your watch activity will be preserved. - { await cancelSubscription.run(); @@ -365,7 +365,7 @@ function CancelSubscriptionModal({onUpdate}: {onUpdate(): Promise}) { }} > Cancel subscription - + ); @@ -430,12 +430,12 @@ function SubscribeSection({ {children} - Subscribe… + Subscribe… ); } -function SubscribeAction({ +function SubscribeButton({ level, children, }: RenderableProps<{ @@ -445,7 +445,7 @@ function SubscribeAction({ const prepareSubscription = useGraphQLMutation(prepareSubscriptionMutation); return ( - { @@ -457,7 +457,7 @@ function SubscribeAction({ }} > {children} - + ); } @@ -481,7 +481,7 @@ function AccountGiftCodeModal({onUpdate}: {onUpdate(): Promise}) { - Redeem + @@ -511,7 +511,7 @@ function PasskeySection({ )} - { const [{startRegistration}, result] = await Promise.all([ import('@simplewebauthn/browser'), @@ -538,7 +538,7 @@ function PasskeySection({ }} > Create a Passkey - +
); @@ -555,7 +555,7 @@ function Passkey(props: PasskeyProps) { return ( {id} - }>Manage + ); } @@ -566,7 +566,7 @@ function PasskeyManageMenu({passkey: {id}, onUpdate}: PasskeyProps) { return ( - { @@ -575,7 +575,7 @@ function PasskeyManageMenu({passkey: {id}, onUpdate}: PasskeyProps) { }} > Delete - + ); @@ -600,16 +600,16 @@ function AppleSection({ Apple account {account?.email ? email: {account.email} : null} {account ? ( - { await disconnectAppleAccount.run(); await onUpdate(); }} > Disconnect - + ) : ( - Connect - + )} @@ -650,14 +650,14 @@ function GoogleSection({ Google account username: {email} - { await disconnectAccount.run(); await onUpdate(); }} > Disconnect - + ); @@ -687,14 +687,14 @@ function ConnectGoogleAccount({onUpdate}: {onUpdate(): Promise}) { Connecting your Google account lets you sign in with Google. - { setError(false); open({redirectTo: currentUrl.href}); }} > Connect Google - + ); @@ -720,10 +720,10 @@ function GithubSection({ Github account username: {username} - + ); @@ -766,14 +766,14 @@ function ConnectGithubAccount({ Connecting your Github account lets you sign in with Github. - { setError(false); open({redirectTo: currentUrl.href}); }} > Connect Github - + ); diff --git a/app/features/Account/CreateAccount.tsx b/app/features/Account/CreateAccount.tsx index dcb85162..30761b11 100644 --- a/app/features/Account/CreateAccount.tsx +++ b/app/features/Account/CreateAccount.tsx @@ -3,7 +3,7 @@ import {useSignal} from '@quilted/quilt/signals'; import {useNavigate, useCurrentURL} from '@quilted/quilt/navigation'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; import { - Action, + Button, Banner, TextField, Form, @@ -14,7 +14,7 @@ import { } from '@lemon/zest'; import {CreateAccountErrorReason} from '~/global/auth.ts'; -import {SignInWithAppleAction} from '~/shared/auth.ts'; +import {SignInWithAppleButton} from '~/shared/auth.ts'; import {useGithubOAuthModal, GithubOAuthFlow} from '~/shared/github.ts'; import {useGoogleOAuthModal, GoogleOAuthFlow} from '~/shared/google.ts'; import {useGraphQLMutation} from '~/shared/graphql.ts'; @@ -90,7 +90,7 @@ function CreateAccountWithEmail() { autocomplete="email" /> - Create account with email + ); @@ -107,7 +107,7 @@ function CreateAccountWithApple({ ); return ( - Create account with Apple - + ); } @@ -152,7 +152,7 @@ function CreateAccountWithGithub({ }); return ( - { open({ redirectTo: @@ -170,7 +170,7 @@ function CreateAccountWithGithub({ }} > Create account with Github - + ); } @@ -191,7 +191,7 @@ function CreateAccountWithGoogle({ }); return ( - { open({ redirectTo: @@ -209,7 +209,7 @@ function CreateAccountWithGoogle({ }} > Create account with Google - + ); } diff --git a/app/features/Account/Goodbye.tsx b/app/features/Account/Goodbye.tsx index 3231f39b..10396099 100644 --- a/app/features/Account/Goodbye.tsx +++ b/app/features/Account/Goodbye.tsx @@ -1,5 +1,5 @@ import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {TextBlock, BlockStack, Action} from '@lemon/zest'; +import {TextBlock, BlockStack, Button} from '@lemon/zest'; export default function Goodbye() { usePerformanceNavigation(); @@ -7,7 +7,7 @@ export default function Goodbye() { return ( Until we meet again! - Go home + ); } diff --git a/app/features/Account/Payment.tsx b/app/features/Account/Payment.tsx index a9a4620d..308e80da 100644 --- a/app/features/Account/Payment.tsx +++ b/app/features/Account/Payment.tsx @@ -16,7 +16,7 @@ import { type Signal, } from '@quilted/quilt/signals'; import {createOptionalContext} from '@quilted/quilt/context'; -import {Action, BlockStack, Form, Banner} from '@lemon/zest'; +import {Button, BlockStack, Form, Banner} from '@lemon/zest'; import {Page} from '~/shared/page.ts'; import { @@ -94,9 +94,9 @@ export default function Payment() { - + diff --git a/app/features/Admin/Admin.tsx b/app/features/Admin/Admin.tsx index c5c687f9..0551067f 100644 --- a/app/features/Admin/Admin.tsx +++ b/app/features/Admin/Admin.tsx @@ -1,5 +1,5 @@ import { - Action, + Button, Banner, BlockStack, InlineStack, @@ -63,14 +63,14 @@ function CreateGiftCodeSection() { )} - { await createAccountGiftCard.run(); await query.rerun(); }} > Create gift code - + {giftCodes.map((giftCode) => @@ -100,23 +100,23 @@ function UnusedGiftCode({ - } overlay={ - copy(giftCode.code)}> + + } > - Actions - + Buttons + ); } diff --git a/app/features/Apps/Apps.tsx b/app/features/Apps/Apps.tsx index 5fda1c7a..4c90ac00 100644 --- a/app/features/Apps/Apps.tsx +++ b/app/features/Apps/Apps.tsx @@ -3,7 +3,7 @@ import { BlockStack, View, TextBlock, - Action, + Button, InlineStack, Section, Banner, @@ -42,14 +42,14 @@ export default function Apps() { {app.name} {!app.isInstalled && ( - { await installApp.run({id: app.id}); await query.rerun(); }} > Install - + )} @@ -72,7 +72,7 @@ export default function Apps() { {extension.name} {!extension.isInstalled && ( - { await installExtension.run({ id: extension.id, @@ -83,7 +83,7 @@ export default function Apps() { }} > Install - + )} @@ -129,7 +129,7 @@ function AppSecretSection({app}: {app: AppsQueryData.Apps}) { {app.userDetailsJWT} - { const result = await createSecret.run({id: app.id}); console.log(result); @@ -137,7 +137,7 @@ function AppSecretSection({app}: {app: AppsQueryData.Apps}) { inlineSize="content" > Create secret - + diff --git a/app/features/Authentication/SignIn.tsx b/app/features/Authentication/SignIn.tsx index fd22832f..9d781448 100644 --- a/app/features/Authentication/SignIn.tsx +++ b/app/features/Authentication/SignIn.tsx @@ -16,14 +16,14 @@ import { BlockStack, TextBlock, Banner, - Action, + Button, } from '@lemon/zest'; import {SignInErrorReason} from '~/global/auth.ts'; import {useGithubOAuthModal, GithubOAuthFlow} from '~/shared/github.ts'; import {useGoogleOAuthModal, GoogleOAuthFlow} from '~/shared/google.ts'; import {useGraphQLMutation} from '~/shared/graphql.ts'; -import {SignInWithAppleAction} from '~/shared/auth.ts'; +import {SignInWithAppleButton} from '~/shared/auth.ts'; import signInWithEmailMutation from './graphql/SignInWithEmailMutation.graphql'; import startPasskeySignInMutation from './graphql/StartPasskeySignInMutation.graphql'; @@ -91,17 +91,17 @@ function SignInWithEmail() { email.value = value; }} /> - { await signInWithEmail({email: email.value}); }} > Sign in email - - + + ); @@ -196,7 +196,7 @@ function SignInWithApple({ const signInWithApple = useGraphQLMutation(signInWithAppleMutation); return ( - { const result = await signInWithApple.run({ @@ -217,7 +217,7 @@ function SignInWithApple({ }} > Sign in with Apple - + ); } @@ -238,7 +238,7 @@ function SignInWithGithub({ }); return ( - { open({ redirectTo: @@ -247,7 +247,7 @@ function SignInWithGithub({ }} > Sign in with Github - + ); } @@ -268,7 +268,7 @@ function SignInWithGoogle({ }); return ( - { open({ redirectTo: @@ -277,7 +277,7 @@ function SignInWithGoogle({ }} > Sign in with Google - + ); } diff --git a/app/features/Authentication/SignedOut.tsx b/app/features/Authentication/SignedOut.tsx index ca1ea812..c1c3418f 100644 --- a/app/features/Authentication/SignedOut.tsx +++ b/app/features/Authentication/SignedOut.tsx @@ -1,5 +1,5 @@ import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {TextBlock, BlockStack, Action} from '@lemon/zest'; +import {TextBlock, BlockStack, Button} from '@lemon/zest'; export default function SignedOut() { usePerformanceNavigation(); @@ -7,7 +7,7 @@ export default function SignedOut() { return ( Until next time! - Sign back in + ); } diff --git a/app/features/Developer/AccessTokens/AccessTokens.tsx b/app/features/Developer/AccessTokens/AccessTokens.tsx index a32b72af..e56536a5 100644 --- a/app/features/Developer/AccessTokens/AccessTokens.tsx +++ b/app/features/Developer/AccessTokens/AccessTokens.tsx @@ -4,7 +4,7 @@ import {usePerformanceNavigation} from '@quilted/quilt/performance'; import { BlockStack, TextBlock, - Action, + Button, Banner, Text, InlineGrid, @@ -63,14 +63,14 @@ export default function AccessTokens() { : 'never'} - { await deleteAccessToken.run({id: accessToken.id}); await query.rerun(); }} > Delete - + )) ); @@ -86,7 +86,7 @@ export default function AccessTokens() { )} {accessTokens} - { setCreateResult(undefined); const result = await createAccessToken.run(); @@ -121,7 +121,7 @@ export default function AccessTokens() { }} > Create access token - + ); diff --git a/app/features/Developer/Apps/Apps.tsx b/app/features/Developer/Apps/Apps.tsx index 89b70dea..64c66442 100644 --- a/app/features/Developer/Apps/Apps.tsx +++ b/app/features/Developer/Apps/Apps.tsx @@ -1,7 +1,7 @@ import type {ComponentChild} from 'preact'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {Text, InlineStack, View, Action, TextBlock} from '@lemon/zest'; +import {Text, InlineStack, View, Button, TextBlock} from '@lemon/zest'; import {Page} from '~/shared/page.ts'; import { @@ -37,14 +37,14 @@ export default function Apps() { name: {app.name} extensions: {app.extensions.length} - { await deleteApp.run({id: app.id}); await query.rerun(); }} > Delete - + )); } diff --git a/app/features/Developer/AuthenticateCli/AuthenticateCli.tsx b/app/features/Developer/AuthenticateCli/AuthenticateCli.tsx index 57c04eff..af39aa21 100644 --- a/app/features/Developer/AuthenticateCli/AuthenticateCli.tsx +++ b/app/features/Developer/AuthenticateCli/AuthenticateCli.tsx @@ -1,6 +1,6 @@ import type {ComponentChild} from 'preact'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {BlockStack, TextBlock, Text, Action, TextLink} from '@lemon/zest'; +import {BlockStack, TextBlock, Text, Button, TextLink} from '@lemon/zest'; import {Page} from '~/shared/page.ts'; @@ -53,13 +53,13 @@ export default function AuthenticateCli() { . - { await authenticateCliWithAccessToken.perform(); }} > Authenticate the CLI - + ); } diff --git a/app/features/Developer/Console/Console.tsx b/app/features/Developer/Console/Console.tsx index f8181126..1c08ca7e 100644 --- a/app/features/Developer/Console/Console.tsx +++ b/app/features/Developer/Console/Console.tsx @@ -3,7 +3,7 @@ import {usePerformanceNavigation} from '@quilted/quilt/performance'; import { BlockStack, TextField, - Action, + Button, Form, TextBlock, Heading, @@ -60,7 +60,7 @@ function ConnectedConsole({server}: {server: ClipsLocalDevelopmentServer}) { {extension.extends.map(({target, conditions, preview}) => { return ( - } @@ -82,7 +82,7 @@ function ConnectedConsole({server}: {server: ClipsLocalDevelopmentServer}) { ); })} - + ); })} @@ -143,9 +143,9 @@ function ConnectToConsole({server}: {server: ClipsLocalDevelopmentServer}) { localUrl.value = value; }} /> - + ); diff --git a/app/features/Developer/CreatedAccountFromCli/CreatedAccountFromCli.tsx b/app/features/Developer/CreatedAccountFromCli/CreatedAccountFromCli.tsx index f33f5893..68fdcb2b 100644 --- a/app/features/Developer/CreatedAccountFromCli/CreatedAccountFromCli.tsx +++ b/app/features/Developer/CreatedAccountFromCli/CreatedAccountFromCli.tsx @@ -1,6 +1,6 @@ import type {ComponentChild} from 'preact'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {BlockStack, TextBlock, Text, Action} from '@lemon/zest'; +import {BlockStack, TextBlock, Text, Button, TextLink} from '@lemon/zest'; import {Page} from '~/shared/page'; @@ -48,15 +48,18 @@ export default function CreatedAccountFromCli() { If you want to revoke access to this token in the future, you can do so on the{' '} - access tokens page. + + access tokens page + + . - { await authenticateCliWithAccessToken.perform(); }} > Authenticate the CLI - + ); } diff --git a/app/features/Developer/Developer.tsx b/app/features/Developer/Developer.tsx index 6a56114e..508c6eab 100644 --- a/app/features/Developer/Developer.tsx +++ b/app/features/Developer/Developer.tsx @@ -1,5 +1,5 @@ import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {BlockStack, InlineStack, Action} from '@lemon/zest'; +import {BlockStack, InlineStack, Button} from '@lemon/zest'; import {Page} from '~/shared/page.ts'; @@ -10,13 +10,13 @@ export default function Developer() { - Apps - Access tokens - Console - + + + + + diff --git a/app/features/Internal/ComponentLibrary.tsx b/app/features/Internal/ComponentLibrary.tsx index e74f556d..d547278b 100644 --- a/app/features/Internal/ComponentLibrary.tsx +++ b/app/features/Internal/ComponentLibrary.tsx @@ -3,7 +3,7 @@ import {useSignal} from '@quilted/quilt/signals'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; import { Style, - Action, + Button, ActionList, Checkbox, BlockStack, @@ -46,7 +46,7 @@ import { BlockGrid, SkeletonTextBlock, SkeletonText, - SkeletonAction, + SkeletonButton, Disclosure, } from '@lemon/zest'; @@ -81,66 +81,66 @@ function ActionComponents() { Actions - Action (button) - Action (link) - Action (disabled) + + + - Action (emphasized) - + + - Action (subdued) - + + - + + - }>Action (modal) - Action (small) - Action (large) - }>Action (detail) + + + + Pressable Pressable (link) - Action that fills - Action that fills - + + + - }>Accessory - }> + + + + + + + @@ -227,32 +227,32 @@ function ActionComponents() { - Menu button - Menu link - Menu button (subdued) - + + + + + + - Delete + - Item one - Item two - Item three - + + + + + @@ -267,23 +267,23 @@ function LoadingActionExample() { Loading buttons - Action (loading) - Action (loading) + + + + ); @@ -293,13 +293,13 @@ function ActionExamplePopoverMenu(props: ComponentProps) { return ( - Menu button - + + + ); @@ -307,7 +307,7 @@ function ActionExamplePopoverMenu(props: ComponentProps) { function ActionAccessoryExampleMenu({disabled = false} = {}) { return ( - - - Nice! + } @@ -344,8 +344,8 @@ function ActionExampleModal() { } > Dismiss - - Save + + @@ -411,20 +411,20 @@ function PopoverExample({ blockAttachment, }: ComponentProps) { return ( - - Nice! + } > Popover - + ); } @@ -463,8 +463,8 @@ function DisplayComponents() {
- Banner button - Banner button + +
@@ -782,11 +782,11 @@ function SkeletonComponents() { Skeleton action - - - - - + + + + + Skeleton text diff --git a/app/features/Series/Series.tsx b/app/features/Series/Series.tsx index 9f4fd7b2..8428cb43 100644 --- a/app/features/Series/Series.tsx +++ b/app/features/Series/Series.tsx @@ -3,7 +3,7 @@ import {useSignal} from '@quilted/quilt/signals'; import {useNavigate} from '@quilted/quilt/navigation'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; import { - Action, + Button, ActionList, BlockStack, InlineStack, @@ -124,31 +124,31 @@ function SeriesWithData({ overlay={ - TMDB - + {series.imdbUrl && ( - IMDB - + )} {user.role === 'ADMIN' && ( - - + )} @@ -172,12 +172,12 @@ function SeriesWithData({ viewport: {min: 'large'}, })} > - - ) { @@ -261,16 +261,16 @@ function WatchSeriesAction({ if (ongoingWatchThrough != null) { return ( - + ); } return ( - { const result = await startWatchThrough.run({ @@ -283,11 +283,11 @@ function WatchSeriesAction({ }} > {watchThroughs.length > 0 ? 'Watch again' : 'Watch'} - + ); } -function WatchlistAction({ +function WatchlistButton({ id, inWatchLater, onUpdate, @@ -302,7 +302,7 @@ function WatchlistAction({ const inWatchList = useSignal(inWatchLater, [inWatchLater]); return ( - Watchlist - + ); } -function SynchronizeSeriesWithTmdbAction({ +function SynchronizeSeriesWithTmdbButton({ seriesId, onUpdate, }: { @@ -334,7 +334,7 @@ function SynchronizeSeriesWithTmdbAction({ const sync = useGraphQLMutation(synchronizeSeriesWithTmdbMutation); return ( - { await sync.run({id: seriesId}); @@ -342,19 +342,19 @@ function SynchronizeSeriesWithTmdbAction({ }} > Synchronize with TMDB - + ); } -function DeleteSeriesAction(props: ComponentProps) { +function DeleteSeriesButton(props: ComponentProps) { return ( - } > Delete… - + ); } @@ -370,7 +370,7 @@ function DeleteSeriesModal({seriesId}: {seriesId: string}) { This will fail if any watchthroughs or lists reference the series. - { const result = await deleteSeries.run({id: seriesId}); @@ -384,7 +384,7 @@ function DeleteSeriesModal({seriesId}: {seriesId: string}) { }} > Delete - + @@ -465,7 +465,7 @@ function SeasonsSection({ {isUpcoming ? null : ( - - + + {season.status === 'CONTINUING' && ( - { await markSeasonAsFinished.run({id: season.id}); @@ -511,14 +511,14 @@ function SeasonActionPopover({ }} > Mark finished - + )} ); } -function SeasonWatchThroughAction({ +function SeasonWatchThroughButton({ seriesId, season, lastSeason, @@ -532,13 +532,13 @@ function SeasonWatchThroughAction({ const accessory = season.id === lastSeason.id ? null : ( - - { const result = await startWatchThrough.run({ @@ -552,7 +552,7 @@ function SeasonWatchThroughAction({ }} > Watch from season {season.number} to {lastSeason.number} - + } @@ -560,7 +560,7 @@ function SeasonWatchThroughAction({ ); return ( - { const result = await startWatchThrough.run({ @@ -574,7 +574,7 @@ function SeasonWatchThroughAction({ }} > Watch - + ); } @@ -606,8 +606,8 @@ function SeasonEpisodesList({id, seriesId}: {id: string; seriesId: string}) { image={} menu={ - - + { await watchEpisodeFromSeason.run({episode: episode.id}); }} > Mark as watched… - + ); } -function WatchSeasonFromEpisodeAction({ +function WatchSeasonFromEpisodeButton({ episode, season, seriesId, @@ -662,7 +662,7 @@ function WatchSeasonFromEpisodeAction({ const navigate = useNavigate(); return ( - { const result = await startWatchThrough.run({ @@ -676,7 +676,7 @@ function WatchSeasonFromEpisodeAction({ }} > Watch from Episode {episode.number} - + ); } @@ -691,7 +691,7 @@ function WatchThroughsSection({ Watches {watchThroughs.map((watchThrough) => ( - - + ))} diff --git a/app/features/Start/Start.tsx b/app/features/Start/Start.tsx index ddad344c..74c858c3 100644 --- a/app/features/Start/Start.tsx +++ b/app/features/Start/Start.tsx @@ -1,5 +1,5 @@ import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {Heading, TextBlock, Text, BlockStack, Action} from '@lemon/zest'; +import {Heading, TextBlock, Text, BlockStack, Button} from '@lemon/zest'; export default function Start() { usePerformanceNavigation(); @@ -15,9 +15,9 @@ export default function Start() { source, too. - Sign in - Create account - Go to app + + + ); } diff --git a/app/features/WatchThrough/WatchThrough.tsx b/app/features/WatchThrough/WatchThrough.tsx index 80570d1d..fb655d85 100644 --- a/app/features/WatchThrough/WatchThrough.tsx +++ b/app/features/WatchThrough/WatchThrough.tsx @@ -11,7 +11,7 @@ import { Style, BlockStack, InlineStack, - Action, + Button, ActionList, Checkbox, Heading, @@ -209,21 +209,21 @@ function WatchThroughWithData({ } menu={ - + {series.tmdbUrl && ( - + )} {series.imdbUrl && ( - + )} - {status === 'ONGOING' && } - + {status === 'ONGOING' && } + } > @@ -347,17 +347,17 @@ function Finished({ {nextSeason && !nextSeason.isUpcoming && ( - Watch Next Season - + )} {nextSeason && !nextSeason.isUpcoming && nextSeason.number !== series.seasonCount && ( - Watch Rest of Series - + )} - + Watch Again - + {from.season !== to.season && ( - Watch Season {to.season} Again - + )} {(series.status === 'RETURNING' || series.status === 'IN_PRODUCTION' || @@ -390,7 +390,7 @@ function Finished({ ); } -function WatchAgainAction({ +function WatchAgainButton({ children, watchThrough, episodes, @@ -404,7 +404,7 @@ function WatchAgainAction({ ); return ( - { const result = await startWatchThroughFromWatchThrough.run({ series: watchThrough.series.id, @@ -421,7 +421,7 @@ function WatchAgainAction({ }} > {children} - + ); } @@ -501,24 +501,24 @@ function NextEpisode({ - - - Watch - + @@ -666,32 +666,32 @@ function NotesTextField({value: notes}: {value: Signal}) { ); } -interface SkipEpisodeActionProps extends SkipEpisodeOptions {} +interface SkipEpisodeButtonProps extends SkipEpisodeOptions {} -function SkipEpisodeAction(options: SkipEpisodeActionProps) { +function SkipEpisodeButton(options: SkipEpisodeButtonProps) { const skipEpisode = useSkipEpisode(options); return ( - + ); } -interface SkipEpisodeWithNotesActionProps extends SkipEpisodeOptions {} +interface SkipEpisodeWithNotesButtonProps extends SkipEpisodeOptions {} -function SkipEpisodeWithNotesAction(props: SkipEpisodeWithNotesActionProps) { +function SkipEpisodeWithNotesButton(props: SkipEpisodeWithNotesButtonProps) { return ( - }> + ); } function SkipEpisodeModal({ form: watchForm, ...options -}: SkipEpisodeWithNotesActionProps) { +}: SkipEpisodeWithNotesButtonProps) { const {initialActionDate} = usePageDetails(); const form = useMemo( @@ -730,9 +730,9 @@ function SkipEpisodeModal({ - + @@ -778,24 +778,24 @@ function useSkipEpisode({form, watchThroughId, onUpdate}: SkipEpisodeOptions) { return skipEpisode; } -interface DeleteWatchThroughActionProps { +interface DeleteWatchThroughButtonProps { id: string; name: string; } -function DeleteWatchThroughAction(props: DeleteWatchThroughActionProps) { +function DeleteWatchThroughButton(props: DeleteWatchThroughButtonProps) { return ( - } > Delete… - + ); } -function DeleteWatchThroughModal({id, name}: DeleteWatchThroughActionProps) { +function DeleteWatchThroughModal({id, name}: DeleteWatchThroughButtonProps) { const navigate = useNavigate(); const deleteWatchThrough = useGraphQLMutation(deleteWatchThroughMutation); @@ -812,9 +812,9 @@ function DeleteWatchThroughModal({id, name}: DeleteWatchThroughActionProps) { - Cancel + - { const result = await deleteWatchThrough.run({id}); @@ -825,23 +825,23 @@ function DeleteWatchThroughModal({id, name}: DeleteWatchThroughActionProps) { }} > Delete - + ); } -interface StopWatchThroughActionProps { +interface StopWatchThroughButtonProps { id: string; } -function StopWatchThroughAction({id}: StopWatchThroughActionProps) { +function StopWatchThroughButton({id}: StopWatchThroughButtonProps) { const navigate = useNavigate(); const stopWatchThrough = useGraphQLMutation(stopWatchThroughMutation); return ( - { const result = await stopWatchThrough.run({id}); @@ -852,7 +852,7 @@ function StopWatchThroughAction({id}: StopWatchThroughActionProps) { }} > Stop watching - + ); } @@ -903,7 +903,7 @@ function PreviousActionWatch({action}: {action: WatchAction}) { ) : null; return ( - @@ -922,7 +922,7 @@ function PreviousActionWatch({action}: {action: WatchAction}) { ) : null} - + ); } @@ -948,7 +948,7 @@ function PreviousActionSkip({action}: {action: SkipAction}) { ) : null; return ( - @@ -966,7 +966,7 @@ function PreviousActionSkip({action}: {action: SkipAction}) { ) : null} - + ); } diff --git a/app/features/Watching/Watching.tsx b/app/features/Watching/Watching.tsx index a09252a0..4070d77f 100644 --- a/app/features/Watching/Watching.tsx +++ b/app/features/Watching/Watching.tsx @@ -3,7 +3,7 @@ import type {ComponentChild} from 'preact'; import {useLocalizedFormatting} from '@quilted/quilt/localize'; import {usePerformanceNavigation} from '@quilted/quilt/performance'; -import {Menu, Action, Poster, Spacer, Tag} from '@lemon/zest'; +import {Menu, Button, Poster, Spacer, Tag} from '@lemon/zest'; import {Page} from '~/shared/page.ts'; import { @@ -49,9 +49,9 @@ export default function Watching(_: Props) { heading="Watching" menu={ - + } > diff --git a/app/foundation/frame/Frame.tsx b/app/foundation/frame/Frame.tsx index cdaa8885..1ceb781a 100644 --- a/app/foundation/frame/Frame.tsx +++ b/app/foundation/frame/Frame.tsx @@ -1,6 +1,6 @@ import type {RenderableProps} from 'preact'; -import {Action, Menu, View, Modal, Icon} from '@lemon/zest'; +import {Button, Menu, View, Modal, Icon} from '@lemon/zest'; import {Navigation, NavigationItem} from './components/Navigation.ts'; @@ -17,9 +17,9 @@ export default function Frame({children}: RenderableProps) { return ( - } overlay={}> + @@ -74,31 +74,31 @@ function GoModal() { return ( - + + + + + + + {user.role === 'ADMIN' && ( - + )} diff --git a/app/foundation/frame/components/Navigation/Navigation.tsx b/app/foundation/frame/components/Navigation/Navigation.tsx index d20dc614..aa66497a 100644 --- a/app/foundation/frame/components/Navigation/Navigation.tsx +++ b/app/foundation/frame/components/Navigation/Navigation.tsx @@ -5,7 +5,7 @@ import { useRouter, type NavigateTo, } from '@quilted/quilt/navigation'; -import {View, Action, Icon} from '@lemon/zest'; +import {View, Button, Icon} from '@lemon/zest'; import styles from './Navigation.module.css'; @@ -19,7 +19,7 @@ export interface NavigationItemProps { to: NavigateTo; icon: ComponentProps['source']; matches?: (string | RegExp)[]; - emphasis?: ComponentProps['emphasis']; + emphasis?: ComponentProps['emphasis']; } export function NavigationItem({ @@ -32,7 +32,7 @@ export function NavigationItem({ const selected = useItemSelected(to, matches); return ( - {children} - + ); } diff --git a/app/server/graphql/schema.d.ts b/app/server/graphql/schema.d.ts new file mode 100644 index 00000000..04bd0a47 --- /dev/null +++ b/app/server/graphql/schema.d.ts @@ -0,0 +1,1213 @@ +import { type SeasonSelector, type EpisodeSelector, type EpisodeEndpointSelector, type EpisodeRangeSelector, type EpisodeSelectionSelector } from "@watching/api"; +export interface Query { + __typename: "Query"; + apps(variables: Record): App[]; + app(variables: { + readonly id: string; + }): App | null; + clipsInstallation(variables: { + readonly id: string; + }): ClipsExtensionInstallation | null; + clipsInstallations(variables: { + readonly target?: ClipsExtensionPoint | null; + readonly conditions?: ClipsExtensionPointSupportConditionInput[] | null; + }): ClipsExtensionInstallation[]; + me(variables: Record): User; + my(variables: Record): User; + viewer(variables: Record): User; + giftCodes(variables: Record): AccountGiftCode[]; + series(variables: { + readonly id?: string | null; + readonly handle?: string | null; + }): Series | null; + season(variables: { + readonly id?: string | null; + readonly series?: SeriesSelectorInput | null; + readonly number?: number | null; + readonly selector?: SeasonSelector | null; + }): Season | null; + episode(variables: { + readonly id?: string | null; + readonly series?: SeriesSelectorInput | null; + readonly season?: number | null; + readonly number?: number | null; + readonly selector?: EpisodeSelector | null; + }): Episode | null; + randomSeries(variables: Record): Series; + lists(variables: Record): List[]; + list(variables: { + readonly id: string; + }): List | null; + watchLater(variables: Record): List; + version(variables: Record): ApiVersion | null; + search(variables: { + readonly query: string; + }): SearchResults; + subscription(variables: { + readonly id: string; + }): SeriesSubscription | null; + subscriptions(variables: Record): SeriesSubscription[]; + watch(variables: { + readonly id: string; + }): Watch | null; + watchThrough(variables: { + readonly id: string; + }): WatchThrough | null; + watchThroughs(variables: { + readonly status?: WatchThroughStatus | null; + }): WatchThrough[]; + randomWatchThrough(variables: Record): WatchThrough | null; +} +export interface App { + __typename: "App"; + id(variables: Record): string; + name(variables: Record): string; + handle(variables: Record): string; + icon(variables: Record): Icon | null; + extensions(variables: Record): AppExtension[]; + isInstalled(variables: Record): boolean; + hasSecret(variables: Record): boolean; + userDetailsJWT(variables: Record): string | null; +} +export interface ClipsExtensionInstallation { + __typename: "ClipsExtensionInstallation"; + id(variables: Record): string; + extension(variables: Record): ClipsExtension; + version(variables: Record): ClipsExtensionVersion; + target(variables: Record): ClipsExtensionPoint; + appInstallation(variables: Record): AppInstallation; + settings(variables: Record): JSON | null; + translations(variables: Record): JSON | null; + liveQuery(variables: Record): ClipsLiveQuery | null; + loading(variables: Record): ClipsExtensionPointSupportLoading | null; +} +export type ClipsExtensionPoint = string; +export interface ClipsExtensionPointSupportConditionInput { + series?: ClipsExtensionPointSupportSeriesConditionInput | null; +} +export interface User { + __typename: "User"; + id(variables: Record): string; + role(variables: Record): UserRole; + level(variables: Record): UserLevel; + email(variables: Record): Email; + githubAccount(variables: Record): GithubAccount | null; + googleAccount(variables: Record): GoogleAccount | null; + appleAccount(variables: Record): AppleAccount | null; + passkeys(variables: Record): Passkey[]; + accessTokens(variables: Record): PersonalAccessToken[]; + settings(variables: Record): UserSettings; + giftCode(variables: Record): AccountGiftCode | null; + subscription(variables: Record): Subscription | null; + apps(variables: Record): App[]; + app(variables: { + readonly id?: string | null; + readonly handle?: string | null; + }): App | null; + hasStartedWatchThrough(variables: Record): boolean; + hasFinishedWatchThrough(variables: Record): boolean; +} +export type UserRole = "REGULAR" | "ADMIN"; +export type UserLevel = "FREE" | "MEMBER" | "PATRON"; +export interface GithubAccount { + __typename: "GithubAccount"; + id(variables: Record): GithubID; + username(variables: Record): string; + profileUrl(variables: Record): Url; + avatarImage(variables: Record): Image | null; +} +export type GithubID = string; +export type Url = string; +export interface Image { + __typename: "Image"; + source(variables: Record): Url; +} +export interface GoogleAccount { + __typename: "GoogleAccount"; + id(variables: Record): GoogleID; + email(variables: Record): Email; + image(variables: Record): Image | null; + createdAt(variables: Record): Date; + updatedAt(variables: Record): Date; +} +export type GoogleID = string; +export type Email = string; +export type Date = string; +export interface AppleAccount { + __typename: "AppleAccount"; + id(variables: Record): AppleID; + email(variables: Record): Email | null; + createdAt(variables: Record): Date; + updatedAt(variables: Record): Date; +} +export type AppleID = string; +export interface Passkey { + __typename: "Passkey"; + id(variables: Record): string; +} +export interface PersonalAccessToken { + __typename: "PersonalAccessToken"; + id(variables: Record): string; + label(variables: Record): string | null; + prefix(variables: Record): string; + length(variables: Record): number; + createdAt(variables: Record): Date; + lastUsedAt(variables: Record): Date | null; + lastFourCharacters(variables: Record): string; +} +export interface UserSettings { + __typename: "UserSettings"; + spoilerAvoidance(variables: Record): SpoilerAvoidance; +} +export type SpoilerAvoidance = "NONE" | "UPCOMING" | "EVERYTHING"; +export interface AccountGiftCode { + __typename: "AccountGiftCode"; + id(variables: Record): string; + code(variables: Record): string; + createdAt(variables: Record): Date; + redeemedAt(variables: Record): Date | null; + createAccountUrl(variables: Record): Url; +} +export interface Subscription { + __typename: "Subscription"; + id(variables: Record): string; + level(variables: Record): SubscriptionLevel; + status(variables: Record): SubscriptionStatus; + startedAt(variables: Record): Date | null; + endedAt(variables: Record): Date | null; + paymentFlow(variables: Record): SubscriptionPaymentFlow | null; +} +export type SubscriptionLevel = "MEMBER" | "PATRON"; +export type SubscriptionStatus = "ACTIVE" | "INACTIVE"; +export interface SubscriptionPaymentFlow { + __typename: "SubscriptionPaymentFlow"; + apiKey(variables: Record): string; + level(variables: Record): SubscriptionLevel; + clientSecret(variables: Record): string; +} +export interface Series { + __typename: "Series"; + id(variables: Record): string; + url(variables: Record): Url; + handle(variables: Record): string; + tmdbId(variables: Record): string; + tmdbUrl(variables: Record): Url; + imdbId(variables: Record): string | null; + imdbUrl(variables: Record): Url | null; + name(variables: Record): string; + poster(variables: Record): Image | null; + overview(variables: Record): string | null; + firstAired(variables: Record): Date | null; + status(variables: Record): SeriesStatus; + seasons(variables: Record): Season[]; + season(variables: { + readonly selector?: SeasonSelector | null; + readonly number?: number | null; + }): Season | null; + seasonCount(variables: Record): number; + episodes(variables: Record): Episode[]; + episode(variables: { + readonly selector?: EpisodeSelector | null; + readonly number?: number | null; + readonly season?: number | null; + }): Episode | null; + clipsInstallations(variables: { + readonly target: ClipsExtensionPoint; + }): ClipsExtensionInstallation[]; + lists(variables: Record): List[]; + inWatchLater(variables: Record): boolean; + subscription(variables: Record): SeriesSubscription | null; + watchThroughs(variables: Record): WatchThrough[]; +} +export type SeriesStatus = "RETURNING" | "ENDED" | "CANCELLED" | "IN_PRODUCTION" | "PLANNED"; +export interface Season { + __typename: "Season"; + id(variables: Record): string; + tmdbUrl(variables: Record): Url; + imdbUrl(variables: Record): Url; + series(variables: Record): Series; + number(variables: Record): number; + selector(variables: Record): SeasonSelector; + episodes(variables: Record): Episode[]; + episodeCount(variables: Record): number; + firstAired(variables: Record): Date | null; + poster(variables: Record): Image | null; + overview(variables: Record): string | null; + isSpecials(variables: Record): boolean; + isUpcoming(variables: Record): boolean; + isCurrentlyAiring(variables: Record): boolean; + status(variables: Record): SeasonStatus; + nextSeason(variables: Record): Season | null; + lists(variables: Record): List[]; + watches(variables: Record): Watch[]; + skips(variables: Record): Skip[]; + latestWatch(variables: Record): Watch | null; + latestSkip(variables: Record): Skip | null; +} +export type { SeasonSelector }; +export interface Episode { + __typename: "Episode"; + id(variables: Record): string; + title(variables: Record): string; + series(variables: Record): Series; + season(variables: Record): Season; + seasonNumber(variables: Record): number; + selector(variables: Record): EpisodeSelector; + number(variables: Record): number; + firstAired(variables: Record): Date | null; + hasAired(variables: Record): boolean; + still(variables: Record): Image | null; + overview(variables: Record): string | null; + nextEpisode(variables: Record): Episode | null; + lists(variables: Record): List[]; + watches(variables: Record): Watch[]; + skips(variables: Record): Skip[]; + latestWatch(variables: Record): Watch | null; + latestSkip(variables: Record): Skip | null; +} +export type { EpisodeSelector }; +export type SeasonStatus = "CONTINUING" | "ENDED"; +export interface ClipsExtension { + __typename: "ClipsExtension"; + id(variables: Record): string; + name(variables: Record): string; + handle(variables: Record): string; + app(variables: Record): App; + latestVersion(variables: Record): ClipsExtensionVersion | null; + versions(variables: Record): ClipsExtensionVersion[]; + isInstalled(variables: Record): boolean; +} +export interface Icon { + __typename: "Icon"; + source(variables: Record): Url; +} +export type AppExtension = ClipsExtension; +export interface ClipsExtensionVersion { + __typename: "ClipsExtensionVersion"; + id(variables: Record): string; + status(variables: Record): ClipsExtensionVersionStatus; + assets(variables: Record): Asset[]; + apiVersion(variables: Record): ClipsExtensionApiVersion; + extension(variables: Record): ClipsExtension; + extends(variables: Record): ClipsExtensionPointSupport[]; + settings(variables: Record): ClipsExtensionSettings; + translations(variables: Record): JSON | null; +} +export type ClipsExtensionVersionStatus = "PUBLISHED" | "BUILDING"; +export interface Asset { + __typename: "Asset"; + source(variables: Record): Url; +} +export type ClipsExtensionApiVersion = string; +export interface ClipsExtensionPointSupport { + __typename: "ClipsExtensionPointSupport"; + target(variables: Record): ClipsExtensionPoint; + conditions(variables: Record): ClipsExtensionPointSupportCondition[]; + liveQuery(variables: Record): ClipsLiveQuery | null; + loading(variables: Record): ClipsExtensionPointSupportLoading | null; +} +export interface ClipsExtensionPointSupportCondition { + __typename: "ClipsExtensionPointSupportCondition"; + series(variables: Record): ClipsExtensionPointSupportSeriesCondition | null; +} +export interface ClipsExtensionPointSupportSeriesCondition { + __typename: "ClipsExtensionPointSupportSeriesCondition"; + handle(variables: Record): string | null; +} +export type ClipsLiveQuery = string; +export interface ClipsExtensionPointSupportLoading { + __typename: "ClipsExtensionPointSupportLoading"; + ui(variables: Record): ClipsExtensionPointSupportLoadingUi | null; +} +export interface ClipsExtensionPointSupportLoadingUi { + __typename: "ClipsExtensionPointSupportLoadingUi"; + tree(variables: Record): ClipsLoadingUiTree; + html(variables: Record): ClipsLoadingUiHtml; +} +export type ClipsLoadingUiTree = string; +export type ClipsLoadingUiHtml = string; +export interface ClipsExtensionSettings { + __typename: "ClipsExtensionSettings"; + fields(variables: Record): ClipsExtensionSettingsField[]; +} +export type ClipsExtensionSettingsField = ClipsExtensionSettingsStringField | ClipsExtensionSettingsNumberField | ClipsExtensionSettingsOptionsField; +export interface ClipsExtensionSettingsStringField { + __typename: "ClipsExtensionSettingsStringField"; + key(variables: Record): string; + label(variables: Record): ClipsExtensionSettingsString; + default(variables: Record): string | null; +} +export type ClipsExtensionSettingsString = ClipsExtensionSettingsStringTranslation | ClipsExtensionSettingsStringStatic; +export interface ClipsExtensionSettingsStringTranslation { + __typename: "ClipsExtensionSettingsStringTranslation"; + key(variables: Record): TranslationKey; +} +export type TranslationKey = string; +export interface ClipsExtensionSettingsStringStatic { + __typename: "ClipsExtensionSettingsStringStatic"; + value(variables: Record): string; +} +export interface ClipsExtensionSettingsNumberField { + __typename: "ClipsExtensionSettingsNumberField"; + key(variables: Record): string; + label(variables: Record): ClipsExtensionSettingsString; + default(variables: Record): number | null; +} +export interface ClipsExtensionSettingsOptionsField { + __typename: "ClipsExtensionSettingsOptionsField"; + key(variables: Record): string; + label(variables: Record): ClipsExtensionSettingsString; + default(variables: Record): string | null; + options(variables: Record): ClipsExtensionSettingsOptionsFieldOption[]; +} +export interface ClipsExtensionSettingsOptionsFieldOption { + __typename: "ClipsExtensionSettingsOptionsFieldOption"; + value(variables: Record): string; + label(variables: Record): ClipsExtensionSettingsString; +} +export type JSON = string; +export interface AppInstallation { + __typename: "AppInstallation"; + id(variables: Record): string; + app(variables: Record): App; + extensions(variables: Record): AppExtensionInstallation[]; +} +export type AppExtensionInstallation = ClipsExtensionInstallation; +export interface SeriesSelectorInput { + id?: string | null; + handle?: string | null; +} +export interface Mutation { + __typename: "Mutation"; + createApp(variables: { + readonly name: string; + readonly handle?: string | null; + }): CreateAppPayload; + deleteApp(variables: { + readonly id: string; + }): DeleteAppPayload; + updateApp(variables: { + readonly id: string; + readonly name?: string | null; + }): UpdateAppPayload; + createAppSecret(variables: { + readonly id: string; + }): CreateAppSecretPayload; + createClipsExtension(variables: { + readonly appId: string; + readonly name: string; + readonly handle?: string | null; + readonly initialVersion?: CreateClipsInitialVersion | null; + }): CreateClipsExtensionPayload; + deleteClipsExtension(variables: { + readonly id: string; + }): DeleteClipsExtensionPayload; + updateClipsExtension(variables: { + readonly id: string; + readonly name?: string | null; + }): UpdateClipsExtensionPayload; + pushClipsExtension(variables: { + readonly id: string; + readonly code: string; + readonly name?: string | null; + readonly extends?: ClipsExtensionPointSupportInput[] | null; + readonly settings?: ClipsExtensionSettingsInput | null; + readonly translations?: JSON | null; + }): PushClipsExtensionPayload; + publishLatestClipsExtensionVersion(variables: { + readonly id: string; + }): PublishClipsExtensionVersionPayload; + installApp(variables: { + readonly id: string; + }): InstallAppPayload; + installClipsExtension(variables: { + readonly id: string; + readonly target?: ClipsExtensionPoint | null; + readonly settings?: JSON | null; + }): InstallClipsExtensionPayload; + uninstallClipsExtension(variables: { + readonly id: string; + }): UninstallClipsExtensionPayload; + updateClipsExtensionInstallation(variables: { + readonly id: string; + readonly settings?: JSON | null; + }): UpdateClipsExtensionInstallationPayload; + createAccount(variables: { + readonly email: Email; + readonly code?: string | null; + readonly redirectTo?: Url | null; + }): CreateAccountPayload; + deleteAccount(variables: Record): DeleteAccountPayload; + createAccountGiftCode(variables: Record): CreateAccountGiftCodePayload; + redeemAccountGiftCode(variables: { + readonly code: string; + }): RedeemAccountCodePayload; + prepareSubscription(variables: { + readonly level: SubscriptionLevel; + }): PrepareSubscriptionPayload; + cancelSubscription(variables: Record): CancelSubscriptionPayload; + signIn(variables: { + readonly email: Email; + readonly redirectTo?: Url | null; + }): SignInPayload; + signOut(variables: Record): SignOutPayload; + disconnectGithubAccount(variables: Record): DisconnectGithubAccountPayload; + disconnectGoogleAccount(variables: Record): DisconnectGoogleAccountPayload; + createAccountWithApple(variables: { + readonly idToken: string; + readonly authorizationCode: string; + readonly code?: string | null; + readonly redirectTo?: Url | null; + }): CreateAccountWithApplePayload; + signInWithApple(variables: { + readonly idToken: string; + readonly authorizationCode: string; + readonly redirectTo?: Url | null; + }): SignInWithApplePayload; + connectAppleAccount(variables: { + readonly idToken: string; + readonly authorizationCode: string; + }): ConnectAppleAccountPayload; + disconnectAppleAccount(variables: Record): DisconnectAppleAccountPayload; + createPersonalAccessToken(variables: { + readonly label?: string | null; + }): CreatePersonalAccessTokenPayload; + deletePersonalAccessToken(variables: { + readonly id?: string | null; + readonly token?: string | null; + }): DeletePersonalAccessTokenPayload; + updateUserSettings(variables: { + readonly spoilerAvoidance?: SpoilerAvoidance | null; + }): UpdateUserSettingsPayload; + startPasskeyCreate(variables: Record): StartPasskeyCreatePayload; + finishPasskeyCreate(variables: { + readonly credential: JSON; + }): FinishPasskeyCreatePayload; + deletePasskey(variables: { + readonly id: string; + }): DeletePasskeyPayload; + startPasskeySignIn(variables: { + readonly email?: string | null; + }): StartPasskeySignInPayload; + finishPasskeySignIn(variables: { + readonly credential: JSON; + }): FinishPasskeySignInPayload; + updateSeason(variables: { + readonly id: string; + readonly status?: SeasonStatus | null; + }): UpdateSeasonPayload; + deleteSeries(variables: { + readonly id: string; + }): DeleteSeriesPayload; + synchronizeSeriesWithTmdb(variables: { + readonly id: string; + }): SynchronizeSeriesWithTmdbPayload; + addToList(variables: { + readonly id: string; + readonly seriesId?: string | null; + }): AddToListPayload; + removeFromList(variables: { + readonly id: string; + readonly itemId: string; + }): RemoveFromListPayload; + watchLater(variables: { + readonly seriesId?: string | null; + }): WatchLaterPayload; + removeFromWatchLater(variables: { + readonly seriesId?: string | null; + }): RemoveFromWatchLaterPayload; + ping(variables: Record): boolean; + subscribeToSeries(variables: { + readonly id: string; + readonly spoilerAvoidance?: SpoilerAvoidance | null; + }): SubscribeToSeriesPayload; + toggleSubscriptionToSeries(variables: { + readonly id: string; + readonly spoilerAvoidance?: SpoilerAvoidance | null; + }): ToggleSubscriptionToSeriesPayload; + unsubscribeFromSeries(variables: { + readonly id: string; + }): UnsubscribeFromSeriesPayload; + updateSeriesSubscriptionSettings(variables: { + readonly id: string; + readonly spoilerAvoidance: SpoilerAvoidance; + }): UpdateSeriesSubscriptionSettingsPayload; + skipEpisode(variables: { + readonly episode: string; + readonly watchThrough?: string | null; + readonly notes?: NotesInput | null; + readonly at?: Date | null; + readonly updateWatchLater?: boolean | null; + }): SkipEpisodePayload; + watchEpisode(variables: { + readonly episode: string; + readonly watchThrough?: string | null; + readonly rating?: number | null; + readonly notes?: NotesInput | null; + readonly startedAt?: Date | null; + readonly finishedAt?: Date | null; + readonly updateWatchLater?: boolean | null; + }): WatchEpisodePayload; + watchEpisodes(variables: { + readonly series: SeriesSelectorInput; + readonly from?: EpisodeEndpointInput | null; + readonly to?: EpisodeEndpointInput | null; + readonly episodes?: EpisodeSelectionSelector[] | null; + readonly ranges?: EpisodeRangeInput[] | null; + readonly updateWatchLater?: boolean | null; + }): WatchEpisodesFromSeriesPayload; + startWatchThrough(variables: { + readonly series: SeriesSelectorInput; + readonly from?: EpisodeEndpointInput | null; + readonly to?: EpisodeEndpointInput | null; + readonly episodes?: EpisodeSelectionSelector[] | null; + readonly episodeRanges?: EpisodeRangeInput[] | null; + readonly includeSpecials?: boolean | null; + readonly spoilerAvoidance?: SpoilerAvoidance | null; + readonly updateWatchLater?: boolean | null; + }): StartWatchThroughPayload; + stopWatchThrough(variables: { + readonly id: string; + readonly watchLater?: boolean | null; + }): StopWatchThroughPayload; + deleteWatchThrough(variables: { + readonly id: string; + readonly watchLater?: boolean | null; + }): DeleteWatchThroughPayload; + updateWatchThroughSettings(variables: { + readonly id: string; + readonly spoilerAvoidance?: SpoilerAvoidance | null; + }): UpdateWatchThroughSettingsPayload; + deleteWatch(variables: { + readonly id: string; + }): DeleteWatchPayload; +} +export interface CreateAppPayload { + __typename: "CreateAppPayload"; + app(variables: Record): App | null; +} +export interface DeleteAppPayload { + __typename: "DeleteAppPayload"; + deletedId(variables: Record): string | null; +} +export interface UpdateAppPayload { + __typename: "UpdateAppPayload"; + app(variables: Record): App | null; +} +export interface CreateAppSecretPayload { + __typename: "CreateAppSecretPayload"; + app(variables: Record): App | null; + secret(variables: Record): string | null; +} +export interface CreateClipsInitialVersion { + code: string; + translations?: JSON | null; + extends?: ClipsExtensionPointSupportInput[] | null; + settings?: ClipsExtensionSettingsInput | null; +} +export interface CreateClipsExtensionPayload { + __typename: "CreateClipsExtensionPayload"; + app(variables: Record): App | null; + extension(variables: Record): ClipsExtension | null; + version(variables: Record): ClipsExtensionVersion | null; +} +export interface DeleteClipsExtensionPayload { + __typename: "DeleteClipsExtensionPayload"; + app(variables: Record): App | null; + deletedId(variables: Record): string | null; +} +export interface UpdateClipsExtensionPayload { + __typename: "UpdateClipsExtensionPayload"; + app(variables: Record): App | null; + extension(variables: Record): ClipsExtension | null; +} +export interface ClipsExtensionPointSupportInput { + target: ClipsExtensionPoint; + liveQuery?: ClipsLiveQuery | null; + loading?: ClipsExtensionPointSupportLoadingInput | null; + conditions?: ClipsExtensionPointSupportConditionInput[] | null; +} +export interface ClipsExtensionSettingsInput { + fields?: ClipsExtensionSettingsFieldInput[] | null; +} +export interface PushClipsExtensionPayload { + __typename: "PushClipsExtensionPayload"; + extension(variables: Record): ClipsExtension | null; + version(variables: Record): ClipsExtensionVersion | null; +} +export interface PublishClipsExtensionVersionPayload { + __typename: "PublishClipsExtensionVersionPayload"; + extension(variables: Record): ClipsExtension | null; + version(variables: Record): ClipsExtensionVersion | null; +} +export interface InstallAppPayload { + __typename: "InstallAppPayload"; + app(variables: Record): App | null; + installation(variables: Record): AppInstallation | null; +} +export interface InstallClipsExtensionPayload { + __typename: "InstallClipsExtensionPayload"; + extension(variables: Record): ClipsExtension | null; + installation(variables: Record): ClipsExtensionInstallation | null; +} +export interface UninstallClipsExtensionPayload { + __typename: "UninstallClipsExtensionPayload"; + extension(variables: Record): ClipsExtension | null; + deletedInstallationId(variables: Record): string | null; +} +export interface UpdateClipsExtensionInstallationPayload { + __typename: "UpdateClipsExtensionInstallationPayload"; + extension(variables: Record): ClipsExtension | null; + installation(variables: Record): ClipsExtensionInstallation | null; +} +export interface CreateAccountPayload { + __typename: "CreateAccountPayload"; + email(variables: Record): Email; +} +export interface DeleteAccountPayload { + __typename: "DeleteAccountPayload"; + deletedId(variables: Record): string; +} +export interface CreateAccountGiftCodePayload { + __typename: "CreateAccountGiftCodePayload"; + giftCode(variables: Record): AccountGiftCode | null; +} +export interface RedeemAccountCodePayload { + __typename: "RedeemAccountCodePayload"; + giftCode(variables: Record): AccountGiftCode | null; +} +export interface PrepareSubscriptionPayload { + __typename: "PrepareSubscriptionPayload"; + subscription(variables: Record): Subscription | null; +} +export interface CancelSubscriptionPayload { + __typename: "CancelSubscriptionPayload"; + subscription(variables: Record): Subscription | null; +} +export interface SignInPayload { + __typename: "SignInPayload"; + email(variables: Record): Email; +} +export interface SignOutPayload { + __typename: "SignOutPayload"; + userId(variables: Record): string; +} +export interface DisconnectGithubAccountPayload { + __typename: "DisconnectGithubAccountPayload"; + deletedAccount(variables: Record): GithubAccount | null; +} +export interface DisconnectGoogleAccountPayload { + __typename: "DisconnectGoogleAccountPayload"; + deletedAccountId(variables: Record): GoogleID | null; +} +export interface CreateAccountWithApplePayload { + __typename: "CreateAccountWithApplePayload"; + user(variables: Record): User | null; + appleAccount(variables: Record): AppleAccount | null; + nextStepUrl(variables: Record): Url | null; + errors(variables: Record): Error[]; +} +export interface Error { + __typename: "Error"; + code(variables: Record): ErrorCode; + message(variables: Record): string; +} +export type ErrorCode = "INVALID_SERIES" | "INVALID_EPISODE" | "GENERIC" | "NOT_AUTHORIZED"; +export interface SignInWithApplePayload { + __typename: "SignInWithApplePayload"; + user(variables: Record): User | null; + appleAccount(variables: Record): AppleAccount | null; + nextStepUrl(variables: Record): Url | null; + errors(variables: Record): Error[]; +} +export interface ConnectAppleAccountPayload { + __typename: "ConnectAppleAccountPayload"; + user(variables: Record): User; + appleAccount(variables: Record): AppleAccount | null; + errors(variables: Record): Error[]; +} +export interface DisconnectAppleAccountPayload { + __typename: "DisconnectAppleAccountPayload"; + deletedAccountId(variables: Record): AppleID | null; + errors(variables: Record): Error[]; +} +export interface CreatePersonalAccessTokenPayload { + __typename: "CreatePersonalAccessTokenPayload"; + plaintextToken(variables: Record): string | null; + personalAccessToken(variables: Record): PersonalAccessToken | null; +} +export interface DeletePersonalAccessTokenPayload { + __typename: "DeletePersonalAccessTokenPayload"; + deletedPersonalAccessTokenId(variables: Record): string | null; +} +export interface UpdateUserSettingsPayload { + __typename: "UpdateUserSettingsPayload"; + user(variables: Record): User; +} +export interface StartPasskeyCreatePayload { + __typename: "StartPasskeyCreatePayload"; + result(variables: Record): JSON; +} +export interface FinishPasskeyCreatePayload { + __typename: "FinishPasskeyCreatePayload"; + passkey(variables: Record): Passkey | null; + user(variables: Record): User; +} +export interface DeletePasskeyPayload { + __typename: "DeletePasskeyPayload"; + deletedPasskeyId(variables: Record): string; + user(variables: Record): User; +} +export interface StartPasskeySignInPayload { + __typename: "StartPasskeySignInPayload"; + result(variables: Record): JSON; +} +export interface FinishPasskeySignInPayload { + __typename: "FinishPasskeySignInPayload"; + user(variables: Record): User | null; + passkey(variables: Record): Passkey | null; +} +export interface UpdateSeasonPayload { + __typename: "UpdateSeasonPayload"; + season(variables: Record): Season | null; +} +export interface DeleteSeriesPayload { + __typename: "DeleteSeriesPayload"; + deletedId(variables: Record): string | null; + errors(variables: Record): Error[]; +} +export interface SynchronizeSeriesWithTmdbPayload { + __typename: "SynchronizeSeriesWithTmdbPayload"; + series(variables: Record): Series | null; + errors(variables: Record): Error[]; +} +export interface WatchThrough { + __typename: "WatchThrough"; + clipsInstallations(variables: { + readonly target: ClipsExtensionPoint; + }): ClipsExtensionInstallation[]; + id(variables: Record): string; + url(variables: Record): Url; + series(variables: Record): Series; + from(variables: Record): EpisodeEndpoint; + to(variables: Record): EpisodeEndpoint; + episodeSelection(variables: Record): EpisodeSelectionSelector[]; + episodeRanges(variables: Record): EpisodeRange[]; + startedAt(variables: Record): Date; + createdAt(variables: Record): Date; + updatedAt(variables: Record): Date; + finishedAt(variables: Record): Date | null; + status(variables: Record): WatchThroughStatus; + watches(variables: Record): Watch[]; + actions(variables: Record): Action[]; + nextEpisode(variables: { + readonly inSelection?: boolean | null; + }): Episode | null; + nextSeason(variables: { + readonly inSelection?: boolean | null; + }): Season | null; + unfinishedEpisodeCount(variables: Record): number; + settings(variables: Record): WatchThroughSettings; + lastAction(variables: Record): Action | null; + lastSeasonAction(variables: Record): Action | null; +} +export interface ClipsExtensionPointSupportSeriesConditionInput { + id?: string | null; + handle?: string | null; +} +export interface ClipsExtensionPointSupportLoadingInput { + ui?: ClipsLoadingUiHtml | null; +} +export interface ClipsExtensionSettingsFieldBase { + __possibleTypes: ClipsExtensionSettingsStringField | ClipsExtensionSettingsNumberField | ClipsExtensionSettingsOptionsField; + key(variables: Record): string; + label(variables: Record): ClipsExtensionSettingsString; +} +export interface ClipsExtensionSettingsFieldInput { + string?: ClipsExtensionSettingsStringFieldInput | null; + number?: ClipsExtensionSettingsNumberFieldInput | null; + options?: ClipsExtensionSettingsOptionsFieldInput | null; +} +export interface ClipsExtensionSettingsStringFieldInput { + key: string; + label: ClipsExtensionSettingsStringInput; + default?: string | null; +} +export interface ClipsExtensionSettingsNumberFieldInput { + key: string; + label: ClipsExtensionSettingsStringInput; + default?: number | null; +} +export interface ClipsExtensionSettingsOptionsFieldInput { + key: string; + label: ClipsExtensionSettingsStringInput; + default?: string | null; + options: ClipsExtensionSettingsOptionsFieldOptionInput[]; +} +export interface ClipsExtensionSettingsStringInput { + static?: string | null; + translation?: TranslationKey | null; +} +export interface ClipsExtensionSettingsOptionsFieldOptionInput { + value: string; + label: ClipsExtensionSettingsStringInput; +} +export interface List { + __typename: "List"; + id(variables: Record): string; + items(variables: Record): ListItem[]; +} +export interface ListItem { + __typename: "ListItem"; + id(variables: Record): string; + position(variables: Record): number; + media(variables: Record): Listable; +} +export interface Listable { + __possibleTypes: Series | Season | Episode; + id(variables: Record): string; + lists(variables: Record): List[]; +} +export interface AddToListPayload { + __typename: "AddToListPayload"; + list(variables: Record): List | null; + item(variables: Record): ListItem | null; + series(variables: Record): Series | null; +} +export interface RemoveFromListPayload { + __typename: "RemoveFromListPayload"; + list(variables: Record): List | null; + series(variables: Record): Series | null; + removedListItemId(variables: Record): string | null; +} +export interface WatchLaterPayload { + __typename: "WatchLaterPayload"; + list(variables: Record): List; + item(variables: Record): ListItem | null; + series(variables: Record): Series | null; +} +export interface RemoveFromWatchLaterPayload { + __typename: "RemoveFromWatchLaterPayload"; + list(variables: Record): List; + series(variables: Record): Series | null; + removedListItemId(variables: Record): string | null; +} +export type { EpisodeEndpointSelector }; +export type { EpisodeRangeSelector }; +export type { EpisodeSelectionSelector }; +export interface EpisodeRange { + __typename: "EpisodeRange"; + selector(variables: Record): EpisodeRangeSelector; + from(variables: Record): EpisodeEndpoint | null; + to(variables: Record): EpisodeEndpoint | null; +} +export interface EpisodeEndpoint { + __typename: "EpisodeEndpoint"; + selector(variables: Record): EpisodeEndpointSelector; + season(variables: Record): number; + episode(variables: Record): number | null; +} +export interface EpisodeRangeInput { + selector?: EpisodeRangeSelector | null; + from?: EpisodeEndpointInput | null; + to?: EpisodeEndpointInput | null; +} +export interface EpisodeEndpointInput { + selector?: EpisodeEndpointSelector | null; + season?: number | null; + episode?: number | null; +} +export interface SearchResults { + __typename: "SearchResults"; + series(variables: Record): Series[]; +} +export type ApiVersion = string; +export type FormattedText = string; +export interface SeriesSubscription { + __typename: "SeriesSubscription"; + id(variables: Record): string; + series(variables: Record): Series; + subscribedOn(variables: Record): Date; + settings(variables: Record): SeriesSubscriptionSettings; +} +export interface SeriesSubscriptionSettings { + __typename: "SeriesSubscriptionSettings"; + spoilerAvoidance(variables: Record): SpoilerAvoidance; +} +export interface SubscribeToSeriesPayload { + __typename: "SubscribeToSeriesPayload"; + subscription(variables: Record): SeriesSubscription | null; +} +export interface ToggleSubscriptionToSeriesPayload { + __typename: "ToggleSubscriptionToSeriesPayload"; + subscription(variables: Record): SeriesSubscription | null; +} +export interface UnsubscribeFromSeriesPayload { + __typename: "UnsubscribeFromSeriesPayload"; + errors(variables: Record): Error[]; +} +export interface UpdateSeriesSubscriptionSettingsPayload { + __typename: "UpdateSeriesSubscriptionSettingsPayload"; + subscription(variables: Record): SeriesSubscription | null; +} +export interface Watch { + __typename: "Watch"; + id(variables: Record): string; + media(variables: Record): Watchable; + startedAt(variables: Record): Date | null; + finishedAt(variables: Record): Date | null; + createdAt(variables: Record): Date; + updatedAt(variables: Record): Date; + rating(variables: Record): number | null; + notes(variables: Record): Notes | null; + watchThrough(variables: Record): WatchThrough | null; +} +export type WatchThroughStatus = "ONGOING" | "STOPPED" | "FINISHED"; +export type Action = Watch | Skip; +export interface Watchable { + __possibleTypes: Season | Episode; + id(variables: Record): string; + watches(variables: Record): Watch[]; + latestWatch(variables: Record): Watch | null; +} +export interface Notes { + __typename: "Notes"; + content(variables: Record): FormattedText; + containsSpoilers(variables: Record): boolean; +} +export interface Skip { + __typename: "Skip"; + id(variables: Record): string; + at(variables: Record): Date | null; + createdAt(variables: Record): Date; + updatedAt(variables: Record): Date; + media(variables: Record): Skippable; + notes(variables: Record): Notes | null; + watchThrough(variables: Record): WatchThrough | null; +} +export interface Skippable { + __possibleTypes: Season | Episode; + id(variables: Record): string; + skips(variables: Record): Skip[]; + latestSkip(variables: Record): Skip | null; +} +export interface WatchThroughSettings { + __typename: "WatchThroughSettings"; + spoilerAvoidance(variables: Record): SpoilerAvoidance; +} +export interface NotesInput { + content: FormattedText; + containsSpoilers: boolean; +} +export interface SkipEpisodePayload { + __typename: "SkipEpisodePayload"; + skip(variables: Record): Skip | null; + episode(variables: Record): Episode | null; + watchThrough(variables: Record): WatchThrough | null; + watchLater(variables: Record): List; +} +export interface WatchEpisodePayload { + __typename: "WatchEpisodePayload"; + watch(variables: Record): Watch | null; + episode(variables: Record): Episode | null; + watchThrough(variables: Record): WatchThrough | null; + watchLater(variables: Record): List; +} +export interface WatchEpisodesFromSeriesPayload { + __typename: "WatchEpisodesFromSeriesPayload"; + series(variables: Record): Series | null; + watchLater(variables: Record): List; +} +export interface StartWatchThroughPayload { + __typename: "StartWatchThroughPayload"; + errors(variables: Record): Error[]; + watchThrough(variables: Record): WatchThrough | null; + watchLater(variables: Record): List; +} +export interface StopWatchThroughPayload { + __typename: "StopWatchThroughPayload"; + watchThrough(variables: Record): WatchThrough | null; + watchLater(variables: Record): List; +} +export interface DeleteWatchThroughPayload { + __typename: "DeleteWatchThroughPayload"; + deletedWatchThroughId(variables: Record): string; + watchLater(variables: Record): List; +} +export interface UpdateWatchThroughSettingsPayload { + __typename: "UpdateWatchThroughSettingsPayload"; + watchThrough(variables: Record): WatchThrough | null; +} +export interface DeleteWatchPayload { + __typename: "DeleteWatchPayload"; + deletedWatchId(variables: Record): string; + watchThrough(variables: Record): WatchThrough | null; +} +export interface EpisodeSlice { + __typename: "EpisodeSlice"; + season(variables: Record): number; + episode(variables: Record): number | null; +} +export interface Schema { + Query: Query; + App: App; + ClipsExtensionInstallation: ClipsExtensionInstallation; + ClipsExtensionPoint: ClipsExtensionPoint; + ClipsExtensionPointSupportConditionInput: ClipsExtensionPointSupportConditionInput; + User: User; + UserRole: UserRole; + UserLevel: UserLevel; + GithubAccount: GithubAccount; + GithubID: GithubID; + Url: Url; + Image: Image; + GoogleAccount: GoogleAccount; + GoogleID: GoogleID; + Email: Email; + Date: Date; + AppleAccount: AppleAccount; + AppleID: AppleID; + Passkey: Passkey; + PersonalAccessToken: PersonalAccessToken; + UserSettings: UserSettings; + SpoilerAvoidance: SpoilerAvoidance; + AccountGiftCode: AccountGiftCode; + Subscription: Subscription; + SubscriptionLevel: SubscriptionLevel; + SubscriptionStatus: SubscriptionStatus; + SubscriptionPaymentFlow: SubscriptionPaymentFlow; + Series: Series; + SeriesStatus: SeriesStatus; + Season: Season; + SeasonSelector: SeasonSelector; + Episode: Episode; + EpisodeSelector: EpisodeSelector; + SeasonStatus: SeasonStatus; + ClipsExtension: ClipsExtension; + Icon: Icon; + AppExtension: AppExtension; + ClipsExtensionVersion: ClipsExtensionVersion; + ClipsExtensionVersionStatus: ClipsExtensionVersionStatus; + Asset: Asset; + ClipsExtensionApiVersion: ClipsExtensionApiVersion; + ClipsExtensionPointSupport: ClipsExtensionPointSupport; + ClipsExtensionPointSupportCondition: ClipsExtensionPointSupportCondition; + ClipsExtensionPointSupportSeriesCondition: ClipsExtensionPointSupportSeriesCondition; + ClipsLiveQuery: ClipsLiveQuery; + ClipsExtensionPointSupportLoading: ClipsExtensionPointSupportLoading; + ClipsExtensionPointSupportLoadingUi: ClipsExtensionPointSupportLoadingUi; + ClipsLoadingUiTree: ClipsLoadingUiTree; + ClipsLoadingUiHtml: ClipsLoadingUiHtml; + ClipsExtensionSettings: ClipsExtensionSettings; + ClipsExtensionSettingsField: ClipsExtensionSettingsField; + ClipsExtensionSettingsStringField: ClipsExtensionSettingsStringField; + ClipsExtensionSettingsString: ClipsExtensionSettingsString; + ClipsExtensionSettingsStringTranslation: ClipsExtensionSettingsStringTranslation; + TranslationKey: TranslationKey; + ClipsExtensionSettingsStringStatic: ClipsExtensionSettingsStringStatic; + ClipsExtensionSettingsNumberField: ClipsExtensionSettingsNumberField; + ClipsExtensionSettingsOptionsField: ClipsExtensionSettingsOptionsField; + ClipsExtensionSettingsOptionsFieldOption: ClipsExtensionSettingsOptionsFieldOption; + JSON: JSON; + AppInstallation: AppInstallation; + AppExtensionInstallation: AppExtensionInstallation; + SeriesSelectorInput: SeriesSelectorInput; + Mutation: Mutation; + CreateAppPayload: CreateAppPayload; + DeleteAppPayload: DeleteAppPayload; + UpdateAppPayload: UpdateAppPayload; + CreateAppSecretPayload: CreateAppSecretPayload; + CreateClipsInitialVersion: CreateClipsInitialVersion; + CreateClipsExtensionPayload: CreateClipsExtensionPayload; + DeleteClipsExtensionPayload: DeleteClipsExtensionPayload; + UpdateClipsExtensionPayload: UpdateClipsExtensionPayload; + ClipsExtensionPointSupportInput: ClipsExtensionPointSupportInput; + ClipsExtensionSettingsInput: ClipsExtensionSettingsInput; + PushClipsExtensionPayload: PushClipsExtensionPayload; + PublishClipsExtensionVersionPayload: PublishClipsExtensionVersionPayload; + InstallAppPayload: InstallAppPayload; + InstallClipsExtensionPayload: InstallClipsExtensionPayload; + UninstallClipsExtensionPayload: UninstallClipsExtensionPayload; + UpdateClipsExtensionInstallationPayload: UpdateClipsExtensionInstallationPayload; + CreateAccountPayload: CreateAccountPayload; + DeleteAccountPayload: DeleteAccountPayload; + CreateAccountGiftCodePayload: CreateAccountGiftCodePayload; + RedeemAccountCodePayload: RedeemAccountCodePayload; + PrepareSubscriptionPayload: PrepareSubscriptionPayload; + CancelSubscriptionPayload: CancelSubscriptionPayload; + SignInPayload: SignInPayload; + SignOutPayload: SignOutPayload; + DisconnectGithubAccountPayload: DisconnectGithubAccountPayload; + DisconnectGoogleAccountPayload: DisconnectGoogleAccountPayload; + CreateAccountWithApplePayload: CreateAccountWithApplePayload; + Error: Error; + ErrorCode: ErrorCode; + SignInWithApplePayload: SignInWithApplePayload; + ConnectAppleAccountPayload: ConnectAppleAccountPayload; + DisconnectAppleAccountPayload: DisconnectAppleAccountPayload; + CreatePersonalAccessTokenPayload: CreatePersonalAccessTokenPayload; + DeletePersonalAccessTokenPayload: DeletePersonalAccessTokenPayload; + UpdateUserSettingsPayload: UpdateUserSettingsPayload; + StartPasskeyCreatePayload: StartPasskeyCreatePayload; + FinishPasskeyCreatePayload: FinishPasskeyCreatePayload; + DeletePasskeyPayload: DeletePasskeyPayload; + StartPasskeySignInPayload: StartPasskeySignInPayload; + FinishPasskeySignInPayload: FinishPasskeySignInPayload; + UpdateSeasonPayload: UpdateSeasonPayload; + DeleteSeriesPayload: DeleteSeriesPayload; + SynchronizeSeriesWithTmdbPayload: SynchronizeSeriesWithTmdbPayload; + WatchThrough: WatchThrough; + ClipsExtensionPointSupportSeriesConditionInput: ClipsExtensionPointSupportSeriesConditionInput; + ClipsExtensionPointSupportLoadingInput: ClipsExtensionPointSupportLoadingInput; + ClipsExtensionSettingsFieldBase: ClipsExtensionSettingsFieldBase; + ClipsExtensionSettingsFieldInput: ClipsExtensionSettingsFieldInput; + ClipsExtensionSettingsStringFieldInput: ClipsExtensionSettingsStringFieldInput; + ClipsExtensionSettingsNumberFieldInput: ClipsExtensionSettingsNumberFieldInput; + ClipsExtensionSettingsOptionsFieldInput: ClipsExtensionSettingsOptionsFieldInput; + ClipsExtensionSettingsStringInput: ClipsExtensionSettingsStringInput; + ClipsExtensionSettingsOptionsFieldOptionInput: ClipsExtensionSettingsOptionsFieldOptionInput; + List: List; + ListItem: ListItem; + Listable: Listable; + AddToListPayload: AddToListPayload; + RemoveFromListPayload: RemoveFromListPayload; + WatchLaterPayload: WatchLaterPayload; + RemoveFromWatchLaterPayload: RemoveFromWatchLaterPayload; + EpisodeEndpointSelector: EpisodeEndpointSelector; + EpisodeRangeSelector: EpisodeRangeSelector; + EpisodeSelectionSelector: EpisodeSelectionSelector; + EpisodeRange: EpisodeRange; + EpisodeEndpoint: EpisodeEndpoint; + EpisodeRangeInput: EpisodeRangeInput; + EpisodeEndpointInput: EpisodeEndpointInput; + SearchResults: SearchResults; + ApiVersion: ApiVersion; + FormattedText: FormattedText; + SeriesSubscription: SeriesSubscription; + SeriesSubscriptionSettings: SeriesSubscriptionSettings; + SubscribeToSeriesPayload: SubscribeToSeriesPayload; + ToggleSubscriptionToSeriesPayload: ToggleSubscriptionToSeriesPayload; + UnsubscribeFromSeriesPayload: UnsubscribeFromSeriesPayload; + UpdateSeriesSubscriptionSettingsPayload: UpdateSeriesSubscriptionSettingsPayload; + Watch: Watch; + WatchThroughStatus: WatchThroughStatus; + Action: Action; + Watchable: Watchable; + Notes: Notes; + Skip: Skip; + Skippable: Skippable; + WatchThroughSettings: WatchThroughSettings; + NotesInput: NotesInput; + SkipEpisodePayload: SkipEpisodePayload; + WatchEpisodePayload: WatchEpisodePayload; + WatchEpisodesFromSeriesPayload: WatchEpisodesFromSeriesPayload; + StartWatchThroughPayload: StartWatchThroughPayload; + StopWatchThroughPayload: StopWatchThroughPayload; + DeleteWatchThroughPayload: DeleteWatchThroughPayload; + UpdateWatchThroughSettingsPayload: UpdateWatchThroughSettingsPayload; + DeleteWatchPayload: DeleteWatchPayload; + EpisodeSlice: EpisodeSlice; +} +declare const schema = "type Query {\n apps: [App!]!\n app(id: ID!): App\n clipsInstallation(id: ID!): ClipsExtensionInstallation\n clipsInstallations(target: ClipsExtensionPoint, conditions: [ClipsExtensionPointSupportConditionInput!]): [ClipsExtensionInstallation!]!\n me: User!\n my: User!\n viewer: User!\n giftCodes: [AccountGiftCode!]!\n series(id: ID, handle: String): Series\n season(id: ID, series: SeriesSelectorInput, number: Int, selector: SeasonSelector): Season\n episode(id: ID, series: SeriesSelectorInput, season: Int, number: Int, selector: EpisodeSelector): Episode\n randomSeries: Series!\n lists: [List!]!\n list(id: ID!): List\n watchLater: List!\n version: ApiVersion\n search(query: String!): SearchResults!\n subscription(id: ID!): SeriesSubscription\n subscriptions: [SeriesSubscription!]!\n watch(id: ID!): Watch\n watchThrough(id: ID!): WatchThrough\n watchThroughs(status: WatchThroughStatus): [WatchThrough!]!\n randomWatchThrough: WatchThrough\n}\n\ntype App {\n id: ID!\n name: String!\n handle: String!\n icon: Icon\n extensions: [AppExtension!]!\n isInstalled: Boolean!\n hasSecret: Boolean!\n userDetailsJWT: String\n}\n\ntype ClipsExtensionInstallation {\n id: ID!\n extension: ClipsExtension!\n version: ClipsExtensionVersion!\n target: ClipsExtensionPoint!\n appInstallation: AppInstallation!\n settings: JSON\n translations: JSON\n liveQuery: ClipsLiveQuery\n loading: ClipsExtensionPointSupportLoading\n}\n\nscalar ClipsExtensionPoint\n\ninput ClipsExtensionPointSupportConditionInput {\n series: ClipsExtensionPointSupportSeriesConditionInput\n}\n\ntype User {\n id: ID!\n role: UserRole!\n level: UserLevel!\n email: Email!\n githubAccount: GithubAccount\n googleAccount: GoogleAccount\n appleAccount: AppleAccount\n passkeys: [Passkey!]!\n accessTokens: [PersonalAccessToken!]!\n settings: UserSettings!\n giftCode: AccountGiftCode\n subscription: Subscription\n apps: [App!]!\n app(id: ID, handle: String): App\n hasStartedWatchThrough: Boolean!\n hasFinishedWatchThrough: Boolean!\n}\n\nenum UserRole {\n REGULAR\n ADMIN\n}\n\nenum UserLevel {\n FREE\n MEMBER\n PATRON\n}\n\ntype GithubAccount {\n id: GithubID!\n username: String!\n profileUrl: Url!\n avatarImage: Image\n}\n\nscalar GithubID\n\nscalar Url\n\ntype Image {\n source: Url!\n}\n\ntype GoogleAccount {\n id: GoogleID!\n email: Email!\n image: Image\n createdAt: Date!\n updatedAt: Date!\n}\n\nscalar GoogleID\n\nscalar Email\n\nscalar Date\n\ntype AppleAccount {\n id: AppleID!\n email: Email\n createdAt: Date!\n updatedAt: Date!\n}\n\nscalar AppleID\n\ntype Passkey {\n id: ID!\n}\n\ntype PersonalAccessToken {\n id: ID!\n label: String\n prefix: String!\n length: Int!\n createdAt: Date!\n lastUsedAt: Date\n lastFourCharacters: String!\n}\n\ntype UserSettings {\n spoilerAvoidance: SpoilerAvoidance!\n}\n\nenum SpoilerAvoidance {\n NONE\n UPCOMING\n EVERYTHING\n}\n\ntype AccountGiftCode {\n id: ID!\n code: String!\n createdAt: Date!\n redeemedAt: Date\n createAccountUrl: Url!\n}\n\ntype Subscription {\n id: ID!\n level: SubscriptionLevel!\n status: SubscriptionStatus!\n startedAt: Date\n endedAt: Date\n paymentFlow: SubscriptionPaymentFlow\n}\n\nenum SubscriptionLevel {\n MEMBER\n PATRON\n}\n\nenum SubscriptionStatus {\n ACTIVE\n INACTIVE\n}\n\ntype SubscriptionPaymentFlow {\n apiKey: String!\n level: SubscriptionLevel!\n clientSecret: String!\n}\n\ntype Series implements Listable {\n id: ID!\n url: Url!\n handle: String!\n tmdbId: ID!\n tmdbUrl: Url!\n imdbId: ID\n imdbUrl: Url\n name: String!\n poster: Image\n overview: String\n firstAired: Date\n status: SeriesStatus!\n seasons: [Season!]!\n season(selector: SeasonSelector, number: Int): Season\n seasonCount: Int!\n episodes: [Episode!]!\n episode(selector: EpisodeSelector, number: Int, season: Int): Episode\n clipsInstallations(target: ClipsExtensionPoint!): [ClipsExtensionInstallation!]!\n lists: [List!]!\n inWatchLater: Boolean!\n subscription: SeriesSubscription\n watchThroughs: [WatchThrough!]!\n}\n\nenum SeriesStatus {\n RETURNING\n ENDED\n CANCELLED\n IN_PRODUCTION\n PLANNED\n}\n\ntype Season implements Listable & Watchable & Skippable {\n id: ID!\n tmdbUrl: Url!\n imdbUrl: Url!\n series: Series!\n number: Int!\n selector: SeasonSelector!\n episodes: [Episode!]!\n episodeCount: Int!\n firstAired: Date\n poster: Image\n overview: String\n isSpecials: Boolean!\n isUpcoming: Boolean!\n isCurrentlyAiring: Boolean!\n status: SeasonStatus!\n nextSeason: Season\n lists: [List!]!\n watches: [Watch!]!\n skips: [Skip!]!\n latestWatch: Watch\n latestSkip: Skip\n}\n\nscalar SeasonSelector\n\ntype Episode implements Listable & Watchable & Skippable {\n id: ID!\n title: String!\n series: Series!\n season: Season!\n seasonNumber: Int!\n selector: EpisodeSelector!\n number: Int!\n firstAired: Date\n hasAired: Boolean!\n still: Image\n overview: String\n nextEpisode: Episode\n lists: [List!]!\n watches: [Watch!]!\n skips: [Skip!]!\n latestWatch: Watch\n latestSkip: Skip\n}\n\nscalar EpisodeSelector\n\nenum SeasonStatus {\n CONTINUING\n ENDED\n}\n\ntype ClipsExtension {\n id: ID!\n name: String!\n handle: String!\n app: App!\n latestVersion: ClipsExtensionVersion\n versions: [ClipsExtensionVersion!]!\n isInstalled: Boolean!\n}\n\ntype Icon {\n source: Url!\n}\n\nunion AppExtension = ClipsExtension\n\ntype ClipsExtensionVersion {\n id: ID!\n status: ClipsExtensionVersionStatus!\n assets: [Asset!]!\n apiVersion: ClipsExtensionApiVersion!\n extension: ClipsExtension!\n extends: [ClipsExtensionPointSupport!]!\n settings: ClipsExtensionSettings!\n translations: JSON\n}\n\nenum ClipsExtensionVersionStatus {\n PUBLISHED\n BUILDING\n}\n\ntype Asset {\n source: Url!\n}\n\nscalar ClipsExtensionApiVersion\n\ntype ClipsExtensionPointSupport {\n target: ClipsExtensionPoint!\n conditions: [ClipsExtensionPointSupportCondition!]!\n liveQuery: ClipsLiveQuery\n loading: ClipsExtensionPointSupportLoading\n}\n\ntype ClipsExtensionPointSupportCondition {\n series: ClipsExtensionPointSupportSeriesCondition\n}\n\ntype ClipsExtensionPointSupportSeriesCondition {\n handle: String\n}\n\nscalar ClipsLiveQuery\n\ntype ClipsExtensionPointSupportLoading {\n ui: ClipsExtensionPointSupportLoadingUi\n}\n\ntype ClipsExtensionPointSupportLoadingUi {\n tree: ClipsLoadingUiTree!\n html: ClipsLoadingUiHtml!\n}\n\nscalar ClipsLoadingUiTree\n\nscalar ClipsLoadingUiHtml\n\ntype ClipsExtensionSettings {\n fields: [ClipsExtensionSettingsField!]!\n}\n\nunion ClipsExtensionSettingsField = ClipsExtensionSettingsStringField | ClipsExtensionSettingsNumberField | ClipsExtensionSettingsOptionsField\n\ntype ClipsExtensionSettingsStringField implements ClipsExtensionSettingsFieldBase {\n key: String!\n label: ClipsExtensionSettingsString!\n default: String\n}\n\nunion ClipsExtensionSettingsString = ClipsExtensionSettingsStringTranslation | ClipsExtensionSettingsStringStatic\n\ntype ClipsExtensionSettingsStringTranslation {\n key: TranslationKey!\n}\n\nscalar TranslationKey\n\ntype ClipsExtensionSettingsStringStatic {\n value: String!\n}\n\ntype ClipsExtensionSettingsNumberField implements ClipsExtensionSettingsFieldBase {\n key: String!\n label: ClipsExtensionSettingsString!\n default: Float\n}\n\ntype ClipsExtensionSettingsOptionsField implements ClipsExtensionSettingsFieldBase {\n key: String!\n label: ClipsExtensionSettingsString!\n default: String\n options: [ClipsExtensionSettingsOptionsFieldOption!]!\n}\n\ntype ClipsExtensionSettingsOptionsFieldOption {\n value: String!\n label: ClipsExtensionSettingsString!\n}\n\nscalar JSON\n\ntype AppInstallation {\n id: ID!\n app: App!\n extensions: [AppExtensionInstallation!]!\n}\n\nunion AppExtensionInstallation = ClipsExtensionInstallation\n\ninput SeriesSelectorInput {\n id: ID\n handle: String\n}\n\ntype Mutation {\n createApp(name: String!, handle: String): CreateAppPayload!\n deleteApp(id: ID!): DeleteAppPayload!\n updateApp(id: ID!, name: String): UpdateAppPayload!\n createAppSecret(id: ID!): CreateAppSecretPayload!\n createClipsExtension(appId: ID!, name: String!, handle: String, initialVersion: CreateClipsInitialVersion): CreateClipsExtensionPayload!\n deleteClipsExtension(id: ID!): DeleteClipsExtensionPayload!\n updateClipsExtension(id: ID!, name: String): UpdateClipsExtensionPayload!\n pushClipsExtension(id: ID!, code: String!, name: String, extends: [ClipsExtensionPointSupportInput!], settings: ClipsExtensionSettingsInput, translations: JSON): PushClipsExtensionPayload!\n publishLatestClipsExtensionVersion(id: ID!): PublishClipsExtensionVersionPayload!\n installApp(id: ID!): InstallAppPayload!\n installClipsExtension(id: ID!, target: ClipsExtensionPoint, settings: JSON): InstallClipsExtensionPayload!\n uninstallClipsExtension(id: ID!): UninstallClipsExtensionPayload!\n updateClipsExtensionInstallation(id: ID!, settings: JSON): UpdateClipsExtensionInstallationPayload!\n createAccount(email: Email!, code: String, redirectTo: Url): CreateAccountPayload!\n deleteAccount: DeleteAccountPayload!\n createAccountGiftCode: CreateAccountGiftCodePayload!\n redeemAccountGiftCode(code: String!): RedeemAccountCodePayload!\n prepareSubscription(level: SubscriptionLevel!): PrepareSubscriptionPayload!\n cancelSubscription: CancelSubscriptionPayload!\n signIn(email: Email!, redirectTo: Url): SignInPayload!\n signOut: SignOutPayload!\n disconnectGithubAccount: DisconnectGithubAccountPayload!\n disconnectGoogleAccount: DisconnectGoogleAccountPayload!\n createAccountWithApple(idToken: String!, authorizationCode: String!, code: String, redirectTo: Url): CreateAccountWithApplePayload!\n signInWithApple(idToken: String!, authorizationCode: String!, redirectTo: Url): SignInWithApplePayload!\n connectAppleAccount(idToken: String!, authorizationCode: String!): ConnectAppleAccountPayload!\n disconnectAppleAccount: DisconnectAppleAccountPayload!\n createPersonalAccessToken(label: String): CreatePersonalAccessTokenPayload!\n deletePersonalAccessToken(id: ID, token: String): DeletePersonalAccessTokenPayload!\n updateUserSettings(spoilerAvoidance: SpoilerAvoidance): UpdateUserSettingsPayload!\n startPasskeyCreate: StartPasskeyCreatePayload!\n finishPasskeyCreate(credential: JSON!): FinishPasskeyCreatePayload!\n deletePasskey(id: ID!): DeletePasskeyPayload!\n startPasskeySignIn(email: String): StartPasskeySignInPayload!\n finishPasskeySignIn(credential: JSON!): FinishPasskeySignInPayload!\n updateSeason(id: ID!, status: SeasonStatus): UpdateSeasonPayload!\n deleteSeries(id: ID!): DeleteSeriesPayload!\n synchronizeSeriesWithTmdb(id: ID!): SynchronizeSeriesWithTmdbPayload!\n addToList(id: ID!, seriesId: ID): AddToListPayload!\n removeFromList(id: ID!, itemId: ID!): RemoveFromListPayload!\n watchLater(seriesId: ID): WatchLaterPayload!\n removeFromWatchLater(seriesId: ID): RemoveFromWatchLaterPayload!\n ping: Boolean!\n subscribeToSeries(id: ID!, spoilerAvoidance: SpoilerAvoidance): SubscribeToSeriesPayload!\n toggleSubscriptionToSeries(id: ID!, spoilerAvoidance: SpoilerAvoidance): ToggleSubscriptionToSeriesPayload!\n unsubscribeFromSeries(id: ID!): UnsubscribeFromSeriesPayload!\n updateSeriesSubscriptionSettings(id: ID!, spoilerAvoidance: SpoilerAvoidance!): UpdateSeriesSubscriptionSettingsPayload!\n skipEpisode(episode: ID!, watchThrough: ID, notes: NotesInput, at: Date, updateWatchLater: Boolean): SkipEpisodePayload!\n watchEpisode(episode: ID!, watchThrough: ID, rating: Int, notes: NotesInput, startedAt: Date, finishedAt: Date, updateWatchLater: Boolean): WatchEpisodePayload!\n watchEpisodes(series: SeriesSelectorInput!, from: EpisodeEndpointInput, to: EpisodeEndpointInput, episodes: [EpisodeSelectionSelector!], ranges: [EpisodeRangeInput!], updateWatchLater: Boolean): WatchEpisodesFromSeriesPayload!\n startWatchThrough(series: SeriesSelectorInput!, from: EpisodeEndpointInput, to: EpisodeEndpointInput, episodes: [EpisodeSelectionSelector!], episodeRanges: [EpisodeRangeInput!], includeSpecials: Boolean, spoilerAvoidance: SpoilerAvoidance, updateWatchLater: Boolean): StartWatchThroughPayload!\n stopWatchThrough(id: ID!, watchLater: Boolean): StopWatchThroughPayload!\n deleteWatchThrough(id: ID!, watchLater: Boolean): DeleteWatchThroughPayload!\n updateWatchThroughSettings(id: ID!, spoilerAvoidance: SpoilerAvoidance): UpdateWatchThroughSettingsPayload!\n deleteWatch(id: ID!): DeleteWatchPayload!\n}\n\ntype CreateAppPayload {\n app: App\n}\n\ntype DeleteAppPayload {\n deletedId: ID\n}\n\ntype UpdateAppPayload {\n app: App\n}\n\ntype CreateAppSecretPayload {\n app: App\n secret: String\n}\n\ninput CreateClipsInitialVersion {\n code: String!\n translations: JSON\n extends: [ClipsExtensionPointSupportInput!]\n settings: ClipsExtensionSettingsInput\n}\n\ntype CreateClipsExtensionPayload {\n app: App\n extension: ClipsExtension\n version: ClipsExtensionVersion\n}\n\ntype DeleteClipsExtensionPayload {\n app: App\n deletedId: ID\n}\n\ntype UpdateClipsExtensionPayload {\n app: App\n extension: ClipsExtension\n}\n\ninput ClipsExtensionPointSupportInput {\n target: ClipsExtensionPoint!\n liveQuery: ClipsLiveQuery\n loading: ClipsExtensionPointSupportLoadingInput\n conditions: [ClipsExtensionPointSupportConditionInput!]\n}\n\ninput ClipsExtensionSettingsInput {\n fields: [ClipsExtensionSettingsFieldInput!]\n}\n\ntype PushClipsExtensionPayload {\n extension: ClipsExtension\n version: ClipsExtensionVersion\n}\n\ntype PublishClipsExtensionVersionPayload {\n extension: ClipsExtension\n version: ClipsExtensionVersion\n}\n\ntype InstallAppPayload {\n app: App\n installation: AppInstallation\n}\n\ntype InstallClipsExtensionPayload {\n extension: ClipsExtension\n installation: ClipsExtensionInstallation\n}\n\ntype UninstallClipsExtensionPayload {\n extension: ClipsExtension\n deletedInstallationId: ID\n}\n\ntype UpdateClipsExtensionInstallationPayload {\n extension: ClipsExtension\n installation: ClipsExtensionInstallation\n}\n\ntype CreateAccountPayload {\n email: Email!\n}\n\ntype DeleteAccountPayload {\n deletedId: ID!\n}\n\ntype CreateAccountGiftCodePayload {\n giftCode: AccountGiftCode\n}\n\ntype RedeemAccountCodePayload {\n giftCode: AccountGiftCode\n}\n\ntype PrepareSubscriptionPayload {\n subscription: Subscription\n}\n\ntype CancelSubscriptionPayload {\n subscription: Subscription\n}\n\ntype SignInPayload {\n email: Email!\n}\n\ntype SignOutPayload {\n userId: ID!\n}\n\ntype DisconnectGithubAccountPayload {\n deletedAccount: GithubAccount\n}\n\ntype DisconnectGoogleAccountPayload {\n deletedAccountId: GoogleID\n}\n\ntype CreateAccountWithApplePayload {\n user: User\n appleAccount: AppleAccount\n nextStepUrl: Url\n errors: [Error!]!\n}\n\ntype Error {\n code: ErrorCode!\n message: String!\n}\n\nenum ErrorCode {\n INVALID_SERIES\n INVALID_EPISODE\n GENERIC\n NOT_AUTHORIZED\n}\n\ntype SignInWithApplePayload {\n user: User\n appleAccount: AppleAccount\n nextStepUrl: Url\n errors: [Error!]!\n}\n\ntype ConnectAppleAccountPayload {\n user: User!\n appleAccount: AppleAccount\n errors: [Error!]!\n}\n\ntype DisconnectAppleAccountPayload {\n deletedAccountId: AppleID\n errors: [Error!]!\n}\n\ntype CreatePersonalAccessTokenPayload {\n plaintextToken: String\n personalAccessToken: PersonalAccessToken\n}\n\ntype DeletePersonalAccessTokenPayload {\n deletedPersonalAccessTokenId: ID\n}\n\ntype UpdateUserSettingsPayload {\n user: User!\n}\n\ntype StartPasskeyCreatePayload {\n result: JSON!\n}\n\ntype FinishPasskeyCreatePayload {\n passkey: Passkey\n user: User!\n}\n\ntype DeletePasskeyPayload {\n deletedPasskeyId: ID!\n user: User!\n}\n\ntype StartPasskeySignInPayload {\n result: JSON!\n}\n\ntype FinishPasskeySignInPayload {\n user: User\n passkey: Passkey\n}\n\ntype UpdateSeasonPayload {\n season: Season\n}\n\ntype DeleteSeriesPayload {\n deletedId: ID\n errors: [Error!]!\n}\n\ntype SynchronizeSeriesWithTmdbPayload {\n series: Series\n errors: [Error!]!\n}\n\ntype WatchThrough {\n clipsInstallations(target: ClipsExtensionPoint!): [ClipsExtensionInstallation!]!\n id: ID!\n url: Url!\n series: Series!\n from: EpisodeEndpoint!\n to: EpisodeEndpoint!\n episodeSelection: [EpisodeSelectionSelector!]!\n episodeRanges: [EpisodeRange!]!\n startedAt: Date!\n createdAt: Date!\n updatedAt: Date!\n finishedAt: Date\n status: WatchThroughStatus!\n watches: [Watch!]!\n actions: [Action!]!\n nextEpisode(inSelection: Boolean = true): Episode\n nextSeason(inSelection: Boolean = true): Season\n unfinishedEpisodeCount: Int!\n settings: WatchThroughSettings!\n lastAction: Action\n lastSeasonAction: Action\n}\n\ninput ClipsExtensionPointSupportSeriesConditionInput {\n id: ID\n handle: String\n}\n\ninput ClipsExtensionPointSupportLoadingInput {\n ui: ClipsLoadingUiHtml\n}\n\ninterface ClipsExtensionSettingsFieldBase {\n key: String!\n label: ClipsExtensionSettingsString!\n}\n\ninput ClipsExtensionSettingsFieldInput {\n string: ClipsExtensionSettingsStringFieldInput\n number: ClipsExtensionSettingsNumberFieldInput\n options: ClipsExtensionSettingsOptionsFieldInput\n}\n\ninput ClipsExtensionSettingsStringFieldInput {\n key: String!\n label: ClipsExtensionSettingsStringInput!\n default: String\n}\n\ninput ClipsExtensionSettingsNumberFieldInput {\n key: String!\n label: ClipsExtensionSettingsStringInput!\n default: Float\n}\n\ninput ClipsExtensionSettingsOptionsFieldInput {\n key: String!\n label: ClipsExtensionSettingsStringInput!\n default: String\n options: [ClipsExtensionSettingsOptionsFieldOptionInput!]!\n}\n\ninput ClipsExtensionSettingsStringInput {\n static: String\n translation: TranslationKey\n}\n\ninput ClipsExtensionSettingsOptionsFieldOptionInput {\n value: String!\n label: ClipsExtensionSettingsStringInput!\n}\n\ntype List {\n id: ID!\n items: [ListItem!]!\n}\n\ntype ListItem {\n id: ID!\n position: Int!\n media: Listable!\n}\n\ninterface Listable {\n id: ID!\n lists: [List!]!\n}\n\ntype AddToListPayload {\n list: List\n item: ListItem\n series: Series\n}\n\ntype RemoveFromListPayload {\n list: List\n series: Series\n removedListItemId: ID\n}\n\ntype WatchLaterPayload {\n list: List!\n item: ListItem\n series: Series\n}\n\ntype RemoveFromWatchLaterPayload {\n list: List!\n series: Series\n removedListItemId: ID\n}\n\nscalar EpisodeEndpointSelector\n\nscalar EpisodeRangeSelector\n\nscalar EpisodeSelectionSelector\n\ntype EpisodeRange {\n selector: EpisodeRangeSelector!\n from: EpisodeEndpoint\n to: EpisodeEndpoint\n}\n\ntype EpisodeEndpoint {\n selector: EpisodeEndpointSelector!\n season: Int!\n episode: Int\n}\n\ninput EpisodeRangeInput {\n selector: EpisodeRangeSelector\n from: EpisodeEndpointInput\n to: EpisodeEndpointInput\n}\n\ninput EpisodeEndpointInput {\n selector: EpisodeEndpointSelector\n season: Int\n episode: Int\n}\n\ntype SearchResults {\n series: [Series!]!\n}\n\nscalar ApiVersion\n\nscalar FormattedText\n\ntype SeriesSubscription {\n id: ID!\n series: Series!\n subscribedOn: Date!\n settings: SeriesSubscriptionSettings!\n}\n\ntype SeriesSubscriptionSettings {\n spoilerAvoidance: SpoilerAvoidance!\n}\n\ntype SubscribeToSeriesPayload {\n subscription: SeriesSubscription\n}\n\ntype ToggleSubscriptionToSeriesPayload {\n subscription: SeriesSubscription\n}\n\ntype UnsubscribeFromSeriesPayload {\n errors: [Error!]!\n}\n\ntype UpdateSeriesSubscriptionSettingsPayload {\n subscription: SeriesSubscription\n}\n\ntype Watch {\n id: ID!\n media: Watchable!\n startedAt: Date\n finishedAt: Date\n createdAt: Date!\n updatedAt: Date!\n rating: Int\n notes: Notes\n watchThrough: WatchThrough\n}\n\nenum WatchThroughStatus {\n ONGOING\n STOPPED\n FINISHED\n}\n\nunion Action = Watch | Skip\n\ninterface Watchable {\n id: ID!\n watches: [Watch!]!\n latestWatch: Watch\n}\n\ntype Notes {\n content: FormattedText!\n containsSpoilers: Boolean!\n}\n\ntype Skip {\n id: ID!\n at: Date\n createdAt: Date!\n updatedAt: Date!\n media: Skippable!\n notes: Notes\n watchThrough: WatchThrough\n}\n\ninterface Skippable {\n id: ID!\n skips: [Skip!]!\n latestSkip: Skip\n}\n\ntype WatchThroughSettings {\n spoilerAvoidance: SpoilerAvoidance!\n}\n\ninput NotesInput {\n content: FormattedText!\n containsSpoilers: Boolean!\n}\n\ntype SkipEpisodePayload {\n skip: Skip\n episode: Episode\n watchThrough: WatchThrough\n watchLater: List!\n}\n\ntype WatchEpisodePayload {\n watch: Watch\n episode: Episode\n watchThrough: WatchThrough\n watchLater: List!\n}\n\ntype WatchEpisodesFromSeriesPayload {\n series: Series\n watchLater: List!\n}\n\ntype StartWatchThroughPayload {\n errors: [Error!]!\n watchThrough: WatchThrough\n watchLater: List!\n}\n\ntype StopWatchThroughPayload {\n watchThrough: WatchThrough\n watchLater: List!\n}\n\ntype DeleteWatchThroughPayload {\n deletedWatchThroughId: ID!\n watchLater: List!\n}\n\ntype UpdateWatchThroughSettingsPayload {\n watchThrough: WatchThrough\n}\n\ntype DeleteWatchPayload {\n deletedWatchId: ID!\n watchThrough: WatchThrough\n}\n\ntype EpisodeSlice {\n season: Int!\n episode: Int\n}"; +export default schema; +//# sourceMappingURL=schema.d.ts.map \ No newline at end of file diff --git a/app/server/graphql/schema.d.ts.map b/app/server/graphql/schema.d.ts.map index aaa9477e..d260b57d 100644 --- a/app/server/graphql/schema.d.ts.map +++ b/app/server/graphql/schema.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/shared/auth.ts b/app/shared/auth.ts index f4654c60..e4762d5c 100644 --- a/app/shared/auth.ts +++ b/app/shared/auth.ts @@ -1 +1 @@ -export {SignInWithAppleAction} from './auth/SignInWithAppleAction.tsx'; +export {SignInWithAppleButton} from './auth/SignInWithAppleButton.tsx'; diff --git a/app/shared/auth/SignInWithAppleAction.tsx b/app/shared/auth/SignInWithAppleButton.tsx similarity index 77% rename from app/shared/auth/SignInWithAppleAction.tsx rename to app/shared/auth/SignInWithAppleButton.tsx index 02ea5e36..1569de4f 100644 --- a/app/shared/auth/SignInWithAppleAction.tsx +++ b/app/shared/auth/SignInWithAppleButton.tsx @@ -1,23 +1,23 @@ import type {RenderableProps} from 'preact'; -import {Action} from '@lemon/zest'; +import {Button} from '@lemon/zest'; -export interface SignInWithActionResponse { +export interface SignInWithAppleResponse { idToken: string; authorizationCode: string; } -export interface SignInWithAppleActionProps { +export interface SignInWithAppleButtonProps { redirectUrl: URL | string; - onPress(response: SignInWithActionResponse): void | Promise; + onPress(response: SignInWithAppleResponse): void | Promise; } -export function SignInWithAppleAction({ +export function SignInWithAppleButton({ children, redirectUrl, onPress, -}: RenderableProps) { +}: RenderableProps) { return ( - { await new Promise((resolve, reject) => { const script = document.createElement('script'); @@ -46,6 +46,6 @@ export function SignInWithAppleAction({ }} > {children} - + ); } diff --git a/app/shared/clips/Clip/Clip.tsx b/app/shared/clips/Clip/Clip.tsx index 96709bca..81baa086 100644 --- a/app/shared/clips/Clip/Clip.tsx +++ b/app/shared/clips/Clip/Clip.tsx @@ -15,9 +15,9 @@ import { Menu, ContentAction, Icon, - Action, + Button, Section, - SkeletonAction, + SkeletonButton, SkeletonText, SkeletonTextBlock, SkeletonView, @@ -72,11 +72,11 @@ export function Clip({ )} - {renderer && } + {renderer && } {extension.installed && ( - + )} - {extension.installed && } + {extension.installed && } } @@ -112,28 +112,28 @@ export function Clip({ function ViewAppAction() { return ( - alert('App page not implemented yet!')} > View app - + ); } -function RestartClipAction({ +function RestartClipButton({ instance, }: { instance: ClipsExtensionPointInstance; }) { return ( - instance.restart()}> + ); } -function UninstallClipAction({ +function UninstallClipButton({ extension, }: { extension: ClipsExtensionPoint; @@ -145,25 +145,25 @@ function UninstallClipAction({ const {id} = extension.extension; return ( - { await uninstallClipsExtensionFromClip.run({id}); }} > Uninstall - + ); } -function ReportIssueAction() { +function ReportIssueButton() { return ( - alert('Reporting not implemented yet!')} > Report an issue - + ); } @@ -219,7 +219,7 @@ const LOADING_COMPONENT_MAP = new Map>([ ['ui-stack', Stack], ['ui-block-stack', BlockStack], ['ui-inline-stack', InlineStack], - ['ui-skeleton-action', SkeletonAction], + ['ui-skeleton-button', SkeletonButton], ['ui-skeleton-text', SkeletonText], ['ui-skeleton-text-block', SkeletonTextBlock], ['ui-skeleton-view', SkeletonView], diff --git a/app/shared/clips/Clip/ClipSettings.tsx b/app/shared/clips/Clip/ClipSettings.tsx index c757c82f..71e402dc 100644 --- a/app/shared/clips/Clip/ClipSettings.tsx +++ b/app/shared/clips/Clip/ClipSettings.tsx @@ -1,7 +1,7 @@ import {useMemo} from 'preact/hooks'; import {signal, type Signal} from '@quilted/quilt/signals'; import {createTranslate} from '@quilted/localize'; -import {Action, BlockStack, Form, Select, Text, TextField} from '@lemon/zest'; +import {Button, BlockStack, Form, Select, Text, TextField} from '@lemon/zest'; import {useGraphQLQuery, useGraphQLMutation} from '~/shared/graphql'; @@ -149,7 +149,7 @@ function InstalledClipLoadedSettings({ throw new Error(); })} - Update + ); diff --git a/app/shared/clips/components.ts b/app/shared/clips/components.ts index b6eb264b..fbaa86f9 100644 --- a/app/shared/clips/components.ts +++ b/app/shared/clips/components.ts @@ -1,7 +1,7 @@ import {RemoteFragmentRenderer} from '@remote-dom/preact/host'; import {type RemoteComponentRendererMap} from '@remote-dom/react/host'; -import {Action} from './components/Action.tsx'; +import {Button} from './components/Button.tsx'; import {BlockGrid} from './components/BlockGrid.tsx'; import {BlockStack} from './components/BlockStack.tsx'; import {Disclosure} from './components/Disclosure.tsx'; @@ -15,7 +15,7 @@ import {InlineStack} from './components/InlineStack.tsx'; import {Modal} from './components/Modal.tsx'; import {Popover} from './components/Popover.tsx'; import {Section} from './components/Section.tsx'; -import {SkeletonAction} from './components/SkeletonAction.tsx'; +import {SkeletonButton} from './components/SkeletonButton.tsx'; import {SkeletonText} from './components/SkeletonText.tsx'; import {SkeletonTextBlock} from './components/SkeletonTextBlock.tsx'; import {SkeletonView} from './components/SkeletonView.tsx'; @@ -49,7 +49,7 @@ export const CommonComponents: RemoteComponentRendererMap = new Map([ ['ui-view', View], // Interaction - ['ui-action', Action], + ['ui-button', Button], ['ui-disclosure', Disclosure], // Layout @@ -61,7 +61,7 @@ export const CommonComponents: RemoteComponentRendererMap = new Map([ ['ui-inline-grid', InlineGrid], // Skeletons - ['ui-skeleton-action', SkeletonAction], + ['ui-skeleton-button', SkeletonButton], ['ui-skeleton-text', SkeletonText], ['ui-skeleton-text-block', SkeletonTextBlock], ['ui-skeleton-view', SkeletonView], diff --git a/app/shared/clips/components/Action.tsx b/app/shared/clips/components/Button.tsx similarity index 77% rename from app/shared/clips/components/Action.tsx rename to app/shared/clips/components/Button.tsx index 2cc23736..ce6d6150 100644 --- a/app/shared/clips/components/Action.tsx +++ b/app/shared/clips/components/Button.tsx @@ -1,13 +1,13 @@ -import {Action as UIAction} from '@lemon/zest'; +import {Button as UIButton} from '@lemon/zest'; import { createClipsComponentRenderer, useRenderedChildren, wrapEventListenerForCallback, } from './shared.ts'; -export const Action = createClipsComponentRenderer( - 'ui-action', - function Action(props) { +export const Button = createClipsComponentRenderer( + 'ui-button', + function Button(props) { const {overlay, children} = useRenderedChildren(props, { slotProps: ['overlay'], }); @@ -16,7 +16,7 @@ export const Action = createClipsComponentRenderer( const events = props.element.eventListeners.value; return ( - {children} - + ); }, ); diff --git a/app/shared/clips/components/SkeletonAction.tsx b/app/shared/clips/components/SkeletonButton.tsx similarity index 51% rename from app/shared/clips/components/SkeletonAction.tsx rename to app/shared/clips/components/SkeletonButton.tsx index 9afd1388..4ef5371d 100644 --- a/app/shared/clips/components/SkeletonAction.tsx +++ b/app/shared/clips/components/SkeletonButton.tsx @@ -1,5 +1,5 @@ -import {SkeletonAction as UISkeletonAction} from '@lemon/zest'; -import {SKELETON_ACTION_SIZE_KEYWORDS} from '@watching/design'; +import {SkeletonButton as UISkeletonButton} from '@lemon/zest'; +import {SKELETON_BUTTON_SIZE_KEYWORDS} from '@watching/design'; import { createClipsComponentRenderer, @@ -7,22 +7,22 @@ import { restrictToAllowedValues, } from './shared.ts'; -export const SkeletonAction = createClipsComponentRenderer( - 'ui-skeleton-action', - function SkeletonAction(props) { +export const SkeletonButton = createClipsComponentRenderer( + 'ui-skeleton-button', + function SkeletonButton(props) { const {children} = useRenderedChildren(props); const attributes = props.element.attributes.value; return ( - {children} - + ); }, ); diff --git a/packages/cli/source/commands/develop/schema.d.ts b/packages/cli/source/commands/develop/schema.d.ts new file mode 100644 index 00000000..23e2d7e6 --- /dev/null +++ b/packages/cli/source/commands/develop/schema.d.ts @@ -0,0 +1,145 @@ +export type Url = string; +export type Date = string; +export type JSON = string; +export type Locale = string; +export type Version = string; +export type ExtensionPoint = string; +export type ExtensionApiVersion = string; +export type ExtensionLoadingUiTree = string; +export type ExtensionLoadingUiHtml = string; +export interface Asset { + __typename: "Asset"; + source(variables: Record): Url; +} +export interface BuildError { + __typename: "BuildError"; + message(variables: Record): string; + stack(variables: Record): string | null; +} +export interface ExtensionBuildInProgress { + __typename: "ExtensionBuildInProgress"; + id(variables: Record): string; + startedAt(variables: Record): Date; +} +export interface ExtensionBuildSuccess { + __typename: "ExtensionBuildSuccess"; + id(variables: Record): string; + finishedAt(variables: Record): Date; + startedAt(variables: Record): Date; + duration(variables: Record): number; + assets(variables: Record): Asset[]; +} +export interface ExtensionBuildError { + __typename: "ExtensionBuildError"; + id(variables: Record): string; + error(variables: Record): BuildError; + finishedAt(variables: Record): Date; + duration(variables: Record): number; + startedAt(variables: Record): Date; +} +export type ExtensionBuild = ExtensionBuildInProgress | ExtensionBuildSuccess | ExtensionBuildError; +export type ClipsExtensionPoint = string; +export interface ClipsExtensionPointSupportSeriesCondition { + __typename: "ClipsExtensionPointSupportSeriesCondition"; + handle(variables: Record): string | null; +} +export interface ClipsExtensionPointSupportCondition { + __typename: "ClipsExtensionPointSupportCondition"; + series(variables: Record): ClipsExtensionPointSupportSeriesCondition | null; +} +export interface ClipsExtensionPointPreview { + __typename: "ClipsExtensionPointPreview"; + url(variables: { + readonly connect?: boolean | null; + }): Url; +} +export interface ClipsExtensionPointLiveQuery { + __typename: "ClipsExtensionPointLiveQuery"; + file(variables: Record): string; + query(variables: Record): string; +} +export interface ClipsExtensionPointLoadingUi { + __typename: "ClipsExtensionPointLoadingUi"; + file(variables: Record): string; + tree(variables: Record): ExtensionLoadingUiTree; + html(variables: Record): ExtensionLoadingUiHtml; +} +export interface ClipsExtensionPointLoading { + __typename: "ClipsExtensionPointLoading"; + ui(variables: Record): ClipsExtensionPointLoadingUi | null; +} +export interface ClipsExtensionPointSupport { + __typename: "ClipsExtensionPointSupport"; + target(variables: Record): ClipsExtensionPoint; + module(variables: Record): string; + liveQuery(variables: Record): ClipsExtensionPointLiveQuery | null; + loading(variables: Record): ClipsExtensionPointLoading | null; + preview(variables: Record): ClipsExtensionPointPreview; + conditions(variables: Record): ClipsExtensionPointSupportCondition[]; +} +export interface ClipsExtensionTranslation { + __typename: "ClipsExtensionTranslation"; + locale(variables: Record): Locale; + dictionary(variables: Record): JSON; +} +export interface ClipsExtension { + __typename: "ClipsExtension"; + id(variables: Record): string; + name(variables: Record): string; + handle(variables: Record): string; + translations(variables: Record): ClipsExtensionTranslation[]; + build(variables: Record): ExtensionBuild; + extends(variables: Record): ClipsExtensionPointSupport[]; +} +export type Extension = ClipsExtension; +export interface App { + __typename: "App"; + id(variables: Record): string; + name(variables: Record): string; + handle(variables: Record): string; + extensions(variables: Record): Extension[]; + extension(variables: { + readonly id: string; + }): Extension | null; + clipsExtension(variables: { + readonly id: string; + }): ClipsExtension | null; +} +export interface Query { + __typename: "Query"; + version(variables: Record): Version; + app(variables: Record): App; +} +export interface Schema { + Url: Url; + Date: Date; + JSON: JSON; + Locale: Locale; + Version: Version; + ExtensionPoint: ExtensionPoint; + ExtensionApiVersion: ExtensionApiVersion; + ExtensionLoadingUiTree: ExtensionLoadingUiTree; + ExtensionLoadingUiHtml: ExtensionLoadingUiHtml; + Asset: Asset; + BuildError: BuildError; + ExtensionBuildInProgress: ExtensionBuildInProgress; + ExtensionBuildSuccess: ExtensionBuildSuccess; + ExtensionBuildError: ExtensionBuildError; + ExtensionBuild: ExtensionBuild; + ClipsExtensionPoint: ClipsExtensionPoint; + ClipsExtensionPointSupportSeriesCondition: ClipsExtensionPointSupportSeriesCondition; + ClipsExtensionPointSupportCondition: ClipsExtensionPointSupportCondition; + ClipsExtensionPointPreview: ClipsExtensionPointPreview; + ClipsExtensionPointLiveQuery: ClipsExtensionPointLiveQuery; + ClipsExtensionPointLoadingUi: ClipsExtensionPointLoadingUi; + ClipsExtensionPointLoading: ClipsExtensionPointLoading; + ClipsExtensionPointSupport: ClipsExtensionPointSupport; + ClipsExtensionTranslation: ClipsExtensionTranslation; + ClipsExtension: ClipsExtension; + Extension: Extension; + App: App; + Query: Query; +} +declare const schema = "scalar Url\n\nscalar Date\n\nscalar JSON\n\nscalar Locale\n\nscalar Version\n\nscalar ExtensionPoint\n\nscalar ExtensionApiVersion\n\nscalar ExtensionLoadingUiTree\n\nscalar ExtensionLoadingUiHtml\n\ntype Asset {\n source: Url!\n}\n\ntype BuildError {\n message: String!\n stack: String\n}\n\ntype ExtensionBuildInProgress {\n id: ID!\n startedAt: Date!\n}\n\ntype ExtensionBuildSuccess {\n id: ID!\n finishedAt: Date!\n startedAt: Date!\n duration: Int!\n assets: [Asset!]!\n}\n\ntype ExtensionBuildError {\n id: ID!\n error: BuildError!\n finishedAt: Date!\n duration: Int!\n startedAt: Date!\n}\n\nunion ExtensionBuild = ExtensionBuildInProgress | ExtensionBuildSuccess | ExtensionBuildError\n\nscalar ClipsExtensionPoint\n\ntype ClipsExtensionPointSupportSeriesCondition {\n handle: String\n}\n\ntype ClipsExtensionPointSupportCondition {\n series: ClipsExtensionPointSupportSeriesCondition\n}\n\ntype ClipsExtensionPointPreview {\n url(connect: Boolean): Url!\n}\n\ntype ClipsExtensionPointLiveQuery {\n file: String!\n query: String!\n}\n\ntype ClipsExtensionPointLoadingUi {\n file: String!\n tree: ExtensionLoadingUiTree!\n html: ExtensionLoadingUiHtml!\n}\n\ntype ClipsExtensionPointLoading {\n ui: ClipsExtensionPointLoadingUi\n}\n\ntype ClipsExtensionPointSupport {\n target: ClipsExtensionPoint!\n module: String!\n liveQuery: ClipsExtensionPointLiveQuery\n loading: ClipsExtensionPointLoading\n preview: ClipsExtensionPointPreview!\n conditions: [ClipsExtensionPointSupportCondition!]!\n}\n\ntype ClipsExtensionTranslation {\n locale: Locale!\n dictionary: JSON!\n}\n\ntype ClipsExtension {\n id: ID!\n name: String!\n handle: String!\n translations: [ClipsExtensionTranslation!]!\n build: ExtensionBuild!\n extends: [ClipsExtensionPointSupport!]!\n}\n\nunion Extension = ClipsExtension\n\ntype App {\n id: ID!\n name: String!\n handle: String!\n extensions: [Extension!]!\n extension(id: ID!): Extension\n clipsExtension(id: ID!): ClipsExtension\n}\n\ntype Query {\n version: Version!\n app: App!\n}"; +export default schema; +//# sourceMappingURL=schema.d.ts.map \ No newline at end of file diff --git a/packages/clips-preact/source/components.ts b/packages/clips-preact/source/components.ts index 4fa27f66..942a0705 100644 --- a/packages/clips-preact/source/components.ts +++ b/packages/clips-preact/source/components.ts @@ -11,7 +11,7 @@ export {TextField} from './components/TextField.tsx'; export {View} from './components/View.tsx'; // Interaction -export {Action} from './components/Action.tsx'; +export {Button} from './components/Button.tsx'; export {Disclosure} from './components/Disclosure.tsx'; // Layout @@ -22,3 +22,9 @@ export {InlineStack} from './components/InlineStack.tsx'; export {Grid} from './components/Grid.tsx'; export {BlockGrid} from './components/BlockGrid.tsx'; export {InlineGrid} from './components/InlineGrid.tsx'; + +// Skeleton +export {SkeletonText} from './components/SkeletonText.tsx'; +export {SkeletonTextBlock} from './components/SkeletonTextBlock.tsx'; +export {SkeletonView} from './components/SkeletonView.tsx'; +export {SkeletonButton} from './components/SkeletonButton.tsx'; diff --git a/packages/clips-preact/source/components/Action.tsx b/packages/clips-preact/source/components/Button.tsx similarity index 59% rename from packages/clips-preact/source/components/Action.tsx rename to packages/clips-preact/source/components/Button.tsx index a1fc4529..5446de4a 100644 --- a/packages/clips-preact/source/components/Action.tsx +++ b/packages/clips-preact/source/components/Button.tsx @@ -6,29 +6,29 @@ import { } from 'preact'; import type { - Action as ActionElement, - ActionProperties, - ActionEvents, + Button as ButtonElement, + ButtonProperties, + ButtonEvents, } from '@watching/clips/elements'; -export interface ActionProps - extends RenderableProps, ActionElement> { +export interface ButtonProps + extends RenderableProps, ButtonElement> { overlay?: VNode; onPress?(): void | Promise; - onpress?(event: ActionEvents['press']): void; + onpress?(event: ButtonEvents['press']): void; } declare module 'preact' { namespace JSX { interface IntrinsicElements { - 'ui-action': Omit; + 'ui-button': Omit; } } } -export function Action({overlay, children, onPress, ...props}: ActionProps) { +export function Button({overlay, children, onPress, ...props}: ButtonProps) { return ( - event.respondWith(onPress()) : undefined} {...props} > @@ -36,6 +36,6 @@ export function Action({overlay, children, onPress, ...props}: ActionProps) { {overlay && isValidElement(overlay) ? cloneElement(overlay, {slot: 'overlay'}) : null} - + ); } diff --git a/packages/clips-preact/source/components/SkeletonButton.tsx b/packages/clips-preact/source/components/SkeletonButton.tsx new file mode 100644 index 00000000..ead5fe8a --- /dev/null +++ b/packages/clips-preact/source/components/SkeletonButton.tsx @@ -0,0 +1,24 @@ +import type {RenderableProps} from 'preact'; + +import type { + SkeletonButton as SkeletonButtonElement, + SkeletonButtonProperties, +} from '@watching/clips/elements'; + +export interface SkeletonButtonProps + extends RenderableProps< + Partial, + SkeletonButtonElement + > {} + +declare module 'preact' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-button': SkeletonButtonProps; + } + } +} + +export function SkeletonButton(props: SkeletonButtonProps) { + return ; +} diff --git a/packages/clips-preact/source/components/SkeletonText.tsx b/packages/clips-preact/source/components/SkeletonText.tsx new file mode 100644 index 00000000..2d81c451 --- /dev/null +++ b/packages/clips-preact/source/components/SkeletonText.tsx @@ -0,0 +1,26 @@ +import type {RenderableProps} from 'preact'; + +import type { + SkeletonText as SkeletonTextElement, + SkeletonTextProperties, +} from '@watching/clips/elements'; + +export interface SkeletonTextProps + extends RenderableProps< + Omit, 'emphasis'>, + SkeletonTextElement + > { + emphasis?: SkeletonTextProperties['emphasis'] | boolean; +} + +declare module 'preact' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-text': SkeletonTextProps; + } + } +} + +export function SkeletonText(props: SkeletonTextProps) { + return ; +} diff --git a/packages/clips-preact/source/components/SkeletonTextBlock.tsx b/packages/clips-preact/source/components/SkeletonTextBlock.tsx new file mode 100644 index 00000000..dd2b3059 --- /dev/null +++ b/packages/clips-preact/source/components/SkeletonTextBlock.tsx @@ -0,0 +1,24 @@ +import type {RenderableProps} from 'preact'; + +import type { + SkeletonTextBlock as SkeletonTextBlockElement, + SkeletonTextBlockProperties, +} from '@watching/clips/elements'; + +export interface SkeletonTextBlockProps + extends RenderableProps< + Partial, + SkeletonTextBlockElement + > {} + +declare module 'preact' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-text-block': SkeletonTextBlockProps; + } + } +} + +export function SkeletonTextBlock(props: SkeletonTextBlockProps) { + return ; +} diff --git a/packages/clips-preact/source/components/SkeletonView.tsx b/packages/clips-preact/source/components/SkeletonView.tsx new file mode 100644 index 00000000..c5a71736 --- /dev/null +++ b/packages/clips-preact/source/components/SkeletonView.tsx @@ -0,0 +1,24 @@ +import type {RenderableProps} from 'preact'; + +import type { + SkeletonView as SkeletonViewElement, + SkeletonViewProperties, +} from '@watching/clips/elements'; + +export interface SkeletonViewProps + extends RenderableProps< + Partial, + SkeletonViewElement + > {} + +declare module 'preact' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-view': SkeletonViewProps; + } + } +} + +export function SkeletonView(props: SkeletonViewProps) { + return ; +} diff --git a/packages/clips-preact/source/index.ts b/packages/clips-preact/source/index.ts index 90d198f3..2a8d386d 100644 --- a/packages/clips-preact/source/index.ts +++ b/packages/clips-preact/source/index.ts @@ -4,7 +4,8 @@ export {html} from '@remote-dom/preact/html'; export {extension} from './extension.tsx'; export { - Action, + Button, + Disclosure, Footer, Header, Heading, @@ -24,6 +25,12 @@ export { Grid, BlockGrid, InlineGrid, + + // Skeleton + SkeletonText, + SkeletonTextBlock, + SkeletonView, + SkeletonButton, } from './components.ts'; export { useApi, diff --git a/packages/clips-react/source/components.ts b/packages/clips-react/source/components.ts index 4fa27f66..942a0705 100644 --- a/packages/clips-react/source/components.ts +++ b/packages/clips-react/source/components.ts @@ -11,7 +11,7 @@ export {TextField} from './components/TextField.tsx'; export {View} from './components/View.tsx'; // Interaction -export {Action} from './components/Action.tsx'; +export {Button} from './components/Button.tsx'; export {Disclosure} from './components/Disclosure.tsx'; // Layout @@ -22,3 +22,9 @@ export {InlineStack} from './components/InlineStack.tsx'; export {Grid} from './components/Grid.tsx'; export {BlockGrid} from './components/BlockGrid.tsx'; export {InlineGrid} from './components/InlineGrid.tsx'; + +// Skeleton +export {SkeletonText} from './components/SkeletonText.tsx'; +export {SkeletonTextBlock} from './components/SkeletonTextBlock.tsx'; +export {SkeletonView} from './components/SkeletonView.tsx'; +export {SkeletonButton} from './components/SkeletonButton.tsx'; diff --git a/packages/clips-react/source/components/Action.tsx b/packages/clips-react/source/components/Button.tsx similarity index 61% rename from packages/clips-react/source/components/Action.tsx rename to packages/clips-react/source/components/Button.tsx index 47b15210..b486db26 100644 --- a/packages/clips-react/source/components/Action.tsx +++ b/packages/clips-react/source/components/Button.tsx @@ -8,34 +8,34 @@ import { } from 'react'; import type { - Action as ActionElement, - ActionProperties, - ActionEvents, + Button as ButtonElement, + ButtonProperties, + ButtonEvents, } from '@watching/clips/elements'; import {useCustomElementProperties} from './shared.ts'; -export interface ActionProps - extends PropsWithChildren> { - ref?: ForwardedRef; +export interface ButtonProps + extends PropsWithChildren> { + ref?: ForwardedRef; overlay?: ReactNode; onPress?(): void | Promise; - onpress?(event: ActionEvents['press']): void; + onpress?(event: ButtonEvents['press']): void; } declare module 'react' { namespace JSX { interface IntrinsicElements { - 'ui-action': Omit; + 'ui-button': Omit; } } } -export const Action = forwardRef(function Action( +export const Button = forwardRef(function Button( {overlay, children, onPress, ...props}, ref, ) { - const allProps: ActionProps = { + const allProps: ButtonProps = { onpress: onPress ? (event) => event.respondWith(onPress()) : undefined, ...props, }; @@ -43,11 +43,11 @@ export const Action = forwardRef(function Action( const wrapperRef = useCustomElementProperties(allProps, ref); return ( - + {children} {overlay && isValidElement(overlay) ? cloneElement(overlay, {slot: 'overlay'}) : null} - + ); }); diff --git a/packages/clips-react/source/components/SkeletonButton.tsx b/packages/clips-react/source/components/SkeletonButton.tsx new file mode 100644 index 00000000..748221ea --- /dev/null +++ b/packages/clips-react/source/components/SkeletonButton.tsx @@ -0,0 +1,28 @@ +import {forwardRef, type PropsWithChildren, type ForwardedRef} from 'react'; +import type { + SkeletonButton as SkeletonButtonElement, + SkeletonButtonProperties, +} from '@watching/clips/elements'; + +import {useCustomElementProperties} from './shared.ts'; + +export interface SkeletonButtonProps + extends PropsWithChildren> { + ref?: ForwardedRef; +} + +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-button': SkeletonButtonProps; + } + } +} + +export const SkeletonButton = forwardRef< + SkeletonButtonElement, + SkeletonButtonProps +>(function SkeletonButton(props, ref) { + const wrapperRef = useCustomElementProperties(props, ref); + return ; +}); diff --git a/packages/clips-react/source/components/SkeletonText.tsx b/packages/clips-react/source/components/SkeletonText.tsx new file mode 100644 index 00000000..f228e563 --- /dev/null +++ b/packages/clips-react/source/components/SkeletonText.tsx @@ -0,0 +1,28 @@ +import {forwardRef, type PropsWithChildren, type ForwardedRef} from 'react'; +import type { + SkeletonText as SkeletonTextElement, + SkeletonTextProperties, +} from '@watching/clips/elements'; + +import {useCustomElementProperties} from './shared.ts'; + +export interface SkeletonTextProps + extends PropsWithChildren, 'emphasis'>> { + ref?: ForwardedRef; + emphasis?: SkeletonTextProperties['emphasis'] | boolean; +} + +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-text': SkeletonTextProps; + } + } +} + +export const SkeletonText = forwardRef( + function SkeletonText(props, ref) { + const wrapperRef = useCustomElementProperties(props, ref); + return ; + }, +); diff --git a/packages/clips-react/source/components/SkeletonTextBlock.tsx b/packages/clips-react/source/components/SkeletonTextBlock.tsx new file mode 100644 index 00000000..c9149978 --- /dev/null +++ b/packages/clips-react/source/components/SkeletonTextBlock.tsx @@ -0,0 +1,28 @@ +import {forwardRef, type PropsWithChildren, type ForwardedRef} from 'react'; +import type { + SkeletonTextBlock as SkeletonTextBlockElement, + SkeletonTextBlockProperties, +} from '@watching/clips/elements'; + +import {useCustomElementProperties} from './shared.ts'; + +export interface SkeletonTextBlockProps + extends PropsWithChildren> { + ref?: ForwardedRef; +} + +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-text-block': SkeletonTextBlockProps; + } + } +} + +export const SkeletonTextBlock = forwardRef< + SkeletonTextBlockElement, + SkeletonTextBlockProps +>(function SkeletonTextBlock(props, ref) { + const wrapperRef = useCustomElementProperties(props, ref); + return ; +}); diff --git a/packages/clips-react/source/components/SkeletonView.tsx b/packages/clips-react/source/components/SkeletonView.tsx new file mode 100644 index 00000000..f6932488 --- /dev/null +++ b/packages/clips-react/source/components/SkeletonView.tsx @@ -0,0 +1,27 @@ +import {forwardRef, type PropsWithChildren, type ForwardedRef} from 'react'; +import type { + SkeletonView as SkeletonViewElement, + SkeletonViewProperties, +} from '@watching/clips/elements'; + +import {useCustomElementProperties} from './shared.ts'; + +export interface SkeletonViewProps + extends PropsWithChildren> { + ref?: ForwardedRef; +} + +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + 'ui-skeleton-view': SkeletonViewProps; + } + } +} + +export const SkeletonView = forwardRef( + function SkeletonView(props, ref) { + const wrapperRef = useCustomElementProperties(props, ref); + return ; + }, +); diff --git a/packages/clips-react/source/index.ts b/packages/clips-react/source/index.ts index 14c80cc4..e766e7b0 100644 --- a/packages/clips-react/source/index.ts +++ b/packages/clips-react/source/index.ts @@ -4,7 +4,8 @@ export {html} from '@remote-dom/react/html'; export {extension} from './extension.tsx'; export { - Action, + Button, + Disclosure, Footer, Header, Heading, @@ -24,6 +25,12 @@ export { Grid, BlockGrid, InlineGrid, + + // Skeleton + SkeletonText, + SkeletonTextBlock, + SkeletonView, + SkeletonButton, } from './components.ts'; export { useApi, diff --git a/packages/clips/package.json b/packages/clips/package.json index 11db293f..1cfe0a3a 100644 --- a/packages/clips/package.json +++ b/packages/clips/package.json @@ -62,6 +62,6 @@ "@quilted/localize": "^0.2.1", "@quilted/threads": "^3.1.2", "@remote-dom/core": "^1.5.0", - "@watching/design": "^0.1.0" + "@watching/design": "workspace:^0.1.0" } } diff --git a/packages/clips/source/elements.ts b/packages/clips/source/elements.ts index 07425889..ed2ccae9 100644 --- a/packages/clips/source/elements.ts +++ b/packages/clips/source/elements.ts @@ -20,7 +20,7 @@ export type { ImageLoadingKeyword, LayoutModeKeyword, PopoverAttachmentKeyword, - SkeletonActionSizeKeyword, + SkeletonButtonSizeKeyword, SkeletonTextSizeKeyword, SpacingKeyword, SpacingOrNoneKeyword, @@ -48,7 +48,7 @@ export namespace Elements { export type TextField = HTMLElementTagNameMap['ui-text-field']; - export type Action = HTMLElementTagNameMap['ui-action']; + export type Button = HTMLElementTagNameMap['ui-button']; export type Disclosure = HTMLElementTagNameMap['ui-disclosure']; export type View = HTMLElementTagNameMap['ui-view']; @@ -97,7 +97,7 @@ export type CommonElements = Pick< | 'ui-text-field' // Interaction - | 'ui-action' + | 'ui-button' | 'ui-disclosure' // Containers diff --git a/packages/clips/source/elements/Action/Action.ts b/packages/clips/source/elements/Button/Button.ts similarity index 52% rename from packages/clips/source/elements/Action/Action.ts rename to packages/clips/source/elements/Button/Button.ts index a37d85cc..ae4b85e8 100644 --- a/packages/clips/source/elements/Action/Action.ts +++ b/packages/clips/source/elements/Button/Button.ts @@ -9,45 +9,45 @@ import { backedByAttributeAsBoolean, } from '../ClipsElement.ts'; -export interface ActionAttributes { +export interface ButtonAttributes { /** - * A URL to open when the action is clicked. + * A URL to open when the button is clicked. */ to?: string; /** - * Disallows interaction with the action. + * Disallows interaction with the button. */ disabled?: ''; } -export interface ActionProperties { +export interface ButtonProperties { /** - * A URL to open when the action is clicked. + * A URL to open when the button is clicked. */ to?: string; /** - * Disallows interaction with the action. + * Disallows interbutton with the button. */ disabled: boolean; } -export interface ActionEvents { +export interface ButtonEvents { /** - * A callback that is run when the action is pressed. + * A callback that is run when the button is pressed. */ press: RemoteEvent; } /** - * Actions are the primary component used to allow user action. + * Buttons are the primary component used to allow user button. */ -export class Action - extends ClipsElement - implements ActionProperties +export class Button + extends ClipsElement + implements ButtonProperties { - static get remoteEvents(): RemoteElementEventListenersDefinition { + static get remoteEvents(): RemoteElementEventListenersDefinition { return { press: { bubbles: true, @@ -56,7 +56,7 @@ export class Action } static get remoteAttributes() { - return ['to', 'disabled'] satisfies (keyof ActionAttributes)[]; + return ['to', 'disabled'] satisfies (keyof ButtonAttributes)[]; } @backedByAttribute() @@ -66,10 +66,10 @@ export class Action accessor disabled: boolean = false; } -customElements.define('ui-action', Action); +customElements.define('ui-button', Button); declare global { interface HTMLElementTagNameMap { - 'ui-action': InstanceType; + 'ui-button': InstanceType; } } diff --git a/packages/clips/source/elements/SkeletonAction/SkeletonAction.ts b/packages/clips/source/elements/SkeletonButton/SkeletonButton.ts similarity index 50% rename from packages/clips/source/elements/SkeletonAction/SkeletonAction.ts rename to packages/clips/source/elements/SkeletonButton/SkeletonButton.ts index bff2164e..41444c2c 100644 --- a/packages/clips/source/elements/SkeletonAction/SkeletonAction.ts +++ b/packages/clips/source/elements/SkeletonButton/SkeletonButton.ts @@ -1,6 +1,6 @@ import { - SKELETON_ACTION_SIZE_KEYWORDS, - type SkeletonActionSizeKeyword, + SKELETON_BUTTON_SIZE_KEYWORDS, + type SkeletonButtonSizeKeyword, } from '@watching/design'; import type {CSSLiteralValue} from '../../styles.ts'; @@ -10,34 +10,34 @@ import { restrictToAllowedValues, } from '../ClipsElement.ts'; -export interface SkeletonActionAttributes { +export interface SkeletonButtonAttributes { /** * The size of the skeleton text. */ - size?: SkeletonActionSizeKeyword | CSSLiteralValue; + size?: SkeletonButtonSizeKeyword | CSSLiteralValue; } -export interface SkeletonActionProperties { +export interface SkeletonButtonProperties { /** * The size of the skeleton text. * * @default 'auto' */ - size: SkeletonActionSizeKeyword | CSSLiteralValue; + size: SkeletonButtonSizeKeyword | CSSLiteralValue; } -export interface SkeletonActionEvents {} +export interface SkeletonButtonEvents {} /** * Text is used to visually style and provide semantic value for a small piece of text * content. */ -export class SkeletonAction - extends ClipsElement - implements SkeletonActionProperties +export class SkeletonButton + extends ClipsElement + implements SkeletonButtonProperties { static get remoteAttributes() { - return ['size'] satisfies (keyof SkeletonActionAttributes)[]; + return ['size'] satisfies (keyof SkeletonButtonAttributes)[]; } /** @@ -45,26 +45,26 @@ export class SkeletonAction * * @default 'auto' */ - @backedByAttribute({ + @backedByAttribute({ parse(value) { return value?.startsWith('css:') ? (value as CSSLiteralValue) - : restrictToAllowedValues(value, SKELETON_ACTION_SIZE_KEYWORDS); + : restrictToAllowedValues(value, SKELETON_BUTTON_SIZE_KEYWORDS); }, serialize(value, context) { return value?.startsWith('css:') ? value - : restrictToAllowedValues(value, SKELETON_ACTION_SIZE_KEYWORDS) ?? + : restrictToAllowedValues(value, SKELETON_BUTTON_SIZE_KEYWORDS) ?? context.current; }, }) - accessor size: SkeletonActionSizeKeyword | CSSLiteralValue = 'auto'; + accessor size: SkeletonButtonSizeKeyword | CSSLiteralValue = 'auto'; } -customElements.define('ui-skeleton-action', SkeletonAction); +customElements.define('ui-skeleton-button', SkeletonButton); declare global { interface HTMLElementTagNameMap { - 'ui-skeleton-action': InstanceType; + 'ui-skeleton-button': InstanceType; } } diff --git a/packages/clips/source/elements/elements.ts b/packages/clips/source/elements/elements.ts index 8fb05813..e356a69e 100644 --- a/packages/clips/source/elements/elements.ts +++ b/packages/clips/source/elements/elements.ts @@ -108,11 +108,11 @@ export { // Interaction export { - Action, - type ActionAttributes, - type ActionProperties, - type ActionEvents, -} from './Action/Action.ts'; + Button, + type ButtonAttributes, + type ButtonProperties, + type ButtonEvents, +} from './Button/Button.ts'; export { Disclosure, type DisclosureAttributes, @@ -122,11 +122,11 @@ export { // Skeletons export { - SkeletonAction, - type SkeletonActionAttributes, - type SkeletonActionProperties, - type SkeletonActionEvents, -} from './SkeletonAction/SkeletonAction.ts'; + SkeletonButton, + type SkeletonButtonAttributes, + type SkeletonButtonProperties, + type SkeletonButtonEvents, +} from './SkeletonButton/SkeletonButton.ts'; export { SkeletonText, type SkeletonTextAttributes, diff --git a/packages/design/source/index.ts b/packages/design/source/index.ts index cefe1b0d..ae9d1994 100644 --- a/packages/design/source/index.ts +++ b/packages/design/source/index.ts @@ -191,13 +191,13 @@ export const SKELETON_TEXT_SIZE_KEYWORDS = new Set([ 'large.1', ]); -export type SkeletonActionSizeKeyword = +export type SkeletonButtonSizeKeyword = | 'small.1' | 'small' | 'auto' | 'large' | 'large.1'; -export const SKELETON_ACTION_SIZE_KEYWORDS = new Set( +export const SKELETON_BUTTON_SIZE_KEYWORDS = new Set( ['small.1', 'small', 'auto', 'large', 'large.1'], ); diff --git a/packages/tools/source/loading.ts b/packages/tools/source/loading.ts index 415c5d04..017a4ec2 100644 --- a/packages/tools/source/loading.ts +++ b/packages/tools/source/loading.ts @@ -7,7 +7,7 @@ const ALLOWED_ELEMENTS = new Map>([ ['ui-block-stack', {spacing: Boolean}], ['ui-skeleton-text', {size: String}], ['ui-skeleton-text-block', {lines: Number}], - ['ui-skeleton-action', {}], + ['ui-skeleton-button', {}], ['ui-skeleton-view', {}], ]); diff --git a/packages/zest/source/components.ts b/packages/zest/source/components.ts index 38d9164c..396f939d 100644 --- a/packages/zest/source/components.ts +++ b/packages/zest/source/components.ts @@ -61,7 +61,7 @@ export {TextLink, type TextLinkProps} from './components/TextLink.tsx'; export {View, type ViewProps} from './components/View.tsx'; // Interaction -export {Action, type ActionProps} from './components/Action.tsx'; +export {Button, type ButtonProps} from './components/Button.tsx'; export {ActionList, type ActionListProps} from './components/ActionList.tsx'; export { ContentAction, @@ -100,9 +100,9 @@ export { // Skeletons export { - SkeletonAction, - type SkeletonActionProps, -} from './components/SkeletonAction.tsx'; + SkeletonButton, + type SkeletonButtonProps, +} from './components/SkeletonButton.tsx'; export { SkeletonText, type SkeletonTextProps, diff --git a/packages/zest/source/components/Action.tsx b/packages/zest/source/components/Action.tsx deleted file mode 100644 index 3c5b1e16..00000000 --- a/packages/zest/source/components/Action.tsx +++ /dev/null @@ -1 +0,0 @@ -export {Action, type ActionProps} from './Action/Action.tsx'; diff --git a/packages/zest/source/components/Action/Action.module.css b/packages/zest/source/components/Action/Action.module.css deleted file mode 100644 index 407125c1..00000000 --- a/packages/zest/source/components/Action/Action.module.css +++ /dev/null @@ -1,643 +0,0 @@ -.Action { - --z-Icon-auto-color: var(--z-Action-icon-color); - - --z-internal-Action-border: var(--z-Action-border); - --z-internal-Action-background: var(--z-Action-background); - --z-internal-Action-divider-color: var(--z-Action-divider-color); - --z-internal-Action-shadow: var(--z-Action-shadow); - --z-internal-Action-text-color: var(--z-Action-text-color); - --z-internal-Action-corner-radius: var(--z-corner-radius-auto); - --z-internal-Action-transition: background 0.2s ease, color 0.2s ease; - --z-internal-Action-inline-padding: var(--z-spacing-auto); - --z-internal-Action-block-padding: var( - --z-internal-Action-forced-block-padding, - var(--z-spacing-small-2) - ); - --z-internal-Action-alignment: center; - --z-internal-Action-minimum-block-size: var(--z-Action-minimum-size); - - --z-internal-Action-loading-indicator-opacity: 0; - --z-internal-Action-loading-content-opacity: 1; - --z-internal-Action-loading-opacity-transition: opacity 0.2s ease; - - position: relative; - min-block-size: var(--z-internal-Action-minimum-block-size); - margin: calc(-1 * var(--z-internal-Action-inset-block-nudge, 0)) 0; - padding: calc( - var(--z-internal-Action-inset-block-size, 0px) + - var(--z-internal-Action-block-padding) - ) - var(--z-internal-Action-inline-padding); - border-block-start: var( - --z-internal-Action-inset-none, - var( - --z-internal-forced-block-start-divider, - var(--z-internal-Action-border) - ) - ); - border-block-end: var( - --z-internal-Action-inset-none, - var(--z-internal-forced-block-end-divider, var(--z-internal-Action-border)) - ); - border-inline-start: var( - --z-internal-Action-inset-none, - var( - --z-internal-forced-inline-start-divider, - var(--z-internal-Action-border) - ) - ); - border-inline-end: var( - --z-internal-Action-inset-none, - var(--z-internal-forced-inline-end-divider, var(--z-internal-Action-border)) - ); - border-radius: var( - --z-internal-Action-inset-none, - var( - --z-internal-forced-block-start-inline-start-corner-radius, - var(--z-internal-Action-corner-radius) - ) - ) - var( - --z-internal-Action-inset-none, - var( - --z-internal-forced-block-start-inline-end-corner-radius, - var(--z-internal-Action-corner-radius) - ) - ) - var( - --z-internal-Action-inset-none, - var( - --z-internal-forced-block-end-inline-end-corner-radius, - var(--z-internal-Action-corner-radius) - ) - ) - var( - --z-internal-Action-inset-none, - var( - --z-internal-forced-block-end-inline-start-corner-radius, - var(--z-internal-Action-corner-radius) - ) - ); - background: var( - --z-internal-Action-inset-none, - var(--z-internal-Action-background) - ); - box-shadow: var( - --z-internal-Action-inset-none, - var(--z-internal-Action-shadow) - ); - color: var(--z-internal-Action-text-color); - transition: var(--z-internal-Action-transition); - - &::before { - z-index: -1; - content: var(--z-internal-Action-inset-content); - display: var(--z-internal-Action-inset-display, none); - } - - &::before { - pointer-events: none; - position: absolute; - top: var(--z-internal-Action-inset-block-size, 0); - left: 0; - right: 0; - bottom: var(--z-internal-Action-inset-block-size, 0); - border: var(--z-internal-Action-border); - border-radius: var( - --z-internal-forced-block-start-inline-start-corner-radius, - var(--z-internal-Action-corner-radius) - ) - var( - --z-internal-forced-block-start-inline-end-corner-radius, - var(--z-internal-Action-corner-radius) - ) - var( - --z-internal-forced-block-end-inline-end-corner-radius, - var(--z-internal-Action-corner-radius) - ) - var( - --z-internal-forced-block-end-inline-start-corner-radius, - var(--z-internal-Action-corner-radius) - ); - background: var(--z-internal-Action-background); - box-shadow: var(--z-internal-Action-shadow); - transition: var(--z-internal-Action-transition); - } - - &:where(:hover) { - --z-Icon-auto-color: var(--z-Action-hovered-icon-color); - - --z-internal-Action-border: var(--z-Action-hovered-border); - --z-internal-Action-background: var(--z-Action-hovered-background); - --z-internal-Action-divider-color: var(--z-Action-hovered-divider-color); - --z-internal-Action-shadow: var(--z-Action-hovered-shadow); - --z-internal-Action-text-color: var(--z-Action-hovered-text-color); - } - - &:where(:focus-visible), - &:where(.focused) { - --z-Icon-auto-color: var(--z-Action-focused-icon-color); - - --z-internal-Action-border: var(--z-Action-focused-border); - --z-internal-Action-background: var(--z-Action-focused-background); - --z-internal-Action-divider-color: var(--z-Action-focused-divider-color); - --z-internal-Action-shadow: var(--z-Action-focused-shadow); - --z-internal-Action-text-color: var(--z-Action-focused-text-color); - } - - &:where(:active) { - --z-Icon-auto-color: var(--z-Action-pressed-icon-color); - - --z-internal-Action-border: var(--z-Action-pressed-border); - --z-internal-Action-background: var(--z-Action-pressed-background); - --z-internal-Action-divider-color: var(--z-Action-pressed-divider-color); - --z-internal-Action-shadow: var(--z-Action-pressed-shadow); - --z-internal-Action-text-color: var(--z-Action-pressed-text-color); - } - - &:where(.selected) { - --z-Icon-auto-color: var(--z-Action-selected-icon-color); - - --z-internal-Action-border: var(--z-Action-selected-border); - --z-internal-Action-background: var(--z-Action-selected-background); - --z-internal-Action-divider-color: var(--z-Action-selected-divider-color); - --z-internal-Action-shadow: var(--z-Action-selected-shadow); - --z-internal-Action-text-color: var(--z-Action-selected-text-color); - } - - &:where(.disabled) { - --z-Icon-auto-color: var(--z-Action-disabled-icon-color); - - --z-internal-Action-border: var(--z-Action-disabled-border); - --z-internal-Action-background: var(--z-Action-disabled-background); - --z-internal-Action-divider-color: var(--z-Action-disabled-divider-color); - --z-internal-Action-shadow: var(--z-Action-disabled-shadow); - --z-internal-Action-text-color: var(--z-Action-disabled-text-color); - } - - &:where(.inert) { - --z-Icon-auto-color: var(--z-Action-inert-icon-color); - - --z-internal-Action-border: var(--z-Action-inert-border); - --z-internal-Action-background: var(--z-Action-inert-background); - --z-internal-Action-divider-color: var(--z-Action-inert-divider-color); - --z-internal-Action-shadow: var(--z-Action-inert-shadow); - --z-internal-Action-text-color: var(--z-Action-inert-text-color); - } -} - -.emphasized { - --z-Icon-auto-color: var(--z-Action-emphasized-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-border); - --z-internal-Action-background: var(--z-Action-emphasized-background); - --z-internal-Action-divider-color: var(--z-Action-emphasized-divider-color); - --z-internal-Action-shadow: var(--z-Action-emphasized-shadow); - --z-internal-Action-text-color: var(--z-Action-emphasized-text-color); - - &:where(:hover) { - --z-Icon-auto-color: var(--z-Action-emphasized-hovered-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-hovered-border); - --z-internal-Action-background: var( - --z-Action-emphasized-hovered-background - ); - --z-internal-Action-divider-color: var( - --z-Action-emphasized-hovered-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-emphasized-hovered-shadow); - --z-internal-Action-text-color: var( - --z-Action-emphasized-hovered-text-color - ); - } - - &:where(:focus-visible), - &:where(.focused) { - --z-Icon-auto-color: var(--z-Action-emphasized-focused-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-focused-border); - --z-internal-Action-background: var( - --z-Action-emphasized-focused-background - ); - --z-internal-Action-divider-color: var( - --z-Action-emphasized-focused-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-emphasized-focused-shadow); - --z-internal-Action-text-color: var( - --z-Action-emphasized-focused-text-color - ); - } - - &:where(:active) { - --z-Icon-auto-color: var(--z-Action-emphasized-pressed-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-pressed-border); - --z-internal-Action-background: var( - --z-Action-emphasized-pressed-background - ); - --z-internal-Action-divider-color: var( - --z-Action-emphasized-pressed-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-emphasized-pressed-shadow); - --z-internal-Action-text-color: var( - --z-Action-emphasized-pressed-text-color - ); - } - - &:where(.selected) { - --z-Icon-auto-color: var(--z-Action-emphasized-selected-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-selected-border); - --z-internal-Action-background: var( - --z-Action-emphasized-selected-background - ); - --z-internal-Action-divider-color: var( - --z-Action-emphasized-selected-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-emphasized-selected-shadow); - --z-internal-Action-text-color: var( - --z-Action-emphasized-selected-text-color - ); - } - - &:where(.disabled) { - --z-Icon-auto-color: var(--z-Action-emphasized-disabled-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-disabled-border); - --z-internal-Action-background: var( - --z-Action-emphasized-disabled-background - ); - --z-internal-Action-divider-color: var( - --z-Action-emphasized-disabled-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-emphasized-disabled-shadow); - --z-internal-Action-text-color: var( - --z-Action-emphasized-disabled-text-color - ); - } - - &:where(.inert) { - --z-Icon-auto-color: var(--z-Action-emphasized-inert-icon-color); - - --z-internal-Action-border: var(--z-Action-emphasized-inert-border); - --z-internal-Action-background: var(--z-Action-emphasized-inert-background); - --z-internal-Action-divider-color: var( - --z-Action-emphasized-inert-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-emphasized-inert-shadow); - --z-internal-Action-text-color: var(--z-Action-emphasized-inert-text-color); - } -} - -.subdued { - --z-Icon-auto-color: var(--z-Action-subdued-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-border); - --z-internal-Action-background: var(--z-Action-subdued-background); - --z-internal-Action-divider-color: var(--z-Action-subdued-divider-color); - --z-internal-Action-shadow: var(--z-Action-subdued-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-text-color); - - &:where(:hover) { - --z-Icon-auto-color: var(--z-Action-subdued-hovered-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-hovered-border); - --z-internal-Action-background: var(--z-Action-subdued-hovered-background); - --z-internal-Action-divider-color: var( - --z-Action-subdued-hovered-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-subdued-hovered-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-hovered-text-color); - } - - &:where(:focus-visible), - &:where(.focused) { - --z-Icon-auto-color: var(--z-Action-subdued-focused-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-focused-border); - --z-internal-Action-background: var(--z-Action-subdued-focused-background); - --z-internal-Action-divider-color: var( - --z-Action-subdued-focused-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-subdued-focused-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-focused-text-color); - } - - &:where(:active) { - --z-Icon-auto-color: var(--z-Action-subdued-pressed-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-pressed-border); - --z-internal-Action-background: var(--z-Action-subdued-pressed-background); - --z-internal-Action-divider-color: var( - --z-Action-subdued-pressed-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-subdued-pressed-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-pressed-text-color); - } - - &:where(.selected) { - --z-Icon-auto-color: var(--z-Action-subdued-selected-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-selected-border); - --z-internal-Action-background: var(--z-Action-subdued-selected-background); - --z-internal-Action-divider-color: var( - --z-Action-subdued-selected-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-subdued-selected-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-selected-text-color); - } - - &:where(.disabled) { - --z-Icon-auto-color: var(--z-Action-subdued-disabled-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-disabled-border); - --z-internal-Action-background: var(--z-Action-subdued-disabled-background); - --z-internal-Action-divider-color: var( - --z-Action-subdued-disabled-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-subdued-disabled-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-disabled-text-color); - } - - &:where(.inert) { - --z-Icon-auto-color: var(--z-Action-subdued-inert-icon-color); - - --z-internal-Action-border: var(--z-Action-subdued-inert-border); - --z-internal-Action-background: var(--z-Action-subdued-inert-background); - --z-internal-Action-divider-color: var( - --z-Action-subdued-inert-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-subdued-inert-shadow); - --z-internal-Action-text-color: var(--z-Action-subdued-inert-text-color); - } -} - -.destructive { - --z-Icon-auto-color: var(--z-Action-destructive-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-border); - --z-internal-Action-background: var(--z-Action-destructive-background); - --z-internal-Action-divider-color: var(--z-Action-destructive-divider-color); - --z-internal-Action-shadow: var(--z-Action-destructive-shadow); - --z-internal-Action-text-color: var(--z-Action-destructive-text-color); - - &:where(:hover) { - --z-Icon-auto-color: var(--z-Action-destructive-hovered-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-hovered-border); - --z-internal-Action-background: var( - --z-Action-destructive-hovered-background - ); - --z-internal-Action-divider-color: var( - --z-Action-destructive-hovered-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-destructive-hovered-shadow); - --z-internal-Action-text-color: var( - --z-Action-destructive-hovered-text-color - ); - } - - &:where(:focus-visible), - &:where(.focused) { - --z-Icon-auto-color: var(--z-Action-destructive-focused-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-focused-border); - --z-internal-Action-background: var( - --z-Action-destructive-focused-background - ); - --z-internal-Action-divider-color: var( - --z-Action-destructive-focused-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-destructive-focused-shadow); - --z-internal-Action-text-color: var( - --z-Action-destructive-focused-text-color - ); - } - - &:where(:active) { - --z-Icon-auto-color: var(--z-Action-destructive-pressed-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-pressed-border); - --z-internal-Action-background: var( - --z-Action-destructive-pressed-background - ); - --z-internal-Action-divider-color: var( - --z-Action-destructive-pressed-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-destructive-pressed-shadow); - --z-internal-Action-text-color: var( - --z-Action-destructive-pressed-text-color - ); - } - - &:where(.selected) { - --z-Icon-auto-color: var(--z-Action-destructive-selected-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-selected-border); - --z-internal-Action-background: var( - --z-Action-destructive-selected-background - ); - --z-internal-Action-divider-color: var( - --z-Action-destructive-selected-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-destructive-selected-shadow); - --z-internal-Action-text-color: var( - --z-Action-destructive-selected-text-color - ); - } - - &:where(.disabled) { - --z-Icon-auto-color: var(--z-Action-destructive-disabled-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-disabled-border); - --z-internal-Action-background: var( - --z-Action-destructive-disabled-background - ); - --z-internal-Action-divider-color: var( - --z-Action-destructive-disabled-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-destructive-disabled-shadow); - --z-internal-Action-text-color: var( - --z-Action-destructive-disabled-text-color - ); - } - - &:where(.inert) { - --z-Icon-auto-color: var(--z-Action-destructive-inert-icon-color); - - --z-internal-Action-border: var(--z-Action-destructive-inert-border); - --z-internal-Action-background: var( - --z-Action-destructive-inert-background - ); - --z-internal-Action-divider-color: var( - --z-Action-destructive-inert-divider-color - ); - --z-internal-Action-shadow: var(--z-Action-destructive-inert-shadow); - --z-internal-Action-text-color: var( - --z-Action-destructive-inert-text-color - ); - } -} - -.sizeSmall { - --z-internal-Action-inset-content: ''; - --z-internal-Action-inset-display: block; - --z-internal-Action-inset-none: none; - --z-internal-Action-inset-block-size: var(--z-spacing-small-1); - --z-internal-Action-inset-block-nudge: var( - --z-internal-Action-inset-block-size - ); - - --z-internal-Action-inline-padding: var(--z-spacing-small-1); -} - -.sizeLarge { - --z-internal-Action-inline-padding: var(--z-spacing-large-1); - --z-internal-Action-minimum-block-size: 3.25rem; -} - -.inlineSizeFill { - justify-self: stretch; -} - -.spacing { - gap: var(--z-spacing-small-1); -} - -.hasIcon { - grid-template-columns: auto auto; - - & > *:first-child { - align-self: var(--z-internal-Action-alignment); - } - - &:not(.sizeSmall) > *:first-child { - margin-inline-start: calc(-0.5 * var(--z-spacing-small-1)); - - &:only-child { - margin-inline-end: calc(-0.5 * var(--z-spacing-small-1)); - } - } - - &.sizeSmall > *:first-child { - margin-block-start: calc(-0.5 * var(--z-Icon-auto-size)); - margin-block-end: calc(-0.5 * var(--z-Icon-auto-size)); - } -} - -.iconAlignmentStart { - --z-internal-Action-alignment: start; -} - -.iconAlignmentEnd { - --z-internal-Action-alignment: end; -} - -.iconAlignmentCenter { - --z-internal-Action-alignment: center; -} - -.Content { - opacity: var(--z-internal-Action-loading-content-opacity); - transition: var(--z-internal-Action-loading-opacity-transition); -} - -.hasDetail { - grid-template-columns: 1fr auto; -} - -.hasIcon.hasDetail { - grid-template-columns: auto 1fr auto; -} - -.loading { - --z-internal-Action-loading-indicator-opacity: 1; - - &:not(.hasIcon) { - --z-internal-Action-loading-content-opacity: 0; - } - - &.hasIcon { - --z-internal-Action-loading-icon-opacity: 0; - } -} - -.IconContainer { - position: relative; -} - -.Icon { - opacity: var(--z-internal-Action-loading-icon-opacity); - transition: var(--z-internal-Action-loading-opacity-transition); - display: flex; - align-items: center; - justify-content: center; -} - -.LoadingContent { - pointer-events: none; - position: absolute; - inset: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - opacity: var(--z-internal-Action-loading-indicator-opacity); - transition: var(--z-internal-Action-loading-opacity-transition); -} - -.LoadingIcon { - --z-internal-Loading-icon-size: 1.25rem; - - width: var(--z-internal-Loading-icon-size); - height: var(--z-internal-Loading-icon-size); - position: relative; -} - -.LoadingIcon::after, -.LoadingIcon::before { - content: ''; - box-sizing: border-box; - width: var(--z-internal-Loading-icon-size); - height: var(--z-internal-Loading-icon-size); - border-radius: 50%; - background: var(--z-Icon-auto-color); - position: absolute; - left: 0; - top: 0; - animation: actionLoadingIcon 1.2s ease-out infinite; -} - -.LoadingIcon::after { - animation-delay: -0.6s; -} - -@keyframes actionLoadingIcon { - 0% { - transform: scale(0); - opacity: 1; - } - 100% { - transform: scale(1); - opacity: 0; - } -} - -.ActionContainer { - display: var( - --z-internal-display-none, - var(--z-internal-display-grid, inline-grid) - ); - grid-template-columns: 1fr auto; -} - -.connectedMain { - border-start-end-radius: 0; - border-end-end-radius: 0; - border-inline-end: 1px solid var(--z-internal-Action-divider-color); -} - -.connectedAccessory { - border-start-start-radius: 0; - border-end-start-radius: 0; -} diff --git a/packages/zest/source/components/Button.tsx b/packages/zest/source/components/Button.tsx new file mode 100644 index 00000000..de88b42c --- /dev/null +++ b/packages/zest/source/components/Button.tsx @@ -0,0 +1 @@ +export {Button, type ButtonProps} from './Button/Button.tsx'; diff --git a/packages/zest/source/components/Button/Button.module.css b/packages/zest/source/components/Button/Button.module.css new file mode 100644 index 00000000..5e4c5ff4 --- /dev/null +++ b/packages/zest/source/components/Button/Button.module.css @@ -0,0 +1,643 @@ +.Button { + --z-Icon-auto-color: var(--z-Button-icon-color); + + --z-internal-Button-border: var(--z-Button-border); + --z-internal-Button-background: var(--z-Button-background); + --z-internal-Button-divider-color: var(--z-Button-divider-color); + --z-internal-Button-shadow: var(--z-Button-shadow); + --z-internal-Button-text-color: var(--z-Button-text-color); + --z-internal-Button-corner-radius: var(--z-corner-radius-auto); + --z-internal-Button-transition: background 0.2s ease, color 0.2s ease; + --z-internal-Button-inline-padding: var(--z-spacing-auto); + --z-internal-Button-block-padding: var( + --z-internal-Button-forced-block-padding, + var(--z-spacing-small-2) + ); + --z-internal-Button-alignment: center; + --z-internal-Button-minimum-block-size: var(--z-Button-minimum-size); + + --z-internal-Button-loading-indicator-opacity: 0; + --z-internal-Button-loading-content-opacity: 1; + --z-internal-Button-loading-opacity-transition: opacity 0.2s ease; + + position: relative; + min-block-size: var(--z-internal-Button-minimum-block-size); + margin: calc(-1 * var(--z-internal-Button-inset-block-nudge, 0)) 0; + padding: calc( + var(--z-internal-Button-inset-block-size, 0px) + + var(--z-internal-Button-block-padding) + ) + var(--z-internal-Button-inline-padding); + border-block-start: var( + --z-internal-Button-inset-none, + var( + --z-internal-forced-block-start-divider, + var(--z-internal-Button-border) + ) + ); + border-block-end: var( + --z-internal-Button-inset-none, + var(--z-internal-forced-block-end-divider, var(--z-internal-Button-border)) + ); + border-inline-start: var( + --z-internal-Button-inset-none, + var( + --z-internal-forced-inline-start-divider, + var(--z-internal-Button-border) + ) + ); + border-inline-end: var( + --z-internal-Button-inset-none, + var(--z-internal-forced-inline-end-divider, var(--z-internal-Button-border)) + ); + border-radius: var( + --z-internal-Button-inset-none, + var( + --z-internal-forced-block-start-inline-start-corner-radius, + var(--z-internal-Button-corner-radius) + ) + ) + var( + --z-internal-Button-inset-none, + var( + --z-internal-forced-block-start-inline-end-corner-radius, + var(--z-internal-Button-corner-radius) + ) + ) + var( + --z-internal-Button-inset-none, + var( + --z-internal-forced-block-end-inline-end-corner-radius, + var(--z-internal-Button-corner-radius) + ) + ) + var( + --z-internal-Button-inset-none, + var( + --z-internal-forced-block-end-inline-start-corner-radius, + var(--z-internal-Button-corner-radius) + ) + ); + background: var( + --z-internal-Button-inset-none, + var(--z-internal-Button-background) + ); + box-shadow: var( + --z-internal-Button-inset-none, + var(--z-internal-Button-shadow) + ); + color: var(--z-internal-Button-text-color); + transition: var(--z-internal-Button-transition); + + &::before { + z-index: -1; + content: var(--z-internal-Button-inset-content); + display: var(--z-internal-Button-inset-display, none); + } + + &::before { + pointer-events: none; + position: absolute; + top: var(--z-internal-Button-inset-block-size, 0); + left: 0; + right: 0; + bottom: var(--z-internal-Button-inset-block-size, 0); + border: var(--z-internal-Button-border); + border-radius: var( + --z-internal-forced-block-start-inline-start-corner-radius, + var(--z-internal-Button-corner-radius) + ) + var( + --z-internal-forced-block-start-inline-end-corner-radius, + var(--z-internal-Button-corner-radius) + ) + var( + --z-internal-forced-block-end-inline-end-corner-radius, + var(--z-internal-Button-corner-radius) + ) + var( + --z-internal-forced-block-end-inline-start-corner-radius, + var(--z-internal-Button-corner-radius) + ); + background: var(--z-internal-Button-background); + box-shadow: var(--z-internal-Button-shadow); + transition: var(--z-internal-Button-transition); + } + + &:where(:hover) { + --z-Icon-auto-color: var(--z-Button-hovered-icon-color); + + --z-internal-Button-border: var(--z-Button-hovered-border); + --z-internal-Button-background: var(--z-Button-hovered-background); + --z-internal-Button-divider-color: var(--z-Button-hovered-divider-color); + --z-internal-Button-shadow: var(--z-Button-hovered-shadow); + --z-internal-Button-text-color: var(--z-Button-hovered-text-color); + } + + &:where(:focus-visible), + &:where(.focused) { + --z-Icon-auto-color: var(--z-Button-focused-icon-color); + + --z-internal-Button-border: var(--z-Button-focused-border); + --z-internal-Button-background: var(--z-Button-focused-background); + --z-internal-Button-divider-color: var(--z-Button-focused-divider-color); + --z-internal-Button-shadow: var(--z-Button-focused-shadow); + --z-internal-Button-text-color: var(--z-Button-focused-text-color); + } + + &:where(:active) { + --z-Icon-auto-color: var(--z-Button-pressed-icon-color); + + --z-internal-Button-border: var(--z-Button-pressed-border); + --z-internal-Button-background: var(--z-Button-pressed-background); + --z-internal-Button-divider-color: var(--z-Button-pressed-divider-color); + --z-internal-Button-shadow: var(--z-Button-pressed-shadow); + --z-internal-Button-text-color: var(--z-Button-pressed-text-color); + } + + &:where(.selected) { + --z-Icon-auto-color: var(--z-Button-selected-icon-color); + + --z-internal-Button-border: var(--z-Button-selected-border); + --z-internal-Button-background: var(--z-Button-selected-background); + --z-internal-Button-divider-color: var(--z-Button-selected-divider-color); + --z-internal-Button-shadow: var(--z-Button-selected-shadow); + --z-internal-Button-text-color: var(--z-Button-selected-text-color); + } + + &:where(.disabled) { + --z-Icon-auto-color: var(--z-Button-disabled-icon-color); + + --z-internal-Button-border: var(--z-Button-disabled-border); + --z-internal-Button-background: var(--z-Button-disabled-background); + --z-internal-Button-divider-color: var(--z-Button-disabled-divider-color); + --z-internal-Button-shadow: var(--z-Button-disabled-shadow); + --z-internal-Button-text-color: var(--z-Button-disabled-text-color); + } + + &:where(.inert) { + --z-Icon-auto-color: var(--z-Button-inert-icon-color); + + --z-internal-Button-border: var(--z-Button-inert-border); + --z-internal-Button-background: var(--z-Button-inert-background); + --z-internal-Button-divider-color: var(--z-Button-inert-divider-color); + --z-internal-Button-shadow: var(--z-Button-inert-shadow); + --z-internal-Button-text-color: var(--z-Button-inert-text-color); + } +} + +.emphasized { + --z-Icon-auto-color: var(--z-Button-emphasized-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-border); + --z-internal-Button-background: var(--z-Button-emphasized-background); + --z-internal-Button-divider-color: var(--z-Button-emphasized-divider-color); + --z-internal-Button-shadow: var(--z-Button-emphasized-shadow); + --z-internal-Button-text-color: var(--z-Button-emphasized-text-color); + + &:where(:hover) { + --z-Icon-auto-color: var(--z-Button-emphasized-hovered-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-hovered-border); + --z-internal-Button-background: var( + --z-Button-emphasized-hovered-background + ); + --z-internal-Button-divider-color: var( + --z-Button-emphasized-hovered-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-emphasized-hovered-shadow); + --z-internal-Button-text-color: var( + --z-Button-emphasized-hovered-text-color + ); + } + + &:where(:focus-visible), + &:where(.focused) { + --z-Icon-auto-color: var(--z-Button-emphasized-focused-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-focused-border); + --z-internal-Button-background: var( + --z-Button-emphasized-focused-background + ); + --z-internal-Button-divider-color: var( + --z-Button-emphasized-focused-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-emphasized-focused-shadow); + --z-internal-Button-text-color: var( + --z-Button-emphasized-focused-text-color + ); + } + + &:where(:active) { + --z-Icon-auto-color: var(--z-Button-emphasized-pressed-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-pressed-border); + --z-internal-Button-background: var( + --z-Button-emphasized-pressed-background + ); + --z-internal-Button-divider-color: var( + --z-Button-emphasized-pressed-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-emphasized-pressed-shadow); + --z-internal-Button-text-color: var( + --z-Button-emphasized-pressed-text-color + ); + } + + &:where(.selected) { + --z-Icon-auto-color: var(--z-Button-emphasized-selected-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-selected-border); + --z-internal-Button-background: var( + --z-Button-emphasized-selected-background + ); + --z-internal-Button-divider-color: var( + --z-Button-emphasized-selected-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-emphasized-selected-shadow); + --z-internal-Button-text-color: var( + --z-Button-emphasized-selected-text-color + ); + } + + &:where(.disabled) { + --z-Icon-auto-color: var(--z-Button-emphasized-disabled-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-disabled-border); + --z-internal-Button-background: var( + --z-Button-emphasized-disabled-background + ); + --z-internal-Button-divider-color: var( + --z-Button-emphasized-disabled-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-emphasized-disabled-shadow); + --z-internal-Button-text-color: var( + --z-Button-emphasized-disabled-text-color + ); + } + + &:where(.inert) { + --z-Icon-auto-color: var(--z-Button-emphasized-inert-icon-color); + + --z-internal-Button-border: var(--z-Button-emphasized-inert-border); + --z-internal-Button-background: var(--z-Button-emphasized-inert-background); + --z-internal-Button-divider-color: var( + --z-Button-emphasized-inert-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-emphasized-inert-shadow); + --z-internal-Button-text-color: var(--z-Button-emphasized-inert-text-color); + } +} + +.subdued { + --z-Icon-auto-color: var(--z-Button-subdued-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-border); + --z-internal-Button-background: var(--z-Button-subdued-background); + --z-internal-Button-divider-color: var(--z-Button-subdued-divider-color); + --z-internal-Button-shadow: var(--z-Button-subdued-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-text-color); + + &:where(:hover) { + --z-Icon-auto-color: var(--z-Button-subdued-hovered-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-hovered-border); + --z-internal-Button-background: var(--z-Button-subdued-hovered-background); + --z-internal-Button-divider-color: var( + --z-Button-subdued-hovered-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-subdued-hovered-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-hovered-text-color); + } + + &:where(:focus-visible), + &:where(.focused) { + --z-Icon-auto-color: var(--z-Button-subdued-focused-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-focused-border); + --z-internal-Button-background: var(--z-Button-subdued-focused-background); + --z-internal-Button-divider-color: var( + --z-Button-subdued-focused-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-subdued-focused-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-focused-text-color); + } + + &:where(:active) { + --z-Icon-auto-color: var(--z-Button-subdued-pressed-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-pressed-border); + --z-internal-Button-background: var(--z-Button-subdued-pressed-background); + --z-internal-Button-divider-color: var( + --z-Button-subdued-pressed-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-subdued-pressed-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-pressed-text-color); + } + + &:where(.selected) { + --z-Icon-auto-color: var(--z-Button-subdued-selected-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-selected-border); + --z-internal-Button-background: var(--z-Button-subdued-selected-background); + --z-internal-Button-divider-color: var( + --z-Button-subdued-selected-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-subdued-selected-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-selected-text-color); + } + + &:where(.disabled) { + --z-Icon-auto-color: var(--z-Button-subdued-disabled-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-disabled-border); + --z-internal-Button-background: var(--z-Button-subdued-disabled-background); + --z-internal-Button-divider-color: var( + --z-Button-subdued-disabled-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-subdued-disabled-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-disabled-text-color); + } + + &:where(.inert) { + --z-Icon-auto-color: var(--z-Button-subdued-inert-icon-color); + + --z-internal-Button-border: var(--z-Button-subdued-inert-border); + --z-internal-Button-background: var(--z-Button-subdued-inert-background); + --z-internal-Button-divider-color: var( + --z-Button-subdued-inert-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-subdued-inert-shadow); + --z-internal-Button-text-color: var(--z-Button-subdued-inert-text-color); + } +} + +.destructive { + --z-Icon-auto-color: var(--z-Button-destructive-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-border); + --z-internal-Button-background: var(--z-Button-destructive-background); + --z-internal-Button-divider-color: var(--z-Button-destructive-divider-color); + --z-internal-Button-shadow: var(--z-Button-destructive-shadow); + --z-internal-Button-text-color: var(--z-Button-destructive-text-color); + + &:where(:hover) { + --z-Icon-auto-color: var(--z-Button-destructive-hovered-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-hovered-border); + --z-internal-Button-background: var( + --z-Button-destructive-hovered-background + ); + --z-internal-Button-divider-color: var( + --z-Button-destructive-hovered-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-destructive-hovered-shadow); + --z-internal-Button-text-color: var( + --z-Button-destructive-hovered-text-color + ); + } + + &:where(:focus-visible), + &:where(.focused) { + --z-Icon-auto-color: var(--z-Button-destructive-focused-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-focused-border); + --z-internal-Button-background: var( + --z-Button-destructive-focused-background + ); + --z-internal-Button-divider-color: var( + --z-Button-destructive-focused-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-destructive-focused-shadow); + --z-internal-Button-text-color: var( + --z-Button-destructive-focused-text-color + ); + } + + &:where(:active) { + --z-Icon-auto-color: var(--z-Button-destructive-pressed-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-pressed-border); + --z-internal-Button-background: var( + --z-Button-destructive-pressed-background + ); + --z-internal-Button-divider-color: var( + --z-Button-destructive-pressed-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-destructive-pressed-shadow); + --z-internal-Button-text-color: var( + --z-Button-destructive-pressed-text-color + ); + } + + &:where(.selected) { + --z-Icon-auto-color: var(--z-Button-destructive-selected-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-selected-border); + --z-internal-Button-background: var( + --z-Button-destructive-selected-background + ); + --z-internal-Button-divider-color: var( + --z-Button-destructive-selected-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-destructive-selected-shadow); + --z-internal-Button-text-color: var( + --z-Button-destructive-selected-text-color + ); + } + + &:where(.disabled) { + --z-Icon-auto-color: var(--z-Button-destructive-disabled-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-disabled-border); + --z-internal-Button-background: var( + --z-Button-destructive-disabled-background + ); + --z-internal-Button-divider-color: var( + --z-Button-destructive-disabled-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-destructive-disabled-shadow); + --z-internal-Button-text-color: var( + --z-Button-destructive-disabled-text-color + ); + } + + &:where(.inert) { + --z-Icon-auto-color: var(--z-Button-destructive-inert-icon-color); + + --z-internal-Button-border: var(--z-Button-destructive-inert-border); + --z-internal-Button-background: var( + --z-Button-destructive-inert-background + ); + --z-internal-Button-divider-color: var( + --z-Button-destructive-inert-divider-color + ); + --z-internal-Button-shadow: var(--z-Button-destructive-inert-shadow); + --z-internal-Button-text-color: var( + --z-Button-destructive-inert-text-color + ); + } +} + +.sizeSmall { + --z-internal-Button-inset-content: ''; + --z-internal-Button-inset-display: block; + --z-internal-Button-inset-none: none; + --z-internal-Button-inset-block-size: var(--z-spacing-small-1); + --z-internal-Button-inset-block-nudge: var( + --z-internal-Button-inset-block-size + ); + + --z-internal-Button-inline-padding: var(--z-spacing-small-1); +} + +.sizeLarge { + --z-internal-Button-inline-padding: var(--z-spacing-large-1); + --z-internal-Button-minimum-block-size: 3.25rem; +} + +.inlineSizeFill { + justify-self: stretch; +} + +.spacing { + gap: var(--z-spacing-small-1); +} + +.hasIcon { + grid-template-columns: auto auto; + + & > *:first-child { + align-self: var(--z-internal-Button-alignment); + } + + &:not(.sizeSmall) > *:first-child { + margin-inline-start: calc(-0.5 * var(--z-spacing-small-1)); + + &:only-child { + margin-inline-end: calc(-0.5 * var(--z-spacing-small-1)); + } + } + + &.sizeSmall > *:first-child { + margin-block-start: calc(-0.5 * var(--z-Icon-auto-size)); + margin-block-end: calc(-0.5 * var(--z-Icon-auto-size)); + } +} + +.iconAlignmentStart { + --z-internal-Button-alignment: start; +} + +.iconAlignmentEnd { + --z-internal-Button-alignment: end; +} + +.iconAlignmentCenter { + --z-internal-Button-alignment: center; +} + +.Content { + opacity: var(--z-internal-Button-loading-content-opacity); + transition: var(--z-internal-Button-loading-opacity-transition); +} + +.hasDetail { + grid-template-columns: 1fr auto; +} + +.hasIcon.hasDetail { + grid-template-columns: auto 1fr auto; +} + +.loading { + --z-internal-Button-loading-indicator-opacity: 1; + + &:not(.hasIcon) { + --z-internal-Button-loading-content-opacity: 0; + } + + &.hasIcon { + --z-internal-Button-loading-icon-opacity: 0; + } +} + +.IconContainer { + position: relative; +} + +.Icon { + opacity: var(--z-internal-Button-loading-icon-opacity); + transition: var(--z-internal-Button-loading-opacity-transition); + display: flex; + align-items: center; + justify-content: center; +} + +.LoadingContent { + pointer-events: none; + position: absolute; + inset: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + opacity: var(--z-internal-Button-loading-indicator-opacity); + transition: var(--z-internal-Button-loading-opacity-transition); +} + +.LoadingIcon { + --z-internal-Loading-icon-size: 1.25rem; + + width: var(--z-internal-Loading-icon-size); + height: var(--z-internal-Loading-icon-size); + position: relative; +} + +.LoadingIcon::after, +.LoadingIcon::before { + content: ''; + box-sizing: border-box; + width: var(--z-internal-Loading-icon-size); + height: var(--z-internal-Loading-icon-size); + border-radius: 50%; + background: var(--z-Icon-auto-color); + position: absolute; + left: 0; + top: 0; + animation: buttonLoadingIcon 1.2s ease-out infinite; +} + +.LoadingIcon::after { + animation-delay: -0.6s; +} + +@keyframes buttonLoadingIcon { + 0% { + transform: scale(0); + opacity: 1; + } + 100% { + transform: scale(1); + opacity: 0; + } +} + +.ButtonContainer { + display: var( + --z-internal-display-none, + var(--z-internal-display-grid, inline-grid) + ); + grid-template-columns: 1fr auto; +} + +.connectedMain { + border-start-end-radius: 0; + border-end-end-radius: 0; + border-inline-end: 1px solid var(--z-internal-Button-divider-color); +} + +.connectedAccessory { + border-start-start-radius: 0; + border-end-start-radius: 0; +} diff --git a/packages/zest/source/components/Action/Action.tsx b/packages/zest/source/components/Button/Button.tsx similarity index 96% rename from packages/zest/source/components/Action/Action.tsx rename to packages/zest/source/components/Button/Button.tsx index 4f1c6713..1331c0b0 100644 --- a/packages/zest/source/components/Action/Action.tsx +++ b/packages/zest/source/components/Button/Button.tsx @@ -27,9 +27,9 @@ import type { BasicAlignmentKeyword, } from '../../system.ts'; -import styles from './Action.module.css'; +import styles from './Button.module.css'; -export type ActionProps = Omit & { +export type ButtonProps = Omit & { emphasis?: EmphasisValue; loading?: SignalOrValue; icon?: IconSource | VNode; @@ -41,7 +41,7 @@ export type ActionProps = Omit & { inlineSize?: 'content' | 'fill'; }; -export function Action({ +export function Button({ ref, role, disabled, @@ -60,7 +60,7 @@ export function Action({ perform, onPress, ...rest -}: RenderableProps) { +}: RenderableProps) { const needsGrid = Boolean(children) && Boolean(detail || icon); const connectedAccessory = useConnectedAccessory(); const menu = useMenuController({optional: true}); diff --git a/packages/zest/source/components/DatePicker/DatePicker.tsx b/packages/zest/source/components/DatePicker/DatePicker.tsx index 0caeda4d..3cdf3e1a 100644 --- a/packages/zest/source/components/DatePicker/DatePicker.tsx +++ b/packages/zest/source/components/DatePicker/DatePicker.tsx @@ -18,7 +18,7 @@ import { isSameDay, } from 'date-fns'; -import {Action} from '../Action.tsx'; +import {Button} from '../Button.tsx'; import {Popover} from '../Popover.tsx'; import {Menu} from '../Menu.tsx'; import {Text} from '../Text.tsx'; @@ -62,14 +62,14 @@ export function DatePicker({id, label, value, onChange}: DatePickerProps) { ); return ( - : null } accessory={ resolvedValue == null || handleChange == null ? null : ( - handleChange(undefined)} @@ -78,7 +78,7 @@ export function DatePicker({id, label, value, onChange}: DatePickerProps) { } > {content} - + ); } @@ -111,24 +111,24 @@ function DatePickerPopover({ const menuItems = currentDateSearch === '' ? ( <> - onChange(startOfToday())}> + + ) : ( dateSuggestions.value.map(({date, label, detail}) => { return ( - onChange(date)} detail={{detail}} > {label} - + ); }) ); diff --git a/packages/zest/source/components/SkeletonAction.tsx b/packages/zest/source/components/SkeletonAction.tsx deleted file mode 100644 index 263df4c3..00000000 --- a/packages/zest/source/components/SkeletonAction.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - SkeletonAction, - type SkeletonActionProps, -} from './SkeletonAction/SkeletonAction.tsx'; diff --git a/packages/zest/source/components/SkeletonButton.tsx b/packages/zest/source/components/SkeletonButton.tsx new file mode 100644 index 00000000..c51913b8 --- /dev/null +++ b/packages/zest/source/components/SkeletonButton.tsx @@ -0,0 +1,4 @@ +export { + SkeletonButton, + type SkeletonButtonProps, +} from './SkeletonButton/SkeletonButton.tsx'; diff --git a/packages/zest/source/components/SkeletonAction/SkeletonAction.module.css b/packages/zest/source/components/SkeletonButton/SkeletonButton.module.css similarity index 67% rename from packages/zest/source/components/SkeletonAction/SkeletonAction.module.css rename to packages/zest/source/components/SkeletonButton/SkeletonButton.module.css index 1a976324..ea264c25 100644 --- a/packages/zest/source/components/SkeletonAction/SkeletonAction.module.css +++ b/packages/zest/source/components/SkeletonButton/SkeletonButton.module.css @@ -1,5 +1,5 @@ -.SkeletonAction { - --z-internal-SkeletonAction-content-size: 4rem; +.SkeletonButton { + --z-internal-SkeletonButton-content-size: 4rem; display: inline-flex; align-items: center; @@ -12,7 +12,7 @@ &::after { content: ''; display: block; - inline-size: var(--z-internal-SkeletonAction-content-size); + inline-size: var(--z-internal-SkeletonButton-content-size); block-size: calc(0.8 * var(--z-text-auto-font-size)); background-color: var(--z-text-subdued-color); border-radius: var(--z-corner-radius-auto); @@ -20,9 +20,9 @@ } .sizeSmall { - --z-internal-SkeletonAction-content-size: 2rem; + --z-internal-SkeletonButton-content-size: 2rem; } .sizeLarge { - --z-internal-SkeletonAction-content-size: 8rem; + --z-internal-SkeletonButton-content-size: 8rem; } diff --git a/packages/zest/source/components/SkeletonAction/SkeletonAction.tsx b/packages/zest/source/components/SkeletonButton/SkeletonButton.tsx similarity index 59% rename from packages/zest/source/components/SkeletonAction/SkeletonAction.tsx rename to packages/zest/source/components/SkeletonButton/SkeletonButton.tsx index d14d570c..c82c29ba 100644 --- a/packages/zest/source/components/SkeletonAction/SkeletonAction.tsx +++ b/packages/zest/source/components/SkeletonButton/SkeletonButton.tsx @@ -1,13 +1,13 @@ import type {RenderableProps} from 'preact'; import {classes} from '@lemon/css'; -import type {SkeletonActionProperties} from '@watching/clips'; +import type {SkeletonButtonProperties} from '@watching/clips'; import {CSSLiteral} from '../../system.ts'; -import styles from './SkeletonAction.module.css'; +import styles from './SkeletonButton.module.css'; -export interface SkeletonActionProps - extends Partial {} +export interface SkeletonButtonProps + extends Partial {} const SIZE_CLASS_MAP = new Map([ ['small.1', styles.sizeSmall], @@ -17,16 +17,16 @@ const SIZE_CLASS_MAP = new Map([ ['large.1', styles.sizeLarge], ]); -export function SkeletonAction({size}: RenderableProps) { +export function SkeletonButton({size}: RenderableProps) { return ( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index adb1b4d1..03aa0808 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -435,8 +435,8 @@ importers: specifier: ^1.5.0 version: 1.5.0(@preact/signals-core@1.8.0)(preact@10.23.2) '@watching/design': - specifier: ^0.1.0 - version: 0.1.0 + specifier: workspace:^0.1.0 + version: link:../design packages/clips-preact: dependencies: @@ -3122,10 +3122,6 @@ packages: '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@watching/design@0.1.0': - resolution: {integrity: sha512-A8BqeUiQlJKouxylsTWyoX2gYkWqmTjG3XbrAfNjL8BMV+pa4UvNhO4WQzxKwzajiTlNTaRDzzZUk2OArbz3Yw==} - engines: {node: '>=18.0.0'} - '@web3-storage/multipart-parser@1.0.0': resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} @@ -8965,8 +8961,6 @@ snapshots: loupe: 3.1.1 tinyrainbow: 1.2.0 - '@watching/design@0.1.0': {} - '@web3-storage/multipart-parser@1.0.0': {} '@zxing/text-encoding@0.9.0':