react-native-tinyui 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +383 -53
  2. package/ios/ConcentricView/TinyuiConcentricView.h +12 -0
  3. package/ios/ConcentricView/TinyuiConcentricView.mm +60 -0
  4. package/ios/Core/Tinyui.mm +54 -0
  5. package/ios/Core/TinyuiComponentClasses.mm +44 -0
  6. package/ios/LiquidGlassText/TinyuiLiquidGlassTextProvider.swift +64 -79
  7. package/ios/LiquidGlassText/TinyuiLiquidGlassTextShadowNode.h +46 -0
  8. package/ios/LiquidGlassText/TinyuiLiquidGlassTextShadowNode.mm +159 -0
  9. package/ios/LiquidGlassText/TinyuiLiquidGlassTextView.mm +6 -27
  10. package/ios/LiquidGlassText/TinyuiTextOutlineShape.swift +5 -2
  11. package/ios/Menu/TinyuiMenuBuilder.swift +238 -0
  12. package/ios/Menu/TinyuiMenuProvider.swift +51 -85
  13. package/ios/Menu/TinyuiMenuView.mm +13 -35
  14. package/ios/Popover/TinyuiPopoverProvider.swift +198 -44
  15. package/ios/Popover/TinyuiPopoverView.mm +26 -1
  16. package/ios/SFSymbol/TinyuiSFSymbolEffects.h +9 -0
  17. package/ios/SFSymbol/TinyuiSFSymbolEffects.mm +180 -0
  18. package/ios/SFSymbol/TinyuiSFSymbolImage.h +8 -0
  19. package/ios/SFSymbol/TinyuiSFSymbolImage.mm +141 -0
  20. package/ios/SFSymbol/TinyuiSFSymbolShadowNode.h +31 -0
  21. package/ios/SFSymbol/TinyuiSFSymbolShadowNode.mm +30 -0
  22. package/ios/SFSymbol/TinyuiSFSymbolView.h +4 -0
  23. package/ios/SFSymbol/TinyuiSFSymbolView.mm +173 -0
  24. package/ios/Stepper/TinyuiStepperShadowNode.h +32 -0
  25. package/ios/Stepper/TinyuiStepperShadowNode.mm +28 -0
  26. package/ios/Stepper/TinyuiStepperView.h +12 -0
  27. package/ios/Stepper/TinyuiStepperView.mm +128 -0
  28. package/ios/TipKit/TinyuiTip.swift +31 -0
  29. package/ios/TipKit/TinyuiTipPopoverProvider.swift +276 -0
  30. package/ios/TipKit/TinyuiTipPopoverView.h +8 -0
  31. package/ios/TipKit/TinyuiTipPopoverView.mm +114 -0
  32. package/ios/TipKit/TinyuiTipsRuntime.swift +148 -0
  33. package/lib/module/ConcentricView/ConcentricViewNativeComponent.ts +14 -0
  34. package/lib/module/ConcentricView/index.js +29 -0
  35. package/lib/module/ConcentricView/index.js.map +1 -0
  36. package/lib/module/ConcentricView/types.js +4 -0
  37. package/lib/module/ConcentricView/types.js.map +1 -0
  38. package/lib/module/LiquidGlassText/LiquidGlassTextNativeComponent.ts +2 -12
  39. package/lib/module/LiquidGlassText/index.js +60 -35
  40. package/lib/module/LiquidGlassText/index.js.map +1 -1
  41. package/lib/module/Menu/MenuNativeComponent.ts +7 -5
  42. package/lib/module/Menu/index.js +4 -9
  43. package/lib/module/Menu/index.js.map +1 -1
  44. package/lib/module/Menu/options.js +4 -12
  45. package/lib/module/Menu/options.js.map +1 -1
  46. package/lib/module/NativeTinyui.js.map +1 -1
  47. package/lib/module/Popover/index.js +4 -2
  48. package/lib/module/Popover/index.js.map +1 -1
  49. package/lib/module/SFSymbol/SFSymbolNativeComponent.ts +20 -0
  50. package/lib/module/SFSymbol/index.js +73 -0
  51. package/lib/module/SFSymbol/index.js.map +1 -0
  52. package/lib/module/SFSymbol/options.js +79 -0
  53. package/lib/module/SFSymbol/options.js.map +1 -0
  54. package/lib/module/SFSymbol/types.js +4 -0
  55. package/lib/module/SFSymbol/types.js.map +1 -0
  56. package/lib/module/Stepper/StepperNativeComponent.ts +29 -0
  57. package/lib/module/Stepper/index.js +75 -0
  58. package/lib/module/Stepper/index.js.map +1 -0
  59. package/lib/module/Stepper/types.js +4 -0
  60. package/lib/module/Stepper/types.js.map +1 -0
  61. package/lib/module/TipKit/Popover.js +89 -0
  62. package/lib/module/TipKit/Popover.js.map +1 -0
  63. package/lib/module/TipKit/TipPopoverNativeComponent.ts +37 -0
  64. package/lib/module/TipKit/index.js +28 -0
  65. package/lib/module/TipKit/index.js.map +1 -0
  66. package/lib/module/TipKit/types.js +4 -0
  67. package/lib/module/TipKit/types.js.map +1 -0
  68. package/lib/module/TipKit/validation.js +24 -0
  69. package/lib/module/TipKit/validation.js.map +1 -0
  70. package/lib/module/index.js +4 -0
  71. package/lib/module/index.js.map +1 -1
  72. package/lib/module/utils/getNativeTinyui.js.map +1 -1
  73. package/lib/typescript/src/ConcentricView/ConcentricViewNativeComponent.d.ts +7 -0
  74. package/lib/typescript/src/ConcentricView/ConcentricViewNativeComponent.d.ts.map +1 -0
  75. package/lib/typescript/src/ConcentricView/index.d.ts +4 -0
  76. package/lib/typescript/src/ConcentricView/index.d.ts.map +1 -0
  77. package/lib/typescript/src/ConcentricView/types.d.ts +6 -0
  78. package/lib/typescript/src/ConcentricView/types.d.ts.map +1 -0
  79. package/lib/typescript/src/LiquidGlassText/LiquidGlassTextNativeComponent.d.ts +2 -8
  80. package/lib/typescript/src/LiquidGlassText/LiquidGlassTextNativeComponent.d.ts.map +1 -1
  81. package/lib/typescript/src/LiquidGlassText/index.d.ts +1 -1
  82. package/lib/typescript/src/LiquidGlassText/index.d.ts.map +1 -1
  83. package/lib/typescript/src/LiquidGlassText/types.d.ts +13 -22
  84. package/lib/typescript/src/LiquidGlassText/types.d.ts.map +1 -1
  85. package/lib/typescript/src/Menu/MenuNativeComponent.d.ts +4 -5
  86. package/lib/typescript/src/Menu/MenuNativeComponent.d.ts.map +1 -1
  87. package/lib/typescript/src/Menu/index.d.ts +1 -1
  88. package/lib/typescript/src/Menu/index.d.ts.map +1 -1
  89. package/lib/typescript/src/Menu/options.d.ts +40 -4
  90. package/lib/typescript/src/Menu/options.d.ts.map +1 -1
  91. package/lib/typescript/src/Menu/types.d.ts +16 -4
  92. package/lib/typescript/src/Menu/types.d.ts.map +1 -1
  93. package/lib/typescript/src/NativeTinyui.d.ts +2 -0
  94. package/lib/typescript/src/NativeTinyui.d.ts.map +1 -1
  95. package/lib/typescript/src/Popover/index.d.ts.map +1 -1
  96. package/lib/typescript/src/Popover/types.d.ts +2 -0
  97. package/lib/typescript/src/Popover/types.d.ts.map +1 -1
  98. package/lib/typescript/src/SFSymbol/SFSymbolNativeComponent.d.ts +11 -0
  99. package/lib/typescript/src/SFSymbol/SFSymbolNativeComponent.d.ts.map +1 -0
  100. package/lib/typescript/src/SFSymbol/index.d.ts +4 -0
  101. package/lib/typescript/src/SFSymbol/index.d.ts.map +1 -0
  102. package/lib/typescript/src/SFSymbol/options.d.ts +86 -0
  103. package/lib/typescript/src/SFSymbol/options.d.ts.map +1 -0
  104. package/lib/typescript/src/SFSymbol/types.d.ts +113 -0
  105. package/lib/typescript/src/SFSymbol/types.d.ts.map +1 -0
  106. package/lib/typescript/src/Stepper/StepperNativeComponent.d.ts +21 -0
  107. package/lib/typescript/src/Stepper/StepperNativeComponent.d.ts.map +1 -0
  108. package/lib/typescript/src/Stepper/index.d.ts +4 -0
  109. package/lib/typescript/src/Stepper/index.d.ts.map +1 -0
  110. package/lib/typescript/src/Stepper/types.d.ts +24 -0
  111. package/lib/typescript/src/Stepper/types.d.ts.map +1 -0
  112. package/lib/typescript/src/TipKit/Popover.d.ts +3 -0
  113. package/lib/typescript/src/TipKit/Popover.d.ts.map +1 -0
  114. package/lib/typescript/src/TipKit/TipPopoverNativeComponent.d.ts +38 -0
  115. package/lib/typescript/src/TipKit/TipPopoverNativeComponent.d.ts.map +1 -0
  116. package/lib/typescript/src/TipKit/index.d.ts +10 -0
  117. package/lib/typescript/src/TipKit/index.d.ts.map +1 -0
  118. package/lib/typescript/src/TipKit/types.d.ts +46 -0
  119. package/lib/typescript/src/TipKit/types.d.ts.map +1 -0
  120. package/lib/typescript/src/TipKit/validation.d.ts +4 -0
  121. package/lib/typescript/src/TipKit/validation.d.ts.map +1 -0
  122. package/lib/typescript/src/index.d.ts +10 -2
  123. package/lib/typescript/src/index.d.ts.map +1 -1
  124. package/lib/typescript/src/utils/getNativeTinyui.d.ts +1 -1
  125. package/lib/typescript/src/utils/getNativeTinyui.d.ts.map +1 -1
  126. package/package.json +37 -2
  127. package/{Tinyui.podspec → react-native-tinyui.podspec} +23 -2
  128. package/src/ConcentricView/ConcentricViewNativeComponent.ts +14 -0
  129. package/src/ConcentricView/index.tsx +34 -0
  130. package/src/ConcentricView/types.ts +6 -0
  131. package/src/LiquidGlassText/LiquidGlassTextNativeComponent.ts +2 -12
  132. package/src/LiquidGlassText/index.tsx +73 -39
  133. package/src/LiquidGlassText/types.ts +24 -50
  134. package/src/Menu/MenuNativeComponent.ts +7 -5
  135. package/src/Menu/index.tsx +6 -6
  136. package/src/Menu/options.ts +4 -18
  137. package/src/Menu/types.ts +18 -4
  138. package/src/NativeTinyui.ts +2 -0
  139. package/src/Popover/index.tsx +8 -3
  140. package/src/Popover/types.ts +2 -0
  141. package/src/SFSymbol/SFSymbolNativeComponent.ts +20 -0
  142. package/src/SFSymbol/index.tsx +89 -0
  143. package/src/SFSymbol/options.ts +116 -0
  144. package/src/SFSymbol/types.ts +158 -0
  145. package/src/Stepper/StepperNativeComponent.ts +29 -0
  146. package/src/Stepper/index.tsx +91 -0
  147. package/src/Stepper/types.ts +24 -0
  148. package/src/TipKit/Popover.tsx +87 -0
  149. package/src/TipKit/TipPopoverNativeComponent.ts +37 -0
  150. package/src/TipKit/index.ts +47 -0
  151. package/src/TipKit/types.ts +57 -0
  152. package/src/TipKit/validation.ts +39 -0
  153. package/src/index.tsx +32 -4
  154. package/src/utils/getNativeTinyui.ts +8 -1
  155. package/ios/Core/TinyuiHostingHelpers.swift +0 -74
  156. package/ios/Menu/TinyuiMenuViewSwift.swift +0 -408
  157. package/ios/Popover/TinyuiPopoverViewSwift.swift +0 -88
@@ -0,0 +1,86 @@
1
+ import type { SFSymbolProps } from './types.js';
2
+ export declare function serializeSFSymbol(props: SFSymbolProps, fontScale: number): {
3
+ configuration: {
4
+ name: string;
5
+ source: "system" | "asset";
6
+ size: number;
7
+ weight: import("./types.js").SFSymbolWeight;
8
+ scale: import("./types.js").SFSymbolScale;
9
+ textStyle: import("./types.js").SFSymbolTextStyle | undefined;
10
+ fontFamily: string | undefined;
11
+ fontScale: number;
12
+ renderingMode: import("./types.js").SFSymbolRenderingMode;
13
+ color: import("react-native").ProcessedColorValue | null | undefined;
14
+ paletteColors: (import("react-native").ProcessedColorValue | null | undefined)[] | undefined;
15
+ variableValue: number | undefined;
16
+ variableValueMode: "color" | "automatic" | "draw";
17
+ colorRenderingMode: "flat" | "automatic" | "gradient";
18
+ };
19
+ effects: ({
20
+ active: boolean;
21
+ animated: boolean;
22
+ trigger?: string | number;
23
+ options?: import("./types.js").SFSymbolEffectOptions;
24
+ type: "pulse";
25
+ scope?: "byLayer" | "wholeSymbol";
26
+ } | {
27
+ active: boolean;
28
+ animated: boolean;
29
+ trigger?: string | number;
30
+ options?: import("./types.js").SFSymbolEffectOptions;
31
+ type: "bounce" | "scale" | "appear" | "disappear";
32
+ direction?: "up" | "down";
33
+ scope?: "byLayer" | "wholeSymbol";
34
+ } | {
35
+ active: boolean;
36
+ animated: boolean;
37
+ trigger?: string | number;
38
+ options?: import("./types.js").SFSymbolEffectOptions;
39
+ type: "variableColor";
40
+ iteration?: "iterative" | "cumulative";
41
+ reversing?: boolean;
42
+ inactiveLayers?: "hide" | "dim";
43
+ } | {
44
+ active: boolean;
45
+ animated: boolean;
46
+ trigger?: string | number;
47
+ options?: import("./types.js").SFSymbolEffectOptions;
48
+ type: "wiggle";
49
+ direction?: ("up" | "down") | "left" | "right" | "forward" | "backward" | "clockwise" | "counterClockwise";
50
+ angle?: number;
51
+ scope?: "byLayer" | "wholeSymbol";
52
+ } | {
53
+ active: boolean;
54
+ animated: boolean;
55
+ trigger?: string | number;
56
+ options?: import("./types.js").SFSymbolEffectOptions;
57
+ type: "rotate";
58
+ direction?: "clockwise" | "counterClockwise";
59
+ scope?: "byLayer" | "wholeSymbol";
60
+ } | {
61
+ active: boolean;
62
+ animated: boolean;
63
+ trigger?: string | number;
64
+ options?: import("./types.js").SFSymbolEffectOptions;
65
+ type: "breathe";
66
+ style?: "plain" | "pulse";
67
+ scope?: "byLayer" | "wholeSymbol";
68
+ } | {
69
+ active: boolean;
70
+ animated: boolean;
71
+ trigger?: string | number;
72
+ options?: import("./types.js").SFSymbolEffectOptions;
73
+ type: "drawOn";
74
+ scope?: ("byLayer" | "wholeSymbol") | "individually";
75
+ } | {
76
+ active: boolean;
77
+ animated: boolean;
78
+ trigger?: string | number;
79
+ options?: import("./types.js").SFSymbolEffectOptions;
80
+ type: "drawOff";
81
+ scope?: ("byLayer" | "wholeSymbol") | "individually";
82
+ reversed?: boolean;
83
+ })[];
84
+ contentTransition: {};
85
+ };
86
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/SFSymbol/options.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,aAAa,EAAE,MAAM,YAAS,CAAC;AAiB7D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgGxE"}
@@ -0,0 +1,113 @@
1
+ import type { ColorValue, ViewProps } from 'react-native';
2
+ export type SFSymbolWeight = 'unspecified' | 'ultraLight' | 'thin' | 'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'heavy' | 'black';
3
+ export type SFSymbolScale = 'default' | 'unspecified' | 'small' | 'medium' | 'large';
4
+ export type SFSymbolRenderingMode = 'automatic' | 'monochrome' | 'hierarchical' | 'palette' | 'multicolor';
5
+ export type SFSymbolTextStyle = 'extraLargeTitle' | 'extraLargeTitle2' | 'largeTitle' | 'title1' | 'title2' | 'title3' | 'headline' | 'subheadline' | 'body' | 'callout' | 'footnote' | 'caption1' | 'caption2';
6
+ export interface SFSymbolEffectOptions {
7
+ /** Positive speed multiplier. Defaults to the system speed (1). */
8
+ speed?: number;
9
+ /** Play count, forever, or false for one play. Omit for the system default. */
10
+ repeat?: number | 'forever' | false;
11
+ /** iOS 18+. Continuous repeats forever; periodic supports count and delay. */
12
+ repeatBehavior?: 'periodic' | 'continuous';
13
+ /** Seconds between periodic repetitions (iOS 18+). */
14
+ repeatDelay?: number;
15
+ }
16
+ interface EffectPlayback {
17
+ /** Whether this effect is applied. Defaults to true. */
18
+ active?: boolean;
19
+ /** Change this value to replay the same effect. Stable values do not replay. */
20
+ trigger?: string | number;
21
+ /** Animate applying/removing the effect. Defaults to true. */
22
+ animated?: boolean;
23
+ options?: SFSymbolEffectOptions;
24
+ }
25
+ type LayerBehavior = 'byLayer' | 'wholeSymbol';
26
+ type VerticalDirection = 'up' | 'down';
27
+ /** Only modifiers supported by each Apple preset are accepted. */
28
+ export type SFSymbolEffect = EffectPlayback & ({
29
+ type: 'pulse';
30
+ scope?: LayerBehavior;
31
+ } | {
32
+ type: 'bounce' | 'scale' | 'appear' | 'disappear';
33
+ direction?: VerticalDirection;
34
+ scope?: LayerBehavior;
35
+ } | {
36
+ type: 'variableColor';
37
+ iteration?: 'iterative' | 'cumulative';
38
+ reversing?: boolean;
39
+ inactiveLayers?: 'hide' | 'dim';
40
+ } | {
41
+ /** iOS 18+. */
42
+ type: 'wiggle';
43
+ direction?: VerticalDirection | 'left' | 'right' | 'forward' | 'backward' | 'clockwise' | 'counterClockwise';
44
+ /** Custom angle in degrees, clockwise from +x; overrides direction. */
45
+ angle?: number;
46
+ scope?: LayerBehavior;
47
+ } | {
48
+ /** iOS 18+. */
49
+ type: 'rotate';
50
+ direction?: 'clockwise' | 'counterClockwise';
51
+ scope?: LayerBehavior;
52
+ } | {
53
+ /** iOS 18+. */
54
+ type: 'breathe';
55
+ style?: 'plain' | 'pulse';
56
+ scope?: LayerBehavior;
57
+ } | {
58
+ /** iOS 26+. */
59
+ type: 'drawOn';
60
+ scope?: LayerBehavior | 'individually';
61
+ } | {
62
+ /** iOS 26+. */
63
+ type: 'drawOff';
64
+ scope?: LayerBehavior | 'individually';
65
+ reversed?: boolean;
66
+ });
67
+ export interface SFSymbolContentTransition {
68
+ /** Magic Replace requires iOS 18; earlier versions use the configured replace. */
69
+ type: 'automatic' | 'replace' | 'magicReplace';
70
+ /** Replace style, also used as the Magic Replace fallback. */
71
+ direction?: 'downUp' | 'upUp' | 'offUp';
72
+ scope?: LayerBehavior;
73
+ /** Positive transition speed multiplier. Defaults to 1. */
74
+ speed?: number;
75
+ }
76
+ export interface SFSymbolProps extends Omit<ViewProps, 'children'> {
77
+ /** Full SF Symbol name, including variants such as .circle.fill. */
78
+ name: string;
79
+ /** Load a system symbol (default) or a custom symbol in the app asset catalog. */
80
+ source?: 'system' | 'asset';
81
+ /** Point size before font scaling. Defaults to 17. textStyle takes precedence. */
82
+ size?: number;
83
+ weight?: SFSymbolWeight;
84
+ scale?: SFSymbolScale;
85
+ textStyle?: SFSymbolTextStyle;
86
+ /** Font/PostScript name used to derive the symbol's font metrics. */
87
+ fontFamily?: string;
88
+ /** Apply React Native's fontScale to the point size. Defaults to true. */
89
+ allowFontScaling?: boolean;
90
+ /** Maximum font scale, >= 1. Zero/undefined means no limit. */
91
+ maxFontSizeMultiplier?: number;
92
+ renderingMode?: SFSymbolRenderingMode;
93
+ /** Tint / primary hierarchical color. Defaults to the semantic label color. */
94
+ color?: ColorValue;
95
+ /** One to three colors for palette rendering, in primary-to-tertiary order. */
96
+ paletteColors?: readonly [ColorValue, ColorValue?, ColorValue?];
97
+ /** Variable color/draw progress, from 0 to 1. Omit for the symbol default. */
98
+ variableValue?: number;
99
+ /** iOS 26+. Earlier versions retain the system's variable color behavior. */
100
+ variableValueMode?: 'automatic' | 'color' | 'draw';
101
+ /** iOS 26+. Earlier versions use flat colors. */
102
+ colorRenderingMode?: 'automatic' | 'flat' | 'gradient';
103
+ /** Native image fitting within an explicitly sized frame. Defaults to center. */
104
+ resizeMode?: 'center' | 'contain' | 'cover' | 'stretch';
105
+ /** One preset or multiple distinct presets. Unsupported OS presets are ignored. */
106
+ effect?: SFSymbolEffect | readonly SFSymbolEffect[];
107
+ /** Animate changes to the name or image configuration. Omit to update instantly. */
108
+ contentTransition?: SFSymbolContentTransition;
109
+ /** Honor the system Reduce Motion setting. Defaults to true. */
110
+ respectReduceMotion?: boolean;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/SFSymbol/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type CodegenTypes, type ViewProps } from 'react-native';
2
+ type StepperChangeEvent = Readonly<{
3
+ value: CodegenTypes.Double;
4
+ eventCount: CodegenTypes.Int32;
5
+ }>;
6
+ export interface NativeStepperProps extends ViewProps {
7
+ value?: CodegenTypes.WithDefault<CodegenTypes.Double, 0>;
8
+ minimumValue?: CodegenTypes.WithDefault<CodegenTypes.Double, 0>;
9
+ maximumValue?: CodegenTypes.WithDefault<CodegenTypes.Double, 100>;
10
+ stepValue?: CodegenTypes.WithDefault<CodegenTypes.Double, 1>;
11
+ isContinuous?: CodegenTypes.WithDefault<boolean, true>;
12
+ autorepeat?: CodegenTypes.WithDefault<boolean, true>;
13
+ wraps?: CodegenTypes.WithDefault<boolean, false>;
14
+ disabled?: CodegenTypes.WithDefault<boolean, false>;
15
+ controlled?: CodegenTypes.WithDefault<boolean, false>;
16
+ mostRecentEventCount?: CodegenTypes.WithDefault<CodegenTypes.Int32, 0>;
17
+ onChange?: CodegenTypes.BubblingEventHandler<StepperChangeEvent>;
18
+ }
19
+ declare const _default: import("react-native/types_generated/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeStepperProps>;
20
+ export default _default;
21
+ //# sourceMappingURL=StepperNativeComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepperNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/Stepper/StepperNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB,KAAK,kBAAkB,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC;IAC3B,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,KAAK,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,YAAY,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,KAAK,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEvE,QAAQ,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;CAClE;;AAED,wBAEG"}
@@ -0,0 +1,4 @@
1
+ import type { StepperProps } from './types.js';
2
+ export declare const Stepper: import("react").ForwardRefExoticComponent<StepperProps & import("react").RefAttributes<import("react-native/types_generated/src/private/webapis/dom/nodes/ReactNativeElement").default>>;
3
+ export type { StepperProps } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Stepper/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC;AAE5C,eAAO,MAAM,OAAO,0LA6EnB,CAAC;AAMF,YAAY,EAAE,YAAY,EAAE,MAAM,YAAS,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ViewProps } from 'react-native';
2
+ export interface StepperProps extends Omit<ViewProps, 'children'> {
3
+ /** Controlled value. Update it from onValueChange to accept user changes. */
4
+ value?: number;
5
+ /** Initial uncontrolled value. Defaults to 0. */
6
+ defaultValue?: number;
7
+ /** Lower bound. Defaults to 0. */
8
+ minimumValue?: number;
9
+ /** Upper bound, greater than or equal to minimumValue. Defaults to 100. */
10
+ maximumValue?: number;
11
+ /** Positive increment/decrement amount. Defaults to 1. */
12
+ stepValue?: number;
13
+ /** Emit changes while interacting, rather than only on release. Defaults to true. */
14
+ isContinuous?: boolean;
15
+ /** Repeatedly step while holding either button. Defaults to true. */
16
+ autorepeat?: boolean;
17
+ /** Wrap between the bounds instead of stopping at them. Defaults to false. */
18
+ wraps?: boolean;
19
+ /** Disable user interaction. Defaults to false. */
20
+ disabled?: boolean;
21
+ /** Called with the new value after a user interaction. */
22
+ onValueChange?: (value: number) => void;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/Stepper/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/D,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC"}
@@ -0,0 +1,3 @@
1
+ import type { TipPopoverProps } from './types.js';
2
+ export declare const Popover: import("react").ForwardRefExoticComponent<TipPopoverProps & import("react").RefAttributes<import("react-native/types_generated/src/private/webapis/dom/nodes/ReactNativeElement").default>>;
3
+ //# sourceMappingURL=Popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../../../src/TipKit/Popover.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAa,MAAM,YAAS,CAAC;AAG1D,eAAO,MAAM,OAAO,6LA4EnB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { type CodegenTypes, type ViewProps } from 'react-native';
2
+ import type { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';
3
+ export interface NativeTipPopoverProps extends ViewProps {
4
+ tipId: string;
5
+ title: string;
6
+ message?: string;
7
+ systemImage?: string;
8
+ actions?: ReadonlyArray<Readonly<{
9
+ id: string;
10
+ title: string;
11
+ }>>;
12
+ enabled?: boolean;
13
+ maxDisplayCount?: CodegenTypes.Int32;
14
+ ignoresDisplayFrequency?: boolean;
15
+ arrowEdge?: string;
16
+ onTipStatusChange?: DirectEventHandler<Readonly<{
17
+ tipId: string;
18
+ status: string;
19
+ reason: string;
20
+ }>>;
21
+ onTipVisibleChange?: DirectEventHandler<Readonly<{
22
+ tipId: string;
23
+ visible: boolean;
24
+ }>>;
25
+ onTipAction?: DirectEventHandler<Readonly<{
26
+ tipId: string;
27
+ id: string;
28
+ title: string;
29
+ }>>;
30
+ onTipError?: DirectEventHandler<Readonly<{
31
+ tipId: string;
32
+ code: string;
33
+ message: string;
34
+ }>>;
35
+ }
36
+ declare const _default: import("react-native/types_generated/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeTipPopoverProps>;
37
+ export default _default;
38
+ //# sourceMappingURL=TipPopoverNativeComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TipPopoverNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/TipKit/TipPopoverNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC;IACrC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,kBAAkB,CACpC,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAC5D,CAAC;IACF,kBAAkB,CAAC,EAAE,kBAAkB,CACrC,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAC9C,CAAC;IACF,WAAW,CAAC,EAAE,kBAAkB,CAC9B,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CACvD,CAAC;IACF,UAAU,CAAC,EAAE,kBAAkB,CAC7B,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAC3D,CAAC;CACH;;AAED,wBAKE"}
@@ -0,0 +1,10 @@
1
+ import type { TipInvalidationReason, TipKitConfiguration } from './types.js';
2
+ export declare const TipKit: {
3
+ Popover: import("react").ForwardRefExoticComponent<import("./types.js").TipPopoverProps & import("react").RefAttributes<import("react-native/types_generated/src/private/webapis/dom/nodes/ReactNativeElement").default>>;
4
+ /** Configure TipKit once before mounting tips. Repeating the same options is safe. */
5
+ configure({ displayFrequency, }?: TipKitConfiguration): Promise<void>;
6
+ /** Persistently invalidate a tip, including when its view is not mounted. */
7
+ invalidate(tipId: string, reason?: TipInvalidationReason): Promise<void>;
8
+ };
9
+ export type { TipAction, TipDisplayFrequency, TipError, TipInvalidationReason, TipKitConfiguration, TipPopoverProps, TipStatus, } from './types.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/TipKit/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAS,CAAC;AAI1E,eAAO,MAAM,MAAM;;IAEjB,sFAAsF;sCAGnF,mBAAmB,GAAQ,OAAO,CAAC,IAAI,CAAC;IAc3C,6EAA6E;sBAEpE,MAAM,WACL,qBAAqB,GAC5B,OAAO,CAAC,IAAI,CAAC;CAQjB,CAAC;AAEF,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,SAAS,GACV,MAAM,YAAS,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+ export type TipDisplayFrequency = 'immediate' | 'hourly' | 'daily' | 'weekly' | 'monthly';
4
+ export interface TipKitConfiguration {
5
+ /** App-wide interval between new tips. Defaults to `daily`. */
6
+ displayFrequency?: TipDisplayFrequency;
7
+ }
8
+ export type TipInvalidationReason = 'actionPerformed' | 'tipClosed';
9
+ export type TipStatus = {
10
+ status: 'pending' | 'available';
11
+ } | {
12
+ status: 'invalidated';
13
+ reason: TipInvalidationReason | 'displayCountExceeded' | 'displayDurationExceeded' | 'unknown';
14
+ };
15
+ export interface TipAction {
16
+ id: string;
17
+ title: string;
18
+ }
19
+ export interface TipError {
20
+ code: string;
21
+ message: string;
22
+ }
23
+ export interface TipPopoverProps extends Omit<ViewProps, 'children'> {
24
+ /** Anchor content. Its existing touch handlers are preserved. */
25
+ children: ReactNode;
26
+ /** Stable identity used by TipKit to persist this tip's history. */
27
+ tipId: string;
28
+ title: string;
29
+ message?: string;
30
+ systemImage?: string;
31
+ actions?: readonly TipAction[];
32
+ /** Allows presentation when TipKit is also eligible. Defaults to true. */
33
+ enabled?: boolean;
34
+ /** Omit to leave the number of presentations unlimited. */
35
+ maxDisplayCount?: number;
36
+ ignoresDisplayFrequency?: boolean;
37
+ /** Preferred arrow edge on the bubble; UIKit may adapt to available space. */
38
+ arrowEdge?: 'top' | 'bottom' | 'leading' | 'trailing' | 'auto';
39
+ /** TipKit eligibility, independent of whether the bubble is on screen. */
40
+ onStatusChange?: (status: TipStatus) => void;
41
+ onVisibleChange?: (visible: boolean) => void;
42
+ /** Actions do not automatically invalidate the tip. */
43
+ onActionPress?: (action: TipAction) => void;
44
+ onError?: (error: TipError) => void;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/TipKit/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,mBAAmB,GAC7B,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;CACxC;AAED,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAEpE,MAAM,MAAM,SAAS,GACjB;IAAE,MAAM,EAAE,SAAS,GAAG,WAAW,CAAA;CAAE,GACnC;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EACF,qBAAqB,GACrB,sBAAsB,GACtB,yBAAyB,GACzB,SAAS,CAAC;CACf,CAAC;AAEN,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAClE,iEAAiE;IACjE,QAAQ,EAAE,SAAS,CAAC;IACpB,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC/B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IAC/D,0EAA0E;IAC1E,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC7C,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,uDAAuD;IACvD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC"}
@@ -0,0 +1,4 @@
1
+ import type { TipPopoverProps } from './types.js';
2
+ export declare function validateTipId(tipId: string): void;
3
+ export declare function validateTip(props: TipPopoverProps): void;
4
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/TipKit/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAS,CAAC;AAE/C,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CA8BxD"}
@@ -1,9 +1,17 @@
1
1
  export { Menu } from './Menu/index.js';
2
- export type { MenuActionOption, MenuDividerOption, MenuItemState, MenuOption, MenuProps, MenuSectionOption, MenuSubmenuOption, } from './Menu/index.js';
2
+ export { TipKit } from './TipKit/index.js';
3
+ export type { TipAction, TipDisplayFrequency, TipError, TipInvalidationReason, TipPopoverProps, TipKitConfiguration, TipStatus, } from './TipKit/index.js';
4
+ export type { MenuActionOption, MenuActionPressEvent, MenuActionPressEventData, MenuDividerOption, MenuItemState, MenuOption, MenuProps, MenuSectionOption, MenuSubmenuOption, } from './Menu/index.js';
5
+ export { Stepper } from './Stepper/index.js';
6
+ export type { StepperProps } from './Stepper/index.js';
7
+ export { ConcentricView } from './ConcentricView/index.js';
8
+ export type { ConcentricViewProps } from './ConcentricView/index.js';
9
+ export { SFSymbol } from './SFSymbol/index.js';
10
+ export type { SFSymbolContentTransition, SFSymbolEffect, SFSymbolEffectOptions, SFSymbolProps, SFSymbolRenderingMode, SFSymbolScale, SFSymbolTextStyle, SFSymbolWeight, } from './SFSymbol/index.js';
3
11
  export { Popover, PopoverClose } from './Popover/index.js';
4
12
  export type { PopoverArrowEdge, PopoverAttachmentAnchor, PopoverCloseProps, PopoverContent, PopoverContentRenderArgs, PopoverProps, } from './Popover/index.js';
5
13
  export { getNativeTinyui, assertComponentEnabled } from './utils/index.js';
6
14
  export type { TinyuiComponent } from './utils/index.js';
7
15
  export { LiquidGlassText } from './LiquidGlassText/index.js';
8
- export type { LiquidGlassTextFont, LiquidGlassTextFontDesign, LiquidGlassTextFontStyle, LiquidGlassTextFontWeight, LiquidGlassTextGlass, LiquidGlassTextProps, } from './LiquidGlassText/index.js';
16
+ export type { LiquidGlassTextFontDesign, LiquidGlassTextEffect, LiquidGlassTextProps, LiquidGlassTextStyle, } from './LiquidGlassText/index.js';
9
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAQ,CAAC;AAC9B,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,iBAAQ,CAAC;AAEhB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAW,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,wBAAwB,EACxB,YAAY,GACb,MAAM,oBAAW,CAAC;AAEnB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kBAAS,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAS,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAAmB,CAAC;AACpD,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,4BAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAQ,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAU,CAAC;AAClC,YAAY,EACV,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,SAAS,GACV,MAAM,mBAAU,CAAC;AAClB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,iBAAQ,CAAC;AAEhB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAW,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAAkB,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAY,CAAC;AACtC,YAAY,EACV,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,qBAAY,CAAC;AAEpB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAW,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,wBAAwB,EACxB,YAAY,GACb,MAAM,oBAAW,CAAC;AAEnB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,kBAAS,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAS,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAAmB,CAAC;AACpD,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,4BAAmB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type Spec } from '../NativeTinyui.js';
2
- export type TinyuiComponent = 'Menu' | 'Popover' | 'LiquidGlassText';
2
+ export type TinyuiComponent = 'Menu' | 'Popover' | 'LiquidGlassText' | 'Stepper' | 'ConcentricView' | 'SFSymbol' | 'TipKit';
3
3
  /**
4
4
  * Returns the Tinyui TurboModule instance. The native module is always
5
5
  * compiled (Core), so this is safe to call.
@@ -1 +1 @@
1
- {"version":3,"file":"getNativeTinyui.d.ts","sourceRoot":"","sources":["../../../../src/utils/getNativeTinyui.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAiB,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,iBAAiB,CAAC;AAKrE;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAWvE"}
1
+ {"version":3,"file":"getNativeTinyui.d.ts","sourceRoot":"","sources":["../../../../src/utils/getNativeTinyui.ts"],"names":[],"mappings":"AAAA,OAAqB,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAiB,CAAC;AAE1D,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,SAAS,GACT,iBAAiB,GACjB,SAAS,GACT,gBAAgB,GAChB,UAAU,GACV,QAAQ,CAAC;AAKb;;;GAGG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAStC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI,CAWvE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "react-native-tinyui",
3
- "version": "0.4.0",
4
- "description": "Dependency-free native iOS Menu, Popover and LiquidGlassText components for React Native",
3
+ "version": "1.0.0",
4
+ "description": "Dependency-free native iOS Menu, Popover, TipKit, Stepper, ConcentricView, SFSymbol and LiquidGlassText components for React Native",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
7
7
  "exports": {
@@ -20,6 +20,26 @@
20
20
  "types": "./lib/typescript/src/Popover/index.d.ts",
21
21
  "default": "./lib/module/Popover/index.js"
22
22
  },
23
+ "./stepper": {
24
+ "react-native-tinyui-source": "./src/Stepper/index.tsx",
25
+ "types": "./lib/typescript/src/Stepper/index.d.ts",
26
+ "default": "./lib/module/Stepper/index.js"
27
+ },
28
+ "./concentric-view": {
29
+ "react-native-tinyui-source": "./src/ConcentricView/index.tsx",
30
+ "types": "./lib/typescript/src/ConcentricView/index.d.ts",
31
+ "default": "./lib/module/ConcentricView/index.js"
32
+ },
33
+ "./sf-symbol": {
34
+ "react-native-tinyui-source": "./src/SFSymbol/index.tsx",
35
+ "types": "./lib/typescript/src/SFSymbol/index.d.ts",
36
+ "default": "./lib/module/SFSymbol/index.js"
37
+ },
38
+ "./tip-kit": {
39
+ "react-native-tinyui-source": "./src/TipKit/index.ts",
40
+ "types": "./lib/typescript/src/TipKit/index.d.ts",
41
+ "default": "./lib/module/TipKit/index.js"
42
+ },
23
43
  "./package.json": "./package.json",
24
44
  "./liquid-glass-text": {
25
45
  "react-native-tinyui-source": "./src/LiquidGlassText/index.tsx",
@@ -52,6 +72,7 @@
52
72
  "ios",
53
73
  "menu",
54
74
  "popover",
75
+ "stepper",
55
76
  "fabric",
56
77
  "liquid-glass"
57
78
  ],
@@ -78,6 +99,7 @@
78
99
  "@react-native/jest-preset": "0.85.0",
79
100
  "@release-it/conventional-changelog": "^11.0.1",
80
101
  "@types/react": "^19.2.0",
102
+ "@types/react-test-renderer": "^19.1.0",
81
103
  "del-cli": "^7.0.0",
82
104
  "eslint": "^9.39.4",
83
105
  "eslint-config-prettier": "^10.1.8",
@@ -88,6 +110,7 @@
88
110
  "react": "19.2.3",
89
111
  "react-native": "0.85.0",
90
112
  "react-native-builder-bob": "^0.43.0",
113
+ "react-test-renderer": "19.2.3",
91
114
  "release-it": "^20.2.0",
92
115
  "turbo": "^2.9.16",
93
116
  "typescript": "^6.0.3"
@@ -137,6 +160,18 @@
137
160
  },
138
161
  "TinyuiLiquidGlassTextView": {
139
162
  "className": "TinyuiLiquidGlassTextView"
163
+ },
164
+ "TinyuiStepperView": {
165
+ "className": "TinyuiStepperView"
166
+ },
167
+ "TinyuiConcentricView": {
168
+ "className": "TinyuiConcentricView"
169
+ },
170
+ "TinyuiSFSymbolView": {
171
+ "className": "TinyuiSFSymbolView"
172
+ },
173
+ "TinyuiTipPopoverView": {
174
+ "className": "TinyuiTipPopoverView"
140
175
  }
141
176
  }
142
177
  }
@@ -19,6 +19,26 @@ components = {
19
19
  :definition => "TINYUI_FEATURE_LIQUID_GLASS_TEXT=1",
20
20
  :frameworks => ["UIKit", "SwiftUI", "CoreText"],
21
21
  },
22
+ "Stepper" => {
23
+ :source_files => "ios/Stepper/**/*.{h,m,mm,swift,cpp}",
24
+ :definition => "TINYUI_FEATURE_STEPPER=1",
25
+ :frameworks => ["UIKit"],
26
+ },
27
+ "ConcentricView" => {
28
+ :source_files => "ios/ConcentricView/**/*.{h,m,mm,swift,cpp}",
29
+ :definition => "TINYUI_FEATURE_CONCENTRIC_VIEW=1",
30
+ :frameworks => ["UIKit"],
31
+ },
32
+ "SFSymbol" => {
33
+ :source_files => "ios/SFSymbol/**/*.{h,m,mm,swift,cpp}",
34
+ :definition => "TINYUI_FEATURE_SF_SYMBOL=1",
35
+ :frameworks => ["UIKit", "Symbols"],
36
+ },
37
+ "TipKit" => {
38
+ :source_files => "ios/TipKit/**/*.{h,m,mm,swift,cpp}",
39
+ :definition => "TINYUI_FEATURE_TIP_KIT=1",
40
+ :frameworks => ["UIKit", "SwiftUI", "TipKit"],
41
+ },
22
42
  }
23
43
 
24
44
  configured_components = nil
@@ -68,7 +88,8 @@ definitions = selected_components.map { |component| component[:definition] }
68
88
  frameworks = selected_components.flat_map { |component| component.fetch(:frameworks, []) }.uniq
69
89
 
70
90
  Pod::Spec.new do |s|
71
- s.name = "Tinyui"
91
+ s.name = "react-native-tinyui"
92
+ s.module_name = "Tinyui"
72
93
  s.version = package["version"]
73
94
  s.summary = package["description"]
74
95
  s.homepage = package["homepage"]
@@ -79,7 +100,7 @@ Pod::Spec.new do |s|
79
100
  s.source = { :git => "https://github.com/luoxuhai/react-native-tinyui.git", :tag => "#{s.version}" }
80
101
 
81
102
  s.source_files = source_files
82
- s.private_header_files = ["ios/Core/**/*.h", "ios/Menu/**/*.h", "ios/Popover/**/*.h", "ios/LiquidGlassText/**/*.h"]
103
+ s.private_header_files = ["ios/Core/**/*.h", "ios/Menu/**/*.h", "ios/Popover/**/*.h", "ios/LiquidGlassText/**/*.h", "ios/Stepper/**/*.h", "ios/ConcentricView/**/*.h", "ios/SFSymbol/**/*.h", "ios/TipKit/**/*.h"]
83
104
  s.preserve_paths = "ios/LiquidGlassText/GlassText-LICENSE"
84
105
  s.swift_version = "5.0"
85
106
  s.frameworks = frameworks unless frameworks.empty?
@@ -0,0 +1,14 @@
1
+ import {
2
+ codegenNativeComponent,
3
+ type CodegenTypes,
4
+ type ViewProps,
5
+ } from 'react-native';
6
+
7
+ export interface NativeConcentricViewProps extends ViewProps {
8
+ minimumRadius?: CodegenTypes.WithDefault<CodegenTypes.Double, 0>;
9
+ }
10
+
11
+ export default codegenNativeComponent<NativeConcentricViewProps>(
12
+ 'TinyuiConcentricView',
13
+ { excludedPlatforms: ['android'] }
14
+ );
@@ -0,0 +1,34 @@
1
+ import { forwardRef, type ComponentRef } from 'react';
2
+ import { StyleSheet, type View } from 'react-native';
3
+
4
+ import { assertComponentEnabled } from '../utils';
5
+ import NativeConcentricView from './ConcentricViewNativeComponent';
6
+ import type { ConcentricViewProps } from './types';
7
+
8
+ export const ConcentricView = forwardRef<
9
+ ComponentRef<typeof View>,
10
+ ConcentricViewProps
11
+ >(function ConcentricViewRoot({ minimumRadius = 0, style, ...viewProps }, ref) {
12
+ assertComponentEnabled('ConcentricView');
13
+
14
+ if (!Number.isFinite(minimumRadius) || minimumRadius < 0) {
15
+ throw new RangeError(
16
+ '[TinyUI] ConcentricView minimumRadius must be a finite, nonnegative number.'
17
+ );
18
+ }
19
+
20
+ return (
21
+ <NativeConcentricView
22
+ {...viewProps}
23
+ ref={ref}
24
+ minimumRadius={minimumRadius}
25
+ style={[styles.container, style]}
26
+ />
27
+ );
28
+ });
29
+
30
+ const styles = StyleSheet.create({
31
+ container: { overflow: 'hidden' },
32
+ });
33
+
34
+ export type { ConcentricViewProps } from './types';