@xsolla/xui-game-card 0.133.0 → 0.134.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsolla/xui-game-card",
3
- "version": "0.133.0",
3
+ "version": "0.134.0",
4
4
  "main": "./web/index.js",
5
5
  "module": "./web/index.mjs",
6
6
  "types": "./web/index.d.ts",
@@ -14,8 +14,8 @@
14
14
  "test:coverage": "vitest run --coverage"
15
15
  },
16
16
  "dependencies": {
17
- "@xsolla/xui-core": "0.133.0",
18
- "@xsolla/xui-primitives-core": "0.133.0"
17
+ "@xsolla/xui-core": "0.134.0",
18
+ "@xsolla/xui-primitives-core": "0.134.0"
19
19
  },
20
20
  "peerDependencies": {
21
21
  "react": ">=16.8.0",
package/web/index.js CHANGED
@@ -35,117 +35,10 @@ __export(index_exports, {
35
35
  module.exports = __toCommonJS(index_exports);
36
36
 
37
37
  // ../primitives-web/src/Box.tsx
38
- var import_react2 = __toESM(require("react"));
39
- var import_styled_components = __toESM(require("styled-components"));
40
-
41
- // ../primitives-web/src/filterDOMProps.ts
42
38
  var import_react = __toESM(require("react"));
43
- var NON_HTML_PROPS = /* @__PURE__ */ new Set([
44
- // BoxProps — layout & styling
45
- "backgroundColor",
46
- "borderColor",
47
- "borderWidth",
48
- "borderBottomWidth",
49
- "borderBottomColor",
50
- "borderTopWidth",
51
- "borderTopColor",
52
- "borderLeftWidth",
53
- "borderLeftColor",
54
- "borderRightWidth",
55
- "borderRightColor",
56
- "borderRadius",
57
- "borderStyle",
58
- "flexDirection",
59
- "flexWrap",
60
- "alignItems",
61
- "justifyContent",
62
- "alignSelf",
63
- "flex",
64
- "flexShrink",
65
- "gap",
66
- "position",
67
- "top",
68
- "bottom",
69
- "left",
70
- "right",
71
- "outline",
72
- "overflow",
73
- "overflowX",
74
- "overflowY",
75
- "zIndex",
76
- "cursor",
77
- "padding",
78
- "paddingHorizontal",
79
- "paddingVertical",
80
- "paddingTop",
81
- "paddingBottom",
82
- "paddingLeft",
83
- "paddingRight",
84
- "margin",
85
- "marginTop",
86
- "marginBottom",
87
- "marginLeft",
88
- "marginRight",
89
- "minWidth",
90
- "minHeight",
91
- "maxWidth",
92
- "maxHeight",
93
- "hoverStyle",
94
- "pressStyle",
95
- "focusStyle",
96
- "outlineColor",
97
- "outlineWidth",
98
- "outlineOffset",
99
- "outlineStyle",
100
- // BoxProps — RN-only
101
- "onPress",
102
- "onLayout",
103
- "onMoveShouldSetResponder",
104
- "onResponderGrant",
105
- "onResponderMove",
106
- "onResponderRelease",
107
- "onResponderTerminate",
108
- "testID",
109
- // Box — custom element type
110
- "elementType",
111
- // TextProps
112
- "fontSize",
113
- "fontWeight",
114
- "fontFamily",
115
- "lineHeight",
116
- "whiteSpace",
117
- "textAlign",
118
- "textDecoration",
119
- "numberOfLines",
120
- "letterSpacing",
121
- "textTransform",
122
- // SpinnerProps
123
- "strokeWidth",
124
- // DividerProps
125
- "vertical",
126
- "dashStroke"
127
- ]);
128
- function createFilteredElement(defaultTag) {
129
- const Component = import_react.default.forwardRef(
130
- ({ children, elementType, ...props }, ref) => {
131
- const Tag = elementType || defaultTag;
132
- const htmlProps = {};
133
- for (const key of Object.keys(props)) {
134
- if (!NON_HTML_PROPS.has(key)) {
135
- htmlProps[key] = props[key];
136
- }
137
- }
138
- return import_react.default.createElement(Tag, { ref, ...htmlProps }, children);
139
- }
140
- );
141
- Component.displayName = `Filtered(${defaultTag})`;
142
- return Component;
143
- }
144
-
145
- // ../primitives-web/src/Box.tsx
39
+ var import_styled_components = __toESM(require("styled-components"));
146
40
  var import_jsx_runtime = require("react/jsx-runtime");
147
- var FilteredDiv = createFilteredElement("div");
148
- var StyledBox = (0, import_styled_components.default)(FilteredDiv)`
41
+ var StyledBox = import_styled_components.default.div`
149
42
  display: flex;
150
43
  box-sizing: border-box;
151
44
  background-color: ${(props) => props.backgroundColor || "transparent"};
@@ -232,7 +125,7 @@ var StyledBox = (0, import_styled_components.default)(FilteredDiv)`
232
125
  ${(props) => props.pressStyle?.backgroundColor && `background-color: ${props.pressStyle.backgroundColor};`}
233
126
  }
234
127
  `;
235
- var Box = import_react2.default.forwardRef(
128
+ var Box = import_react.default.forwardRef(
236
129
  ({
237
130
  children,
238
131
  onPress,
@@ -284,7 +177,7 @@ var Box = import_react2.default.forwardRef(
284
177
  StyledBox,
285
178
  {
286
179
  ref,
287
- elementType: as,
180
+ as,
288
181
  id,
289
182
  type: as === "button" ? type || "button" : void 0,
290
183
  disabled: as === "button" ? disabled : void 0,
@@ -315,8 +208,7 @@ Box.displayName = "Box";
315
208
  // ../primitives-web/src/Text.tsx
316
209
  var import_styled_components2 = __toESM(require("styled-components"));
317
210
  var import_jsx_runtime2 = require("react/jsx-runtime");
318
- var FilteredSpan = createFilteredElement("span");
319
- var StyledText = (0, import_styled_components2.default)(FilteredSpan)`
211
+ var StyledText = import_styled_components2.default.span`
320
212
  color: ${(props) => props.color || "inherit"};
321
213
  font-size: ${(props) => typeof props.fontSize === "number" ? `${props.fontSize}px` : props.fontSize || "inherit"};
322
214
  font-weight: ${(props) => props.fontWeight || "normal"};
package/web/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.tsx","../../../primitives-web/src/Box.tsx","../../../primitives-web/src/filterDOMProps.ts","../../../primitives-web/src/Text.tsx","../../../primitives-web/src/LinearGradient.tsx","../../src/GameCard.tsx"],"sourcesContent":["export * from \"./GameCard\";\nexport * from \"./types\";\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 type,\n disabled,\n id,\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 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 }}\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 {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\n\n// Props from BoxProps, TextProps, SpinnerProps, IconProps, DividerProps\n// that are NOT valid HTML attributes and must not reach the DOM.\nexport const NON_HTML_PROPS = new Set([\n // BoxProps — layout & styling\n \"backgroundColor\",\n \"borderColor\",\n \"borderWidth\",\n \"borderBottomWidth\",\n \"borderBottomColor\",\n \"borderTopWidth\",\n \"borderTopColor\",\n \"borderLeftWidth\",\n \"borderLeftColor\",\n \"borderRightWidth\",\n \"borderRightColor\",\n \"borderRadius\",\n \"borderStyle\",\n \"flexDirection\",\n \"flexWrap\",\n \"alignItems\",\n \"justifyContent\",\n \"alignSelf\",\n \"flex\",\n \"flexShrink\",\n \"gap\",\n \"position\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\",\n \"outline\",\n \"overflow\",\n \"overflowX\",\n \"overflowY\",\n \"zIndex\",\n \"cursor\",\n \"padding\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"hoverStyle\",\n \"pressStyle\",\n \"focusStyle\",\n \"outlineColor\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineStyle\",\n // BoxProps — RN-only\n \"onPress\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n \"testID\",\n // Box — custom element type\n \"elementType\",\n // TextProps\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"lineHeight\",\n \"whiteSpace\",\n \"textAlign\",\n \"textDecoration\",\n \"numberOfLines\",\n \"letterSpacing\",\n \"textTransform\",\n // SpinnerProps\n \"strokeWidth\",\n // DividerProps\n \"vertical\",\n \"dashStroke\",\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 * 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, any>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = elementType || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (!NON_HTML_PROPS.has(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(Tag, { ref, ...htmlProps }, children);\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\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 type { LinearGradientProps } from \"@xsolla/xui-primitives-core\";\n\nfunction buildCssGradient(\n colors: string[],\n start: { x: number; y: number },\n end: { x: number; y: number },\n locations?: number[]\n): string {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.round((Math.atan2(dx, -dy) * 180) / Math.PI);\n\n const stops = colors\n .map((color, i) => {\n const pct = locations\n ? locations[i] * 100\n : (i / (colors.length - 1)) * 100;\n return `${color} ${pct}%`;\n })\n .join(\", \");\n\n return `linear-gradient(${angle}deg, ${stops})`;\n}\n\nconst StyledGradient = styled.div<{ $gradient: string }>`\n background: ${(props) => props.$gradient};\n`;\n\nexport const LinearGradient: React.FC<LinearGradientProps> = ({\n colors,\n start = { x: 0, y: 0 },\n end = { x: 0, y: 1 },\n locations,\n children,\n position,\n top,\n bottom,\n left,\n right,\n width,\n height,\n borderRadius,\n overflow,\n zIndex,\n style,\n \"data-testid\": dataTestId,\n}) => {\n const gradient = buildCssGradient(colors, start, end, locations);\n\n const containerStyle: React.CSSProperties = {\n position: position || undefined,\n top: typeof top === \"number\" ? `${top}px` : top,\n bottom: typeof bottom === \"number\" ? `${bottom}px` : bottom,\n left: typeof left === \"number\" ? `${left}px` : left,\n right: typeof right === \"number\" ? `${right}px` : right,\n width: typeof width === \"number\" ? `${width}px` : width,\n height: typeof height === \"number\" ? `${height}px` : height,\n borderRadius:\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius,\n overflow,\n zIndex,\n ...style,\n };\n\n return (\n <StyledGradient\n $gradient={gradient}\n style={containerStyle}\n data-testid={dataTestId}\n >\n {children}\n </StyledGradient>\n );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, LinearGradient } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, isWeb } from \"@xsolla/xui-core\";\nimport type { GameCardProps, GameCardSize } from \"./types\";\n\nconst getSizeConfig = (size: GameCardSize) => {\n switch (size) {\n case \"lg\":\n return {\n imageAspectRatio: 366 / 206,\n titleFontSize: 16,\n titleLineHeight: 20,\n subtitleFontSize: 12,\n subtitleLineHeight: 18,\n padding: 8,\n footerPadding: 12,\n footerGap: 12,\n tagGap: 4,\n buttonHeight: 32,\n buttonPaddingX: 20,\n buttonFontSize: 12,\n buttonLineHeight: 14,\n borderRadius: 8,\n fadeHeight: 64,\n };\n case \"md\":\n return {\n imageAspectRatio: 280 / 158,\n titleFontSize: 14,\n titleLineHeight: 18,\n subtitleFontSize: 11,\n subtitleLineHeight: 16,\n padding: 6,\n footerPadding: 8,\n footerGap: 8,\n tagGap: 3,\n buttonHeight: 28,\n buttonPaddingX: 16,\n buttonFontSize: 11,\n buttonLineHeight: 13,\n borderRadius: 8,\n fadeHeight: 48,\n };\n case \"sm\":\n return {\n imageAspectRatio: 200 / 113,\n titleFontSize: 12,\n titleLineHeight: 16,\n subtitleFontSize: 10,\n subtitleLineHeight: 14,\n padding: 4,\n footerPadding: 6,\n footerGap: 6,\n tagGap: 2,\n buttonHeight: 24,\n buttonPaddingX: 12,\n buttonFontSize: 10,\n buttonLineHeight: 12,\n borderRadius: 8,\n fadeHeight: 32,\n };\n }\n};\n\nexport const GameCard: React.FC<GameCardProps> = ({\n image,\n title,\n subtitle,\n size = \"lg\",\n badge,\n tagsTopLeft,\n tagsTopRight,\n trailing,\n buttonText,\n onButtonClick,\n buttonDisabled,\n onPress,\n imageAlt,\n className,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const config = getSizeConfig(size);\n\n const wrapperProps = onPress ? { onPress } : {};\n\n return (\n <Box\n className={className}\n flexDirection=\"column\"\n width=\"100%\"\n {...wrapperProps}\n >\n <Box\n backgroundColor={theme.colors.background.primary}\n borderRadius={config.borderRadius}\n overflow=\"hidden\"\n flexDirection=\"column\"\n style={\n isWeb\n ? {\n boxShadow: theme.shadow.surface,\n borderRadius: `${config.borderRadius}px`,\n overflow: \"hidden\",\n }\n : {\n shadowColor: \"#070708\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 6,\n elevation: 4,\n borderRadius: config.borderRadius,\n overflow: \"hidden\",\n }\n }\n >\n {/* Image Container */}\n <Box\n position=\"relative\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{\n aspectRatio: config.imageAspectRatio,\n borderTopLeftRadius: config.borderRadius,\n borderTopRightRadius: config.borderRadius,\n }}\n >\n <Box\n as=\"img\"\n src={image}\n alt={imageAlt || title}\n position=\"absolute\"\n top={0}\n left={0}\n width=\"100%\"\n height=\"100%\"\n style={isWeb ? { objectFit: \"cover\" } : undefined}\n />\n\n <LinearGradient\n colors={[\"transparent\", \"rgba(0, 0, 0, 0.48)\"]}\n start={{ x: 0, y: 0 }}\n end={{ x: 0, y: 1 }}\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n height={config.fadeHeight}\n />\n\n {(badge || tagsTopLeft) && (\n <Box\n position=\"absolute\"\n top={config.padding}\n left={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-start\"\n >\n {badge}\n {tagsTopLeft}\n </Box>\n )}\n\n {tagsTopRight && (\n <Box\n position=\"absolute\"\n top={config.padding}\n right={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-end\"\n >\n {tagsTopRight}\n </Box>\n )}\n </Box>\n\n {/* Card Footer */}\n <Box\n backgroundColor={theme.colors.overlay.mono}\n padding={config.footerPadding}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={config.footerGap}\n >\n <Box flex={1} flexDirection=\"column\" style={{ minWidth: 0 }}>\n <Text\n color={theme.colors.content.primary}\n fontSize={config.titleFontSize}\n lineHeight={config.titleLineHeight}\n fontWeight=\"500\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {title}\n </Text>\n {subtitle && (\n <Text\n color={theme.colors.content.tertiary}\n fontSize={config.subtitleFontSize}\n lineHeight={config.subtitleLineHeight}\n fontWeight=\"400\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {subtitle}\n </Text>\n )}\n </Box>\n\n {trailing}\n {!trailing && buttonText && (\n <Box\n onPress={buttonDisabled ? undefined : onButtonClick}\n backgroundColor={theme.colors.control.mono.secondary.bg}\n borderRadius={config.borderRadius}\n height={config.buttonHeight}\n paddingHorizontal={config.buttonPaddingX}\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={buttonDisabled ? 0.4 : 1}\n style={\n isWeb\n ? {\n backdropFilter: \"blur(30px)\",\n WebkitBackdropFilter: \"blur(30px)\",\n border: `1px solid ${theme.colors.control.mono.secondary.border}`,\n cursor: buttonDisabled\n ? \"not-allowed\"\n : onButtonClick\n ? \"pointer\"\n : \"default\",\n }\n : undefined\n }\n >\n <Text\n color={theme.colors.control.mono.text.secondary}\n fontSize={config.buttonFontSize}\n lineHeight={config.buttonLineHeight}\n fontWeight=\"500\"\n letterSpacing={0.4}\n >\n {buttonText}\n </Text>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n"],"mappings":"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","names":["import_react","React","styled","React","import_styled_components","import_jsx_runtime","styled","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/index.tsx","../../../primitives-web/src/Box.tsx","../../../primitives-web/src/Text.tsx","../../../primitives-web/src/LinearGradient.tsx","../../src/GameCard.tsx"],"sourcesContent":["export * from \"./GameCard\";\nexport * from \"./types\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledBox = styled.div<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 type,\n disabled,\n id,\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 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 }}\n />\n );\n }\n\n return (\n <StyledBox\n ref={ref}\n as={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 {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledText = styled.span<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 type { LinearGradientProps } from \"@xsolla/xui-primitives-core\";\n\nfunction buildCssGradient(\n colors: string[],\n start: { x: number; y: number },\n end: { x: number; y: number },\n locations?: number[]\n): string {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.round((Math.atan2(dx, -dy) * 180) / Math.PI);\n\n const stops = colors\n .map((color, i) => {\n const pct = locations\n ? locations[i] * 100\n : (i / (colors.length - 1)) * 100;\n return `${color} ${pct}%`;\n })\n .join(\", \");\n\n return `linear-gradient(${angle}deg, ${stops})`;\n}\n\nconst StyledGradient = styled.div<{ $gradient: string }>`\n background: ${(props) => props.$gradient};\n`;\n\nexport const LinearGradient: React.FC<LinearGradientProps> = ({\n colors,\n start = { x: 0, y: 0 },\n end = { x: 0, y: 1 },\n locations,\n children,\n position,\n top,\n bottom,\n left,\n right,\n width,\n height,\n borderRadius,\n overflow,\n zIndex,\n style,\n \"data-testid\": dataTestId,\n}) => {\n const gradient = buildCssGradient(colors, start, end, locations);\n\n const containerStyle: React.CSSProperties = {\n position: position || undefined,\n top: typeof top === \"number\" ? `${top}px` : top,\n bottom: typeof bottom === \"number\" ? `${bottom}px` : bottom,\n left: typeof left === \"number\" ? `${left}px` : left,\n right: typeof right === \"number\" ? `${right}px` : right,\n width: typeof width === \"number\" ? `${width}px` : width,\n height: typeof height === \"number\" ? `${height}px` : height,\n borderRadius:\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius,\n overflow,\n zIndex,\n ...style,\n };\n\n return (\n <StyledGradient\n $gradient={gradient}\n style={containerStyle}\n data-testid={dataTestId}\n >\n {children}\n </StyledGradient>\n );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, LinearGradient } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, isWeb } from \"@xsolla/xui-core\";\nimport type { GameCardProps, GameCardSize } from \"./types\";\n\nconst getSizeConfig = (size: GameCardSize) => {\n switch (size) {\n case \"lg\":\n return {\n imageAspectRatio: 366 / 206,\n titleFontSize: 16,\n titleLineHeight: 20,\n subtitleFontSize: 12,\n subtitleLineHeight: 18,\n padding: 8,\n footerPadding: 12,\n footerGap: 12,\n tagGap: 4,\n buttonHeight: 32,\n buttonPaddingX: 20,\n buttonFontSize: 12,\n buttonLineHeight: 14,\n borderRadius: 8,\n fadeHeight: 64,\n };\n case \"md\":\n return {\n imageAspectRatio: 280 / 158,\n titleFontSize: 14,\n titleLineHeight: 18,\n subtitleFontSize: 11,\n subtitleLineHeight: 16,\n padding: 6,\n footerPadding: 8,\n footerGap: 8,\n tagGap: 3,\n buttonHeight: 28,\n buttonPaddingX: 16,\n buttonFontSize: 11,\n buttonLineHeight: 13,\n borderRadius: 8,\n fadeHeight: 48,\n };\n case \"sm\":\n return {\n imageAspectRatio: 200 / 113,\n titleFontSize: 12,\n titleLineHeight: 16,\n subtitleFontSize: 10,\n subtitleLineHeight: 14,\n padding: 4,\n footerPadding: 6,\n footerGap: 6,\n tagGap: 2,\n buttonHeight: 24,\n buttonPaddingX: 12,\n buttonFontSize: 10,\n buttonLineHeight: 12,\n borderRadius: 8,\n fadeHeight: 32,\n };\n }\n};\n\nexport const GameCard: React.FC<GameCardProps> = ({\n image,\n title,\n subtitle,\n size = \"lg\",\n badge,\n tagsTopLeft,\n tagsTopRight,\n trailing,\n buttonText,\n onButtonClick,\n buttonDisabled,\n onPress,\n imageAlt,\n className,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const config = getSizeConfig(size);\n\n const wrapperProps = onPress ? { onPress } : {};\n\n return (\n <Box\n className={className}\n flexDirection=\"column\"\n width=\"100%\"\n {...wrapperProps}\n >\n <Box\n backgroundColor={theme.colors.background.primary}\n borderRadius={config.borderRadius}\n overflow=\"hidden\"\n flexDirection=\"column\"\n style={\n isWeb\n ? {\n boxShadow: theme.shadow.surface,\n borderRadius: `${config.borderRadius}px`,\n overflow: \"hidden\",\n }\n : {\n shadowColor: \"#070708\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 6,\n elevation: 4,\n borderRadius: config.borderRadius,\n overflow: \"hidden\",\n }\n }\n >\n {/* Image Container */}\n <Box\n position=\"relative\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{\n aspectRatio: config.imageAspectRatio,\n borderTopLeftRadius: config.borderRadius,\n borderTopRightRadius: config.borderRadius,\n }}\n >\n <Box\n as=\"img\"\n src={image}\n alt={imageAlt || title}\n position=\"absolute\"\n top={0}\n left={0}\n width=\"100%\"\n height=\"100%\"\n style={isWeb ? { objectFit: \"cover\" } : undefined}\n />\n\n <LinearGradient\n colors={[\"transparent\", \"rgba(0, 0, 0, 0.48)\"]}\n start={{ x: 0, y: 0 }}\n end={{ x: 0, y: 1 }}\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n height={config.fadeHeight}\n />\n\n {(badge || tagsTopLeft) && (\n <Box\n position=\"absolute\"\n top={config.padding}\n left={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-start\"\n >\n {badge}\n {tagsTopLeft}\n </Box>\n )}\n\n {tagsTopRight && (\n <Box\n position=\"absolute\"\n top={config.padding}\n right={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-end\"\n >\n {tagsTopRight}\n </Box>\n )}\n </Box>\n\n {/* Card Footer */}\n <Box\n backgroundColor={theme.colors.overlay.mono}\n padding={config.footerPadding}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={config.footerGap}\n >\n <Box flex={1} flexDirection=\"column\" style={{ minWidth: 0 }}>\n <Text\n color={theme.colors.content.primary}\n fontSize={config.titleFontSize}\n lineHeight={config.titleLineHeight}\n fontWeight=\"500\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {title}\n </Text>\n {subtitle && (\n <Text\n color={theme.colors.content.tertiary}\n fontSize={config.subtitleFontSize}\n lineHeight={config.subtitleLineHeight}\n fontWeight=\"400\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {subtitle}\n </Text>\n )}\n </Box>\n\n {trailing}\n {!trailing && buttonText && (\n <Box\n onPress={buttonDisabled ? undefined : onButtonClick}\n backgroundColor={theme.colors.control.mono.secondary.bg}\n borderRadius={config.borderRadius}\n height={config.buttonHeight}\n paddingHorizontal={config.buttonPaddingX}\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={buttonDisabled ? 0.4 : 1}\n style={\n isWeb\n ? {\n backdropFilter: \"blur(30px)\",\n WebkitBackdropFilter: \"blur(30px)\",\n border: `1px solid ${theme.colors.control.mono.secondary.border}`,\n cursor: buttonDisabled\n ? \"not-allowed\"\n : onButtonClick\n ? \"pointer\"\n : \"default\",\n }\n : undefined\n }\n >\n <Text\n color={theme.colors.control.mono.text.secondary}\n fontSize={config.buttonFontSize}\n lineHeight={config.buttonLineHeight}\n fontWeight=\"500\"\n letterSpacing={0.4}\n >\n {buttonText}\n </Text>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n"],"mappings":"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","names":["styled","React","import_styled_components","import_jsx_runtime","styled","import_styled_components","import_jsx_runtime","styled","import_jsx_runtime"]}
package/web/index.mjs CHANGED
@@ -1,115 +1,8 @@
1
1
  // ../primitives-web/src/Box.tsx
2
- import React2 from "react";
3
- import styled from "styled-components";
4
-
5
- // ../primitives-web/src/filterDOMProps.ts
6
2
  import React from "react";
7
- var NON_HTML_PROPS = /* @__PURE__ */ new Set([
8
- // BoxProps — layout & styling
9
- "backgroundColor",
10
- "borderColor",
11
- "borderWidth",
12
- "borderBottomWidth",
13
- "borderBottomColor",
14
- "borderTopWidth",
15
- "borderTopColor",
16
- "borderLeftWidth",
17
- "borderLeftColor",
18
- "borderRightWidth",
19
- "borderRightColor",
20
- "borderRadius",
21
- "borderStyle",
22
- "flexDirection",
23
- "flexWrap",
24
- "alignItems",
25
- "justifyContent",
26
- "alignSelf",
27
- "flex",
28
- "flexShrink",
29
- "gap",
30
- "position",
31
- "top",
32
- "bottom",
33
- "left",
34
- "right",
35
- "outline",
36
- "overflow",
37
- "overflowX",
38
- "overflowY",
39
- "zIndex",
40
- "cursor",
41
- "padding",
42
- "paddingHorizontal",
43
- "paddingVertical",
44
- "paddingTop",
45
- "paddingBottom",
46
- "paddingLeft",
47
- "paddingRight",
48
- "margin",
49
- "marginTop",
50
- "marginBottom",
51
- "marginLeft",
52
- "marginRight",
53
- "minWidth",
54
- "minHeight",
55
- "maxWidth",
56
- "maxHeight",
57
- "hoverStyle",
58
- "pressStyle",
59
- "focusStyle",
60
- "outlineColor",
61
- "outlineWidth",
62
- "outlineOffset",
63
- "outlineStyle",
64
- // BoxProps — RN-only
65
- "onPress",
66
- "onLayout",
67
- "onMoveShouldSetResponder",
68
- "onResponderGrant",
69
- "onResponderMove",
70
- "onResponderRelease",
71
- "onResponderTerminate",
72
- "testID",
73
- // Box — custom element type
74
- "elementType",
75
- // TextProps
76
- "fontSize",
77
- "fontWeight",
78
- "fontFamily",
79
- "lineHeight",
80
- "whiteSpace",
81
- "textAlign",
82
- "textDecoration",
83
- "numberOfLines",
84
- "letterSpacing",
85
- "textTransform",
86
- // SpinnerProps
87
- "strokeWidth",
88
- // DividerProps
89
- "vertical",
90
- "dashStroke"
91
- ]);
92
- function createFilteredElement(defaultTag) {
93
- const Component = React.forwardRef(
94
- ({ children, elementType, ...props }, ref) => {
95
- const Tag = elementType || defaultTag;
96
- const htmlProps = {};
97
- for (const key of Object.keys(props)) {
98
- if (!NON_HTML_PROPS.has(key)) {
99
- htmlProps[key] = props[key];
100
- }
101
- }
102
- return React.createElement(Tag, { ref, ...htmlProps }, children);
103
- }
104
- );
105
- Component.displayName = `Filtered(${defaultTag})`;
106
- return Component;
107
- }
108
-
109
- // ../primitives-web/src/Box.tsx
3
+ import styled from "styled-components";
110
4
  import { jsx } from "react/jsx-runtime";
111
- var FilteredDiv = createFilteredElement("div");
112
- var StyledBox = styled(FilteredDiv)`
5
+ var StyledBox = styled.div`
113
6
  display: flex;
114
7
  box-sizing: border-box;
115
8
  background-color: ${(props) => props.backgroundColor || "transparent"};
@@ -196,7 +89,7 @@ var StyledBox = styled(FilteredDiv)`
196
89
  ${(props) => props.pressStyle?.backgroundColor && `background-color: ${props.pressStyle.backgroundColor};`}
197
90
  }
198
91
  `;
199
- var Box = React2.forwardRef(
92
+ var Box = React.forwardRef(
200
93
  ({
201
94
  children,
202
95
  onPress,
@@ -248,7 +141,7 @@ var Box = React2.forwardRef(
248
141
  StyledBox,
249
142
  {
250
143
  ref,
251
- elementType: as,
144
+ as,
252
145
  id,
253
146
  type: as === "button" ? type || "button" : void 0,
254
147
  disabled: as === "button" ? disabled : void 0,
@@ -279,8 +172,7 @@ Box.displayName = "Box";
279
172
  // ../primitives-web/src/Text.tsx
280
173
  import styled2 from "styled-components";
281
174
  import { jsx as jsx2 } from "react/jsx-runtime";
282
- var FilteredSpan = createFilteredElement("span");
283
- var StyledText = styled2(FilteredSpan)`
175
+ var StyledText = styled2.span`
284
176
  color: ${(props) => props.color || "inherit"};
285
177
  font-size: ${(props) => typeof props.fontSize === "number" ? `${props.fontSize}px` : props.fontSize || "inherit"};
286
178
  font-weight: ${(props) => props.fontWeight || "normal"};
package/web/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../primitives-web/src/Box.tsx","../../../primitives-web/src/filterDOMProps.ts","../../../primitives-web/src/Text.tsx","../../../primitives-web/src/LinearGradient.tsx","../../src/GameCard.tsx"],"sourcesContent":["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 type,\n disabled,\n id,\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 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 }}\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 {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\n\n// Props from BoxProps, TextProps, SpinnerProps, IconProps, DividerProps\n// that are NOT valid HTML attributes and must not reach the DOM.\nexport const NON_HTML_PROPS = new Set([\n // BoxProps — layout & styling\n \"backgroundColor\",\n \"borderColor\",\n \"borderWidth\",\n \"borderBottomWidth\",\n \"borderBottomColor\",\n \"borderTopWidth\",\n \"borderTopColor\",\n \"borderLeftWidth\",\n \"borderLeftColor\",\n \"borderRightWidth\",\n \"borderRightColor\",\n \"borderRadius\",\n \"borderStyle\",\n \"flexDirection\",\n \"flexWrap\",\n \"alignItems\",\n \"justifyContent\",\n \"alignSelf\",\n \"flex\",\n \"flexShrink\",\n \"gap\",\n \"position\",\n \"top\",\n \"bottom\",\n \"left\",\n \"right\",\n \"outline\",\n \"overflow\",\n \"overflowX\",\n \"overflowY\",\n \"zIndex\",\n \"cursor\",\n \"padding\",\n \"paddingHorizontal\",\n \"paddingVertical\",\n \"paddingTop\",\n \"paddingBottom\",\n \"paddingLeft\",\n \"paddingRight\",\n \"margin\",\n \"marginTop\",\n \"marginBottom\",\n \"marginLeft\",\n \"marginRight\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"hoverStyle\",\n \"pressStyle\",\n \"focusStyle\",\n \"outlineColor\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineStyle\",\n // BoxProps — RN-only\n \"onPress\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n \"testID\",\n // Box — custom element type\n \"elementType\",\n // TextProps\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"lineHeight\",\n \"whiteSpace\",\n \"textAlign\",\n \"textDecoration\",\n \"numberOfLines\",\n \"letterSpacing\",\n \"textTransform\",\n // SpinnerProps\n \"strokeWidth\",\n // DividerProps\n \"vertical\",\n \"dashStroke\",\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 * 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, any>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = elementType || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (!NON_HTML_PROPS.has(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(Tag, { ref, ...htmlProps }, children);\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\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 type { LinearGradientProps } from \"@xsolla/xui-primitives-core\";\n\nfunction buildCssGradient(\n colors: string[],\n start: { x: number; y: number },\n end: { x: number; y: number },\n locations?: number[]\n): string {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.round((Math.atan2(dx, -dy) * 180) / Math.PI);\n\n const stops = colors\n .map((color, i) => {\n const pct = locations\n ? locations[i] * 100\n : (i / (colors.length - 1)) * 100;\n return `${color} ${pct}%`;\n })\n .join(\", \");\n\n return `linear-gradient(${angle}deg, ${stops})`;\n}\n\nconst StyledGradient = styled.div<{ $gradient: string }>`\n background: ${(props) => props.$gradient};\n`;\n\nexport const LinearGradient: React.FC<LinearGradientProps> = ({\n colors,\n start = { x: 0, y: 0 },\n end = { x: 0, y: 1 },\n locations,\n children,\n position,\n top,\n bottom,\n left,\n right,\n width,\n height,\n borderRadius,\n overflow,\n zIndex,\n style,\n \"data-testid\": dataTestId,\n}) => {\n const gradient = buildCssGradient(colors, start, end, locations);\n\n const containerStyle: React.CSSProperties = {\n position: position || undefined,\n top: typeof top === \"number\" ? `${top}px` : top,\n bottom: typeof bottom === \"number\" ? `${bottom}px` : bottom,\n left: typeof left === \"number\" ? `${left}px` : left,\n right: typeof right === \"number\" ? `${right}px` : right,\n width: typeof width === \"number\" ? `${width}px` : width,\n height: typeof height === \"number\" ? `${height}px` : height,\n borderRadius:\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius,\n overflow,\n zIndex,\n ...style,\n };\n\n return (\n <StyledGradient\n $gradient={gradient}\n style={containerStyle}\n data-testid={dataTestId}\n >\n {children}\n </StyledGradient>\n );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, LinearGradient } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, isWeb } from \"@xsolla/xui-core\";\nimport type { GameCardProps, GameCardSize } from \"./types\";\n\nconst getSizeConfig = (size: GameCardSize) => {\n switch (size) {\n case \"lg\":\n return {\n imageAspectRatio: 366 / 206,\n titleFontSize: 16,\n titleLineHeight: 20,\n subtitleFontSize: 12,\n subtitleLineHeight: 18,\n padding: 8,\n footerPadding: 12,\n footerGap: 12,\n tagGap: 4,\n buttonHeight: 32,\n buttonPaddingX: 20,\n buttonFontSize: 12,\n buttonLineHeight: 14,\n borderRadius: 8,\n fadeHeight: 64,\n };\n case \"md\":\n return {\n imageAspectRatio: 280 / 158,\n titleFontSize: 14,\n titleLineHeight: 18,\n subtitleFontSize: 11,\n subtitleLineHeight: 16,\n padding: 6,\n footerPadding: 8,\n footerGap: 8,\n tagGap: 3,\n buttonHeight: 28,\n buttonPaddingX: 16,\n buttonFontSize: 11,\n buttonLineHeight: 13,\n borderRadius: 8,\n fadeHeight: 48,\n };\n case \"sm\":\n return {\n imageAspectRatio: 200 / 113,\n titleFontSize: 12,\n titleLineHeight: 16,\n subtitleFontSize: 10,\n subtitleLineHeight: 14,\n padding: 4,\n footerPadding: 6,\n footerGap: 6,\n tagGap: 2,\n buttonHeight: 24,\n buttonPaddingX: 12,\n buttonFontSize: 10,\n buttonLineHeight: 12,\n borderRadius: 8,\n fadeHeight: 32,\n };\n }\n};\n\nexport const GameCard: React.FC<GameCardProps> = ({\n image,\n title,\n subtitle,\n size = \"lg\",\n badge,\n tagsTopLeft,\n tagsTopRight,\n trailing,\n buttonText,\n onButtonClick,\n buttonDisabled,\n onPress,\n imageAlt,\n className,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const config = getSizeConfig(size);\n\n const wrapperProps = onPress ? { onPress } : {};\n\n return (\n <Box\n className={className}\n flexDirection=\"column\"\n width=\"100%\"\n {...wrapperProps}\n >\n <Box\n backgroundColor={theme.colors.background.primary}\n borderRadius={config.borderRadius}\n overflow=\"hidden\"\n flexDirection=\"column\"\n style={\n isWeb\n ? {\n boxShadow: theme.shadow.surface,\n borderRadius: `${config.borderRadius}px`,\n overflow: \"hidden\",\n }\n : {\n shadowColor: \"#070708\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 6,\n elevation: 4,\n borderRadius: config.borderRadius,\n overflow: \"hidden\",\n }\n }\n >\n {/* Image Container */}\n <Box\n position=\"relative\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{\n aspectRatio: config.imageAspectRatio,\n borderTopLeftRadius: config.borderRadius,\n borderTopRightRadius: config.borderRadius,\n }}\n >\n <Box\n as=\"img\"\n src={image}\n alt={imageAlt || title}\n position=\"absolute\"\n top={0}\n left={0}\n width=\"100%\"\n height=\"100%\"\n style={isWeb ? { objectFit: \"cover\" } : undefined}\n />\n\n <LinearGradient\n colors={[\"transparent\", \"rgba(0, 0, 0, 0.48)\"]}\n start={{ x: 0, y: 0 }}\n end={{ x: 0, y: 1 }}\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n height={config.fadeHeight}\n />\n\n {(badge || tagsTopLeft) && (\n <Box\n position=\"absolute\"\n top={config.padding}\n left={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-start\"\n >\n {badge}\n {tagsTopLeft}\n </Box>\n )}\n\n {tagsTopRight && (\n <Box\n position=\"absolute\"\n top={config.padding}\n right={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-end\"\n >\n {tagsTopRight}\n </Box>\n )}\n </Box>\n\n {/* Card Footer */}\n <Box\n backgroundColor={theme.colors.overlay.mono}\n padding={config.footerPadding}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={config.footerGap}\n >\n <Box flex={1} flexDirection=\"column\" style={{ minWidth: 0 }}>\n <Text\n color={theme.colors.content.primary}\n fontSize={config.titleFontSize}\n lineHeight={config.titleLineHeight}\n fontWeight=\"500\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {title}\n </Text>\n {subtitle && (\n <Text\n color={theme.colors.content.tertiary}\n fontSize={config.subtitleFontSize}\n lineHeight={config.subtitleLineHeight}\n fontWeight=\"400\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {subtitle}\n </Text>\n )}\n </Box>\n\n {trailing}\n {!trailing && buttonText && (\n <Box\n onPress={buttonDisabled ? undefined : onButtonClick}\n backgroundColor={theme.colors.control.mono.secondary.bg}\n borderRadius={config.borderRadius}\n height={config.buttonHeight}\n paddingHorizontal={config.buttonPaddingX}\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={buttonDisabled ? 0.4 : 1}\n style={\n isWeb\n ? {\n backdropFilter: \"blur(30px)\",\n WebkitBackdropFilter: \"blur(30px)\",\n border: `1px solid ${theme.colors.control.mono.secondary.border}`,\n cursor: buttonDisabled\n ? \"not-allowed\"\n : onButtonClick\n ? \"pointer\"\n : \"default\",\n }\n : undefined\n }\n >\n <Text\n color={theme.colors.control.mono.text.secondary}\n fontSize={config.buttonFontSize}\n lineHeight={config.buttonLineHeight}\n fontWeight=\"500\"\n letterSpacing={0.4}\n >\n {buttonText}\n </Text>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n"],"mappings":"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","names":["React","React","styled","jsx","styled","styled","jsx","jsx"]}
1
+ {"version":3,"sources":["../../../primitives-web/src/Box.tsx","../../../primitives-web/src/Text.tsx","../../../primitives-web/src/LinearGradient.tsx","../../src/GameCard.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"styled-components\";\nimport type { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledBox = styled.div<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 type,\n disabled,\n id,\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 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 }}\n />\n );\n }\n\n return (\n <StyledBox\n ref={ref}\n as={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 {...props}\n >\n {children}\n </StyledBox>\n );\n }\n);\n\nBox.displayName = \"Box\";\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst StyledText = styled.span<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 type { LinearGradientProps } from \"@xsolla/xui-primitives-core\";\n\nfunction buildCssGradient(\n colors: string[],\n start: { x: number; y: number },\n end: { x: number; y: number },\n locations?: number[]\n): string {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const angle = Math.round((Math.atan2(dx, -dy) * 180) / Math.PI);\n\n const stops = colors\n .map((color, i) => {\n const pct = locations\n ? locations[i] * 100\n : (i / (colors.length - 1)) * 100;\n return `${color} ${pct}%`;\n })\n .join(\", \");\n\n return `linear-gradient(${angle}deg, ${stops})`;\n}\n\nconst StyledGradient = styled.div<{ $gradient: string }>`\n background: ${(props) => props.$gradient};\n`;\n\nexport const LinearGradient: React.FC<LinearGradientProps> = ({\n colors,\n start = { x: 0, y: 0 },\n end = { x: 0, y: 1 },\n locations,\n children,\n position,\n top,\n bottom,\n left,\n right,\n width,\n height,\n borderRadius,\n overflow,\n zIndex,\n style,\n \"data-testid\": dataTestId,\n}) => {\n const gradient = buildCssGradient(colors, start, end, locations);\n\n const containerStyle: React.CSSProperties = {\n position: position || undefined,\n top: typeof top === \"number\" ? `${top}px` : top,\n bottom: typeof bottom === \"number\" ? `${bottom}px` : bottom,\n left: typeof left === \"number\" ? `${left}px` : left,\n right: typeof right === \"number\" ? `${right}px` : right,\n width: typeof width === \"number\" ? `${width}px` : width,\n height: typeof height === \"number\" ? `${height}px` : height,\n borderRadius:\n typeof borderRadius === \"number\" ? `${borderRadius}px` : borderRadius,\n overflow,\n zIndex,\n ...style,\n };\n\n return (\n <StyledGradient\n $gradient={gradient}\n style={containerStyle}\n data-testid={dataTestId}\n >\n {children}\n </StyledGradient>\n );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, LinearGradient } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, isWeb } from \"@xsolla/xui-core\";\nimport type { GameCardProps, GameCardSize } from \"./types\";\n\nconst getSizeConfig = (size: GameCardSize) => {\n switch (size) {\n case \"lg\":\n return {\n imageAspectRatio: 366 / 206,\n titleFontSize: 16,\n titleLineHeight: 20,\n subtitleFontSize: 12,\n subtitleLineHeight: 18,\n padding: 8,\n footerPadding: 12,\n footerGap: 12,\n tagGap: 4,\n buttonHeight: 32,\n buttonPaddingX: 20,\n buttonFontSize: 12,\n buttonLineHeight: 14,\n borderRadius: 8,\n fadeHeight: 64,\n };\n case \"md\":\n return {\n imageAspectRatio: 280 / 158,\n titleFontSize: 14,\n titleLineHeight: 18,\n subtitleFontSize: 11,\n subtitleLineHeight: 16,\n padding: 6,\n footerPadding: 8,\n footerGap: 8,\n tagGap: 3,\n buttonHeight: 28,\n buttonPaddingX: 16,\n buttonFontSize: 11,\n buttonLineHeight: 13,\n borderRadius: 8,\n fadeHeight: 48,\n };\n case \"sm\":\n return {\n imageAspectRatio: 200 / 113,\n titleFontSize: 12,\n titleLineHeight: 16,\n subtitleFontSize: 10,\n subtitleLineHeight: 14,\n padding: 4,\n footerPadding: 6,\n footerGap: 6,\n tagGap: 2,\n buttonHeight: 24,\n buttonPaddingX: 12,\n buttonFontSize: 10,\n buttonLineHeight: 12,\n borderRadius: 8,\n fadeHeight: 32,\n };\n }\n};\n\nexport const GameCard: React.FC<GameCardProps> = ({\n image,\n title,\n subtitle,\n size = \"lg\",\n badge,\n tagsTopLeft,\n tagsTopRight,\n trailing,\n buttonText,\n onButtonClick,\n buttonDisabled,\n onPress,\n imageAlt,\n className,\n themeMode,\n themeProductContext,\n}) => {\n const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n const config = getSizeConfig(size);\n\n const wrapperProps = onPress ? { onPress } : {};\n\n return (\n <Box\n className={className}\n flexDirection=\"column\"\n width=\"100%\"\n {...wrapperProps}\n >\n <Box\n backgroundColor={theme.colors.background.primary}\n borderRadius={config.borderRadius}\n overflow=\"hidden\"\n flexDirection=\"column\"\n style={\n isWeb\n ? {\n boxShadow: theme.shadow.surface,\n borderRadius: `${config.borderRadius}px`,\n overflow: \"hidden\",\n }\n : {\n shadowColor: \"#070708\",\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 6,\n elevation: 4,\n borderRadius: config.borderRadius,\n overflow: \"hidden\",\n }\n }\n >\n {/* Image Container */}\n <Box\n position=\"relative\"\n width=\"100%\"\n overflow=\"hidden\"\n style={{\n aspectRatio: config.imageAspectRatio,\n borderTopLeftRadius: config.borderRadius,\n borderTopRightRadius: config.borderRadius,\n }}\n >\n <Box\n as=\"img\"\n src={image}\n alt={imageAlt || title}\n position=\"absolute\"\n top={0}\n left={0}\n width=\"100%\"\n height=\"100%\"\n style={isWeb ? { objectFit: \"cover\" } : undefined}\n />\n\n <LinearGradient\n colors={[\"transparent\", \"rgba(0, 0, 0, 0.48)\"]}\n start={{ x: 0, y: 0 }}\n end={{ x: 0, y: 1 }}\n position=\"absolute\"\n bottom={0}\n left={0}\n right={0}\n height={config.fadeHeight}\n />\n\n {(badge || tagsTopLeft) && (\n <Box\n position=\"absolute\"\n top={config.padding}\n left={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-start\"\n >\n {badge}\n {tagsTopLeft}\n </Box>\n )}\n\n {tagsTopRight && (\n <Box\n position=\"absolute\"\n top={config.padding}\n right={config.padding}\n flexDirection=\"column\"\n gap={config.tagGap}\n alignItems=\"flex-end\"\n >\n {tagsTopRight}\n </Box>\n )}\n </Box>\n\n {/* Card Footer */}\n <Box\n backgroundColor={theme.colors.overlay.mono}\n padding={config.footerPadding}\n flexDirection=\"row\"\n alignItems=\"center\"\n gap={config.footerGap}\n >\n <Box flex={1} flexDirection=\"column\" style={{ minWidth: 0 }}>\n <Text\n color={theme.colors.content.primary}\n fontSize={config.titleFontSize}\n lineHeight={config.titleLineHeight}\n fontWeight=\"500\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {title}\n </Text>\n {subtitle && (\n <Text\n color={theme.colors.content.tertiary}\n fontSize={config.subtitleFontSize}\n lineHeight={config.subtitleLineHeight}\n fontWeight=\"400\"\n numberOfLines={1}\n style={\n isWeb\n ? {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }\n : undefined\n }\n >\n {subtitle}\n </Text>\n )}\n </Box>\n\n {trailing}\n {!trailing && buttonText && (\n <Box\n onPress={buttonDisabled ? undefined : onButtonClick}\n backgroundColor={theme.colors.control.mono.secondary.bg}\n borderRadius={config.borderRadius}\n height={config.buttonHeight}\n paddingHorizontal={config.buttonPaddingX}\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={buttonDisabled ? 0.4 : 1}\n style={\n isWeb\n ? {\n backdropFilter: \"blur(30px)\",\n WebkitBackdropFilter: \"blur(30px)\",\n border: `1px solid ${theme.colors.control.mono.secondary.border}`,\n cursor: buttonDisabled\n ? \"not-allowed\"\n : onButtonClick\n ? \"pointer\"\n : \"default\",\n }\n : undefined\n }\n >\n <Text\n color={theme.colors.control.mono.text.secondary}\n fontSize={config.buttonFontSize}\n lineHeight={config.buttonLineHeight}\n fontWeight=\"500\"\n letterSpacing={0.4}\n >\n {buttonText}\n </Text>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n"],"mappings":";AAAA,OAAO,WAAW;AAClB,OAAO,YAAY;AA+MX;AA5MR,IAAM,YAAY,OAAO;AAAA;AAAA;AAAA,sBAGH,CAAC,UAAU,MAAM,mBAAmB,aAAa;AAAA,kBACrD,CAAC,UAAU,MAAM,eAAe,aAAa;AAAA,kBAC7C,CAAC,UACf,OAAO,MAAM,gBAAgB,WACzB,GAAG,MAAM,WAAW,OACpB,MAAM,eAAe,CAAC;AAAA;AAAA,IAE1B,CAAC,UACD,MAAM,sBAAsB,UAC5B;AAAA,2BACuB,OAAO,MAAM,sBAAsB,WAAW,GAAG,MAAM,iBAAiB,OAAO,MAAM,iBAAiB;AAAA,2BACtG,MAAM,qBAAqB,MAAM,eAAe,aAAa;AAAA;AAAA,GAErF;AAAA,IACC,CAAC,UACD,MAAM,mBAAmB,UACzB;AAAA,wBACoB,OAAO,MAAM,mBAAmB,WAAW,GAAG,MAAM,cAAc,OAAO,MAAM,cAAc;AAAA,wBAC7F,MAAM,kBAAkB,MAAM,eAAe,aAAa;AAAA;AAAA,GAE/E;AAAA,IACC,CAAC,UACD,MAAM,oBAAoB,UAC1B;AAAA,yBACqB,OAAO,MAAM,oBAAoB,WAAW,GAAG,MAAM,eAAe,OAAO,MAAM,eAAe;AAAA,yBAChG,MAAM,mBAAmB,MAAM,eAAe,aAAa;AAAA;AAAA,GAEjF;AAAA,IACC,CAAC,UACD,MAAM,qBAAqB,UAC3B;AAAA,0BACsB,OAAO,MAAM,qBAAqB,WAAW,GAAG,MAAM,gBAAgB,OAAO,MAAM,gBAAgB;AAAA,0BACnG,MAAM,oBAAoB,MAAM,eAAe,aAAa;AAAA;AAAA,GAEnF;AAAA;AAAA,kBAEe,CAAC,UACf,MAAM,gBACL,MAAM,eACP,MAAM,qBACN,MAAM,kBACN,MAAM,mBACN,MAAM,mBACF,UACA,OAAO;AAAA,mBACI,CAAC,UAChB,OAAO,MAAM,iBAAiB,WAC1B,GAAG,MAAM,YAAY,OACrB,MAAM,gBAAgB,CAAC;AAAA,YACnB,CAAC,UACT,OAAO,MAAM,WAAW,WACpB,GAAG,MAAM,MAAM,OACf,MAAM,UAAU,MAAM;AAAA,WACnB,CAAC,UACR,OAAO,MAAM,UAAU,WACnB,GAAG,MAAM,KAAK,OACd,MAAM,SAAS,MAAM;AAAA,eACd,CAAC,UACZ,OAAO,MAAM,aAAa,WACtB,GAAG,MAAM,QAAQ,OACjB,MAAM,YAAY,MAAM;AAAA,gBAChB,CAAC,UACb,OAAO,MAAM,cAAc,WACvB,GAAG,MAAM,SAAS,OAClB,MAAM,aAAa,MAAM;AAAA,eAClB,CAAC,UACZ,OAAO,MAAM,aAAa,WACtB,GAAG,MAAM,QAAQ,OACjB,MAAM,YAAY,MAAM;AAAA,gBAChB,CAAC,UACb,OAAO,MAAM,cAAc,WACvB,GAAG,MAAM,SAAS,OAClB,MAAM,aAAa,MAAM;AAAA;AAAA,aAEpB,CAAC,UACV,OAAO,MAAM,YAAY,WACrB,GAAG,MAAM,OAAO,OAChB,MAAM,WAAW,CAAC;AAAA,IACtB,CAAC,UACD,MAAM,qBACN;AAAA,oBACgB,OAAO,MAAM,sBAAsB,WAAW,GAAG,MAAM,iBAAiB,OAAO,MAAM,iBAAiB;AAAA,qBACrG,OAAO,MAAM,sBAAsB,WAAW,GAAG,MAAM,iBAAiB,OAAO,MAAM,iBAAiB;AAAA,GACxH;AAAA,IACC,CAAC,UACD,MAAM,mBACN;AAAA,mBACe,OAAO,MAAM,oBAAoB,WAAW,GAAG,MAAM,eAAe,OAAO,MAAM,eAAe;AAAA,sBAC7F,OAAO,MAAM,oBAAoB,WAAW,GAAG,MAAM,eAAe,OAAO,MAAM,eAAe;AAAA,GACnH;AAAA,IACC,CAAC,UACD,MAAM,eAAe,UACrB,gBAAgB,OAAO,MAAM,eAAe,WAAW,GAAG,MAAM,UAAU,OAAO,MAAM,UAAU,GAAG;AAAA,IACpG,CAAC,UACD,MAAM,kBAAkB,UACxB,mBAAmB,OAAO,MAAM,kBAAkB,WAAW,GAAG,MAAM,aAAa,OAAO,MAAM,aAAa,GAAG;AAAA,IAChH,CAAC,UACD,MAAM,gBAAgB,UACtB,iBAAiB,OAAO,MAAM,gBAAgB,WAAW,GAAG,MAAM,WAAW,OAAO,MAAM,WAAW,GAAG;AAAA,IACxG,CAAC,UACD,MAAM,iBAAiB,UACvB,kBAAkB,OAAO,MAAM,iBAAiB,WAAW,GAAG,MAAM,YAAY,OAAO,MAAM,YAAY,GAAG;AAAA;AAAA,YAEpG,CAAC,UACT,OAAO,MAAM,WAAW,WAAW,GAAG,MAAM,MAAM,OAAO,MAAM,UAAU,CAAC;AAAA,IAC1E,CAAC,UACD,MAAM,cAAc,UACpB,eAAe,OAAO,MAAM,cAAc,WAAW,GAAG,MAAM,SAAS,OAAO,MAAM,SAAS,GAAG;AAAA,IAChG,CAAC,UACD,MAAM,iBAAiB,UACvB,kBAAkB,OAAO,MAAM,iBAAiB,WAAW,GAAG,MAAM,YAAY,OAAO,MAAM,YAAY,GAAG;AAAA,IAC5G,CAAC,UACD,MAAM,eAAe,UACrB,gBAAgB,OAAO,MAAM,eAAe,WAAW,GAAG,MAAM,UAAU,OAAO,MAAM,UAAU,GAAG;AAAA,IACpG,CAAC,UACD,MAAM,gBAAgB,UACtB,iBAAiB,OAAO,MAAM,gBAAgB,WAAW,GAAG,MAAM,WAAW,OAAO,MAAM,WAAW,GAAG;AAAA;AAAA,oBAExF,CAAC,UAAU,MAAM,iBAAiB,QAAQ;AAAA,eAC/C,CAAC,UAAU,MAAM,YAAY,QAAQ;AAAA,iBACnC,CAAC,UAAU,MAAM,cAAc,SAAS;AAAA,qBACpC,CAAC,UAAU,MAAM,kBAAkB,YAAY;AAAA,YACxD,CAAC,UACT,MAAM,SACF,MAAM,SACN,MAAM,WAAW,MAAM,UACrB,YACA,SAAS;AAAA,cACL,CAAC,UAAU,MAAM,YAAY,QAAQ;AAAA,SAC1C,CAAC,UACN,OAAO,MAAM,QAAQ,WAAW,GAAG,MAAM,GAAG,OAAO,MAAM,GAAG;AAAA,YACpD,CAAC,UACT,OAAO,MAAM,WAAW,WAAW,GAAG,MAAM,MAAM,OAAO,MAAM,MAAM;AAAA,UAC/D,CAAC,UACP,OAAO,MAAM,SAAS,WAAW,GAAG,MAAM,IAAI,OAAO,MAAM,IAAI;AAAA,WACxD,CAAC,UACR,OAAO,MAAM,UAAU,WAAW,GAAG,MAAM,KAAK,OAAO,MAAM,KAAK;AAAA,UAC5D,CAAC,UAAU,MAAM,IAAI;AAAA,iBACd,CAAC,UAAU,MAAM,cAAc,CAAC;AAAA,SACxC,CAAC,UACN,OAAO,MAAM,QAAQ,WAAW,GAAG,MAAM,GAAG,OAAO,MAAM,OAAO,CAAC;AAAA,gBACrD,CAAC,UAAU,MAAM,aAAa,MAAM;AAAA,cACtC,CAAC,UAAU,MAAM,YAAY,SAAS;AAAA,gBACpC,CAAC,UAAU,MAAM,aAAa,SAAS;AAAA,gBACvC,CAAC,UAAU,MAAM,aAAa,SAAS;AAAA,aAC1C,CAAC,UAAU,MAAM,MAAM;AAAA,aACvB,CAAC,UAAW,MAAM,WAAW,MAAM,CAAE;AAAA,oBAC9B,CAAC,UAAW,MAAM,WAAW,SAAS,MAAO;AAAA;AAAA;AAAA,MAG3D,CAAC,UACD,MAAM,YAAY,mBAClB,qBAAqB,MAAM,WAAW,eAAe,GAAG;AAAA,MACxD,CAAC,UACD,MAAM,YAAY,eAClB,iBAAiB,MAAM,WAAW,WAAW,GAAG;AAAA;AAAA;AAAA;AAAA,MAIhD,CAAC,UACD,MAAM,YAAY,mBAClB,qBAAqB,MAAM,WAAW,eAAe,GAAG;AAAA;AAAA;AAIvD,IAAM,MAAM,MAAM;AAAA,EAIvB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,aAAa;AAAA,IACb,oBAAoB;AAAA,IACpB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AAEH,QAAI,OAAO,SAAS,KAAK;AACvB,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,KAAK,OAAO;AAAA,UACZ,OAAO;AAAA,YACL,SAAS;AAAA,YACT,WAAW;AAAA,YACX,OACE,OAAO,MAAM,UAAU,WACnB,GAAG,MAAM,KAAK,OACd,MAAM;AAAA,YACZ,QACE,OAAO,MAAM,WAAW,WACpB,GAAG,MAAM,MAAM,OACf,MAAM;AAAA,YACZ,cACE,OAAO,MAAM,iBAAiB,WAC1B,GAAG,MAAM,YAAY,OACrB,MAAM;AAAA,YACZ,UAAU,MAAM;AAAA,YAChB,KAAK,OAAO,MAAM,QAAQ,WAAW,GAAG,MAAM,GAAG,OAAO,MAAM;AAAA,YAC9D,MACE,OAAO,MAAM,SAAS,WAAW,GAAG,MAAM,IAAI,OAAO,MAAM;AAAA,YAC7D,OACE,OAAO,MAAM,UAAU,WACnB,GAAG,MAAM,KAAK,OACd,MAAM;AAAA,YACZ,QACE,OAAO,MAAM,WAAW,WACpB,GAAG,MAAM,MAAM,OACf,MAAM;AAAA,UACd;AAAA;AAAA,MACF;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM,OAAO,WAAW,QAAQ,WAAW;AAAA,QAC3C,UAAU,OAAO,WAAW,WAAW;AAAA,QACvC,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA,cAAY;AAAA,QACZ,mBAAiB;AAAA,QACjB,gBAAc;AAAA,QACd,iBAAe;AAAA,QACf,aAAW;AAAA,QACX,oBAAkB;AAAA,QAClB,iBAAe;AAAA,QACf,iBAAe;AAAA,QACf,gBAAc;AAAA,QACd,iBAAe;AAAA,QACf,aAAW;AAAA,QACX,UAAU,aAAa,SAAY,WAAW;AAAA,QAC7C,GAAG;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AACF;AAEA,IAAI,cAAc;;;ACjRlB,OAAOA,aAAY;AA+Bf,gBAAAC,YAAA;AA5BJ,IAAM,aAAaD,QAAO;AAAA,WACf,CAAC,UAAU,MAAM,SAAS,SAAS;AAAA,eAC/B,CAAC,UACZ,OAAO,MAAM,aAAa,WACtB,GAAG,MAAM,QAAQ,OACjB,MAAM,YAAY,SAAS;AAAA,iBAClB,CAAC,UAAU,MAAM,cAAc,QAAQ;AAAA,iBACvC,CAAC,UACd,MAAM,cACN,sGAAsG;AAAA,iBACzF,CAAC,UACd,OAAO,MAAM,eAAe,WACxB,GAAG,MAAM,UAAU,OACnB,MAAM,cAAc,SAAS;AAAA,iBACpB,CAAC,UAAU,MAAM,cAAc,QAAQ;AAAA,gBACxC,CAAC,UAAU,MAAM,aAAa,SAAS;AAAA,qBAClC,CAAC,UAAU,MAAM,kBAAkB,MAAM;AAAA;AAGvD,IAAM,OAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,MAAM;AACJ,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;;;ACvCA,OAAOC,aAAY;AAkEf,gBAAAC,YAAA;AA/DJ,SAAS,iBACP,QACA,OACA,KACA,WACQ;AACR,QAAM,KAAK,IAAI,IAAI,MAAM;AACzB,QAAM,KAAK,IAAI,IAAI,MAAM;AACzB,QAAM,QAAQ,KAAK,MAAO,KAAK,MAAM,IAAI,CAAC,EAAE,IAAI,MAAO,KAAK,EAAE;AAE9D,QAAM,QAAQ,OACX,IAAI,CAAC,OAAO,MAAM;AACjB,UAAM,MAAM,YACR,UAAU,CAAC,IAAI,MACd,KAAK,OAAO,SAAS,KAAM;AAChC,WAAO,GAAG,KAAK,IAAI,GAAG;AAAA,EACxB,CAAC,EACA,KAAK,IAAI;AAEZ,SAAO,mBAAmB,KAAK,QAAQ,KAAK;AAC9C;AAEA,IAAM,iBAAiBD,QAAO;AAAA,gBACd,CAAC,UAAU,MAAM,SAAS;AAAA;AAGnC,IAAM,iBAAgD,CAAC;AAAA,EAC5D;AAAA,EACA,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACrB,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AACjB,MAAM;AACJ,QAAM,WAAW,iBAAiB,QAAQ,OAAO,KAAK,SAAS;AAE/D,QAAM,iBAAsC;AAAA,IAC1C,UAAU,YAAY;AAAA,IACtB,KAAK,OAAO,QAAQ,WAAW,GAAG,GAAG,OAAO;AAAA,IAC5C,QAAQ,OAAO,WAAW,WAAW,GAAG,MAAM,OAAO;AAAA,IACrD,MAAM,OAAO,SAAS,WAAW,GAAG,IAAI,OAAO;AAAA,IAC/C,OAAO,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AAAA,IAClD,OAAO,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AAAA,IAClD,QAAQ,OAAO,WAAW,WAAW,GAAG,MAAM,OAAO;AAAA,IACrD,cACE,OAAO,iBAAiB,WAAW,GAAG,YAAY,OAAO;AAAA,IAC3D;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,eAAa;AAAA,MAEZ;AAAA;AAAA,EACH;AAEJ;;;ACxEA,SAAS,kBAAkB,aAAa;AA8H9B,gBAAAC,MAwBE,YAxBF;AA3HV,IAAM,gBAAgB,CAAC,SAAuB;AAC5C,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,QACL,kBAAkB,MAAM;AAAA,QACxB,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,SAAS;AAAA,QACT,eAAe;AAAA,QACf,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,YAAY;AAAA,MACd;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,kBAAkB,MAAM;AAAA,QACxB,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,SAAS;AAAA,QACT,eAAe;AAAA,QACf,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,YAAY;AAAA,MACd;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,kBAAkB,MAAM;AAAA,QACxB,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,kBAAkB;AAAA,QAClB,oBAAoB;AAAA,QACpB,SAAS;AAAA,QACT,eAAe;AAAA,QACf,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,cAAc;AAAA,QACd,gBAAgB;AAAA,QAChB,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,cAAc;AAAA,QACd,YAAY;AAAA,MACd;AAAA,EACJ;AACF;AAEO,IAAM,WAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,EAAE,MAAM,IAAI,iBAAiB,EAAE,WAAW,oBAAoB,CAAC;AACrE,QAAM,SAAS,cAAc,IAAI;AAEjC,QAAM,eAAe,UAAU,EAAE,QAAQ,IAAI,CAAC;AAE9C,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,eAAc;AAAA,MACd,OAAM;AAAA,MACL,GAAG;AAAA,MAEJ;AAAA,QAAC;AAAA;AAAA,UACC,iBAAiB,MAAM,OAAO,WAAW;AAAA,UACzC,cAAc,OAAO;AAAA,UACrB,UAAS;AAAA,UACT,eAAc;AAAA,UACd,OACE,QACI;AAAA,YACE,WAAW,MAAM,OAAO;AAAA,YACxB,cAAc,GAAG,OAAO,YAAY;AAAA,YACpC,UAAU;AAAA,UACZ,IACA;AAAA,YACE,aAAa;AAAA,YACb,cAAc,EAAE,OAAO,GAAG,QAAQ,EAAE;AAAA,YACpC,eAAe;AAAA,YACf,cAAc;AAAA,YACd,WAAW;AAAA,YACX,cAAc,OAAO;AAAA,YACrB,UAAU;AAAA,UACZ;AAAA,UAIN;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,UAAS;AAAA,gBACT,OAAM;AAAA,gBACN,UAAS;AAAA,gBACT,OAAO;AAAA,kBACL,aAAa,OAAO;AAAA,kBACpB,qBAAqB,OAAO;AAAA,kBAC5B,sBAAsB,OAAO;AAAA,gBAC/B;AAAA,gBAEA;AAAA,kCAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAG;AAAA,sBACH,KAAK;AAAA,sBACL,KAAK,YAAY;AAAA,sBACjB,UAAS;AAAA,sBACT,KAAK;AAAA,sBACL,MAAM;AAAA,sBACN,OAAM;AAAA,sBACN,QAAO;AAAA,sBACP,OAAO,QAAQ,EAAE,WAAW,QAAQ,IAAI;AAAA;AAAA,kBAC1C;AAAA,kBAEA,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,QAAQ,CAAC,eAAe,qBAAqB;AAAA,sBAC7C,OAAO,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,sBACpB,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE;AAAA,sBAClB,UAAS;AAAA,sBACT,QAAQ;AAAA,sBACR,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,QAAQ,OAAO;AAAA;AAAA,kBACjB;AAAA,mBAEE,SAAS,gBACT;AAAA,oBAAC;AAAA;AAAA,sBACC,UAAS;AAAA,sBACT,KAAK,OAAO;AAAA,sBACZ,MAAM,OAAO;AAAA,sBACb,eAAc;AAAA,sBACd,KAAK,OAAO;AAAA,sBACZ,YAAW;AAAA,sBAEV;AAAA;AAAA,wBACA;AAAA;AAAA;AAAA,kBACH;AAAA,kBAGD,gBACC,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,UAAS;AAAA,sBACT,KAAK,OAAO;AAAA,sBACZ,OAAO,OAAO;AAAA,sBACd,eAAc;AAAA,sBACd,KAAK,OAAO;AAAA,sBACZ,YAAW;AAAA,sBAEV;AAAA;AAAA,kBACH;AAAA;AAAA;AAAA,YAEJ;AAAA,YAGA;AAAA,cAAC;AAAA;AAAA,gBACC,iBAAiB,MAAM,OAAO,QAAQ;AAAA,gBACtC,SAAS,OAAO;AAAA,gBAChB,eAAc;AAAA,gBACd,YAAW;AAAA,gBACX,KAAK,OAAO;AAAA,gBAEZ;AAAA,uCAAC,OAAI,MAAM,GAAG,eAAc,UAAS,OAAO,EAAE,UAAU,EAAE,GACxD;AAAA,oCAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO,MAAM,OAAO,QAAQ;AAAA,wBAC5B,UAAU,OAAO;AAAA,wBACjB,YAAY,OAAO;AAAA,wBACnB,YAAW;AAAA,wBACX,eAAe;AAAA,wBACf,OACE,QACI;AAAA,0BACE,UAAU;AAAA,0BACV,cAAc;AAAA,0BACd,YAAY;AAAA,wBACd,IACA;AAAA,wBAGL;AAAA;AAAA,oBACH;AAAA,oBACC,YACC,gBAAAA;AAAA,sBAAC;AAAA;AAAA,wBACC,OAAO,MAAM,OAAO,QAAQ;AAAA,wBAC5B,UAAU,OAAO;AAAA,wBACjB,YAAY,OAAO;AAAA,wBACnB,YAAW;AAAA,wBACX,eAAe;AAAA,wBACf,OACE,QACI;AAAA,0BACE,UAAU;AAAA,0BACV,cAAc;AAAA,0BACd,YAAY;AAAA,wBACd,IACA;AAAA,wBAGL;AAAA;AAAA,oBACH;AAAA,qBAEJ;AAAA,kBAEC;AAAA,kBACA,CAAC,YAAY,cACZ,gBAAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAS,iBAAiB,SAAY;AAAA,sBACtC,iBAAiB,MAAM,OAAO,QAAQ,KAAK,UAAU;AAAA,sBACrD,cAAc,OAAO;AAAA,sBACrB,QAAQ,OAAO;AAAA,sBACf,mBAAmB,OAAO;AAAA,sBAC1B,YAAW;AAAA,sBACX,gBAAe;AAAA,sBACf,SAAS,iBAAiB,MAAM;AAAA,sBAChC,OACE,QACI;AAAA,wBACE,gBAAgB;AAAA,wBAChB,sBAAsB;AAAA,wBACtB,QAAQ,aAAa,MAAM,OAAO,QAAQ,KAAK,UAAU,MAAM;AAAA,wBAC/D,QAAQ,iBACJ,gBACA,gBACE,YACA;AAAA,sBACR,IACA;AAAA,sBAGN,0BAAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,OAAO,MAAM,OAAO,QAAQ,KAAK,KAAK;AAAA,0BACtC,UAAU,OAAO;AAAA,0BACjB,YAAY,OAAO;AAAA,0BACnB,YAAW;AAAA,0BACX,eAAe;AAAA,0BAEd;AAAA;AAAA,sBACH;AAAA;AAAA,kBACF;AAAA;AAAA;AAAA,YAEJ;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ;","names":["styled","jsx","styled","jsx","jsx"]}