Related to #30503 , #28399 and #27484
Context ✨
We would like to refactor the entire @wordpress/components package to TypeScript.
Some components are already written in TypeScript, while the majority of the code is still written in JavaScript.
By refactoring the whole package to TypeScript, we would be able to take advantage of type safety, while also providing first-party types to the package's consumers (instead of the third-party ones ).
A fully-typed set of components would also potentially allow us to generate documentation programmatically based off types.
Details of the refactor 🔍
The refactors should introduce the least amount of runtime changes possible — ideally none. All JS files should be refactored to TypeScript.
You can also refer to the TypeScript migration guide in the @wordpress/components package guidelines ., and reference an existing component like ItemGroup or ToolsPanel .
Next up
Once the refactor to TypeScript is complete, we'll be able to:
migrate all components to Emotion for styles
refactor folder structures, potentially split into hook+component
refactor components to use context
remove (or mark as deprecated) the third party types
List ⚒️
The components in the exclude list of our tsconfig are particularly high priority.
AlignmentMatrixControl (packages/components/src/alignment-matrix-control) AlignmentMatrixControl: refactor to TypeScript #46162
AnglePickerControl (packages/components/src/angle-picker-control) @ciampo AnglePickerControl: refactor to TypeScript #45820
Animate (packages/components/src/animate) Animate: refactor to TypeScript #49243
Animation (packages/components/src/animation)
Autocomplete (packages/components/src/autocomplete) Autocomplete: refactor to TypeScript #47751
BaseControl (packages/components/src/base-control) BaseControl: Migrate to TypeScript #39468
BaseField (packages/components/src/base-field) useBaseField: Convert component to TypeScript #45712
BorderBoxControl (packages/components/src/border-box-control) (Storybook BorderBoxControl: Refactor stories to TypeScript and Controls #45002 , tests BorderBoxControl: migrate tests to TypeScript, remove act() call #47755 )
BorderControl (packages/components/src/border-control) BorderControl: Complete TypeScript migration #41843
BoxControl (packages/components/src/box-control) BoxControl: Convert to TypeScript #47622
Button (packages/components/src/button) Refactor Button component to TypeScript #46997
ButtonGroup (packages/components/src/button-group) ButtonGroup: Convert to TypeScript #41007
Card (packages/components/src/card) Card: migrate to TypeScript #42941
CheckboxControl (packages/components/src/checkbox-control) CheckboxControl: Convert component to TypeScript #40915
CircularOptionPicker (packages/components/src/circular-option-picker) CircularOptionPicker: refactor to TypeScript #47937
ClipboardButton (packages/components/src/clipboard-button) Convert ClipboardButton to TypeScript #51334
ColorIndicator (packages/components/src/color-indicator) ColorIndicator: Convert component to TypeScript #41587
ColorListPicker (packages/components/src/color-list-picker) ColorListPicker: refactor to TypeScript #46358
ColorPalette (packages/components/src/color-palette) Convert the ColorPalette component to TypeScript #44632
ColorPicker (packages/components/src/color-picker) @chad1008 ColorPicker: TypeScript refactor #49214
ComboboxControl (packages/components/src/combobox-control) ComboboxControl: Convert to TypeScript #47581
Composite (packages/components/src/composite) Composite: refactor to TypeScript #54028
ConfirmDialog (packages/components/src/confirm-dialog) ConfirmDialog: ts unit test storybook #54954
CustomGradientPicker (packages/components/src/custom-gradient-picker) CustomGradientPicker: Refactor to TypeScript #48929
CustomSelectControl (packages/components/src/custom-select-control) (instead of a refactor, the component will be rewritten from scratch CustomSelectControl: refactor using ariakit #41726 )
Dashicon (packages/components/src/dashicon) Dashicon: refactor to TypeScript #45924
DateTime (packages/components/src/date-time) Rewrite DatePicker, TimePicker and DateTimePicker in TypeScript #40775 Use TypeScript and controls for DateTimePicker's stories #40986 Add jest-console typings and convert DateTimePicker tests to TypeScript #40957
DimensionControl (packages/components/src/dimension-control) DimensionControl(Experimental): refactor to TypeScript #47351
Disabled (packages/components/src/disabled) Disabled: migrate to TypeScript #42708
Disclosure (packages/components/src/disclosure) (will be migrated as part of the reakit -> ariakit refactor ) DisclosureContent: migrate from reakit to @ariakit/react #55639
Divider (packages/components/src/divider) Divider: Complete TypeScript migration of component #41991
Draggable (packages/components/src/draggable) Draggable: Convert component to TypeScript #45471
DropZone (packages/components/src/drop-zone) DropZone: Convert to TypeScript #43962
Dropdown (packages/components/src/dropdown) (should also replace types in ColorPalette) Refactor Dropdown component to TypeScript #45787
DropdownMenu (packages/components/src/dropdown-menu) (suggested in this comment ) @chad1008 DropdownMenu: refactor to TypeScript #50187
DuotonePicker, DuotoneSwatch (packages/components/src/duotone-picker) DuotonePicker, DuotoneSwatch: Convert to TypeScript #49060
Elevation (packages/components/src/elevation) Elevation: Convert component to TypeScript #42302
ExternalLink (packages/components/src/external-link) ExternalLink: Convert component to TypeScript #41681
Flex (packages/components/src/flex) Flex: Convert component to TypeScript #42537
FocalPointPicker (packages/components/src/focal-point-picker) FocalPointPicker: Convert to TypeScript #43872
FocusableIframe (packages/components/src/focusable-iframe) FocusableIframe: refactor to TypeScript #53979
FontSizePicker (packages/components/src/font-size-picker) Convert FontSizePicker to TypeScript #44449
FormFileUpload (packages/components/src/form-file-upload) FormFileUpload: Convert to TypeScript #43960
FormToggle (packages/components/src/form-toggle) FormToggle: Covert component to TypeScript #41729
FormTokenField (packages/components/src/form-token-field) Rewrite <FormTokenField> to functional component and Typescript. #41216 , FormTokenField: use KeyboardEvent.code, refactor tests to model RTL and user-event #43442
GradientPicker (packages/components/src/gradient-picker) GradientPicker: refactor to TypeScript #48316 @chad1008
Grid (packages/components/src/grid) Grid: Convert component to TypeScript #41923
Guide (packages/components/src/guide) Guide: refactor to TypeScript #47493
HStack packages/components/src/h-stack) HStack: Convert component to TypeScript #41580
Heading (packages/components/src/heading) Heading: Complete TypeScript migration of component #41921
HigherOrder (packages/components/src/higher-order)
Icon (packages/components/src/icon) - convert tests Icon: refactor tests to TypeScript #49066
InputControl (packages/components/src/input-control) components: InputControl to TypeScript #33696
IsolatedEventContainer IsolatedEventContainer to Typescript (just test file) #54316 (packages/components/src/isolated-event-container)
ItemGroup (packages/components/src/item-group) (ItemGroup: migrate Storybook to controls, refactor to TypeScript #46945 )
KeyboardShortcuts (packages/components/src/keyboard-shortcuts) KeyboardShortcuts: Convert to TypeScript #47429
MenuGroup (packages/components/src/menu-group) MenuGroup: refactor to TypeScript and Emotion #36561 MenuGroup: Convert component to TypeScript #45617
MenuItem (packages/components/src/menu-item) MenuItem: Refactor to TypeScript #53132 MenuItem: refactor to TypeScript and Emotion #37020
MenuItemsChoice (packages/components/src/menu-items-choice) MenuItemsChoice: Refactor to TypeScript #47180
Modal (packages/components/src/modal) Modal: Convert component to TypeScript #42949
NavigableContainer (packages/components/src/navigable-container) NavigableContainer: convert to TypeScript #49377
Navigation (packages/components/src/navigation) Navigation: refactor to TypeScript #48742
Navigator (packages/components/src/navigator) (unit tests: Navigator: refactor tests to TypeScript and user-event #44970 , storybook: Navigator: refactor Storybook code to TypeScript and controls #44979 )
Notice (packages/components/src/notice) Notice: refactor to TypeScript #47118
NumberControl (packages/components/src/number-control) (suggested in this comment ) (include also changes proposed in LineHeightControl: Migrate internals to NumberControl (Part 2: Behavior) #37164 (comment) )
PaletteEdit (packages/components/src/palette-edit): PaletteEdit: Convert to TypeScript #47764
Panel (packages/components/src/panel) Panel: Convert to TypeScript #47259
Placeholder (packages/components/src/placeholder) Placeholder: Convert component to TypeScript #42990 Components: Refactor Placeholder tests to @testing-library/react #43069
Popover (packages/components/src/popover) Popover: refactor to TypeScript #43823 Popover: convert unit tests to TypeScript and modern RTL assertions #44373
QueryControl (packages/components/src/query-controls) Refactor QueryControls component to TypeScript #46721
Radio (packages/components/src/radio)
RadioContext (packages/components/src/radio-context)
RadioControl (packages/components/src/radio-control) RadioControl: Convert component to TypeScript #41568
RadioGroup (packages/components/src/radio-group)
RangeControl (packages/components/src/range-control) (suggested in this comment ) RangeControl: Convert component to TypeScript #40535 , RangeControl: Convert stories to TypeScript #41444 , RangeControl: Convert unit tests to typescript #41445
ResizableBox (packages/components/src/resizable-box) (ResizableBox: Remove knobs in stories #46774 , ResizableBox: refactor styles to TypeScript #47756 )
ResponsiveWrapper (packages/components/src/responsive-wrapper) ResponsiveWrapper: Convert to TypeScript #46480
Sandbox (packages/components/src/sandbox) SandBox: Convert to TypeScript #46478
ScrollLock (packages/components/src/scroll-lock) ScrollLock: Covert component to TypeScript #42303
Scrollable (packages/components/src/scrollable) Scrollable: Convert component to TypeScript #42016
SearchControl (packages/components/src/search-control) SearchControl: Convert to TypeScript and add flag to remove bottom margin #43871
SelectControl (packages/components/src/select-control) SelectControl: Finish typescript migration #40737
Shortcut (packages/components/src/shortcut) Shortcut: Covert component to TypeScript #42272
SlotFill (packages/components/src/slot-fill) SlotFill: Migrate to Typescript. #51350
Snackbar (packages/components/src/snackbar) (Convert the Snackbar component to TypeScript #45472 )
Spacer (packages/components/src/spacer) Spacer: Complete TypeScript migration of component #42013
Spinner (packages/components/src/spinner) Spinner: Convert component to TypeScript #41540
StyleProvider (packages/components/src/style-provider) StyleProvider: Convert component to TypeScript #42541
Surface (packages/components/src/surface) Surface: Convert component to TypeScript #41212
Swatch (packages/components/src/swatch) Swatch: Convert component to TypeScript #42162
TabPanel (packages/components/src/tab-panel) TabPanel: Convert to TypeScript #43536
Text (packages/components/src/text) (check truncate behaviors noted in this comment , try removing boolean types from adjustLineHeightForInnerControls) Text Component: Typescript'n #54953
TextControl (packages/components/src/text-control) TextControl: Convert component to TypeScript #40633
TextHighlight (packages/components/src/text-highlight) TextHighlight: Convert component to TypeScript #41698
TextareaControl (packages/components/src/textarea-control) TextareaControl: Convert component to TypeScript #41215
Tip (packages/components/src/tip) Tip: Covert component to TypeScript #42262
ToggleControl (packages/components/src/toggle-control) ToggleControl: Convert to TypeScript #43717
ToggleGroupControl (packages/components/src/toggle-group-control)
Toolbar:
ToolsPanel (packages/components/src/tools-panel) @ciampo (Storybook: ToolsPanel: refactor Storybook examples to TypeScript, fix types inconsistencies #47944 , Unit tests: ToolsPanel: refactor unit tests to TypeScript #48275 )
Tooltip (packages/components/src/tooltip) (As per Tooltip: discuss simplifying the component #42753 , the component won't be refactored, but will be instead completely rewritten) ToolTip: refactor using ariakit #48440
TreeGrid (packages/components/src/tree-grid) TreeGrid: Convert to TypeScript #47516
TreeSelect (packages/components/src/tree-select) TreeSelect Convert to Typescript. #41536
Truncate (packages/components/src/truncate) Truncate: Convert component to TypeScript #41697
UnitControl (packages/components/src/unit-control) (refactored to TS in 35281 , suggested follow ups in this comment , tests refactored in UnitControl: rewrite tests in TypeScript #40697 )
VStack (packages/components/src/v-stack) VStack: Convert component to TypeScript #41850
View (packages/components/src/view) View component: rename index.js to index.ts #45667
VisuallyHidden (packages/components/src/visually-hidden) VisuallyHidden: Convert component to TypeScript #42220
ZStack (packages/components/src/z-stack) ZStack: Convert component story to TypeScript and add inline docs #41694
index.js
Click to reveal the dependency graph
Related to #30503, #28399 and #27484
Context ✨
We would like to refactor the entire
@wordpress/componentspackage to TypeScript.Some components are already written in TypeScript, while the majority of the code is still written in JavaScript.
By refactoring the whole package to TypeScript, we would be able to take advantage of type safety, while also providing first-party types to the package's consumers (instead of the third-party ones).
A fully-typed set of components would also potentially allow us to generate documentation programmatically based off types.
Details of the refactor 🔍
The refactors should introduce the least amount of runtime changes possible — ideally none. All JS files should be refactored to TypeScript.
You can also refer to the TypeScript migration guide in the
@wordpress/componentspackage guidelines., and reference an existing component likeItemGrouporToolsPanel.Next up
Once the refactor to TypeScript is complete, we'll be able to:
List ⚒️
The components in the
excludelist of our tsconfig are particularly high priority.AlignmentMatrixControl(packages/components/src/alignment-matrix-control) AlignmentMatrixControl: refactor to TypeScript #46162AnglePickerControl(packages/components/src/angle-picker-control) @ciampo AnglePickerControl: refactor to TypeScript #45820Animate(packages/components/src/animate) Animate: refactor to TypeScript #49243Animation(packages/components/src/animation)Autocomplete(packages/components/src/autocomplete) Autocomplete: refactor to TypeScript #47751BaseControl(packages/components/src/base-control) BaseControl: Migrate to TypeScript #39468BaseField(packages/components/src/base-field) useBaseField: Convert component to TypeScript #45712BorderBoxControl(packages/components/src/border-box-control) (Storybook BorderBoxControl: Refactor stories to TypeScript and Controls #45002, tests BorderBoxControl: migrate tests to TypeScript, removeact()call #47755)BorderControl(packages/components/src/border-control) BorderControl: Complete TypeScript migration #41843BoxControl(packages/components/src/box-control) BoxControl: Convert to TypeScript #47622Button(packages/components/src/button) RefactorButtoncomponent to TypeScript #46997NavigatorBackButtonandNavigatorButton) NavigatorButton: Reuse Button types #47754ButtonGroup(packages/components/src/button-group) ButtonGroup: Convert to TypeScript #41007Card(packages/components/src/card) Card: migrate to TypeScript #42941CheckboxControl(packages/components/src/checkbox-control) CheckboxControl: Convert component to TypeScript #40915CircularOptionPicker(packages/components/src/circular-option-picker) CircularOptionPicker: refactor to TypeScript #47937ClipboardButton(packages/components/src/clipboard-button) ConvertClipboardButtonto TypeScript #51334ColorIndicator(packages/components/src/color-indicator) ColorIndicator: Convert component to TypeScript #41587ColorListPicker(packages/components/src/color-list-picker) ColorListPicker: refactor to TypeScript #46358ColorPalette(packages/components/src/color-palette) Convert theColorPalettecomponent to TypeScript #44632ColorPicker(packages/components/src/color-picker) @chad1008 ColorPicker: TypeScript refactor #49214ComboboxControl(packages/components/src/combobox-control) ComboboxControl: Convert to TypeScript #47581Composite(packages/components/src/composite) Composite: refactor to TypeScript #54028ConfirmDialog(packages/components/src/confirm-dialog) ConfirmDialog: ts unit test storybook #54954CustomGradientPicker(packages/components/src/custom-gradient-picker) CustomGradientPicker: Refactor to TypeScript #48929CustomSelectControl(packages/components/src/custom-select-control) (instead of a refactor, the component will be rewritten from scratch CustomSelectControl: refactor using ariakit #41726)Dashicon(packages/components/src/dashicon) Dashicon: refactor to TypeScript #45924DateTime(packages/components/src/date-time) Rewrite DatePicker, TimePicker and DateTimePicker in TypeScript #40775 Use TypeScript and controls forDateTimePicker's stories #40986 Add jest-console typings and convert DateTimePicker tests to TypeScript #40957DimensionControl(packages/components/src/dimension-control)DimensionControl(Experimental): refactor to TypeScript #47351Disabled(packages/components/src/disabled) Disabled: migrate to TypeScript #42708Disclosure(packages/components/src/disclosure) (will be migrated as part of the reakit -> ariakit refactor)DisclosureContent: migrate fromreakitto@ariakit/react#55639Divider(packages/components/src/divider) Divider: Complete TypeScript migration of component #41991Draggable(packages/components/src/draggable) Draggable: Convert component to TypeScript #45471DropZone(packages/components/src/drop-zone) DropZone: Convert to TypeScript #43962Dropdown(packages/components/src/dropdown) (should also replace types inColorPalette) Refactor Dropdown component to TypeScript #45787DropdownMenu(packages/components/src/dropdown-menu) (suggested in this comment) @chad1008 DropdownMenu: refactor to TypeScript #50187DuotonePicker,DuotoneSwatch(packages/components/src/duotone-picker) DuotonePicker, DuotoneSwatch: Convert to TypeScript #49060Elevation(packages/components/src/elevation) Elevation: Convert component to TypeScript #42302ExternalLink(packages/components/src/external-link) ExternalLink: Convert component to TypeScript #41681Flex(packages/components/src/flex) Flex: Convert component to TypeScript #42537FocalPointPicker(packages/components/src/focal-point-picker) FocalPointPicker: Convert to TypeScript #43872FocusableIframe(packages/components/src/focusable-iframe) FocusableIframe: refactor to TypeScript #53979FontSizePicker(packages/components/src/font-size-picker) Convert FontSizePicker to TypeScript #44449FormFileUpload(packages/components/src/form-file-upload) FormFileUpload: Convert to TypeScript #43960FormToggle(packages/components/src/form-toggle) FormToggle: Covert component to TypeScript #41729FormTokenField(packages/components/src/form-token-field) Rewrite<FormTokenField>to functional component and Typescript. #41216, FormTokenField: use KeyboardEvent.code, refactor tests to model RTL and user-event #43442GradientPicker(packages/components/src/gradient-picker) GradientPicker: refactor to TypeScript #48316 @chad1008Grid(packages/components/src/grid) Grid: Convert component to TypeScript #41923Guide(packages/components/src/guide)Guide: refactor to TypeScript #47493HStackpackages/components/src/h-stack) HStack: Convert component to TypeScript #41580Heading(packages/components/src/heading) Heading: Complete TypeScript migration of component #41921HigherOrder(packages/components/src/higher-order)navigate-regionsnavigateRegions: Convert to TypeScript #48632with-constrained-tabbingUpdate: Change higher orderwith-constraint-tabbingfrom.jsto.tsx#48162with-fallback-styleswithFallbackStyles: Convert to TypeScript #48720with-filterswithFilters: Convert to TypeScript #48721with-focus-outsidewith-focus-outside: Convert to TypeScript #53980 (also remove the@ts-expect-errorcalls inComboboxControl)with-focus-returnwithFocusReturn: Convert to TypeScript #48748with-noticeswithNotices: Convert to TypeScript #49088with-spoken-messageswithSpokenMessages: Change js files to typescript #48163Icon(packages/components/src/icon) - convert testsIcon: refactor tests to TypeScript #49066InputControl(packages/components/src/input-control) components: InputControl to TypeScript #33696IsolatedEventContainerIsolatedEventContainer to Typescript (just test file) #54316 (packages/components/src/isolated-event-container)ItemGroup(packages/components/src/item-group) (ItemGroup: migrate Storybook to controls, refactor to TypeScript #46945)KeyboardShortcuts(packages/components/src/keyboard-shortcuts) KeyboardShortcuts: Convert to TypeScript #47429MenuGroup(packages/components/src/menu-group) MenuGroup: refactor to TypeScript and Emotion #36561 MenuGroup: Convert component to TypeScript #45617MenuItem(packages/components/src/menu-item)MenuItem: Refactor to TypeScript #53132 MenuItem: refactor to TypeScript and Emotion #37020MenuItemsChoice(packages/components/src/menu-items-choice)MenuItemsChoice: Refactor to TypeScript #47180Modal(packages/components/src/modal) Modal: Convert component to TypeScript #42949NavigableContainer(packages/components/src/navigable-container)NavigableContainer: convert to TypeScript #49377Navigation(packages/components/src/navigation) Navigation: refactor to TypeScript #48742Navigator(packages/components/src/navigator) (unit tests: Navigator: refactor tests to TypeScript and user-event #44970, storybook: Navigator: refactor Storybook code to TypeScript and controls #44979)Notice(packages/components/src/notice) Notice: refactor to TypeScript #47118NumberControl(packages/components/src/number-control) (suggested in this comment) (include also changes proposed in LineHeightControl: Migrate internals toNumberControl(Part 2: Behavior) #37164 (comment))valueprop and remove the last@ts-expect-errorcommentsNumberControl: refactor styles/tests/stories to TypeScript, replacefireEventwithuser-event#45990NumberControl: tidy up and fix types aroundvalueprop #45982PaletteEdit(packages/components/src/palette-edit):PaletteEdit: Convert to TypeScript #47764Panel(packages/components/src/panel) Panel: Convert to TypeScript #47259Placeholder(packages/components/src/placeholder) Placeholder: Convert component to TypeScript #42990 Components: Refactor Placeholder tests to @testing-library/react #43069Popover(packages/components/src/popover) Popover: refactor to TypeScript #43823 Popover: convert unit tests to TypeScript and modern RTL assertions #44373QueryControl(packages/components/src/query-controls) RefactorQueryControlscomponent to TypeScript #46721Radio(packages/components/src/radio)RadioContext(packages/components/src/radio-context)RadioControl(packages/components/src/radio-control) RadioControl: Convert component to TypeScript #41568RadioGroup(packages/components/src/radio-group)RangeControl(packages/components/src/range-control) (suggested in this comment) RangeControl: Convert component to TypeScript #40535, RangeControl: Convert stories to TypeScript #41444, RangeControl: Convert unit tests to typescript #41445ResizableBox(packages/components/src/resizable-box) (ResizableBox: Remove knobs in stories #46774, ResizableBox: refactor styles to TypeScript #47756)ResponsiveWrapper(packages/components/src/responsive-wrapper) ResponsiveWrapper: Convert to TypeScript #46480Sandbox(packages/components/src/sandbox) SandBox: Convert to TypeScript #46478ScrollLock(packages/components/src/scroll-lock) ScrollLock: Covert component to TypeScript #42303Scrollable(packages/components/src/scrollable) Scrollable: Convert component to TypeScript #42016SearchControl(packages/components/src/search-control) SearchControl: Convert to TypeScript and add flag to remove bottom margin #43871SelectControl(packages/components/src/select-control) SelectControl: Finish typescript migration #40737valueprop (string[]ifmultipleistrue,stringotherwise) SelectControl: improve prop types for single vs multiple selection #47390Shortcut(packages/components/src/shortcut) Shortcut: Covert component to TypeScript #42272SlotFill(packages/components/src/slot-fill) SlotFill: Migrate to Typescript. #51350Snackbar(packages/components/src/snackbar) (Convert theSnackbarcomponent to TypeScript #45472)Spacer(packages/components/src/spacer) Spacer: Complete TypeScript migration of component #42013Spinner(packages/components/src/spinner) Spinner: Convert component to TypeScript #41540StyleProvider(packages/components/src/style-provider) StyleProvider: Convert component to TypeScript #42541Surface(packages/components/src/surface) Surface: Convert component to TypeScript #41212Swatch(packages/components/src/swatch) Swatch: Convert component to TypeScript #42162TabPanel(packages/components/src/tab-panel) TabPanel: Convert to TypeScript #43536Text(packages/components/src/text) (check truncate behaviors noted in this comment, try removing boolean types fromadjustLineHeightForInnerControls) Text Component: Typescript'n #54953TextControl(packages/components/src/text-control) TextControl: Convert component to TypeScript #40633TextHighlight(packages/components/src/text-highlight) TextHighlight: Convert component to TypeScript #41698TextareaControl(packages/components/src/textarea-control) TextareaControl: Convert component to TypeScript #41215Tip(packages/components/src/tip) Tip: Covert component to TypeScript #42262ToggleControl(packages/components/src/toggle-control) ToggleControl: Convert to TypeScript #43717ToggleGroupControl(packages/components/src/toggle-group-control)Toolbar:Toolbar(packages/components/src/toolbar) Refactor Toolbar component to TypeScript #47087ToolbarButton(packages/components/src/toolbar-button) Refactor/toolbar button component to typescript #47750ToolbarContext(packages/components/src/toolbar-context) Refactor ToolbarContext to TS #49002ToolbarDropdownMenu(packages/components/src/toolbar-dropdown-menu) Toolbar/ToolbarDropdownMenu Typescript Conversion #54321ToolbarGroup(packages/components/src/toolbar-group) ToolbarGroup - Typescript #54317ToolbarItem(packages/components/src/toolbar-item) Refactor/toolbar item component to typescript #49190ToolsPanel(packages/components/src/tools-panel) @ciampo (Storybook:ToolsPanel: refactor Storybook examples to TypeScript, fix types inconsistencies #47944, Unit tests:ToolsPanel: refactor unit tests to TypeScript #48275)Tooltip(packages/components/src/tooltip) (As per Tooltip: discuss simplifying the component #42753, the component won't be refactored, but will be instead completely rewritten) ToolTip: refactor using ariakit #48440TreeGrid(packages/components/src/tree-grid) TreeGrid: Convert to TypeScript #47516TreeSelect(packages/components/src/tree-select) TreeSelect Convert to Typescript. #41536Truncate(packages/components/src/truncate) Truncate: Convert component to TypeScript #41697UnitControl(packages/components/src/unit-control) (refactored to TS in 35281, suggested follow ups in this comment, tests refactored in UnitControl: rewrite tests in TypeScript #40697)VStack(packages/components/src/v-stack) VStack: Convert component to TypeScript #41850View(packages/components/src/view) View component: rename index.js to index.ts #45667VisuallyHidden(packages/components/src/visually-hidden) VisuallyHidden: Convert component to TypeScript #42220ZStack(packages/components/src/z-stack) ZStack: Convert component story to TypeScript and add inline docs #41694index.jsClick to reveal the dependency graph