@valpro-labs/ui 1.0.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.
Files changed (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/dist/components/blocks/accessory-card.d.ts +37 -0
  4. package/dist/components/blocks/accessory-card.d.ts.map +1 -0
  5. package/dist/components/blocks/accessory-card.js +42 -0
  6. package/dist/components/blocks/accessory-card.js.map +1 -0
  7. package/dist/components/blocks/agent-card.d.ts +28 -0
  8. package/dist/components/blocks/agent-card.d.ts.map +1 -0
  9. package/dist/components/blocks/agent-card.js +21 -0
  10. package/dist/components/blocks/agent-card.js.map +1 -0
  11. package/dist/components/blocks/bundle-card.d.ts +37 -0
  12. package/dist/components/blocks/bundle-card.d.ts.map +1 -0
  13. package/dist/components/blocks/bundle-card.js +33 -0
  14. package/dist/components/blocks/bundle-card.js.map +1 -0
  15. package/dist/components/blocks/daily-progress-skeleton.d.ts +8 -0
  16. package/dist/components/blocks/daily-progress-skeleton.d.ts.map +1 -0
  17. package/dist/components/blocks/daily-progress-skeleton.js +31 -0
  18. package/dist/components/blocks/daily-progress-skeleton.js.map +1 -0
  19. package/dist/components/blocks/daily-progress.d.ts +16 -0
  20. package/dist/components/blocks/daily-progress.d.ts.map +1 -0
  21. package/dist/components/blocks/daily-progress.js +209 -0
  22. package/dist/components/blocks/daily-progress.js.map +1 -0
  23. package/dist/components/blocks/expression-wheel.d.ts +30 -0
  24. package/dist/components/blocks/expression-wheel.d.ts.map +1 -0
  25. package/dist/components/blocks/expression-wheel.js +76 -0
  26. package/dist/components/blocks/expression-wheel.js.map +1 -0
  27. package/dist/components/blocks/friend-party-others-row.d.ts +20 -0
  28. package/dist/components/blocks/friend-party-others-row.d.ts.map +1 -0
  29. package/dist/components/blocks/friend-party-others-row.js +17 -0
  30. package/dist/components/blocks/friend-party-others-row.js.map +1 -0
  31. package/dist/components/blocks/friend-row-skeleton.d.ts +13 -0
  32. package/dist/components/blocks/friend-row-skeleton.d.ts.map +1 -0
  33. package/dist/components/blocks/friend-row-skeleton.js +14 -0
  34. package/dist/components/blocks/friend-row-skeleton.js.map +1 -0
  35. package/dist/components/blocks/friend-row.d.ts +39 -0
  36. package/dist/components/blocks/friend-row.d.ts.map +1 -0
  37. package/dist/components/blocks/friend-row.js +39 -0
  38. package/dist/components/blocks/friend-row.js.map +1 -0
  39. package/dist/components/blocks/index.d.ts +2 -0
  40. package/dist/components/blocks/index.d.ts.map +1 -0
  41. package/dist/components/blocks/index.js +4 -0
  42. package/dist/components/blocks/index.js.map +1 -0
  43. package/dist/components/blocks/item-bought-overlay.d.ts +32 -0
  44. package/dist/components/blocks/item-bought-overlay.d.ts.map +1 -0
  45. package/dist/components/blocks/item-bought-overlay.js +20 -0
  46. package/dist/components/blocks/item-bought-overlay.js.map +1 -0
  47. package/dist/components/blocks/map-banner.d.ts +39 -0
  48. package/dist/components/blocks/map-banner.d.ts.map +1 -0
  49. package/dist/components/blocks/map-banner.js +22 -0
  50. package/dist/components/blocks/map-banner.js.map +1 -0
  51. package/dist/components/blocks/match-card-skeleton.d.ts +13 -0
  52. package/dist/components/blocks/match-card-skeleton.d.ts.map +1 -0
  53. package/dist/components/blocks/match-card-skeleton.js +14 -0
  54. package/dist/components/blocks/match-card-skeleton.js.map +1 -0
  55. package/dist/components/blocks/match-card.d.ts +52 -0
  56. package/dist/components/blocks/match-card.d.ts.map +1 -0
  57. package/dist/components/blocks/match-card.js +48 -0
  58. package/dist/components/blocks/match-card.js.map +1 -0
  59. package/dist/components/blocks/match-info-row.d.ts +30 -0
  60. package/dist/components/blocks/match-info-row.d.ts.map +1 -0
  61. package/dist/components/blocks/match-info-row.js +18 -0
  62. package/dist/components/blocks/match-info-row.js.map +1 -0
  63. package/dist/components/blocks/mission-card-skeleton.d.ts +15 -0
  64. package/dist/components/blocks/mission-card-skeleton.d.ts.map +1 -0
  65. package/dist/components/blocks/mission-card-skeleton.js +16 -0
  66. package/dist/components/blocks/mission-card-skeleton.js.map +1 -0
  67. package/dist/components/blocks/mission-card.d.ts +28 -0
  68. package/dist/components/blocks/mission-card.d.ts.map +1 -0
  69. package/dist/components/blocks/mission-card.js +32 -0
  70. package/dist/components/blocks/mission-card.js.map +1 -0
  71. package/dist/components/blocks/mission-list.d.ts +42 -0
  72. package/dist/components/blocks/mission-list.d.ts.map +1 -0
  73. package/dist/components/blocks/mission-list.js +27 -0
  74. package/dist/components/blocks/mission-list.js.map +1 -0
  75. package/dist/components/blocks/offer-card.d.ts +44 -0
  76. package/dist/components/blocks/offer-card.d.ts.map +1 -0
  77. package/dist/components/blocks/offer-card.js +71 -0
  78. package/dist/components/blocks/offer-card.js.map +1 -0
  79. package/dist/components/blocks/owned-item-card.d.ts +54 -0
  80. package/dist/components/blocks/owned-item-card.d.ts.map +1 -0
  81. package/dist/components/blocks/owned-item-card.js +37 -0
  82. package/dist/components/blocks/owned-item-card.js.map +1 -0
  83. package/dist/components/blocks/player-card-skeleton.d.ts +13 -0
  84. package/dist/components/blocks/player-card-skeleton.d.ts.map +1 -0
  85. package/dist/components/blocks/player-card-skeleton.js +14 -0
  86. package/dist/components/blocks/player-card-skeleton.js.map +1 -0
  87. package/dist/components/blocks/player-card.d.ts +28 -0
  88. package/dist/components/blocks/player-card.d.ts.map +1 -0
  89. package/dist/components/blocks/player-card.js +22 -0
  90. package/dist/components/blocks/player-card.js.map +1 -0
  91. package/dist/components/blocks/player-row.d.ts +37 -0
  92. package/dist/components/blocks/player-row.d.ts.map +1 -0
  93. package/dist/components/blocks/player-row.js +23 -0
  94. package/dist/components/blocks/player-row.js.map +1 -0
  95. package/dist/components/blocks/rank-card.d.ts +42 -0
  96. package/dist/components/blocks/rank-card.d.ts.map +1 -0
  97. package/dist/components/blocks/rank-card.js +23 -0
  98. package/dist/components/blocks/rank-card.js.map +1 -0
  99. package/dist/components/blocks/rank-pyramid.d.ts +35 -0
  100. package/dist/components/blocks/rank-pyramid.d.ts.map +1 -0
  101. package/dist/components/blocks/rank-pyramid.js +97 -0
  102. package/dist/components/blocks/rank-pyramid.js.map +1 -0
  103. package/dist/components/blocks/rank-tier-card-skeleton.d.ts +13 -0
  104. package/dist/components/blocks/rank-tier-card-skeleton.d.ts.map +1 -0
  105. package/dist/components/blocks/rank-tier-card-skeleton.js +14 -0
  106. package/dist/components/blocks/rank-tier-card-skeleton.js.map +1 -0
  107. package/dist/components/blocks/rank-tier-card.d.ts +27 -0
  108. package/dist/components/blocks/rank-tier-card.d.ts.map +1 -0
  109. package/dist/components/blocks/rank-tier-card.js +21 -0
  110. package/dist/components/blocks/rank-tier-card.js.map +1 -0
  111. package/dist/components/blocks/reward-item.d.ts +38 -0
  112. package/dist/components/blocks/reward-item.d.ts.map +1 -0
  113. package/dist/components/blocks/reward-item.js +29 -0
  114. package/dist/components/blocks/reward-item.js.map +1 -0
  115. package/dist/components/blocks/role-card.d.ts +24 -0
  116. package/dist/components/blocks/role-card.d.ts.map +1 -0
  117. package/dist/components/blocks/role-card.js +25 -0
  118. package/dist/components/blocks/role-card.js.map +1 -0
  119. package/dist/components/blocks/section-title.d.ts +21 -0
  120. package/dist/components/blocks/section-title.d.ts.map +1 -0
  121. package/dist/components/blocks/section-title.js +17 -0
  122. package/dist/components/blocks/section-title.js.map +1 -0
  123. package/dist/components/blocks/settings-group.d.ts +19 -0
  124. package/dist/components/blocks/settings-group.d.ts.map +1 -0
  125. package/dist/components/blocks/settings-group.js +15 -0
  126. package/dist/components/blocks/settings-group.js.map +1 -0
  127. package/dist/components/blocks/settings-row.d.ts +36 -0
  128. package/dist/components/blocks/settings-row.d.ts.map +1 -0
  129. package/dist/components/blocks/settings-row.js +24 -0
  130. package/dist/components/blocks/settings-row.js.map +1 -0
  131. package/dist/components/blocks/skin-tile.d.ts +39 -0
  132. package/dist/components/blocks/skin-tile.d.ts.map +1 -0
  133. package/dist/components/blocks/skin-tile.js +26 -0
  134. package/dist/components/blocks/skin-tile.js.map +1 -0
  135. package/dist/components/blocks/wallet.d.ts +27 -0
  136. package/dist/components/blocks/wallet.d.ts.map +1 -0
  137. package/dist/components/blocks/wallet.js +21 -0
  138. package/dist/components/blocks/wallet.js.map +1 -0
  139. package/dist/components/blocks/weapon-category-grid.d.ts +50 -0
  140. package/dist/components/blocks/weapon-category-grid.d.ts.map +1 -0
  141. package/dist/components/blocks/weapon-category-grid.js +25 -0
  142. package/dist/components/blocks/weapon-category-grid.js.map +1 -0
  143. package/dist/components/ui/button.d.ts +15 -0
  144. package/dist/components/ui/button.d.ts.map +1 -0
  145. package/dist/components/ui/button.js +61 -0
  146. package/dist/components/ui/button.js.map +1 -0
  147. package/dist/components/ui/image.d.ts +7 -0
  148. package/dist/components/ui/image.d.ts.map +1 -0
  149. package/dist/components/ui/image.js +9 -0
  150. package/dist/components/ui/image.js.map +1 -0
  151. package/dist/components/ui/image.web.d.ts +40 -0
  152. package/dist/components/ui/image.web.d.ts.map +1 -0
  153. package/dist/components/ui/image.web.js +33 -0
  154. package/dist/components/ui/image.web.js.map +1 -0
  155. package/dist/components/ui/progress.d.ts +9 -0
  156. package/dist/components/ui/progress.d.ts.map +1 -0
  157. package/dist/components/ui/progress.js +36 -0
  158. package/dist/components/ui/progress.js.map +1 -0
  159. package/dist/components/ui/progress.web.d.ts +16 -0
  160. package/dist/components/ui/progress.web.d.ts.map +1 -0
  161. package/dist/components/ui/progress.web.js +20 -0
  162. package/dist/components/ui/progress.web.js.map +1 -0
  163. package/dist/components/ui/separator.d.ts +9 -0
  164. package/dist/components/ui/separator.d.ts.map +1 -0
  165. package/dist/components/ui/separator.js +8 -0
  166. package/dist/components/ui/separator.js.map +1 -0
  167. package/dist/components/ui/skeleton.d.ts +7 -0
  168. package/dist/components/ui/skeleton.d.ts.map +1 -0
  169. package/dist/components/ui/skeleton.js +17 -0
  170. package/dist/components/ui/skeleton.js.map +1 -0
  171. package/dist/components/ui/skeleton.web.d.ts +14 -0
  172. package/dist/components/ui/skeleton.web.d.ts.map +1 -0
  173. package/dist/components/ui/skeleton.web.js +15 -0
  174. package/dist/components/ui/skeleton.web.js.map +1 -0
  175. package/dist/components/ui/text.d.ts +13 -0
  176. package/dist/components/ui/text.d.ts.map +1 -0
  177. package/dist/components/ui/text.js +49 -0
  178. package/dist/components/ui/text.js.map +1 -0
  179. package/dist/index.d.ts +84 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +46 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/lib/svg-shim.d.ts +12 -0
  184. package/dist/lib/svg-shim.d.ts.map +1 -0
  185. package/dist/lib/svg-shim.js +12 -0
  186. package/dist/lib/svg-shim.js.map +1 -0
  187. package/dist/lib/svg-shim.web.d.ts +32 -0
  188. package/dist/lib/svg-shim.web.d.ts.map +1 -0
  189. package/dist/lib/svg-shim.web.js +16 -0
  190. package/dist/lib/svg-shim.web.js.map +1 -0
  191. package/dist/lib/utils.d.ts +3 -0
  192. package/dist/lib/utils.d.ts.map +1 -0
  193. package/dist/lib/utils.js +6 -0
  194. package/dist/lib/utils.js.map +1 -0
  195. package/dist/lib/weapon-grid-transform.d.ts +30 -0
  196. package/dist/lib/weapon-grid-transform.d.ts.map +1 -0
  197. package/dist/lib/weapon-grid-transform.js +106 -0
  198. package/dist/lib/weapon-grid-transform.js.map +1 -0
  199. package/dist/styles/global.css +132 -0
  200. package/package.json +102 -0
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { cn } from '../../lib/utils';
4
+ /**
5
+ * Web-only Progress implementation.
6
+ * Pure View + CSS width transition, no reanimated and no @rn-primitives.
7
+ * The native sibling (`progress.tsx`) keeps the animated + accessible
8
+ * @rn-primitives implementation for iOS/Android.
9
+ */
10
+ function Progress({ className, value, indicatorClassName, ...props }) {
11
+ const clamped = Math.max(0, Math.min(100, value ?? 0));
12
+ return (_jsx(View, { role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": clamped, className: cn('bg-primary/20 relative h-2 w-full overflow-hidden rounded-full', className), ...props, children: _jsx(View, { className: cn('bg-primary h-full', indicatorClassName), style: {
13
+ width: `${clamped}%`,
14
+ // `transition` goes through to the underlying DOM element via
15
+ // react-native-web; on native this prop is ignored.
16
+ transition: 'width 0.3s ease-out',
17
+ } }) }));
18
+ }
19
+ export { Progress };
20
+ //# sourceMappingURL=progress.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.web.js","sourceRoot":"","sources":["../../../src/components/ui/progress.web.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAQjC;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,KAAK,EAAiB;IACjF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CACL,KAAC,IAAI,IACH,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,GAAG,mBACH,OAAO,EACtB,SAAS,EAAE,EAAE,CAAC,gEAAgE,EAAE,SAAS,CAAC,KACtF,KAAK,YACT,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACtD,KAAK,EAAE;gBACL,KAAK,EAAE,GAAG,OAAO,GAAG;gBACpB,8DAA8D;gBAC9D,oDAAoD;gBACpD,UAAU,EAAE,qBAAqB;aACxB,GACX,GACG,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import { View } from 'react-native';
3
+ interface SeparatorProps extends React.ComponentProps<typeof View> {
4
+ orientation?: 'horizontal' | 'vertical';
5
+ }
6
+ declare function Separator({ className, orientation, ...props }: SeparatorProps): import("react/jsx-runtime").JSX.Element;
7
+ export { Separator };
8
+ export type { SeparatorProps };
9
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../src/components/ui/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC;IAChE,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,WAA0B,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAWrF;AAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { cn } from '../../lib/utils';
4
+ function Separator({ className, orientation = 'horizontal', ...props }) {
5
+ return (_jsx(View, { className: cn('bg-border shrink-0', orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px', className), ...props }));
6
+ }
7
+ export { Separator };
8
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.js","sourceRoot":"","sources":["../../../src/components/ui/separator.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAMjC,SAAS,SAAS,CAAC,EAAE,SAAS,EAAE,WAAW,GAAG,YAAY,EAAE,GAAG,KAAK,EAAkB;IACpF,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,oBAAoB,EACpB,WAAW,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAC5D,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { View } from 'react-native';
3
+ type SkeletonProps = React.ComponentProps<typeof View> & React.RefAttributes<View>;
4
+ declare function Skeleton({ className, ...props }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
5
+ export { Skeleton };
6
+ export type { SkeletonProps };
7
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/ui/skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAapC,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEnF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAqBvD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import Animated, { useAnimatedStyle, useSharedValue, withRepeat, withTiming, } from 'react-native-reanimated';
4
+ import { cn } from '../../lib/utils';
5
+ const duration = 1000;
6
+ function Skeleton({ className, ...props }) {
7
+ const sv = useSharedValue(1);
8
+ React.useEffect(() => {
9
+ sv.value = withRepeat(withTiming(0.5, { duration }), -1, true);
10
+ }, [sv]);
11
+ const style = useAnimatedStyle(() => ({
12
+ opacity: sv.value,
13
+ }), [sv]);
14
+ return (_jsx(Animated.View, { style: style, className: cn('bg-secondary dark:bg-muted rounded-md', className), ...props }));
15
+ }
16
+ export { Skeleton };
17
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../../../src/components/ui/skeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,QAAQ,EAAE,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAItB,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiB;IACtD,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAET,MAAM,KAAK,GAAG,gBAAgB,CAC5B,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,EAAE,CAAC,KAAK;KAClB,CAAC,EACF,CAAC,EAAE,CAAC,CACL,CAAC;IAEF,OAAO,CACL,KAAC,QAAQ,CAAC,IAAI,IACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,SAAS,CAAC,KAC7D,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import { View } from 'react-native';
3
+ type SkeletonProps = React.ComponentProps<typeof View> & React.RefAttributes<View>;
4
+ /**
5
+ * Web-only Skeleton implementation.
6
+ * Uses Tailwind's `animate-pulse` class (a pure-CSS opacity cycle) instead of
7
+ * pulling in react-native-reanimated, which doesn't play nicely with Vite +
8
+ * react-native-web. The native sibling (`skeleton.tsx`) keeps the reanimated
9
+ * version for iOS/Android.
10
+ */
11
+ declare function Skeleton({ className, ...props }: SkeletonProps): import("react/jsx-runtime").JSX.Element;
12
+ export { Skeleton };
13
+ export type { SkeletonProps };
14
+ //# sourceMappingURL=skeleton.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.web.d.ts","sourceRoot":"","sources":["../../../src/components/ui/skeleton.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAIpC,KAAK,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAEnF;;;;;;GAMG;AACH,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAOvD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { cn } from '../../lib/utils';
4
+ /**
5
+ * Web-only Skeleton implementation.
6
+ * Uses Tailwind's `animate-pulse` class (a pure-CSS opacity cycle) instead of
7
+ * pulling in react-native-reanimated, which doesn't play nicely with Vite +
8
+ * react-native-web. The native sibling (`skeleton.tsx`) keeps the reanimated
9
+ * version for iOS/Android.
10
+ */
11
+ function Skeleton({ className, ...props }) {
12
+ return (_jsx(View, { className: cn('bg-secondary dark:bg-muted animate-pulse rounded-md', className), ...props }));
13
+ }
14
+ export { Skeleton };
15
+ //# sourceMappingURL=skeleton.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.web.js","sourceRoot":"","sources":["../../../src/components/ui/skeleton.web.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIjC;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiB;IACtD,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,qDAAqD,EAAE,SAAS,CAAC,KAC3E,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { Text as RNText } from 'react-native';
3
+ import { type VariantProps } from 'class-variance-authority';
4
+ declare const textVariants: (props?: ({
5
+ variant?: "default" | "h1" | "h2" | "h3" | "h4" | "p" | "blockquote" | "code" | "lead" | "large" | "small" | "muted" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ type TextVariantProps = VariantProps<typeof textVariants>;
8
+ declare const TextClassContext: React.Context<string | undefined>;
9
+ type TextProps = React.ComponentProps<typeof RNText> & TextVariantProps & React.RefAttributes<RNText>;
10
+ declare function Text({ className, variant, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
11
+ export { Text, TextClassContext, textVariants };
12
+ export type { TextProps };
13
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/components/ui/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAY,IAAI,IAAI,MAAM,EAAa,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,YAAY;;8EAoCjB,CAAC;AAEF,KAAK,gBAAgB,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AAoB1D,QAAA,MAAM,gBAAgB,mCAAqD,CAAC;AAE5E,KAAK,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAClD,gBAAgB,GAChB,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAE9B,iBAAS,IAAI,CAAC,EAAE,SAAS,EAAE,OAAmB,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,2CAUpE;AAED,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC;AAChD,YAAY,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Platform, Text as RNText } from 'react-native';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '../../lib/utils';
6
+ const textVariants = cva(cn('text-foreground text-base', Platform.select({
7
+ web: 'select-text',
8
+ })), {
9
+ variants: {
10
+ variant: {
11
+ default: '',
12
+ h1: cn('text-center text-4xl font-extrabold tracking-tight', Platform.select({ web: 'scroll-m-20 text-balance' })),
13
+ h2: cn('border-border border-b pb-2 text-3xl font-semibold tracking-tight', Platform.select({ web: 'scroll-m-20 first:mt-0' })),
14
+ h3: cn('text-2xl font-semibold tracking-tight', Platform.select({ web: 'scroll-m-20' })),
15
+ h4: cn('text-xl font-semibold tracking-tight', Platform.select({ web: 'scroll-m-20' })),
16
+ p: 'mt-3 leading-7 sm:mt-6',
17
+ blockquote: 'mt-4 border-l-2 pl-3 italic sm:mt-6 sm:pl-6',
18
+ code: cn('bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold'),
19
+ lead: 'text-muted-foreground text-xl',
20
+ large: 'text-lg font-semibold',
21
+ small: 'text-sm leading-none font-medium',
22
+ muted: 'text-muted-foreground text-sm',
23
+ },
24
+ },
25
+ defaultVariants: {
26
+ variant: 'default',
27
+ },
28
+ });
29
+ const ROLE = {
30
+ h1: 'heading',
31
+ h2: 'heading',
32
+ h3: 'heading',
33
+ h4: 'heading',
34
+ blockquote: Platform.select({ web: 'blockquote' }),
35
+ code: Platform.select({ web: 'code' }),
36
+ };
37
+ const ARIA_LEVEL = {
38
+ h1: '1',
39
+ h2: '2',
40
+ h3: '3',
41
+ h4: '4',
42
+ };
43
+ const TextClassContext = React.createContext(undefined);
44
+ function Text({ className, variant = 'default', ...props }) {
45
+ const textClass = React.useContext(TextClassContext);
46
+ return (_jsx(RNText, { className: cn(textVariants({ variant }), textClass, className), role: variant ? ROLE[variant] : undefined, "aria-level": variant ? ARIA_LEVEL[variant] : undefined, ...props }));
47
+ }
48
+ export { Text, TextClassContext, textVariants };
49
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/components/ui/text.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM,EAAa,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,YAAY,GAAG,GAAG,CACtB,EAAE,CACA,2BAA2B,EAC3B,QAAQ,CAAC,MAAM,CAAC;IACd,GAAG,EAAE,aAAa;CACnB,CAAC,CACH,EACD;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,EAAE;YACX,EAAE,EAAE,EAAE,CACJ,oDAAoD,EACpD,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,0BAA0B,EAAE,CAAC,CACrD;YACD,EAAE,EAAE,EAAE,CACJ,mEAAmE,EACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC,CACnD;YACD,EAAE,EAAE,EAAE,CAAC,uCAAuC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;YACxF,EAAE,EAAE,EAAE,CAAC,sCAAsC,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;YACvF,CAAC,EAAE,wBAAwB;YAC3B,UAAU,EAAE,6CAA6C;YACzD,IAAI,EAAE,EAAE,CACN,mFAAmF,CACpF;YACD,IAAI,EAAE,+BAA+B;YACrC,KAAK,EAAE,uBAAuB;YAC9B,KAAK,EAAE,kCAAkC;YACzC,KAAK,EAAE,+BAA+B;SACvC;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAC;AAMF,MAAM,IAAI,GAAuC;IAC/C,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,YAAoB,EAAE,CAAC;IAC1D,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAc,EAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,UAAU,GAAyC;IACvD,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;IACP,EAAE,EAAE,GAAG;CACR,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAqB,SAAS,CAAC,CAAC;AAM5E,SAAS,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,KAAK,EAAa;IACnE,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACrD,OAAO,CACL,KAAC,MAAM,IACL,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAC9D,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,gBAC7B,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,KACjD,KAAK,GACT,CACH,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,84 @@
1
+ export { Button, buttonVariants, buttonTextVariants } from './components/ui/button';
2
+ export type { ButtonProps } from './components/ui/button';
3
+ export { Text, TextClassContext, textVariants } from './components/ui/text';
4
+ export type { TextProps } from './components/ui/text';
5
+ export { Image } from './components/ui/image';
6
+ export type { ImageProps } from './components/ui/image';
7
+ export { Separator } from './components/ui/separator';
8
+ export type { SeparatorProps } from './components/ui/separator';
9
+ export { Skeleton } from './components/ui/skeleton';
10
+ export type { SkeletonProps } from './components/ui/skeleton';
11
+ export { Progress } from './components/ui/progress';
12
+ export type { ProgressProps } from './components/ui/progress';
13
+ export { MissionCard } from './components/blocks/mission-card';
14
+ export type { MissionCardProps } from './components/blocks/mission-card';
15
+ export { MissionCardSkeleton } from './components/blocks/mission-card-skeleton';
16
+ export type { MissionCardSkeletonProps } from './components/blocks/mission-card-skeleton';
17
+ export { MissionList } from './components/blocks/mission-list';
18
+ export type { MissionListProps, MissionListItem } from './components/blocks/mission-list';
19
+ export { DailyProgress } from './components/blocks/daily-progress';
20
+ export type { DailyProgressProps, DailyMilestone } from './components/blocks/daily-progress';
21
+ export { DailyProgressSkeleton } from './components/blocks/daily-progress-skeleton';
22
+ export type { DailyProgressSkeletonProps } from './components/blocks/daily-progress-skeleton';
23
+ export { PlayerCard } from './components/blocks/player-card';
24
+ export type { PlayerCardProps } from './components/blocks/player-card';
25
+ export { PlayerCardSkeleton } from './components/blocks/player-card-skeleton';
26
+ export type { PlayerCardSkeletonProps } from './components/blocks/player-card-skeleton';
27
+ export { RankTierCard } from './components/blocks/rank-tier-card';
28
+ export type { RankTierCardProps } from './components/blocks/rank-tier-card';
29
+ export { RankTierCardSkeleton } from './components/blocks/rank-tier-card-skeleton';
30
+ export type { RankTierCardSkeletonProps } from './components/blocks/rank-tier-card-skeleton';
31
+ export { RankPyramid } from './components/blocks/rank-pyramid';
32
+ export type { RankPyramidProps, RankPyramidTier } from './components/blocks/rank-pyramid';
33
+ export { RankCard } from './components/blocks/rank-card';
34
+ export type { RankCardProps } from './components/blocks/rank-card';
35
+ export { AgentCard } from './components/blocks/agent-card';
36
+ export type { AgentCardProps } from './components/blocks/agent-card';
37
+ export { RoleCard } from './components/blocks/role-card';
38
+ export type { RoleCardProps } from './components/blocks/role-card';
39
+ export { SettingsRow } from './components/blocks/settings-row';
40
+ export type { SettingsRowProps } from './components/blocks/settings-row';
41
+ export { SettingsGroup } from './components/blocks/settings-group';
42
+ export type { SettingsGroupProps } from './components/blocks/settings-group';
43
+ export { MatchCard } from './components/blocks/match-card';
44
+ export type { MatchCardProps, MatchResult } from './components/blocks/match-card';
45
+ export { MatchCardSkeleton } from './components/blocks/match-card-skeleton';
46
+ export type { MatchCardSkeletonProps } from './components/blocks/match-card-skeleton';
47
+ export { OfferCard } from './components/blocks/offer-card';
48
+ export type { OfferCardProps } from './components/blocks/offer-card';
49
+ export { BundleCard } from './components/blocks/bundle-card';
50
+ export type { BundleCardProps } from './components/blocks/bundle-card';
51
+ export { AccessoryCard } from './components/blocks/accessory-card';
52
+ export type { AccessoryCardProps } from './components/blocks/accessory-card';
53
+ export { RewardItem } from './components/blocks/reward-item';
54
+ export type { RewardItemProps } from './components/blocks/reward-item';
55
+ export { Wallet } from './components/blocks/wallet';
56
+ export type { WalletProps, WalletBalance } from './components/blocks/wallet';
57
+ export { MapBanner } from './components/blocks/map-banner';
58
+ export type { MapBannerProps, MapBannerResult } from './components/blocks/map-banner';
59
+ export { MatchInfoRow } from './components/blocks/match-info-row';
60
+ export type { MatchInfoRowProps } from './components/blocks/match-info-row';
61
+ export { PlayerRow } from './components/blocks/player-row';
62
+ export type { PlayerRowProps, PlayerRowRole } from './components/blocks/player-row';
63
+ export { FriendRow } from './components/blocks/friend-row';
64
+ export type { FriendRowProps, FriendStatus } from './components/blocks/friend-row';
65
+ export { FriendRowSkeleton } from './components/blocks/friend-row-skeleton';
66
+ export type { FriendRowSkeletonProps } from './components/blocks/friend-row-skeleton';
67
+ export { FriendPartyOthersRow } from './components/blocks/friend-party-others-row';
68
+ export type { FriendPartyOthersRowProps } from './components/blocks/friend-party-others-row';
69
+ export { OwnedItemCard } from './components/blocks/owned-item-card';
70
+ export type { OwnedItemCardProps } from './components/blocks/owned-item-card';
71
+ export { ItemBoughtOverlay } from './components/blocks/item-bought-overlay';
72
+ export type { ItemBoughtOverlayProps } from './components/blocks/item-bought-overlay';
73
+ export { ExpressionWheel } from './components/blocks/expression-wheel';
74
+ export type { ExpressionWheelProps, ExpressionWheelSlot, } from './components/blocks/expression-wheel';
75
+ export { SkinTile } from './components/blocks/skin-tile';
76
+ export type { SkinTileProps } from './components/blocks/skin-tile';
77
+ export { SectionTitle } from './components/blocks/section-title';
78
+ export type { SectionTitleProps } from './components/blocks/section-title';
79
+ export { WeaponCategoryGrid } from './components/blocks/weapon-category-grid';
80
+ export type { WeaponCategoryGridProps, WeaponCategoryGridSection, WeaponCategoryGridItem, } from './components/blocks/weapon-category-grid';
81
+ export { cn } from './lib/utils';
82
+ export { getWeaponCategoryWidth, getWeaponGridTransform, getWeaponGridIconStyle, } from './lib/weapon-grid-transform';
83
+ export type { WeaponGridTransform } from './lib/weapon-grid-transform';
84
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,46 @@
1
+ // ── Tier 1: Primitives (ui/) ──
2
+ export { Button, buttonVariants, buttonTextVariants } from './components/ui/button';
3
+ export { Text, TextClassContext, textVariants } from './components/ui/text';
4
+ export { Image } from './components/ui/image';
5
+ export { Separator } from './components/ui/separator';
6
+ export { Skeleton } from './components/ui/skeleton';
7
+ export { Progress } from './components/ui/progress';
8
+ // ── Tier 2: Blocks (blocks/) ──
9
+ export { MissionCard } from './components/blocks/mission-card';
10
+ export { MissionCardSkeleton } from './components/blocks/mission-card-skeleton';
11
+ export { MissionList } from './components/blocks/mission-list';
12
+ export { DailyProgress } from './components/blocks/daily-progress';
13
+ export { DailyProgressSkeleton } from './components/blocks/daily-progress-skeleton';
14
+ export { PlayerCard } from './components/blocks/player-card';
15
+ export { PlayerCardSkeleton } from './components/blocks/player-card-skeleton';
16
+ export { RankTierCard } from './components/blocks/rank-tier-card';
17
+ export { RankTierCardSkeleton } from './components/blocks/rank-tier-card-skeleton';
18
+ export { RankPyramid } from './components/blocks/rank-pyramid';
19
+ export { RankCard } from './components/blocks/rank-card';
20
+ export { AgentCard } from './components/blocks/agent-card';
21
+ export { RoleCard } from './components/blocks/role-card';
22
+ export { SettingsRow } from './components/blocks/settings-row';
23
+ export { SettingsGroup } from './components/blocks/settings-group';
24
+ export { MatchCard } from './components/blocks/match-card';
25
+ export { MatchCardSkeleton } from './components/blocks/match-card-skeleton';
26
+ export { OfferCard } from './components/blocks/offer-card';
27
+ export { BundleCard } from './components/blocks/bundle-card';
28
+ export { AccessoryCard } from './components/blocks/accessory-card';
29
+ export { RewardItem } from './components/blocks/reward-item';
30
+ export { Wallet } from './components/blocks/wallet';
31
+ export { MapBanner } from './components/blocks/map-banner';
32
+ export { MatchInfoRow } from './components/blocks/match-info-row';
33
+ export { PlayerRow } from './components/blocks/player-row';
34
+ export { FriendRow } from './components/blocks/friend-row';
35
+ export { FriendRowSkeleton } from './components/blocks/friend-row-skeleton';
36
+ export { FriendPartyOthersRow } from './components/blocks/friend-party-others-row';
37
+ export { OwnedItemCard } from './components/blocks/owned-item-card';
38
+ export { ItemBoughtOverlay } from './components/blocks/item-bought-overlay';
39
+ export { ExpressionWheel } from './components/blocks/expression-wheel';
40
+ export { SkinTile } from './components/blocks/skin-tile';
41
+ export { SectionTitle } from './components/blocks/section-title';
42
+ export { WeaponCategoryGrid } from './components/blocks/weapon-category-grid';
43
+ // ── Utilities ──
44
+ export { cn } from './lib/utils';
45
+ export { getWeaponCategoryWidth, getWeaponGridTransform, getWeaponGridIconStyle, } from './lib/weapon-grid-transform';
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGpF,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGpD,iCAAiC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAGpF,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGnF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAG/D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAGlE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGnF,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAGpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAMvE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAO9E,kBAAkB;AAClB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cross-platform SVG primitives.
3
+ *
4
+ * Native (this file): re-exports from `react-native-svg`.
5
+ * Web (`./svg-shim.web.tsx`): raw HTML <svg>/<path>/<rect>/<text>.
6
+ *
7
+ * Consumers import `Svg`, `Path`, `Rect`, `SvgText` from `@/lib/svg-shim`
8
+ * and get whichever renderer the current bundler picks up.
9
+ */
10
+ import Svg, { Path, Rect, Text as SvgText } from 'react-native-svg';
11
+ export { Svg, Path, Rect, SvgText };
12
+ //# sourceMappingURL=svg-shim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-shim.d.ts","sourceRoot":"","sources":["../../src/lib/svg-shim.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cross-platform SVG primitives.
3
+ *
4
+ * Native (this file): re-exports from `react-native-svg`.
5
+ * Web (`./svg-shim.web.tsx`): raw HTML <svg>/<path>/<rect>/<text>.
6
+ *
7
+ * Consumers import `Svg`, `Path`, `Rect`, `SvgText` from `@/lib/svg-shim`
8
+ * and get whichever renderer the current bundler picks up.
9
+ */
10
+ import Svg, { Path, Rect, Text as SvgText } from 'react-native-svg';
11
+ export { Svg, Path, Rect, SvgText };
12
+ //# sourceMappingURL=svg-shim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-shim.js","sourceRoot":"","sources":["../../src/lib/svg-shim.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Web implementation of the SVG shim.
3
+ *
4
+ * Thin functional wrappers around the DOM's native SVG elements so the
5
+ * import sites (`daily-progress.tsx`, future SVG-using blocks) don't have
6
+ * to fork a .web.tsx for rendering. The JSX prop surface is a strict subset
7
+ * of what react-native-svg accepts, covering what we actually use today.
8
+ *
9
+ * Extend the prop types here as we start using more svg attributes.
10
+ */
11
+ import type { CSSProperties, ComponentPropsWithoutRef, PropsWithChildren, ReactNode } from 'react';
12
+ type SvgCommon = {
13
+ width?: number | string;
14
+ height?: number | string;
15
+ viewBox?: string;
16
+ style?: CSSProperties;
17
+ children?: ReactNode;
18
+ };
19
+ declare function Svg({ children, ...rest }: SvgCommon): import("react/jsx-runtime").JSX.Element;
20
+ type PressHandlers = {
21
+ onPress?: () => void;
22
+ onPressIn?: () => void;
23
+ onPressOut?: () => void;
24
+ };
25
+ type PathProps = PropsWithChildren<Omit<ComponentPropsWithoutRef<'path'>, 'ref'> & PressHandlers>;
26
+ declare function Path({ onPress, onPressIn, onPressOut, ...rest }: PathProps): import("react/jsx-runtime").JSX.Element;
27
+ type RectProps = PropsWithChildren<Omit<ComponentPropsWithoutRef<'rect'>, 'ref'>>;
28
+ declare function Rect(props: RectProps): import("react/jsx-runtime").JSX.Element;
29
+ type TextProps = PropsWithChildren<Omit<ComponentPropsWithoutRef<'text'>, 'ref'>>;
30
+ declare function SvgText(props: TextProps): import("react/jsx-runtime").JSX.Element;
31
+ export { Svg, Path, Rect, SvgText };
32
+ //# sourceMappingURL=svg-shim.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-shim.web.d.ts","sourceRoot":"","sources":["../../src/lib/svg-shim.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,SAAS,EACV,MAAM,OAAO,CAAC;AAEf,KAAK,SAAS,GAAG;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,iBAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAE5C;AAED,KAAK,aAAa,GAAG;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,CAAC;AAEF,KAAK,SAAS,GAAG,iBAAiB,CAChC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,aAAa,CAC9D,CAAC;AACF,iBAAS,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,SAAS,2CAYnE;AAED,KAAK,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAClF,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,2CAE7B;AAED,KAAK,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAClF,iBAAS,OAAO,CAAC,KAAK,EAAE,SAAS,2CAEhC;AAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ function Svg({ children, ...rest }) {
3
+ return _jsx("svg", { ...rest, children: children });
4
+ }
5
+ function Path({ onPress, onPressIn, onPressOut, ...rest }) {
6
+ const interactive = onPress || onPressIn || onPressOut;
7
+ return (_jsx("path", { ...rest, onClick: onPress ? () => onPress() : rest.onClick, onPointerDown: onPressIn ? () => onPressIn() : rest.onPointerDown, onPointerUp: onPressOut ? () => onPressOut() : rest.onPointerUp, onPointerLeave: onPressOut ? () => onPressOut() : rest.onPointerLeave, style: interactive ? { cursor: 'pointer', ...rest.style } : rest.style }));
8
+ }
9
+ function Rect(props) {
10
+ return _jsx("rect", { ...props });
11
+ }
12
+ function SvgText(props) {
13
+ return _jsx("text", { ...props });
14
+ }
15
+ export { Svg, Path, Rect, SvgText };
16
+ //# sourceMappingURL=svg-shim.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-shim.web.js","sourceRoot":"","sources":["../../src/lib/svg-shim.web.tsx"],"names":[],"mappings":";AAyBA,SAAS,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAa;IAC3C,OAAO,iBAAS,IAAI,YAAG,QAAQ,GAAO,CAAC;AACzC,CAAC;AAWD,SAAS,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAI,EAAa;IAClE,MAAM,WAAW,GAAG,OAAO,IAAI,SAAS,IAAI,UAAU,CAAC;IACvD,OAAO,CACL,kBACM,IAAI,EACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EACjD,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EACjE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAC/D,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EACrE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GACtE,CACH,CAAC;AACJ,CAAC;AAGD,SAAS,IAAI,CAAC,KAAgB;IAC5B,OAAO,kBAAU,KAAK,GAAI,CAAC;AAC7B,CAAC;AAGD,SAAS,OAAO,CAAC,KAAgB;IAC/B,OAAO,kBAAU,KAAK,GAAI,CAAC;AAC7B,CAAC;AAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,6 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,MAAM,UAAU,EAAE,CAAC,GAAG,MAAoB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ImageStyle, StyleProp } from 'react-native';
2
+ /**
3
+ * Resolve the per-category image width for a weapon category, falling
4
+ * back to 80 when the category isn't in the overrides map.
5
+ */
6
+ declare function getWeaponCategoryWidth(category: string): number;
7
+ interface WeaponGridTransform {
8
+ /** Uniform scale multiplier (1 = fit, 2 = 2x zoom). */
9
+ scale: number;
10
+ /** Horizontal offset in px. */
11
+ offsetX: number;
12
+ /** Vertical offset in px. */
13
+ offsetY: number;
14
+ /** Rotation in degrees. */
15
+ rotate: number;
16
+ }
17
+ /**
18
+ * Resolve the per-weapon visual tuning (scale / offset / rotate) for a
19
+ * weapon UUID, falling back to an identity transform for unknown guns.
20
+ */
21
+ declare function getWeaponGridTransform(weaponUuid: string): WeaponGridTransform;
22
+ /**
23
+ * Convenience: compose the transform as an RN `ImageStyle` ready to
24
+ * pass into `OwnedItemCard`'s `iconStyle` prop for weapon-skin tiles
25
+ * in the 3-column customize picker.
26
+ */
27
+ declare function getWeaponGridIconStyle(weaponUuid: string): StyleProp<ImageStyle>;
28
+ export { getWeaponCategoryWidth, getWeaponGridTransform, getWeaponGridIconStyle };
29
+ export type { WeaponGridTransform };
30
+ //# sourceMappingURL=weapon-grid-transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weapon-grid-transform.d.ts","sourceRoot":"","sources":["../../src/lib/weapon-grid-transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAiB1D;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,UAAU,mBAAmB;IAC3B,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AA6ED;;;GAGG;AACH,iBAAS,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAEvE;AAED;;;;GAIG;AACH,iBAAS,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAUzE;AAED,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Per-category default image width (% of card width) used to scale
3
+ * weapon art inside the two-column loadout grid. Keyed by Valorant's
4
+ * `EEquippableCategory::*` string.
5
+ */
6
+ const WEAPON_CATEGORY_WIDTH_GRID = {
7
+ 'EEquippableCategory::Sidearm': 50,
8
+ 'EEquippableCategory::SMG': 80,
9
+ 'EEquippableCategory::Shotgun': 78,
10
+ 'EEquippableCategory::Rifle': 80,
11
+ 'EEquippableCategory::Melee': 60,
12
+ 'EEquippableCategory::Sniper': 82,
13
+ 'EEquippableCategory::Heavy': 85,
14
+ };
15
+ /**
16
+ * Resolve the per-category image width for a weapon category, falling
17
+ * back to 80 when the category isn't in the overrides map.
18
+ */
19
+ function getWeaponCategoryWidth(category) {
20
+ return WEAPON_CATEGORY_WIDTH_GRID[category] ?? 80;
21
+ }
22
+ const DEFAULT_WEAPON_GRID = {
23
+ scale: 1,
24
+ offsetX: 0,
25
+ offsetY: 0,
26
+ rotate: 0,
27
+ };
28
+ /**
29
+ * Per-weapon visual tuning for the 3-column 1:1 weapon-skin picker —
30
+ * rotates and zooms each gun's art so it fits its square tile nicely.
31
+ * Keyed by Valorant weapon UUID.
32
+ */
33
+ const WEAPON_GRID_OVERRIDES = {
34
+ // ── Sidearms ──
35
+ // Classic
36
+ '29a0cfab-485b-f5d5-779a-b59f85e204a8': { scale: 1.4, offsetX: -5, rotate: 30 },
37
+ // Shorty
38
+ '42da8ccc-40d5-affc-beec-15aa47b42eda': { scale: 2.2, offsetX: -5, rotate: 30 },
39
+ // Frenzy
40
+ '44d4e95c-4157-0037-81b2-17841bf2e8e3': { scale: 1.8, offsetX: -17, offsetY: 2, rotate: 30 },
41
+ // Ghost
42
+ '1baa85b4-4c70-1284-64bb-6481dfc3bb4e': { scale: 2.5, offsetX: -23, offsetY: -7, rotate: 30 },
43
+ // Bandit
44
+ '410b2e0b-4ceb-1321-1727-20858f7f3477': { scale: 2.0, offsetX: -15, offsetY: 0, rotate: 30 },
45
+ // Sheriff
46
+ 'e336c6b8-418d-9340-d77f-7a9e4cfe0702': { scale: 1.8, offsetX: -12, offsetY: 0, rotate: 30 },
47
+ // ── SMGs ──
48
+ // Stinger
49
+ 'f7e1b454-4ad4-1063-ec0a-159e56b58941': { scale: 2.5, offsetX: -0, offsetY: 7, rotate: 30 },
50
+ // Spectre
51
+ '462080d1-4035-2937-7c09-27aa2a5c27a7': { scale: 3.2, offsetX: -12, offsetY: 1, rotate: 30 },
52
+ // ── Shotguns ──
53
+ // Bucky
54
+ '910be174-449b-c412-ab22-d0873436b21b': { scale: 2.5, offsetX: 0, offsetY: 0, rotate: 35 },
55
+ // Judge
56
+ 'ec845bf4-4f79-ddda-a3da-0db3774b2794': { scale: 2.5, offsetX: -2, offsetY: 0, rotate: 35 },
57
+ // ── Rifles ──
58
+ // Bulldog
59
+ 'ae3de142-4d85-2547-dd26-4e90bed35cf7': { scale: 2.5, offsetX: -4, offsetY: 0, rotate: 35 },
60
+ // Guardian
61
+ '4ade7faa-4cf1-8376-95ef-39884480959b': { scale: 3.0, offsetX: -8, offsetY: -2, rotate: 35 },
62
+ // Phantom
63
+ 'ee8e8d15-496b-07ac-e5f6-8fae5d4c7b1a': { scale: 3.0, offsetX: -8, offsetY: -2, rotate: 35 },
64
+ // Vandal
65
+ '9c82e19d-4575-0200-1a81-3eacf00cf872': { scale: 3.0, offsetX: -6, offsetY: 4, rotate: 35 },
66
+ // ── Melee ──
67
+ // Melee
68
+ '2f59173c-4bed-b6c3-2191-dea9b58be9c7': { scale: 1.0 },
69
+ // ── Snipers ──
70
+ // Marshal
71
+ 'c4883e50-4494-202c-3ec3-6b8a9284f00b': { scale: 3.0, offsetX: -4, offsetY: -4, rotate: 35 },
72
+ // Outlaw
73
+ '5f0aaf7a-4289-3998-d5ff-eb9a5cf7ef5c': { scale: 3.0, offsetX: -5, offsetY: -4, rotate: 35 },
74
+ // Operator
75
+ 'a03b24d3-4319-996d-0f8c-94bbfba1dfc7': { scale: 3.0, offsetX: -4, offsetY: -2, rotate: 35 },
76
+ // ── Heavy ──
77
+ // Ares
78
+ '55d8a0f4-4274-ca67-fe2c-06ab45efdf58': { scale: 3.0, offsetX: -5, offsetY: -3, rotate: 35 },
79
+ // Odin
80
+ '63e6c2b6-4a8e-869c-3d4c-e38355226584': { scale: 3.0, offsetX: -5, offsetY: -4, rotate: 35 },
81
+ };
82
+ /**
83
+ * Resolve the per-weapon visual tuning (scale / offset / rotate) for a
84
+ * weapon UUID, falling back to an identity transform for unknown guns.
85
+ */
86
+ function getWeaponGridTransform(weaponUuid) {
87
+ return { ...DEFAULT_WEAPON_GRID, ...WEAPON_GRID_OVERRIDES[weaponUuid] };
88
+ }
89
+ /**
90
+ * Convenience: compose the transform as an RN `ImageStyle` ready to
91
+ * pass into `OwnedItemCard`'s `iconStyle` prop for weapon-skin tiles
92
+ * in the 3-column customize picker.
93
+ */
94
+ function getWeaponGridIconStyle(weaponUuid) {
95
+ const { scale, offsetX, offsetY, rotate } = getWeaponGridTransform(weaponUuid);
96
+ return {
97
+ transform: [
98
+ { scale },
99
+ { translateX: offsetX },
100
+ { translateY: offsetY },
101
+ { rotate: `${rotate}deg` },
102
+ ],
103
+ };
104
+ }
105
+ export { getWeaponCategoryWidth, getWeaponGridTransform, getWeaponGridIconStyle };
106
+ //# sourceMappingURL=weapon-grid-transform.js.map