+ {/* We want to allow keydown events to be captured by the parent so that the parent can handle the event. */}
+ {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
+
+ {formatParts?.map((part, i) => {
+ if (part.type === 'literal') {
+ return (
+
+ {part.value}
+
+ );
+ } else if (isInputSegment(part.type, segmentEnum)) {
+ const Segment = segmentComponent;
+ return ;
+ }
+ })}
+
+
+ );
+};
+
+export const InputBox = React.forwardRef(
+ InputBoxWithRef,
+) as InputBoxComponentType;
+
+InputBox.displayName = 'InputBox';
diff --git a/packages/input-box/src/InputBox/InputBox.types.ts b/packages/input-box/src/InputBox/InputBox.types.ts
new file mode 100644
index 0000000000..ae5c3840ad
--- /dev/null
+++ b/packages/input-box/src/InputBox/InputBox.types.ts
@@ -0,0 +1,146 @@
+import React, { ForwardedRef, ReactElement } from 'react';
+
+import { DateType } from '@leafygreen-ui/date-utils';
+import { DynamicRefGetter } from '@leafygreen-ui/hooks';
+import { Size } from '@leafygreen-ui/tokens';
+
+import {
+ InputSegmentChangeEventHandler,
+ InputSegmentComponentProps,
+} from '../InputSegment/InputSegment.types';
+import { ExplicitSegmentRule } from '../utils';
+
+export interface InputChangeEvent