fix(day-picker): remove unused react-day-picker (#1094)

This commit is contained in:
Waleed Latif
2025-08-21 21:29:20 -07:00
committed by GitHub
parent 11a7be54f2
commit 2ebfb576ae
9 changed files with 1 additions and 195 deletions

View File

@@ -1,73 +0,0 @@
'use client'
import * as React from 'react'
import { format } from 'date-fns'
import { Calendar as CalendarIcon } from 'lucide-react'
import { Button } from '@/components/ui/button'
import { Calendar } from '@/components/ui/calendar'
import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'
import { cn } from '@/lib/utils'
import { useSubBlockValue } from '@/app/workspace/[workspaceId]/w/[workflowId]/components/workflow-block/components/sub-block/hooks/use-sub-block-value'
interface DateInputProps {
blockId: string
subBlockId: string
placeholder?: string
isPreview?: boolean
previewValue?: string | null
disabled?: boolean
}
export function DateInput({
blockId,
subBlockId,
placeholder,
isPreview = false,
previewValue,
disabled = false,
}: DateInputProps) {
const [storeValue, setStoreValue] = useSubBlockValue(blockId, subBlockId)
// Use preview value when in preview mode, otherwise use store value
const value = isPreview ? previewValue : storeValue
const date = value ? new Date(value) : undefined
const isPastDate = React.useMemo(() => {
if (!date) return false
const today = new Date()
today.setHours(0, 0, 0, 0)
return date < today
}, [date])
const handleDateSelect = (selectedDate: Date | undefined) => {
if (isPreview || disabled) return
if (selectedDate) {
const today = new Date()
today.setHours(0, 0, 0, 0)
}
setStoreValue(selectedDate?.toISOString() || '')
}
return (
<Popover>
<PopoverTrigger asChild>
<Button
variant='outline'
disabled={isPreview || disabled}
className={cn(
'w-full justify-start text-left font-normal',
!date && 'text-muted-foreground',
isPastDate && 'border-red-500'
)}
>
<CalendarIcon className='mr-1 h-4 w-4' />
{date ? format(date, 'MMM d, yy') : <span>{placeholder || 'Pick a date'}</span>}
</Button>
</PopoverTrigger>
<PopoverContent className='w-auto p-0'>
<Calendar mode='single' selected={date} onSelect={handleDateSelect} initialFocus />
</PopoverContent>
</Popover>
)
}

View File

@@ -4,7 +4,6 @@ export { Code } from './code'
export { ComboBox } from './combobox'
export { ConditionInput } from './condition-input'
export { CredentialSelector } from './credential-selector/credential-selector'
export { DateInput } from './date-input'
export { DocumentSelector } from './document-selector/document-selector'
export { Dropdown } from './dropdown'
export { EvalInput } from './eval-input'

View File

@@ -20,7 +20,6 @@ import {
CheckboxList,
Code,
ComboBox,
DateInput,
FileSelectorInput,
FileUpload,
LongInput,
@@ -172,33 +171,6 @@ function TableSyncWrapper({
)
}
function DateInputSyncWrapper({
blockId,
paramId,
value,
onChange,
uiComponent,
disabled,
}: {
blockId: string
paramId: string
value: string
onChange: (value: string) => void
uiComponent: any
disabled: boolean
}) {
return (
<GenericSyncWrapper blockId={blockId} paramId={paramId} value={value} onChange={onChange}>
<DateInput
blockId={blockId}
subBlockId={paramId}
placeholder={uiComponent.placeholder}
disabled={disabled}
/>
</GenericSyncWrapper>
)
}
function TimeInputSyncWrapper({
blockId,
paramId,
@@ -1159,18 +1131,6 @@ export function ToolInput({
/>
)
case 'date-input':
return (
<DateInputSyncWrapper
blockId={blockId}
paramId={param.id}
value={value}
onChange={onChange}
uiComponent={uiComponent}
disabled={disabled}
/>
)
case 'time-input':
return (
<TimeInputSyncWrapper

View File

@@ -11,7 +11,6 @@ import {
ComboBox,
ConditionInput,
CredentialSelector,
DateInput,
DocumentSelector,
Dropdown,
EvalInput,
@@ -256,17 +255,6 @@ export function SubBlock({
disabled={isDisabled}
/>
)
case 'date-input':
return (
<DateInput
blockId={blockId}
subBlockId={config.id}
placeholder={config.placeholder}
isPreview={isPreview}
previewValue={previewValue}
disabled={isDisabled}
/>
)
case 'time-input':
return (
<TimeInput

View File

@@ -32,7 +32,6 @@ export type SubBlockType =
| 'checkbox-list' // Multiple selection
| 'condition-input' // Conditional logic
| 'eval-input' // Evaluation input
| 'date-input' // Date input
| 'time-input' // Time input
| 'oauth-input' // OAuth credential selector
| 'webhook-config' // Webhook configuration

View File

@@ -1,62 +0,0 @@
'use client'
import type * as React from 'react'
import { ChevronLeft, ChevronRight } from 'lucide-react'
import { DayPicker } from 'react-day-picker'
import { buttonVariants } from '@/components/ui/button'
import { cn } from '@/lib/utils'
export type CalendarProps = React.ComponentProps<typeof DayPicker>
function Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {
return (
<DayPicker
showOutsideDays={showOutsideDays}
className={cn('p-3', className)}
classNames={{
months: 'flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0',
month: 'space-y-4',
caption: 'flex justify-center pt-1 relative items-center',
caption_label: 'text-sm font-medium',
nav: 'space-x-1 flex items-center',
nav_button: cn(
buttonVariants({ variant: 'outline' }),
'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100'
),
nav_button_previous: 'absolute left-1',
nav_button_next: 'absolute right-1',
table: 'w-full border-collapse space-y-1',
head_row: 'flex',
head_cell: 'text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]',
row: 'flex w-full mt-2',
cell: 'h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20',
day: cn(
buttonVariants({ variant: 'ghost' }),
'h-9 w-9 p-0 font-normal aria-selected:opacity-100'
),
day_range_end: 'day-range-end',
day_selected:
'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',
day_today: 'bg-accent text-accent-foreground',
day_outside:
'day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground',
day_disabled: 'text-muted-foreground opacity-50',
day_range_middle: 'aria-selected:bg-accent aria-selected:text-accent-foreground',
day_hidden: 'invisible',
...classNames,
}}
components={{
IconLeft: ({ className, ...props }) => (
<ChevronLeft className={cn('h-4 w-4', className)} {...props} />
),
IconRight: ({ className, ...props }) => (
<ChevronRight className={cn('h-4 w-4', className)} {...props} />
),
}}
{...props}
/>
)
}
Calendar.displayName = 'Calendar'
export { Calendar }

View File

@@ -22,7 +22,6 @@ export {
BreadcrumbSeparator,
} from './breadcrumb'
export { Button, buttonVariants } from './button'
export { Calendar } from './calendar'
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from './card'
export { Checkbox } from './checkbox'
export { CodeBlock } from './code-block'

View File

@@ -105,7 +105,6 @@
"prismjs": "^1.30.0",
"react": "19.1.0",
"react-colorful": "5.6.1",
"react-day-picker": "8.10.1",
"react-dom": "19.1.0",
"react-google-drive-picker": "^1.2.2",
"react-hook-form": "^7.54.2",

View File

@@ -134,7 +134,6 @@
"prismjs": "^1.30.0",
"react": "19.1.0",
"react-colorful": "5.6.1",
"react-day-picker": "8.10.1",
"react-dom": "19.1.0",
"react-google-drive-picker": "^1.2.2",
"react-hook-form": "^7.54.2",
@@ -2688,8 +2687,6 @@
"react-colorful": ["react-colorful@5.6.1", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw=="],
"react-day-picker": ["react-day-picker@8.10.1", "", { "peerDependencies": { "date-fns": "^2.28.0 || ^3.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA=="],
"react-dom": ["react-dom@19.1.0", "", { "dependencies": { "scheduler": "^0.26.0" }, "peerDependencies": { "react": "^19.1.0" } }, "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g=="],
"react-email": ["react-email@4.2.8", "", { "dependencies": { "@babel/parser": "^7.27.0", "@babel/traverse": "^7.27.0", "chalk": "^5.0.0", "chokidar": "^4.0.3", "commander": "^13.0.0", "debounce": "^2.0.0", "esbuild": "^0.25.0", "glob": "^11.0.0", "jiti": "2.4.2", "log-symbols": "^7.0.0", "mime-types": "^3.0.0", "normalize-path": "^3.0.0", "nypm": "0.6.0", "ora": "^8.0.0", "prompts": "2.4.2", "socket.io": "^4.8.1", "tsconfig-paths": "4.2.0" }, "bin": { "email": "dist/index.js" } }, "sha512-Eqzs/xZnS881oghPO/4CQ1cULyESuUhEjfYboXmYNOokXnJ6QP5GKKJZ6zjkg9SnKXxSrIxSo5PxzCI5jReJMA=="],