@beyondcorp/beyond-ui-native 0.1.1 → 0.1.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 (83) hide show
  1. package/dist/{chunk-2B6HTSGM.mjs → chunk-RNHEGFYR.mjs} +16 -2
  2. package/dist/chunk-RNHEGFYR.mjs.map +1 -0
  3. package/dist/index.d.mts +2 -145
  4. package/dist/index.d.ts +2 -145
  5. package/dist/index.js +37 -8
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +23 -8
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/preset-BmUHLoAa.d.mts +274 -0
  10. package/dist/preset-BmUHLoAa.d.ts +274 -0
  11. package/dist/preset.d.mts +1 -117
  12. package/dist/preset.d.ts +1 -117
  13. package/dist/preset.js +19 -3
  14. package/dist/preset.js.map +1 -1
  15. package/dist/preset.mjs +5 -3
  16. package/package.json +11 -5
  17. package/src/components/accordion/accordion.tsx +245 -0
  18. package/src/components/accordion/index.ts +1 -0
  19. package/src/components/alert/alert.tsx +118 -0
  20. package/src/components/alert/index.ts +1 -0
  21. package/src/components/avatar/avatar.tsx +125 -0
  22. package/src/components/avatar/index.ts +1 -0
  23. package/src/components/badge/badge.tsx +89 -0
  24. package/src/components/badge/index.ts +1 -0
  25. package/src/components/bottom-sheet/bottom-sheet.tsx +336 -0
  26. package/src/components/bottom-sheet/index.ts +1 -0
  27. package/src/components/button/button.tsx +172 -0
  28. package/src/components/button/index.ts +1 -0
  29. package/src/components/card/card.tsx +121 -0
  30. package/src/components/card/index.ts +1 -0
  31. package/src/components/checkbox/checkbox.tsx +100 -0
  32. package/src/components/checkbox/index.ts +1 -0
  33. package/src/components/data-table/data-table.tsx +277 -0
  34. package/src/components/data-table/index.ts +1 -0
  35. package/src/components/dialog/dialog.tsx +278 -0
  36. package/src/components/dialog/index.ts +1 -0
  37. package/src/components/input/index.ts +1 -0
  38. package/src/components/input/input.tsx +130 -0
  39. package/src/components/radio/index.ts +1 -0
  40. package/src/components/radio/radio.tsx +117 -0
  41. package/src/components/select/index.ts +1 -0
  42. package/src/components/select/select.tsx +375 -0
  43. package/src/components/separator/index.ts +1 -0
  44. package/src/components/separator/separator.tsx +28 -0
  45. package/src/components/skeleton/index.ts +1 -0
  46. package/src/components/skeleton/skeleton.tsx +43 -0
  47. package/src/components/spinner/index.ts +1 -0
  48. package/src/components/spinner/spinner.tsx +46 -0
  49. package/src/components/stats-card/index.ts +1 -0
  50. package/src/components/stats-card/stats-card.tsx +92 -0
  51. package/src/components/switch/index.ts +1 -0
  52. package/src/components/switch/switch.tsx +80 -0
  53. package/src/components/tabs/index.ts +1 -0
  54. package/src/components/tabs/tabs.tsx +172 -0
  55. package/src/components/text/heading.tsx +50 -0
  56. package/src/components/text/index.ts +2 -0
  57. package/src/components/text/text.tsx +62 -0
  58. package/src/components/textarea/index.ts +1 -0
  59. package/src/components/textarea/textarea.tsx +87 -0
  60. package/src/components/toast/index.ts +2 -0
  61. package/src/components/toast/toast.tsx +136 -0
  62. package/src/components/toast/types.ts +32 -0
  63. package/src/index.ts +42 -0
  64. package/src/primitives/box.tsx +25 -0
  65. package/src/primitives/index.ts +2 -0
  66. package/src/primitives/pressable.tsx +49 -0
  67. package/src/providers/BeyondUIProvider.tsx +100 -0
  68. package/src/templates/auth/ForgotPasswordTemplate.tsx +132 -0
  69. package/src/templates/auth/SignInTemplate.tsx +213 -0
  70. package/src/templates/auth/SignUpTemplate.tsx +233 -0
  71. package/src/templates/auth/index.ts +3 -0
  72. package/src/templates/dashboard/DashboardTemplate.tsx +205 -0
  73. package/src/templates/dashboard/index.ts +1 -0
  74. package/src/templates/index.ts +3 -0
  75. package/src/templates/settings/SettingsTemplate.tsx +226 -0
  76. package/src/templates/settings/index.ts +1 -0
  77. package/src/theme/preset.ts +45 -0
  78. package/src/theme/tokens.ts +144 -0
  79. package/src/types/nativewind-env.d.ts +26 -0
  80. package/src/utilities/accessibility.ts +43 -0
  81. package/src/utilities/cn.ts +9 -0
  82. package/src/utilities/index.ts +2 -0
  83. package/dist/chunk-2B6HTSGM.mjs.map +0 -1
package/dist/preset.d.ts CHANGED
@@ -1,117 +1 @@
1
- declare const beyondUIPreset: {
2
- darkMode: string;
3
- theme: {
4
- extend: {
5
- colors: {
6
- primary: {
7
- readonly 50: "#eff6ff";
8
- readonly 100: "#dbeafe";
9
- readonly 200: "#bfdbfe";
10
- readonly 300: "#93c5fd";
11
- readonly 400: "#60a5fa";
12
- readonly 500: "#3b82f6";
13
- readonly 600: "#2563eb";
14
- readonly 700: "#1d4ed8";
15
- readonly 800: "#1e40af";
16
- readonly 900: "#1e3a8a";
17
- readonly 950: "#172554";
18
- readonly DEFAULT: "#2563eb";
19
- };
20
- secondary: {
21
- readonly 50: "#f8fafc";
22
- readonly 100: "#f1f5f9";
23
- readonly 200: "#e2e8f0";
24
- readonly 300: "#cbd5e1";
25
- readonly 400: "#94a3b8";
26
- readonly 500: "#64748b";
27
- readonly 600: "#475569";
28
- readonly 700: "#334155";
29
- readonly 800: "#1e293b";
30
- readonly 900: "#0f172a";
31
- readonly 950: "#020617";
32
- readonly DEFAULT: "#475569";
33
- };
34
- danger: {
35
- readonly 50: "#fef2f2";
36
- readonly 100: "#fee2e2";
37
- readonly 200: "#fecaca";
38
- readonly 300: "#fca5a5";
39
- readonly 400: "#f87171";
40
- readonly 500: "#ef4444";
41
- readonly 600: "#dc2626";
42
- readonly 700: "#b91c1c";
43
- readonly 800: "#991b1b";
44
- readonly 900: "#7f1d1d";
45
- readonly 950: "#450a0a";
46
- readonly DEFAULT: "#dc2626";
47
- };
48
- destructive: {
49
- readonly 50: "#fef2f2";
50
- readonly 100: "#fee2e2";
51
- readonly 200: "#fecaca";
52
- readonly 300: "#fca5a5";
53
- readonly 400: "#f87171";
54
- readonly 500: "#ef4444";
55
- readonly 600: "#dc2626";
56
- readonly 700: "#b91c1c";
57
- readonly 800: "#991b1b";
58
- readonly 900: "#7f1d1d";
59
- readonly 950: "#450a0a";
60
- readonly DEFAULT: "#dc2626";
61
- };
62
- success: {
63
- readonly 50: "#f0fdf4";
64
- readonly 100: "#dcfce7";
65
- readonly 200: "#bbf7d0";
66
- readonly 300: "#86efac";
67
- readonly 400: "#4ade80";
68
- readonly 500: "#22c55e";
69
- readonly 600: "#16a34a";
70
- readonly 700: "#15803d";
71
- readonly 800: "#166534";
72
- readonly 900: "#14532d";
73
- readonly 950: "#052e16";
74
- readonly DEFAULT: "#16a34a";
75
- };
76
- warning: {
77
- readonly 50: "#fffbeb";
78
- readonly 100: "#fef3c7";
79
- readonly 200: "#fde68a";
80
- readonly 300: "#fcd34d";
81
- readonly 400: "#fbbf24";
82
- readonly 500: "#f59e0b";
83
- readonly 600: "#d97706";
84
- readonly 700: "#b45309";
85
- readonly 800: "#92400e";
86
- readonly 900: "#78350f";
87
- readonly 950: "#451a03";
88
- readonly DEFAULT: "#d97706";
89
- };
90
- neutral: {
91
- readonly 50: "#f9fafb";
92
- readonly 100: "#f3f4f6";
93
- readonly 200: "#e5e7eb";
94
- readonly 300: "#d1d5db";
95
- readonly 400: "#9ca3af";
96
- readonly 500: "#6b7280";
97
- readonly 600: "#4b5563";
98
- readonly 700: "#374151";
99
- readonly 800: "#1f2937";
100
- readonly 900: "#111827";
101
- readonly 950: "#030712";
102
- };
103
- };
104
- borderRadius: {
105
- none: string;
106
- sm: string;
107
- md: string;
108
- lg: string;
109
- xl: string;
110
- "2xl": string;
111
- full: string;
112
- };
113
- };
114
- };
115
- };
116
-
117
- export { beyondUIPreset, beyondUIPreset as default };
1
+ export { b as beyondUIPreset, b as default, t as tokens } from './preset-BmUHLoAa.js';
package/dist/preset.js CHANGED
@@ -21,7 +21,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var preset_exports = {};
22
22
  __export(preset_exports, {
23
23
  beyondUIPreset: () => beyondUIPreset,
24
- default: () => preset_default
24
+ default: () => preset_default,
25
+ tokens: () => tokens
25
26
  });
26
27
  module.exports = __toCommonJS(preset_exports);
27
28
 
@@ -181,7 +182,21 @@ var beyondUIPreset = {
181
182
  destructive: tokens.colors.destructive,
182
183
  success: tokens.colors.success,
183
184
  warning: tokens.colors.warning,
184
- neutral: tokens.colors.neutral
185
+ neutral: tokens.colors.neutral,
186
+ background: tokens.colors.semantic.light.background,
187
+ foreground: tokens.colors.semantic.light.foreground,
188
+ card: {
189
+ DEFAULT: tokens.colors.semantic.light.card,
190
+ foreground: tokens.colors.semantic.light.cardForeground
191
+ },
192
+ cardForeground: tokens.colors.semantic.light.cardForeground,
193
+ muted: {
194
+ DEFAULT: tokens.colors.semantic.light.mutedForeground,
195
+ foreground: tokens.colors.semantic.light.mutedForeground
196
+ },
197
+ mutedForeground: tokens.colors.semantic.light.mutedForeground,
198
+ border: tokens.colors.semantic.light.border,
199
+ input: tokens.colors.semantic.light.input
185
200
  },
186
201
  borderRadius: {
187
202
  none: "0px",
@@ -198,6 +213,7 @@ var beyondUIPreset = {
198
213
  var preset_default = beyondUIPreset;
199
214
  // Annotate the CommonJS export names for ESM import in node:
200
215
  0 && (module.exports = {
201
- beyondUIPreset
216
+ beyondUIPreset,
217
+ tokens
202
218
  });
203
219
  //# sourceMappingURL=preset.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/theme/preset.ts","../src/theme/tokens.ts"],"sourcesContent":["import { tokens } from \"./tokens\";\n\nexport const beyondUIPreset = {\n darkMode: \"class\",\n theme: {\n extend: {\n colors: {\n primary: tokens.colors.primary,\n secondary: tokens.colors.secondary,\n danger: tokens.colors.danger,\n destructive: tokens.colors.destructive,\n success: tokens.colors.success,\n warning: tokens.colors.warning,\n neutral: tokens.colors.neutral,\n },\n borderRadius: {\n none: \"0px\",\n sm: `${tokens.radius.sm}px`,\n md: `${tokens.radius.md}px`,\n lg: `${tokens.radius.lg}px`,\n xl: `${tokens.radius.xl}px`,\n \"2xl\": `${tokens.radius[\"2xl\"]}px`,\n full: \"9999px\",\n },\n },\n },\n};\n\nexport default beyondUIPreset;\n","export const tokens = {\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\",\n DEFAULT: \"#2563eb\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\",\n DEFAULT: \"#475569\",\n },\n danger: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\",\n DEFAULT: \"#dc2626\",\n },\n // Alias for shadcn / React Native convention compatibility\n destructive: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\",\n DEFAULT: \"#dc2626\",\n },\n success: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\",\n DEFAULT: \"#16a34a\",\n },\n warning: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\",\n DEFAULT: \"#d97706\",\n },\n neutral: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\",\n },\n semantic: {\n light: {\n background: \"#ffffff\",\n foreground: \"#0f172a\",\n card: \"#ffffff\",\n cardForeground: \"#0f172a\",\n muted: \"#f8fafc\",\n mutedForeground: \"#64748b\",\n border: \"#e2e8f0\",\n input: \"#e2e8f0\",\n },\n dark: {\n background: \"#090d16\",\n foreground: \"#f8fafc\",\n card: \"#0f172a\",\n cardForeground: \"#f8fafc\",\n muted: \"#1e293b\",\n mutedForeground: \"#94a3b8\",\n border: \"#334155\",\n input: \"#334155\",\n },\n },\n },\n radius: {\n none: 0,\n sm: 6,\n md: 10,\n lg: 14,\n xl: 20,\n \"2xl\": 28,\n full: 9999,\n },\n spacing: {\n xs: 4,\n sm: 8,\n md: 12,\n lg: 16,\n xl: 24,\n \"2xl\": 32,\n \"3xl\": 48,\n },\n} as const;\n\nexport type BeyondUITokens = typeof tokens;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/theme/preset.ts","../src/theme/tokens.ts"],"sourcesContent":["import { tokens } from \"./tokens\";\n\nexport { tokens };\n\nexport const beyondUIPreset = {\n darkMode: \"class\",\n theme: {\n extend: {\n colors: {\n primary: tokens.colors.primary,\n secondary: tokens.colors.secondary,\n danger: tokens.colors.danger,\n destructive: tokens.colors.destructive,\n success: tokens.colors.success,\n warning: tokens.colors.warning,\n neutral: tokens.colors.neutral,\n background: tokens.colors.semantic.light.background,\n foreground: tokens.colors.semantic.light.foreground,\n card: {\n DEFAULT: tokens.colors.semantic.light.card,\n foreground: tokens.colors.semantic.light.cardForeground,\n },\n cardForeground: tokens.colors.semantic.light.cardForeground,\n muted: {\n DEFAULT: tokens.colors.semantic.light.mutedForeground,\n foreground: tokens.colors.semantic.light.mutedForeground,\n },\n mutedForeground: tokens.colors.semantic.light.mutedForeground,\n border: tokens.colors.semantic.light.border,\n input: tokens.colors.semantic.light.input,\n },\n borderRadius: {\n none: \"0px\",\n sm: `${tokens.radius.sm}px`,\n md: `${tokens.radius.md}px`,\n lg: `${tokens.radius.lg}px`,\n xl: `${tokens.radius.xl}px`,\n \"2xl\": `${tokens.radius[\"2xl\"]}px`,\n full: \"9999px\",\n },\n },\n },\n};\n\nexport default beyondUIPreset;\n","export const tokens = {\n colors: {\n primary: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\",\n 950: \"#172554\",\n DEFAULT: \"#2563eb\",\n },\n secondary: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\",\n 950: \"#020617\",\n DEFAULT: \"#475569\",\n },\n danger: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\",\n DEFAULT: \"#dc2626\",\n },\n // Alias for shadcn / React Native convention compatibility\n destructive: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\",\n 950: \"#450a0a\",\n DEFAULT: \"#dc2626\",\n },\n success: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\",\n 950: \"#052e16\",\n DEFAULT: \"#16a34a\",\n },\n warning: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\",\n 950: \"#451a03\",\n DEFAULT: \"#d97706\",\n },\n neutral: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\",\n 950: \"#030712\",\n },\n semantic: {\n light: {\n background: \"#ffffff\",\n foreground: \"#0f172a\",\n card: \"#ffffff\",\n cardForeground: \"#0f172a\",\n muted: \"#f8fafc\",\n mutedForeground: \"#64748b\",\n border: \"#e2e8f0\",\n input: \"#e2e8f0\",\n },\n dark: {\n background: \"#090d16\",\n foreground: \"#f8fafc\",\n card: \"#0f172a\",\n cardForeground: \"#f8fafc\",\n muted: \"#1e293b\",\n mutedForeground: \"#94a3b8\",\n border: \"#334155\",\n input: \"#334155\",\n },\n },\n },\n radius: {\n none: 0,\n sm: 6,\n md: 10,\n lg: 14,\n xl: 20,\n \"2xl\": 28,\n full: 9999,\n },\n spacing: {\n xs: 4,\n sm: 8,\n md: 12,\n lg: 16,\n xl: 24,\n \"2xl\": 32,\n \"3xl\": 48,\n },\n} as const;\n\nexport type BeyondUITokens = typeof tokens;\n"],"mappings":"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","names":[]}
package/dist/preset.mjs CHANGED
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  beyondUIPreset,
3
- preset_default
4
- } from "./chunk-2B6HTSGM.mjs";
3
+ preset_default,
4
+ tokens
5
+ } from "./chunk-RNHEGFYR.mjs";
5
6
  export {
6
7
  beyondUIPreset,
7
- preset_default as default
8
+ preset_default as default,
9
+ tokens
8
10
  };
9
11
  //# sourceMappingURL=preset.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beyondcorp/beyond-ui-native",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Accessible, NativeWind-first React Native component library for Beyond Softwares",
5
5
  "author": "Beyond Corp",
6
6
  "license": "MIT",
@@ -28,12 +28,15 @@
28
28
  ],
29
29
  "main": "./dist/index.js",
30
30
  "module": "./dist/index.mjs",
31
+ "react-native": "./src/index.ts",
31
32
  "types": "./dist/index.d.ts",
32
33
  "exports": {
33
34
  ".": {
34
35
  "types": "./dist/index.d.ts",
35
- "import": "./dist/index.mjs",
36
- "require": "./dist/index.js"
36
+ "react-native": "./src/index.ts",
37
+ "import": "./src/index.ts",
38
+ "require": "./dist/index.js",
39
+ "default": "./src/index.ts"
37
40
  },
38
41
  "./preset": {
39
42
  "types": "./dist/preset.d.ts",
@@ -42,12 +45,15 @@
42
45
  },
43
46
  "./utilities": {
44
47
  "types": "./dist/utilities.d.ts",
45
- "import": "./dist/utilities.mjs",
46
- "require": "./dist/utilities.js"
48
+ "react-native": "./src/utilities/index.ts",
49
+ "import": "./src/utilities/index.ts",
50
+ "require": "./dist/utilities.js",
51
+ "default": "./src/utilities/index.ts"
47
52
  }
48
53
  },
49
54
  "files": [
50
55
  "dist",
56
+ "src",
51
57
  "README.md",
52
58
  "LICENSE"
53
59
  ],
@@ -0,0 +1,245 @@
1
+ import * as React from "react";
2
+ import {
3
+ View,
4
+ Pressable,
5
+ Animated,
6
+ type ViewProps,
7
+ type PressableProps,
8
+ } from "react-native";
9
+ import { cn } from "../../utilities/cn";
10
+ import { Text } from "../text/text";
11
+
12
+ type AccordionType = "single" | "multiple";
13
+
14
+ interface AccordionContextValue {
15
+ type: AccordionType;
16
+ value: string[];
17
+ toggleItem: (itemValue: string) => void;
18
+ collapsible: boolean;
19
+ }
20
+
21
+ const AccordionContext = React.createContext<AccordionContextValue | null>(null);
22
+
23
+ function useAccordionContext() {
24
+ const context = React.useContext(AccordionContext);
25
+ if (!context) {
26
+ throw new Error("Accordion components must be used within an Accordion");
27
+ }
28
+ return context;
29
+ }
30
+
31
+ export interface AccordionProps extends ViewProps {
32
+ type?: AccordionType;
33
+ value?: string | string[];
34
+ defaultValue?: string | string[];
35
+ onValueChange?: (value: string | string[]) => void;
36
+ collapsible?: boolean;
37
+ className?: string;
38
+ children: React.ReactNode;
39
+ }
40
+
41
+ export const Accordion = React.forwardRef<View, AccordionProps>(
42
+ (
43
+ {
44
+ type = "single",
45
+ value: controlledValue,
46
+ defaultValue,
47
+ onValueChange,
48
+ collapsible = true,
49
+ className,
50
+ children,
51
+ ...props
52
+ },
53
+ ref
54
+ ) => {
55
+ const toArray = (v?: string | string[]): string[] => {
56
+ if (!v) return [];
57
+ return Array.isArray(v) ? v : [v];
58
+ };
59
+
60
+ const [uncontrolledValue, setUncontrolledValue] = React.useState<string[]>(
61
+ toArray(defaultValue)
62
+ );
63
+
64
+ const isControlled = controlledValue !== undefined;
65
+ const currentValues = isControlled ? toArray(controlledValue) : uncontrolledValue;
66
+
67
+ const toggleItem = React.useCallback(
68
+ (itemValue: string) => {
69
+ let nextValues: string[];
70
+ const isCurrentOpen = currentValues.includes(itemValue);
71
+
72
+ if (type === "single") {
73
+ if (isCurrentOpen) {
74
+ nextValues = collapsible ? [] : [itemValue];
75
+ } else {
76
+ nextValues = [itemValue];
77
+ }
78
+ } else {
79
+ if (isCurrentOpen) {
80
+ nextValues = currentValues.filter((v) => v !== itemValue);
81
+ } else {
82
+ nextValues = [...currentValues, itemValue];
83
+ }
84
+ }
85
+
86
+ if (!isControlled) {
87
+ setUncontrolledValue(nextValues);
88
+ }
89
+
90
+ if (onValueChange) {
91
+ onValueChange(type === "single" ? nextValues[0] ?? "" : nextValues);
92
+ }
93
+ },
94
+ [currentValues, type, collapsible, isControlled, onValueChange]
95
+ );
96
+
97
+ return (
98
+ <AccordionContext.Provider
99
+ value={{
100
+ type,
101
+ value: currentValues,
102
+ toggleItem,
103
+ collapsible,
104
+ }}
105
+ >
106
+ <View
107
+ ref={ref}
108
+ className={cn("w-full divide-y divide-border", className)}
109
+ {...props}
110
+ >
111
+ {children}
112
+ </View>
113
+ </AccordionContext.Provider>
114
+ );
115
+ }
116
+ );
117
+ Accordion.displayName = "Accordion";
118
+
119
+ // --- Accordion Item ---
120
+
121
+ interface AccordionItemContextValue {
122
+ value: string;
123
+ isOpen: boolean;
124
+ }
125
+
126
+ const AccordionItemContext = React.createContext<AccordionItemContextValue | null>(null);
127
+
128
+ function useAccordionItemContext() {
129
+ const context = React.useContext(AccordionItemContext);
130
+ if (!context) {
131
+ throw new Error("AccordionItem subcomponents must be used within an AccordionItem");
132
+ }
133
+ return context;
134
+ }
135
+
136
+ export interface AccordionItemProps extends ViewProps {
137
+ value: string;
138
+ className?: string;
139
+ children: React.ReactNode;
140
+ }
141
+
142
+ export const AccordionItem = React.forwardRef<View, AccordionItemProps>(
143
+ ({ value, className, children, ...props }, ref) => {
144
+ const { value: selectedValues } = useAccordionContext();
145
+ const isOpen = selectedValues.includes(value);
146
+
147
+ return (
148
+ <AccordionItemContext.Provider value={{ value, isOpen }}>
149
+ <View
150
+ ref={ref}
151
+ className={cn("border-b border-border py-1", className)}
152
+ {...props}
153
+ >
154
+ {children}
155
+ </View>
156
+ </AccordionItemContext.Provider>
157
+ );
158
+ }
159
+ );
160
+ AccordionItem.displayName = "AccordionItem";
161
+
162
+ // --- Accordion Trigger ---
163
+
164
+ export interface AccordionTriggerProps extends PressableProps {
165
+ className?: string;
166
+ children: React.ReactNode;
167
+ }
168
+
169
+ export const AccordionTrigger = React.forwardRef<View, AccordionTriggerProps>(
170
+ ({ className, children, ...props }, ref) => {
171
+ const { toggleItem } = useAccordionContext();
172
+ const { value, isOpen } = useAccordionItemContext();
173
+
174
+ const rotationAnim = React.useRef(new Animated.Value(isOpen ? 1 : 0)).current;
175
+
176
+ React.useEffect(() => {
177
+ Animated.timing(rotationAnim, {
178
+ toValue: isOpen ? 1 : 0,
179
+ duration: 200,
180
+ useNativeDriver: true,
181
+ }).start();
182
+ }, [isOpen, rotationAnim]);
183
+
184
+ const rotate = rotationAnim.interpolate({
185
+ inputRange: [0, 1],
186
+ outputRange: ["0deg", "180deg"],
187
+ });
188
+
189
+ return (
190
+ <Pressable
191
+ ref={ref}
192
+ onPress={() => toggleItem(value)}
193
+ accessibilityRole="button"
194
+ accessibilityState={{ expanded: isOpen }}
195
+ className={cn(
196
+ "flex-row items-center justify-between py-3 px-1 active:opacity-70",
197
+ className
198
+ )}
199
+ {...props}
200
+ >
201
+ <View className="flex-1 pr-2">
202
+ {typeof children === "string" ? (
203
+ <Text className="text-base font-medium text-foreground">{children}</Text>
204
+ ) : (
205
+ children
206
+ )}
207
+ </View>
208
+ <Animated.View style={{ transform: [{ rotate }] }}>
209
+ <Text className="text-muted text-base font-semibold">▼</Text>
210
+ </Animated.View>
211
+ </Pressable>
212
+ );
213
+ }
214
+ );
215
+ AccordionTrigger.displayName = "AccordionTrigger";
216
+
217
+ // --- Accordion Content ---
218
+
219
+ export interface AccordionContentProps extends ViewProps {
220
+ className?: string;
221
+ children: React.ReactNode;
222
+ }
223
+
224
+ export const AccordionContent = React.forwardRef<View, AccordionContentProps>(
225
+ ({ className, children, ...props }, ref) => {
226
+ const { isOpen } = useAccordionItemContext();
227
+
228
+ if (!isOpen) return null;
229
+
230
+ return (
231
+ <View
232
+ ref={ref}
233
+ className={cn("pt-1 pb-3 px-1 text-sm text-muted", className)}
234
+ {...props}
235
+ >
236
+ {typeof children === "string" ? (
237
+ <Text className="text-sm text-muted leading-relaxed">{children}</Text>
238
+ ) : (
239
+ children
240
+ )}
241
+ </View>
242
+ );
243
+ }
244
+ );
245
+ AccordionContent.displayName = "AccordionContent";
@@ -0,0 +1 @@
1
+ export * from "./accordion";
@@ -0,0 +1,118 @@
1
+ import * as React from "react";
2
+ import { View, Text, type ViewProps, type TextProps } from "react-native";
3
+ import { cva, type VariantProps } from "class-variance-authority";
4
+ import { cn } from "../../utilities/cn";
5
+
6
+ export const alertVariants = cva(
7
+ "w-full rounded-2xl border p-4 flex-col gap-1",
8
+ {
9
+ variants: {
10
+ variant: {
11
+ info: "bg-primary-50 border-primary-200 dark:bg-primary-950/40 dark:border-primary-800",
12
+ success: "bg-success-50 border-success-200 dark:bg-success-950/40 dark:border-success-800",
13
+ warning: "bg-warning-50 border-warning-200 dark:bg-warning-950/40 dark:border-warning-800",
14
+ danger: "bg-danger-50 border-danger-200 dark:bg-danger-950/40 dark:border-danger-800",
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ variant: "info",
19
+ },
20
+ }
21
+ );
22
+
23
+ export const alertTitleVariants = cva("text-base font-bold tracking-tight", {
24
+ variants: {
25
+ variant: {
26
+ info: "text-primary-800 dark:text-primary-300",
27
+ success: "text-success-800 dark:text-success-300",
28
+ warning: "text-warning-800 dark:text-warning-300",
29
+ danger: "text-danger-800 dark:text-danger-300",
30
+ },
31
+ },
32
+ defaultVariants: {
33
+ variant: "info",
34
+ },
35
+ });
36
+
37
+ export const alertDescriptionVariants = cva("text-sm", {
38
+ variants: {
39
+ variant: {
40
+ info: "text-primary-700 dark:text-primary-400",
41
+ success: "text-success-700 dark:text-success-400",
42
+ warning: "text-warning-700 dark:text-warning-400",
43
+ danger: "text-danger-700 dark:text-danger-400",
44
+ },
45
+ },
46
+ defaultVariants: {
47
+ variant: "info",
48
+ },
49
+ });
50
+
51
+ type AlertVariantProps = VariantProps<typeof alertVariants>;
52
+
53
+ interface AlertContextValue {
54
+ variant: AlertVariantProps["variant"];
55
+ }
56
+
57
+ const AlertContext = React.createContext<AlertContextValue>({ variant: "info" });
58
+
59
+ export interface AlertProps extends ViewProps, AlertVariantProps {
60
+ className?: string;
61
+ }
62
+
63
+ export function Alert({
64
+ variant = "info",
65
+ className,
66
+ children,
67
+ ...props
68
+ }: AlertProps) {
69
+ return (
70
+ <AlertContext.Provider value={{ variant }}>
71
+ <View
72
+ accessibilityRole="alert"
73
+ className={cn(alertVariants({ variant }), className)}
74
+ {...props}
75
+ >
76
+ {children}
77
+ </View>
78
+ </AlertContext.Provider>
79
+ );
80
+ }
81
+
82
+ Alert.displayName = "Alert";
83
+
84
+ export function AlertTitle({
85
+ className,
86
+ children,
87
+ ...props
88
+ }: TextProps & { className?: string }) {
89
+ const { variant } = React.useContext(AlertContext);
90
+ return (
91
+ <Text
92
+ className={cn(alertTitleVariants({ variant }), className)}
93
+ {...props}
94
+ >
95
+ {children}
96
+ </Text>
97
+ );
98
+ }
99
+
100
+ AlertTitle.displayName = "Alert.Title";
101
+
102
+ export function AlertDescription({
103
+ className,
104
+ children,
105
+ ...props
106
+ }: TextProps & { className?: string }) {
107
+ const { variant } = React.useContext(AlertContext);
108
+ return (
109
+ <Text
110
+ className={cn(alertDescriptionVariants({ variant }), className)}
111
+ {...props}
112
+ >
113
+ {children}
114
+ </Text>
115
+ );
116
+ }
117
+
118
+ AlertDescription.displayName = "Alert.Description";
@@ -0,0 +1 @@
1
+ export * from "./alert";