Skip to content

Conversation

@shaneeza
Copy link
Collaborator

@shaneeza shaneeza commented Dec 15, 2025

✍️ Proposed changes

🎟 Jira ticket: Name of ticket

This PR introduces utility functions for managing time input segment state, including validation, formatting, and conversion between 12-hour and 24-hour formats. The implementation handles timezone conversions, segment validation, and provides comprehensive test coverage.

This PR is the third PR in a chain of PRs

  1. [LG-5538] feat(time-input): Parse time #3378
  2. [LG-5532] feat(time-input) display segment values #3379
  3. This PR
  4. [LG-5532] feat(time-input): Segment state #3386
  5. [LG-5532] feat(time-input): Segment misc #3387

🧪 How to test changes

@changeset-bot
Copy link

changeset-bot bot commented Dec 15, 2025

⚠️ No Changeset found

Latest commit: 26fec0b

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@shaneeza shaneeza requested a review from Copilot December 15, 2025 14:39
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces utility functions for managing time input segment state, including validation, formatting, and conversion between 12-hour and 24-hour formats. The implementation handles timezone conversions, segment validation, and provides comprehensive test coverage for UTC date creation from time segments.

  • Adds utilities for validating and formatting time segments (hour, minute, second)
  • Implements conversion logic between 12-hour and 24-hour time formats
  • Introduces timezone-aware UTC date creation from time segments

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
packages/time-input/src/utils/shouldSetValue/shouldSetValue.ts Core logic determining when to update time input value based on segment state
packages/time-input/src/utils/isSameUTCDayAndTime/isSameUTCDayAndTime.ts Utility for comparing two dates for equality in UTC
packages/time-input/src/utils/isEverySegmentValueExplicit/isEverySegmentValueExplicit.ts Validates that all time segments have unambiguous values
packages/time-input/src/utils/isEverySegmentValid/isEverySegmentValid.ts Checks if all time segments are within valid ranges
packages/time-input/src/utils/isEverySegmentFilled/isEverySegmentFilled.ts Verifies that all time segments contain values
packages/time-input/src/utils/getNewUTCDateFromSegments/getNewUTCDateFromSegments.ts Creates UTC date from time segments with timezone support
packages/time-input/src/utils/getFormattedTimeSegmentsFromDate/getFormattedTimeSegmentsFromDate.ts Extracts and formats time segments from a date object
packages/time-input/src/utils/getFormattedTimeSegments/getFormattedTimeSegments.ts Pads time segments to 2-digit format
packages/time-input/src/utils/findUnitOptionByDayPeriod/findUnitOptionByDayPeriod.ts Locates the AM/PM unit option matching a day period
packages/time-input/src/utils/doesSomeSegmentExist/doesSomeSegmentExist.ts Checks if any time segment has a value
packages/time-input/src/utils/convert12hTo24h/convert12hTo24h.ts Converts 12-hour format to 24-hour format
packages/date-utils/src/newUTCFromTimeZone/newUTCFromTimeZone.ts Creates UTC date from local time in specified timezone
packages/time-input/src/utils/index.ts Exports all new time input utility functions
packages/date-utils/src/index.ts Exports new UTC timezone conversion utility
Test files (*.spec.ts) Comprehensive test coverage for all new utilities

@github-actions
Copy link
Contributor

github-actions bot commented Dec 15, 2025

Size Change: +255 B (+0.01%)

Total Size: 1.83 MB

Filename Size Change
packages/date-utils/dist/esm/index.js 2.88 kB +128 B (+4.65%) 🔍
packages/date-utils/dist/umd/index.js 2.98 kB +126 B (+4.41%)
packages/time-input/dist/esm/index.js 4.19 kB +1 B (+0.02%)
ℹ️ View Unchanged
Filename Size
charts/chart-card/dist/esm/index.js 2.79 kB
charts/chart-card/dist/umd/index.js 2.94 kB
charts/colors/dist/esm/index.js 530 B
charts/colors/dist/umd/index.js 657 B
charts/core/dist/esm/index.js 16.4 kB
charts/core/dist/umd/index.js 16.7 kB
charts/drag-provider/dist/esm/index.js 1.37 kB
charts/drag-provider/dist/umd/index.js 1.49 kB
charts/legend/dist/esm/index-min.js 1.53 kB
charts/legend/dist/esm/index.js 1.99 kB
charts/legend/dist/umd/index-min.js 1.68 kB
charts/legend/dist/umd/index.js 2.27 kB
charts/series-provider/dist/esm/index.js 1.28 kB
charts/series-provider/dist/umd/index.js 1.41 kB
chat/chat-button/dist/esm/index.js 2.51 kB
chat/chat-button/dist/umd/index.js 2.71 kB
chat/chat-layout/dist/esm/index.js 5.29 kB
chat/chat-layout/dist/umd/index.js 5.5 kB
chat/chat-window/dist/esm/index.js 1 kB
chat/chat-window/dist/umd/index.js 1.2 kB
chat/input-bar/dist/esm/index.js 5.96 kB
chat/input-bar/dist/umd/index.js 6.15 kB
chat/leafygreen-chat-provider/dist/esm/index.js 267 B
chat/leafygreen-chat-provider/dist/umd/index.js 427 B
chat/lg-markdown/dist/esm/index.js 2.15 kB
chat/lg-markdown/dist/umd/index.js 2.29 kB
chat/message-feed/dist/esm/index.js 2.2 kB
chat/message-feed/dist/umd/index.js 2.36 kB
chat/message-feedback/dist/esm/index.js 4.05 kB
chat/message-feedback/dist/umd/index.js 4.22 kB
chat/message-prompts/dist/esm/index.js 2.34 kB
chat/message-prompts/dist/umd/index.js 2.5 kB
chat/message-rating/dist/esm/index.js 1.55 kB
chat/message-rating/dist/umd/index.js 1.73 kB
chat/message/dist/esm/index.js 6.34 kB
chat/message/dist/umd/index.js 6.61 kB
chat/rich-links/dist/esm/index.js 2.4 kB
chat/rich-links/dist/umd/index.js 2.59 kB
chat/suggestions/dist/esm/index.js 1.66 kB
chat/suggestions/dist/esm/testing/index.js 55 B
chat/suggestions/dist/umd/index.js 1.84 kB
chat/suggestions/dist/umd/testing/index.js 113 B
chat/title-bar/dist/esm/index.js 936 B
chat/title-bar/dist/umd/index.js 1.11 kB
packages/a11y/dist/esm/index.js 1.71 kB
packages/a11y/dist/umd/index.js 1.83 kB
packages/avatar/dist/esm/index.js 3.76 kB
packages/avatar/dist/umd/index.js 3.94 kB
packages/badge/dist/esm/index.js 1.47 kB
packages/badge/dist/umd/index.js 1.67 kB
packages/banner/dist/esm/index.js 3.2 kB
packages/banner/dist/umd/index.js 3.5 kB
packages/button/dist/esm/constants.js 121 B
packages/button/dist/esm/index.js 4.8 kB
packages/button/dist/esm/testing/index.js 321 B
packages/button/dist/umd/constants.js 262 B
packages/button/dist/umd/index.js 4.99 kB
packages/button/dist/umd/testing/index.js 443 B
packages/callout/dist/esm/index.js 1.55 kB
packages/callout/dist/umd/index.js 1.74 kB
packages/canvas-header/dist/esm/index.js 3.04 kB
packages/canvas-header/dist/umd/index.js 3.21 kB
packages/card/dist/esm/index.js 1.51 kB
packages/card/dist/umd/index.js 1.69 kB
packages/checkbox/dist/esm/index.js 4.28 kB
packages/checkbox/dist/umd/index.js 4.48 kB
packages/chip/dist/esm/index.js 3.22 kB
packages/chip/dist/umd/index.js 3.41 kB
packages/code-editor/dist/esm/index.js 19 kB
packages/code-editor/dist/esm/testing/index.js 4.19 kB
packages/code-editor/dist/umd/index.js 19.3 kB
packages/code-editor/dist/umd/testing/index.js 4.33 kB
packages/code/dist/esm/index.js 10.5 kB
packages/code/dist/esm/testing/index.js 11.4 kB
packages/code/dist/umd/index.js 11.2 kB
packages/code/dist/umd/testing/index.js 12 kB
packages/combobox/dist/esm/index.js 11.8 kB
packages/combobox/dist/umd/index.js 12.1 kB
packages/compound-component/dist/esm/index.js 1.09 kB
packages/compound-component/dist/umd/index.js 1.17 kB
packages/confirmation-modal/dist/esm/index.js 2.63 kB
packages/confirmation-modal/dist/umd/index.js 2.84 kB
packages/context-drawer/dist/esm/index.js 3.12 kB
packages/context-drawer/dist/esm/testing/index.js 3.52 kB
packages/context-drawer/dist/umd/index.js 3.28 kB
packages/context-drawer/dist/umd/testing/index.js 3.67 kB
packages/copyable/dist/esm/index.js 2.91 kB
packages/copyable/dist/umd/index.js 3.1 kB
packages/date-picker/dist/esm/index.js 12.2 kB
packages/date-picker/dist/umd/index.js 12.5 kB
packages/date-utils/dist/esm/testing/index.js 1.35 kB
packages/date-utils/dist/umd/testing/index.js 1.49 kB
packages/descendants/dist/esm/index.js 2.84 kB
packages/descendants/dist/umd/index.js 2.95 kB
packages/drawer/dist/esm/index.js 7.94 kB
packages/drawer/dist/esm/testing/index.js 490 B
packages/drawer/dist/umd/index.js 8.13 kB
packages/drawer/dist/umd/testing/index.js 610 B
packages/emotion/dist/esm/index.js 374 B
packages/emotion/dist/umd/index.js 625 B
packages/empty-state/dist/esm/index.js 1.76 kB
packages/empty-state/dist/umd/index.js 1.93 kB
packages/expandable-card/dist/esm/index.js 2.96 kB
packages/expandable-card/dist/esm/testing/index.js 3.48 kB
packages/expandable-card/dist/umd/index.js 3.18 kB
packages/expandable-card/dist/umd/testing/index.js 3.67 kB
packages/feature-walls/dist/esm/index.js 6.74 kB
packages/feature-walls/dist/umd/index.js 6.99 kB
packages/form-field/dist/esm/index.js 4.37 kB
packages/form-field/dist/umd/index.js 4.53 kB
packages/form-footer/dist/esm/index.js 1.77 kB
packages/form-footer/dist/umd/index.js 1.98 kB
packages/gallery-indicator/dist/esm/index.js 1.5 kB
packages/gallery-indicator/dist/esm/testing/index.js 351 B
packages/gallery-indicator/dist/umd/index.js 1.66 kB
packages/gallery-indicator/dist/umd/testing/index.js 481 B
packages/guide-cue/dist/esm/index.js 5.17 kB
packages/guide-cue/dist/umd/index.js 5.37 kB
packages/hooks/dist/esm/index.js 3.65 kB
packages/hooks/dist/umd/index.js 3.79 kB
packages/icon-button/dist/esm/index.js 2.28 kB
packages/icon-button/dist/umd/index.js 2.49 kB
packages/icon/dist/esm/ActivityFeed.js 1.18 kB
packages/icon/dist/esm/AddFile.js 964 B
packages/icon/dist/esm/AIModel.js 1.68 kB
packages/icon/dist/esm/AllProducts.js 1.05 kB
packages/icon/dist/esm/AnalyticsNode.js 821 B
packages/icon/dist/esm/Apps.js 660 B
packages/icon/dist/esm/Array.js 781 B
packages/icon/dist/esm/ArrowDown.js 892 B
packages/icon/dist/esm/ArrowLeft.js 895 B
packages/icon/dist/esm/ArrowRight.js 890 B
packages/icon/dist/esm/ArrowUp.js 887 B
packages/icon/dist/esm/Award.js 1.3 kB
packages/icon/dist/esm/Beaker.js 1.3 kB
packages/icon/dist/esm/Bell.js 857 B
packages/icon/dist/esm/Biometric.js 1.39 kB
packages/icon/dist/esm/Boolean.js 706 B
packages/icon/dist/esm/Building.js 851 B
packages/icon/dist/esm/Bulb.js 891 B
packages/icon/dist/esm/Calendar.js 852 B
packages/icon/dist/esm/Camera.js 934 B
packages/icon/dist/esm/Cap.js 1.04 kB
packages/icon/dist/esm/CaretDown.js 726 B
packages/icon/dist/esm/CaretLeft.js 725 B
packages/icon/dist/esm/CaretRight.js 720 B
packages/icon/dist/esm/CaretUp.js 725 B
packages/icon/dist/esm/ChartFilled.js 819 B
packages/icon/dist/esm/Charts.js 805 B
packages/icon/dist/esm/Checkmark.js 850 B
packages/icon/dist/esm/CheckmarkWithCircle.js 912 B
packages/icon/dist/esm/ChevronDown.js 824 B
packages/icon/dist/esm/ChevronLeft.js 822 B
packages/icon/dist/esm/ChevronRight.js 833 B
packages/icon/dist/esm/ChevronUp.js 812 B
packages/icon/dist/esm/Circle.js 602 B
packages/icon/dist/esm/Clock.js 874 B
packages/icon/dist/esm/ClockWithArrow.js 1.13 kB
packages/icon/dist/esm/Clone.js 759 B
packages/icon/dist/esm/Cloud.js 926 B
packages/icon/dist/esm/Code.js 1.11 kB
packages/icon/dist/esm/CodeBlock.js 1.06 kB
packages/icon/dist/esm/Coin.js 1.16 kB
packages/icon/dist/esm/Colon.js 717 B
packages/icon/dist/esm/Config.js 1.01 kB
packages/icon/dist/esm/Connect.js 1.15 kB
packages/icon/dist/esm/Copy.js 1.11 kB
packages/icon/dist/esm/CreditCard.js 688 B
packages/icon/dist/esm/CurlyBraces.js 1.26 kB
packages/icon/dist/esm/Cursor.js 806 B
packages/icon/dist/esm/Dashboard.js 828 B
packages/icon/dist/esm/Database.js 1.26 kB
packages/icon/dist/esm/Diagram.js 899 B
packages/icon/dist/esm/Diagram2.js 905 B
packages/icon/dist/esm/Diagram3.js 884 B
packages/icon/dist/esm/Disconnect.js 1.1 kB
packages/icon/dist/esm/Download.js 1.03 kB
packages/icon/dist/esm/Drag.js 869 B
packages/icon/dist/esm/Edit.js 765 B
packages/icon/dist/esm/Ellipsis.js 758 B
packages/icon/dist/esm/Email.js 948 B
packages/icon/dist/esm/EmptyDatabase.js 3.44 kB
packages/icon/dist/esm/EmptyFolder.js 1.33 kB
packages/icon/dist/esm/Eraser.js 1.01 kB
packages/icon/dist/esm/Escalation.js 910 B
packages/icon/dist/esm/Export.js 1.02 kB
packages/icon/dist/esm/Favorite.js 970 B
packages/icon/dist/esm/Federation.js 1.27 kB
packages/icon/dist/esm/File.js 793 B
packages/icon/dist/esm/Filter.js 779 B
packages/icon/dist/esm/Folder.js 694 B
packages/icon/dist/esm/Format.js 1.1 kB
packages/icon/dist/esm/FullScreenEnter.js 943 B
packages/icon/dist/esm/FullScreenExit.js 952 B
packages/icon/dist/esm/Function.js 1.92 kB
packages/icon/dist/esm/Gauge.js 964 B
packages/icon/dist/esm/GlobeAmericas.js 890 B
packages/icon/dist/esm/glyphCommon-cTThlth0.js 825 B
packages/icon/dist/esm/GovernmentBuilding.js 931 B
packages/icon/dist/esm/Guide.js 1.22 kB
packages/icon/dist/esm/Hash.js 1.07 kB
packages/icon/dist/esm/HiddenSecondaryNode.js 2.31 kB
packages/icon/dist/esm/Highlight.js 1.1 kB
packages/icon/dist/esm/Home.js 1.03 kB
packages/icon/dist/esm/HorizontalDrag.js 876 B
packages/icon/dist/esm/Import.js 1.01 kB
packages/icon/dist/esm/ImportantWithCircle.js 792 B
packages/icon/dist/esm/index.js 109 kB
packages/icon/dist/esm/InfoWithCircle.js 825 B
packages/icon/dist/esm/InternalEmployee.js 1.1 kB
packages/icon/dist/esm/InviteUser.js 1.11 kB
packages/icon/dist/esm/Key.js 926 B
packages/icon/dist/esm/Laptop.js 910 B
packages/icon/dist/esm/LightningBolt.js 790 B
packages/icon/dist/esm/Link.js 1.25 kB
packages/icon/dist/esm/List.js 939 B
packages/icon/dist/esm/Lock.js 879 B
packages/icon/dist/esm/LogIn.js 951 B
packages/icon/dist/esm/LogOut.js 1.01 kB
packages/icon/dist/esm/MagnifyingGlass.js 859 B
packages/icon/dist/esm/Megaphone.js 830 B
packages/icon/dist/esm/Menu.js 753 B
packages/icon/dist/esm/Minus.js 703 B
packages/icon/dist/esm/Mobile.js 698 B
packages/icon/dist/esm/Moon.js 870 B
packages/icon/dist/esm/MultiDirectionArrow.js 906 B
packages/icon/dist/esm/MultiLayers.js 1.83 kB
packages/icon/dist/esm/NavCollapse.js 924 B
packages/icon/dist/esm/NavExpand.js 934 B
packages/icon/dist/esm/NoFilter.js 911 B
packages/icon/dist/esm/NotAllowed.js 808 B
packages/icon/dist/esm/Note.js 842 B
packages/icon/dist/esm/NumberedList.js 1.7 kB
packages/icon/dist/esm/OpenNewTab.js 1.1 kB
packages/icon/dist/esm/OutlineFavorite.js 1.23 kB
packages/icon/dist/esm/Package.js 1.08 kB
packages/icon/dist/esm/Pause.js 753 B
packages/icon/dist/esm/Pending.js 732 B
packages/icon/dist/esm/Person.js 908 B
packages/icon/dist/esm/PersonGroup.js 1.1 kB
packages/icon/dist/esm/PersonWithLock.js 1.1 kB
packages/icon/dist/esm/Pin.js 854 B
packages/icon/dist/esm/Play.js 736 B
packages/icon/dist/esm/Plus.js 757 B
packages/icon/dist/esm/PlusWithCircle.js 787 B
packages/icon/dist/esm/Primary.js 804 B
packages/icon/dist/esm/Project.js 843 B
packages/icon/dist/esm/QuestionMarkWithCircle.js 1.13 kB
packages/icon/dist/esm/Read.js 1.42 kB
packages/icon/dist/esm/Recommended.js 1.58 kB
packages/icon/dist/esm/Redo.js 1.06 kB
packages/icon/dist/esm/Refresh.js 1.13 kB
packages/icon/dist/esm/Relationship.js 852 B
packages/icon/dist/esm/ReplicaSet.js 997 B
packages/icon/dist/esm/Resize.js 825 B
packages/icon/dist/esm/Resource.js 1.14 kB
packages/icon/dist/esm/Return.js 909 B
packages/icon/dist/esm/Revert.js 943 B
packages/icon/dist/esm/Router.js 1.6 kB
packages/icon/dist/esm/Save.js 1.32 kB
packages/icon/dist/esm/SearchIndex.js 1.45 kB
packages/icon/dist/esm/Secondary.js 1.03 kB
packages/icon/dist/esm/Serverless.js 976 B
packages/icon/dist/esm/Settings.js 1.39 kB
packages/icon/dist/esm/ShardedCluster.js 1.35 kB
packages/icon/dist/esm/Shell.js 900 B
packages/icon/dist/esm/Shield.js 1.3 kB
packages/icon/dist/esm/Shirt.js 855 B
packages/icon/dist/esm/Shortcut.js 1.4 kB
packages/icon/dist/esm/SMS.js 864 B
packages/icon/dist/esm/SortAscending.js 947 B
packages/icon/dist/esm/SortDescending.js 939 B
packages/icon/dist/esm/Sparkle.js 1.25 kB
packages/icon/dist/esm/SplitHorizontal.js 719 B
packages/icon/dist/esm/SplitVertical.js 718 B
packages/icon/dist/esm/Stitch.js 754 B
packages/icon/dist/esm/Stop.js 609 B
packages/icon/dist/esm/Streaming.js 1.7 kB
packages/icon/dist/esm/String.js 857 B
packages/icon/dist/esm/Sun.js 1.07 kB
packages/icon/dist/esm/Support.js 937 B
packages/icon/dist/esm/Sweep.js 964 B
packages/icon/dist/esm/Table.js 742 B
packages/icon/dist/esm/Tag.js 781 B
packages/icon/dist/esm/TemporaryTable.js 967 B
packages/icon/dist/esm/ThumbsDown.js 1.05 kB
packages/icon/dist/esm/ThumbsUp.js 1.04 kB
packages/icon/dist/esm/TimeSeries.js 1.08 kB
packages/icon/dist/esm/TimeSeriesCollection.js 1.21 kB
packages/icon/dist/esm/Trash.js 770 B
packages/icon/dist/esm/Undo.js 1.06 kB
packages/icon/dist/esm/University.js 1.25 kB
packages/icon/dist/esm/Unlock.js 947 B
packages/icon/dist/esm/Unsorted.js 991 B
packages/icon/dist/esm/UpDownCarets.js 845 B
packages/icon/dist/esm/Upload.js 1.03 kB
packages/icon/dist/esm/VerticalEllipsis.js 768 B
packages/icon/dist/esm/View.js 903 B
packages/icon/dist/esm/Visibility.js 1.06 kB
packages/icon/dist/esm/VisibilityOff.js 1.44 kB
packages/icon/dist/esm/Warning.js 839 B
packages/icon/dist/esm/Wizard.js 1.15 kB
packages/icon/dist/esm/Wrench.js 1.15 kB
packages/icon/dist/esm/Write.js 1.43 kB
packages/icon/dist/esm/X.js 879 B
packages/icon/dist/esm/XWithCircle.js 824 B
packages/icon/dist/umd/ActivityFeed.js 2.04 kB
packages/icon/dist/umd/AddFile.js 1.81 kB
packages/icon/dist/umd/AIModel.js 2.56 kB
packages/icon/dist/umd/AllProducts.js 1.88 kB
packages/icon/dist/umd/AnalyticsNode.js 1.65 kB
packages/icon/dist/umd/Apps.js 1.48 kB
packages/icon/dist/umd/Array.js 1.6 kB
packages/icon/dist/umd/ArrowDown.js 1.73 kB
packages/icon/dist/umd/ArrowLeft.js 1.74 kB
packages/icon/dist/umd/ArrowRight.js 1.73 kB
packages/icon/dist/umd/ArrowUp.js 1.73 kB
packages/icon/dist/umd/Award.js 2.17 kB
packages/icon/dist/umd/Beaker.js 2.16 kB
packages/icon/dist/umd/Bell.js 1.69 kB
packages/icon/dist/umd/Biometric.js 2.26 kB
packages/icon/dist/umd/Boolean.js 1.53 kB
packages/icon/dist/umd/Building.js 1.68 kB
packages/icon/dist/umd/Bulb.js 1.73 kB
packages/icon/dist/umd/Calendar.js 1.68 kB
packages/icon/dist/umd/Camera.js 1.77 kB
packages/icon/dist/umd/Cap.js 1.89 kB
packages/icon/dist/umd/CaretDown.js 1.55 kB
packages/icon/dist/umd/CaretLeft.js 1.55 kB
packages/icon/dist/umd/CaretRight.js 1.55 kB
packages/icon/dist/umd/CaretUp.js 1.55 kB
packages/icon/dist/umd/ChartFilled.js 1.65 kB
packages/icon/dist/umd/Charts.js 1.62 kB
packages/icon/dist/umd/Checkmark.js 1.69 kB
packages/icon/dist/umd/CheckmarkWithCircle.js 1.76 kB
packages/icon/dist/umd/ChevronDown.js 1.65 kB
packages/icon/dist/umd/ChevronLeft.js 1.65 kB
packages/icon/dist/umd/ChevronRight.js 1.67 kB
packages/icon/dist/umd/ChevronUp.js 1.64 kB
packages/icon/dist/umd/Circle.js 1.42 kB
packages/icon/dist/umd/Clock.js 1.71 kB
packages/icon/dist/umd/ClockWithArrow.js 2 kB
packages/icon/dist/umd/Clone.js 1.58 kB
packages/icon/dist/umd/Cloud.js 1.77 kB
packages/icon/dist/umd/Code.js 1.98 kB
packages/icon/dist/umd/CodeBlock.js 1.91 kB
packages/icon/dist/umd/Coin.js 2.02 kB
packages/icon/dist/umd/Colon.js 1.54 kB
packages/icon/dist/umd/Config.js 1.85 kB
packages/icon/dist/umd/Connect.js 2.01 kB
packages/icon/dist/umd/Copy.js 1.96 kB
packages/icon/dist/umd/CreditCard.js 1.51 kB
packages/icon/dist/umd/CurlyBraces.js 2.12 kB
packages/icon/dist/umd/Cursor.js 1.64 kB
packages/icon/dist/umd/Dashboard.js 1.65 kB
packages/icon/dist/umd/Database.js 2.11 kB
packages/icon/dist/umd/Diagram.js 1.73 kB
packages/icon/dist/umd/Diagram2.js 1.74 kB
packages/icon/dist/umd/Diagram3.js 1.71 kB
packages/icon/dist/umd/Disconnect.js 1.95 kB
packages/icon/dist/umd/Download.js 1.87 kB
packages/icon/dist/umd/Drag.js 1.7 kB
packages/icon/dist/umd/Edit.js 1.6 kB
packages/icon/dist/umd/Ellipsis.js 1.57 kB
packages/icon/dist/umd/Email.js 1.79 kB
packages/icon/dist/umd/EmptyDatabase.js 4.4 kB
packages/icon/dist/umd/EmptyFolder.js 2.18 kB
packages/icon/dist/umd/Eraser.js 1.86 kB
packages/icon/dist/umd/Escalation.js 1.76 kB
packages/icon/dist/umd/Export.js 1.87 kB
packages/icon/dist/umd/Favorite.js 1.82 kB
packages/icon/dist/umd/Federation.js 2.15 kB
packages/icon/dist/umd/File.js 1.62 kB
packages/icon/dist/umd/Filter.js 1.61 kB
packages/icon/dist/umd/Folder.js 1.52 kB
packages/icon/dist/umd/Format.js 1.94 kB
packages/icon/dist/umd/FullScreenEnter.js 1.77 kB
packages/icon/dist/umd/FullScreenExit.js 1.78 kB
packages/icon/dist/umd/Function.js 2.84 kB
packages/icon/dist/umd/Gauge.js 1.82 kB
packages/icon/dist/umd/GlobeAmericas.js 1.73 kB
packages/icon/dist/umd/GovernmentBuilding.js 1.76 kB
packages/icon/dist/umd/Guide.js 2.08 kB
packages/icon/dist/umd/Hash.js 1.92 kB
packages/icon/dist/umd/HiddenSecondaryNode.js 3.2 kB
packages/icon/dist/umd/Highlight.js 1.97 kB
packages/icon/dist/umd/Home.js 1.88 kB
packages/icon/dist/umd/HorizontalDrag.js 1.7 kB
packages/icon/dist/umd/Import.js 1.86 kB
packages/icon/dist/umd/ImportantWithCircle.js 1.62 kB
packages/icon/dist/umd/index.js 109 kB
packages/icon/dist/umd/InfoWithCircle.js 1.65 kB
packages/icon/dist/umd/InternalEmployee.js 1.95 kB
packages/icon/dist/umd/InviteUser.js 1.96 kB
packages/icon/dist/umd/Key.js 1.76 kB
packages/icon/dist/umd/Laptop.js 1.75 kB
packages/icon/dist/umd/LightningBolt.js 1.62 kB
packages/icon/dist/umd/Link.js 2.13 kB
packages/icon/dist/umd/List.js 1.76 kB
packages/icon/dist/umd/Lock.js 1.72 kB
packages/icon/dist/umd/LogIn.js 1.79 kB
packages/icon/dist/umd/LogOut.js 1.85 kB
packages/icon/dist/umd/MagnifyingGlass.js 1.69 kB
packages/icon/dist/umd/Megaphone.js 1.67 kB
packages/icon/dist/umd/Menu.js 1.57 kB
packages/icon/dist/umd/Minus.js 1.53 kB
packages/icon/dist/umd/Mobile.js 1.52 kB
packages/icon/dist/umd/Moon.js 1.71 kB
packages/icon/dist/umd/MultiDirectionArrow.js 1.74 kB
packages/icon/dist/umd/MultiLayers.js 2.71 kB
packages/icon/dist/umd/NavCollapse.js 1.76 kB
packages/icon/dist/umd/NavExpand.js 1.77 kB
packages/icon/dist/umd/NoFilter.js 1.76 kB
packages/icon/dist/umd/NotAllowed.js 1.64 kB
packages/icon/dist/umd/Note.js 1.67 kB
packages/icon/dist/umd/NumberedList.js 2.58 kB
packages/icon/dist/umd/OpenNewTab.js 1.96 kB
packages/icon/dist/umd/OutlineFavorite.js 2.09 kB
packages/icon/dist/umd/Package.js 1.93 kB
packages/icon/dist/umd/Pause.js 1.57 kB
packages/icon/dist/umd/Pending.js 1.55 kB
packages/icon/dist/umd/Person.js 1.75 kB
packages/icon/dist/umd/PersonGroup.js 1.95 kB
packages/icon/dist/umd/PersonWithLock.js 1.95 kB
packages/icon/dist/umd/Pin.js 1.69 kB
packages/icon/dist/umd/Play.js 1.56 kB
packages/icon/dist/umd/Plus.js 1.58 kB
packages/icon/dist/umd/PlusWithCircle.js 1.61 kB
packages/icon/dist/umd/Primary.js 1.63 kB
packages/icon/dist/umd/Project.js 1.67 kB
packages/icon/dist/umd/QuestionMarkWithCircle.js 1.99 kB
packages/icon/dist/umd/Read.js 2.29 kB
packages/icon/dist/umd/Recommended.js 2.47 kB
packages/icon/dist/umd/Redo.js 1.93 kB
packages/icon/dist/umd/Refresh.js 2 kB
packages/icon/dist/umd/Relationship.js 1.68 kB
packages/icon/dist/umd/ReplicaSet.js 1.84 kB
packages/icon/dist/umd/Resize.js 1.65 kB
packages/icon/dist/umd/Resource.js 1.99 kB
packages/icon/dist/umd/Return.js 1.75 kB
packages/icon/dist/umd/Revert.js 1.8 kB
packages/icon/dist/umd/Router.js 2.46 kB
packages/icon/dist/umd/Save.js 2.18 kB
packages/icon/dist/umd/SearchIndex.js 2.32 kB
packages/icon/dist/umd/Secondary.js 1.87 kB
packages/icon/dist/umd/Serverless.js 1.83 kB
packages/icon/dist/umd/Settings.js 2.26 kB
packages/icon/dist/umd/ShardedCluster.js 2.21 kB
packages/icon/dist/umd/Shell.js 1.75 kB
packages/icon/dist/umd/Shield.js 2.19 kB
packages/icon/dist/umd/Shirt.js 1.69 kB
packages/icon/dist/umd/Shortcut.js 2.27 kB
packages/icon/dist/umd/SMS.js 1.7 kB
packages/icon/dist/umd/SortAscending.js 1.78 kB
packages/icon/dist/umd/SortDescending.js 1.77 kB
packages/icon/dist/umd/Sparkle.js 2.11 kB
packages/icon/dist/umd/SplitHorizontal.js 1.54 kB
packages/icon/dist/umd/SplitVertical.js 1.54 kB
packages/icon/dist/umd/Stitch.js 1.57 kB
packages/icon/dist/umd/Stop.js 1.43 kB
packages/icon/dist/umd/Streaming.js 2.59 kB
packages/icon/dist/umd/String.js 1.69 kB
packages/icon/dist/umd/Sun.js 1.91 kB
packages/icon/dist/umd/Support.js 1.78 kB
packages/icon/dist/umd/Sweep.js 1.8 kB
packages/icon/dist/umd/Table.js 1.56 kB
packages/icon/dist/umd/Tag.js 1.6 kB
packages/icon/dist/umd/TemporaryTable.js 1.81 kB
packages/icon/dist/umd/ThumbsDown.js 1.9 kB
packages/icon/dist/umd/ThumbsUp.js 1.9 kB
packages/icon/dist/umd/TimeSeries.js 1.95 kB
packages/icon/dist/umd/TimeSeriesCollection.js 2.08 kB
packages/icon/dist/umd/Trash.js 1.6 kB
packages/icon/dist/umd/Undo.js 1.92 kB
packages/icon/dist/umd/University.js 2.11 kB
packages/icon/dist/umd/Unlock.js 1.79 kB
packages/icon/dist/umd/Unsorted.js 1.83 kB
packages/icon/dist/umd/UpDownCarets.js 1.67 kB
packages/icon/dist/umd/Upload.js 1.88 kB
packages/icon/dist/umd/VerticalEllipsis.js 1.58 kB
packages/icon/dist/umd/View.js 1.73 kB
packages/icon/dist/umd/Visibility.js 1.91 kB
packages/icon/dist/umd/VisibilityOff.js 2.31 kB
packages/icon/dist/umd/Warning.js 1.67 kB
packages/icon/dist/umd/Wizard.js 2.03 kB
packages/icon/dist/umd/Wrench.js 2.01 kB
packages/icon/dist/umd/Write.js 2.3 kB
packages/icon/dist/umd/X.js 1.71 kB
packages/icon/dist/umd/XWithCircle.js 1.65 kB
packages/info-sprinkle/dist/esm/index.js 1.83 kB
packages/info-sprinkle/dist/umd/index.js 2.04 kB
packages/inline-definition/dist/esm/index.js 1.71 kB
packages/inline-definition/dist/umd/index.js 1.89 kB
packages/input-box/dist/esm/index.js 4.67 kB
packages/input-box/dist/umd/index.js 4.9 kB
packages/input-option/dist/esm/index.js 2.67 kB
packages/input-option/dist/umd/index.js 2.82 kB
packages/leafygreen-provider/dist/esm/index.js 1.87 kB
packages/leafygreen-provider/dist/umd/index.js 2.03 kB
packages/lib/dist/esm/index.js 3.28 kB
packages/lib/dist/umd/index.js 3.43 kB
packages/loading-indicator/dist/esm/index.js 3.94 kB
packages/loading-indicator/dist/esm/page-loader/index.js 2.86 kB
packages/loading-indicator/dist/esm/spinner/index.js 2.32 kB
packages/loading-indicator/dist/esm/testing/index.js 316 B
packages/loading-indicator/dist/umd/index.js 4.1 kB
packages/loading-indicator/dist/umd/testing/index.js 441 B
packages/logo/dist/esm/index.js 39 kB
packages/logo/dist/umd/index.js 39.4 kB
packages/marketing-modal/dist/esm/index.js 3.55 kB
packages/marketing-modal/dist/umd/index.js 3.75 kB
packages/menu/dist/esm/index.js 8.15 kB
packages/menu/dist/umd/index.js 8.43 kB
packages/modal/dist/esm/index.js 3.32 kB
packages/modal/dist/esm/testing/index.js 278 B
packages/modal/dist/umd/index.js 3.46 kB
packages/modal/dist/umd/testing/index.js 399 B
packages/number-input/dist/esm/index.js 5.69 kB
packages/number-input/dist/umd/index.js 5.85 kB
packages/ordered-list/dist/esm/index.js 1.33 kB
packages/ordered-list/dist/umd/index.js 1.5 kB
packages/pagination/dist/esm/index.js 1.7 kB
packages/pagination/dist/umd/index.js 1.94 kB
packages/palette/dist/esm/index.js 411 B
packages/palette/dist/umd/index.js 561 B
packages/password-input/dist/esm/index.js 4.55 kB
packages/password-input/dist/umd/index.js 4.75 kB
packages/pipeline/dist/esm/index.js 7.85 kB
packages/pipeline/dist/umd/index.js 8.12 kB
packages/polymorphic/dist/esm/index.js 1.27 kB
packages/polymorphic/dist/umd/index.js 1.41 kB
packages/popover/dist/esm/index.js 5.25 kB
packages/popover/dist/umd/index.js 5.4 kB
packages/portal/dist/esm/index.js 923 B
packages/portal/dist/umd/index.js 1.09 kB
packages/preview-card/dist/esm/index.js 2.35 kB
packages/preview-card/dist/esm/testing/index.js 2.68 kB
packages/preview-card/dist/umd/index.js 2.5 kB
packages/preview-card/dist/umd/testing/index.js 2.81 kB
packages/progress-bar/dist/esm/index.js 5.55 kB
packages/progress-bar/dist/esm/testing/index.js 507 B
packages/progress-bar/dist/umd/index.js 5.8 kB
packages/progress-bar/dist/umd/testing/index.js 635 B
packages/radio-box-group/dist/esm/index.js 2.87 kB
packages/radio-box-group/dist/umd/index.js 3 kB
packages/radio-group/dist/esm/index.js 3.25 kB
packages/radio-group/dist/umd/index.js 3.4 kB
packages/resizable/dist/esm/index.js 2.48 kB
packages/resizable/dist/umd/index.js 2.58 kB
packages/ripple/dist/esm/index.js 954 B
packages/ripple/dist/umd/index.js 1.05 kB
packages/search-input/dist/esm/index.js 5.91 kB
packages/search-input/dist/umd/index.js 6.11 kB
packages/section-nav/dist/esm/index.js 2.62 kB
packages/section-nav/dist/esm/testing/index.js 2.85 kB
packages/section-nav/dist/umd/index.js 2.76 kB
packages/section-nav/dist/umd/testing/index.js 3.03 kB
packages/segmented-control/dist/esm/index.js 5.44 kB
packages/segmented-control/dist/umd/index.js 5.59 kB
packages/select/dist/esm/index.js 8.67 kB
packages/select/dist/esm/testing/index.js 752 B
packages/select/dist/umd/index.js 8.87 kB
packages/select/dist/umd/testing/index.js 893 B
packages/side-nav/dist/esm/index.js 7.48 kB
packages/side-nav/dist/umd/index.js 7.72 kB
packages/skeleton-loader/dist/esm/index.js 3.25 kB
packages/skeleton-loader/dist/umd/index.js 3.47 kB
packages/split-button/dist/esm/index.js 3.56 kB
packages/split-button/dist/umd/index.js 3.75 kB
packages/stepper/dist/esm/index.js 3.48 kB
packages/stepper/dist/umd/index.js 3.69 kB
packages/table/dist/esm/index.js 8.04 kB
packages/table/dist/esm/testing/index.js 694 B
packages/table/dist/umd/index.js 8.27 kB
packages/table/dist/umd/testing/index.js 814 B
packages/tabs/dist/esm/index.js 5.14 kB
packages/tabs/dist/esm/testing/index.js 597 B
packages/tabs/dist/umd/index.js 5.29 kB
packages/tabs/dist/umd/testing/index.js 717 B
packages/testing-lib/dist/esm/index.js 3.34 kB
packages/testing-lib/dist/umd/index.js 3.56 kB
packages/testing-lib/dist/umd/renderHookServer17.js 385 B
packages/testing-lib/dist/umd/renderHookServer18.js 593 B
packages/text-area/dist/esm/index.js 2.2 kB
packages/text-area/dist/esm/testing/index.js 466 B
packages/text-area/dist/umd/index.js 2.36 kB
packages/text-area/dist/umd/testing/index.js 604 B
packages/text-input/dist/esm/index.js 2.5 kB
packages/text-input/dist/esm/testing/index.js 520 B
packages/text-input/dist/umd/index.js 2.68 kB
packages/text-input/dist/umd/testing/index.js 654 B
packages/time-input/dist/esm/testing/index.js 107 B
packages/time-input/dist/umd/index.js 4.36 kB
packages/time-input/dist/umd/testing/index.js 236 B
packages/toast/dist/esm/index.js 8.28 kB
packages/toast/dist/umd/index.js 8.56 kB
packages/toggle/dist/esm/index.js 3 kB
packages/toggle/dist/esm/testing/index.js 276 B
packages/toggle/dist/umd/index.js 3.19 kB
packages/toggle/dist/umd/testing/index.js 407 B
packages/tokens/dist/esm/index.js 3.29 kB
packages/tokens/dist/umd/index.js 3.4 kB
packages/toolbar/dist/esm/index.js 3.33 kB
packages/toolbar/dist/esm/testing/index.js 527 B
packages/toolbar/dist/umd/index.js 3.44 kB
packages/toolbar/dist/umd/testing/index.js 643 B
packages/tooltip/dist/esm/index.js 4.42 kB
packages/tooltip/dist/umd/index.js 4.7 kB
packages/typography/dist/esm/index.js 5.8 kB
packages/typography/dist/umd/index.js 5.95 kB
packages/vertical-stepper/dist/esm/index.js 3.19 kB
packages/vertical-stepper/dist/umd/index.js 3.39 kB
packages/wizard/dist/esm/index.js 2.36 kB
packages/wizard/dist/esm/testing/index.js 430 B
packages/wizard/dist/umd/index.js 2.51 kB
packages/wizard/dist/umd/testing/index.js 547 B
tools/build/dist/esm/index.js 6.56 kB
tools/build/dist/umd/cli.js 6.7 kB
tools/build/dist/umd/index.js 6.83 kB
tools/cli/dist/esm/index.js 2.54 kB
tools/cli/dist/umd/index.js 2.71 kB
tools/codemods/dist/_virtual/_rollupPluginBabelHelpers.js 936 B
tools/codemods/dist/codemods/loading-spinner-v5/transform.js 650 B
tools/codemods/dist/codemods/modal-v20/transform.js 727 B
tools/codemods/dist/codemods/named-exports/transform.js 764 B
tools/codemods/dist/codemods/popover-v12/transform.js 1.1 kB
tools/codemods/dist/codemods/tabs-v17/transform.js 368 B
tools/codemods/dist/constants.js 148 B
tools/codemods/dist/esm/_virtual/_rollupPluginBabelHelpers.mjs 928 B
tools/codemods/dist/esm/codemods/loading-spinner-v5/transform.mjs 646 B
tools/codemods/dist/esm/codemods/modal-v20/transform.mjs 731 B
tools/codemods/dist/esm/codemods/named-exports/transform.mjs 751 B
tools/codemods/dist/esm/codemods/popover-v12/transform.mjs 1.09 kB
tools/codemods/dist/esm/codemods/tabs-v17/transform.mjs 366 B
tools/codemods/dist/esm/constants.mjs 148 B
tools/codemods/dist/esm/index.js 3.4 kB
tools/codemods/dist/esm/types.mjs 765 B
tools/codemods/dist/esm/utils/imports/getImportSpecifiersForDeclaration.mjs 280 B
tools/codemods/dist/esm/utils/imports/hasNamedImport.mjs 179 B
tools/codemods/dist/esm/utils/imports/mergeImportSpecifiers.mjs 261 B
tools/codemods/dist/esm/utils/jsx/getJSXAttributes.mjs 160 B
tools/codemods/dist/esm/utils/jsx/insertJSXComment/insertJSXComment.mjs 369 B
tools/codemods/dist/esm/utils/transformations/addJSXAttributes/addJSXAttributes.mjs 412 B
tools/codemods/dist/esm/utils/transformations/consolidateJSXAttributes/consolidateJSXAttributes.mjs 665 B
tools/codemods/dist/esm/utils/transformations/removeJSXAttributes/removeJSXAttributes.mjs 360 B
tools/codemods/dist/esm/utils/transformations/replaceJSXAttributes/replaceJSXAttributes.mjs 278 B
tools/codemods/dist/types.js 765 B
tools/codemods/dist/umd/index.js 3.64 kB
tools/codemods/dist/utils/imports/getImportSpecifiersForDeclaration.js 283 B
tools/codemods/dist/utils/imports/hasNamedImport.js 183 B
tools/codemods/dist/utils/imports/mergeImportSpecifiers.js 260 B
tools/codemods/dist/utils/jsx/getJSXAttributes.js 164 B
tools/codemods/dist/utils/jsx/insertJSXComment/insertJSXComment.js 371 B
tools/codemods/dist/utils/transformations/addJSXAttributes/addJSXAttributes.js 410 B
tools/codemods/dist/utils/transformations/consolidateJSXAttributes/consolidateJSXAttributes.js 664 B
tools/codemods/dist/utils/transformations/removeJSXAttributes/removeJSXAttributes.js 364 B
tools/codemods/dist/utils/transformations/replaceJSXAttributes/replaceJSXAttributes.js 282 B
tools/create/dist/esm/index.js 4.31 kB
tools/create/dist/umd/index.js 4.48 kB
tools/eslint-plugin/dist/esm/index.js 1.08 kB
tools/eslint-plugin/dist/umd/index.js 1.18 kB
tools/install/dist/esm/index.js 2.23 kB
tools/install/dist/umd/index.js 2.38 kB
tools/link/dist/esm/index.js 5.3 kB
tools/link/dist/umd/index.js 5.44 kB
tools/lint/dist/esm/index.js 4.11 kB
tools/lint/dist/umd/index.js 4.25 kB
tools/meta/dist/esm/index.js 1.71 kB
tools/meta/dist/umd/index.js 1.85 kB
tools/prompt-kit/dist/esm/index.js 2.27 kB
tools/prompt-kit/dist/umd/index.js 2.41 kB
tools/slackbot/dist/esm/index.js 4.8 kB
tools/slackbot/dist/umd/index.js 4.97 kB
tools/storybook-addon/dist/esm/index.js 2.22 kB
tools/storybook-addon/dist/esm/main.js 2.22 kB
tools/storybook-addon/dist/esm/manager.js 554 B
tools/storybook-addon/dist/esm/preview.js 1.69 kB
tools/storybook-addon/dist/umd/index.js 2.34 kB
tools/storybook-addon/dist/umd/main.js 2.34 kB
tools/storybook-addon/dist/umd/manager.js 691 B
tools/storybook-addon/dist/umd/preview.js 1.81 kB
tools/storybook-decorators/dist/esm/index.js 3.28 kB
tools/storybook-decorators/dist/umd/index.js 3.56 kB
tools/storybook-utils/dist/esm/index.js 2.77 kB
tools/storybook-utils/dist/umd/index.js 2.9 kB
tools/test-harnesses/dist/esm/index.js 1.78 kB
tools/test-harnesses/dist/umd/index.js 1.91 kB
tools/test/dist/esm/index.js 1.68 kB
tools/test/dist/umd/index.js 1.82 kB
tools/update/dist/esm/index.js 725 B
tools/update/dist/umd/index.js 893 B
tools/validate/dist/esm/index.js 5.75 kB
tools/validate/dist/umd/index.js 5.98 kB

compressed-size-action

@shaneeza shaneeza marked this pull request as ready for review December 15, 2025 15:17
@shaneeza shaneeza requested a review from a team as a code owner December 15, 2025 15:17
@shaneeza shaneeza requested review from TheSonOfThomp and stephl3 and removed request for a team December 15, 2025 15:17
* // returns new Date('2026-02-21T04:00:00Z')
* ```
*/
export const newUTCFromTimeZone = ({
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like this is doing the same thing as newTZDate

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you're correct. I initially looked at this, and I thought it was doing something else.

You have this comment innewTZDate, // This API is less than perfect. Do you remember why you wrote that?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The function signature of newUTC matches the signature of new Date() (i.e. both support an array of numbers, newUTC(2025, 12, 19) etc)

Needing to prefix newTZDate with the offset feels a bit clunky to me
i.e. newTZDate(-5, 2025, 12, 19) just looks kinda wrong. Nothing inherently bad about it though

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your implementation supports IANA strings, so we could extend newTZDate to support that: newTZDate('America/New_York', 2025, 12, 19)

Copy link
Collaborator Author

@shaneeza shaneeza Dec 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I prefer not to pass the offset number and would rather use a string. I agree that it looks kinda wrong. I can update this to either:

With the IANA string and date, I can find the offset using getTimezoneOffset from date-fns, and continue to use what you have.

OR

With the IANA string and date, use the zonedTimeToUtc util from date-fns.

Regardless of the approach, we still need to depend on date-fns. I think that 2 would be easier because we don't need to calculate the offset manually.

Comment on lines 19 to 32
// if dayPeriod is AM and hour is 12, return 0 since 12 AM is 00:00
if (dayPeriod === 'AM') {
if (hour === '12') {
return '0';
}

// else return hour as-is
return hour;
}

// if dayPeriod is PM and hour is 12, return 12 since 12 PM is 12:00
if (hour === '12') {
return '12';
}
Copy link
Collaborator

@TheSonOfThomp TheSonOfThomp Dec 19, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// if dayPeriod is AM and hour is 12, return 0 since 12 AM is 00:00
if (dayPeriod === 'AM') {
if (hour === '12') {
return '0';
}
// else return hour as-is
return hour;
}
// if dayPeriod is PM and hour is 12, return 12 since 12 PM is 12:00
if (hour === '12') {
return '12';
}
if(hour === '12') {
// 12AM -> 0:00
// 12PM -> 12:00
return dayPeriod === 'AM' ? '0' : '12'
}

* @param dayPeriod - The day period to use for the conversion (AM or PM)
* @returns The converted hour
*/
export const convert12hTo24h = (hour: string, dayPeriod: string) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is hour: string , and not number?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, should dayPeriod be an enum or string literal?

Suggested change
export const convert12hTo24h = (hour: string, dayPeriod: string) => {
export const convert12hTo24h = (hour: string, dayPeriod: 'AM' | 'PM') => {

}

// else return hour + 12
return `${parseInt(hour) + 12}`;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if hour is

  • <= 0?
  • > 12?
  • any other string?

* @returns The select unit option.
*/
export const findUnitOptionByDayPeriod = (
dayPeriod: string,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like dayPeriod should be more explicitly typed (everywhere)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree, will update

): UnitOption => {
const selectUnitOption = unitOptions.find(
option => option.displayName === dayPeriod,
) as UnitOption;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unitOptions.find(...) might return undefined. We should handle that case here

* // returns: { hour: '02', minute: '30', second: '00' }
* ```
*/
export const getFormattedTimeSegments = (segments: TimeSegmentsState) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using the word formatted here makes me think it's supposed to be using a the formatter

const { day, month, year } = dateValues;
const { hour, minute, second } = segments;

const convertedHour = is12HourFormat
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: maybe be more explicit with the var name? converted to what?

day1.getUTCHours() === day2.getUTCHours() &&
day1.getUTCMinutes() === day2.getUTCMinutes() &&
day1.getUTCSeconds() === day2.getUTCSeconds() &&
day1.getUTCMilliseconds() === day2.getUTCMilliseconds()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: do we need to check milliseconds?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

prob not

* @param day2 - The second date to check
* @returns Whether the two dates are the same day and time in UTC
*/
export const isSameUTCDayAndTime = (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can probably use isEqual from date-fns
https://date-fns.org/v4.1.0/docs/isEqual

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if we need to explicitly check UTC, can we rename this isEqualUTC and move to date-utils?

import { isEverySegmentValueExplicit } from '../isEverySegmentValueExplicit/isEverySegmentValueExplicit';

/**
* Checks if the new date should be set.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we summarize the logic here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ignore this hook, it's being replaced in the next PR

@github-actions
Copy link
Contributor

Coverage after merging LG-5532/segments-state-utils into LG-5532/segments-display-values will be

79.22%

Coverage Report for Changed Files
FileStmtsBranchesFuncsLinesUncovered Lines
packages/date-utils/src/isSameUTCDayAndTime
   isSameUTCDayAndTime.ts92.86%90%100%100%15
packages/date-utils/src/newUTCFromTimeZone
   newUTCFromTimeZone.ts100%100%100%100%
packages/time-input/src/TimeInputInputs
   TimeInputInputs.tsx0%0%0%0%19, 21–22, 24–25, 31, 37, 43, 53, 59, 68, 72, 72, 76, 86
packages/time-input/src/hooks/useSelectUnit
   useSelectUnit.ts0%0%0%0%20, 24–25, 27, 38, 47–48, 50, 52, 52, 52–54, 58
packages/time-input/src/utils/convert12hTo24h
   convert12hTo24h.ts100%100%100%100%
packages/time-input/src/utils/doesSomeSegmentExist
   doesSomeSegmentExist.ts100%100%100%100%
packages/time-input/src/utils/getNewUTCDateFromSegments
   getNewUTCDateFromSegments.ts100%100%100%100%
packages/time-input/src/utils/getPaddedTimeSegmentsFromDate
   getPaddedTimeSegmentsFromDate.ts100%100%100%100%
packages/time-input/src/utils/getPaddedTimeSegmentsFromDate/getPaddedTimeSegments
   getPaddedTimeSegments.ts100%100%100%100%
packages/time-input/src/utils/isEverySegmentValueExplicit
   isEverySegmentValueExplicit.ts100%100%100%100%
packages/time-input/src/utils/shouldSetValue
   shouldSetValue.ts100%100%100%100%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants