Skip to content

Conversation

@waleedlatif1
Copy link
Collaborator

@waleedlatif1 waleedlatif1 commented Jan 3, 2026

Summary

  • added timepicker emcn component, added to playground
  • added searchable prop for dropdown, updated to only show search when there are 5+ operations or when its explicitly requested in the dropdown subblock
  • added more timezones for schedule
  • updated license and notice dates to 2025

Type of Change

  • New feature

Testing

N/A

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

…nd, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date
@vercel
Copy link

vercel bot commented Jan 3, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Review Updated (UTC)
docs Skipped Skipped Jan 3, 2026 2:42am

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 3, 2026

Greptile Summary

This PR introduces a new EMCN TimePicker component and integrates it into the schedule workflow editor, along with improvements to dropdown searchability and timezone options.

Key Changes:

  • Created reusable TimePicker component following EMCN design patterns with CVA variants, proper accessibility (keyboard navigation, ARIA attributes), and bidirectional 12h/24h time conversion
  • Refactored time-input.tsx from 149 lines to 20 lines by replacing custom implementation with new TimePicker component
  • Added searchable prop to Dropdown component with smart defaults: automatically shows search for operation dropdowns with 5+ options or when explicitly requested
  • Extended timezone list in schedule block from 13 to 28 timezones, covering major cities across Americas, Europe, Middle East, Africa, Asia, and Pacific regions
  • Improved getTimezoneAbbreviation() utility to use Intl.DateTimeFormat for accurate DST-aware abbreviations
  • Cleaned up code: removed unused lastRanAt parameter from calculateNextRunTime(), removed redundant comments
  • Updated LICENSE and NOTICE copyright dates to 2025

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • All changes follow established patterns, improve code quality through reusability and maintainability, and include appropriate testing infrastructure (playground examples). The new TimePicker component adheres to EMCN design system conventions, the refactoring reduces code duplication significantly, and utility improvements enhance timezone handling. No breaking changes or security concerns identified.
  • No files require special attention

Important Files Changed

Filename Overview
apps/sim/components/emcn/components/time-picker/time-picker.tsx New EMCN TimePicker component added following design system patterns with CVA variants, proper accessibility, and 12h/24h conversion
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/panel/components/editor/components/sub-block/components/time-input/time-input.tsx Refactored to use new TimePicker component, removing 140+ lines of duplicate logic and simplifying to wrapper
apps/sim/blocks/blocks/schedule.ts Added searchable prop to timezone dropdown and expanded timezone list from 13 to 28 options covering major global cities
apps/sim/lib/workflows/schedules/utils.ts Cleaned up comments, removed unused lastRanAt parameter, improved timezone abbreviation function to use Intl API for DST handling

Sequence Diagram

sequenceDiagram
    participant User
    participant TimeInput
    participant TimePicker
    participant Popover
    participant SubBlockStore

    User->>TimeInput: Interact with time input
    TimeInput->>SubBlockStore: Get current value (useSubBlockValue)
    SubBlockStore-->>TimeInput: Return stored time (24h format)
    
    TimeInput->>TimePicker: Render with value prop
    TimePicker->>TimePicker: parseTime(value) - convert 24h to 12h
    
    User->>TimePicker: Click trigger
    TimePicker->>Popover: setOpen(true)
    Popover-->>TimePicker: Display popover content
    
    User->>TimePicker: Adjust hour/minute/AM/PM
    TimePicker->>TimePicker: formatStorageTime() - convert 12h to 24h
    TimePicker->>TimeInput: onChange(newValue)
    TimeInput->>SubBlockStore: setStoreValue(newValue)
    SubBlockStore-->>TimeInput: Value updated
    
    Note over TimePicker,SubBlockStore: Value stored in 24h format (HH:mm)<br/>Displayed in 12h format with AM/PM
Loading

@waleedlatif1 waleedlatif1 merged commit c3adcf3 into staging Jan 3, 2026
11 checks passed
@waleedlatif1 waleedlatif1 deleted the fix/time-picker branch January 3, 2026 02:46
waleedlatif1 added a commit that referenced this pull request Jan 3, 2026
…ext menu (#2672)

* feat(logs-context-menu): consolidated logs utils and types, added logs record context menu (#2659)

* feat(email): welcome email; improvement(emails): ui/ux (#2658)

* feat(email): welcome email; improvement(emails): ui/ux

* improvement(emails): links, accounts, preview

* refactor(emails): file structure and wrapper components

* added envvar for personal emails sent, added isHosted gate

* fixed failing tests, added env mock

* fix: removed comment

---------

Co-authored-by: waleed <walif6@gmail.com>

* fix(logging): hitl + trigger dev crash protection (#2664)

* hitl gaps

* deal with trigger worker crashes

* cleanup import strcuture

* feat(imap): added support for imap trigger (#2663)

* feat(tools): added support for imap trigger

* feat(imap): added parity, tested

* ack PR comments

* final cleanup

* feat(i18n): update translations (#2665)

Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>

* fix(grain): updated grain trigger to auto-establish trigger (#2666)

Co-authored-by: aadamgough <adam@sim.ai>

* feat(admin): routes to manage deployments (#2667)

* feat(admin): routes to manage deployments

* fix naming fo deployed by

* feat(time-picker): added timepicker emcn component, added to playground, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date (#2668)

* feat(time-picker): added timepicker emcn component, added to playground, added searchable prop for dropdown, added more timezones for schedule, updated license and notice date

* removed unused params, cleaned up redundant utils

* improvement(invite): aligned styling (#2669)

* improvement(invite): aligned with rest of app

* fix(invite): error handling

* fix: addressed comments

---------

Co-authored-by: Emir Karabeg <78010029+emir-karabeg@users.noreply.github.com>
Co-authored-by: Vikhyath Mondreti <vikhyathvikku@gmail.com>
Co-authored-by: waleedlatif1 <waleedlatif1@users.noreply.github.com>
Co-authored-by: Adam Gough <77861281+aadamgough@users.noreply.github.com>
Co-authored-by: aadamgough <adam@sim.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants