@xsolla/xui-b2b-group-select 0.158.0 → 0.159.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/web/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/GroupSelect.tsx","../../../../foundation/primitives-web/src/Box.tsx","../../../../foundation/primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../../foundation/primitives-web/src/Text.tsx","../../../../foundation/primitives-web/src/Icon.tsx","../../../../foundation/primitives-web/src/Input.tsx","../../../../foundation/primitives-web/src/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\n// @ts-expect-error resolved at build time to web/native primitives\nimport { Box, Icon, InputPrimitive, Text, isWeb } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { Search as SearchIcon } from \"@xsolla/xui-icons-base\";\nimport { Checkbox } from \"@xsolla/xui-checkbox\";\nimport type { GroupSelectGroup, GroupSelectProps } from \"./types\";\n\n/** Default `minWidth` of the panel root; keep in sync with MultiSelect external-field default. */\nexport const GROUP_SELECT_MIN_PANEL_WIDTH = 540;\n\nconst LEFT_COL_WIDTH = 280;\nconst LIST_MAX_HEIGHT = 308;\n/** Right panel header (counter + select all); padding 14×2 + ~18px text */\nconst RIGHT_HEADER_SCROLL_OFFSET = 48;\n\nconst normalize = (s: string) => s.trim().toLowerCase();\n\nfunction filterGroups(\n groups: GroupSelectGroup[],\n query: string\n): GroupSelectGroup[] {\n const q = normalize(query);\n if (!q) return groups;\n\n return groups\n .map((g) => {\n const groupMatches = normalize(g.label).includes(q);\n const items = groupMatches\n ? g.items\n : g.items.filter((it) => normalize(it.label).includes(q));\n return { ...g, items };\n })\n .filter((g) => g.items.length > 0);\n}\n\nexport const GroupSelect: React.FC<GroupSelectProps> = ({\n ariaLabel = \"Grouped selection\",\n groups,\n value,\n onChange,\n activeGroupId: activeGroupIdProp,\n onActiveGroupChange,\n searchPlaceholder = \"Search\",\n emptyMessage = \"No results found\",\n leftColumnWidth = LEFT_COL_WIDTH,\n listMaxHeight = LIST_MAX_HEIGHT,\n selectAllLabel = \"Select all\",\n unselectAllLabel = \"Unselect all\",\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const sizeStyles = theme.sizing.input(\"sm\");\n const inputColors = theme.colors.control.input;\n\n const [search, setSearch] = useState(\"\");\n const [fallbackActive, setFallbackActive] = useState(\n () => groups[0]?.id ?? \"\"\n );\n\n const filteredGroups = useMemo(\n () => filterGroups(groups, search),\n [groups, search]\n );\n\n const isActiveControlled = activeGroupIdProp !== undefined;\n\n useEffect(() => {\n if (!groups.length) return;\n if (isActiveControlled) return;\n setFallbackActive((prev) => {\n const stillValid = filteredGroups.some((g) => g.id === prev);\n if (stillValid) return prev;\n return filteredGroups[0]?.id ?? \"\";\n });\n }, [filteredGroups, groups.length, isActiveControlled]);\n\n const requestedActiveGroupId = isActiveControlled\n ? (activeGroupIdProp ?? \"\")\n : fallbackActive;\n\n const resolvedActiveGroupId = filteredGroups.some(\n (g) => g.id === requestedActiveGroupId\n )\n ? requestedActiveGroupId\n : (filteredGroups[0]?.id ?? \"\");\n\n const activeGroup = filteredGroups.find(\n (g) => g.id === resolvedActiveGroupId\n );\n\n const visibleItems = useMemo(() => activeGroup?.items ?? [], [activeGroup]);\n\n const selectedSet = useMemo(() => new Set(value), [value]);\n\n const handleActiveChange = useCallback(\n (groupId: string) => {\n if (!isActiveControlled) {\n setFallbackActive(groupId);\n }\n onActiveGroupChange?.(groupId);\n },\n [isActiveControlled, onActiveGroupChange]\n );\n\n const selectableVisibleItems = useMemo(\n () => visibleItems.filter((it) => !it.disabled),\n [visibleItems]\n );\n\n const selectedInVisible = useMemo(\n () => selectableVisibleItems.filter((it) => selectedSet.has(it.id)),\n [selectableVisibleItems, selectedSet]\n );\n\n const allVisibleSelected =\n selectableVisibleItems.length > 0 &&\n selectedInVisible.length === selectableVisibleItems.length;\n\n const toggleItem = useCallback(\n (itemId: string, checked: boolean) => {\n if (checked) {\n if (selectedSet.has(itemId)) return;\n onChange([...value, itemId]);\n return;\n }\n onChange(value.filter((id) => id !== itemId));\n },\n [onChange, selectedSet, value]\n );\n\n const handleSelectAllVisible = useCallback(() => {\n const next = new Set(value);\n for (const { id } of selectableVisibleItems) {\n next.add(id);\n }\n onChange([...next]);\n }, [onChange, selectableVisibleItems, value]);\n\n const handleUnselectAllVisible = useCallback(() => {\n const visibleIds = new Set(selectableVisibleItems.map((it) => it.id));\n onChange(value.filter((id) => !visibleIds.has(id)));\n }, [onChange, selectableVisibleItems, value]);\n\n const countSelectedInGroup = useCallback(\n (g: GroupSelectGroup) =>\n g.items.filter((it) => selectedSet.has(it.id)).length,\n [selectedSet]\n );\n\n const getSelectableIdsInGroup = useCallback((g: GroupSelectGroup) => {\n return g.items.filter((it) => !it.disabled).map((it) => it.id);\n }, []);\n\n const handleGroupCheckboxChange = useCallback(\n (g: GroupSelectGroup, nextChecked: boolean) => {\n const selectableIds = getSelectableIdsInGroup(g);\n if (selectableIds.length === 0) return;\n if (nextChecked) {\n const next = new Set(value);\n for (const id of selectableIds) {\n next.add(id);\n }\n onChange([...next]);\n return;\n }\n const remove = new Set(selectableIds);\n onChange(value.filter((id) => !remove.has(id)));\n },\n [getSelectableIdsInGroup, onChange, value]\n );\n\n const handleCategoryActivatorKeyDown = useCallback(\n (groupId: string, e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleActiveChange(groupId);\n }\n },\n [handleActiveChange]\n );\n\n const showEmpty = filteredGroups.length === 0;\n\n return (\n <Box\n flexDirection=\"column\"\n gap={showEmpty ? 24 : 8}\n padding={8}\n backgroundColor={theme.colors.layer.float}\n borderRadius={theme.radius.button}\n role=\"region\"\n aria-label={ariaLabel}\n style={{\n width: \"100%\",\n minWidth: GROUP_SELECT_MIN_PANEL_WIDTH,\n boxSizing: \"border-box\",\n boxShadow: theme.shadow.popover,\n ...(isWeb\n ? {\n backdropFilter: \"blur(16px)\",\n }\n : {}),\n }}\n data-testid=\"group-select\"\n >\n {/* Search */}\n <Box\n flexDirection=\"column\"\n gap={6}\n paddingHorizontal={10}\n paddingVertical={7}\n role=\"search\"\n >\n <Box flexDirection=\"row\" alignItems=\"center\" gap={8}>\n {isWeb ? (\n <Box aria-hidden>\n <Icon size={18} color={inputColors.placeholder}>\n <SearchIcon />\n </Icon>\n </Box>\n ) : (\n <Icon size={18} color={inputColors.placeholder}>\n <SearchIcon />\n </Icon>\n )}\n <Box flex={1} justifyContent=\"center\">\n <InputPrimitive\n value={search}\n placeholder={searchPlaceholder}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setSearch(e.target.value)\n }\n onChangeText={setSearch}\n color={\n search ? theme.colors.content.primary : inputColors.placeholder\n }\n fontSize={sizeStyles.fontSize}\n fontFamily={theme.fonts.body}\n placeholderTextColor={inputColors.placeholder}\n style={\n isWeb\n ? {\n lineHeight: \"16px\",\n }\n : undefined\n }\n aria-label={searchPlaceholder}\n data-testid=\"group-select__search\"\n />\n </Box>\n </Box>\n <Box\n height={1}\n backgroundColor={theme.colors.border.secondary}\n style={\n isWeb\n ? {\n opacity: 0.6,\n }\n : undefined\n }\n />\n </Box>\n\n {showEmpty ? (\n <Box\n paddingBottom={32}\n alignItems=\"center\"\n justifyContent=\"center\"\n width=\"100%\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Text\n color={theme.colors.content.primary}\n fontSize={sizeStyles.fontSize}\n style={{\n lineHeight: \"18px\",\n textAlign: \"center\",\n width: \"100%\",\n }}\n >\n {emptyMessage}\n </Text>\n </Box>\n ) : (\n <Box flexDirection=\"row\" gap={8} alignItems=\"flex-start\" width=\"100%\">\n {/* Left: groups */}\n <Box\n width={leftColumnWidth}\n flexShrink={0}\n borderColor={theme.colors.border.secondary}\n borderWidth={1}\n borderRadius={theme.radius.button}\n overflow=\"hidden\"\n role=\"list\"\n aria-label=\"Categories\"\n >\n <Box\n style={{\n maxHeight: listMaxHeight,\n ...(isWeb ? { overflowY: \"auto\" as const } : {}),\n }}\n >\n {filteredGroups.map((g) => {\n const isActive = g.id === resolvedActiveGroupId;\n const selectedCount = countSelectedInGroup(g);\n const total = g.items.length;\n const summary = `${selectedCount}/${total}`;\n const selectableIds = getSelectableIdsInGroup(g);\n const selectedSelectable = selectableIds.filter((id) =>\n selectedSet.has(id)\n ).length;\n const groupAllSelected =\n selectableIds.length > 0 &&\n selectedSelectable === selectableIds.length;\n const groupIndeterminate =\n selectedSelectable > 0 && !groupAllSelected;\n const groupCheckboxDisabled = selectableIds.length === 0;\n const categoryShowLabel = `Show ${g.label} items`;\n\n return (\n <Box\n key={g.id}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={10}\n paddingHorizontal={14}\n paddingVertical={14}\n minHeight={40}\n backgroundColor={\n isActive\n ? theme.colors.background.brand.secondary\n : \"transparent\"\n }\n hoverStyle={\n !isActive\n ? {\n backgroundColor: theme.colors.control.input.bgHover,\n }\n : undefined\n }\n role=\"listitem\"\n aria-current={isActive ? \"true\" : undefined}\n data-testid={`group-select__group-${g.id}`}\n >\n <Checkbox\n size=\"sm\"\n checked={groupAllSelected}\n indeterminate={groupIndeterminate}\n disabled={groupCheckboxDisabled}\n onChange={(e) =>\n handleGroupCheckboxChange(g, e.target.checked)\n }\n aria-label={`${g.label}, ${summary} selected`}\n themeMode={themeMode}\n themeProductContext={themeProductContext}\n />\n <Box\n flex={1}\n minWidth={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={8}\n onPress={() => handleActiveChange(g.id)}\n style={\n isWeb\n ? {\n cursor: \"pointer\" as const,\n }\n : undefined\n }\n {...(isWeb\n ? {\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": categoryShowLabel,\n onKeyDown: (e: React.KeyboardEvent) =>\n handleCategoryActivatorKeyDown(g.id, e),\n }\n : {\n accessibilityRole: \"button\",\n accessibilityLabel: categoryShowLabel,\n })}\n >\n <Text\n color={theme.colors.control.text.primary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n aria-hidden={isWeb ? true : undefined}\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n }}\n >\n {g.label}\n </Text>\n <Text\n color={theme.colors.content.tertiary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n aria-hidden={isWeb ? true : undefined}\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n textAlign: \"right\",\n }}\n >\n {summary}\n </Text>\n </Box>\n </Box>\n );\n })}\n </Box>\n </Box>\n\n {/* Right: items */}\n <Box\n flex={1}\n minWidth={0}\n borderColor={theme.colors.border.secondary}\n borderWidth={1}\n borderRadius={theme.radius.button}\n backgroundColor={theme.colors.overlay.mono}\n overflow=\"hidden\"\n role=\"region\"\n aria-label={activeGroup ? `${activeGroup.label} items` : \"Items\"}\n >\n {/* Summary row */}\n <Box\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={12}\n paddingHorizontal={14}\n paddingVertical={14}\n minHeight={40}\n borderBottomWidth={1}\n borderBottomColor={theme.colors.border.secondary}\n >\n <Text\n color={theme.colors.control.text.primary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n }}\n >\n {`${selectedInVisible.length}/${visibleItems.length}`}\n </Text>\n <Box\n as={isWeb ? \"button\" : undefined}\n type={isWeb ? \"button\" : undefined}\n disabled={visibleItems.length === 0}\n onPress={\n visibleItems.length === 0\n ? undefined\n : allVisibleSelected\n ? handleUnselectAllVisible\n : handleSelectAllVisible\n }\n backgroundColor=\"transparent\"\n borderWidth={0}\n padding={0}\n aria-label={\n visibleItems.length === 0\n ? undefined\n : allVisibleSelected\n ? `${unselectAllLabel} for ${activeGroup?.label ?? \"category\"}`\n : `${selectAllLabel} for ${activeGroup?.label ?? \"category\"}`\n }\n {...(!isWeb && visibleItems.length > 0\n ? {\n accessibilityRole: \"button\" as const,\n accessibilityLabel: allVisibleSelected\n ? `${unselectAllLabel} for ${activeGroup?.label ?? \"category\"}`\n : `${selectAllLabel} for ${activeGroup?.label ?? \"category\"}`,\n }\n : {})}\n style={\n isWeb\n ? {\n cursor:\n visibleItems.length === 0 ? \"default\" : \"pointer\",\n }\n : undefined\n }\n >\n <Text\n color={theme.colors.content.brand.primary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n }}\n >\n {allVisibleSelected ? unselectAllLabel : selectAllLabel}\n </Text>\n </Box>\n </Box>\n\n <Box\n style={{\n maxHeight: listMaxHeight - RIGHT_HEADER_SCROLL_OFFSET,\n ...(isWeb ? { overflowY: \"auto\" as const } : {}),\n }}\n >\n {visibleItems.map((item) => (\n <Box\n key={item.id}\n paddingHorizontal={14}\n paddingVertical={14}\n minHeight={40}\n flexDirection=\"row\"\n alignItems=\"center\"\n backgroundColor=\"transparent\"\n hoverStyle={\n !item.disabled\n ? {\n backgroundColor: theme.colors.control.input.bgHover,\n }\n : undefined\n }\n style={{\n ...(isWeb\n ? {\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\n }\n : {}),\n opacity: item.disabled ? 0.5 : 1,\n }}\n data-testid={`group-select__item-${item.id}`}\n >\n <Checkbox\n size=\"sm\"\n checked={selectedSet.has(item.id)}\n disabled={item.disabled}\n onChange={(e) => toggleItem(item.id, e.target.checked)}\n themeMode={themeMode}\n themeProductContext={themeProductContext}\n >\n {item.label}\n </Checkbox>\n </Box>\n ))}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nGroupSelect.displayName = \"GroupSelect\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledBox = styled(FilteredDiv)<BoxProps>`\n display: flex;\n box-sizing: border-box;\n background-color: ${(props) => props.backgroundColor || \"transparent\"};\n border-color: ${(props) => props.borderColor || \"transparent\"};\n border-width: ${(props) =>\n typeof props.borderWidth === \"number\"\n ? `${props.borderWidth}px`\n : props.borderWidth || 0};\n\n ${(props) =>\n props.borderBottomWidth !== undefined &&\n `\n border-bottom-width: ${typeof props.borderBottomWidth === \"number\" ? `${props.borderBottomWidth}px` : props.borderBottomWidth};\n border-bottom-color: ${props.borderBottomColor || props.borderColor || \"transparent\"};\n border-bottom-style: solid;\n `}\n ${(props) =>\n props.borderTopWidth !== undefined &&\n `\n border-top-width: ${typeof props.borderTopWidth === \"number\" ? `${props.borderTopWidth}px` : props.borderTopWidth};\n border-top-color: ${props.borderTopColor || props.borderColor || \"transparent\"};\n border-top-style: solid;\n `}\n ${(props) =>\n props.borderLeftWidth !== undefined &&\n `\n border-left-width: ${typeof props.borderLeftWidth === \"number\" ? `${props.borderLeftWidth}px` : props.borderLeftWidth};\n border-left-color: ${props.borderLeftColor || props.borderColor || \"transparent\"};\n border-left-style: solid;\n `}\n ${(props) =>\n props.borderRightWidth !== undefined &&\n `\n border-right-width: ${typeof props.borderRightWidth === \"number\" ? `${props.borderRightWidth}px` : props.borderRightWidth};\n border-right-color: ${props.borderRightColor || props.borderColor || \"transparent\"};\n border-right-style: solid;\n `}\n\n border-style: ${(props) =>\n props.borderStyle ||\n (props.borderWidth ||\n props.borderBottomWidth ||\n props.borderTopWidth ||\n props.borderLeftWidth ||\n props.borderRightWidth\n ? \"solid\"\n : \"none\")};\n border-radius: ${(props) =>\n typeof props.borderRadius === \"number\"\n ? `${props.borderRadius}px`\n : props.borderRadius || 0};\n height: ${(props) =>\n typeof props.height === \"number\"\n ? `${props.height}px`\n : props.height || \"auto\"};\n width: ${(props) =>\n typeof props.width === \"number\"\n ? `${props.width}px`\n : props.width || \"auto\"};\n min-width: ${(props) =>\n typeof props.minWidth === \"number\"\n ? `${props.minWidth}px`\n : props.minWidth || \"auto\"};\n min-height: ${(props) =>\n typeof props.minHeight === \"number\"\n ? `${props.minHeight}px`\n : props.minHeight || \"auto\"};\n max-width: ${(props) =>\n typeof props.maxWidth === \"number\"\n ? `${props.maxWidth}px`\n : props.maxWidth || \"none\"};\n max-height: ${(props) =>\n typeof props.maxHeight === \"number\"\n ? `${props.maxHeight}px`\n : props.maxHeight || \"none\"};\n\n padding: ${(props) =>\n typeof props.padding === \"number\"\n ? `${props.padding}px`\n : props.padding || 0};\n ${(props) =>\n props.paddingHorizontal &&\n `\n padding-left: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n padding-right: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n `}\n ${(props) =>\n props.paddingVertical &&\n `\n padding-top: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n padding-bottom: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n `}\n ${(props) =>\n props.paddingTop !== undefined &&\n `padding-top: ${typeof props.paddingTop === \"number\" ? `${props.paddingTop}px` : props.paddingTop};`}\n ${(props) =>\n props.paddingBottom !== undefined &&\n `padding-bottom: ${typeof props.paddingBottom === \"number\" ? `${props.paddingBottom}px` : props.paddingBottom};`}\n ${(props) =>\n props.paddingLeft !== undefined &&\n `padding-left: ${typeof props.paddingLeft === \"number\" ? `${props.paddingLeft}px` : props.paddingLeft};`}\n ${(props) =>\n props.paddingRight !== undefined &&\n `padding-right: ${typeof props.paddingRight === \"number\" ? `${props.paddingRight}px` : props.paddingRight};`}\n\n margin: ${(props) =>\n typeof props.margin === \"number\" ? `${props.margin}px` : props.margin || 0};\n ${(props) =>\n props.marginTop !== undefined &&\n `margin-top: ${typeof props.marginTop === \"number\" ? `${props.marginTop}px` : props.marginTop};`}\n ${(props) =>\n props.marginBottom !== undefined &&\n `margin-bottom: ${typeof props.marginBottom === \"number\" ? `${props.marginBottom}px` : props.marginBottom};`}\n ${(props) =>\n props.marginLeft !== undefined &&\n `margin-left: ${typeof props.marginLeft === \"number\" ? `${props.marginLeft}px` : props.marginLeft};`}\n ${(props) =>\n props.marginRight !== undefined &&\n `margin-right: ${typeof props.marginRight === \"number\" ? `${props.marginRight}px` : props.marginRight};`}\n\n flex-direction: ${(props) => props.flexDirection || \"column\"};\n flex-wrap: ${(props) => props.flexWrap || \"nowrap\"};\n align-items: ${(props) => props.alignItems || \"stretch\"};\n justify-content: ${(props) => props.justifyContent || \"flex-start\"};\n cursor: ${(props) =>\n props.cursor\n ? props.cursor\n : props.onClick || props.onPress\n ? \"pointer\"\n : \"inherit\"};\n position: ${(props) => props.position || \"static\"};\n top: ${(props) =>\n typeof props.top === \"number\" ? `${props.top}px` : props.top};\n bottom: ${(props) =>\n typeof props.bottom === \"number\" ? `${props.bottom}px` : props.bottom};\n left: ${(props) =>\n typeof props.left === \"number\" ? `${props.left}px` : props.left};\n right: ${(props) =>\n typeof props.right === \"number\" ? `${props.right}px` : props.right};\n flex: ${(props) => props.flex};\n flex-shrink: ${(props) => props.flexShrink ?? 1};\n gap: ${(props) =>\n typeof props.gap === \"number\" ? `${props.gap}px` : props.gap || 0};\n align-self: ${(props) => props.alignSelf || \"auto\"};\n overflow: ${(props) => props.overflow || \"visible\"};\n overflow-x: ${(props) => props.overflowX || \"visible\"};\n overflow-y: ${(props) => props.overflowY || \"visible\"};\n z-index: ${(props) => props.zIndex};\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n pointer-events: ${(props) => (props.disabled ? \"none\" : \"auto\")};\n\n &:hover {\n ${(props) =>\n props.hoverStyle?.backgroundColor &&\n `background-color: ${props.hoverStyle.backgroundColor};`}\n ${(props) =>\n props.hoverStyle?.borderColor &&\n `border-color: ${props.hoverStyle.borderColor};`}\n }\n\n &:active {\n ${(props) =>\n props.pressStyle?.backgroundColor &&\n `background-color: ${props.pressStyle.backgroundColor};`}\n }\n`;\n\nexport const Box = React.forwardRef<\n HTMLDivElement | HTMLButtonElement,\n BoxProps\n>(\n (\n {\n children,\n onPress,\n onKeyDown,\n onKeyUp,\n role,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-current\": ariaCurrent,\n \"aria-disabled\": ariaDisabled,\n \"aria-live\": ariaLive,\n \"aria-busy\": ariaBusy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHasPopup,\n \"aria-pressed\": ariaPressed,\n \"aria-controls\": ariaControls,\n tabIndex,\n as,\n src,\n alt,\n onError,\n onLoad,\n type,\n disabled,\n id,\n testID,\n \"data-testid\": dataTestId,\n ...props\n },\n ref\n ) => {\n // Handle as=\"img\" for rendering images with proper border-radius\n if (as === \"img\" && src) {\n return (\n <img\n src={src}\n alt={alt || \"\"}\n onError={onError}\n onLoad={onLoad}\n style={{\n display: \"block\",\n objectFit: \"cover\",\n width:\n typeof props.width === \"number\"\n ? `${props.width}px`\n : props.width,\n height:\n typeof props.height === \"number\"\n ? `${props.height}px`\n : props.height,\n borderRadius:\n typeof props.borderRadius === \"number\"\n ? `${props.borderRadius}px`\n : props.borderRadius,\n position: props.position,\n top: typeof props.top === \"number\" ? `${props.top}px` : props.top,\n left:\n typeof props.left === \"number\" ? `${props.left}px` : props.left,\n right:\n typeof props.right === \"number\"\n ? `${props.right}px`\n : props.right,\n bottom:\n typeof props.bottom === \"number\"\n ? `${props.bottom}px`\n : props.bottom,\n ...props.style,\n }}\n />\n );\n }\n\n return (\n <StyledBox\n ref={ref}\n elementType={as}\n id={id}\n type={as === \"button\" ? type || \"button\" : undefined}\n disabled={as === \"button\" ? disabled : undefined}\n onClick={onPress}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-current={ariaCurrent}\n aria-disabled={ariaDisabled}\n aria-busy={ariaBusy}\n aria-describedby={ariaDescribedBy}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHasPopup}\n aria-pressed={ariaPressed}\n aria-controls={ariaControls}\n aria-live={ariaLive}\n tabIndex={tabIndex !== undefined ? tabIndex : undefined}\n data-testid={dataTestId || testID}\n {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n // RN-only event handlers (pass isPropValid's on* pattern)\n \"onPress\",\n \"onChangeText\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n // SVG attributes that pass isPropValid\n \"strokeWidth\",\n // CSS properties that pass isPropValid but are used as component props\n \"overflow\",\n \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then: `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = (elementType as string) || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (shouldForwardProp(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(\n Tag,\n { ref, ...htmlProps },\n children as React.ReactNode\n );\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredSpan = createFilteredElement(\"span\");\n\nconst StyledText = styled(FilteredSpan)<TextProps>`\n color: ${(props) => props.color || \"inherit\"};\n font-size: ${(props) =>\n typeof props.fontSize === \"number\"\n ? `${props.fontSize}px`\n : props.fontSize || \"inherit\"};\n font-weight: ${(props) => props.fontWeight || \"normal\"};\n font-family: ${(props) =>\n props.fontFamily ||\n '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n line-height: ${(props) =>\n typeof props.lineHeight === \"number\"\n ? `${props.lineHeight}px`\n : props.lineHeight || \"inherit\"};\n white-space: ${(props) => props.whiteSpace || \"normal\"};\n text-align: ${(props) => props.textAlign || \"inherit\"};\n text-decoration: ${(props) => props.textDecoration || \"none\"};\n`;\n\nexport const Text: React.FC<TextProps> = ({\n style,\n className,\n id,\n role,\n numberOfLines: _numberOfLines,\n ...props\n}) => {\n return (\n <StyledText\n {...props}\n style={style}\n className={className}\n id={id}\n role={role}\n />\n );\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledIcon = styled(FilteredDiv)<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({ children, ...props }) => {\n return <StyledIcon {...props}>{children}</StyledIcon>;\n};\n","import React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { InputPrimitiveProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredInput = createFilteredElement(\"input\");\n\nconst StyledInput = styled(FilteredInput)<InputPrimitiveProps>`\n background: transparent;\n border: none;\n outline: none;\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n color: ${(props) => props.color || \"inherit\"};\n font-size: ${(props) =>\n typeof props.fontSize === \"number\"\n ? `${props.fontSize}px`\n : props.fontSize || \"inherit\"};\n font-family: ${(props) =>\n props.fontFamily ||\n '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n text-align: inherit;\n\n &::placeholder {\n color: ${(props) =>\n props.placeholderTextColor || \"rgba(255, 255, 255, 0.5)\"};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n /* Override browser autofill background */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important;\n -webkit-background-clip: text !important;\n -webkit-text-fill-color: ${(props) => props.color || \"inherit\"} !important;\n }\n`;\n\nexport const InputPrimitive = forwardRef<HTMLInputElement, InputPrimitiveProps>(\n (\n {\n value,\n placeholder,\n onChange,\n onChangeText,\n onFocus,\n onBlur,\n onKeyDown,\n disabled,\n secureTextEntry,\n style,\n color,\n fontSize,\n fontFamily,\n placeholderTextColor,\n maxLength,\n name,\n type,\n inputMode,\n autoComplete,\n id,\n \"aria-invalid\": ariaInvalid,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel,\n \"aria-disabled\": ariaDisabled,\n \"data-testid\": dataTestId,\n ...rest\n },\n ref\n ) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n }\n if (onChangeText) {\n onChangeText(e.target.value);\n }\n };\n\n // Always pass value to make it a controlled input\n const inputValue = value !== undefined ? value : \"\";\n\n return (\n <StyledInput\n ref={ref}\n id={id}\n value={inputValue}\n name={name}\n placeholder={placeholder}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n disabled={disabled}\n type={secureTextEntry ? \"password\" : type || \"text\"}\n inputMode={inputMode}\n autoComplete={autoComplete}\n style={style}\n color={color}\n fontSize={fontSize}\n fontFamily={fontFamily}\n placeholderTextColor={placeholderTextColor}\n maxLength={maxLength}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedBy}\n aria-labelledby={ariaLabelledBy}\n aria-label={ariaLabel}\n aria-disabled={ariaDisabled}\n data-testid={dataTestId}\n {...rest}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n","export * from \"./Box\";\nexport * from \"./Text\";\nexport * from \"./Spinner\";\nexport * from \"./Icon\";\nexport * from \"./Divider\";\nexport * from \"./Input\";\nexport * from \"./TextArea\";\nexport * from \"./LinearGradient\";\n\nexport const isWeb = true;\nexport const isNative = false;\n"],"mappings":"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","names":["React","React","styled","jsx","styled","styled","jsx","FilteredDiv","styled","styled","jsx","styled","jsx"]}
1
+ {"version":3,"sources":["../../src/GroupSelect.tsx","../../../../foundation/primitives-web/src/Box.tsx","../../../../foundation/primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../../foundation/primitives-web/src/Text.tsx","../../../../foundation/primitives-web/src/Icon.tsx","../../../../foundation/primitives-web/src/Input.tsx","../../../../foundation/primitives-web/src/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\n// @ts-expect-error resolved at build time to web/native primitives\nimport { Box, Icon, InputPrimitive, Text, isWeb } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme } from \"@xsolla/xui-core\";\nimport { Search as SearchIcon } from \"@xsolla/xui-icons-base\";\nimport { Checkbox } from \"@xsolla/xui-checkbox\";\nimport type { GroupSelectGroup, GroupSelectProps } from \"./types\";\n\n/** Default `minWidth` of the panel root; keep in sync with MultiSelect external-field default. */\nexport const GROUP_SELECT_MIN_PANEL_WIDTH = 540;\n\nconst LEFT_COL_WIDTH = 280;\nconst LIST_MAX_HEIGHT = 308;\n/** Right panel header (counter + select all); padding 14×2 + ~18px text */\nconst RIGHT_HEADER_SCROLL_OFFSET = 48;\n\nconst normalize = (s: string) => s.trim().toLowerCase();\n\nfunction filterGroups(\n groups: GroupSelectGroup[],\n query: string\n): GroupSelectGroup[] {\n const q = normalize(query);\n if (!q) return groups;\n\n return groups\n .map((g) => {\n const groupMatches = normalize(g.label).includes(q);\n const items = groupMatches\n ? g.items\n : g.items.filter((it) => normalize(it.label).includes(q));\n return { ...g, items };\n })\n .filter((g) => g.items.length > 0);\n}\n\nexport const GroupSelect: React.FC<GroupSelectProps> = ({\n ariaLabel = \"Grouped selection\",\n groups,\n value,\n onChange,\n activeGroupId: activeGroupIdProp,\n onActiveGroupChange,\n searchPlaceholder = \"Search\",\n emptyMessage = \"No results found\",\n leftColumnWidth = LEFT_COL_WIDTH,\n listMaxHeight = LIST_MAX_HEIGHT,\n selectAllLabel = \"Select all\",\n unselectAllLabel = \"Unselect all\",\n testID,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const sizeStyles = theme.sizing.input(\"sm\");\n const inputColors = theme.colors.control.input;\n\n const [search, setSearch] = useState(\"\");\n const [fallbackActive, setFallbackActive] = useState(\n () => groups[0]?.id ?? \"\"\n );\n\n const filteredGroups = useMemo(\n () => filterGroups(groups, search),\n [groups, search]\n );\n\n const isActiveControlled = activeGroupIdProp !== undefined;\n\n useEffect(() => {\n if (!groups.length) return;\n if (isActiveControlled) return;\n setFallbackActive((prev) => {\n const stillValid = filteredGroups.some((g) => g.id === prev);\n if (stillValid) return prev;\n return filteredGroups[0]?.id ?? \"\";\n });\n }, [filteredGroups, groups.length, isActiveControlled]);\n\n const requestedActiveGroupId = isActiveControlled\n ? (activeGroupIdProp ?? \"\")\n : fallbackActive;\n\n const resolvedActiveGroupId = filteredGroups.some(\n (g) => g.id === requestedActiveGroupId\n )\n ? requestedActiveGroupId\n : (filteredGroups[0]?.id ?? \"\");\n\n const activeGroup = filteredGroups.find(\n (g) => g.id === resolvedActiveGroupId\n );\n\n const visibleItems = useMemo(() => activeGroup?.items ?? [], [activeGroup]);\n\n const selectedSet = useMemo(() => new Set(value), [value]);\n\n const handleActiveChange = useCallback(\n (groupId: string) => {\n if (!isActiveControlled) {\n setFallbackActive(groupId);\n }\n onActiveGroupChange?.(groupId);\n },\n [isActiveControlled, onActiveGroupChange]\n );\n\n const selectableVisibleItems = useMemo(\n () => visibleItems.filter((it) => !it.disabled),\n [visibleItems]\n );\n\n const selectedInVisible = useMemo(\n () => selectableVisibleItems.filter((it) => selectedSet.has(it.id)),\n [selectableVisibleItems, selectedSet]\n );\n\n const allVisibleSelected =\n selectableVisibleItems.length > 0 &&\n selectedInVisible.length === selectableVisibleItems.length;\n\n const toggleItem = useCallback(\n (itemId: string, checked: boolean) => {\n if (checked) {\n if (selectedSet.has(itemId)) return;\n onChange([...value, itemId]);\n return;\n }\n onChange(value.filter((id) => id !== itemId));\n },\n [onChange, selectedSet, value]\n );\n\n const handleSelectAllVisible = useCallback(() => {\n const next = new Set(value);\n for (const { id } of selectableVisibleItems) {\n next.add(id);\n }\n onChange([...next]);\n }, [onChange, selectableVisibleItems, value]);\n\n const handleUnselectAllVisible = useCallback(() => {\n const visibleIds = new Set(selectableVisibleItems.map((it) => it.id));\n onChange(value.filter((id) => !visibleIds.has(id)));\n }, [onChange, selectableVisibleItems, value]);\n\n const countSelectedInGroup = useCallback(\n (g: GroupSelectGroup) =>\n g.items.filter((it) => selectedSet.has(it.id)).length,\n [selectedSet]\n );\n\n const getSelectableIdsInGroup = useCallback((g: GroupSelectGroup) => {\n return g.items.filter((it) => !it.disabled).map((it) => it.id);\n }, []);\n\n const handleGroupCheckboxChange = useCallback(\n (g: GroupSelectGroup, nextChecked: boolean) => {\n const selectableIds = getSelectableIdsInGroup(g);\n if (selectableIds.length === 0) return;\n if (nextChecked) {\n const next = new Set(value);\n for (const id of selectableIds) {\n next.add(id);\n }\n onChange([...next]);\n return;\n }\n const remove = new Set(selectableIds);\n onChange(value.filter((id) => !remove.has(id)));\n },\n [getSelectableIdsInGroup, onChange, value]\n );\n\n const handleCategoryActivatorKeyDown = useCallback(\n (groupId: string, e: React.KeyboardEvent) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleActiveChange(groupId);\n }\n },\n [handleActiveChange]\n );\n\n const showEmpty = filteredGroups.length === 0;\n\n return (\n <Box\n flexDirection=\"column\"\n gap={showEmpty ? 24 : 8}\n padding={8}\n backgroundColor={theme.colors.layer.float}\n borderRadius={theme.radius.button}\n role=\"region\"\n aria-label={ariaLabel}\n style={{\n width: \"100%\",\n minWidth: GROUP_SELECT_MIN_PANEL_WIDTH,\n boxSizing: \"border-box\",\n boxShadow: theme.shadow.popover,\n ...(isWeb\n ? {\n backdropFilter: \"blur(16px)\",\n }\n : {}),\n }}\n testID={testID || \"group-select\"}\n >\n {/* Search */}\n <Box\n flexDirection=\"column\"\n gap={6}\n paddingHorizontal={10}\n paddingVertical={7}\n role=\"search\"\n >\n <Box flexDirection=\"row\" alignItems=\"center\" gap={8}>\n {isWeb ? (\n <Box aria-hidden>\n <Icon size={18} color={inputColors.placeholder}>\n <SearchIcon />\n </Icon>\n </Box>\n ) : (\n <Icon size={18} color={inputColors.placeholder}>\n <SearchIcon />\n </Icon>\n )}\n <Box flex={1} justifyContent=\"center\">\n <InputPrimitive\n value={search}\n placeholder={searchPlaceholder}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setSearch(e.target.value)\n }\n onChangeText={setSearch}\n color={\n search ? theme.colors.content.primary : inputColors.placeholder\n }\n fontSize={sizeStyles.fontSize}\n fontFamily={theme.fonts.body}\n placeholderTextColor={inputColors.placeholder}\n style={\n isWeb\n ? {\n lineHeight: \"16px\",\n }\n : undefined\n }\n aria-label={searchPlaceholder}\n data-testid=\"group-select__search\"\n />\n </Box>\n </Box>\n <Box\n height={1}\n backgroundColor={theme.colors.border.secondary}\n style={\n isWeb\n ? {\n opacity: 0.6,\n }\n : undefined\n }\n />\n </Box>\n\n {showEmpty ? (\n <Box\n paddingBottom={32}\n alignItems=\"center\"\n justifyContent=\"center\"\n width=\"100%\"\n role=\"status\"\n aria-live=\"polite\"\n >\n <Text\n color={theme.colors.content.primary}\n fontSize={sizeStyles.fontSize}\n style={{\n lineHeight: \"18px\",\n textAlign: \"center\",\n width: \"100%\",\n }}\n >\n {emptyMessage}\n </Text>\n </Box>\n ) : (\n <Box flexDirection=\"row\" gap={8} alignItems=\"flex-start\" width=\"100%\">\n {/* Left: groups */}\n <Box\n width={leftColumnWidth}\n flexShrink={0}\n borderColor={theme.colors.border.secondary}\n borderWidth={1}\n borderRadius={theme.radius.button}\n overflow=\"hidden\"\n role=\"list\"\n aria-label=\"Categories\"\n >\n <Box\n style={{\n maxHeight: listMaxHeight,\n ...(isWeb ? { overflowY: \"auto\" as const } : {}),\n }}\n >\n {filteredGroups.map((g) => {\n const isActive = g.id === resolvedActiveGroupId;\n const selectedCount = countSelectedInGroup(g);\n const total = g.items.length;\n const summary = `${selectedCount}/${total}`;\n const selectableIds = getSelectableIdsInGroup(g);\n const selectedSelectable = selectableIds.filter((id) =>\n selectedSet.has(id)\n ).length;\n const groupAllSelected =\n selectableIds.length > 0 &&\n selectedSelectable === selectableIds.length;\n const groupIndeterminate =\n selectedSelectable > 0 && !groupAllSelected;\n const groupCheckboxDisabled = selectableIds.length === 0;\n const categoryShowLabel = `Show ${g.label} items`;\n\n return (\n <Box\n key={g.id}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={10}\n paddingHorizontal={14}\n paddingVertical={14}\n minHeight={40}\n backgroundColor={\n isActive\n ? theme.colors.background.brand.secondary\n : \"transparent\"\n }\n hoverStyle={\n !isActive\n ? {\n backgroundColor: theme.colors.control.input.bgHover,\n }\n : undefined\n }\n role=\"listitem\"\n aria-current={isActive ? \"true\" : undefined}\n data-testid={`group-select__group-${g.id}`}\n >\n <Checkbox\n size=\"sm\"\n checked={groupAllSelected}\n indeterminate={groupIndeterminate}\n disabled={groupCheckboxDisabled}\n onChange={(e) =>\n handleGroupCheckboxChange(g, e.target.checked)\n }\n aria-label={`${g.label}, ${summary} selected`}\n themeMode={themeMode}\n themeProductContext={themeProductContext}\n />\n <Box\n flex={1}\n minWidth={0}\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={8}\n onPress={() => handleActiveChange(g.id)}\n style={\n isWeb\n ? {\n cursor: \"pointer\" as const,\n }\n : undefined\n }\n {...(isWeb\n ? {\n role: \"button\",\n tabIndex: 0,\n \"aria-label\": categoryShowLabel,\n onKeyDown: (e: React.KeyboardEvent) =>\n handleCategoryActivatorKeyDown(g.id, e),\n }\n : {\n accessibilityRole: \"button\",\n accessibilityLabel: categoryShowLabel,\n })}\n >\n <Text\n color={theme.colors.control.text.primary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n aria-hidden={isWeb ? true : undefined}\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n }}\n >\n {g.label}\n </Text>\n <Text\n color={theme.colors.content.tertiary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n aria-hidden={isWeb ? true : undefined}\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n textAlign: \"right\",\n }}\n >\n {summary}\n </Text>\n </Box>\n </Box>\n );\n })}\n </Box>\n </Box>\n\n {/* Right: items */}\n <Box\n flex={1}\n minWidth={0}\n borderColor={theme.colors.border.secondary}\n borderWidth={1}\n borderRadius={theme.radius.button}\n backgroundColor={theme.colors.overlay.mono}\n overflow=\"hidden\"\n role=\"region\"\n aria-label={activeGroup ? `${activeGroup.label} items` : \"Items\"}\n >\n {/* Summary row */}\n <Box\n flexDirection=\"row\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n gap={12}\n paddingHorizontal={14}\n paddingVertical={14}\n minHeight={40}\n borderBottomWidth={1}\n borderBottomColor={theme.colors.border.secondary}\n >\n <Text\n color={theme.colors.control.text.primary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n }}\n >\n {`${selectedInVisible.length}/${visibleItems.length}`}\n </Text>\n <Box\n as={isWeb ? \"button\" : undefined}\n type={isWeb ? \"button\" : undefined}\n disabled={visibleItems.length === 0}\n onPress={\n visibleItems.length === 0\n ? undefined\n : allVisibleSelected\n ? handleUnselectAllVisible\n : handleSelectAllVisible\n }\n backgroundColor=\"transparent\"\n borderWidth={0}\n padding={0}\n aria-label={\n visibleItems.length === 0\n ? undefined\n : allVisibleSelected\n ? `${unselectAllLabel} for ${activeGroup?.label ?? \"category\"}`\n : `${selectAllLabel} for ${activeGroup?.label ?? \"category\"}`\n }\n {...(!isWeb && visibleItems.length > 0\n ? {\n accessibilityRole: \"button\" as const,\n accessibilityLabel: allVisibleSelected\n ? `${unselectAllLabel} for ${activeGroup?.label ?? \"category\"}`\n : `${selectAllLabel} for ${activeGroup?.label ?? \"category\"}`,\n }\n : {})}\n style={\n isWeb\n ? {\n cursor:\n visibleItems.length === 0 ? \"default\" : \"pointer\",\n }\n : undefined\n }\n >\n <Text\n color={theme.colors.content.brand.primary}\n fontSize={sizeStyles.fontSize}\n fontWeight=\"500\"\n style={{\n lineHeight: `${sizeStyles.lineHeight + 4}px`,\n }}\n >\n {allVisibleSelected ? unselectAllLabel : selectAllLabel}\n </Text>\n </Box>\n </Box>\n\n <Box\n style={{\n maxHeight: listMaxHeight - RIGHT_HEADER_SCROLL_OFFSET,\n ...(isWeb ? { overflowY: \"auto\" as const } : {}),\n }}\n >\n {visibleItems.map((item) => (\n <Box\n key={item.id}\n paddingHorizontal={14}\n paddingVertical={14}\n minHeight={40}\n flexDirection=\"row\"\n alignItems=\"center\"\n backgroundColor=\"transparent\"\n hoverStyle={\n !item.disabled\n ? {\n backgroundColor: theme.colors.control.input.bgHover,\n }\n : undefined\n }\n style={{\n ...(isWeb\n ? {\n cursor: item.disabled ? \"not-allowed\" : \"pointer\",\n }\n : {}),\n opacity: item.disabled ? 0.5 : 1,\n }}\n data-testid={`group-select__item-${item.id}`}\n >\n <Checkbox\n size=\"sm\"\n checked={selectedSet.has(item.id)}\n disabled={item.disabled}\n onChange={(e) => toggleItem(item.id, e.target.checked)}\n themeMode={themeMode}\n themeProductContext={themeProductContext}\n >\n {item.label}\n </Checkbox>\n </Box>\n ))}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n );\n};\n\nGroupSelect.displayName = \"GroupSelect\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledBox = styled(FilteredDiv)<BoxProps>`\n display: flex;\n box-sizing: border-box;\n background-color: ${(props) => props.backgroundColor || \"transparent\"};\n border-color: ${(props) => props.borderColor || \"transparent\"};\n border-width: ${(props) =>\n typeof props.borderWidth === \"number\"\n ? `${props.borderWidth}px`\n : props.borderWidth || 0};\n\n ${(props) =>\n props.borderBottomWidth !== undefined &&\n `\n border-bottom-width: ${typeof props.borderBottomWidth === \"number\" ? `${props.borderBottomWidth}px` : props.borderBottomWidth};\n border-bottom-color: ${props.borderBottomColor || props.borderColor || \"transparent\"};\n border-bottom-style: solid;\n `}\n ${(props) =>\n props.borderTopWidth !== undefined &&\n `\n border-top-width: ${typeof props.borderTopWidth === \"number\" ? `${props.borderTopWidth}px` : props.borderTopWidth};\n border-top-color: ${props.borderTopColor || props.borderColor || \"transparent\"};\n border-top-style: solid;\n `}\n ${(props) =>\n props.borderLeftWidth !== undefined &&\n `\n border-left-width: ${typeof props.borderLeftWidth === \"number\" ? `${props.borderLeftWidth}px` : props.borderLeftWidth};\n border-left-color: ${props.borderLeftColor || props.borderColor || \"transparent\"};\n border-left-style: solid;\n `}\n ${(props) =>\n props.borderRightWidth !== undefined &&\n `\n border-right-width: ${typeof props.borderRightWidth === \"number\" ? `${props.borderRightWidth}px` : props.borderRightWidth};\n border-right-color: ${props.borderRightColor || props.borderColor || \"transparent\"};\n border-right-style: solid;\n `}\n\n border-style: ${(props) =>\n props.borderStyle ||\n (props.borderWidth ||\n props.borderBottomWidth ||\n props.borderTopWidth ||\n props.borderLeftWidth ||\n props.borderRightWidth\n ? \"solid\"\n : \"none\")};\n border-radius: ${(props) =>\n typeof props.borderRadius === \"number\"\n ? `${props.borderRadius}px`\n : props.borderRadius || 0};\n height: ${(props) =>\n typeof props.height === \"number\"\n ? `${props.height}px`\n : props.height || \"auto\"};\n width: ${(props) =>\n typeof props.width === \"number\"\n ? `${props.width}px`\n : props.width || \"auto\"};\n min-width: ${(props) =>\n typeof props.minWidth === \"number\"\n ? `${props.minWidth}px`\n : props.minWidth || \"auto\"};\n min-height: ${(props) =>\n typeof props.minHeight === \"number\"\n ? `${props.minHeight}px`\n : props.minHeight || \"auto\"};\n max-width: ${(props) =>\n typeof props.maxWidth === \"number\"\n ? `${props.maxWidth}px`\n : props.maxWidth || \"none\"};\n max-height: ${(props) =>\n typeof props.maxHeight === \"number\"\n ? `${props.maxHeight}px`\n : props.maxHeight || \"none\"};\n\n padding: ${(props) =>\n typeof props.padding === \"number\"\n ? `${props.padding}px`\n : props.padding || 0};\n ${(props) =>\n props.paddingHorizontal &&\n `\n padding-left: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n padding-right: ${typeof props.paddingHorizontal === \"number\" ? `${props.paddingHorizontal}px` : props.paddingHorizontal};\n `}\n ${(props) =>\n props.paddingVertical &&\n `\n padding-top: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n padding-bottom: ${typeof props.paddingVertical === \"number\" ? `${props.paddingVertical}px` : props.paddingVertical};\n `}\n ${(props) =>\n props.paddingTop !== undefined &&\n `padding-top: ${typeof props.paddingTop === \"number\" ? `${props.paddingTop}px` : props.paddingTop};`}\n ${(props) =>\n props.paddingBottom !== undefined &&\n `padding-bottom: ${typeof props.paddingBottom === \"number\" ? `${props.paddingBottom}px` : props.paddingBottom};`}\n ${(props) =>\n props.paddingLeft !== undefined &&\n `padding-left: ${typeof props.paddingLeft === \"number\" ? `${props.paddingLeft}px` : props.paddingLeft};`}\n ${(props) =>\n props.paddingRight !== undefined &&\n `padding-right: ${typeof props.paddingRight === \"number\" ? `${props.paddingRight}px` : props.paddingRight};`}\n\n margin: ${(props) =>\n typeof props.margin === \"number\" ? `${props.margin}px` : props.margin || 0};\n ${(props) =>\n props.marginTop !== undefined &&\n `margin-top: ${typeof props.marginTop === \"number\" ? `${props.marginTop}px` : props.marginTop};`}\n ${(props) =>\n props.marginBottom !== undefined &&\n `margin-bottom: ${typeof props.marginBottom === \"number\" ? `${props.marginBottom}px` : props.marginBottom};`}\n ${(props) =>\n props.marginLeft !== undefined &&\n `margin-left: ${typeof props.marginLeft === \"number\" ? `${props.marginLeft}px` : props.marginLeft};`}\n ${(props) =>\n props.marginRight !== undefined &&\n `margin-right: ${typeof props.marginRight === \"number\" ? `${props.marginRight}px` : props.marginRight};`}\n\n flex-direction: ${(props) => props.flexDirection || \"column\"};\n flex-wrap: ${(props) => props.flexWrap || \"nowrap\"};\n align-items: ${(props) => props.alignItems || \"stretch\"};\n justify-content: ${(props) => props.justifyContent || \"flex-start\"};\n cursor: ${(props) =>\n props.cursor\n ? props.cursor\n : props.onClick || props.onPress\n ? \"pointer\"\n : \"inherit\"};\n position: ${(props) => props.position || \"static\"};\n top: ${(props) =>\n typeof props.top === \"number\" ? `${props.top}px` : props.top};\n bottom: ${(props) =>\n typeof props.bottom === \"number\" ? `${props.bottom}px` : props.bottom};\n left: ${(props) =>\n typeof props.left === \"number\" ? `${props.left}px` : props.left};\n right: ${(props) =>\n typeof props.right === \"number\" ? `${props.right}px` : props.right};\n flex: ${(props) => props.flex};\n flex-shrink: ${(props) => props.flexShrink ?? 1};\n gap: ${(props) =>\n typeof props.gap === \"number\" ? `${props.gap}px` : props.gap || 0};\n align-self: ${(props) => props.alignSelf || \"auto\"};\n overflow: ${(props) => props.overflow || \"visible\"};\n overflow-x: ${(props) => props.overflowX || \"visible\"};\n overflow-y: ${(props) => props.overflowY || \"visible\"};\n z-index: ${(props) => props.zIndex};\n opacity: ${(props) => (props.disabled ? 0.5 : 1)};\n pointer-events: ${(props) => (props.disabled ? \"none\" : \"auto\")};\n\n &:hover {\n ${(props) =>\n props.hoverStyle?.backgroundColor &&\n `background-color: ${props.hoverStyle.backgroundColor};`}\n ${(props) =>\n props.hoverStyle?.borderColor &&\n `border-color: ${props.hoverStyle.borderColor};`}\n }\n\n &:active {\n ${(props) =>\n props.pressStyle?.backgroundColor &&\n `background-color: ${props.pressStyle.backgroundColor};`}\n }\n`;\n\nexport const Box = React.forwardRef<\n HTMLDivElement | HTMLButtonElement,\n BoxProps\n>(\n (\n {\n children,\n onPress,\n onKeyDown,\n onKeyUp,\n role,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-current\": ariaCurrent,\n \"aria-disabled\": ariaDisabled,\n \"aria-live\": ariaLive,\n \"aria-busy\": ariaBusy,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-expanded\": ariaExpanded,\n \"aria-haspopup\": ariaHasPopup,\n \"aria-pressed\": ariaPressed,\n \"aria-controls\": ariaControls,\n tabIndex,\n as,\n src,\n alt,\n onError,\n onLoad,\n type,\n disabled,\n id,\n testID,\n \"data-testid\": dataTestId,\n ...props\n },\n ref\n ) => {\n // Handle as=\"img\" for rendering images with proper border-radius\n if (as === \"img\" && src) {\n return (\n <img\n src={src}\n alt={alt || \"\"}\n onError={onError}\n onLoad={onLoad}\n style={{\n display: \"block\",\n objectFit: \"cover\",\n width:\n typeof props.width === \"number\"\n ? `${props.width}px`\n : props.width,\n height:\n typeof props.height === \"number\"\n ? `${props.height}px`\n : props.height,\n borderRadius:\n typeof props.borderRadius === \"number\"\n ? `${props.borderRadius}px`\n : props.borderRadius,\n position: props.position,\n top: typeof props.top === \"number\" ? `${props.top}px` : props.top,\n left:\n typeof props.left === \"number\" ? `${props.left}px` : props.left,\n right:\n typeof props.right === \"number\"\n ? `${props.right}px`\n : props.right,\n bottom:\n typeof props.bottom === \"number\"\n ? `${props.bottom}px`\n : props.bottom,\n ...props.style,\n }}\n />\n );\n }\n\n return (\n <StyledBox\n ref={ref}\n elementType={as}\n id={id}\n type={as === \"button\" ? type || \"button\" : undefined}\n disabled={as === \"button\" ? disabled : undefined}\n onClick={onPress}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n role={role}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-current={ariaCurrent}\n aria-disabled={ariaDisabled}\n aria-busy={ariaBusy}\n aria-describedby={ariaDescribedBy}\n aria-expanded={ariaExpanded}\n aria-haspopup={ariaHasPopup}\n aria-pressed={ariaPressed}\n aria-controls={ariaControls}\n aria-live={ariaLive}\n tabIndex={tabIndex !== undefined ? tabIndex : undefined}\n data-testid={dataTestId || testID}\n {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n // RN-only event handlers (pass isPropValid's on* pattern)\n \"onPress\",\n \"onChangeText\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n // SVG attributes that pass isPropValid\n \"strokeWidth\",\n // CSS properties that pass isPropValid but are used as component props\n \"overflow\",\n \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then: `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = (elementType as string) || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (shouldForwardProp(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(\n Tag,\n { ref, ...htmlProps },\n children as React.ReactNode\n );\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredSpan = createFilteredElement(\"span\");\n\nconst StyledText = styled(FilteredSpan)<TextProps>`\n color: ${(props) => props.color || \"inherit\"};\n font-size: ${(props) =>\n typeof props.fontSize === \"number\"\n ? `${props.fontSize}px`\n : props.fontSize || \"inherit\"};\n font-weight: ${(props) => props.fontWeight || \"normal\"};\n font-family: ${(props) =>\n props.fontFamily ||\n '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n line-height: ${(props) =>\n typeof props.lineHeight === \"number\"\n ? `${props.lineHeight}px`\n : props.lineHeight || \"inherit\"};\n white-space: ${(props) => props.whiteSpace || \"normal\"};\n text-align: ${(props) => props.textAlign || \"inherit\"};\n text-decoration: ${(props) => props.textDecoration || \"none\"};\n`;\n\nexport const Text: React.FC<TextProps> = ({\n style,\n className,\n id,\n role,\n testID,\n \"data-testid\": dataTestId,\n numberOfLines: _numberOfLines,\n ...props\n}) => {\n return (\n <StyledText\n {...props}\n style={style}\n className={className}\n id={id}\n role={role}\n data-testid={dataTestId || testID}\n />\n );\n};\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledIcon = styled(FilteredDiv)<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n testID,\n \"data-testid\": dataTestId,\n ...props\n}) => {\n return (\n <StyledIcon data-testid={dataTestId || testID} {...props}>\n {children}\n </StyledIcon>\n );\n};\n","import React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { InputPrimitiveProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredInput = createFilteredElement(\"input\");\n\nconst StyledInput = styled(FilteredInput)<InputPrimitiveProps>`\n background: transparent;\n border: none;\n outline: none;\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n color: ${(props) => props.color || \"inherit\"};\n font-size: ${(props) =>\n typeof props.fontSize === \"number\"\n ? `${props.fontSize}px`\n : props.fontSize || \"inherit\"};\n font-family: ${(props) =>\n props.fontFamily ||\n '\"Aktiv Grotesk\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif'};\n text-align: inherit;\n\n &::placeholder {\n color: ${(props) =>\n props.placeholderTextColor || \"rgba(255, 255, 255, 0.5)\"};\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n /* Override browser autofill background */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 1000px transparent inset !important;\n -webkit-background-clip: text !important;\n -webkit-text-fill-color: ${(props) => props.color || \"inherit\"} !important;\n }\n`;\n\nexport const InputPrimitive = forwardRef<HTMLInputElement, InputPrimitiveProps>(\n (\n {\n value,\n placeholder,\n onChange,\n onChangeText,\n onFocus,\n onBlur,\n onKeyDown,\n disabled,\n secureTextEntry,\n style,\n color,\n fontSize,\n fontFamily,\n placeholderTextColor,\n maxLength,\n name,\n type,\n inputMode,\n autoComplete,\n id,\n \"aria-invalid\": ariaInvalid,\n \"aria-describedby\": ariaDescribedBy,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel,\n \"aria-disabled\": ariaDisabled,\n \"data-testid\": dataTestId,\n testID,\n ...rest\n },\n ref\n ) => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n }\n if (onChangeText) {\n onChangeText(e.target.value);\n }\n };\n\n // Always pass value to make it a controlled input\n const inputValue = value !== undefined ? value : \"\";\n\n return (\n <StyledInput\n ref={ref}\n id={id}\n value={inputValue}\n name={name}\n placeholder={placeholder}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n disabled={disabled}\n type={secureTextEntry ? \"password\" : type || \"text\"}\n inputMode={inputMode}\n autoComplete={autoComplete}\n style={style}\n color={color}\n fontSize={fontSize}\n fontFamily={fontFamily}\n placeholderTextColor={placeholderTextColor}\n maxLength={maxLength}\n aria-invalid={ariaInvalid}\n aria-describedby={ariaDescribedBy}\n aria-labelledby={ariaLabelledBy}\n aria-label={ariaLabel}\n aria-disabled={ariaDisabled}\n data-testid={dataTestId || testID}\n {...rest}\n />\n );\n }\n);\n\nInputPrimitive.displayName = \"InputPrimitive\";\n","export * from \"./Box\";\nexport * from \"./Text\";\nexport * from \"./Spinner\";\nexport * from \"./Icon\";\nexport * from \"./Divider\";\nexport * from \"./Input\";\nexport * from \"./TextArea\";\nexport * from \"./LinearGradient\";\n\nexport const isWeb = true;\nexport const isNative = false;\n"],"mappings":"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","names":["React","React","styled","jsx","styled","styled","jsx","FilteredDiv","styled","styled","jsx","styled","jsx"]}