@unif/react-native-design 0.31.3 → 0.32.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 (165) hide show
  1. package/README.md +6 -0
  2. package/lib/module/components/ui/Avatar/Avatar.js +2 -1
  3. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  4. package/lib/module/components/ui/Avatar/geometry.js +43 -0
  5. package/lib/module/components/ui/Avatar/geometry.js.map +1 -0
  6. package/lib/module/components/ui/Avatar/styles.js +1 -41
  7. package/lib/module/components/ui/Avatar/styles.js.map +1 -1
  8. package/lib/module/components/ui/AvatarGroup/AvatarGroup.js +1 -1
  9. package/lib/module/components/ui/AvatarGroup/AvatarGroup.js.map +1 -1
  10. package/lib/module/components/ui/CircularProgress/CircularProgress.js +14 -25
  11. package/lib/module/components/ui/CircularProgress/CircularProgress.js.map +1 -1
  12. package/lib/module/components/ui/CircularProgress/normalizeCircularProgress.js.map +1 -1
  13. package/lib/module/components/ui/CircularProgress/styles.js +24 -0
  14. package/lib/module/components/ui/CircularProgress/styles.js.map +1 -0
  15. package/lib/module/components/ui/Pulse/PulseDot.js +5 -5
  16. package/lib/module/components/ui/Pulse/PulseDot.js.map +1 -1
  17. package/lib/module/components/ui/Pulse/constants.js +15 -0
  18. package/lib/module/components/ui/Pulse/constants.js.map +1 -0
  19. package/lib/module/components/ui/Pulse/usePulse.js +4 -62
  20. package/lib/module/components/ui/Pulse/usePulse.js.map +1 -1
  21. package/lib/module/components/ui/Skeleton/Skeleton.js +6 -2
  22. package/lib/module/components/ui/Skeleton/Skeleton.js.map +1 -1
  23. package/lib/module/components/ui/Skeleton/constants.js +9 -0
  24. package/lib/module/components/ui/Skeleton/constants.js.map +1 -0
  25. package/lib/module/components/ui/TextField/TextFieldBase.js +21 -4
  26. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  27. package/lib/module/components/ui/TextField/constants.js +7 -0
  28. package/lib/module/components/ui/TextField/constants.js.map +1 -0
  29. package/lib/module/components/ui/TextField/styles.js +10 -2
  30. package/lib/module/components/ui/TextField/styles.js.map +1 -1
  31. package/lib/module/components/ui/TextField/useMultilineLayout.js +18 -0
  32. package/lib/module/components/ui/TextField/useMultilineLayout.js.map +1 -0
  33. package/lib/module/components/ui/TextField/useMultilineLayout.web.js +44 -0
  34. package/lib/module/components/ui/TextField/useMultilineLayout.web.js.map +1 -0
  35. package/lib/module/components/ui/Thumbnail/Thumbnail.js +13 -6
  36. package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
  37. package/lib/module/components/ui/Thumbnail/constants.js +22 -0
  38. package/lib/module/components/ui/Thumbnail/constants.js.map +1 -0
  39. package/lib/module/components/ui/Thumbnail/normalize.js +30 -1
  40. package/lib/module/components/ui/Thumbnail/normalize.js.map +1 -1
  41. package/lib/module/components/ui/Thumbnail/styles.js +5 -28
  42. package/lib/module/components/ui/Thumbnail/styles.js.map +1 -1
  43. package/lib/module/components/ui/index.js.map +1 -1
  44. package/lib/module/components/ui/shared/pulse/constants.js +5 -0
  45. package/lib/module/components/ui/shared/pulse/constants.js.map +1 -0
  46. package/lib/module/components/ui/{Pulse → shared/pulse}/normalizePulseOptions.js +2 -12
  47. package/lib/module/components/ui/shared/pulse/normalizePulseOptions.js.map +1 -0
  48. package/lib/module/components/ui/shared/pulse/types.js +2 -0
  49. package/lib/module/components/ui/shared/pulse/types.js.map +1 -0
  50. package/lib/module/components/ui/shared/pulse/usePulseAnimation.js +30 -0
  51. package/lib/module/components/ui/shared/pulse/usePulseAnimation.js.map +1 -0
  52. package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.js +1 -1
  53. package/lib/module/components/ui/shared/pulse/usePulseDriver.js.map +1 -0
  54. package/lib/module/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.js +2 -17
  55. package/lib/module/components/ui/shared/pulse/usePulseDriver.web.js.map +1 -0
  56. package/lib/typescript/src/components/ui/Avatar/Avatar.d.ts.map +1 -1
  57. package/lib/typescript/src/components/ui/Avatar/geometry.d.ts +7 -0
  58. package/lib/typescript/src/components/ui/Avatar/geometry.d.ts.map +1 -0
  59. package/lib/typescript/src/components/ui/Avatar/styles.d.ts +1 -9
  60. package/lib/typescript/src/components/ui/Avatar/styles.d.ts.map +1 -1
  61. package/lib/typescript/src/components/ui/Avatar/types.d.ts +7 -2
  62. package/lib/typescript/src/components/ui/Avatar/types.d.ts.map +1 -1
  63. package/lib/typescript/src/components/ui/CircularProgress/CircularProgress.d.ts.map +1 -1
  64. package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts +2 -14
  65. package/lib/typescript/src/components/ui/CircularProgress/normalizeCircularProgress.d.ts.map +1 -1
  66. package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts +19 -0
  67. package/lib/typescript/src/components/ui/CircularProgress/styles.d.ts.map +1 -0
  68. package/lib/typescript/src/components/ui/CircularProgress/types.d.ts +17 -2
  69. package/lib/typescript/src/components/ui/CircularProgress/types.d.ts.map +1 -1
  70. package/lib/typescript/src/components/ui/Pulse/PulseDot.d.ts.map +1 -1
  71. package/lib/typescript/src/components/ui/Pulse/constants.d.ts +4 -0
  72. package/lib/typescript/src/components/ui/Pulse/constants.d.ts.map +1 -0
  73. package/lib/typescript/src/components/ui/Pulse/types.d.ts +6 -6
  74. package/lib/typescript/src/components/ui/Pulse/types.d.ts.map +1 -1
  75. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts +0 -9
  76. package/lib/typescript/src/components/ui/Pulse/usePulse.d.ts.map +1 -1
  77. package/lib/typescript/src/components/ui/Skeleton/Skeleton.d.ts.map +1 -1
  78. package/lib/typescript/src/components/ui/Skeleton/constants.d.ts +3 -0
  79. package/lib/typescript/src/components/ui/Skeleton/constants.d.ts.map +1 -0
  80. package/lib/typescript/src/components/ui/Skeleton/types.d.ts +2 -2
  81. package/lib/typescript/src/components/ui/Skeleton/types.d.ts.map +1 -1
  82. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  83. package/lib/typescript/src/components/ui/TextField/constants.d.ts +4 -0
  84. package/lib/typescript/src/components/ui/TextField/constants.d.ts.map +1 -0
  85. package/lib/typescript/src/components/ui/TextField/styles.d.ts +6 -0
  86. package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
  87. package/lib/typescript/src/components/ui/TextField/types.d.ts +36 -11
  88. package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
  89. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts +4 -0
  90. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts.map +1 -0
  91. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts +4 -0
  92. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts.map +1 -0
  93. package/lib/typescript/src/components/ui/Textarea/types.d.ts +4 -2
  94. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  95. package/lib/typescript/src/components/ui/Thumbnail/Thumbnail.d.ts.map +1 -1
  96. package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts +4 -0
  97. package/lib/typescript/src/components/ui/Thumbnail/constants.d.ts.map +1 -0
  98. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts +1 -1
  99. package/lib/typescript/src/components/ui/Thumbnail/index.d.ts.map +1 -1
  100. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts +2 -6
  101. package/lib/typescript/src/components/ui/Thumbnail/normalize.d.ts.map +1 -1
  102. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts +9 -8
  103. package/lib/typescript/src/components/ui/Thumbnail/styles.d.ts.map +1 -1
  104. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts +23 -5
  105. package/lib/typescript/src/components/ui/Thumbnail/types.d.ts.map +1 -1
  106. package/lib/typescript/src/components/ui/index.d.ts +1 -1
  107. package/lib/typescript/src/components/ui/index.d.ts.map +1 -1
  108. package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts +2 -0
  109. package/lib/typescript/src/components/ui/shared/pulse/constants.d.ts.map +1 -0
  110. package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts +7 -0
  111. package/lib/typescript/src/components/ui/shared/pulse/normalizePulseOptions.d.ts.map +1 -0
  112. package/lib/typescript/src/components/ui/shared/pulse/types.d.ts +17 -0
  113. package/lib/typescript/src/components/ui/shared/pulse/types.d.ts.map +1 -0
  114. package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts +8 -0
  115. package/lib/typescript/src/components/ui/shared/pulse/usePulseAnimation.d.ts.map +1 -0
  116. package/lib/typescript/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.d.ts +1 -1
  117. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.d.ts.map +1 -0
  118. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts +7 -0
  119. package/lib/typescript/src/components/ui/shared/pulse/usePulseDriver.web.d.ts.map +1 -0
  120. package/package.json +1 -1
  121. package/src/components/ui/Avatar/Avatar.tsx +2 -6
  122. package/src/components/ui/Avatar/geometry.ts +30 -0
  123. package/src/components/ui/Avatar/styles.ts +2 -30
  124. package/src/components/ui/Avatar/types.ts +8 -2
  125. package/src/components/ui/AvatarGroup/AvatarGroup.tsx +1 -1
  126. package/src/components/ui/CircularProgress/CircularProgress.tsx +20 -26
  127. package/src/components/ui/CircularProgress/normalizeCircularProgress.ts +7 -15
  128. package/src/components/ui/CircularProgress/styles.ts +13 -0
  129. package/src/components/ui/CircularProgress/types.ts +19 -2
  130. package/src/components/ui/Pulse/PulseDot.tsx +6 -5
  131. package/src/components/ui/Pulse/constants.ts +14 -0
  132. package/src/components/ui/Pulse/types.ts +6 -6
  133. package/src/components/ui/Pulse/usePulse.ts +4 -81
  134. package/src/components/ui/Skeleton/Skeleton.tsx +6 -6
  135. package/src/components/ui/Skeleton/constants.ts +8 -0
  136. package/src/components/ui/Skeleton/types.ts +2 -2
  137. package/src/components/ui/TextField/TextFieldBase.tsx +28 -4
  138. package/src/components/ui/TextField/constants.ts +6 -0
  139. package/src/components/ui/TextField/styles.ts +8 -2
  140. package/src/components/ui/TextField/types.ts +41 -11
  141. package/src/components/ui/TextField/useMultilineLayout.ts +20 -0
  142. package/src/components/ui/TextField/useMultilineLayout.web.ts +59 -0
  143. package/src/components/ui/Textarea/types.ts +9 -6
  144. package/src/components/ui/Thumbnail/Thumbnail.tsx +19 -5
  145. package/src/components/ui/Thumbnail/constants.ts +24 -0
  146. package/src/components/ui/Thumbnail/index.ts +1 -0
  147. package/src/components/ui/Thumbnail/normalize.ts +38 -19
  148. package/src/components/ui/Thumbnail/styles.ts +6 -17
  149. package/src/components/ui/Thumbnail/types.ts +27 -5
  150. package/src/components/ui/index.ts +1 -0
  151. package/src/components/ui/shared/pulse/constants.ts +2 -0
  152. package/src/components/ui/shared/pulse/normalizePulseOptions.ts +48 -0
  153. package/src/components/ui/shared/pulse/types.ts +18 -0
  154. package/src/components/ui/shared/pulse/usePulseAnimation.ts +29 -0
  155. package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.ts +2 -2
  156. package/src/components/ui/{Pulse → shared/pulse}/usePulseDriver.web.ts +4 -19
  157. package/lib/module/components/ui/Pulse/normalizePulseOptions.js.map +0 -1
  158. package/lib/module/components/ui/Pulse/usePulseDriver.js.map +0 -1
  159. package/lib/module/components/ui/Pulse/usePulseDriver.web.js.map +0 -1
  160. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts +0 -32
  161. package/lib/typescript/src/components/ui/Pulse/normalizePulseOptions.d.ts.map +0 -1
  162. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.d.ts.map +0 -1
  163. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts +0 -18
  164. package/lib/typescript/src/components/ui/Pulse/usePulseDriver.web.d.ts.map +0 -1
  165. package/src/components/ui/Pulse/normalizePulseOptions.ts +0 -76
@@ -1,5 +1,5 @@
1
1
  import { type ColorTokens } from '../../../theme';
2
- import type { AvatarShape, AvatarSize, AvatarVariant } from './types';
2
+ import type { AvatarVariant } from './types';
3
3
  /** Avatar 静态 base —— 容器圆角 / 尺寸由 resolver 派生。 */
4
4
  export declare const styles: Readonly<{
5
5
  base: {
@@ -16,14 +16,6 @@ export declare const styles: Readonly<{
16
16
  height: string;
17
17
  };
18
18
  }>;
19
- /** Avatar 尺寸推导:5 档 size → { box, fs }。box 走 avatar.<size> token。
20
- * 新增 size 在 types.ts 加 union + 这里加 case + tokens.ts 补 avatar.<key>。 */
21
- export declare function sizingFor(size: AvatarSize): {
22
- box: number;
23
- fs: number;
24
- };
25
- /** circle 保留直径一半的现有视觉;square 按尺寸使用既有圆角 token。 */
26
- export declare function resolveAvatarBorderRadius(size: AvatarSize, shape: AvatarShape): number;
27
19
  /** Avatar 配色推导:4 种 variant → { bg, fg }。签名与 Tag/Button 的 paletteFor 一致。 */
28
20
  export declare function paletteFor(variant: AvatarVariant, c: ColorTokens): {
29
21
  bg: string;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtE,gDAAgD;AAChD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;EAcjB,CAAC;AAEH;wEACwE;AACxE,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAavE;AAED,iDAAiD;AACjD,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,GACjB,MAAM,CAKR;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CACxB,OAAO,EAAE,aAAa,EACtB,CAAC,EAAE,WAAW,GACb;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAW5B"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,gDAAgD;AAChD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;EAcjB,CAAC;AAEH,2EAA2E;AAC3E,wBAAgB,UAAU,CACxB,OAAO,EAAE,aAAa,EACtB,CAAC,EAAE,WAAW,GACb;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAW5B"}
@@ -11,7 +11,7 @@ export type AvatarShape = 'circle' | 'square';
11
11
  * - `neutral` 中性灰底(默认)
12
12
  */
13
13
  export type AvatarVariant = 'brand' | 'info' | 'soft' | 'neutral';
14
- export type AvatarProps = {
14
+ export interface AvatarProps {
15
15
  /**
16
16
  * 头像里显示的文字(建议 1-2 字符)。
17
17
  * 同时作为 a11y label(screen reader 朗读);source 加载失败时回退展示。
@@ -36,5 +36,10 @@ export type AvatarProps = {
36
36
  style?: StyleProp<ViewStyle>;
37
37
  /** E2E / 测试定位 */
38
38
  testID?: string;
39
- };
39
+ }
40
+ /** 头像族内部几何,不进入公共 barrel。 */
41
+ export interface AvatarGeometry {
42
+ box: number;
43
+ fs: number;
44
+ }
40
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9E,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAElE,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Avatar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9E,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,wBAAwB;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;CACZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"CircularProgress.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/CircularProgress.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAmBrD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAY,EACZ,SAAgB,EAChB,KAAK,EACL,UAAU,EACV,SAAiB,EACjB,UAAU,EACV,kBAAyB,EACzB,KAAK,EACL,MAAM,GACP,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0E3C"}
1
+ {"version":3,"file":"CircularProgress.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/CircularProgress.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,IAAY,EACZ,SAAgB,EAChB,KAAK,EACL,UAAU,EACV,SAAiB,EACjB,UAAU,EACV,kBAAyB,EACzB,KAAK,EACL,MAAM,GACP,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA8E3C"}
@@ -1,15 +1,3 @@
1
- export type NormalizedCircularProgress = Readonly<{
2
- safeValue: number;
3
- percentage: number;
4
- safeSize: number;
5
- safeThickness: number;
6
- radius: number;
7
- circumference: number;
8
- dashOffset: number;
9
- }>;
10
- export declare function normalizeCircularProgress(input: {
11
- value: number;
12
- size: number;
13
- thickness: number;
14
- }): NormalizedCircularProgress;
1
+ import type { CircularProgressInput, NormalizedCircularProgress } from './types';
2
+ export declare function normalizeCircularProgress(input: CircularProgressInput): NormalizedCircularProgress;
15
3
  //# sourceMappingURL=normalizeCircularProgress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeCircularProgress.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/normalizeCircularProgress.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAQH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,0BAA0B,CAsC7B"}
1
+ {"version":3,"file":"normalizeCircularProgress.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/normalizeCircularProgress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,SAAS,CAAC;AAYjB,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,qBAAqB,GAC3B,0BAA0B,CAsC5B"}
@@ -0,0 +1,19 @@
1
+ export declare const styles: Readonly<{
2
+ center: {
3
+ alignItems: "center";
4
+ justifyContent: "center";
5
+ };
6
+ contentSize: {
7
+ width: string;
8
+ height: string;
9
+ };
10
+ ring: {
11
+ position: "absolute";
12
+ };
13
+ label: {
14
+ fontWeight: "600";
15
+ textAlign: "center";
16
+ flexShrink: number;
17
+ };
18
+ }>;
19
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;EAUjB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { StyleProp, ViewStyle } from 'react-native';
2
- export type CircularProgressProps = {
2
+ export interface CircularProgressProps {
3
3
  /** 当前进度,使用 0..1;越界值会收敛到边界,非有限值按 0 处理。 */
4
4
  value: number;
5
5
  /** 圆环直径,默认 32,最小 16。 */
@@ -20,5 +20,20 @@ export type CircularProgressProps = {
20
20
  style?: StyleProp<ViewStyle>;
21
21
  /** E2E / 测试定位。 */
22
22
  testID?: string;
23
- };
23
+ }
24
+ /** 内部计算参数,不进入公共 barrel。 */
25
+ export interface CircularProgressInput {
26
+ value: number;
27
+ size: number;
28
+ thickness: number;
29
+ }
30
+ export interface NormalizedCircularProgress {
31
+ safeValue: number;
32
+ percentage: number;
33
+ safeSize: number;
34
+ safeThickness: number;
35
+ radius: number;
36
+ circumference: number;
37
+ dashOffset: number;
38
+ }
24
39
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/CircularProgress/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc;IACd,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,2BAA2B;AAC3B,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"PulseDot.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/PulseDot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,EACvB,IAAW,EACX,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,GAAE,aAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwBxC"}
1
+ {"version":3,"file":"PulseDot.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/PulseDot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,wBAAgB,QAAQ,CAAC,EACvB,IAAW,EACX,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,GAAE,aAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqBxC"}
@@ -0,0 +1,4 @@
1
+ import type { PulseDefaults } from '../shared/pulse/types';
2
+ export declare const PULSE_DEFAULTS: Readonly<PulseDefaults>;
3
+ export declare const PULSE_DOT_DEFAULTS: Readonly<PulseDefaults>;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,aAAa,CAKlD,CAAC;AACF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,aAAa,CAKtD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { StyleProp, ViewStyle } from 'react-native';
2
- export type PulseOptions = {
2
+ export interface PulseOptions {
3
3
  /** 透明度下界(默认 0.6) */
4
4
  from?: number;
5
5
  /** 透明度上界(默认 1) */
@@ -8,19 +8,19 @@ export type PulseOptions = {
8
8
  duration?: number;
9
9
  /** 首次周期之前的延迟(默认 0) */
10
10
  delay?: number;
11
- };
12
- export type PulseDotProps = PulseOptions & {
11
+ }
12
+ export interface PulseDotProps extends PulseOptions {
13
13
  size?: number;
14
14
  color?: string;
15
15
  /** 容器附加样式(margin / position 等布局微调)。 */
16
16
  style?: StyleProp<ViewStyle>;
17
17
  /** E2E / 测试定位 */
18
18
  testID?: string;
19
- };
20
- export type PulseProps = PulseOptions & {
19
+ }
20
+ export interface PulseProps extends PulseOptions {
21
21
  /** 容器附加样式(margin / position 等布局微调)。 */
22
22
  style?: StyleProp<ViewStyle>;
23
23
  /** E2E / 测试定位 */
24
24
  testID?: string;
25
- };
25
+ }
26
26
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG;IACtC,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,uCAAuC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1,13 +1,4 @@
1
- import type { PulseDefaults } from './normalizePulseOptions';
2
1
  import type { PulseOptions } from './types';
3
- /** PulseDot / Skeleton 的默认值 —— 只有 from 更低,圆点 / 骨架淡到 0.5。 */
4
- export declare const DOT_DEFAULTS: PulseDefaults;
5
- /** 诊断告警的固定 scope 集合。 */
6
- export type PulseScope = 'Pulse' | 'PulseDot' | 'Skeleton';
7
- /** 内部:让 PulseDot / Skeleton 复用同一条归一化 + 诊断 + driver 链路。 */
8
- export declare function usePulseWithDefaults(options: PulseOptions | undefined, defaults: PulseDefaults, scope: PulseScope): import("react-native-reanimated/lib/typescript/hook/commonTypes").AnimatedStyleHandle<{
9
- opacity: number;
10
- }>;
11
2
  export declare function usePulse(options?: PulseOptions): import("react-native-reanimated/lib/typescript/hook/commonTypes").AnimatedStyleHandle<{
12
3
  opacity: number;
13
4
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"usePulse.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/usePulse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAiB5C,4DAA4D;AAC5D,eAAO,MAAM,YAAY,EAAE,aAK1B,CAAC;AAOF,wBAAwB;AACxB,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAa3D,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,UAAU;;GA6BlB;AAED,wBAAgB,QAAQ,CAAC,OAAO,GAAE,YAAiB;;GAElD"}
1
+ {"version":3,"file":"usePulse.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Pulse/usePulse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAgB,QAAQ,CAAC,OAAO,GAAE,YAAiB;;GAElD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;iDAWiD;AACjD,wBAAgB,QAAQ,CAAC,EACvB,KAAc,EACd,KAAK,EACL,MAAM,EACN,IAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,GACP,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuCnC"}
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C;;;;;;;;;;;iDAWiD;AACjD,wBAAgB,QAAQ,CAAC,EACvB,KAAc,EACd,KAAK,EACL,MAAM,EACN,IAAY,EACZ,MAAM,EACN,KAAK,EACL,MAAM,GACP,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmCnC"}
@@ -0,0 +1,3 @@
1
+ import type { PulseDefaults } from '../shared/pulse/types';
2
+ export declare const SKELETON_DEFAULTS: Readonly<PulseDefaults>;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Skeleton/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,aAAa,CAKrD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { DimensionValue, StyleProp, ViewStyle } from 'react-native';
2
2
  export type SkeletonShape = 'line' | 'rect' | 'circle';
3
- export type SkeletonProps = {
3
+ export interface SkeletonProps {
4
4
  /** 形状,默认 'rect'。
5
5
  * - 'line' → width 100% / height 11 / radius 3(文本占位)
6
6
  * - 'rect' → width 100% / height 80 / radius 8(图片或卡片占位)
@@ -17,5 +17,5 @@ export type SkeletonProps = {
17
17
  style?: StyleProp<ViewStyle>;
18
18
  /** E2E / 测试定位 */
19
19
  testID?: string;
20
- };
20
+ }
21
21
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG;IAC1B;;;uDAGmD;IACnD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yCAAyC;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Skeleton/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B;;;uDAGmD;IACnD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yCAAyC;IACzC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextFieldBase.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/TextFieldBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AASnE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,4FAiNzB,CAAC"}
1
+ {"version":3,"file":"TextFieldBase.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/TextFieldBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAUnE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,4FAwOzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const TEXT_FIELD_BORDER_WIDTH = 1;
2
+ export declare const TEXTAREA_VERTICAL_PADDING: number;
3
+ export declare const TEXTAREA_VERTICAL_INSET: number;
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAW,CAAC;AAClD,eAAO,MAAM,uBAAuB,QACuB,CAAC"}
@@ -54,6 +54,12 @@ export declare const makeStyles: (c: ColorTokens) => Readonly<{
54
54
  inputMultiline: {
55
55
  textAlignVertical: "top";
56
56
  };
57
+ inputScrolling: {
58
+ overflow: "scroll";
59
+ };
60
+ inputClipped: {
61
+ overflow: "hidden";
62
+ };
57
63
  slotDisplay: {
58
64
  alignItems: "center";
59
65
  justifyContent: "center";
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,yDAAyD;AACzD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;IAcrC,+BAA+B;;;;;;;;;;;;;;;IAe/B,qEAAqE;;;;;;;;;;;;;;;;;;;;;;IAuBrE,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDtC,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,yDAAyD;AACzD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;IAcrC,+BAA+B;;;;;;;;;;;;;;;IAe/B,qEAAqE;;;;;;;;;;;;;;;;;;;;;;IAuBrE,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDtC,CAAC"}
@@ -1,4 +1,6 @@
1
- import type { StyleProp, TextInputProps, ViewStyle } from 'react-native';
1
+ import type { ComponentRef, RefObject } from 'react';
2
+ import type { TextInput } from 'react-native';
3
+ import type { StyleProp, TextInputProps, TextStyle, ViewStyle } from 'react-native';
2
4
  import type { IconName } from '../Icon';
3
5
  /**
4
6
  * 受控:必须同时给 `value` 和 `onChangeText`。
@@ -6,17 +8,17 @@ import type { IconName } from '../Icon';
6
8
  * `defaultValue?: never` 让「同时传 value 和 defaultValue」在类型层就报错 ——
7
9
  * 那是最常见的受控/非受控混用写法,运行时表现为「defaultValue 被静默忽略」。
8
10
  */
9
- export type ControlledTextValueProps = {
11
+ export interface ControlledTextValueProps {
10
12
  value: string;
11
13
  onChangeText: (value: string) => void;
12
14
  defaultValue?: never;
13
- };
15
+ }
14
16
  /** 非受控:内部持值,`defaultValue` 只在首次 render 读一次。 */
15
- export type UncontrolledTextValueProps = {
17
+ export interface UncontrolledTextValueProps {
16
18
  value?: never;
17
19
  defaultValue?: string;
18
20
  onChangeText?: (value: string) => void;
19
- };
21
+ }
20
22
  /** internal —— 由 InputProps / TextareaProps / SearchProps 组合进公共类型。 */
21
23
  export type TextFieldValueProps = ControlledTextValueProps | UncontrolledTextValueProps;
22
24
  /**
@@ -25,10 +27,10 @@ export type TextFieldValueProps = ControlledTextValueProps | UncontrolledTextVal
25
27
  * 为什么不暴露原生 TextInput —— `clear()` 会绕过值状态机(受控下把 UI 清空但调用方
26
28
  * state 不变),`setNativeProps()` 能直接改任意原生属性,两者都会让公共契约失效。
27
29
  */
28
- export type TextFieldHandle = {
30
+ export interface TextFieldHandle {
29
31
  focus: () => void;
30
32
  blur: () => void;
31
- };
33
+ }
32
34
  /**
33
35
  * 左右 slot 的可验证配置。**不接受任意 ReactNode** ——
34
36
  * 任意节点意味着库无法判断它是装饰还是操作,也无法保证它有可访问名称与 44pt 命中框。
@@ -64,13 +66,13 @@ export type TextFieldSlot = {
64
66
  */
65
67
  export type TextFieldContainerStyle = Omit<ViewStyle, 'height' | 'minHeight' | 'maxHeight' | 'minWidth' | 'maxWidth' | 'overflow'>;
66
68
  /** internal:Search 把真实交互行与仅作视觉的 surface 明确分层。 */
67
- export type SearchFieldLayout = {
69
+ export interface SearchFieldLayout {
68
70
  interactiveHeight: number;
69
71
  visibleHeight: number;
70
72
  verticalInset: number;
71
- };
73
+ }
72
74
  /** TextField 家族共享的非值 props(内部)。 */
73
- export type TextFieldCommonProps = {
75
+ export interface TextFieldCommonProps {
74
76
  /** 左侧 slot —— 图标 / 文本 / 带 handler 与名称的操作 */
75
77
  leading?: TextFieldSlot;
76
78
  /** 右侧 slot —— 图标 / 文本 / 带 handler 与名称的操作 */
@@ -81,7 +83,7 @@ export type TextFieldCommonProps = {
81
83
  disabled?: boolean;
82
84
  /** 外层容器样式;不接受会破坏最小 frame 的尺寸字段 */
83
85
  containerStyle?: StyleProp<TextFieldContainerStyle>;
84
- };
86
+ }
85
87
  /**
86
88
  * 这些原生 TextInput props 从公共类型删除:
87
89
  * - `style` / `multiline` / `numberOfLines`:由组件自己决定,单行多行分属 Input / Textarea
@@ -108,4 +110,27 @@ export type TextFieldBaseProps = Omit<TextInputProps, RemovedTextInputProps> & T
108
110
  /** internal:Search 的 44pt interactive row + 36pt decorative surface。 */
109
111
  searchLayout?: SearchFieldLayout;
110
112
  };
113
+ export interface MultilineLayoutInput {
114
+ enabled: boolean;
115
+ value: string;
116
+ minHeight: number;
117
+ maxHeight: number | undefined;
118
+ fontSize: number | undefined;
119
+ placeholder: string | undefined;
120
+ inputRef: RefObject<ComponentRef<typeof TextInput> | null>;
121
+ }
122
+ export interface MultilineLayout {
123
+ inputStyle: Pick<TextStyle, 'height' | 'minHeight' | 'maxHeight'>;
124
+ scrollEnabled: boolean;
125
+ onLayout?: TextInputProps['onLayout'];
126
+ }
127
+ /** RN Web 的公开 host ref 仅在平台实现内使用这两个 DOM 测量属性。 */
128
+ export interface WebTextInputMeasurement {
129
+ scrollHeight: number;
130
+ scrollTop: number;
131
+ style: {
132
+ height: string;
133
+ minHeight: string;
134
+ };
135
+ }
111
136
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { MultilineLayout, MultilineLayoutInput } from './types';
2
+ /** 原生 Yoga 直接测量文本;固定 height 会阻断 iOS Fabric 的后续内容尺寸通知。 */
3
+ export declare function useMultilineLayout({ minHeight, maxHeight, }: MultilineLayoutInput): MultilineLayout;
4
+ //# sourceMappingURL=useMultilineLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMultilineLayout.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/useMultilineLayout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErE,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,SAAS,GACV,EAAE,oBAAoB,GAAG,eAAe,CAYxC"}
@@ -0,0 +1,4 @@
1
+ import type { MultilineLayout, MultilineLayoutInput } from './types';
2
+ /** RNW 的 contentSize 使用 scrollHeight,固定高度会阻止缩短,须临时解除高度后测量。 */
3
+ export declare function useMultilineLayout({ enabled, value, minHeight, maxHeight, fontSize, placeholder, inputRef, }: MultilineLayoutInput): MultilineLayout;
4
+ //# sourceMappingURL=useMultilineLayout.web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMultilineLayout.web.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/useMultilineLayout.web.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,oBAAoB,GAAG,eAAe,CAyCxC"}
@@ -6,10 +6,12 @@ import type { RemovedTextInputProps, TextFieldCommonProps, TextFieldValueProps }
6
6
  * 内部固定 `multiline=true`;高度在 `[minHeight, maxHeight]` 之间根据内容增长。
7
7
  * 继承除 `style` / `multiline` / `numberOfLines` 之外的 RN `TextInputProps`。
8
8
  */
9
- export type TextareaProps = Omit<TextInputProps, RemovedTextInputProps> & TextFieldCommonProps & TextFieldValueProps & {
9
+ export type TextareaProps = Omit<TextInputProps, RemovedTextInputProps> & TextFieldCommonProps & TextFieldValueProps & TextareaHeightProps;
10
+ interface TextareaHeightProps {
10
11
  /** 最小高度,默认 96(约 5 行) */
11
12
  minHeight?: number;
12
13
  /** 最大高度(超过后内部滚动),默认不限制 */
13
14
  maxHeight?: number;
14
- };
15
+ }
16
+ export {};
15
17
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,GACrE,oBAAoB,GACpB,mBAAmB,GAAG;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,GACrE,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,CAAC;AAEtB,UAAU,mBAAmB;IAC3B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AASzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6ElE"}
1
+ {"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAYzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAM9C;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAwFlE"}
@@ -0,0 +1,4 @@
1
+ import type { ThumbnailDimensions, ThumbnailSize } from './types';
2
+ export declare const THUMBNAIL_DIMENSIONS: Readonly<Record<ThumbnailSize, Required<ThumbnailDimensions>>>;
3
+ export declare const RESERVED_IMAGE_STYLE_KEYS: readonly ["position", "top", "right", "bottom", "left", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight"];
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/constants.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CACzC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAKrD,CAAC;AAEF,eAAO,MAAM,yBAAyB,8HAY5B,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { Thumbnail } from './Thumbnail';
2
- export type { ThumbnailImageStyle, ThumbnailProps, ThumbnailSize, } from './types';
2
+ export type { ThumbnailDimensions, ThumbnailImageStyle, ThumbnailProps, ThumbnailSize, } from './types';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,aAAa,GACd,MAAM,SAAS,CAAC"}
@@ -1,13 +1,9 @@
1
1
  import type { StyleProp } from 'react-native';
2
- import type { ThumbnailImageStyle } from './types';
3
- type SanitizedThumbnailImageStyle = {
4
- style: ThumbnailImageStyle;
5
- diagnostics: readonly string[];
6
- };
2
+ import type { NormalizedThumbnailDimensions, SanitizedThumbnailImageStyle, ThumbnailImageStyle } from './types';
3
+ export declare function normalizeThumbnailDimensions(size: unknown): NormalizedThumbnailDimensions;
7
4
  /**
8
5
  * 先 flatten 再复制允许字段,兼容 registered / array style,同时不修改 caller。
9
6
  * 任意异常或非对象产物都失败关闭,避免宽类型 JS 值穿透到原生 Image。
10
7
  */
11
8
  export declare function sanitizeThumbnailImageStyle(style: StyleProp<ThumbnailImageStyle> | undefined): SanitizedThumbnailImageStyle;
12
- export {};
13
9
  //# sourceMappingURL=normalize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/normalize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAgBnD,KAAK,4BAA4B,GAAG;IAClC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC,CAAC;AAYF;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,SAAS,GAChD,4BAA4B,CAsC9B"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/normalize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,6BAA6B,CA6B/B;AAYD;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC,GAAG,SAAS,GAChD,4BAA4B,CAsC9B"}
@@ -1,5 +1,4 @@
1
1
  import { type ColorTokens } from '../../../theme';
2
- import type { ThumbnailSize } from './types';
3
2
  /** Thumbnail 静态样式 ——
4
3
  * - `visualFrame`:固定尺寸、裁切、加载失败 placeholder
5
4
  * - `ring`:始终存在的 2pt visual overlay,selected 只切颜色 */
@@ -11,12 +10,14 @@ export declare const makeStyles: (c: ColorTokens) => Readonly<{
11
10
  ring: {
12
11
  borderWidth: number;
13
12
  };
13
+ fallback: {
14
+ alignItems: "center";
15
+ justifyContent: "center";
16
+ position: "absolute";
17
+ left: 0;
18
+ right: 0;
19
+ top: 0;
20
+ bottom: 0;
21
+ };
14
22
  }>;
15
- /** Thumbnail size 阶梯 —— width / height / borderRadius 全 r() 缩放。
16
- * 新增 size 在 types.ts 加 union + 这里加 case,两处同步。 */
17
- export declare const sizingFor: (size: ThumbnailSize) => {
18
- width: number;
19
- height: number;
20
- borderRadius: number;
21
- };
22
23
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAK,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;sDAEsD;AACtD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;EASrC,CAAC;AAEL;kDACkD;AAClD,eAAO,MAAM,SAAS,GAAI,MAAM,aAAa;;;;CAW5C,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;sDAEsD;AACtD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;;;;;EAcrC,CAAC"}
@@ -1,9 +1,24 @@
1
+ import type { ReactNode } from 'react';
1
2
  import type { ImageProps, ImageSourcePropType, ImageStyle, StyleProp, ViewStyle } from 'react-native';
2
- /** 缩略图尺寸阶梯 —— 跨场景统一,新增 size 在这里 + sizingFor.ts 同步。
3
+ /** 缩略图尺寸阶梯 —— 跨场景统一,新增阶梯在这里与 constants.ts 同步。
3
4
  * - sm:64×40 chat 行内、列表二级图缩略
4
5
  * - md:113×67 NewsList / NewsArea 公告右侧缩略(默认)
5
6
  * - lg:160×96 详情顶部 hero 小图、卡片头图缩略 */
6
7
  export type ThumbnailSize = 'sm' | 'md' | 'lg';
8
+ /** 已计算好的 RN 布局尺寸;组件不再调用 r() 缩放。 */
9
+ export interface ThumbnailDimensions {
10
+ width: number;
11
+ height: number;
12
+ borderRadius?: number;
13
+ }
14
+ export interface NormalizedThumbnailDimensions {
15
+ dimensions: Required<ThumbnailDimensions>;
16
+ diagnostics: readonly string[];
17
+ }
18
+ export interface SanitizedThumbnailImageStyle {
19
+ style: ThumbnailImageStyle;
20
+ diagnostics: readonly string[];
21
+ }
7
22
  export type ThumbnailImageStyle = Omit<ImageStyle, 'position' | 'top' | 'right' | 'bottom' | 'left' | 'width' | 'height' | 'minWidth' | 'minHeight' | 'maxWidth' | 'maxHeight'>;
8
23
  type ThumbnailSource = {
9
24
  /** 远程 URL(http/https/data URI),运行时 trim 后必须非空。 */
@@ -14,9 +29,11 @@ type ThumbnailSource = {
14
29
  source: ImageSourcePropType;
15
30
  uri?: never;
16
31
  };
17
- export type ThumbnailProps = ThumbnailSource & {
18
- /** 视觉尺寸阶梯,默认 'md'。 */
19
- size?: ThumbnailSize;
32
+ interface ThumbnailCommonProps {
33
+ /** 原三档或实际图像框尺寸,默认 md;非法对象整体回退 md。 */
34
+ size?: ThumbnailSize | Readonly<ThumbnailDimensions>;
35
+ /** 无有效 source 或当前图片失败时居中显示;加载中不显示。 */
36
+ fallback?: ReactNode;
20
37
  /** 选中态:在固定 visual frame 内显示 2pt 品牌色 ring。 */
21
38
  selected?: boolean;
22
39
  /** 完整外部布局样式,只落到稳定根 View。 */
@@ -29,6 +46,7 @@ export type ThumbnailProps = ThumbnailSource & {
29
46
  accessibilityLabel?: string;
30
47
  /** E2E / 测试定位,只落到外层 layout View。 */
31
48
  testID?: string;
32
- };
49
+ }
50
+ export type ThumbnailProps = ThumbnailSource & ThumbnailCommonProps;
33
51
  export {};
34
52
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB;;;sCAGsC;AACtC,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,UAAU,EACR,UAAU,GACV,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,CACd,CAAC;AAEF,KAAK,eAAe,GAChB;IACE,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,GACD;IACE,qEAAqE;IACrE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEN,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG;IAC7C,sBAAsB;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC5C,yCAAyC;IACzC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Thumbnail/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB;;;sCAGsC;AACtC,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,mCAAmC;AACnC,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC1C,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,UAAU,EACR,UAAU,GACV,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,OAAO,GACP,QAAQ,GACR,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,CACd,CAAC;AAEF,KAAK,eAAe,GAChB;IACE,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,GACD;IACE,qEAAqE;IACrE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC;CACb,CAAC;AAEN,UAAU,oBAAoB;IAC5B,qCAAqC;IACrC,IAAI,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACrD,sCAAsC;IACtC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC5C,yCAAyC;IACzC,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,oBAAoB,CAAC"}