@xsolla/xui-icons 0.158.0 → 0.159.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,14 +11,14 @@ npm install @xsolla/xui-icons
11
11
  ## Imports
12
12
 
13
13
  ```tsx
14
- import { Home, Settings, Search, Check, Bell } from '@xsolla/xui-icons';
14
+ import { Home, Settings, Search, Check, Bell } from "@xsolla/xui-icons";
15
15
  ```
16
16
 
17
17
  ## Quick start
18
18
 
19
19
  ```tsx
20
- import * as React from 'react';
21
- import { Home } from '@xsolla/xui-icons';
20
+ import * as React from "react";
21
+ import { Home } from "@xsolla/xui-icons";
22
22
 
23
23
  export default function QuickStart() {
24
24
  return <Home aria-hidden />;
@@ -33,12 +33,13 @@ For most product surfaces prefer `@xsolla/xui-icons-base` (500+ icons with `soli
33
33
 
34
34
  Each icon is a thin wrapper around `<Icon>` from `@xsolla/xui-primitives` containing a Lucide glyph rendered at `size="100%"`. Props are forwarded to `<Icon>`; refer to the primitives package for the authoritative prop list. Common props:
35
35
 
36
- | Prop | Type | Default | Description |
37
- | --- | --- | --- | --- |
38
- | `size` | `number \| string` | inherited from `<Icon>` | Outer icon size. The inner SVG always fills the container. |
39
- | `color` | `string` | theme default | Icon colour. |
40
- | `aria-label` | `string` | — | Accessible label. |
41
- | `aria-hidden` | `boolean` | — | Mark as decorative. |
36
+ | Prop | Type | Default | Description |
37
+ | ------------- | ------------------ | ----------------------- | ------------------------------------------------------------------------------------------------------------- |
38
+ | `testID` | `string` | — | Test ID for testing frameworks. On web this renders as `data-testid`; on React Native it renders as `testID`. |
39
+ | `size` | `number \| string` | inherited from `<Icon>` | Outer icon size. The inner SVG always fills the container. |
40
+ | `color` | `string` | theme default | Icon colour. |
41
+ | `aria-label` | `string` | — | Accessible label. |
42
+ | `aria-hidden` | `boolean` | — | Mark as decorative. |
42
43
 
43
44
  Additional props supported by `<Icon>` (e.g. `className`, `style`, test IDs) are passed through.
44
45
 
@@ -53,12 +54,12 @@ This package does not consume `ThemeOverrideProps` directly; theme awareness is
53
54
  ### Basic usage
54
55
 
55
56
  ```tsx
56
- import * as React from 'react';
57
- import { Home, Settings, User, Search } from '@xsolla/xui-icons';
57
+ import * as React from "react";
58
+ import { Home, Settings, User, Search } from "@xsolla/xui-icons";
58
59
 
59
60
  export default function Basic() {
60
61
  return (
61
- <div style={{ display: 'flex', gap: 16 }}>
62
+ <div style={{ display: "flex", gap: 16 }}>
62
63
  <Home aria-hidden />
63
64
  <Settings aria-hidden />
64
65
  <User aria-hidden />
@@ -71,12 +72,12 @@ export default function Basic() {
71
72
  ### Coloured icons
72
73
 
73
74
  ```tsx
74
- import * as React from 'react';
75
- import { Check, AlertCircle, X } from '@xsolla/xui-icons';
75
+ import * as React from "react";
76
+ import { Check, AlertCircle, X } from "@xsolla/xui-icons";
76
77
 
77
78
  export default function Coloured() {
78
79
  return (
79
- <div style={{ display: 'flex', gap: 16 }}>
80
+ <div style={{ display: "flex", gap: 16 }}>
80
81
  <Check color="#2ecc71" aria-hidden />
81
82
  <AlertCircle color="#f39c12" aria-hidden />
82
83
  <X color="#e74c3c" aria-hidden />
@@ -88,13 +89,13 @@ export default function Coloured() {
88
89
  ### With a button
89
90
 
90
91
  ```tsx
91
- import * as React from 'react';
92
- import { ArrowLeft, ArrowRight } from '@xsolla/xui-icons';
93
- import { Button } from '@xsolla/xui-button';
92
+ import * as React from "react";
93
+ import { ArrowLeft, ArrowRight } from "@xsolla/xui-icons";
94
+ import { Button } from "@xsolla/xui-button";
94
95
 
95
96
  export default function ButtonsWithIcons() {
96
97
  return (
97
- <div style={{ display: 'flex', gap: 16 }}>
98
+ <div style={{ display: "flex", gap: 16 }}>
98
99
  <Button iconLeft={<ArrowLeft />}>Back</Button>
99
100
  <Button iconRight={<ArrowRight />}>Continue</Button>
100
101
  </div>
package/native/index.js CHANGED
@@ -70,7 +70,13 @@ module.exports = __toCommonJS(index_exports);
70
70
  var import_react = __toESM(require("react"));
71
71
  var import_react_native = require("react-native");
72
72
  var import_jsx_runtime = require("react/jsx-runtime");
73
- var Icon = ({ children, color, size }) => {
73
+ var Icon = ({
74
+ children,
75
+ color,
76
+ size,
77
+ testID,
78
+ "data-testid": dataTestId
79
+ }) => {
74
80
  const style = {
75
81
  width: typeof size === "number" ? size : void 0,
76
82
  height: typeof size === "number" ? size : void 0,
@@ -87,7 +93,7 @@ var Icon = ({ children, color, size }) => {
87
93
  }
88
94
  return child;
89
95
  });
90
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, { style, children: childrenWithProps });
96
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, { style, testID: dataTestId || testID, children: childrenWithProps });
91
97
  };
92
98
 
93
99
  // src/index.tsx
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.tsx","../../../primitives-native/src/Icon.tsx"],"sourcesContent":["// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n","import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({ children, color, size }) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return <View style={style}>{childrenWithProps}</View>;\n};\n"],"mappings":"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","names":["React","import_jsx_runtime","LucideCheck","LucideX","LucideCopy","LucideEye","LucideEyeOff","LucideArrowLeft","LucideArrowRight","LucideSettings","LucideMinus","LucideAlertCircle","LucideCreditCard","LucideFlag","LucideCheckCircle","LucideZap","LucideClock","LucideChevronRight","LucidePlane","LucideMenu","LucideBell","LucideUser","LucideSearch","LucideHome","LucideShoppingCart","LucideGift","LucideTrophy","LucideBackpack","LucideHeadset","LucideShoppingBag","LucidePlus","LucideImage","LucideUpload","LucideFile","LucideInfo"]}
1
+ {"version":3,"sources":["../../src/index.tsx","../../../primitives-native/src/Icon.tsx"],"sourcesContent":["// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n","import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n color,\n size,\n testID,\n \"data-testid\": dataTestId,\n}) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return (\n <View style={style} testID={dataTestId || testID}>\n {childrenWithProps}\n </View>\n );\n};\n"],"mappings":"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","names":["React","import_jsx_runtime","LucideCheck","LucideX","LucideCopy","LucideEye","LucideEyeOff","LucideArrowLeft","LucideArrowRight","LucideSettings","LucideMinus","LucideAlertCircle","LucideCreditCard","LucideFlag","LucideCheckCircle","LucideZap","LucideClock","LucideChevronRight","LucidePlane","LucideMenu","LucideBell","LucideUser","LucideSearch","LucideHome","LucideShoppingCart","LucideGift","LucideTrophy","LucideBackpack","LucideHeadset","LucideShoppingBag","LucidePlus","LucideImage","LucideUpload","LucideFile","LucideInfo"]}
package/native/index.mjs CHANGED
@@ -2,7 +2,13 @@
2
2
  import React from "react";
3
3
  import { View } from "react-native";
4
4
  import { jsx } from "react/jsx-runtime";
5
- var Icon = ({ children, color, size }) => {
5
+ var Icon = ({
6
+ children,
7
+ color,
8
+ size,
9
+ testID,
10
+ "data-testid": dataTestId
11
+ }) => {
6
12
  const style = {
7
13
  width: typeof size === "number" ? size : void 0,
8
14
  height: typeof size === "number" ? size : void 0,
@@ -19,7 +25,7 @@ var Icon = ({ children, color, size }) => {
19
25
  }
20
26
  return child;
21
27
  });
22
- return /* @__PURE__ */ jsx(View, { style, children: childrenWithProps });
28
+ return /* @__PURE__ */ jsx(View, { style, testID: dataTestId || testID, children: childrenWithProps });
23
29
  };
24
30
 
25
31
  // src/index.tsx
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../primitives-native/src/Icon.tsx","../../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({ children, color, size }) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return <View style={style}>{childrenWithProps}</View>;\n};\n","// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n"],"mappings":"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","names":["jsx"]}
1
+ {"version":3,"sources":["../../../primitives-native/src/Icon.tsx","../../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n color,\n size,\n testID,\n \"data-testid\": dataTestId,\n}) => {\n const style: ViewStyle = {\n width: typeof size === \"number\" ? size : undefined,\n height: typeof size === \"number\" ? size : undefined,\n alignItems: \"center\",\n justifyContent: \"center\",\n };\n\n // On native, we try to pass the color down to children (like Text primitives)\n // to mimic the CSS inheritance behavior of the web version.\n const childrenWithProps = React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return React.cloneElement(child, {\n color: child.props.color || color,\n // Also pass size if child seems to be an icon that needs it\n size: child.props.size || size,\n });\n }\n return child;\n });\n\n return (\n <View style={style} testID={dataTestId || testID}>\n {childrenWithProps}\n </View>\n );\n};\n","// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n"],"mappings":"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","names":["jsx"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xsolla/xui-icons",
3
- "version": "0.158.0",
3
+ "version": "0.159.0",
4
4
  "main": "./web/index.js",
5
5
  "types": "./web/index.d.ts",
6
6
  "scripts": {
@@ -9,7 +9,7 @@
9
9
  "build:native": "PLATFORM=native tsup"
10
10
  },
11
11
  "dependencies": {
12
- "@xsolla/xui-primitives-core": "0.158.0",
12
+ "@xsolla/xui-primitives-core": "0.159.0",
13
13
  "lucide-react": "^0.470.0"
14
14
  },
15
15
  "peerDependencies": {
package/web/index.js CHANGED
@@ -154,8 +154,13 @@ var StyledIcon = (0, import_styled_components.default)(FilteredDiv)`
154
154
  stroke: currentColor;
155
155
  }
156
156
  `;
157
- var Icon = ({ children, ...props }) => {
158
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledIcon, { ...props, children });
157
+ var Icon = ({
158
+ children,
159
+ testID,
160
+ "data-testid": dataTestId,
161
+ ...props
162
+ }) => {
163
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StyledIcon, { "data-testid": dataTestId || testID, ...props, children });
159
164
  };
160
165
 
161
166
  // src/index.tsx
package/web/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.tsx","../../../primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../primitives-web/src/Icon.tsx"],"sourcesContent":["// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n","import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n // RN-only event handlers (pass isPropValid's on* pattern)\n \"onPress\",\n \"onChangeText\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n // SVG attributes that pass isPropValid\n \"strokeWidth\",\n // CSS properties that pass isPropValid but are used as component props\n \"overflow\",\n \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then: `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = (elementType as string) || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (shouldForwardProp(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(\n Tag,\n { ref, ...htmlProps },\n children as React.ReactNode\n );\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledIcon = styled(FilteredDiv)<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({ children, ...props }) => {\n return <StyledIcon {...props}>{children}</StyledIcon>;\n};\n"],"mappings":"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","names":["React","styled","import_jsx_runtime","LucideCheck","LucideX","LucideCopy","LucideEye","LucideEyeOff","LucideArrowLeft","LucideArrowRight","LucideSettings","LucideMinus","LucideAlertCircle","LucideCreditCard","LucideFlag","LucideCheckCircle","LucideZap","LucideClock","LucideChevronRight","LucidePlane","LucideMenu","LucideBell","LucideUser","LucideSearch","LucideHome","LucideShoppingCart","LucideGift","LucideTrophy","LucideBackpack","LucideHeadset","LucideShoppingBag","LucidePlus","LucideImage","LucideUpload","LucideFile","LucideInfo"]}
1
+ {"version":3,"sources":["../../src/index.tsx","../../../primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../primitives-web/src/Icon.tsx"],"sourcesContent":["// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n","import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n // RN-only event handlers (pass isPropValid's on* pattern)\n \"onPress\",\n \"onChangeText\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n // SVG attributes that pass isPropValid\n \"strokeWidth\",\n // CSS properties that pass isPropValid but are used as component props\n \"overflow\",\n \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then: `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = (elementType as string) || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (shouldForwardProp(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(\n Tag,\n { ref, ...htmlProps },\n children as React.ReactNode\n );\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledIcon = styled(FilteredDiv)<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n testID,\n \"data-testid\": dataTestId,\n ...props\n}) => {\n return (\n <StyledIcon data-testid={dataTestId || testID} {...props}>\n {children}\n </StyledIcon>\n );\n};\n"],"mappings":"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","names":["React","styled","import_jsx_runtime","LucideCheck","LucideX","LucideCopy","LucideEye","LucideEyeOff","LucideArrowLeft","LucideArrowRight","LucideSettings","LucideMinus","LucideAlertCircle","LucideCreditCard","LucideFlag","LucideCheckCircle","LucideZap","LucideClock","LucideChevronRight","LucidePlane","LucideMenu","LucideBell","LucideUser","LucideSearch","LucideHome","LucideShoppingCart","LucideGift","LucideTrophy","LucideBackpack","LucideHeadset","LucideShoppingBag","LucidePlus","LucideImage","LucideUpload","LucideFile","LucideInfo"]}
package/web/index.mjs CHANGED
@@ -86,8 +86,13 @@ var StyledIcon = styled(FilteredDiv)`
86
86
  stroke: currentColor;
87
87
  }
88
88
  `;
89
- var Icon = ({ children, ...props }) => {
90
- return /* @__PURE__ */ jsx(StyledIcon, { ...props, children });
89
+ var Icon = ({
90
+ children,
91
+ testID,
92
+ "data-testid": dataTestId,
93
+ ...props
94
+ }) => {
95
+ return /* @__PURE__ */ jsx(StyledIcon, { "data-testid": dataTestId || testID, ...props, children });
91
96
  };
92
97
 
93
98
  // src/index.tsx
package/web/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../primitives-web/src/Icon.tsx","../../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n // RN-only event handlers (pass isPropValid's on* pattern)\n \"onPress\",\n \"onChangeText\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n // SVG attributes that pass isPropValid\n \"strokeWidth\",\n // CSS properties that pass isPropValid but are used as component props\n \"overflow\",\n \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then: `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = (elementType as string) || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (shouldForwardProp(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(\n Tag,\n { ref, ...htmlProps },\n children as React.ReactNode\n );\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledIcon = styled(FilteredDiv)<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({ children, ...props }) => {\n return <StyledIcon {...props}>{children}</StyledIcon>;\n};\n","// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n"],"mappings":"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","names":["jsx"]}
1
+ {"version":3,"sources":["../../../primitives-web/src/filterDOMProps.ts","../../../../../node_modules/@emotion/memoize/dist/memoize.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.esm.js","../../../primitives-web/src/Icon.tsx","../../src/index.tsx"],"sourcesContent":["import React from \"react\";\nimport isPropValid from \"@emotion/is-prop-valid\";\n\n// Props that @emotion/is-prop-valid incorrectly treats as valid HTML.\n// These are React Native or component-specific props that match\n// valid HTML patterns (on* event handlers, SVG attributes).\nexport const ADDITIONAL_BLOCKED_PROPS = new Set([\n // RN-only event handlers (pass isPropValid's on* pattern)\n \"onPress\",\n \"onChangeText\",\n \"onLayout\",\n \"onMoveShouldSetResponder\",\n \"onResponderGrant\",\n \"onResponderMove\",\n \"onResponderRelease\",\n \"onResponderTerminate\",\n // SVG attributes that pass isPropValid\n \"strokeWidth\",\n // CSS properties that pass isPropValid but are used as component props\n \"overflow\",\n \"cursor\",\n \"fontSize\",\n \"fontWeight\",\n \"fontFamily\",\n \"textDecoration\",\n]);\n\nfunction shouldForwardProp(key: string): boolean {\n if (ADDITIONAL_BLOCKED_PROPS.has(key)) return false;\n return isPropValid(key);\n}\n\n/**\n * Creates a React component that renders the given HTML tag\n * but filters out non-HTML props before they reach the DOM.\n *\n * Uses @emotion/is-prop-valid (same library styled-components v4\n * uses internally) to automatically block invalid HTML attributes,\n * plus a small blocklist for false positives (RN on* handlers, SVG attrs).\n *\n * Usage: `const FilteredDiv = createFilteredElement(\"div\");`\n * Then: `const StyledBox = styled(FilteredDiv)<BoxProps>\\`...\\`;`\n *\n * styled-components can still read ALL props for CSS interpolation,\n * but only valid HTML attributes are forwarded to the DOM element.\n */\nexport function createFilteredElement(defaultTag: string) {\n const Component = React.forwardRef<HTMLElement, Record<string, unknown>>(\n ({ children, elementType, ...props }, ref) => {\n const Tag = (elementType as string) || defaultTag;\n const htmlProps: Record<string, unknown> = {};\n for (const key of Object.keys(props)) {\n if (shouldForwardProp(key)) {\n htmlProps[key] = props[key];\n }\n }\n return React.createElement(\n Tag,\n { ref, ...htmlProps },\n children as React.ReactNode\n );\n }\n );\n Component.displayName = `Filtered(${defaultTag})`;\n return Component;\n}\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\nimport { createFilteredElement } from \"./filterDOMProps\";\n\nconst FilteredDiv = createFilteredElement(\"div\");\n\nconst StyledIcon = styled(FilteredDiv)<IconProps>`\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n height: ${(props) =>\n typeof props.size === \"number\" ? `${props.size}px` : props.size || \"24px\"};\n color: ${(props) => props.color || \"currentColor\"};\n\n svg {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: currentColor;\n }\n`;\n\nexport const Icon: React.FC<IconProps> = ({\n children,\n testID,\n \"data-testid\": dataTestId,\n ...props\n}) => {\n return (\n <StyledIcon data-testid={dataTestId || testID} {...props}>\n {children}\n </StyledIcon>\n );\n};\n","// @ts-expect-error - this will be resolved at build time\nimport { Icon } from \"@xsolla/xui-primitives\";\nimport type { IconProps } from \"@xsolla/xui-primitives-core\";\nimport {\n Check as LucideCheck,\n X as LucideX,\n Copy as LucideCopy,\n Eye as LucideEye,\n EyeOff as LucideEyeOff,\n ArrowLeft as LucideArrowLeft,\n ArrowRight as LucideArrowRight,\n Settings as LucideSettings,\n Minus as LucideMinus,\n AlertCircle as LucideAlertCircle,\n CreditCard as LucideCreditCard,\n Flag as LucideFlag,\n CircleCheck as LucideCheckCircle,\n Zap as LucideZap,\n Clock as LucideClock,\n ChevronRight as LucideChevronRight,\n Plane as LucidePlane,\n Menu as LucideMenu,\n Bell as LucideBell,\n User as LucideUser,\n Search as LucideSearch,\n Home as LucideHome,\n ShoppingCart as LucideShoppingCart,\n Gift as LucideGift,\n Trophy as LucideTrophy,\n Backpack as LucideBackpack,\n Headset as LucideHeadset,\n ShoppingBag as LucideShoppingBag,\n Plus as LucidePlus,\n Image as LucideImage,\n Upload as LucideUpload,\n File as LucideFile,\n Info as LucideInfo,\n} from \"lucide-icon-platform\";\n\n// Icons use \"100%\" size to scale with the Icon container wrapper\nexport const Check = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheck size=\"100%\" />\n </Icon>\n);\n\nexport const X = (props: IconProps) => (\n <Icon {...props}>\n <LucideX size=\"100%\" />\n </Icon>\n);\n\nexport const Copy = (props: IconProps) => (\n <Icon {...props}>\n <LucideCopy size=\"100%\" />\n </Icon>\n);\n\nexport const Eye = (props: IconProps) => (\n <Icon {...props}>\n <LucideEye size=\"100%\" />\n </Icon>\n);\n\nexport const EyeOff = (props: IconProps) => (\n <Icon {...props}>\n <LucideEyeOff size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowLeft = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowLeft size=\"100%\" />\n </Icon>\n);\n\nexport const ArrowRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideArrowRight size=\"100%\" />\n </Icon>\n);\n\nexport const Settings = (props: IconProps) => (\n <Icon {...props}>\n <LucideSettings size=\"100%\" />\n </Icon>\n);\n\nexport const Minus = (props: IconProps) => (\n <Icon {...props}>\n <LucideMinus size=\"100%\" />\n </Icon>\n);\n\nexport const AlertCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideAlertCircle size=\"100%\" />\n </Icon>\n);\n\nexport const CreditCard = (props: IconProps) => (\n <Icon {...props}>\n <LucideCreditCard size=\"100%\" />\n </Icon>\n);\n\nexport const Flag = (props: IconProps) => (\n <Icon {...props}>\n <LucideFlag size=\"100%\" />\n </Icon>\n);\n\nexport const CheckCircle = (props: IconProps) => (\n <Icon {...props}>\n <LucideCheckCircle size=\"100%\" />\n </Icon>\n);\n\nexport const Zap = (props: IconProps) => (\n <Icon {...props}>\n <LucideZap size=\"100%\" />\n </Icon>\n);\n\nexport const Clock = (props: IconProps) => (\n <Icon {...props}>\n <LucideClock size=\"100%\" />\n </Icon>\n);\n\nexport const ChevronRight = (props: IconProps) => (\n <Icon {...props}>\n <LucideChevronRight size=\"100%\" />\n </Icon>\n);\n\nexport const Plane = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlane size=\"100%\" />\n </Icon>\n);\n\nexport const Menu = (props: IconProps) => (\n <Icon {...props}>\n <LucideMenu size=\"100%\" />\n </Icon>\n);\n\nexport const Bell = (props: IconProps) => (\n <Icon {...props}>\n <LucideBell size=\"100%\" />\n </Icon>\n);\n\nexport const User = (props: IconProps) => (\n <Icon {...props}>\n <LucideUser size=\"100%\" />\n </Icon>\n);\n\nexport const Search = (props: IconProps) => (\n <Icon {...props}>\n <LucideSearch size=\"100%\" />\n </Icon>\n);\n\nexport const Home = (props: IconProps) => (\n <Icon {...props}>\n <LucideHome size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingCart = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingCart size=\"100%\" />\n </Icon>\n);\n\nexport const Gift = (props: IconProps) => (\n <Icon {...props}>\n <LucideGift size=\"100%\" />\n </Icon>\n);\n\nexport const Trophy = (props: IconProps) => (\n <Icon {...props}>\n <LucideTrophy size=\"100%\" />\n </Icon>\n);\n\nexport const Backpack = (props: IconProps) => (\n <Icon {...props}>\n <LucideBackpack size=\"100%\" />\n </Icon>\n);\n\nexport const Headset = (props: IconProps) => (\n <Icon {...props}>\n <LucideHeadset size=\"100%\" />\n </Icon>\n);\n\nexport const ShoppingBag = (props: IconProps) => (\n <Icon {...props}>\n <LucideShoppingBag size=\"100%\" />\n </Icon>\n);\n\nexport const Plus = (props: IconProps) => (\n <Icon {...props}>\n <LucidePlus size=\"100%\" />\n </Icon>\n);\n\nexport const Image = (props: IconProps) => (\n <Icon {...props}>\n <LucideImage size=\"100%\" />\n </Icon>\n);\n\nexport const Upload = (props: IconProps) => (\n <Icon {...props}>\n <LucideUpload size=\"100%\" />\n </Icon>\n);\n\nexport const File = (props: IconProps) => (\n <Icon {...props}>\n <LucideFile size=\"100%\" />\n </Icon>\n);\n\nexport const Info = (props: IconProps) => (\n <Icon {...props}>\n <LucideInfo size=\"100%\" />\n </Icon>\n);\n"],"mappings":"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","names":["jsx"]}