@shoplflow/base 0.41.11 → 0.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -6999,6 +6999,242 @@ var Slider = ({
6999
6999
  ] }) });
7000
7000
  };
7001
7001
  exports.Slider = Slider;
7002
+ var SearchBarContext = React3.createContext({});
7003
+ var useSearchBarContext = () => React3.useContext(SearchBarContext);
7004
+ var SearchBarProvider = ({
7005
+ children,
7006
+ useFlexibleWidth,
7007
+ isSelected
7008
+ }) => {
7009
+ return /* @__PURE__ */ jsxRuntime.jsx(SearchBarContext.Provider, { value: { useFlexibleWidth, isSelected }, children });
7010
+ };
7011
+ var DEFAULT_DEBOUNCE_TIME = 300;
7012
+ var SearchBarInput = (_a) => {
7013
+ var _b = _a, {
7014
+ value,
7015
+ defaultValue,
7016
+ onChange,
7017
+ onClear,
7018
+ placeholder,
7019
+ flexiblePlaceholder,
7020
+ disabled,
7021
+ type = "default",
7022
+ onSearch,
7023
+ debounceTime = type === "default" ? 0 : DEFAULT_DEBOUNCE_TIME,
7024
+ icon = /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { iconSource: ShoplAssets.SearchIcon, color: "neutral350", sizeVar: "S" })
7025
+ } = _b, rest = __objRest(_b, [
7026
+ "value",
7027
+ "defaultValue",
7028
+ "onChange",
7029
+ "onClear",
7030
+ "placeholder",
7031
+ "flexiblePlaceholder",
7032
+ "disabled",
7033
+ "type",
7034
+ "onSearch",
7035
+ "debounceTime",
7036
+ "icon"
7037
+ ]);
7038
+ const { useFlexibleWidth, isSelected } = useSearchBarContext();
7039
+ const [text, setText] = React3.useState("");
7040
+ const convertToString = React3.useCallback((value2) => {
7041
+ if (typeof value2 !== "number") {
7042
+ return typeof value2 === "string" ? value2 : value2.join("");
7043
+ }
7044
+ return String(value2);
7045
+ }, []);
7046
+ const debouncedOnChange = React3.useRef(
7047
+ utils.debounce(
7048
+ (event) => {
7049
+ const newValue = event.target.value;
7050
+ setText(newValue);
7051
+ if (type === "real-time") {
7052
+ onChange && onChange(event);
7053
+ onSearch && onSearch(newValue);
7054
+ }
7055
+ },
7056
+ debounceTime
7057
+ )
7058
+ ).current;
7059
+ const handleOnChange = (event) => {
7060
+ debouncedOnChange(event);
7061
+ };
7062
+ const handleOnClear = React3.useCallback(() => {
7063
+ setText("");
7064
+ onClear == null ? void 0 : onClear();
7065
+ }, [onClear]);
7066
+ const handleKeyDown = React3.useCallback(
7067
+ (event) => {
7068
+ if (type === "default" && event.key === "Enter") {
7069
+ onSearch == null ? void 0 : onSearch(text);
7070
+ }
7071
+ },
7072
+ [onSearch, text, type]
7073
+ );
7074
+ const handleIconClick = React3.useCallback(() => {
7075
+ if (type === "default") {
7076
+ onSearch == null ? void 0 : onSearch(text);
7077
+ }
7078
+ }, [onSearch, text, type]);
7079
+ let _placeholder = placeholder;
7080
+ if (useFlexibleWidth && !isSelected) {
7081
+ _placeholder = flexiblePlaceholder;
7082
+ }
7083
+ const getInitialValue = React3.useCallback(() => {
7084
+ if (value !== void 0) {
7085
+ return convertToString(value);
7086
+ }
7087
+ if (defaultValue !== void 0) {
7088
+ return convertToString(defaultValue);
7089
+ }
7090
+ return "";
7091
+ }, [convertToString, defaultValue, value]);
7092
+ React3.useEffect(() => {
7093
+ const initialValue = getInitialValue();
7094
+ setText(initialValue);
7095
+ }, [getInitialValue]);
7096
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7097
+ type === "default" && /* @__PURE__ */ jsxRuntime.jsx(exports.IconButton, { styleVar: "GHOST", sizeVar: "S", onClick: handleIconClick, "aria-label": "\uAC80\uC0C9", children: /* @__PURE__ */ jsxRuntime.jsx(exports.Icon, { iconSource: ShoplAssets.SearchIcon, color: text ? "neutral700" : "neutral350", sizeVar: "S" }) }),
7098
+ type === "real-time" && icon,
7099
+ /* @__PURE__ */ jsxRuntime.jsx(
7100
+ exports.Input,
7101
+ __spreadValues({
7102
+ placeholder: _placeholder,
7103
+ onChange: handleOnChange,
7104
+ onKeyDown: handleKeyDown,
7105
+ value: text,
7106
+ onClear: handleOnClear,
7107
+ width: "100%",
7108
+ disabled,
7109
+ "aria-label": "\uAC80\uC0C9\uC5B4 \uC785\uB825"
7110
+ }, rest)
7111
+ )
7112
+ ] });
7113
+ };
7114
+ var StyledStackContainer2 = styled6__default.default(exports.Stack.Horizontal)`
7115
+ border: 1px solid ${exports.colorTokens.neutral100};
7116
+ border-radius: ${exports.borderRadiusTokens.borderRadius06};
7117
+ background-color: ${exports.colorTokens.neutral100};
7118
+ justify-content: center;
7119
+ align-items: center;
7120
+ padding: 4px 8px;
7121
+ transition: all 400ms ease-in-out;
7122
+
7123
+ label {
7124
+ flex-grow: 1;
7125
+ border: none;
7126
+ border-radius: 0;
7127
+ height: 32px;
7128
+ background-color: ${exports.colorTokens.neutral100};
7129
+ gap: 0px;
7130
+
7131
+ div {
7132
+ padding: 0;
7133
+ }
7134
+
7135
+ input {
7136
+ padding: 0;
7137
+ }
7138
+ }
7139
+
7140
+ button {
7141
+ background-color: ${exports.colorTokens.neutral100};
7142
+ }
7143
+ `;
7144
+ var CategoriesButton = styled6__default.default(exports.Dropdown.Button)`
7145
+ border-radius: 4px;
7146
+ height: 24px;
7147
+
7148
+ &:hover {
7149
+ background-color: ${exports.colorTokens.neutral200};
7150
+ }
7151
+ `;
7152
+ var DEFAULT_DROPDOWN_WIDTH = "136px";
7153
+ var SearchBarCategory = ({
7154
+ dropdownWidth = DEFAULT_DROPDOWN_WIDTH,
7155
+ dropdownItems = [],
7156
+ selectedDropdownItem,
7157
+ onDropdownSelect
7158
+ }) => {
7159
+ const { isSelected, useFlexibleWidth } = useSearchBarContext();
7160
+ if (!isSelected && useFlexibleWidth) {
7161
+ return null;
7162
+ }
7163
+ return /* @__PURE__ */ jsxRuntime.jsx(
7164
+ exports.Dropdown,
7165
+ {
7166
+ width: dropdownWidth,
7167
+ trigger: /* @__PURE__ */ jsxRuntime.jsx(
7168
+ CategoriesButton,
7169
+ {
7170
+ value: selectedDropdownItem && /* @__PURE__ */ jsxRuntime.jsx(exports.Text, { lineClamp: 1, typography: "body2_700", children: selectedDropdownItem.label }),
7171
+ "aria-label": "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
7172
+ }
7173
+ ),
7174
+ popper: /* @__PURE__ */ jsxRuntime.jsx(exports.Dropdown.Content, { type: "FILL", children: dropdownItems.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
7175
+ exports.Menu,
7176
+ {
7177
+ className: "search-bar",
7178
+ onClick: () => onDropdownSelect == null ? void 0 : onDropdownSelect(item),
7179
+ isSelected: (selectedDropdownItem == null ? void 0 : selectedDropdownItem.value) === item.value,
7180
+ "aria-selected": (selectedDropdownItem == null ? void 0 : selectedDropdownItem.value) === item.value,
7181
+ children: /* @__PURE__ */ jsxRuntime.jsx(exports.Text, { typography: "body1_500", children: item.label })
7182
+ },
7183
+ item.value
7184
+ )) })
7185
+ }
7186
+ );
7187
+ };
7188
+ var DEFAULT_WIDTH = "100%";
7189
+ var DEFAULT_HEIGHT = "32px";
7190
+ var SearchBar = (_a) => {
7191
+ var _b = _a, {
7192
+ width = DEFAULT_WIDTH,
7193
+ height = DEFAULT_HEIGHT,
7194
+ useFlexibleWidth = false,
7195
+ children
7196
+ } = _b, rest = __objRest(_b, [
7197
+ "width",
7198
+ "height",
7199
+ "useFlexibleWidth",
7200
+ "children"
7201
+ ]);
7202
+ const [isSelected, setIsSelected] = utils.useOutsideClick({
7203
+ selector: ".search-bar",
7204
+ onClose: () => setIsSelected(false)
7205
+ });
7206
+ const handleContainerClick = React3.useCallback(() => {
7207
+ setIsSelected(true);
7208
+ }, [setIsSelected]);
7209
+ const containerWidth = React3.useMemo(() => {
7210
+ if (!useFlexibleWidth) {
7211
+ return width;
7212
+ }
7213
+ return isSelected ? width : "140px";
7214
+ }, [useFlexibleWidth, isSelected, width]);
7215
+ return /* @__PURE__ */ jsxRuntime.jsx(SearchBarProvider, { useFlexibleWidth, isSelected, children: /* @__PURE__ */ jsxRuntime.jsx(
7216
+ StyledStackContainer2,
7217
+ __spreadProps(__spreadValues({
7218
+ "data-shoplflow": "SearchBar",
7219
+ width: containerWidth,
7220
+ height,
7221
+ className: "search-bar",
7222
+ spacing: "spacing04",
7223
+ onClick: handleContainerClick,
7224
+ role: "search",
7225
+ "aria-label": "\uAC80\uC0C9"
7226
+ }, rest), {
7227
+ children
7228
+ })
7229
+ ) });
7230
+ };
7231
+ SearchBar.Category = SearchBarCategory;
7232
+ SearchBar.Input = SearchBarInput;
7233
+
7234
+ // src/components/SearchBar/index.ts
7235
+ exports.SearchBar = SearchBar;
7236
+ exports.SearchBar.Category = SearchBarCategory;
7237
+ exports.SearchBar.Input = SearchBarInput;
7002
7238
  var SpaceMarginWrapper = styled6__default.default(framerMotion.motion.div)`
7003
7239
  position: relative;
7004
7240
  display: flex;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
- import React__default, { ElementType, ComponentPropsWithoutRef, ReactNode, ReactElement, ImgHTMLAttributes, ForwardRefExoticComponent, PropsWithoutRef, RefAttributes, CSSProperties, HTMLAttributes, ComponentPropsWithRef, ButtonHTMLAttributes, InputHTMLAttributes, MouseEvent, Ref } from 'react';
3
+ import React__default, { ElementType, ComponentPropsWithoutRef, ReactNode, ReactElement, ImgHTMLAttributes, ForwardRefExoticComponent, PropsWithoutRef, RefAttributes, CSSProperties, HTMLAttributes, ComponentPropsWithRef, ButtonHTMLAttributes, InputHTMLAttributes, MouseEvent, Ref, ChangeEvent } from 'react';
4
4
  import { $Values } from '@shoplflow/utils';
5
5
  import { IconSource } from '@shoplflow/shopl-assets';
6
6
  import { IconSource as IconSource$1 } from '@shoplflow/hada-assets';
@@ -1620,4 +1620,77 @@ declare const SLIDER_Z_INDEX: {
1620
1620
 
1621
1621
  declare const Slider: React__default.FC<SliderProps>;
1622
1622
 
1623
- export { AnnualDatepicker, AnnualDatepickerProps, AsProp, Avatar, AvatarOptionProps, AvatarProps, AvatarSizeVariantType, AvatarSizeVariants, BackDropOptionProps, BackDropProps, BorderRadiusTokens, BoxShadowTokens, Button, ButtonComponent, ButtonOptionProps, ButtonProps, ButtonSizeVariantType, ButtonSizeVariants, ButtonStyleVariantType, ButtonStyleVariants, CHECKBOX_SYMBOL_KEY, Callout, CalloutOptionProps, CalloutProps, CalloutType, CalloutTypes, Checkbox, CheckboxOptionProps, CheckboxProps, CheckboxStyleVariantType, CheckboxStyleVariants, ChipButton, ChipButtonOptionProps, ChipButtonProps, ChipButtonSizeVariantType, ChipButtonSizeVariants, ChipButtonStyleVariantType, ChipButtonStyleVariants, ChipToggle, ChipToggleOptionProps, ChipToggleProps, ChipToggleSizeVariantType, ChipToggleSizeVariants, ChipToggleStyleVariantType, ChipToggleStyleVariants, ColorTokens, DangerouslySetInnerHTML, DayCalendarType, DayDatepicker, DayDatepickerHeaderCustomProps, DayDatepickerOptionProps, DayDatepickerProps, DayDatepickerSizeVariantType, DayDatepickerSizeVariants, DomainType, Dropdown, DropdownButton, DropdownButtonContext, DropdownButtonContextType, DropdownButtonOptionProps, DropdownButtonProps, DropdownButtonSizeVariantType, DropdownButtonSizeVariants, DropdownButtonStyleVariantType, DropdownButtonStyleVariants, DropdownContentProps, DropdownOptionProps, DropdownOptionVariantType, DropdownOptionVariants, DropdownProps, DropdownSizeVariantType, DropdownTriggerButtonProps, FontWeightTokens, Icon, IconButton, IconButtonComponent, IconButtonOptionProps, IconButtonProps, IconButtonSizeVariantType, IconButtonSizeVariants, IconButtonStyleVariantType, IconButtonStyleVariants, IconOptionProps, IconProps, IconSizeVariants, IconSizeVariantsType, Input, InputButton, InputButtonOptionProps, InputButtonProps, InputOptionProps, InputProps, InputSizeVariantType, InputSizeVariants, List, ListContent2ColumnsProps, ListOptionProps, ListProps, ListText2RowsProps, MODAL_FOOTER_KEY, MODAL_HEADER_KEY, Menu, MenuOptionProps, MenuProps, MenuSizeVariantType, MenuSizeVariants, MinusBoxOptionProps, MinusBoxProps, MinusButton, Modal, ModalBodyOptionProps, ModalBodyProps, ModalBottomProps, ModalContainerOptionProps, ModalContainerProps, ModalContext, ModalFooterOptionProps, ModalFooterProps, ModalFooterType, ModalHandlerContext, ModalHeaderOptionProps, ModalHeaderProps, ModalHeaderType, ModalPortal as ModalProvider, ModalSize, ModalSizeType, ModalStateType, ModalTopProps, MonthClickDateInfo, MonthDatepicker, MonthDatepickerProps, MonthDatepickerStyleType, MotionStack, MotionStackComponentType, MotionStackContainer, MotionStackContainerComponentType, NumberCombobox, NumberComboboxErrorType, NumberComboboxInputType, NumberComboboxOptionProps, NumberComboboxProps, NumberComboboxSizeVariantType, NumberComboboxSizeVariants, Pagination, PaginationOptionProps, PaginationProps, PaginationSizeSelectorProps, PolymorphicComponentProps, PolymorphicRef, Popper, PopperOptionProps, PopperPortal, PopperPortalProps, PopperProps, PopperTrigger, PopperTriggerProps, RADIO_SYMBOL_KEY, Radio, RadioOptionProps, RadioProps, RemoveModalProps, SLIDER_Z_INDEX, ScrollArea, ScrollAreaOptionProps, ScrollAreaProps, ScrollbarRefType, SelectInputButton, SelectInputButtonOptionProps, SelectInputButtonProps, ShoplflowProvider, ShoplflowProviderProps, Skeleton, SkeletonProps, Slider, SliderBounds, SliderProps, SpacingTokens, SplitButton, SplitButtonContext, SplitButtonContextType, SplitButtonOptionProps, SplitButtonProps, SplitButtonSizeVariantType, SplitButtonSizeVariants, SplitButtonStyleVariantType, SplitButtonStyleVariants, Stack, StackComponentType, StackContainer, StackContainerComponentType, StackContainerGenericProps, StackContainerOptionProps, StackContainerProps, StackGenericProps, StackOptionProps, StackProps, StyledIcon, StyledStack, StyledStackContainer, Switch, SwitchOptionProps, SwitchProps, TREE_SYMBOL_KEY, TabOptionProps, TabProps, TabSizeVariantType, TabSizeVariants, TabStyleVariantType, TabStyleVariants, TabStyledProps, TabTextStyledProps, Tabs, TabsContext, TabsContextType, TabsOptionProps, TabsProps, Tag, TagOptionProps, TagProps, TagSizeVariantType, TagSizeVariants, TagStyleVariantType, TagStyleVariants, Text, Text2Rows, TextArea, TextAreaOptionProps, TextAreaProps, TextOptionProps, TextProps, ToggleButton, ToggleButtonInnerRadioOptionProps, ToggleButtonInnerRadioProps, ToggleButtonOptionProps, ToggleButtonProps, ToggleButtonSizeVariantType, ToggleButtonSizeVariants, Tooltip, TooltipContentProps, TooltipOptionProps, TooltipProps, Tree, TreeItem, TreeItemOptionProps, TreeItemProps, TreeOptionProps, TreeProps, TypographyTokens, WeekClickDateInfo, WeekDatepicker, WeekDatepickerProps, WeekDatepickerStyleType, YearSelectProps, borderRadiusTokens, boxShadowTokens, colorTokens, fontWeightTokens, getDomain, spacingTokens, typographyTokens, useDomain, useDropdownButtonContext, useHandleModal, useModalValue, useSplitButtonContext, useTabs };
1623
+ /** 드롭다운 아이템 타입 */
1624
+ declare type DropdownItem = {
1625
+ /** 표시되는 라벨 */
1626
+ label: string;
1627
+ /** 실제 값 */
1628
+ value: string;
1629
+ };
1630
+ /** 검색바 타입 */
1631
+ declare type SearchType = 'default' | 'real-time';
1632
+ /** 검색바 기본 props */
1633
+ interface SearchBarBaseProps {
1634
+ /** 검색바 너비 */
1635
+ width?: string;
1636
+ /** 검색바 높이 */
1637
+ height?: string;
1638
+ /** 유연한 너비 사용 여부 */
1639
+ useFlexibleWidth?: boolean;
1640
+ /** 자식 요소 */
1641
+ children?: React.ReactNode;
1642
+ }
1643
+ /** 검색바 카테고리 props */
1644
+ interface SearchBarCategoryProps {
1645
+ /** 카테고리 드롭다운 너비 */
1646
+ dropdownWidth?: string;
1647
+ /** 카테고리 드롭다운 아이템 목록 */
1648
+ dropdownItems?: DropdownItem[];
1649
+ /** 선택된 카테고리 아이템 */
1650
+ selectedDropdownItem?: DropdownItem;
1651
+ /** 카테고리 선택 핸들러 */
1652
+ onDropdownSelect?: (item: DropdownItem) => void;
1653
+ /** 선택 상태 */
1654
+ isSelected: boolean;
1655
+ }
1656
+ /** 검색바 입력 props */
1657
+ interface SearchBarInputProps {
1658
+ /** 검색바 값 */
1659
+ value?: string | number | readonly string[];
1660
+ /** 검색바 기본값 */
1661
+ defaultValue?: string | number | readonly string[];
1662
+ /** 검색어 변경 핸들러 */
1663
+ onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
1664
+ /** 검색어 초기화 핸들러 */
1665
+ onClear?: () => void;
1666
+ /** 플레이스홀더 텍스트 */
1667
+ placeholder?: string;
1668
+ /** 너비 변경 시 플레이스홀더 텍스트 */
1669
+ flexiblePlaceholder?: string;
1670
+ /** 비활성화 여부 */
1671
+ disabled?: boolean;
1672
+ /** 검색 아이콘 */
1673
+ icon?: React.ReactNode;
1674
+ /** 검색 타입 */
1675
+ type?: SearchType;
1676
+ /** 검색 핸들러 */
1677
+ onSearch?: (value: string) => void;
1678
+ /** 디바운스 시간 (ms) */
1679
+ debounceTime?: number;
1680
+ }
1681
+ /** 검색바 props */
1682
+ declare type SearchBarProps = SearchBarBaseProps;
1683
+ /** 검색바 컴포넌트 타입 */
1684
+ interface SearchBarComponent extends React.FC<SearchBarProps> {
1685
+ Category: React.FC<SearchBarCategoryProps>;
1686
+ Input: React.FC<SearchBarInputProps>;
1687
+ }
1688
+ /** 검색바 컴포넌트 타입 (memo) */
1689
+ interface MemoizedSearchBarComponent extends React.MemoExoticComponent<SearchBarComponent> {
1690
+ Category: React.FC<SearchBarCategoryProps>;
1691
+ Input: React.FC<SearchBarInputProps>;
1692
+ }
1693
+
1694
+ declare const SearchBar: MemoizedSearchBarComponent;
1695
+
1696
+ export { AnnualDatepicker, AnnualDatepickerProps, AsProp, Avatar, AvatarOptionProps, AvatarProps, AvatarSizeVariantType, AvatarSizeVariants, BackDropOptionProps, BackDropProps, BorderRadiusTokens, BoxShadowTokens, Button, ButtonComponent, ButtonOptionProps, ButtonProps, ButtonSizeVariantType, ButtonSizeVariants, ButtonStyleVariantType, ButtonStyleVariants, CHECKBOX_SYMBOL_KEY, Callout, CalloutOptionProps, CalloutProps, CalloutType, CalloutTypes, Checkbox, CheckboxOptionProps, CheckboxProps, CheckboxStyleVariantType, CheckboxStyleVariants, ChipButton, ChipButtonOptionProps, ChipButtonProps, ChipButtonSizeVariantType, ChipButtonSizeVariants, ChipButtonStyleVariantType, ChipButtonStyleVariants, ChipToggle, ChipToggleOptionProps, ChipToggleProps, ChipToggleSizeVariantType, ChipToggleSizeVariants, ChipToggleStyleVariantType, ChipToggleStyleVariants, ColorTokens, DangerouslySetInnerHTML, DayCalendarType, DayDatepicker, DayDatepickerHeaderCustomProps, DayDatepickerOptionProps, DayDatepickerProps, DayDatepickerSizeVariantType, DayDatepickerSizeVariants, DomainType, Dropdown, DropdownButton, DropdownButtonContext, DropdownButtonContextType, DropdownButtonOptionProps, DropdownButtonProps, DropdownButtonSizeVariantType, DropdownButtonSizeVariants, DropdownButtonStyleVariantType, DropdownButtonStyleVariants, DropdownContentProps, DropdownItem, DropdownOptionProps, DropdownOptionVariantType, DropdownOptionVariants, DropdownProps, DropdownSizeVariantType, DropdownTriggerButtonProps, FontWeightTokens, Icon, IconButton, IconButtonComponent, IconButtonOptionProps, IconButtonProps, IconButtonSizeVariantType, IconButtonSizeVariants, IconButtonStyleVariantType, IconButtonStyleVariants, IconOptionProps, IconProps, IconSizeVariants, IconSizeVariantsType, Input, InputButton, InputButtonOptionProps, InputButtonProps, InputOptionProps, InputProps, InputSizeVariantType, InputSizeVariants, List, ListContent2ColumnsProps, ListOptionProps, ListProps, ListText2RowsProps, MODAL_FOOTER_KEY, MODAL_HEADER_KEY, MemoizedSearchBarComponent, Menu, MenuOptionProps, MenuProps, MenuSizeVariantType, MenuSizeVariants, MinusBoxOptionProps, MinusBoxProps, MinusButton, Modal, ModalBodyOptionProps, ModalBodyProps, ModalBottomProps, ModalContainerOptionProps, ModalContainerProps, ModalContext, ModalFooterOptionProps, ModalFooterProps, ModalFooterType, ModalHandlerContext, ModalHeaderOptionProps, ModalHeaderProps, ModalHeaderType, ModalPortal as ModalProvider, ModalSize, ModalSizeType, ModalStateType, ModalTopProps, MonthClickDateInfo, MonthDatepicker, MonthDatepickerProps, MonthDatepickerStyleType, MotionStack, MotionStackComponentType, MotionStackContainer, MotionStackContainerComponentType, NumberCombobox, NumberComboboxErrorType, NumberComboboxInputType, NumberComboboxOptionProps, NumberComboboxProps, NumberComboboxSizeVariantType, NumberComboboxSizeVariants, Pagination, PaginationOptionProps, PaginationProps, PaginationSizeSelectorProps, PolymorphicComponentProps, PolymorphicRef, Popper, PopperOptionProps, PopperPortal, PopperPortalProps, PopperProps, PopperTrigger, PopperTriggerProps, RADIO_SYMBOL_KEY, Radio, RadioOptionProps, RadioProps, RemoveModalProps, SLIDER_Z_INDEX, ScrollArea, ScrollAreaOptionProps, ScrollAreaProps, ScrollbarRefType, SearchBar, SearchBarBaseProps, SearchBarCategoryProps, SearchBarComponent, SearchBarInputProps, SearchBarProps, SearchType, SelectInputButton, SelectInputButtonOptionProps, SelectInputButtonProps, ShoplflowProvider, ShoplflowProviderProps, Skeleton, SkeletonProps, Slider, SliderBounds, SliderProps, SpacingTokens, SplitButton, SplitButtonContext, SplitButtonContextType, SplitButtonOptionProps, SplitButtonProps, SplitButtonSizeVariantType, SplitButtonSizeVariants, SplitButtonStyleVariantType, SplitButtonStyleVariants, Stack, StackComponentType, StackContainer, StackContainerComponentType, StackContainerGenericProps, StackContainerOptionProps, StackContainerProps, StackGenericProps, StackOptionProps, StackProps, StyledIcon, StyledStack, StyledStackContainer, Switch, SwitchOptionProps, SwitchProps, TREE_SYMBOL_KEY, TabOptionProps, TabProps, TabSizeVariantType, TabSizeVariants, TabStyleVariantType, TabStyleVariants, TabStyledProps, TabTextStyledProps, Tabs, TabsContext, TabsContextType, TabsOptionProps, TabsProps, Tag, TagOptionProps, TagProps, TagSizeVariantType, TagSizeVariants, TagStyleVariantType, TagStyleVariants, Text, Text2Rows, TextArea, TextAreaOptionProps, TextAreaProps, TextOptionProps, TextProps, ToggleButton, ToggleButtonInnerRadioOptionProps, ToggleButtonInnerRadioProps, ToggleButtonOptionProps, ToggleButtonProps, ToggleButtonSizeVariantType, ToggleButtonSizeVariants, Tooltip, TooltipContentProps, TooltipOptionProps, TooltipProps, Tree, TreeItem, TreeItemOptionProps, TreeItemProps, TreeOptionProps, TreeProps, TypographyTokens, WeekClickDateInfo, WeekDatepicker, WeekDatepickerProps, WeekDatepickerStyleType, YearSelectProps, borderRadiusTokens, boxShadowTokens, colorTokens, fontWeightTokens, getDomain, spacingTokens, typographyTokens, useDomain, useDropdownButtonContext, useHandleModal, useModalValue, useSplitButtonContext, useTabs };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
- import React__default, { ElementType, ComponentPropsWithoutRef, ReactNode, ReactElement, ImgHTMLAttributes, ForwardRefExoticComponent, PropsWithoutRef, RefAttributes, CSSProperties, HTMLAttributes, ComponentPropsWithRef, ButtonHTMLAttributes, InputHTMLAttributes, MouseEvent, Ref } from 'react';
3
+ import React__default, { ElementType, ComponentPropsWithoutRef, ReactNode, ReactElement, ImgHTMLAttributes, ForwardRefExoticComponent, PropsWithoutRef, RefAttributes, CSSProperties, HTMLAttributes, ComponentPropsWithRef, ButtonHTMLAttributes, InputHTMLAttributes, MouseEvent, Ref, ChangeEvent } from 'react';
4
4
  import { $Values } from '@shoplflow/utils';
5
5
  import { IconSource } from '@shoplflow/shopl-assets';
6
6
  import { IconSource as IconSource$1 } from '@shoplflow/hada-assets';
@@ -1620,4 +1620,77 @@ declare const SLIDER_Z_INDEX: {
1620
1620
 
1621
1621
  declare const Slider: React__default.FC<SliderProps>;
1622
1622
 
1623
- export { AnnualDatepicker, AnnualDatepickerProps, AsProp, Avatar, AvatarOptionProps, AvatarProps, AvatarSizeVariantType, AvatarSizeVariants, BackDropOptionProps, BackDropProps, BorderRadiusTokens, BoxShadowTokens, Button, ButtonComponent, ButtonOptionProps, ButtonProps, ButtonSizeVariantType, ButtonSizeVariants, ButtonStyleVariantType, ButtonStyleVariants, CHECKBOX_SYMBOL_KEY, Callout, CalloutOptionProps, CalloutProps, CalloutType, CalloutTypes, Checkbox, CheckboxOptionProps, CheckboxProps, CheckboxStyleVariantType, CheckboxStyleVariants, ChipButton, ChipButtonOptionProps, ChipButtonProps, ChipButtonSizeVariantType, ChipButtonSizeVariants, ChipButtonStyleVariantType, ChipButtonStyleVariants, ChipToggle, ChipToggleOptionProps, ChipToggleProps, ChipToggleSizeVariantType, ChipToggleSizeVariants, ChipToggleStyleVariantType, ChipToggleStyleVariants, ColorTokens, DangerouslySetInnerHTML, DayCalendarType, DayDatepicker, DayDatepickerHeaderCustomProps, DayDatepickerOptionProps, DayDatepickerProps, DayDatepickerSizeVariantType, DayDatepickerSizeVariants, DomainType, Dropdown, DropdownButton, DropdownButtonContext, DropdownButtonContextType, DropdownButtonOptionProps, DropdownButtonProps, DropdownButtonSizeVariantType, DropdownButtonSizeVariants, DropdownButtonStyleVariantType, DropdownButtonStyleVariants, DropdownContentProps, DropdownOptionProps, DropdownOptionVariantType, DropdownOptionVariants, DropdownProps, DropdownSizeVariantType, DropdownTriggerButtonProps, FontWeightTokens, Icon, IconButton, IconButtonComponent, IconButtonOptionProps, IconButtonProps, IconButtonSizeVariantType, IconButtonSizeVariants, IconButtonStyleVariantType, IconButtonStyleVariants, IconOptionProps, IconProps, IconSizeVariants, IconSizeVariantsType, Input, InputButton, InputButtonOptionProps, InputButtonProps, InputOptionProps, InputProps, InputSizeVariantType, InputSizeVariants, List, ListContent2ColumnsProps, ListOptionProps, ListProps, ListText2RowsProps, MODAL_FOOTER_KEY, MODAL_HEADER_KEY, Menu, MenuOptionProps, MenuProps, MenuSizeVariantType, MenuSizeVariants, MinusBoxOptionProps, MinusBoxProps, MinusButton, Modal, ModalBodyOptionProps, ModalBodyProps, ModalBottomProps, ModalContainerOptionProps, ModalContainerProps, ModalContext, ModalFooterOptionProps, ModalFooterProps, ModalFooterType, ModalHandlerContext, ModalHeaderOptionProps, ModalHeaderProps, ModalHeaderType, ModalPortal as ModalProvider, ModalSize, ModalSizeType, ModalStateType, ModalTopProps, MonthClickDateInfo, MonthDatepicker, MonthDatepickerProps, MonthDatepickerStyleType, MotionStack, MotionStackComponentType, MotionStackContainer, MotionStackContainerComponentType, NumberCombobox, NumberComboboxErrorType, NumberComboboxInputType, NumberComboboxOptionProps, NumberComboboxProps, NumberComboboxSizeVariantType, NumberComboboxSizeVariants, Pagination, PaginationOptionProps, PaginationProps, PaginationSizeSelectorProps, PolymorphicComponentProps, PolymorphicRef, Popper, PopperOptionProps, PopperPortal, PopperPortalProps, PopperProps, PopperTrigger, PopperTriggerProps, RADIO_SYMBOL_KEY, Radio, RadioOptionProps, RadioProps, RemoveModalProps, SLIDER_Z_INDEX, ScrollArea, ScrollAreaOptionProps, ScrollAreaProps, ScrollbarRefType, SelectInputButton, SelectInputButtonOptionProps, SelectInputButtonProps, ShoplflowProvider, ShoplflowProviderProps, Skeleton, SkeletonProps, Slider, SliderBounds, SliderProps, SpacingTokens, SplitButton, SplitButtonContext, SplitButtonContextType, SplitButtonOptionProps, SplitButtonProps, SplitButtonSizeVariantType, SplitButtonSizeVariants, SplitButtonStyleVariantType, SplitButtonStyleVariants, Stack, StackComponentType, StackContainer, StackContainerComponentType, StackContainerGenericProps, StackContainerOptionProps, StackContainerProps, StackGenericProps, StackOptionProps, StackProps, StyledIcon, StyledStack, StyledStackContainer, Switch, SwitchOptionProps, SwitchProps, TREE_SYMBOL_KEY, TabOptionProps, TabProps, TabSizeVariantType, TabSizeVariants, TabStyleVariantType, TabStyleVariants, TabStyledProps, TabTextStyledProps, Tabs, TabsContext, TabsContextType, TabsOptionProps, TabsProps, Tag, TagOptionProps, TagProps, TagSizeVariantType, TagSizeVariants, TagStyleVariantType, TagStyleVariants, Text, Text2Rows, TextArea, TextAreaOptionProps, TextAreaProps, TextOptionProps, TextProps, ToggleButton, ToggleButtonInnerRadioOptionProps, ToggleButtonInnerRadioProps, ToggleButtonOptionProps, ToggleButtonProps, ToggleButtonSizeVariantType, ToggleButtonSizeVariants, Tooltip, TooltipContentProps, TooltipOptionProps, TooltipProps, Tree, TreeItem, TreeItemOptionProps, TreeItemProps, TreeOptionProps, TreeProps, TypographyTokens, WeekClickDateInfo, WeekDatepicker, WeekDatepickerProps, WeekDatepickerStyleType, YearSelectProps, borderRadiusTokens, boxShadowTokens, colorTokens, fontWeightTokens, getDomain, spacingTokens, typographyTokens, useDomain, useDropdownButtonContext, useHandleModal, useModalValue, useSplitButtonContext, useTabs };
1623
+ /** 드롭다운 아이템 타입 */
1624
+ declare type DropdownItem = {
1625
+ /** 표시되는 라벨 */
1626
+ label: string;
1627
+ /** 실제 값 */
1628
+ value: string;
1629
+ };
1630
+ /** 검색바 타입 */
1631
+ declare type SearchType = 'default' | 'real-time';
1632
+ /** 검색바 기본 props */
1633
+ interface SearchBarBaseProps {
1634
+ /** 검색바 너비 */
1635
+ width?: string;
1636
+ /** 검색바 높이 */
1637
+ height?: string;
1638
+ /** 유연한 너비 사용 여부 */
1639
+ useFlexibleWidth?: boolean;
1640
+ /** 자식 요소 */
1641
+ children?: React.ReactNode;
1642
+ }
1643
+ /** 검색바 카테고리 props */
1644
+ interface SearchBarCategoryProps {
1645
+ /** 카테고리 드롭다운 너비 */
1646
+ dropdownWidth?: string;
1647
+ /** 카테고리 드롭다운 아이템 목록 */
1648
+ dropdownItems?: DropdownItem[];
1649
+ /** 선택된 카테고리 아이템 */
1650
+ selectedDropdownItem?: DropdownItem;
1651
+ /** 카테고리 선택 핸들러 */
1652
+ onDropdownSelect?: (item: DropdownItem) => void;
1653
+ /** 선택 상태 */
1654
+ isSelected: boolean;
1655
+ }
1656
+ /** 검색바 입력 props */
1657
+ interface SearchBarInputProps {
1658
+ /** 검색바 값 */
1659
+ value?: string | number | readonly string[];
1660
+ /** 검색바 기본값 */
1661
+ defaultValue?: string | number | readonly string[];
1662
+ /** 검색어 변경 핸들러 */
1663
+ onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
1664
+ /** 검색어 초기화 핸들러 */
1665
+ onClear?: () => void;
1666
+ /** 플레이스홀더 텍스트 */
1667
+ placeholder?: string;
1668
+ /** 너비 변경 시 플레이스홀더 텍스트 */
1669
+ flexiblePlaceholder?: string;
1670
+ /** 비활성화 여부 */
1671
+ disabled?: boolean;
1672
+ /** 검색 아이콘 */
1673
+ icon?: React.ReactNode;
1674
+ /** 검색 타입 */
1675
+ type?: SearchType;
1676
+ /** 검색 핸들러 */
1677
+ onSearch?: (value: string) => void;
1678
+ /** 디바운스 시간 (ms) */
1679
+ debounceTime?: number;
1680
+ }
1681
+ /** 검색바 props */
1682
+ declare type SearchBarProps = SearchBarBaseProps;
1683
+ /** 검색바 컴포넌트 타입 */
1684
+ interface SearchBarComponent extends React.FC<SearchBarProps> {
1685
+ Category: React.FC<SearchBarCategoryProps>;
1686
+ Input: React.FC<SearchBarInputProps>;
1687
+ }
1688
+ /** 검색바 컴포넌트 타입 (memo) */
1689
+ interface MemoizedSearchBarComponent extends React.MemoExoticComponent<SearchBarComponent> {
1690
+ Category: React.FC<SearchBarCategoryProps>;
1691
+ Input: React.FC<SearchBarInputProps>;
1692
+ }
1693
+
1694
+ declare const SearchBar: MemoizedSearchBarComponent;
1695
+
1696
+ export { AnnualDatepicker, AnnualDatepickerProps, AsProp, Avatar, AvatarOptionProps, AvatarProps, AvatarSizeVariantType, AvatarSizeVariants, BackDropOptionProps, BackDropProps, BorderRadiusTokens, BoxShadowTokens, Button, ButtonComponent, ButtonOptionProps, ButtonProps, ButtonSizeVariantType, ButtonSizeVariants, ButtonStyleVariantType, ButtonStyleVariants, CHECKBOX_SYMBOL_KEY, Callout, CalloutOptionProps, CalloutProps, CalloutType, CalloutTypes, Checkbox, CheckboxOptionProps, CheckboxProps, CheckboxStyleVariantType, CheckboxStyleVariants, ChipButton, ChipButtonOptionProps, ChipButtonProps, ChipButtonSizeVariantType, ChipButtonSizeVariants, ChipButtonStyleVariantType, ChipButtonStyleVariants, ChipToggle, ChipToggleOptionProps, ChipToggleProps, ChipToggleSizeVariantType, ChipToggleSizeVariants, ChipToggleStyleVariantType, ChipToggleStyleVariants, ColorTokens, DangerouslySetInnerHTML, DayCalendarType, DayDatepicker, DayDatepickerHeaderCustomProps, DayDatepickerOptionProps, DayDatepickerProps, DayDatepickerSizeVariantType, DayDatepickerSizeVariants, DomainType, Dropdown, DropdownButton, DropdownButtonContext, DropdownButtonContextType, DropdownButtonOptionProps, DropdownButtonProps, DropdownButtonSizeVariantType, DropdownButtonSizeVariants, DropdownButtonStyleVariantType, DropdownButtonStyleVariants, DropdownContentProps, DropdownItem, DropdownOptionProps, DropdownOptionVariantType, DropdownOptionVariants, DropdownProps, DropdownSizeVariantType, DropdownTriggerButtonProps, FontWeightTokens, Icon, IconButton, IconButtonComponent, IconButtonOptionProps, IconButtonProps, IconButtonSizeVariantType, IconButtonSizeVariants, IconButtonStyleVariantType, IconButtonStyleVariants, IconOptionProps, IconProps, IconSizeVariants, IconSizeVariantsType, Input, InputButton, InputButtonOptionProps, InputButtonProps, InputOptionProps, InputProps, InputSizeVariantType, InputSizeVariants, List, ListContent2ColumnsProps, ListOptionProps, ListProps, ListText2RowsProps, MODAL_FOOTER_KEY, MODAL_HEADER_KEY, MemoizedSearchBarComponent, Menu, MenuOptionProps, MenuProps, MenuSizeVariantType, MenuSizeVariants, MinusBoxOptionProps, MinusBoxProps, MinusButton, Modal, ModalBodyOptionProps, ModalBodyProps, ModalBottomProps, ModalContainerOptionProps, ModalContainerProps, ModalContext, ModalFooterOptionProps, ModalFooterProps, ModalFooterType, ModalHandlerContext, ModalHeaderOptionProps, ModalHeaderProps, ModalHeaderType, ModalPortal as ModalProvider, ModalSize, ModalSizeType, ModalStateType, ModalTopProps, MonthClickDateInfo, MonthDatepicker, MonthDatepickerProps, MonthDatepickerStyleType, MotionStack, MotionStackComponentType, MotionStackContainer, MotionStackContainerComponentType, NumberCombobox, NumberComboboxErrorType, NumberComboboxInputType, NumberComboboxOptionProps, NumberComboboxProps, NumberComboboxSizeVariantType, NumberComboboxSizeVariants, Pagination, PaginationOptionProps, PaginationProps, PaginationSizeSelectorProps, PolymorphicComponentProps, PolymorphicRef, Popper, PopperOptionProps, PopperPortal, PopperPortalProps, PopperProps, PopperTrigger, PopperTriggerProps, RADIO_SYMBOL_KEY, Radio, RadioOptionProps, RadioProps, RemoveModalProps, SLIDER_Z_INDEX, ScrollArea, ScrollAreaOptionProps, ScrollAreaProps, ScrollbarRefType, SearchBar, SearchBarBaseProps, SearchBarCategoryProps, SearchBarComponent, SearchBarInputProps, SearchBarProps, SearchType, SelectInputButton, SelectInputButtonOptionProps, SelectInputButtonProps, ShoplflowProvider, ShoplflowProviderProps, Skeleton, SkeletonProps, Slider, SliderBounds, SliderProps, SpacingTokens, SplitButton, SplitButtonContext, SplitButtonContextType, SplitButtonOptionProps, SplitButtonProps, SplitButtonSizeVariantType, SplitButtonSizeVariants, SplitButtonStyleVariantType, SplitButtonStyleVariants, Stack, StackComponentType, StackContainer, StackContainerComponentType, StackContainerGenericProps, StackContainerOptionProps, StackContainerProps, StackGenericProps, StackOptionProps, StackProps, StyledIcon, StyledStack, StyledStackContainer, Switch, SwitchOptionProps, SwitchProps, TREE_SYMBOL_KEY, TabOptionProps, TabProps, TabSizeVariantType, TabSizeVariants, TabStyleVariantType, TabStyleVariants, TabStyledProps, TabTextStyledProps, Tabs, TabsContext, TabsContextType, TabsOptionProps, TabsProps, Tag, TagOptionProps, TagProps, TagSizeVariantType, TagSizeVariants, TagStyleVariantType, TagStyleVariants, Text, Text2Rows, TextArea, TextAreaOptionProps, TextAreaProps, TextOptionProps, TextProps, ToggleButton, ToggleButtonInnerRadioOptionProps, ToggleButtonInnerRadioProps, ToggleButtonOptionProps, ToggleButtonProps, ToggleButtonSizeVariantType, ToggleButtonSizeVariants, Tooltip, TooltipContentProps, TooltipOptionProps, TooltipProps, Tree, TreeItem, TreeItemOptionProps, TreeItemProps, TreeOptionProps, TreeProps, TypographyTokens, WeekClickDateInfo, WeekDatepicker, WeekDatepickerProps, WeekDatepickerStyleType, YearSelectProps, borderRadiusTokens, boxShadowTokens, colorTokens, fontWeightTokens, getDomain, spacingTokens, typographyTokens, useDomain, useDropdownButtonContext, useHandleModal, useModalValue, useSplitButtonContext, useTabs };
package/dist/index.js CHANGED
@@ -5,13 +5,13 @@ import { motion, AnimatePresence, LayoutGroup, LazyMotion, domAnimation } from '
5
5
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
6
6
  import { createPortal } from 'react-dom';
7
7
  import { css, keyframes } from '@emotion/react';
8
- import { noop, useMergeRefs, useOutsideClick, OutSideClick, useSelect, useParentElementClick, isNullOrUndefined } from '@shoplflow/utils';
8
+ import { noop, useMergeRefs, useOutsideClick, OutSideClick, debounce, useSelect, useParentElementClick, isNullOrUndefined } from '@shoplflow/utils';
9
9
  import Scrollbars from 'react-custom-scrollbars-2';
10
10
  import { FloatingPortal, autoUpdate, offset, autoPlacement } from '@floating-ui/react';
11
11
  export { arrow, flip, hide, inline, offset, shift, size } from '@floating-ui/react';
12
12
  import { useFloating } from '@floating-ui/react-dom';
13
13
  import * as ShoplAssets from '@shoplflow/shopl-assets';
14
- import { DownArrowSolidXsmallIcon, RightArrowSolidXsmallIcon, FirstPageIcon, LeftArrowIcon, RightArrowIcon, EndPageIcon } from '@shoplflow/shopl-assets';
14
+ import { DownArrowSolidXsmallIcon, RightArrowSolidXsmallIcon, FirstPageIcon, LeftArrowIcon, RightArrowIcon, EndPageIcon, SearchIcon } from '@shoplflow/shopl-assets';
15
15
  import { shift, flip, offset as offset$1 } from '@floating-ui/core';
16
16
  import * as HadaAssets from '@shoplflow/hada-assets';
17
17
  import DatePicker2 from 'react-datepicker';
@@ -6972,6 +6972,242 @@ var Slider = ({
6972
6972
  ] }) });
6973
6973
  };
6974
6974
  var Slider_default = Slider;
6975
+ var SearchBarContext = createContext({});
6976
+ var useSearchBarContext = () => useContext(SearchBarContext);
6977
+ var SearchBarProvider = ({
6978
+ children,
6979
+ useFlexibleWidth,
6980
+ isSelected
6981
+ }) => {
6982
+ return /* @__PURE__ */ jsx(SearchBarContext.Provider, { value: { useFlexibleWidth, isSelected }, children });
6983
+ };
6984
+ var DEFAULT_DEBOUNCE_TIME = 300;
6985
+ var SearchBarInput = (_a) => {
6986
+ var _b = _a, {
6987
+ value,
6988
+ defaultValue,
6989
+ onChange,
6990
+ onClear,
6991
+ placeholder,
6992
+ flexiblePlaceholder,
6993
+ disabled,
6994
+ type = "default",
6995
+ onSearch,
6996
+ debounceTime = type === "default" ? 0 : DEFAULT_DEBOUNCE_TIME,
6997
+ icon = /* @__PURE__ */ jsx(Icon_default, { iconSource: SearchIcon, color: "neutral350", sizeVar: "S" })
6998
+ } = _b, rest = __objRest(_b, [
6999
+ "value",
7000
+ "defaultValue",
7001
+ "onChange",
7002
+ "onClear",
7003
+ "placeholder",
7004
+ "flexiblePlaceholder",
7005
+ "disabled",
7006
+ "type",
7007
+ "onSearch",
7008
+ "debounceTime",
7009
+ "icon"
7010
+ ]);
7011
+ const { useFlexibleWidth, isSelected } = useSearchBarContext();
7012
+ const [text, setText] = useState("");
7013
+ const convertToString = useCallback((value2) => {
7014
+ if (typeof value2 !== "number") {
7015
+ return typeof value2 === "string" ? value2 : value2.join("");
7016
+ }
7017
+ return String(value2);
7018
+ }, []);
7019
+ const debouncedOnChange = useRef(
7020
+ debounce(
7021
+ (event) => {
7022
+ const newValue = event.target.value;
7023
+ setText(newValue);
7024
+ if (type === "real-time") {
7025
+ onChange && onChange(event);
7026
+ onSearch && onSearch(newValue);
7027
+ }
7028
+ },
7029
+ debounceTime
7030
+ )
7031
+ ).current;
7032
+ const handleOnChange = (event) => {
7033
+ debouncedOnChange(event);
7034
+ };
7035
+ const handleOnClear = useCallback(() => {
7036
+ setText("");
7037
+ onClear == null ? void 0 : onClear();
7038
+ }, [onClear]);
7039
+ const handleKeyDown = useCallback(
7040
+ (event) => {
7041
+ if (type === "default" && event.key === "Enter") {
7042
+ onSearch == null ? void 0 : onSearch(text);
7043
+ }
7044
+ },
7045
+ [onSearch, text, type]
7046
+ );
7047
+ const handleIconClick = useCallback(() => {
7048
+ if (type === "default") {
7049
+ onSearch == null ? void 0 : onSearch(text);
7050
+ }
7051
+ }, [onSearch, text, type]);
7052
+ let _placeholder = placeholder;
7053
+ if (useFlexibleWidth && !isSelected) {
7054
+ _placeholder = flexiblePlaceholder;
7055
+ }
7056
+ const getInitialValue = useCallback(() => {
7057
+ if (value !== void 0) {
7058
+ return convertToString(value);
7059
+ }
7060
+ if (defaultValue !== void 0) {
7061
+ return convertToString(defaultValue);
7062
+ }
7063
+ return "";
7064
+ }, [convertToString, defaultValue, value]);
7065
+ useEffect(() => {
7066
+ const initialValue = getInitialValue();
7067
+ setText(initialValue);
7068
+ }, [getInitialValue]);
7069
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
7070
+ type === "default" && /* @__PURE__ */ jsx(IconButton_default, { styleVar: "GHOST", sizeVar: "S", onClick: handleIconClick, "aria-label": "\uAC80\uC0C9", children: /* @__PURE__ */ jsx(Icon_default, { iconSource: SearchIcon, color: text ? "neutral700" : "neutral350", sizeVar: "S" }) }),
7071
+ type === "real-time" && icon,
7072
+ /* @__PURE__ */ jsx(
7073
+ Input_default,
7074
+ __spreadValues({
7075
+ placeholder: _placeholder,
7076
+ onChange: handleOnChange,
7077
+ onKeyDown: handleKeyDown,
7078
+ value: text,
7079
+ onClear: handleOnClear,
7080
+ width: "100%",
7081
+ disabled,
7082
+ "aria-label": "\uAC80\uC0C9\uC5B4 \uC785\uB825"
7083
+ }, rest)
7084
+ )
7085
+ ] });
7086
+ };
7087
+ var StyledStackContainer2 = styled6(Stack_default.Horizontal)`
7088
+ border: 1px solid ${colorTokens.neutral100};
7089
+ border-radius: ${borderRadiusTokens.borderRadius06};
7090
+ background-color: ${colorTokens.neutral100};
7091
+ justify-content: center;
7092
+ align-items: center;
7093
+ padding: 4px 8px;
7094
+ transition: all 400ms ease-in-out;
7095
+
7096
+ label {
7097
+ flex-grow: 1;
7098
+ border: none;
7099
+ border-radius: 0;
7100
+ height: 32px;
7101
+ background-color: ${colorTokens.neutral100};
7102
+ gap: 0px;
7103
+
7104
+ div {
7105
+ padding: 0;
7106
+ }
7107
+
7108
+ input {
7109
+ padding: 0;
7110
+ }
7111
+ }
7112
+
7113
+ button {
7114
+ background-color: ${colorTokens.neutral100};
7115
+ }
7116
+ `;
7117
+ var CategoriesButton = styled6(Dropdown_default.Button)`
7118
+ border-radius: 4px;
7119
+ height: 24px;
7120
+
7121
+ &:hover {
7122
+ background-color: ${colorTokens.neutral200};
7123
+ }
7124
+ `;
7125
+ var DEFAULT_DROPDOWN_WIDTH = "136px";
7126
+ var SearchBarCategory = ({
7127
+ dropdownWidth = DEFAULT_DROPDOWN_WIDTH,
7128
+ dropdownItems = [],
7129
+ selectedDropdownItem,
7130
+ onDropdownSelect
7131
+ }) => {
7132
+ const { isSelected, useFlexibleWidth } = useSearchBarContext();
7133
+ if (!isSelected && useFlexibleWidth) {
7134
+ return null;
7135
+ }
7136
+ return /* @__PURE__ */ jsx(
7137
+ Dropdown_default,
7138
+ {
7139
+ width: dropdownWidth,
7140
+ trigger: /* @__PURE__ */ jsx(
7141
+ CategoriesButton,
7142
+ {
7143
+ value: selectedDropdownItem && /* @__PURE__ */ jsx(Text_default, { lineClamp: 1, typography: "body2_700", children: selectedDropdownItem.label }),
7144
+ "aria-label": "\uCE74\uD14C\uACE0\uB9AC \uC120\uD0DD"
7145
+ }
7146
+ ),
7147
+ popper: /* @__PURE__ */ jsx(Dropdown_default.Content, { type: "FILL", children: dropdownItems.map((item) => /* @__PURE__ */ jsx(
7148
+ Menu_default,
7149
+ {
7150
+ className: "search-bar",
7151
+ onClick: () => onDropdownSelect == null ? void 0 : onDropdownSelect(item),
7152
+ isSelected: (selectedDropdownItem == null ? void 0 : selectedDropdownItem.value) === item.value,
7153
+ "aria-selected": (selectedDropdownItem == null ? void 0 : selectedDropdownItem.value) === item.value,
7154
+ children: /* @__PURE__ */ jsx(Text_default, { typography: "body1_500", children: item.label })
7155
+ },
7156
+ item.value
7157
+ )) })
7158
+ }
7159
+ );
7160
+ };
7161
+ var DEFAULT_WIDTH = "100%";
7162
+ var DEFAULT_HEIGHT = "32px";
7163
+ var SearchBar = (_a) => {
7164
+ var _b = _a, {
7165
+ width = DEFAULT_WIDTH,
7166
+ height = DEFAULT_HEIGHT,
7167
+ useFlexibleWidth = false,
7168
+ children
7169
+ } = _b, rest = __objRest(_b, [
7170
+ "width",
7171
+ "height",
7172
+ "useFlexibleWidth",
7173
+ "children"
7174
+ ]);
7175
+ const [isSelected, setIsSelected] = useOutsideClick({
7176
+ selector: ".search-bar",
7177
+ onClose: () => setIsSelected(false)
7178
+ });
7179
+ const handleContainerClick = useCallback(() => {
7180
+ setIsSelected(true);
7181
+ }, [setIsSelected]);
7182
+ const containerWidth = useMemo(() => {
7183
+ if (!useFlexibleWidth) {
7184
+ return width;
7185
+ }
7186
+ return isSelected ? width : "140px";
7187
+ }, [useFlexibleWidth, isSelected, width]);
7188
+ return /* @__PURE__ */ jsx(SearchBarProvider, { useFlexibleWidth, isSelected, children: /* @__PURE__ */ jsx(
7189
+ StyledStackContainer2,
7190
+ __spreadProps(__spreadValues({
7191
+ "data-shoplflow": "SearchBar",
7192
+ width: containerWidth,
7193
+ height,
7194
+ className: "search-bar",
7195
+ spacing: "spacing04",
7196
+ onClick: handleContainerClick,
7197
+ role: "search",
7198
+ "aria-label": "\uAC80\uC0C9"
7199
+ }, rest), {
7200
+ children
7201
+ })
7202
+ ) });
7203
+ };
7204
+ SearchBar.Category = SearchBarCategory;
7205
+ SearchBar.Input = SearchBarInput;
7206
+
7207
+ // src/components/SearchBar/index.ts
7208
+ var SearchBar2 = SearchBar;
7209
+ SearchBar2.Category = SearchBarCategory;
7210
+ SearchBar2.Input = SearchBarInput;
6975
7211
  var SpaceMarginWrapper = styled6(motion.div)`
6976
7212
  position: relative;
6977
7213
  display: flex;
@@ -7026,4 +7262,4 @@ classnames/index.js:
7026
7262
  *)
7027
7263
  */
7028
7264
 
7029
- export { AnnualDatepicker_default as AnnualDatepicker, Avatar_default as Avatar, AvatarSizeVariants, Button_default as Button, ButtonSizeVariants, ButtonStyleVariants, CHECKBOX_SYMBOL_KEY, Callout_default as Callout, CalloutTypes, Checkbox_default as Checkbox, CheckboxStyleVariants, ChipButton_default as ChipButton, ChipButtonSizeVariants, ChipButtonStyleVariants, ChipToggle_default as ChipToggle, ChipToggleSizeVariants, ChipToggleStyleVariants, DayDatepicker_default as DayDatepicker, DayDatepickerSizeVariants, Dropdown_default as Dropdown, DropdownButton_default as DropdownButton, DropdownButtonContext, DropdownButtonSizeVariants, DropdownButtonStyleVariants, DropdownOptionVariants, Icon_default as Icon, IconButton_default as IconButton, IconButtonSizeVariants, IconButtonStyleVariants, IconSizeVariants, Input_default as Input, InputButton_default as InputButton, InputSizeVariants, List_default as List, MODAL_FOOTER_KEY, MODAL_HEADER_KEY, Menu_default as Menu, MenuSizeVariants, MinusButton_default as MinusButton, Modal, ModalContext, ModalHandlerContext, ModalPortal_default as ModalProvider, ModalSize, MonthDatepicker_default as MonthDatepicker, MotionStack, MotionStackContainer, NumberCombobox_default as NumberCombobox, NumberComboboxSizeVariants, Pagination_default as Pagination, Popper_default as Popper, PopperPortal, PopperTrigger, RADIO_SYMBOL_KEY, Radio_default as Radio, SLIDER_Z_INDEX, ScrollArea_default as ScrollArea, SelectInputButton_default as SelectInputButton, ShoplflowProvider_default as ShoplflowProvider, Skeleton_default as Skeleton, Slider_default as Slider, SplitButton_default as SplitButton, SplitButtonContext, SplitButtonSizeVariants, SplitButtonStyleVariants, Stack_default as Stack, StackContainer_default as StackContainer, StyledIcon, StyledStack, StyledStackContainer, Switch_default as Switch, TREE_SYMBOL_KEY, TabSizeVariants, TabStyleVariants, Tabs_default as Tabs, TabsContext, Tag_default as Tag, TagSizeVariants, TagStyleVariants, Text_default as Text, Text2Rows, TextArea_default as TextArea, ToggleButton_default as ToggleButton, ToggleButtonSizeVariants, Tooltip_default as Tooltip, Tree_default as Tree, TreeItem, WeekDatepicker_default as WeekDatepicker, borderRadiusTokens, boxShadowTokens, colorTokens, fontWeightTokens, getDomain, spacingTokens, typographyTokens, useDomain, useDropdownButtonContext, useHandleModal, useModalValue, useSplitButtonContext, useTabs };
7265
+ export { AnnualDatepicker_default as AnnualDatepicker, Avatar_default as Avatar, AvatarSizeVariants, Button_default as Button, ButtonSizeVariants, ButtonStyleVariants, CHECKBOX_SYMBOL_KEY, Callout_default as Callout, CalloutTypes, Checkbox_default as Checkbox, CheckboxStyleVariants, ChipButton_default as ChipButton, ChipButtonSizeVariants, ChipButtonStyleVariants, ChipToggle_default as ChipToggle, ChipToggleSizeVariants, ChipToggleStyleVariants, DayDatepicker_default as DayDatepicker, DayDatepickerSizeVariants, Dropdown_default as Dropdown, DropdownButton_default as DropdownButton, DropdownButtonContext, DropdownButtonSizeVariants, DropdownButtonStyleVariants, DropdownOptionVariants, Icon_default as Icon, IconButton_default as IconButton, IconButtonSizeVariants, IconButtonStyleVariants, IconSizeVariants, Input_default as Input, InputButton_default as InputButton, InputSizeVariants, List_default as List, MODAL_FOOTER_KEY, MODAL_HEADER_KEY, Menu_default as Menu, MenuSizeVariants, MinusButton_default as MinusButton, Modal, ModalContext, ModalHandlerContext, ModalPortal_default as ModalProvider, ModalSize, MonthDatepicker_default as MonthDatepicker, MotionStack, MotionStackContainer, NumberCombobox_default as NumberCombobox, NumberComboboxSizeVariants, Pagination_default as Pagination, Popper_default as Popper, PopperPortal, PopperTrigger, RADIO_SYMBOL_KEY, Radio_default as Radio, SLIDER_Z_INDEX, ScrollArea_default as ScrollArea, SearchBar2 as SearchBar, SelectInputButton_default as SelectInputButton, ShoplflowProvider_default as ShoplflowProvider, Skeleton_default as Skeleton, Slider_default as Slider, SplitButton_default as SplitButton, SplitButtonContext, SplitButtonSizeVariants, SplitButtonStyleVariants, Stack_default as Stack, StackContainer_default as StackContainer, StyledIcon, StyledStack, StyledStackContainer, Switch_default as Switch, TREE_SYMBOL_KEY, TabSizeVariants, TabStyleVariants, Tabs_default as Tabs, TabsContext, Tag_default as Tag, TagSizeVariants, TagStyleVariants, Text_default as Text, Text2Rows, TextArea_default as TextArea, ToggleButton_default as ToggleButton, ToggleButtonSizeVariants, Tooltip_default as Tooltip, Tree_default as Tree, TreeItem, WeekDatepicker_default as WeekDatepicker, borderRadiusTokens, boxShadowTokens, colorTokens, fontWeightTokens, getDomain, spacingTokens, typographyTokens, useDomain, useDropdownButtonContext, useHandleModal, useModalValue, useSplitButtonContext, useTabs };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shoplflow/base",
3
- "version": "0.41.11",
3
+ "version": "0.42.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/index.js",