react-native-smart-skeleton 0.0.1

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 (173) hide show
  1. package/README.md +255 -0
  2. package/lib/commonjs/animations/breathing.js +53 -0
  3. package/lib/commonjs/animations/breathing.js.map +1 -0
  4. package/lib/commonjs/animations/pulse.js +50 -0
  5. package/lib/commonjs/animations/pulse.js.map +1 -0
  6. package/lib/commonjs/animations/shimmer.js +68 -0
  7. package/lib/commonjs/animations/shimmer.js.map +1 -0
  8. package/lib/commonjs/animations/wave.js +54 -0
  9. package/lib/commonjs/animations/wave.js.map +1 -0
  10. package/lib/commonjs/clone/SkeletonClone.js +91 -0
  11. package/lib/commonjs/clone/SkeletonClone.js.map +1 -0
  12. package/lib/commonjs/components/Circle.js +27 -0
  13. package/lib/commonjs/components/Circle.js.map +1 -0
  14. package/lib/commonjs/components/Group.js +57 -0
  15. package/lib/commonjs/components/Group.js.map +1 -0
  16. package/lib/commonjs/components/Pill.js +32 -0
  17. package/lib/commonjs/components/Pill.js.map +1 -0
  18. package/lib/commonjs/components/Rect.js +21 -0
  19. package/lib/commonjs/components/Rect.js.map +1 -0
  20. package/lib/commonjs/components/Skeleton.js +196 -0
  21. package/lib/commonjs/components/Skeleton.js.map +1 -0
  22. package/lib/commonjs/components/Square.js +28 -0
  23. package/lib/commonjs/components/Square.js.map +1 -0
  24. package/lib/commonjs/demo/demo.gif +0 -0
  25. package/lib/commonjs/hooks/useReducedMotion.js +42 -0
  26. package/lib/commonjs/hooks/useReducedMotion.js.map +1 -0
  27. package/lib/commonjs/hooks/useSkeletonTheme.js +46 -0
  28. package/lib/commonjs/hooks/useSkeletonTheme.js.map +1 -0
  29. package/lib/commonjs/index.js +149 -0
  30. package/lib/commonjs/index.js.map +1 -0
  31. package/lib/commonjs/presets/Card.js +83 -0
  32. package/lib/commonjs/presets/Card.js.map +1 -0
  33. package/lib/commonjs/presets/Chat.js +54 -0
  34. package/lib/commonjs/presets/Chat.js.map +1 -0
  35. package/lib/commonjs/presets/Product.js +70 -0
  36. package/lib/commonjs/presets/Product.js.map +1 -0
  37. package/lib/commonjs/presets/Profile.js +67 -0
  38. package/lib/commonjs/presets/Profile.js.map +1 -0
  39. package/lib/commonjs/presets/Video.js +76 -0
  40. package/lib/commonjs/presets/Video.js.map +1 -0
  41. package/lib/commonjs/providers/SkeletonProvider.js +70 -0
  42. package/lib/commonjs/providers/SkeletonProvider.js.map +1 -0
  43. package/lib/commonjs/types/index.js +6 -0
  44. package/lib/commonjs/types/index.js.map +1 -0
  45. package/lib/commonjs/utils/colors.js +144 -0
  46. package/lib/commonjs/utils/colors.js.map +1 -0
  47. package/lib/commonjs/utils/responsive.js +84 -0
  48. package/lib/commonjs/utils/responsive.js.map +1 -0
  49. package/lib/commonjs/utils/theme.js +39 -0
  50. package/lib/commonjs/utils/theme.js.map +1 -0
  51. package/lib/module/animations/breathing.js +47 -0
  52. package/lib/module/animations/breathing.js.map +1 -0
  53. package/lib/module/animations/pulse.js +44 -0
  54. package/lib/module/animations/pulse.js.map +1 -0
  55. package/lib/module/animations/shimmer.js +61 -0
  56. package/lib/module/animations/shimmer.js.map +1 -0
  57. package/lib/module/animations/wave.js +48 -0
  58. package/lib/module/animations/wave.js.map +1 -0
  59. package/lib/module/clone/SkeletonClone.js +84 -0
  60. package/lib/module/clone/SkeletonClone.js.map +1 -0
  61. package/lib/module/components/Circle.js +20 -0
  62. package/lib/module/components/Circle.js.map +1 -0
  63. package/lib/module/components/Group.js +50 -0
  64. package/lib/module/components/Group.js.map +1 -0
  65. package/lib/module/components/Pill.js +25 -0
  66. package/lib/module/components/Pill.js.map +1 -0
  67. package/lib/module/components/Rect.js +14 -0
  68. package/lib/module/components/Rect.js.map +1 -0
  69. package/lib/module/components/Skeleton.js +188 -0
  70. package/lib/module/components/Skeleton.js.map +1 -0
  71. package/lib/module/components/Square.js +21 -0
  72. package/lib/module/components/Square.js.map +1 -0
  73. package/lib/module/demo/demo.gif +0 -0
  74. package/lib/module/hooks/useReducedMotion.js +37 -0
  75. package/lib/module/hooks/useReducedMotion.js.map +1 -0
  76. package/lib/module/hooks/useSkeletonTheme.js +40 -0
  77. package/lib/module/hooks/useSkeletonTheme.js.map +1 -0
  78. package/lib/module/index.js +50 -0
  79. package/lib/module/index.js.map +1 -0
  80. package/lib/module/presets/Card.js +76 -0
  81. package/lib/module/presets/Card.js.map +1 -0
  82. package/lib/module/presets/Chat.js +47 -0
  83. package/lib/module/presets/Chat.js.map +1 -0
  84. package/lib/module/presets/Product.js +63 -0
  85. package/lib/module/presets/Product.js.map +1 -0
  86. package/lib/module/presets/Profile.js +60 -0
  87. package/lib/module/presets/Profile.js.map +1 -0
  88. package/lib/module/presets/Video.js +69 -0
  89. package/lib/module/presets/Video.js.map +1 -0
  90. package/lib/module/providers/SkeletonProvider.js +61 -0
  91. package/lib/module/providers/SkeletonProvider.js.map +1 -0
  92. package/lib/module/types/index.js +2 -0
  93. package/lib/module/types/index.js.map +1 -0
  94. package/lib/module/utils/colors.js +132 -0
  95. package/lib/module/utils/colors.js.map +1 -0
  96. package/lib/module/utils/responsive.js +74 -0
  97. package/lib/module/utils/responsive.js.map +1 -0
  98. package/lib/module/utils/theme.js +32 -0
  99. package/lib/module/utils/theme.js.map +1 -0
  100. package/lib/typescript/animations/breathing.d.ts +26 -0
  101. package/lib/typescript/animations/breathing.d.ts.map +1 -0
  102. package/lib/typescript/animations/pulse.d.ts +22 -0
  103. package/lib/typescript/animations/pulse.d.ts.map +1 -0
  104. package/lib/typescript/animations/shimmer.d.ts +34 -0
  105. package/lib/typescript/animations/shimmer.d.ts.map +1 -0
  106. package/lib/typescript/animations/wave.d.ts +23 -0
  107. package/lib/typescript/animations/wave.d.ts.map +1 -0
  108. package/lib/typescript/clone/SkeletonClone.d.ts +30 -0
  109. package/lib/typescript/clone/SkeletonClone.d.ts.map +1 -0
  110. package/lib/typescript/components/Circle.d.ts +10 -0
  111. package/lib/typescript/components/Circle.d.ts.map +1 -0
  112. package/lib/typescript/components/Group.d.ts +21 -0
  113. package/lib/typescript/components/Group.d.ts.map +1 -0
  114. package/lib/typescript/components/Pill.d.ts +12 -0
  115. package/lib/typescript/components/Pill.d.ts.map +1 -0
  116. package/lib/typescript/components/Rect.d.ts +12 -0
  117. package/lib/typescript/components/Rect.d.ts.map +1 -0
  118. package/lib/typescript/components/Skeleton.d.ts +16 -0
  119. package/lib/typescript/components/Skeleton.d.ts.map +1 -0
  120. package/lib/typescript/components/Square.d.ts +10 -0
  121. package/lib/typescript/components/Square.d.ts.map +1 -0
  122. package/lib/typescript/hooks/useReducedMotion.d.ts +11 -0
  123. package/lib/typescript/hooks/useReducedMotion.d.ts.map +1 -0
  124. package/lib/typescript/hooks/useSkeletonTheme.d.ts +12 -0
  125. package/lib/typescript/hooks/useSkeletonTheme.d.ts.map +1 -0
  126. package/lib/typescript/index.d.ts +51 -0
  127. package/lib/typescript/index.d.ts.map +1 -0
  128. package/lib/typescript/presets/Card.d.ts +11 -0
  129. package/lib/typescript/presets/Card.d.ts.map +1 -0
  130. package/lib/typescript/presets/Chat.d.ts +12 -0
  131. package/lib/typescript/presets/Chat.d.ts.map +1 -0
  132. package/lib/typescript/presets/Product.d.ts +12 -0
  133. package/lib/typescript/presets/Product.d.ts.map +1 -0
  134. package/lib/typescript/presets/Profile.d.ts +11 -0
  135. package/lib/typescript/presets/Profile.d.ts.map +1 -0
  136. package/lib/typescript/presets/Video.d.ts +12 -0
  137. package/lib/typescript/presets/Video.d.ts.map +1 -0
  138. package/lib/typescript/providers/SkeletonProvider.d.ts +18 -0
  139. package/lib/typescript/providers/SkeletonProvider.d.ts.map +1 -0
  140. package/lib/typescript/types/index.d.ts +149 -0
  141. package/lib/typescript/types/index.d.ts.map +1 -0
  142. package/lib/typescript/utils/colors.d.ts +51 -0
  143. package/lib/typescript/utils/colors.d.ts.map +1 -0
  144. package/lib/typescript/utils/responsive.d.ts +27 -0
  145. package/lib/typescript/utils/responsive.d.ts.map +1 -0
  146. package/lib/typescript/utils/theme.d.ts +16 -0
  147. package/lib/typescript/utils/theme.d.ts.map +1 -0
  148. package/package.json +74 -0
  149. package/src/animations/breathing.tsx +81 -0
  150. package/src/animations/pulse.tsx +75 -0
  151. package/src/animations/shimmer.tsx +88 -0
  152. package/src/animations/wave.tsx +74 -0
  153. package/src/clone/SkeletonClone.tsx +82 -0
  154. package/src/components/Circle.tsx +13 -0
  155. package/src/components/Group.tsx +55 -0
  156. package/src/components/Pill.tsx +23 -0
  157. package/src/components/Rect.tsx +15 -0
  158. package/src/components/Skeleton.tsx +218 -0
  159. package/src/components/Square.tsx +13 -0
  160. package/src/demo/demo.gif +0 -0
  161. package/src/hooks/useReducedMotion.ts +46 -0
  162. package/src/hooks/useSkeletonTheme.ts +45 -0
  163. package/src/index.ts +94 -0
  164. package/src/presets/Card.tsx +56 -0
  165. package/src/presets/Chat.tsx +52 -0
  166. package/src/presets/Product.tsx +45 -0
  167. package/src/presets/Profile.tsx +54 -0
  168. package/src/presets/Video.tsx +53 -0
  169. package/src/providers/SkeletonProvider.tsx +67 -0
  170. package/src/types/index.ts +246 -0
  171. package/src/utils/colors.ts +132 -0
  172. package/src/utils/responsive.ts +73 -0
  173. package/src/utils/theme.ts +35 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Card;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _Skeleton = _interopRequireDefault(require("../components/Skeleton"));
10
+ var _Circle = _interopRequireDefault(require("../components/Circle"));
11
+ var _Group = _interopRequireDefault(require("../components/Group"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
14
+ /**
15
+ * A ready-made skeleton block mimicking a typical content card: an image
16
+ * area on top, optionally a small avatar + name row, then body text lines.
17
+ *
18
+ * @example
19
+ * <Skeleton.Card imageHeight={160} lines={3} />
20
+ */
21
+ function Card({
22
+ imageHeight = 160,
23
+ lines = 3,
24
+ showAvatar = false,
25
+ count = 1,
26
+ gap = 20,
27
+ animation,
28
+ style,
29
+ testID
30
+ }) {
31
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
32
+ style: style,
33
+ testID: testID
34
+ }, Array.from({
35
+ length: count
36
+ }).map((_, blockIndex) => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
37
+ key: blockIndex,
38
+ style: {
39
+ marginTop: blockIndex === 0 ? 0 : gap
40
+ }
41
+ }, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
42
+ width: "100%",
43
+ height: imageHeight,
44
+ borderRadius: 12,
45
+ animation: animation
46
+ }), showAvatar && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
47
+ style: {
48
+ flexDirection: "row",
49
+ alignItems: "center",
50
+ marginTop: 12
51
+ }
52
+ }, /*#__PURE__*/_react.default.createElement(_Circle.default, {
53
+ size: 32,
54
+ animation: animation
55
+ }), /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
56
+ width: "40%",
57
+ height: 12,
58
+ style: {
59
+ marginLeft: 8
60
+ },
61
+ animation: animation
62
+ })), /*#__PURE__*/_react.default.createElement(_Group.default, {
63
+ staggerDelay: 60,
64
+ animation: animation,
65
+ style: {
66
+ marginTop: showAvatar ? 12 : 16
67
+ }
68
+ }, Array.from({
69
+ length: lines
70
+ }, (__, lineIndex) => {
71
+ const lineProps = {
72
+ width: lineIndex === lines - 1 ? "50%" : "100%",
73
+ height: 12,
74
+ style: {
75
+ marginTop: lineIndex === 0 ? 0 : 8
76
+ }
77
+ };
78
+ return /*#__PURE__*/_react.default.createElement(_Skeleton.default, _extends({
79
+ key: lineIndex
80
+ }, lineProps));
81
+ })))));
82
+ }
83
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Skeleton","_Circle","_Group","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","Card","imageHeight","lines","showAvatar","count","gap","animation","style","testID","createElement","View","Array","from","map","_","blockIndex","key","marginTop","width","height","borderRadius","flexDirection","alignItems","size","marginLeft","staggerDelay","__","lineIndex","lineProps"],"sourceRoot":"../../../src","sources":["presets/Card.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Chat;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _Skeleton = _interopRequireDefault(require("../components/Skeleton"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const BUBBLE_WIDTHS = ["55%", "70%", "45%", "62%"];
12
+
13
+ /**
14
+ * A ready-made skeleton block mimicking a chat conversation: a series of
15
+ * message bubbles, alternating left/right alignment by default to read as
16
+ * a two-party conversation while loading.
17
+ *
18
+ * @example
19
+ * <Skeleton.Chat messages={5} />
20
+ */
21
+ function Chat({
22
+ messages = 4,
23
+ alternate = true,
24
+ gap = 12,
25
+ animation,
26
+ style,
27
+ testID
28
+ }) {
29
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
30
+ style: style,
31
+ testID: testID
32
+ }, Array.from({
33
+ length: messages
34
+ }).map((_, index) => {
35
+ const isRight = alternate && index % 2 === 1;
36
+ const width = BUBBLE_WIDTHS[index % BUBBLE_WIDTHS.length];
37
+ const height = 18 + index % 3 * 6;
38
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
39
+ key: index,
40
+ style: {
41
+ flexDirection: "row",
42
+ justifyContent: isRight ? "flex-end" : "flex-start",
43
+ marginTop: index === 0 ? 0 : gap
44
+ }
45
+ }, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
46
+ width: width,
47
+ height: height,
48
+ borderRadius: 14,
49
+ animation: animation,
50
+ delay: index * 70
51
+ }));
52
+ }));
53
+ }
54
+ //# sourceMappingURL=Chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Skeleton","e","__esModule","default","BUBBLE_WIDTHS","Chat","messages","alternate","gap","animation","style","testID","createElement","View","Array","from","length","map","_","index","isRight","width","height","key","flexDirection","justifyContent","marginTop","borderRadius","delay"],"sourceRoot":"../../../src","sources":["presets/Chat.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG9C,MAAMG,aAAa,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,IAAIA,CAAC;EACzBC,QAAQ,GAAG,CAAC;EACZC,SAAS,GAAG,IAAI;EAChBC,GAAG,GAAG,EAAE;EACRC,SAAS;EACTC,KAAK;EACLC;AACqB,CAAC,EAAE;EACxB,oBACIf,MAAA,CAAAO,OAAA,CAAAS,aAAA,CAACb,YAAA,CAAAc,IAAI;IAACH,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA;EAAO,GAC9BG,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEV;EAAS,CAAC,CAAC,CAACW,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAK;IAChD,MAAMC,OAAO,GAAGb,SAAS,IAAIY,KAAK,GAAG,CAAC,KAAK,CAAC;IAC5C,MAAME,KAAK,GAAGjB,aAAa,CAACe,KAAK,GAAGf,aAAa,CAACY,MAAM,CAAC;IACzD,MAAMM,MAAM,GAAG,EAAE,GAAKH,KAAK,GAAG,CAAC,GAAI,CAAE;IAErC,oBACIvB,MAAA,CAAAO,OAAA,CAAAS,aAAA,CAACb,YAAA,CAAAc,IAAI;MACDU,GAAG,EAAEJ,KAAM;MACXT,KAAK,EAAE;QACHc,aAAa,EAAE,KAAK;QACpBC,cAAc,EAAEL,OAAO,GAAG,UAAU,GAAG,YAAY;QACnDM,SAAS,EAAEP,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGX;MACjC;IAAE,gBAEFZ,MAAA,CAAAO,OAAA,CAAAS,aAAA,CAACZ,SAAA,CAAAG,OAAQ;MACLkB,KAAK,EAAEA,KAAM;MACbC,MAAM,EAAEA,MAAO;MACfK,YAAY,EAAE,EAAG;MACjBlB,SAAS,EAAEA,SAAU;MACrBmB,KAAK,EAAET,KAAK,GAAG;IAAG,CACrB,CACC,CAAC;EAEf,CAAC,CACC,CAAC;AAEf","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Product;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _Skeleton = _interopRequireDefault(require("../components/Skeleton"));
10
+ var _responsive = require("../utils/responsive");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /**
13
+ * A ready-made skeleton grid mimicking a product listing (e.g. e-commerce
14
+ * catalog or search results): square-ish image, title line, and price line,
15
+ * tiled into a responsive grid.
16
+ *
17
+ * @example
18
+ * <Skeleton.Product count={6} columns={2} />
19
+ */
20
+ function Product({
21
+ imageHeight = 140,
22
+ columns,
23
+ count = 4,
24
+ gap = 16,
25
+ animation,
26
+ style,
27
+ testID
28
+ }) {
29
+ const resolvedColumns = columns ?? (0, _responsive.getRecommendedColumns)();
30
+ const itemWidth = `${100 / resolvedColumns}%`;
31
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
32
+ style: [{
33
+ flexDirection: "row",
34
+ flexWrap: "wrap"
35
+ }, style],
36
+ testID: testID
37
+ }, Array.from({
38
+ length: count
39
+ }).map((_, index) => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
40
+ key: index,
41
+ style: {
42
+ width: itemWidth,
43
+ paddingHorizontal: gap / 2,
44
+ marginBottom: gap
45
+ }
46
+ }, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
47
+ width: "100%",
48
+ height: imageHeight,
49
+ borderRadius: 10,
50
+ animation: animation,
51
+ delay: index * 40
52
+ }), /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
53
+ width: "80%",
54
+ height: 12,
55
+ style: {
56
+ marginTop: 8
57
+ },
58
+ animation: animation,
59
+ delay: index * 40
60
+ }), /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
61
+ width: "40%",
62
+ height: 12,
63
+ style: {
64
+ marginTop: 6
65
+ },
66
+ animation: animation,
67
+ delay: index * 40
68
+ }))));
69
+ }
70
+ //# sourceMappingURL=Product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Skeleton","_responsive","e","__esModule","default","Product","imageHeight","columns","count","gap","animation","style","testID","resolvedColumns","getRecommendedColumns","itemWidth","createElement","View","flexDirection","flexWrap","Array","from","length","map","_","index","key","width","paddingHorizontal","marginBottom","height","borderRadius","delay","marginTop"],"sourceRoot":"../../../src","sources":["presets/Product.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAA4D,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,OAAOA,CAAC;EAC5BC,WAAW,GAAG,GAAG;EACjBC,OAAO;EACPC,KAAK,GAAG,CAAC;EACTC,GAAG,GAAG,EAAE;EACRC,SAAS;EACTC,KAAK;EACLC;AACwB,CAAC,EAAE;EAC3B,MAAMC,eAAe,GAAGN,OAAO,IAAI,IAAAO,iCAAqB,EAAC,CAAC;EAC1D,MAAMC,SAAS,GAAG,GAAG,GAAG,GAAGF,eAAe,GAAG;EAE7C,oBACIjB,MAAA,CAAAQ,OAAA,CAAAY,aAAA,CAACjB,YAAA,CAAAkB,IAAI;IAACN,KAAK,EAAE,CAAC;MAAEO,aAAa,EAAE,KAAK;MAAEC,QAAQ,EAAE;IAAO,CAAC,EAAER,KAAK,CAAE;IAACC,MAAM,EAAEA;EAAO,GAC5EQ,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAEd;EAAM,CAAC,CAAC,CAACe,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,kBACxC7B,MAAA,CAAAQ,OAAA,CAAAY,aAAA,CAACjB,YAAA,CAAAkB,IAAI;IACDS,GAAG,EAAED,KAAM;IACXd,KAAK,EAAE;MACHgB,KAAK,EAAEZ,SAAgB;MACvBa,iBAAiB,EAAEnB,GAAG,GAAG,CAAC;MAC1BoB,YAAY,EAAEpB;IAClB;EAAE,gBAEFb,MAAA,CAAAQ,OAAA,CAAAY,aAAA,CAAChB,SAAA,CAAAI,OAAQ;IAACuB,KAAK,EAAC,MAAM;IAACG,MAAM,EAAExB,WAAY;IAACyB,YAAY,EAAE,EAAG;IAACrB,SAAS,EAAEA,SAAU;IAACsB,KAAK,EAAEP,KAAK,GAAG;EAAG,CAAE,CAAC,eACzG7B,MAAA,CAAAQ,OAAA,CAAAY,aAAA,CAAChB,SAAA,CAAAI,OAAQ;IAACuB,KAAK,EAAC,KAAK;IAACG,MAAM,EAAE,EAAG;IAACnB,KAAK,EAAE;MAAEsB,SAAS,EAAE;IAAE,CAAE;IAACvB,SAAS,EAAEA,SAAU;IAACsB,KAAK,EAAEP,KAAK,GAAG;EAAG,CAAE,CAAC,eACtG7B,MAAA,CAAAQ,OAAA,CAAAY,aAAA,CAAChB,SAAA,CAAAI,OAAQ;IAACuB,KAAK,EAAC,KAAK;IAACG,MAAM,EAAE,EAAG;IAACnB,KAAK,EAAE;MAAEsB,SAAS,EAAE;IAAE,CAAE;IAACvB,SAAS,EAAEA,SAAU;IAACsB,KAAK,EAAEP,KAAK,GAAG;EAAG,CAAE,CACnG,CACT,CACC,CAAC;AAEf","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Profile;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _Skeleton = _interopRequireDefault(require("../components/Skeleton"));
10
+ var _Circle = _interopRequireDefault(require("../components/Circle"));
11
+ var _Group = _interopRequireDefault(require("../components/Group"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
14
+ /**
15
+ * A ready-made skeleton block mimicking a profile header: a circular avatar
16
+ * beside a name line and one or more secondary text lines (e.g. handle/bio).
17
+ *
18
+ * @example
19
+ * <Skeleton.Profile avatarSize={56} lines={2} />
20
+ */
21
+ function Profile({
22
+ avatarSize = 56,
23
+ lines = 2,
24
+ count = 1,
25
+ gap = 16,
26
+ animation,
27
+ style,
28
+ testID
29
+ }) {
30
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
31
+ style: style,
32
+ testID: testID
33
+ }, Array.from({
34
+ length: count
35
+ }).map((_, blockIndex) => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
36
+ key: blockIndex,
37
+ style: {
38
+ flexDirection: "row",
39
+ alignItems: "center",
40
+ marginTop: blockIndex === 0 ? 0 : gap
41
+ }
42
+ }, /*#__PURE__*/_react.default.createElement(_Circle.default, {
43
+ size: avatarSize,
44
+ animation: animation
45
+ }), /*#__PURE__*/_react.default.createElement(_Group.default, {
46
+ staggerDelay: 60,
47
+ animation: animation,
48
+ style: {
49
+ marginLeft: 12,
50
+ flex: 1
51
+ }
52
+ }, Array.from({
53
+ length: lines
54
+ }, (__, lineIndex) => {
55
+ const lineProps = {
56
+ width: lineIndex === 0 ? "60%" : `${85 - lineIndex * 15}%`,
57
+ height: lineIndex === 0 ? 16 : 12,
58
+ style: {
59
+ marginTop: lineIndex === 0 ? 0 : 8
60
+ }
61
+ };
62
+ return /*#__PURE__*/_react.default.createElement(_Skeleton.default, _extends({
63
+ key: lineIndex
64
+ }, lineProps));
65
+ })))));
66
+ }
67
+ //# sourceMappingURL=Profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Skeleton","_Circle","_Group","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","Profile","avatarSize","lines","count","gap","animation","style","testID","createElement","View","Array","from","map","_","blockIndex","key","flexDirection","alignItems","marginTop","size","staggerDelay","marginLeft","flex","__","lineIndex","lineProps","width","height"],"sourceRoot":"../../../src","sources":["presets/Profile.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAL,sBAAA,CAAAC,OAAA;AAAwC,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,SAAA,WAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAP,CAAA,MAAAA,CAAA,GAAAQ,SAAA,CAAAC,MAAA,EAAAT,CAAA,UAAAU,CAAA,GAAAF,SAAA,CAAAR,CAAA,YAAAW,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAJ,CAAA,CAAAI,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAJ,CAAA,KAAAJ,QAAA,CAAAW,KAAA,OAAAN,SAAA;AAGxC;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASO,OAAOA,CAAC;EAC5BC,UAAU,GAAG,EAAE;EACfC,KAAK,GAAG,CAAC;EACTC,KAAK,GAAG,CAAC;EACTC,GAAG,GAAG,EAAE;EACRC,SAAS;EACTC,KAAK;EACLC;AACwB,CAAC,EAAE;EAC3B,oBACI7B,MAAA,CAAAS,OAAA,CAAAqB,aAAA,CAAC3B,YAAA,CAAA4B,IAAI;IAACH,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA;EAAO,GAC9BG,KAAK,CAACC,IAAI,CAAC;IAAEjB,MAAM,EAAES;EAAM,CAAC,CAAC,CAACS,GAAG,CAAC,CAACC,CAAC,EAAEC,UAAU,kBAC7CpC,MAAA,CAAAS,OAAA,CAAAqB,aAAA,CAAC3B,YAAA,CAAA4B,IAAI;IACDM,GAAG,EAAED,UAAW;IAChBR,KAAK,EAAE;MACHU,aAAa,EAAE,KAAK;MACpBC,UAAU,EAAE,QAAQ;MACpBC,SAAS,EAAEJ,UAAU,KAAK,CAAC,GAAG,CAAC,GAAGV;IACtC;EAAE,gBAEF1B,MAAA,CAAAS,OAAA,CAAAqB,aAAA,CAACzB,OAAA,CAAAI,OAAM;IAACgC,IAAI,EAAElB,UAAW;IAACI,SAAS,EAAEA;EAAU,CAAE,CAAC,eAClD3B,MAAA,CAAAS,OAAA,CAAAqB,aAAA,CAACxB,MAAA,CAAAG,OAAK;IACFiC,YAAY,EAAE,EAAG;IACjBf,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAE;MAAEe,UAAU,EAAE,EAAE;MAAEC,IAAI,EAAE;IAAE;EAAE,GAElCZ,KAAK,CAACC,IAAI,CAAC;IAAEjB,MAAM,EAAEQ;EAAM,CAAC,EAAE,CAACqB,EAAE,EAAEC,SAAS,KAAK;IAC9C,MAAMC,SAAwB,GAAG;MAC7BC,KAAK,EAAEF,SAAS,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG,EAAE,GAAGA,SAAS,GAAG,EAAE,GAAG;MAC1DG,MAAM,EAAEH,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;MACjClB,KAAK,EAAE;QAAEY,SAAS,EAAEM,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG;MAAE;IAChD,CAAC;IACD,oBAAO9C,MAAA,CAAAS,OAAA,CAAAqB,aAAA,CAAC1B,SAAA,CAAAK,OAAQ,EAAAC,QAAA;MAAC2B,GAAG,EAAES;IAAU,GAAKC,SAAS,CAAG,CAAC;EACtD,CAAC,CACE,CACL,CACT,CACC,CAAC;AAEf","ignoreList":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Video;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _Skeleton = _interopRequireDefault(require("../components/Skeleton"));
10
+ var _Circle = _interopRequireDefault(require("../components/Circle"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /**
13
+ * A ready-made skeleton block mimicking a video list item: a video
14
+ * thumbnail at a given aspect ratio, optionally followed by a channel
15
+ * avatar + title row and a meta line (views / date).
16
+ *
17
+ * @example
18
+ * <Skeleton.Video aspectRatio={16 / 9} showTitle showMeta />
19
+ */
20
+ function Video({
21
+ aspectRatio = 16 / 9,
22
+ showTitle = true,
23
+ showMeta = true,
24
+ count = 1,
25
+ gap = 20,
26
+ animation,
27
+ style,
28
+ testID
29
+ }) {
30
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
31
+ style: style,
32
+ testID: testID
33
+ }, Array.from({
34
+ length: count
35
+ }).map((_, index) => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
36
+ key: index,
37
+ style: {
38
+ marginTop: index === 0 ? 0 : gap
39
+ }
40
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
41
+ style: {
42
+ width: "100%",
43
+ aspectRatio
44
+ }
45
+ }, /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
46
+ width: "100%",
47
+ height: "100%",
48
+ borderRadius: 10,
49
+ animation: animation
50
+ })), (showTitle || showMeta) && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
51
+ style: {
52
+ flexDirection: "row",
53
+ marginTop: 10
54
+ }
55
+ }, /*#__PURE__*/_react.default.createElement(_Circle.default, {
56
+ size: 36,
57
+ animation: animation
58
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
59
+ style: {
60
+ marginLeft: 10,
61
+ flex: 1
62
+ }
63
+ }, showTitle && /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
64
+ width: "90%",
65
+ height: 14,
66
+ animation: animation
67
+ }), showMeta && /*#__PURE__*/_react.default.createElement(_Skeleton.default, {
68
+ width: "50%",
69
+ height: 11,
70
+ style: {
71
+ marginTop: 6
72
+ },
73
+ animation: animation
74
+ }))))));
75
+ }
76
+ //# sourceMappingURL=Video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Skeleton","_Circle","e","__esModule","default","Video","aspectRatio","showTitle","showMeta","count","gap","animation","style","testID","createElement","View","Array","from","length","map","_","index","key","marginTop","width","height","borderRadius","flexDirection","size","marginLeft","flex"],"sourceRoot":"../../../src","sources":["presets/Video.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,OAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAA0C,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASG,KAAKA,CAAC;EAC1BC,WAAW,GAAG,EAAE,GAAG,CAAC;EACpBC,SAAS,GAAG,IAAI;EAChBC,QAAQ,GAAG,IAAI;EACfC,KAAK,GAAG,CAAC;EACTC,GAAG,GAAG,EAAE;EACRC,SAAS;EACTC,KAAK;EACLC;AACsB,CAAC,EAAE;EACzB,oBACIjB,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACf,YAAA,CAAAgB,IAAI;IAACH,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA;EAAO,GAC9BG,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAET;EAAM,CAAC,CAAC,CAACU,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,kBACxCzB,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACf,YAAA,CAAAgB,IAAI;IAACO,GAAG,EAAED,KAAM;IAACT,KAAK,EAAE;MAAEW,SAAS,EAAEF,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGX;IAAI;EAAE,gBAC1Dd,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACf,YAAA,CAAAgB,IAAI;IAACH,KAAK,EAAE;MAAEY,KAAK,EAAE,MAAM;MAAElB;IAAY;EAAE,gBACxCV,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACd,SAAA,CAAAI,OAAQ;IAACoB,KAAK,EAAC,MAAM;IAACC,MAAM,EAAC,MAAM;IAACC,YAAY,EAAE,EAAG;IAACf,SAAS,EAAEA;EAAU,CAAE,CAC5E,CAAC,EAEN,CAACJ,SAAS,IAAIC,QAAQ,kBACnBZ,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACf,YAAA,CAAAgB,IAAI;IAACH,KAAK,EAAE;MAAEe,aAAa,EAAE,KAAK;MAAEJ,SAAS,EAAE;IAAG;EAAE,gBACjD3B,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACb,OAAA,CAAAG,OAAM;IAACwB,IAAI,EAAE,EAAG;IAACjB,SAAS,EAAEA;EAAU,CAAE,CAAC,eAC1Cf,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACf,YAAA,CAAAgB,IAAI;IAACH,KAAK,EAAE;MAAEiB,UAAU,EAAE,EAAE;MAAEC,IAAI,EAAE;IAAE;EAAE,GACpCvB,SAAS,iBAAIX,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACd,SAAA,CAAAI,OAAQ;IAACoB,KAAK,EAAC,KAAK;IAACC,MAAM,EAAE,EAAG;IAACd,SAAS,EAAEA;EAAU,CAAE,CAAC,EACvEH,QAAQ,iBACLZ,MAAA,CAAAQ,OAAA,CAAAU,aAAA,CAACd,SAAA,CAAAI,OAAQ;IACLoB,KAAK,EAAC,KAAK;IACXC,MAAM,EAAE,EAAG;IACXb,KAAK,EAAE;MAAEW,SAAS,EAAE;IAAE,CAAE;IACxBZ,SAAS,EAAEA;EAAU,CACxB,CAEH,CACJ,CAER,CACT,CACC,CAAC;AAEf","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SkeletonContext = void 0;
7
+ exports.SkeletonProvider = SkeletonProvider;
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _reactNative = require("react-native");
11
+ var _useReducedMotion = require("../hooks/useReducedMotion");
12
+ var _theme = require("../utils/theme");
13
+ var _colors = require("../utils/colors");
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ const SkeletonContext = exports.SkeletonContext = /*#__PURE__*/(0, _react.createContext)(null);
16
+
17
+ /**
18
+ * Global configuration provider for react-native-smart-skeleton.
19
+ *
20
+ * Wrap your app (or a subtree) once to set defaults for theme, animation,
21
+ * duration, performance mode, RTL, reduced-motion override, and brand colors.
22
+ * Any individual Skeleton component can still override these via its own props.
23
+ *
24
+ * @example
25
+ * <SkeletonProvider theme="system" animation="shimmer" duration={1200}>
26
+ * <App />
27
+ * </SkeletonProvider>
28
+ */
29
+ function SkeletonProvider({
30
+ children,
31
+ theme = "system",
32
+ animation = "shimmer",
33
+ duration = 1200,
34
+ performanceMode = "balanced",
35
+ rtl,
36
+ reducedMotion: reducedMotionOverride,
37
+ colors
38
+ }) {
39
+ const systemScheme = (0, _reactNative.useColorScheme)();
40
+ const osReducedMotion = (0, _useReducedMotion.useReducedMotion)();
41
+ const isDark = (0, _theme.resolveIsDark)(theme, systemScheme);
42
+ const reducedMotion = reducedMotionOverride ?? osReducedMotion;
43
+ const resolvedRtl = rtl ?? _reactNative.I18nManager.isRTL;
44
+ const value = (0, _react.useMemo)(() => {
45
+ const ambient = (0, _theme.getDefaultThemeColors)(isDark);
46
+ const getVariantColors = variant => (0, _colors.resolveThemeColors)({
47
+ colorVariant: variant,
48
+ isDark,
49
+ brandColors: colors,
50
+ ambient
51
+ });
52
+ return {
53
+ theme,
54
+ isDark,
55
+ animation,
56
+ duration,
57
+ performanceMode,
58
+ reducedMotion,
59
+ rtl: resolvedRtl,
60
+ colors,
61
+ resolvedColors: ambient,
62
+ getVariantColors
63
+ };
64
+ }, [theme, isDark, animation, duration, performanceMode, reducedMotion, resolvedRtl, colors]);
65
+ return /*#__PURE__*/_react.default.createElement(SkeletonContext.Provider, {
66
+ value: value
67
+ }, children);
68
+ }
69
+ var _default = exports.default = SkeletonProvider;
70
+ //# sourceMappingURL=SkeletonProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useReducedMotion","_theme","_colors","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SkeletonContext","exports","createContext","SkeletonProvider","children","theme","animation","duration","performanceMode","rtl","reducedMotion","reducedMotionOverride","colors","systemScheme","useColorScheme","osReducedMotion","useReducedMotion","isDark","resolveIsDark","resolvedRtl","I18nManager","isRTL","value","useMemo","ambient","getDefaultThemeColors","getVariantColors","variant","resolveThemeColors","colorVariant","brandColors","resolvedColors","createElement","Provider","_default"],"sourceRoot":"../../../src","sources":["providers/SkeletonProvider.tsx"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAAqD,SAAAD,wBAAAM,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAR,uBAAA,YAAAA,CAAAM,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAG9C,MAAMkB,eAAe,GAAAC,OAAA,CAAAD,eAAA,gBAAG,IAAAE,oBAAa,EAA8B,IAAI,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAAC;EAC7BC,QAAQ;EACRC,KAAK,GAAG,QAAQ;EAChBC,SAAS,GAAG,SAAS;EACrBC,QAAQ,GAAG,IAAI;EACfC,eAAe,GAAG,UAAU;EAC5BC,GAAG;EACHC,aAAa,EAAEC,qBAAqB;EACpCC;AACmB,CAAC,EAAE;EACtB,MAAMC,YAAY,GAAG,IAAAC,2BAAc,EAAC,CAAC;EACrC,MAAMC,eAAe,GAAG,IAAAC,kCAAgB,EAAC,CAAC;EAE1C,MAAMC,MAAM,GAAG,IAAAC,oBAAa,EAACb,KAAK,EAAEQ,YAAY,CAAC;EACjD,MAAMH,aAAa,GAAGC,qBAAqB,IAAII,eAAe;EAC9D,MAAMI,WAAW,GAAGV,GAAG,IAAIW,wBAAW,CAACC,KAAK;EAE5C,MAAMC,KAAK,GAAG,IAAAC,cAAO,EAAuB,MAAM;IAC9C,MAAMC,OAAO,GAAG,IAAAC,4BAAqB,EAACR,MAAM,CAAC;IAE7C,MAAMS,gBAAgB,GAAIC,OAAgB,IACtC,IAAAC,0BAAkB,EAAC;MACfC,YAAY,EAAEF,OAAO;MACrBV,MAAM;MACNa,WAAW,EAAElB,MAAM;MACnBY;IACJ,CAAC,CAAC;IAEN,OAAO;MACHnB,KAAK;MACLY,MAAM;MACNX,SAAS;MACTC,QAAQ;MACRC,eAAe;MACfE,aAAa;MACbD,GAAG,EAAEU,WAAW;MAChBP,MAAM;MACNmB,cAAc,EAAEP,OAAO;MACvBE;IACJ,CAAC;EACL,CAAC,EAAE,CAACrB,KAAK,EAAEY,MAAM,EAAEX,SAAS,EAAEC,QAAQ,EAAEC,eAAe,EAAEE,aAAa,EAAES,WAAW,EAAEP,MAAM,CAAC,CAAC;EAE7F,oBAAOtC,MAAA,CAAAiB,OAAA,CAAAyC,aAAA,CAAChC,eAAe,CAACiC,QAAQ;IAACX,KAAK,EAAEA;EAAM,GAAElB,QAAmC,CAAC;AACxF;AAAC,IAAA8B,QAAA,GAAAjC,OAAA,CAAAV,OAAA,GAEcY,gBAAgB","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["types/index.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_LIGHT_COLORS = exports.DEFAULT_DARK_COLORS = void 0;
7
+ exports.buildSweepGradient = buildSweepGradient;
8
+ exports.parseHexColor = parseHexColor;
9
+ exports.resolveThemeColors = resolveThemeColors;
10
+ exports.shadeColor = shadeColor;
11
+ exports.toRgbaString = toRgbaString;
12
+ exports.withOpacity = withOpacity;
13
+ /**
14
+ * Default light/dark palettes used when no brand colors or explicit
15
+ * backgroundColor/highlightColor are supplied.
16
+ */
17
+ const DEFAULT_LIGHT_COLORS = exports.DEFAULT_LIGHT_COLORS = {
18
+ background: "#E5E7EB",
19
+ highlight: "#F3F4F6"
20
+ };
21
+ const DEFAULT_DARK_COLORS = exports.DEFAULT_DARK_COLORS = {
22
+ background: "#2D3748",
23
+ highlight: "#4A5568"
24
+ };
25
+
26
+ /**
27
+ * Clamp a number between 0 and 255.
28
+ */
29
+ function clampChannel(value) {
30
+ return Math.max(0, Math.min(255, Math.round(value)));
31
+ }
32
+
33
+ /**
34
+ * Parse a hex color (#RGB, #RRGGBB, #RRGGBBAA) into r/g/b/a channels.
35
+ * Returns null if the string isn't a parseable hex color.
36
+ */
37
+ function parseHexColor(hex) {
38
+ const normalized = hex.trim().replace("#", "");
39
+ if (normalized.length === 3) {
40
+ const r = parseInt(normalized[0] + normalized[0], 16);
41
+ const g = parseInt(normalized[1] + normalized[1], 16);
42
+ const b = parseInt(normalized[2] + normalized[2], 16);
43
+ return {
44
+ r,
45
+ g,
46
+ b,
47
+ a: 1
48
+ };
49
+ }
50
+ if (normalized.length === 6) {
51
+ const r = parseInt(normalized.slice(0, 2), 16);
52
+ const g = parseInt(normalized.slice(2, 4), 16);
53
+ const b = parseInt(normalized.slice(4, 6), 16);
54
+ return {
55
+ r,
56
+ g,
57
+ b,
58
+ a: 1
59
+ };
60
+ }
61
+ if (normalized.length === 8) {
62
+ const r = parseInt(normalized.slice(0, 2), 16);
63
+ const g = parseInt(normalized.slice(2, 4), 16);
64
+ const b = parseInt(normalized.slice(4, 6), 16);
65
+ const a = parseInt(normalized.slice(6, 8), 16) / 255;
66
+ return {
67
+ r,
68
+ g,
69
+ b,
70
+ a
71
+ };
72
+ }
73
+ return null;
74
+ }
75
+
76
+ /**
77
+ * Convert an rgb/rgba channel set back into a CSS rgba() string.
78
+ */
79
+ function toRgbaString(r, g, b, a) {
80
+ return `rgba(${clampChannel(r)}, ${clampChannel(g)}, ${clampChannel(b)}, ${Math.max(0, Math.min(1, a))})`;
81
+ }
82
+
83
+ /**
84
+ * Lighten or darken a hex color by a percentage (-1 to 1).
85
+ * Positive amount lightens, negative darkens. Non-hex input is returned unchanged.
86
+ */
87
+ function shadeColor(hex, amount) {
88
+ const parsed = parseHexColor(hex);
89
+ if (!parsed) return hex;
90
+ const {
91
+ r,
92
+ g,
93
+ b,
94
+ a
95
+ } = parsed;
96
+ const factor = amount;
97
+ const adjust = channel => factor >= 0 ? channel + (255 - channel) * factor : channel + channel * factor;
98
+ return toRgbaString(adjust(r), adjust(g), adjust(b), a);
99
+ }
100
+
101
+ /**
102
+ * Given a hex/rgba color, return a translucent rgba() version at the given opacity.
103
+ * Falls back to the original string if it isn't parseable (e.g. already rgba(), or a named color).
104
+ */
105
+ function withOpacity(color, opacity) {
106
+ const parsed = parseHexColor(color);
107
+ if (!parsed) return color;
108
+ return toRgbaString(parsed.r, parsed.g, parsed.b, opacity);
109
+ }
110
+
111
+ /**
112
+ * Resolve the {background, highlight} pair to use for a skeleton, given (in priority order):
113
+ * 1. explicit backgroundColor/highlightColor props
114
+ * 2. a brand color variant (colorVariant + colors map from the provider)
115
+ * 3. the ambient theme colors resolved from useSkeletonTheme
116
+ */
117
+ function resolveThemeColors(params) {
118
+ const {
119
+ backgroundColor,
120
+ highlightColor,
121
+ colorVariant,
122
+ isDark,
123
+ brandColors,
124
+ ambient
125
+ } = params;
126
+ let base = ambient;
127
+ if (colorVariant && brandColors && brandColors[colorVariant]) {
128
+ const variant = brandColors[colorVariant];
129
+ base = isDark ? variant.dark : variant.light;
130
+ }
131
+ return {
132
+ background: backgroundColor ?? base.background,
133
+ highlight: highlightColor ?? base.highlight
134
+ };
135
+ }
136
+
137
+ /**
138
+ * Build a 3-stop gradient color array from a background/highlight pair,
139
+ * matching the classic skeleton "sweep" look: base -> highlight -> base.
140
+ */
141
+ function buildSweepGradient(background, highlight) {
142
+ return [background, highlight, background];
143
+ }
144
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_LIGHT_COLORS","exports","background","highlight","DEFAULT_DARK_COLORS","clampChannel","value","Math","max","min","round","parseHexColor","hex","normalized","trim","replace","length","r","parseInt","g","b","a","slice","toRgbaString","shadeColor","amount","parsed","factor","adjust","channel","withOpacity","color","opacity","resolveThemeColors","params","backgroundColor","highlightColor","colorVariant","isDark","brandColors","ambient","base","variant","dark","light","buildSweepGradient"],"sourceRoot":"../../../src","sources":["utils/colors.ts"],"mappings":"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","ignoreList":[]}