first commit

This commit is contained in:
Stefan Hacker
2026-04-03 09:38:48 +02:00
commit 37ad745546
47450 changed files with 3120798 additions and 0 deletions
@@ -0,0 +1,3 @@
import * as React from 'react';
import type { ISearchBoxProps } from './SearchBox.types';
export declare const SearchBoxBase: React.FunctionComponent<ISearchBoxProps>;
@@ -0,0 +1,137 @@
define(["require", "exports", "tslib", "react", "../../Utilities", "@fluentui/react-hooks", "../../Button", "../../Icon"], function (require, exports, tslib_1, React, Utilities_1, react_hooks_1, Button_1, Icon_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SearchBoxBase = void 0;
var COMPONENT_NAME = 'SearchBox';
var iconButtonStyles = { root: { height: 'auto' }, icon: { fontSize: '12px' } };
var iconButtonProps = { iconName: 'Clear' };
var defaultClearButtonProps = { ariaLabel: 'Clear text' };
var getClassNames = (0, Utilities_1.classNamesFunction)();
var useComponentRef = function (componentRef, inputElementRef, hasFocus) {
React.useImperativeHandle(componentRef, function () { return ({
focus: function () { var _a; return (_a = inputElementRef.current) === null || _a === void 0 ? void 0 : _a.focus(); },
blur: function () { var _a; return (_a = inputElementRef.current) === null || _a === void 0 ? void 0 : _a.blur(); },
hasFocus: function () { return hasFocus; },
}); }, [inputElementRef, hasFocus]);
};
exports.SearchBoxBase = React.forwardRef(function (props, forwardedRef) {
var ariaLabel = props.ariaLabel, className = props.className, _a = props.defaultValue, defaultValue = _a === void 0 ? '' : _a, disabled = props.disabled, underlined = props.underlined, styles = props.styles,
// eslint-disable-next-line @typescript-eslint/no-deprecated
labelText = props.labelText, _b = props.placeholder, placeholder = _b === void 0 ? labelText : _b, theme = props.theme, _c = props.clearButtonProps, clearButtonProps = _c === void 0 ? defaultClearButtonProps : _c, _d = props.disableAnimation, disableAnimation = _d === void 0 ? false : _d, _e = props.showIcon, showIcon = _e === void 0 ? false : _e, customOnClear = props.onClear, customOnBlur = props.onBlur, customOnEscape = props.onEscape, customOnSearch = props.onSearch, customOnKeyDown = props.onKeyDown, iconProps = props.iconProps, role = props.role, onChange = props.onChange,
// eslint-disable-next-line @typescript-eslint/no-deprecated
onChanged = props.onChanged;
var _f = React.useState(false), hasFocus = _f[0], setHasFocus = _f[1];
var prevChangeTimestamp = React.useRef(undefined);
var _g = (0, react_hooks_1.useControllableValue)(props.value, defaultValue, function (ev, newValue) {
if (ev && ev.timeStamp === prevChangeTimestamp.current) {
// For historical reasons, SearchBox handles both onInput and onChange (we can't modify this
// outside a major version due to potential to break partners' tests and possibly apps).
// Only call props.onChange for one of the events.
return;
}
prevChangeTimestamp.current = ev === null || ev === void 0 ? void 0 : ev.timeStamp;
onChange === null || onChange === void 0 ? void 0 : onChange(ev, newValue);
onChanged === null || onChanged === void 0 ? void 0 : onChanged(newValue);
}), uncastValue = _g[0], setValue = _g[1];
var value = String(uncastValue);
var rootElementRef = React.useRef(null);
var inputElementRef = React.useRef(null);
var mergedRootRef = (0, react_hooks_1.useMergedRefs)(rootElementRef, forwardedRef);
var id = (0, react_hooks_1.useId)(COMPONENT_NAME, props.id);
var customOnClearClick = clearButtonProps.onClick;
var classNames = getClassNames(styles, {
theme: theme,
className: className,
underlined: underlined,
hasFocus: hasFocus,
disabled: disabled,
hasInput: value.length > 0,
disableAnimation: disableAnimation,
showIcon: showIcon,
});
var nativeProps = (0, Utilities_1.getNativeProps)(props, Utilities_1.inputProperties, [
'className',
'placeholder',
'onFocus',
'onBlur',
'value',
'role',
]);
var onClear = React.useCallback(function (ev) {
var _a;
customOnClear === null || customOnClear === void 0 ? void 0 : customOnClear(ev);
if (!ev.defaultPrevented) {
setValue('');
(_a = inputElementRef.current) === null || _a === void 0 ? void 0 : _a.focus();
ev.stopPropagation();
ev.preventDefault();
}
}, [customOnClear, setValue]);
var onClearClick = React.useCallback(function (ev) {
customOnClearClick === null || customOnClearClick === void 0 ? void 0 : customOnClearClick(ev);
if (!ev.defaultPrevented) {
onClear(ev);
}
}, [customOnClearClick, onClear]);
var onFocusCapture = function (ev) {
var _a;
setHasFocus(true);
(_a = props.onFocus) === null || _a === void 0 ? void 0 : _a.call(props, ev);
};
var onClickFocus = function () {
if (inputElementRef.current) {
inputElementRef.current.focus();
inputElementRef.current.selectionStart = inputElementRef.current.selectionEnd = 0;
}
};
var onBlur = React.useCallback(function (ev) {
setHasFocus(false);
customOnBlur === null || customOnBlur === void 0 ? void 0 : customOnBlur(ev);
}, [customOnBlur]);
var onInputChange = function (ev) {
setValue(ev.target.value, ev);
};
var onKeyDown = function (ev) {
// eslint-disable-next-line @typescript-eslint/no-deprecated
switch (ev.which) {
case Utilities_1.KeyCodes.escape:
customOnEscape === null || customOnEscape === void 0 ? void 0 : customOnEscape(ev);
// Only call onClear if the search box has a value to clear. Otherwise, allow the Esc key
// to propagate from the empty search box to a parent element such as a dialog, etc.
if (value && !ev.defaultPrevented) {
onClear(ev);
}
break;
case Utilities_1.KeyCodes.enter:
if (customOnSearch) {
customOnSearch(value);
ev.preventDefault();
ev.stopPropagation();
}
break;
default:
// REVIEW: Why aren't we calling customOnKeyDown for Escape or Enter?
customOnKeyDown === null || customOnKeyDown === void 0 ? void 0 : customOnKeyDown(ev);
// REVIEW: Why are we calling stopPropagation if customOnKeyDown called preventDefault?
// customOnKeyDown should call stopPropagation if it needs it.
if (ev.defaultPrevented) {
ev.stopPropagation();
}
break;
}
};
useDebugWarning(props);
useComponentRef(props.componentRef, inputElementRef, hasFocus);
return (React.createElement("div", { role: role, ref: mergedRootRef, className: classNames.root, onFocusCapture: onFocusCapture },
React.createElement("div", { className: classNames.iconContainer, onClick: onClickFocus, "aria-hidden": true },
React.createElement(Icon_1.Icon, tslib_1.__assign({ iconName: "Search" }, iconProps, { className: classNames.icon }))),
React.createElement("input", tslib_1.__assign({}, nativeProps, { id: id, className: classNames.field, placeholder: placeholder, onChange: onInputChange, onInput: onInputChange, onBlur: onBlur, onKeyDown: onKeyDown, value: value, disabled: disabled, role: "searchbox", "aria-label": ariaLabel, ref: inputElementRef })),
value.length > 0 && (React.createElement("div", { className: classNames.clearButton },
React.createElement(Button_1.IconButton, tslib_1.__assign({ onBlur: onBlur, styles: iconButtonStyles, iconProps: iconButtonProps }, clearButtonProps, { onClick: onClearClick }))))));
});
exports.SearchBoxBase.displayName = COMPONENT_NAME;
function useDebugWarning(props) {
}
});
//# sourceMappingURL=SearchBox.base.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
import * as React from 'react';
import type { ISearchBoxProps } from './SearchBox.types';
export declare const SearchBox: React.FunctionComponent<ISearchBoxProps>;
@@ -0,0 +1,7 @@
define(["require", "exports", "../../Utilities", "./SearchBox.base", "./SearchBox.styles"], function (require, exports, Utilities_1, SearchBox_base_1, SearchBox_styles_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SearchBox = void 0;
exports.SearchBox = (0, Utilities_1.styled)(SearchBox_base_1.SearchBoxBase, SearchBox_styles_1.getStyles, undefined, { scope: 'SearchBox' });
});
//# sourceMappingURL=SearchBox.js.map
@@ -0,0 +1 @@
{"version":3,"file":"SearchBox.js","sourceRoot":"../src/","sources":["components/SearchBox/SearchBox.tsx"],"names":[],"mappings":";;;;IAMa,QAAA,SAAS,GAA6C,IAAA,kBAAM,EAIvE,8BAAa,EAAE,4BAAS,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC","sourcesContent":["import * as React from 'react';\nimport { styled } from '../../Utilities';\nimport { SearchBoxBase } from './SearchBox.base';\nimport { getStyles } from './SearchBox.styles';\nimport type { ISearchBoxProps, ISearchBoxStyleProps, ISearchBoxStyles } from './SearchBox.types';\n\nexport const SearchBox: React.FunctionComponent<ISearchBoxProps> = styled<\n ISearchBoxProps,\n ISearchBoxStyleProps,\n ISearchBoxStyles\n>(SearchBoxBase, getStyles, undefined, { scope: 'SearchBox' });\n"]}
@@ -0,0 +1,2 @@
import type { ISearchBoxStyleProps, ISearchBoxStyles } from './SearchBox.types';
export declare function getStyles(props: ISearchBoxStyleProps): ISearchBoxStyles;
@@ -0,0 +1,227 @@
define(["require", "exports", "../../Styling", "../../Utilities"], function (require, exports, Styling_1, Utilities_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStyles = getStyles;
var GlobalClassNames = {
root: 'ms-SearchBox',
iconContainer: 'ms-SearchBox-iconContainer',
icon: 'ms-SearchBox-icon',
clearButton: 'ms-SearchBox-clearButton',
field: 'ms-SearchBox-field',
};
function getStyles(props) {
var _a, _b, _c, _d, _e;
var theme = props.theme, underlined = props.underlined, disabled = props.disabled, hasFocus = props.hasFocus, className = props.className, hasInput = props.hasInput, disableAnimation = props.disableAnimation, showIcon = props.showIcon;
var palette = theme.palette, fonts = theme.fonts, semanticColors = theme.semanticColors, effects = theme.effects;
var classNames = (0, Styling_1.getGlobalClassNames)(GlobalClassNames, theme);
// placeholder style constants
var placeholderStyles = {
color: semanticColors.inputPlaceholderText,
opacity: 1,
};
var inputIconAlt = palette.neutralSecondary;
var inputIconAltHovered = palette.neutralPrimary;
var inputBorderDisabled = palette.neutralLighter;
var inputBackgroundHovered = palette.neutralLighter;
var inputBackgroundDisabled = palette.neutralLighter;
return {
root: [
classNames.root,
fonts.medium,
Styling_1.normalize,
{
color: semanticColors.inputText,
backgroundColor: semanticColors.inputBackground,
display: 'flex',
flexDirection: 'row',
flexWrap: 'nowrap',
alignItems: 'stretch',
// The 1px top and bottom padding ensure the input field does not overlap the border
padding: '1px 0 1px 4px',
borderRadius: effects.roundedCorner2,
border: "1px solid ".concat(semanticColors.inputBorder),
height: 32,
selectors: (_a = {},
_a[Styling_1.HighContrastSelector] = {
borderColor: 'WindowText',
},
_a[':hover'] = {
borderColor: semanticColors.inputBorderHovered,
selectors: (_b = {},
_b[Styling_1.HighContrastSelector] = {
borderColor: 'Highlight',
},
_b),
},
_a[":hover .".concat(classNames.iconContainer)] = {
color: semanticColors.inputIconHovered,
},
_a),
},
!hasFocus &&
hasInput && {
selectors: (_c = {},
_c[":hover .".concat(classNames.iconContainer)] = {
width: 4,
},
_c[":hover .".concat(classNames.icon)] = {
opacity: 0,
pointerEvents: 'none',
},
_c),
},
hasFocus && [
'is-active',
{
position: 'relative',
},
(0, Styling_1.getInputFocusStyle)(semanticColors.inputFocusBorderAlt, underlined ? 0 : effects.roundedCorner2, underlined ? 'borderBottom' : 'border'),
],
showIcon && [
{
selectors: (_d = {},
_d[":hover .".concat(classNames.iconContainer)] = {
width: 32,
},
_d[":hover .".concat(classNames.icon)] = {
opacity: 1,
},
_d),
},
],
disabled && [
'is-disabled',
{
borderColor: inputBorderDisabled,
backgroundColor: inputBackgroundDisabled,
pointerEvents: 'none',
cursor: 'default',
selectors: (_e = {},
_e[Styling_1.HighContrastSelector] = {
borderColor: 'GrayText',
},
_e),
},
],
underlined && [
'is-underlined',
{
borderWidth: '0 0 1px 0',
borderRadius: 0,
// Underlined SearchBox has a larger padding left to vertically align with the waffle in product
padding: '1px 0 1px 8px',
},
],
underlined &&
disabled && {
backgroundColor: 'transparent',
},
hasInput && 'can-clear',
className,
],
iconContainer: [
classNames.iconContainer,
{
display: 'flex',
flexDirection: 'column',
justifyContent: 'center',
flexShrink: 0,
fontSize: 16,
width: 32,
textAlign: 'center',
color: semanticColors.inputIcon,
cursor: 'text',
},
hasFocus && {
width: 4,
},
disabled && {
color: semanticColors.inputIconDisabled,
},
!disableAnimation && {
transition: "width ".concat(Styling_1.AnimationVariables.durationValue1),
},
showIcon &&
hasFocus && {
width: 32,
},
],
icon: [
classNames.icon,
{
opacity: 1,
},
hasFocus && {
opacity: 0,
pointerEvents: 'none',
},
!disableAnimation && {
transition: "opacity ".concat(Styling_1.AnimationVariables.durationValue1, " 0s"),
},
showIcon &&
hasFocus && {
opacity: 1,
},
],
clearButton: [
classNames.clearButton,
{
display: 'flex',
flexDirection: 'row',
alignItems: 'stretch',
cursor: 'pointer',
flexBasis: '32px',
flexShrink: 0,
padding: 0,
margin: '-1px 0px',
selectors: {
'&:hover .ms-Button': {
backgroundColor: inputBackgroundHovered,
},
'&:hover .ms-Button-icon': {
color: inputIconAltHovered,
},
'.ms-Button': {
borderRadius: (0, Utilities_1.getRTL)(theme) ? '1px 0 0 1px' : '0 1px 1px 0',
},
'.ms-Button-icon': {
color: inputIconAlt,
},
},
},
],
field: [
classNames.field,
Styling_1.normalize,
(0, Styling_1.getPlaceholderStyles)(placeholderStyles),
{
backgroundColor: 'transparent',
border: 'none',
outline: 'none',
fontWeight: 'inherit',
fontFamily: 'inherit',
fontSize: 'inherit',
color: semanticColors.inputText,
flex: '1 1 0px',
// The default implicit value of 'auto' prevents the input from shrinking. Setting min-width to
// 0px allows the input element to shrink to fit the container.
minWidth: '0px',
overflow: 'hidden',
textOverflow: 'ellipsis',
// This padding forces the text placement to round up.
paddingBottom: 0.5,
// This removes the IE specific clear button in the input since we implemented our own
selectors: {
'::-ms-clear': {
display: 'none',
},
},
},
disabled && {
color: semanticColors.disabledText,
},
],
};
}
});
//# sourceMappingURL=SearchBox.styles.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,134 @@
import * as React from 'react';
import type { IButtonProps } from '../../Button';
import type { ITheme, IStyle } from '../../Styling';
import type { IStyleFunctionOrObject } from '../../Utilities';
import type { IIconProps } from '../../Icon';
/**
* {@docCategory SearchBox}
*/
export interface ISearchBox {
/**
* Sets focus inside the search input box.
*/
focus(): void;
/**
* Blurs focus from the search input box.
*/
blur(): void;
/**
* Returns whether or not the SearchBox has focus
*/
hasFocus(): boolean;
}
/**
* {@docCategory SearchBox}
*/
export interface ISearchBoxProps extends React.InputHTMLAttributes<HTMLInputElement>, React.RefAttributes<HTMLDivElement> {
/**
* Optional callback to access the ISearchBox interface. Use this instead of ref for accessing
* the public methods and properties of the component.
*/
componentRef?: React.Ref<ISearchBox>;
/**
* Placeholder for the search box.
*/
placeholder?: string;
/**
* @deprecated Use `placeholder` instead.
*/
labelText?: string;
/**
* Callback function for when the typed input for the SearchBox has changed.
*/
onChange?: (event?: React.ChangeEvent<HTMLInputElement>, newValue?: string) => void;
/**
* Callback executed when the user presses enter in the search box.
*/
onSearch?: (newValue: any) => void;
/**
* Callback executed when the user clears the search box by either clicking 'X' or hitting escape.
*/
onClear?: (ev?: any) => void;
/**
* Callback executed when the user presses escape in the search box.
*/
onEscape?: (ev?: any) => void;
/**
* @deprecated Use `onChange` instead. Deprecated at v0.52.2.
*/
onChanged?: (newValue: any) => void;
/**
* The value of the text in the SearchBox.
*/
value?: string;
/**
* The default value of the text in the SearchBox, in the case of an uncontrolled component.
*/
defaultValue?: string;
/**
* CSS class to apply to the SearchBox.
*/
className?: string;
/**
* The aria label of the SearchBox for the benefit of screen readers.
*/
ariaLabel?: string;
/**
* The props for the clear button.
*/
clearButtonProps?: IButtonProps;
/**
* The props for the icon.
*/
iconProps?: Pick<IIconProps, Exclude<keyof IIconProps, 'className'>>;
/**
* Whether or not the SearchBox is underlined.
* @defaultvalue false
*/
underlined?: boolean;
/**
* The role assigned to the root DIV element of the SearchBox, useful for defining a landmark role, such as "search".
*/
role?: string;
/**
* Theme (provided through customization).
*/
theme?: ITheme;
/**
* Call to provide customized styling that will layer on top of the variant rules.
*/
styles?: IStyleFunctionOrObject<ISearchBoxStyleProps, ISearchBoxStyles>;
/**
* Whether or not to animate the SearchBox icon on focus.
* @defaultvalue false
*/
disableAnimation?: boolean;
/**
* Whether or not to make the icon be always visible (it hides by default when the search box is focused).
* @defaultvalue false
*/
showIcon?: boolean;
}
/**
* {@docCategory SearchBox}
*/
export interface ISearchBoxStyleProps {
theme: ITheme;
className?: string;
disabled?: boolean;
hasFocus?: boolean;
underlined?: boolean;
hasInput?: boolean;
disableAnimation?: boolean;
showIcon?: boolean;
}
/**
* {@docCategory SearchBox}
*/
export interface ISearchBoxStyles {
root?: IStyle;
iconContainer?: IStyle;
icon?: IStyle;
field?: IStyle;
clearButton?: IStyle;
}
@@ -0,0 +1,5 @@
define(["require", "exports"], function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
});
//# sourceMappingURL=SearchBox.types.js.map
@@ -0,0 +1 @@
{"version":3,"file":"SearchBox.types.js","sourceRoot":"../src/","sources":["components/SearchBox/SearchBox.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport type { IButtonProps } from '../../Button';\nimport type { ITheme, IStyle } from '../../Styling';\nimport type { IStyleFunctionOrObject } from '../../Utilities';\nimport type { IIconProps } from '../../Icon';\n\n/**\n * {@docCategory SearchBox}\n */\nexport interface ISearchBox {\n /**\n * Sets focus inside the search input box.\n */\n focus(): void;\n\n /**\n * Blurs focus from the search input box.\n */\n blur(): void;\n\n /**\n * Returns whether or not the SearchBox has focus\n */\n hasFocus(): boolean;\n}\n\n/**\n * {@docCategory SearchBox}\n */\nexport interface ISearchBoxProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n React.RefAttributes<HTMLDivElement> {\n /**\n * Optional callback to access the ISearchBox interface. Use this instead of ref for accessing\n * the public methods and properties of the component.\n */\n componentRef?: React.Ref<ISearchBox>;\n\n /**\n * Placeholder for the search box.\n */\n placeholder?: string;\n\n /**\n * @deprecated Use `placeholder` instead.\n */\n labelText?: string;\n\n /**\n * Callback function for when the typed input for the SearchBox has changed.\n */\n onChange?: (event?: React.ChangeEvent<HTMLInputElement>, newValue?: string) => void;\n\n /**\n * Callback executed when the user presses enter in the search box.\n */\n onSearch?: (newValue: any) => void;\n\n /**\n * Callback executed when the user clears the search box by either clicking 'X' or hitting escape.\n */\n onClear?: (ev?: any) => void;\n\n /**\n * Callback executed when the user presses escape in the search box.\n */\n onEscape?: (ev?: any) => void;\n\n /**\n * @deprecated Use `onChange` instead. Deprecated at v0.52.2.\n */\n onChanged?: (newValue: any) => void;\n\n /**\n * The value of the text in the SearchBox.\n */\n value?: string;\n\n /**\n * The default value of the text in the SearchBox, in the case of an uncontrolled component.\n */\n defaultValue?: string;\n\n /**\n * CSS class to apply to the SearchBox.\n */\n className?: string;\n\n /**\n * The aria label of the SearchBox for the benefit of screen readers.\n */\n ariaLabel?: string;\n\n /**\n * The props for the clear button.\n */\n clearButtonProps?: IButtonProps;\n\n /**\n * The props for the icon.\n */\n iconProps?: Pick<IIconProps, Exclude<keyof IIconProps, 'className'>>;\n\n /**\n * Whether or not the SearchBox is underlined.\n * @defaultvalue false\n */\n underlined?: boolean;\n\n /**\n * The role assigned to the root DIV element of the SearchBox, useful for defining a landmark role, such as \"search\".\n */\n role?: string;\n\n /**\n * Theme (provided through customization).\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ISearchBoxStyleProps, ISearchBoxStyles>;\n\n /**\n * Whether or not to animate the SearchBox icon on focus.\n * @defaultvalue false\n */\n disableAnimation?: boolean;\n\n /**\n * Whether or not to make the icon be always visible (it hides by default when the search box is focused).\n * @defaultvalue false\n */\n showIcon?: boolean;\n}\n\n/**\n * {@docCategory SearchBox}\n */\nexport interface ISearchBoxStyleProps {\n theme: ITheme;\n className?: string;\n disabled?: boolean;\n hasFocus?: boolean;\n underlined?: boolean;\n hasInput?: boolean;\n disableAnimation?: boolean;\n showIcon?: boolean;\n}\n\n/**\n * {@docCategory SearchBox}\n */\nexport interface ISearchBoxStyles {\n root?: IStyle;\n iconContainer?: IStyle;\n icon?: IStyle;\n field?: IStyle;\n clearButton?: IStyle;\n}\n"]}
+3
View File
@@ -0,0 +1,3 @@
export * from './SearchBox';
export * from './SearchBox.base';
export * from './SearchBox.types';
+8
View File
@@ -0,0 +1,8 @@
define(["require", "exports", "tslib", "./SearchBox", "./SearchBox.base", "./SearchBox.types"], function (require, exports, tslib_1, SearchBox_1, SearchBox_base_1, SearchBox_types_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
tslib_1.__exportStar(SearchBox_1, exports);
tslib_1.__exportStar(SearchBox_base_1, exports);
tslib_1.__exportStar(SearchBox_types_1, exports);
});
//# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"../src/","sources":["components/SearchBox/index.ts"],"names":[],"mappings":";;;IAAA,2CAA4B;IAC5B,gDAAiC;IACjC,iDAAkC","sourcesContent":["export * from './SearchBox';\nexport * from './SearchBox.base';\nexport * from './SearchBox.types';\n"]}