@webority-technologies/mobile 0.0.6 → 0.0.8

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 (92) hide show
  1. package/README.md +3 -463
  2. package/lib/commonjs/components/Badge/Badge.js +23 -13
  3. package/lib/commonjs/components/BottomSheet/BottomSheet.js +39 -5
  4. package/lib/commonjs/components/Button/Button.js +25 -6
  5. package/lib/commonjs/components/Card/Card.js +13 -1
  6. package/lib/commonjs/components/Checkbox/Checkbox.js +5 -3
  7. package/lib/commonjs/components/Chip/Chip.js +12 -3
  8. package/lib/commonjs/components/Dialog/Dialog.js +15 -8
  9. package/lib/commonjs/components/EmptyState/EmptyState.js +32 -26
  10. package/lib/commonjs/components/FormField/FormField.js +3 -3
  11. package/lib/commonjs/components/Input/Input.js +13 -5
  12. package/lib/commonjs/components/ListItem/ListItem.js +33 -27
  13. package/lib/commonjs/components/OTPInput/OTPInput.js +6 -3
  14. package/lib/commonjs/components/Radio/Radio.js +7 -6
  15. package/lib/commonjs/components/SearchBar/SearchBar.js +9 -5
  16. package/lib/commonjs/components/Skeleton/Skeleton.js +20 -12
  17. package/lib/commonjs/components/Skeleton/SkeletonContent.js +25 -9
  18. package/lib/commonjs/components/Skeleton/SkeletonList.js +7 -2
  19. package/lib/commonjs/components/Skeleton/SkeletonProvider.js +48 -0
  20. package/lib/commonjs/components/Skeleton/SkeletonSkip.js +37 -0
  21. package/lib/commonjs/components/Skeleton/index.js +20 -0
  22. package/lib/commonjs/components/Switch/Switch.js +31 -2
  23. package/lib/commonjs/components/Toast/Toast.js +16 -11
  24. package/lib/commonjs/components/index.js +18 -0
  25. package/lib/commonjs/theme/Gradient.js +57 -0
  26. package/lib/commonjs/theme/index.js +20 -0
  27. package/lib/commonjs/theme/textStyle.js +37 -0
  28. package/lib/commonjs/theme/tokens.js +260 -2
  29. package/lib/module/components/Badge/Badge.js +24 -14
  30. package/lib/module/components/BottomSheet/BottomSheet.js +40 -6
  31. package/lib/module/components/Button/Button.js +26 -7
  32. package/lib/module/components/Card/Card.js +14 -2
  33. package/lib/module/components/Checkbox/Checkbox.js +5 -3
  34. package/lib/module/components/Chip/Chip.js +13 -4
  35. package/lib/module/components/Dialog/Dialog.js +16 -9
  36. package/lib/module/components/EmptyState/EmptyState.js +33 -27
  37. package/lib/module/components/FormField/FormField.js +4 -4
  38. package/lib/module/components/Input/Input.js +14 -6
  39. package/lib/module/components/ListItem/ListItem.js +34 -28
  40. package/lib/module/components/OTPInput/OTPInput.js +7 -4
  41. package/lib/module/components/Radio/Radio.js +7 -6
  42. package/lib/module/components/SearchBar/SearchBar.js +10 -6
  43. package/lib/module/components/Skeleton/Skeleton.js +20 -12
  44. package/lib/module/components/Skeleton/SkeletonContent.js +25 -9
  45. package/lib/module/components/Skeleton/SkeletonList.js +7 -2
  46. package/lib/module/components/Skeleton/SkeletonProvider.js +41 -0
  47. package/lib/module/components/Skeleton/SkeletonSkip.js +31 -0
  48. package/lib/module/components/Skeleton/index.js +2 -0
  49. package/lib/module/components/Switch/Switch.js +31 -2
  50. package/lib/module/components/Toast/Toast.js +17 -12
  51. package/lib/module/components/index.js +1 -1
  52. package/lib/module/theme/Gradient.js +50 -0
  53. package/lib/module/theme/index.js +2 -0
  54. package/lib/module/theme/textStyle.js +32 -0
  55. package/lib/module/theme/tokens.js +260 -2
  56. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +10 -0
  57. package/lib/typescript/commonjs/components/Button/Button.d.ts +8 -0
  58. package/lib/typescript/commonjs/components/Card/Card.d.ts +8 -0
  59. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +5 -0
  60. package/lib/typescript/commonjs/components/Input/Input.d.ts +12 -0
  61. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +9 -0
  62. package/lib/typescript/commonjs/components/Skeleton/SkeletonContent.d.ts +6 -0
  63. package/lib/typescript/commonjs/components/Skeleton/SkeletonList.d.ts +3 -0
  64. package/lib/typescript/commonjs/components/Skeleton/SkeletonProvider.d.ts +32 -0
  65. package/lib/typescript/commonjs/components/Skeleton/SkeletonSkip.d.ts +25 -0
  66. package/lib/typescript/commonjs/components/Skeleton/index.d.ts +4 -0
  67. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +5 -0
  68. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +5 -0
  69. package/lib/typescript/commonjs/components/index.d.ts +2 -2
  70. package/lib/typescript/commonjs/theme/Gradient.d.ts +11 -0
  71. package/lib/typescript/commonjs/theme/index.d.ts +5 -1
  72. package/lib/typescript/commonjs/theme/textStyle.d.ts +18 -0
  73. package/lib/typescript/commonjs/theme/types.d.ts +178 -0
  74. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +10 -0
  75. package/lib/typescript/module/components/Button/Button.d.ts +8 -0
  76. package/lib/typescript/module/components/Card/Card.d.ts +8 -0
  77. package/lib/typescript/module/components/Dialog/Dialog.d.ts +5 -0
  78. package/lib/typescript/module/components/Input/Input.d.ts +12 -0
  79. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +9 -0
  80. package/lib/typescript/module/components/Skeleton/SkeletonContent.d.ts +6 -0
  81. package/lib/typescript/module/components/Skeleton/SkeletonList.d.ts +3 -0
  82. package/lib/typescript/module/components/Skeleton/SkeletonProvider.d.ts +32 -0
  83. package/lib/typescript/module/components/Skeleton/SkeletonSkip.d.ts +25 -0
  84. package/lib/typescript/module/components/Skeleton/index.d.ts +4 -0
  85. package/lib/typescript/module/components/Switch/Switch.d.ts +5 -0
  86. package/lib/typescript/module/components/Toast/Toast.d.ts +5 -0
  87. package/lib/typescript/module/components/index.d.ts +2 -2
  88. package/lib/typescript/module/theme/Gradient.d.ts +11 -0
  89. package/lib/typescript/module/theme/index.d.ts +5 -1
  90. package/lib/typescript/module/theme/textStyle.d.ts +18 -0
  91. package/lib/typescript/module/theme/types.d.ts +178 -0
  92. package/package.json +5 -1
@@ -1,5 +1,32 @@
1
1
  import type { TextStyle, ViewStyle } from 'react-native';
2
2
  export type ColorMode = 'light' | 'dark';
3
+ /**
4
+ * A linear gradient definition used by Button, Card and consumer components.
5
+ * `colors` must have at least 2 entries. `start`/`end` follow the
6
+ * react-native-linear-gradient convention: { x: 0..1, y: 0..1 }.
7
+ */
8
+ export interface GradientDefinition {
9
+ colors: string[];
10
+ locations?: number[];
11
+ start?: {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ end?: {
16
+ x: number;
17
+ y: number;
18
+ };
19
+ }
20
+ export interface GradientScale {
21
+ /** Brand-primary gradient — used by `Button gradient` and `Card gradient="primary"`. */
22
+ primary?: GradientDefinition;
23
+ /** Secondary brand gradient. */
24
+ secondary?: GradientDefinition;
25
+ /** Backdrop / banner gradient (for hero sections). */
26
+ surface?: GradientDefinition;
27
+ /** Free-form named gradients. Consumer extends as needed. */
28
+ [key: string]: GradientDefinition | undefined;
29
+ }
3
30
  export interface ColorPalette {
4
31
  primary: string;
5
32
  primaryHover: string;
@@ -44,6 +71,13 @@ export interface ColorPalette {
44
71
  highlight: string;
45
72
  };
46
73
  }
74
+ export interface FontFamilyScale {
75
+ /** Font family for normal-weight text. Falls back to platform system font when undefined. */
76
+ regular?: string;
77
+ medium?: string;
78
+ semibold?: string;
79
+ bold?: string;
80
+ }
47
81
  export interface TypographyScale {
48
82
  fontSize: {
49
83
  xs: number;
@@ -61,6 +95,13 @@ export interface TypographyScale {
61
95
  semibold: TextStyle['fontWeight'];
62
96
  bold: TextStyle['fontWeight'];
63
97
  };
98
+ /**
99
+ * Optional brand font families. When set, library text components prefer
100
+ * `fontFamily.<weight>` over `fontWeight.<weight>` to match the consumer
101
+ * app's typeface. Each key is independently optional — leave undefined to
102
+ * fall back to the system font for that weight.
103
+ */
104
+ fontFamily?: FontFamilyScale;
64
105
  lineHeight: {
65
106
  tight: number;
66
107
  normal: number;
@@ -145,6 +186,135 @@ export interface MotionScale {
145
186
  };
146
187
  };
147
188
  }
189
+ /**
190
+ * Per-component size tokens. Each component that exposes a `size` prop
191
+ * resolves dimensions via `theme.components.<name>[size]`. Library ships
192
+ * sensible defaults; consumer overrides win via `mergeTheme`.
193
+ *
194
+ * Keep entries here as components gain themable per-size dimensions —
195
+ * this is the single home for "X is X tall, has Y radius, uses Z font size".
196
+ */
197
+ export type ComponentSizeKey = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
198
+ export interface ButtonSizeTokens {
199
+ paddingHorizontal: number;
200
+ paddingVertical: number;
201
+ minHeight: number;
202
+ fontSize: number;
203
+ borderRadius: number;
204
+ }
205
+ export interface InputSizeTokens {
206
+ paddingHorizontal: number;
207
+ paddingVertical: number;
208
+ minHeight: number;
209
+ multilineMinHeight: number;
210
+ fontSize: number;
211
+ borderRadius: number;
212
+ iconSize: number;
213
+ }
214
+ export interface SearchBarSizeTokens {
215
+ height: number;
216
+ paddingHorizontal: number;
217
+ fontSize: number;
218
+ iconSize: number;
219
+ gap: number;
220
+ }
221
+ export interface EmptyStateSizeTokens {
222
+ iconSize: number;
223
+ /** Resolves against the active theme's typography.fontSize scale, e.g. "lg", "xl", "2xl". */
224
+ titleFontSize: keyof TypographyScale['fontSize'];
225
+ descriptionFontSize: keyof TypographyScale['fontSize'];
226
+ /** Resolves against the active theme's spacing scale. */
227
+ paddingVertical: keyof SpacingScale;
228
+ }
229
+ export interface ListItemSizeTokens {
230
+ /** Resolves against the active theme's spacing scale. */
231
+ paddingVertical: keyof SpacingScale;
232
+ titleFontSize: keyof TypographyScale['fontSize'];
233
+ subtitleFontSize: keyof TypographyScale['fontSize'];
234
+ minHeight: number;
235
+ }
236
+ export interface BadgeSizeTokens {
237
+ fontSize: number;
238
+ minWidth: number;
239
+ height: number;
240
+ paddingHorizontal: number;
241
+ dotSize: number;
242
+ }
243
+ export interface ChipSizeTokens {
244
+ paddingHorizontal: number;
245
+ paddingVertical: number;
246
+ fontSize: number;
247
+ minHeight: number;
248
+ closeSize: number;
249
+ closeFontSize: number;
250
+ gap: number;
251
+ }
252
+ export interface SwitchSizeTokens {
253
+ trackWidth: number;
254
+ trackHeight: number;
255
+ thumbSize: number;
256
+ padding: number;
257
+ }
258
+ export interface OTPInputSizeTokens {
259
+ cell: number;
260
+ fontSize: number;
261
+ borderRadius: number;
262
+ gap: number;
263
+ }
264
+ export interface DialogTokens {
265
+ iconWrapperSize: number;
266
+ iconWrapperBorderRadius: number;
267
+ actionButtonMinHeight: number;
268
+ }
269
+ export interface ToastTokens {
270
+ iconCircleSize: number;
271
+ iconCircleBorderRadius: number;
272
+ iconGlyphFontSize: number;
273
+ tintBarWidth: number;
274
+ }
275
+ export interface FormFieldTokens {
276
+ /** Width of the inline label column when `layout="inline"`. Accepts CSS-like string ("35%") or number. */
277
+ inlineLabelWidth: number | `${number}%`;
278
+ }
279
+ export interface BadgeTokens extends Partial<Record<'sm' | 'md', BadgeSizeTokens>> {
280
+ borderWidth?: number;
281
+ anchorOffset?: number;
282
+ }
283
+ export interface CheckboxSizeTokens {
284
+ boxSize: number;
285
+ }
286
+ export interface CheckboxTokens extends Partial<Record<ComponentSizeKey, CheckboxSizeTokens>> {
287
+ borderWidth?: number;
288
+ labelGap?: number;
289
+ }
290
+ export interface RadioSizeTokens {
291
+ outer: number;
292
+ inner: number;
293
+ }
294
+ export interface RadioTokens extends Partial<Record<ComponentSizeKey, RadioSizeTokens>> {
295
+ borderWidth?: number;
296
+ labelGap?: number;
297
+ }
298
+ export interface ComponentTokens {
299
+ button?: Partial<Record<ComponentSizeKey, ButtonSizeTokens>>;
300
+ input?: Partial<Record<ComponentSizeKey, InputSizeTokens>>;
301
+ searchBar?: Partial<Record<ComponentSizeKey, SearchBarSizeTokens>> & {
302
+ cancelButtonWidth?: number;
303
+ };
304
+ emptyState?: Partial<Record<ComponentSizeKey, EmptyStateSizeTokens>>;
305
+ listItem?: Partial<Record<ComponentSizeKey, ListItemSizeTokens>>;
306
+ badge?: BadgeTokens;
307
+ chip?: Partial<Record<ComponentSizeKey, ChipSizeTokens>>;
308
+ checkbox?: CheckboxTokens;
309
+ radio?: RadioTokens;
310
+ switch?: Partial<Record<ComponentSizeKey, SwitchSizeTokens>> & {
311
+ thumbColor?: string;
312
+ };
313
+ otpInput?: Partial<Record<ComponentSizeKey, OTPInputSizeTokens>>;
314
+ dialog?: DialogTokens;
315
+ toast?: ToastTokens;
316
+ formField?: FormFieldTokens;
317
+ }
148
318
  export interface Theme {
149
319
  mode: ColorMode;
150
320
  colors: ColorPalette;
@@ -153,6 +323,14 @@ export interface Theme {
153
323
  radius: RadiusScale;
154
324
  shadows: ShadowScale;
155
325
  motion: MotionScale;
326
+ components: ComponentTokens;
327
+ /**
328
+ * Optional brand gradient palette. Empty by default — consumers register
329
+ * their own via theme overrides. Components that accept gradient inputs
330
+ * (Button, Card) read from here when consumers pass a string token, OR
331
+ * accept a `GradientDefinition` literal directly.
332
+ */
333
+ gradients: GradientScale;
156
334
  }
157
335
  export type DeepPartial<T> = T extends object ? {
158
336
  [K in keyof T]?: DeepPartial<T[K]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority-technologies/mobile",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Beautiful, animated, accessible React Native components plus API/auth/logging/network/storage utilities for Webority projects.",
5
5
  "keywords": [
6
6
  "react-native",
@@ -72,6 +72,7 @@
72
72
  "react-native-device-info": ">=14.0.0",
73
73
  "react-native-gesture-handler": "^2.21.0",
74
74
  "react-native-keychain": ">=9.0.0",
75
+ "react-native-linear-gradient": ">=2.8.0",
75
76
  "react-native-permissions": ">=4.0.0",
76
77
  "react-native-reanimated": "^4.0.0",
77
78
  "react-native-safe-area-context": ">=5.4.0",
@@ -96,6 +97,9 @@
96
97
  "react-native-keychain": {
97
98
  "optional": true
98
99
  },
100
+ "react-native-linear-gradient": {
101
+ "optional": true
102
+ },
99
103
  "react-native-permissions": {
100
104
  "optional": true
101
105
  },