@solostylist/ui-kit-native 1.0.1 → 1.0.3

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 (150) hide show
  1. package/dist/hooks/use-count-down.d.ts +0 -2
  2. package/dist/hooks/use-count-down.d.ts.map +1 -1
  3. package/dist/hooks/use-count-down.js +0 -1
  4. package/dist/index.d.ts +5 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/s-avatar/s-avatar.d.ts +4 -8
  8. package/dist/s-avatar/s-avatar.d.ts.map +1 -1
  9. package/dist/s-avatar/s-avatar.js +49 -42
  10. package/dist/s-button/s-button.d.ts +0 -2
  11. package/dist/s-button/s-button.d.ts.map +1 -1
  12. package/dist/s-button/s-button.js +27 -24
  13. package/dist/s-button-link/s-button-link.d.ts +0 -2
  14. package/dist/s-button-link/s-button-link.d.ts.map +1 -1
  15. package/dist/s-button-link/s-button-link.js +21 -26
  16. package/dist/s-chat-input/index.d.ts +1 -1
  17. package/dist/s-chat-input/index.d.ts.map +1 -1
  18. package/dist/s-chat-input/s-chat-input.d.ts +19 -8
  19. package/dist/s-chat-input/s-chat-input.d.ts.map +1 -1
  20. package/dist/s-chat-input/s-chat-input.js +115 -46
  21. package/dist/s-chat-message/s-chat-message.d.ts +5 -7
  22. package/dist/s-chat-message/s-chat-message.d.ts.map +1 -1
  23. package/dist/s-chat-message/s-chat-message.js +100 -175
  24. package/dist/s-checkbox/s-checkbox.d.ts +0 -2
  25. package/dist/s-checkbox/s-checkbox.d.ts.map +1 -1
  26. package/dist/s-checkbox/s-checkbox.js +11 -18
  27. package/dist/s-chip/s-chip.d.ts +0 -2
  28. package/dist/s-chip/s-chip.d.ts.map +1 -1
  29. package/dist/s-chip/s-chip.js +35 -54
  30. package/dist/s-code-block/s-code-block.d.ts +0 -2
  31. package/dist/s-code-block/s-code-block.d.ts.map +1 -1
  32. package/dist/s-code-block/s-code-block.js +28 -40
  33. package/dist/s-comment-message/s-comment-message.d.ts +3 -5
  34. package/dist/s-comment-message/s-comment-message.d.ts.map +1 -1
  35. package/dist/s-comment-message/s-comment-message.js +54 -167
  36. package/dist/s-copyable-text/s-copyable-text.d.ts +0 -2
  37. package/dist/s-copyable-text/s-copyable-text.d.ts.map +1 -1
  38. package/dist/s-copyable-text/s-copyable-text.js +20 -45
  39. package/dist/s-countdown/index.d.ts +0 -1
  40. package/dist/s-countdown/index.d.ts.map +1 -1
  41. package/dist/s-countdown/index.js +0 -1
  42. package/dist/s-countdown/s-count-box.d.ts +5 -3
  43. package/dist/s-countdown/s-count-box.d.ts.map +1 -1
  44. package/dist/s-countdown/s-count-box.js +69 -60
  45. package/dist/s-countdown/s-countdown.d.ts +6 -3
  46. package/dist/s-countdown/s-countdown.d.ts.map +1 -1
  47. package/dist/s-countdown/s-countdown.js +11 -10
  48. package/dist/s-data-table/s-data-table.d.ts +0 -3
  49. package/dist/s-data-table/s-data-table.d.ts.map +1 -1
  50. package/dist/s-data-table/s-data-table.js +27 -50
  51. package/dist/s-date-picker/s-date-picker.d.ts +0 -2
  52. package/dist/s-date-picker/s-date-picker.d.ts.map +1 -1
  53. package/dist/s-date-picker/s-date-picker.js +51 -110
  54. package/dist/s-date-time-picker/s-date-time-picker.d.ts +0 -2
  55. package/dist/s-date-time-picker/s-date-time-picker.d.ts.map +1 -1
  56. package/dist/s-date-time-picker/s-date-time-picker.js +111 -203
  57. package/dist/s-divider/index.d.ts +2 -0
  58. package/dist/s-divider/index.d.ts.map +1 -0
  59. package/dist/s-divider/index.js +1 -0
  60. package/dist/s-divider/s-divider.d.ts +24 -0
  61. package/dist/s-divider/s-divider.d.ts.map +1 -0
  62. package/dist/s-divider/s-divider.js +30 -0
  63. package/dist/s-file-dropzone/s-file-dropzone.d.ts +0 -35
  64. package/dist/s-file-dropzone/s-file-dropzone.d.ts.map +1 -1
  65. package/dist/s-file-dropzone/s-file-dropzone.js +46 -120
  66. package/dist/s-file-icon/s-file-icon.d.ts +0 -2
  67. package/dist/s-file-icon/s-file-icon.d.ts.map +1 -1
  68. package/dist/s-file-icon/s-file-icon.js +11 -12
  69. package/dist/s-form/s-form.d.ts +0 -1
  70. package/dist/s-form/s-form.d.ts.map +1 -1
  71. package/dist/s-form/s-form.js +0 -1
  72. package/dist/s-icon-button/s-icon-button.d.ts +9 -9
  73. package/dist/s-icon-button/s-icon-button.d.ts.map +1 -1
  74. package/dist/s-icon-button/s-icon-button.js +38 -4
  75. package/dist/s-image-comparison/s-image-comparison.d.ts +3 -5
  76. package/dist/s-image-comparison/s-image-comparison.d.ts.map +1 -1
  77. package/dist/s-image-comparison/s-image-comparison.js +75 -102
  78. package/dist/s-label/s-label.d.ts +0 -1
  79. package/dist/s-label/s-label.d.ts.map +1 -1
  80. package/dist/s-label/s-label.js +8 -24
  81. package/dist/s-language-switcher/s-language-switcher.d.ts +2 -5
  82. package/dist/s-language-switcher/s-language-switcher.d.ts.map +1 -1
  83. package/dist/s-language-switcher/s-language-switcher.js +14 -25
  84. package/dist/s-lazy-image/s-lazy-image.d.ts +4 -6
  85. package/dist/s-lazy-image/s-lazy-image.d.ts.map +1 -1
  86. package/dist/s-lazy-image/s-lazy-image.js +37 -34
  87. package/dist/s-moving-border/s-moving-border.d.ts +0 -2
  88. package/dist/s-moving-border/s-moving-border.d.ts.map +1 -1
  89. package/dist/s-moving-border/s-moving-border.js +19 -24
  90. package/dist/s-multi-select/s-multi-select.d.ts +0 -2
  91. package/dist/s-multi-select/s-multi-select.d.ts.map +1 -1
  92. package/dist/s-multi-select/s-multi-select.js +54 -105
  93. package/dist/s-pagination/s-pagination.d.ts +12 -6
  94. package/dist/s-pagination/s-pagination.d.ts.map +1 -1
  95. package/dist/s-pagination/s-pagination.js +69 -43
  96. package/dist/s-rating/s-rating.d.ts +0 -2
  97. package/dist/s-rating/s-rating.d.ts.map +1 -1
  98. package/dist/s-rating/s-rating.js +31 -29
  99. package/dist/s-review/s-review.d.ts +6 -8
  100. package/dist/s-review/s-review.d.ts.map +1 -1
  101. package/dist/s-review/s-review.js +66 -153
  102. package/dist/s-scroll-to-top/s-scroll-to-top.d.ts +0 -2
  103. package/dist/s-scroll-to-top/s-scroll-to-top.d.ts.map +1 -1
  104. package/dist/s-scroll-to-top/s-scroll-to-top.js +17 -32
  105. package/dist/s-select/s-select.d.ts +5 -5
  106. package/dist/s-select/s-select.d.ts.map +1 -1
  107. package/dist/s-select/s-select.js +54 -94
  108. package/dist/s-select-list/s-select-list.d.ts +0 -2
  109. package/dist/s-select-list/s-select-list.d.ts.map +1 -1
  110. package/dist/s-select-list/s-select-list.js +24 -38
  111. package/dist/s-skeleton/index.d.ts +3 -0
  112. package/dist/s-skeleton/index.d.ts.map +1 -0
  113. package/dist/s-skeleton/index.js +1 -0
  114. package/dist/s-skeleton/s-skeleton.d.ts +27 -0
  115. package/dist/s-skeleton/s-skeleton.d.ts.map +1 -0
  116. package/dist/s-skeleton/s-skeleton.js +126 -0
  117. package/dist/s-switch/index.d.ts +3 -0
  118. package/dist/s-switch/index.d.ts.map +1 -0
  119. package/dist/s-switch/index.js +1 -0
  120. package/dist/s-switch/s-switch.d.ts +30 -0
  121. package/dist/s-switch/s-switch.d.ts.map +1 -0
  122. package/dist/s-switch/s-switch.js +44 -0
  123. package/dist/s-text-field/s-text-field.d.ts +0 -2
  124. package/dist/s-text-field/s-text-field.d.ts.map +1 -1
  125. package/dist/s-text-field/s-text-field.js +10 -23
  126. package/dist/s-text-shimmer/s-text-shimmer.d.ts +0 -14
  127. package/dist/s-text-shimmer/s-text-shimmer.d.ts.map +1 -1
  128. package/dist/s-text-shimmer/s-text-shimmer.js +28 -46
  129. package/dist/s-text-truncation/s-text-truncation.d.ts +4 -7
  130. package/dist/s-text-truncation/s-text-truncation.d.ts.map +1 -1
  131. package/dist/s-text-truncation/s-text-truncation.js +74 -34
  132. package/dist/s-tip/s-tip.d.ts +0 -1
  133. package/dist/s-tip/s-tip.d.ts.map +1 -1
  134. package/dist/s-tip/s-tip.js +9 -16
  135. package/dist/s-tooltip/index.d.ts +2 -0
  136. package/dist/s-tooltip/index.d.ts.map +1 -0
  137. package/dist/s-tooltip/index.js +1 -0
  138. package/dist/s-tooltip/s-tooltip.d.ts +23 -0
  139. package/dist/s-tooltip/s-tooltip.d.ts.map +1 -0
  140. package/dist/s-tooltip/s-tooltip.js +17 -0
  141. package/dist/s-zoom-image/s-zoom-image.d.ts +3 -5
  142. package/dist/s-zoom-image/s-zoom-image.d.ts.map +1 -1
  143. package/dist/s-zoom-image/s-zoom-image.js +16 -21
  144. package/dist/theme/theme-primitives.d.ts +10 -0
  145. package/dist/theme/theme-primitives.d.ts.map +1 -1
  146. package/dist/theme/theme-primitives.js +11 -0
  147. package/dist/utils/bytes-to-size.d.ts +0 -1
  148. package/dist/utils/bytes-to-size.d.ts.map +1 -1
  149. package/dist/utils/bytes-to-size.js +0 -1
  150. package/package.json +3 -2
@@ -1,48 +1,88 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo, useState } from 'react';
3
- import { Pressable, StyleSheet, View } from 'react-native';
4
- import { Text } from 'react-native-paper';
5
- import { useSTheme } from '../theme';
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { View } from 'react-native';
4
+ import { SText } from '../s-text';
5
+ import { STooltip } from '../s-tooltip';
6
6
  /**
7
7
  * A text truncation component with expandable See more/less functionality.
8
- * Built for React Native with consistent theming.
9
- * Synced with web STextTruncation from @solostylist/ui-kit.
8
+ * Uses JS-based binary search truncation so "See more/less" appears inline
9
+ * at the end of the last line, matching the web ui-kit behavior.
10
10
  */
11
- export const STextTruncation = ({ text, variant = 'expandable', lines = 3, seeMoreText = 'See more', seeLessText = 'See less', minWordsForToggle = 20, style, textStyle, linkStyle, onExpandChange, }) => {
12
- const { theme } = useSTheme();
11
+ export const STextTruncation = ({ text = '', variant = 'expandable', lines = 3, seeMoreText = 'See more', seeLessText = 'See less', style, textStyle, linkStyle, onExpandChange, }) => {
13
12
  const [isExpanded, setIsExpanded] = useState(false);
13
+ const [isTruncated, setIsTruncated] = useState(false);
14
+ const [displayText, setDisplayText] = useState(text);
15
+ const measureRef = useRef(null);
16
+ const containerRef = useRef(null);
14
17
  const toggleExpansion = () => {
15
18
  const newState = !isExpanded;
16
19
  setIsExpanded(newState);
17
20
  onExpandChange?.(newState);
18
21
  };
19
- const wordCount = text ? text.split(' ').length : 0;
20
- const shouldShowToggle = variant === 'expandable' && wordCount > minWordsForToggle;
21
- const styles = useMemo(() => StyleSheet.create({
22
- container: {
23
- flexDirection: 'column',
24
- },
25
- text: {
26
- fontFamily: theme.typography.fontFamily,
27
- fontSize: 14,
28
- fontWeight: '400',
29
- color: theme.colors.text.primary,
30
- lineHeight: 20,
31
- },
32
- link: {
33
- fontFamily: theme.typography.fontFamily,
34
- fontSize: 14,
35
- fontWeight: '500',
36
- color: theme.colors.primary[500],
37
- marginTop: 4,
38
- },
39
- }), [theme.typography.fontFamily, theme.colors.text.primary, theme.colors.primary]);
40
- // Tooltip variant: Show truncated text with ellipsis only
22
+ /**
23
+ * Measures text and computes the truncation point using binary search.
24
+ * Uses a hidden element with the same width/font to accurately measure line breaks.
25
+ * Mirrors the web ui-kit approach for consistent behavior.
26
+ */
27
+ const computeTruncation = useCallback(() => {
28
+ // Access the underlying DOM node (works on Expo Web / React Native Web)
29
+ const el = measureRef.current;
30
+ if (!el || !text) {
31
+ setIsTruncated(false);
32
+ setDisplayText(text);
33
+ return;
34
+ }
35
+ // Measure line height using a single character
36
+ el.textContent = 'A';
37
+ const lineHeight = el.scrollHeight || 0;
38
+ if (lineHeight === 0)
39
+ return;
40
+ const maxHeight = lineHeight * lines;
41
+ // Check if full text fits within the allowed lines
42
+ el.textContent = text;
43
+ if ((el.scrollHeight || 0) <= maxHeight + 1) {
44
+ setIsTruncated(false);
45
+ setDisplayText(text);
46
+ el.textContent = '';
47
+ return;
48
+ }
49
+ setIsTruncated(true);
50
+ // Binary search for the max characters that fit with "… See more" appended
51
+ const suffix = `… ${seeMoreText}`;
52
+ let low = 0;
53
+ let high = text.length;
54
+ while (low < high) {
55
+ const mid = Math.ceil((low + high) / 2);
56
+ el.textContent = text.slice(0, mid) + suffix;
57
+ if ((el.scrollHeight || 0) > maxHeight + 1) {
58
+ high = mid - 1;
59
+ }
60
+ else {
61
+ low = mid;
62
+ }
63
+ }
64
+ // Clear measurer content to prevent hidden text from leaking into the UI
65
+ el.textContent = '';
66
+ setDisplayText(text.slice(0, low).trimEnd());
67
+ }, [text, lines, seeMoreText]);
68
+ useEffect(() => {
69
+ // Delay measurement to ensure fonts are loaded and layout is complete
70
+ const timer = setTimeout(computeTruncation, 150);
71
+ return () => clearTimeout(timer);
72
+ }, [computeTruncation]);
73
+ // Tooltip variant: Show truncated text with ellipsis tooltip
41
74
  if (variant === 'tooltip') {
42
- return (_jsx(View, { style: [styles.container, style], children: _jsx(Text, { style: [styles.text, textStyle], numberOfLines: lines, ellipsizeMode: "tail", children: text }) }));
75
+ return (_jsx(STooltip, { title: text, children: _jsx(View, { style: [{ flexDirection: 'column' }, style], children: _jsx(SText, { style: textStyle, numberOfLines: lines, ellipsizeMode: "tail", children: text }) }) }));
43
76
  }
44
- // Expandable variant: Show "See more/less" link
45
- return (_jsxs(View, { style: [styles.container, style], children: [_jsx(Text, { style: [styles.text, textStyle], numberOfLines: isExpanded ? undefined : lines, ellipsizeMode: "tail", children: text }), shouldShowToggle && (_jsx(Pressable, { onPress: toggleExpansion, children: _jsx(Text, { style: [styles.link, linkStyle], children: isExpanded ? seeLessText : seeMoreText }) }))] }));
77
+ // Expandable variant: JS-based truncation with inline "See more/less"
78
+ return (_jsxs(View, { ref: containerRef, style: [{ position: 'relative' }, style], children: [_jsx(View, { ref: measureRef, "aria-hidden": true, style: {
79
+ position: 'absolute',
80
+ top: 0,
81
+ left: 0,
82
+ right: 0,
83
+ opacity: 0,
84
+ pointerEvents: 'none',
85
+ } }), _jsxs(SText, { style: textStyle, children: [isExpanded ? text : displayText, isTruncated && (_jsxs(_Fragment, { children: [isExpanded ? ' ' : '… ', _jsx(SText, { style: [linkStyle], color: "primary", onPress: toggleExpansion, children: isExpanded ? seeLessText : seeMoreText })] }))] })] }));
46
86
  };
47
87
  STextTruncation.displayName = 'STextTruncation';
48
88
  export default STextTruncation;
@@ -8,7 +8,6 @@ export interface STipProps {
8
8
  }
9
9
  /**
10
10
  * A simple tip component that displays helpful information with a lightbulb icon.
11
- * Synced with web STip from @solostylist/ui-kit.
12
11
  */
13
12
  export declare const STip: {
14
13
  ({ message }: STipProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"s-tip.d.ts","sourceRoot":"","sources":["../../src/s-tip/s-tip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI;kBAAiB,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CA0C9D,CAAC;AAIF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"s-tip.d.ts","sourceRoot":"","sources":["../../src/s-tip/s-tip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI;kBAAiB,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAoC9D,CAAC;AAIF,eAAe,IAAI,CAAC"}
@@ -1,32 +1,25 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { MaterialCommunityIcons } from '@expo/vector-icons';
3
- import { useMemo } from 'react';
4
- import { StyleSheet, View } from 'react-native';
3
+ import { View } from 'react-native';
5
4
  import { SText } from '../s-text';
6
5
  import { useSTheme } from '../theme';
7
6
  /**
8
7
  * A simple tip component that displays helpful information with a lightbulb icon.
9
- * Synced with web STip from @solostylist/ui-kit.
10
8
  */
11
9
  export const STip = ({ message }) => {
12
10
  const { theme } = useSTheme();
13
- const styles = useMemo(() => StyleSheet.create({
14
- container: {
11
+ return (_jsxs(View, { style: {
15
12
  flexDirection: 'row',
16
13
  alignItems: 'center',
17
14
  backgroundColor: theme.colors.background.default,
18
- borderRadius: theme.borderRadius.sm, // 4px (matches web borderRadius: 1 which is 8px in MUI theme spacing, but web uses 1 = 4px here)
15
+ borderRadius: theme.borderRadius.md, // 8px (matches web borderRadius: 1 which is 8px in MUI theme spacing, but web uses 1 = 4px here)
19
16
  padding: theme.spacing.sm, // 8px (matches web p: 1 which is 8px)
20
- },
21
- icon: {
22
- color: theme.colors.text.secondary,
23
- marginRight: theme.spacing.sm, // 8px (matches web spacing: 1 which is 8px)
24
- },
25
- textContainer: {
26
- flex: 1,
27
- },
28
- }), [theme]);
29
- return (_jsxs(View, { style: styles.container, children: [_jsx(MaterialCommunityIcons, { name: "lightbulb-outline", size: 16, color: theme.colors.text.secondary, style: styles.icon }), _jsx(View, { style: styles.textContainer, children: _jsxs(SText, { variant: "body2", color: "text.secondary", children: [_jsx(SText, { variant: "body2", fontWeight: "700", color: "text.secondary", children: "Tip." }), ' ', message] }) })] }));
17
+ }, children: [_jsx(MaterialCommunityIcons, { name: "lightbulb-outline", size: 16, color: theme.colors.text.secondary, style: {
18
+ color: theme.colors.text.secondary,
19
+ marginRight: theme.spacing.sm, // 8px (matches web spacing: 1 which is 8px)
20
+ } }), _jsx(View, { style: {
21
+ flex: 1,
22
+ }, children: _jsxs(SText, { variant: "body2", color: "text.secondary", children: [_jsx(SText, { variant: "body2", fontWeight: "700", color: "text.secondary", children: "Tip." }), ' ', message] }) })] }));
30
23
  };
31
24
  STip.displayName = 'STip';
32
25
  export default STip;
@@ -0,0 +1,2 @@
1
+ export { STooltip, type STooltipProps } from './s-tooltip';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/s-tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export { STooltip } from './s-tooltip';
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ /**
3
+ * Props interface for STooltip component
4
+ */
5
+ export interface STooltipProps {
6
+ /** Tooltip text content */
7
+ title: string;
8
+ /** Delay before showing the tooltip (in ms) */
9
+ enterDelay?: number;
10
+ /** Delay before hiding the tooltip (in ms) */
11
+ leaveDelay?: number;
12
+ /** Children element that triggers the tooltip */
13
+ children: React.ReactElement;
14
+ }
15
+ /**
16
+ * A tooltip component that displays helpful text on long press.
17
+ */
18
+ export declare const STooltip: {
19
+ ({ title, enterDelay, leaveDelay, children }: STooltipProps): React.JSX.Element;
20
+ displayName: string;
21
+ };
22
+ export default STooltip;
23
+ //# sourceMappingURL=s-tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s-tooltip.d.ts","sourceRoot":"","sources":["../../src/s-tooltip/s-tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;kDAAyD,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAkB9G,CAAC;AAIF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Tooltip } from 'react-native-paper';
3
+ import { useSTheme } from '../theme';
4
+ /**
5
+ * A tooltip component that displays helpful text on long press.
6
+ */
7
+ export const STooltip = ({ title, enterDelay = 0, leaveDelay = 0, children }) => {
8
+ const { theme } = useSTheme();
9
+ return (_jsx(Tooltip, { title: title, enterTouchDelay: enterDelay, leaveTouchDelay: leaveDelay, theme: {
10
+ colors: {
11
+ surface: theme.colors.text.primary,
12
+ onSurface: theme.colors.background.paper,
13
+ },
14
+ }, children: children }));
15
+ };
16
+ STooltip.displayName = 'STooltip';
17
+ export default STooltip;
@@ -1,13 +1,12 @@
1
1
  import React from 'react';
2
- import { type StyleProp, type ViewStyle } from 'react-native';
2
+ import { type ImageSourcePropType, type StyleProp, type ViewStyle } from 'react-native';
3
3
  import { type SLazyImageVariant } from '../s-lazy-image';
4
4
  /**
5
5
  * Props interface for SZoomImage component
6
- * Synced with web SZoomImage from @solostylist/ui-kit
7
6
  */
8
7
  export interface SZoomImageProps {
9
- /** Image source URL */
10
- src: string;
8
+ /** Image source URL or local asset */
9
+ src: ImageSourcePropType;
11
10
  /** Scale factor to apply on zoom */
12
11
  zoomScale?: number;
13
12
  /** Border radius in pixels */
@@ -30,7 +29,6 @@ export interface SZoomImageProps {
30
29
  /**
31
30
  * An interactive image component with smooth zoom-on-press functionality and built-in lazy loading.
32
31
  * Built with React Native Animated API for smooth interactions.
33
- * Synced with web SZoomImage from @solostylist/ui-kit for cross-platform consistency.
34
32
  */
35
33
  export declare const SZoomImage: {
36
34
  ({ src, zoomScale, borderRadius, skeletonVariant, height, width, containerStyle, imageStyle, onLoad, onError, }: SZoomImageProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"s-zoom-image.d.ts","sourceRoot":"","sources":["../../src/s-zoom-image/s-zoom-image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,mDAAmD;IACnD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU;qHAWpB,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAuMrC,CAAC;AAIF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"s-zoom-image.d.ts","sourceRoot":"","sources":["../../src/s-zoom-image/s-zoom-image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,EAKL,KAAK,mBAAmB,EAExB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sCAAsC;IACtC,GAAG,EAAE,mBAAmB,CAAC;IACzB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,0CAA0C;IAC1C,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,mDAAmD;IACnD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC9B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU;qHAWpB,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO;;CAiMrC,CAAC;AAIF,eAAe,UAAU,CAAC"}
@@ -1,11 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useCallback, useMemo, useState } from 'react';
3
- import { Animated, Pressable, StyleSheet, View, } from 'react-native';
3
+ import { Animated, Pressable, View, } from 'react-native';
4
4
  import { SLazyImage } from '../s-lazy-image';
5
5
  /**
6
6
  * An interactive image component with smooth zoom-on-press functionality and built-in lazy loading.
7
7
  * Built with React Native Animated API for smooth interactions.
8
- * Synced with web SZoomImage from @solostylist/ui-kit for cross-platform consistency.
9
8
  */
10
9
  export const SZoomImage = ({ src, zoomScale = 1.2, borderRadius = 12, skeletonVariant = 'rounded', height = 200, width = '100%', containerStyle, imageStyle, onLoad, onError, }) => {
11
10
  // Track whether lazy-loaded image has finished loading
@@ -126,26 +125,22 @@ export const SZoomImage = ({ src, zoomScale = 1.2, borderRadius = 12, skeletonVa
126
125
  setImageLoaded(true);
127
126
  onLoad?.(event);
128
127
  }, [onLoad]);
129
- const styles = useMemo(() => StyleSheet.create({
130
- container: {
131
- position: 'relative',
132
- width: typeof width === 'number' ? width : undefined,
133
- height: typeof height === 'number' ? height : undefined,
134
- overflow: 'hidden',
135
- borderRadius,
136
- },
137
- pressable: {
138
- width: '100%',
139
- height: '100%',
140
- },
141
- imageContainer: {
142
- width: '100%',
143
- height: '100%',
144
- },
145
- }), [width, height, borderRadius]);
146
- return (_jsx(View, { style: [styles.container, containerStyle], onLayout: handleLayout, children: _jsx(Pressable, { style: styles.pressable, onPressIn: handlePressIn, onPressOut: handlePressOut, onTouchMove: handleTouchMove, disabled: !imageLoaded, children: _jsx(Animated.View, { style: [
147
- styles.imageContainer,
128
+ return (_jsx(View, { style: [
129
+ {
130
+ position: 'relative',
131
+ width: typeof width === 'number' ? width : undefined,
132
+ height: typeof height === 'number' ? height : undefined,
133
+ overflow: 'hidden',
134
+ borderRadius,
135
+ },
136
+ containerStyle,
137
+ ], onLayout: handleLayout, children: _jsx(Pressable, { style: {
138
+ width: '100%',
139
+ height: '100%',
140
+ }, onPressIn: handlePressIn, onPressOut: handlePressOut, onTouchMove: handleTouchMove, disabled: !imageLoaded, children: _jsx(Animated.View, { style: [
148
141
  {
142
+ width: '100%',
143
+ height: '100%',
149
144
  transform: [{ translateX }, { translateY }, { scale }],
150
145
  },
151
146
  ], children: _jsx(SLazyImage, { src: src, variant: skeletonVariant, height: height, width: width, containerStyle: imageStyle, onLoad: handleImageLoad, onError: onError }) }) }) }));
@@ -61,6 +61,16 @@ export interface NativeTheme {
61
61
  normal: number;
62
62
  relaxed: number;
63
63
  };
64
+ input: {
65
+ fontSize: {
66
+ small: number;
67
+ medium: number;
68
+ };
69
+ height: {
70
+ small: number;
71
+ medium: number;
72
+ };
73
+ };
64
74
  scale: {
65
75
  h1: {
66
76
  fontSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"theme-primitives.d.ts","sourceRoot":"","sources":["../../src/theme/theme-primitives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-primitives.d.ts","sourceRoot":"","sources":["../../src/theme/theme-primitives.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,17 @@ const typography = {
26
26
  normal: 1.5,
27
27
  relaxed: 1.75,
28
28
  },
29
+ // Centralized input styling — matches web sizes: small = 36px (2.25rem), medium = 40px (2.5rem)
30
+ input: {
31
+ fontSize: {
32
+ small: 12, // theme.typography.fontSize.sm
33
+ medium: 14, // theme.typography.fontSize.md
34
+ },
35
+ height: {
36
+ small: 36,
37
+ medium: 40,
38
+ },
39
+ },
29
40
  // Web-compatible typography scale (matches MUI theme)
30
41
  scale: {
31
42
  h1: {
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Convert bytes to human-readable size format
3
- * Synced with web utils from @solostylist/ui-kit
4
3
  *
5
4
  * @param bytes - Number of bytes to convert
6
5
  * @param decimals - Number of decimal places (default: 2)
@@ -1 +1 @@
1
- {"version":3,"file":"bytes-to-size.d.ts","sourceRoot":"","sources":["../../src/utils/bytes-to-size.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAW/D"}
1
+ {"version":3,"file":"bytes-to-size.d.ts","sourceRoot":"","sources":["../../src/utils/bytes-to-size.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,MAAM,CAW/D"}
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Convert bytes to human-readable size format
3
- * Synced with web utils from @solostylist/ui-kit
4
3
  *
5
4
  * @param bytes - Number of bytes to convert
6
5
  * @param decimals - Number of decimal places (default: 2)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solostylist/ui-kit-native",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "React Native UI components for SoloStylist - synced with web ui-kit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -210,7 +210,8 @@
210
210
  "expo-clipboard": "^8.0.8",
211
211
  "expo-document-picker": "^14.0.8",
212
212
  "react-native-code-highlighter": "^1.3.0",
213
- "react-native-country-flag": "^2.0.2"
213
+ "react-native-country-flag": "^2.0.2",
214
+ "rn-emoji-keyboard": "^1.7.0"
214
215
  },
215
216
  "peerDependencies": {
216
217
  "@expo/vector-icons": ">=15.0.3",