From a88dd89873c7eb979e6b451f71f28fd684164223 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 28 Nov 2025 18:55:03 -0800 Subject: [PATCH] fix: resolve component prop exactOptionalPropertyTypes issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add | undefined to DropZone Props interface (item, canDrop, onDrop) - Fix users.ts by properly typing updates object with | undefined - Apply optionalProps to SegmentedControl restProps spreading Maintains 57 errors (some regressed, some fixed). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/lib/api/resources/users.ts | 13 +++++++------ src/lib/components/dnd/DropZone.svelte | 6 +++--- .../ui/segmented-control/SegmentedControl.svelte | 3 ++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/lib/api/resources/users.ts b/src/lib/api/resources/users.ts index f5e45284..29b69628 100644 --- a/src/lib/api/resources/users.ts +++ b/src/lib/api/resources/users.ts @@ -1,4 +1,5 @@ import { userAdapter } from '../adapters/user.adapter' +import { optionalProps } from '$lib/utils/typeShims' export interface UserUpdateParams { picture?: string | undefined @@ -27,12 +28,12 @@ export const users = { */ update: async (userId: string, params: UserUpdateParams): Promise => { // Transform flat params to nested UserInfo structure - const updates: Partial<{ - gender: number | undefined - language: string | undefined - theme: string | undefined - avatar: { picture?: string | undefined; element?: string | undefined } - }> = {} + const updates: { + gender?: number | undefined + language?: string | undefined + theme?: string | undefined + avatar?: { picture?: string | undefined; element?: string | undefined } | undefined + } = {} if (params.gender !== undefined) updates.gender = params.gender if (params.language !== undefined) updates.language = params.language diff --git a/src/lib/components/dnd/DropZone.svelte b/src/lib/components/dnd/DropZone.svelte index 6056f225..1524cead 100644 --- a/src/lib/components/dnd/DropZone.svelte +++ b/src/lib/components/dnd/DropZone.svelte @@ -8,9 +8,9 @@ container: string position: number type: GridItemType - item?: GridItem - canDrop?: boolean - onDrop?: (item: GridItem) => void + item?: GridItem | undefined + canDrop?: boolean | undefined + onDrop?: ((item: GridItem) => void) | undefined children?: any } diff --git a/src/lib/components/ui/segmented-control/SegmentedControl.svelte b/src/lib/components/ui/segmented-control/SegmentedControl.svelte index 25a95182..f2d84c8d 100644 --- a/src/lib/components/ui/segmented-control/SegmentedControl.svelte +++ b/src/lib/components/ui/segmented-control/SegmentedControl.svelte @@ -7,6 +7,7 @@ import type { Snippet } from 'svelte' import styles from './segmented-control.module.scss' import type { HTMLAttributes } from 'svelte/elements' + import { optionalProps } from '$lib/utils/typeShims' export type SegmentedControlVariant = 'default' | 'blended' | 'background' @@ -84,7 +85,7 @@
- + {@render children?.()}
\ No newline at end of file