@qumra/fanar-native 0.1.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.
- package/README.md +83 -0
- package/lib/art.d.ts +8 -0
- package/lib/art.js +29 -0
- package/lib/assets/art/avatar.png +0 -0
- package/lib/assets/art/empty.png +0 -0
- package/lib/assets/art/image-placeholder.png +0 -0
- package/lib/assets/art/plan-update.png +0 -0
- package/lib/assets/brand/app-store.png +0 -0
- package/lib/assets/brand/etisalat.png +0 -0
- package/lib/assets/brand/facebook.png +0 -0
- package/lib/assets/brand/google-play.png +0 -0
- package/lib/assets/brand/instagram.png +0 -0
- package/lib/assets/brand/orange.png +0 -0
- package/lib/assets/brand/snapchat.png +0 -0
- package/lib/assets/brand/tiktok.png +0 -0
- package/lib/assets/brand/vodafone.png +0 -0
- package/lib/assets/brand/we.png +0 -0
- package/lib/assets/brand/whatsapp.png +0 -0
- package/lib/assets/brand/x.png +0 -0
- package/lib/assets/brand/youtube.png +0 -0
- package/lib/components/Button.d.ts +28 -0
- package/lib/components/Button.js +75 -0
- package/lib/components/Disclosure.d.ts +41 -0
- package/lib/components/Disclosure.js +98 -0
- package/lib/components/Display.d.ts +88 -0
- package/lib/components/Display.js +157 -0
- package/lib/components/Drawer.d.ts +27 -0
- package/lib/components/Drawer.js +58 -0
- package/lib/components/Feedback.d.ts +43 -0
- package/lib/components/Feedback.js +136 -0
- package/lib/components/Form.d.ts +92 -0
- package/lib/components/Form.js +196 -0
- package/lib/components/Money.d.ts +29 -0
- package/lib/components/Money.js +65 -0
- package/lib/components/Nav.d.ts +29 -0
- package/lib/components/Nav.js +65 -0
- package/lib/components/NumberStepper.d.ts +16 -0
- package/lib/components/NumberStepper.js +79 -0
- package/lib/components/Overlay.d.ts +54 -0
- package/lib/components/Overlay.js +147 -0
- package/lib/components/Rating.d.ts +18 -0
- package/lib/components/Rating.js +32 -0
- package/lib/components/Shell.d.ts +54 -0
- package/lib/components/Shell.js +99 -0
- package/lib/components/Surfaces.d.ts +64 -0
- package/lib/components/Surfaces.js +122 -0
- package/lib/components/Text.d.ts +14 -0
- package/lib/components/Text.js +31 -0
- package/lib/components/currency.d.ts +251 -0
- package/lib/components/currency.js +48 -0
- package/lib/glyphs.d.ts +2 -0
- package/lib/glyphs.js +7 -0
- package/lib/i18n/content.d.ts +1 -0
- package/lib/i18n/content.js +28 -0
- package/lib/i18n/en.d.ts +1 -0
- package/lib/i18n/en.js +124 -0
- package/lib/i18n/index.d.ts +64 -0
- package/lib/i18n/index.js +91 -0
- package/lib/i18n/screens.d.ts +1 -0
- package/lib/i18n/screens.js +2025 -0
- package/lib/icons.d.ts +18 -0
- package/lib/icons.js +400 -0
- package/lib/index.d.ts +25 -0
- package/lib/index.js +25 -0
- package/lib/lib/a11y.d.ts +4 -0
- package/lib/lib/a11y.js +8 -0
- package/lib/lib/digits.d.ts +3 -0
- package/lib/lib/digits.js +22 -0
- package/lib/lib/motion.d.ts +14 -0
- package/lib/lib/motion.js +47 -0
- package/lib/lib/tone.d.ts +9 -0
- package/lib/lib/tone.js +16 -0
- package/lib/qumra/NavIcon.d.ts +14 -0
- package/lib/qumra/NavIcon.js +17 -0
- package/lib/qumra/QumraIcon.d.ts +17 -0
- package/lib/qumra/QumraIcon.js +91 -0
- package/lib/qumra/data.generated.d.ts +3 -0
- package/lib/qumra/data.generated.js +146 -0
- package/lib/qumra/types.d.ts +5 -0
- package/lib/qumra/types.js +1 -0
- package/lib/theme/context.d.ts +31 -0
- package/lib/theme/context.js +46 -0
- package/lib/theme/fonts.d.ts +9 -0
- package/lib/theme/fonts.js +36 -0
- package/lib/theme/index.d.ts +4 -0
- package/lib/theme/index.js +4 -0
- package/lib/theme/shadows.d.ts +2 -0
- package/lib/theme/shadows.js +30 -0
- package/lib/theme/theme.d.ts +52 -0
- package/lib/theme/theme.js +78 -0
- package/lib/tokens/generated.d.ts +180 -0
- package/lib/tokens/generated.js +173 -0
- package/lib/tokens/index.d.ts +1 -0
- package/lib/tokens/index.js +1 -0
- package/package.json +59 -0
package/lib/icons.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
import { AlertTriangle, ArrowLeft, ArrowRight, BarChart3, Bell, Bot, Check, CheckCheck, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Copy, ExternalLink, Globe, Home, Info, Lock, Menu, Minus, Plus, Search, Share2, Sparkles, Star, Undo2, X, type LucideIcon } from 'lucide-react-native';
|
|
4
|
+
export type { LucideIcon };
|
|
5
|
+
export declare function qumraIconFor(name: string): string | undefined;
|
|
6
|
+
export declare function icon(name: string): LucideIcon;
|
|
7
|
+
export declare function hasIcon(name: string): boolean;
|
|
8
|
+
export type IconProps = {
|
|
9
|
+
name: string;
|
|
10
|
+
size?: number;
|
|
11
|
+
color?: string;
|
|
12
|
+
strokeWidth?: number;
|
|
13
|
+
style?: StyleProp<ViewStyle>;
|
|
14
|
+
flip?: boolean;
|
|
15
|
+
onPress?: () => void;
|
|
16
|
+
};
|
|
17
|
+
export declare function Icon({ name, size, color, strokeWidth, style, flip, onPress }: IconProps): React.FunctionComponentElement<import("lucide-react-native").LucideProps>;
|
|
18
|
+
export { AlertTriangle, ArrowLeft, ArrowRight, BarChart3, Bell, Bot, Check, CheckCheck, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Copy, ExternalLink, Globe, Home, Info, Lock, Menu, Minus, Plus, Search, Share2, Sparkles, Star, Undo2, X, };
|
package/lib/icons.js
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { View } from 'react-native';
|
|
3
|
+
import { useFanar } from './theme/context';
|
|
4
|
+
import { Activity, AlertCircle, AlertTriangle, AlignJustify, Archive, ArrowDown, ArrowLeft, ArrowLeftCircle, ArrowLeftRight, ArrowRight, ArrowUp, ArrowUpDown, Ban, Banknote, BarChart3, Barcode, Bell, BellOff, BookOpen, Bookmark, Bot, Brush, Building2, Calculator, Calendar, CalendarDays, Camera, CameraOff, Car, Check, CheckCheck, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Circle, CircleCheck, CircleDot, CircleEllipsis, CircleUserRound, CircleX, Clapperboard, Clock, Clipboard, Hand, Hourglass, Network, Scissors, Ticket, CloudDownload, CloudOff, CloudUpload, Code, Copy, CornerDownLeft, CreditCard, Crown, Download, ExternalLink, Eye, EyeOff, File, FileText, Files, Filter, Fingerprint, Flag, Folder, FolderPlus, Gauge, Gem, Gift, GitBranch, GitMerge, Globe, Grid3x3, GripVertical, Handshake, Headphones, Heart, HelpCircle, Home, Image as ImageIcon, Images, Info, Key, Languages, Layers, LayoutGrid, Library, LifeBuoy, Lightbulb, LineChart, Link as LinkIcon, List, Lock, LogIn, LogOut, Mail, MailOpen, MailPlus, Map, MapPin, Maximize2, Megaphone, Menu, MessageCircle, MessageCircleMore, MessagesSquare, Minimize2, Minus, Monitor, Moon, MoreHorizontal, MoreVertical, Navigation, Newspaper, Package, PackageOpen, PackagePlus, Palette, PauseCircle, PenLine, Percent, Phone, PhoneCall, PieChart, Pin, Play, PlayCircle, Plus, PlusCircle, Printer, Radio, Receipt, Redo2, RefreshCw, Rocket, RotateCw, Save, Scaling, ScanLine, Search, Send, Server, Settings, Shapes, Share2, ShieldCheck, ShieldHalf, ShoppingBag, ShoppingCart, SkipForward, SlidersHorizontal, Smartphone, Sparkles, Square, SquareCheck, SquareCheckBig, Star, Store, Sun, Tag, Tags, Telescope, Terminal, TimerOff, Trash2, TrendingDown, TrendingUp, Truck, Type, Undo2, UserPlus, UserRound, Users, Wallet, Wand2, Warehouse, Wrench, X, Zap, } from 'lucide-react-native';
|
|
5
|
+
import { WhatsappIcon } from './glyphs';
|
|
6
|
+
import { QumraIcon } from './qumra/QumraIcon';
|
|
7
|
+
const MAP = {
|
|
8
|
+
home: Home,
|
|
9
|
+
'shopping-bag': ShoppingBag,
|
|
10
|
+
package: Package,
|
|
11
|
+
sparkles: Sparkles,
|
|
12
|
+
crown: Crown,
|
|
13
|
+
warehouse: Warehouse,
|
|
14
|
+
'package-plus': PackagePlus,
|
|
15
|
+
store: Store,
|
|
16
|
+
'bar-chart-3': BarChart3,
|
|
17
|
+
'trending-up': TrendingUp,
|
|
18
|
+
wallet: Wallet,
|
|
19
|
+
'layout-grid': LayoutGrid,
|
|
20
|
+
settings: Settings,
|
|
21
|
+
'alert-triangle': AlertTriangle,
|
|
22
|
+
star: Star,
|
|
23
|
+
palette: Palette,
|
|
24
|
+
truck: Truck,
|
|
25
|
+
rocket: Rocket,
|
|
26
|
+
'credit-card': CreditCard,
|
|
27
|
+
image: ImageIcon,
|
|
28
|
+
megaphone: Megaphone,
|
|
29
|
+
'shield-check': ShieldCheck,
|
|
30
|
+
'message-circle': MessageCircle,
|
|
31
|
+
'book-open': BookOpen,
|
|
32
|
+
'play-circle': PlayCircle,
|
|
33
|
+
'arrow-left': ArrowLeft,
|
|
34
|
+
'arrow-right': ArrowRight,
|
|
35
|
+
bot: Bot,
|
|
36
|
+
'user-round': UserRound,
|
|
37
|
+
users: Users,
|
|
38
|
+
handshake: Handshake,
|
|
39
|
+
'pen-line': PenLine,
|
|
40
|
+
clapperboard: Clapperboard,
|
|
41
|
+
'life-buoy': LifeBuoy,
|
|
42
|
+
'help-circle': HelpCircle,
|
|
43
|
+
lightbulb: Lightbulb,
|
|
44
|
+
'log-out': LogOut,
|
|
45
|
+
bookmark: Bookmark,
|
|
46
|
+
globe: Globe,
|
|
47
|
+
'messages-square': MessagesSquare,
|
|
48
|
+
bell: Bell,
|
|
49
|
+
check: Check,
|
|
50
|
+
'check-check': CheckCheck,
|
|
51
|
+
'chevron-down': ChevronDown,
|
|
52
|
+
'chevron-left': ChevronLeft,
|
|
53
|
+
'chevron-right': ChevronRight,
|
|
54
|
+
'chevron-up': ChevronUp,
|
|
55
|
+
copy: Copy,
|
|
56
|
+
'external-link': ExternalLink,
|
|
57
|
+
info: Info,
|
|
58
|
+
link: LinkIcon,
|
|
59
|
+
lock: Lock,
|
|
60
|
+
menu: Menu,
|
|
61
|
+
minus: Minus,
|
|
62
|
+
plus: Plus,
|
|
63
|
+
'plus-circle': PlusCircle,
|
|
64
|
+
search: Search,
|
|
65
|
+
'share-2': Share2,
|
|
66
|
+
undo: Undo2,
|
|
67
|
+
x: X,
|
|
68
|
+
};
|
|
69
|
+
const ALIAS = {
|
|
70
|
+
add: Plus,
|
|
71
|
+
'add-circle-outline': PlusCircle,
|
|
72
|
+
'add-outline': Plus,
|
|
73
|
+
'albums-outline': Library,
|
|
74
|
+
'alert-circle': AlertCircle,
|
|
75
|
+
'alert-circle-outline': AlertCircle,
|
|
76
|
+
'analytics-outline': LineChart,
|
|
77
|
+
'angle-down': ChevronDown,
|
|
78
|
+
'angle-up': ChevronUp,
|
|
79
|
+
'apps-outline': LayoutGrid,
|
|
80
|
+
'archive-outline': Archive,
|
|
81
|
+
'arrow-back': ArrowLeft,
|
|
82
|
+
'arrow-back-circle-outline': ArrowLeftCircle,
|
|
83
|
+
'arrow-back-outline': ArrowLeft,
|
|
84
|
+
'arrow-down': ArrowDown,
|
|
85
|
+
'arrow-down-outline': ArrowDown,
|
|
86
|
+
'arrow-forward': ArrowRight,
|
|
87
|
+
'arrow-forward-outline': ArrowRight,
|
|
88
|
+
'eye-off': EyeOff,
|
|
89
|
+
'map-marker-outline': MapPin,
|
|
90
|
+
'widgets-outline': LayoutGrid,
|
|
91
|
+
'arrow-redo-outline': Redo2,
|
|
92
|
+
'arrow-undo-outline': Undo2,
|
|
93
|
+
'arrow-up': ArrowUp,
|
|
94
|
+
'arrow-up-outline': ArrowUp,
|
|
95
|
+
'bag-handle': ShoppingBag,
|
|
96
|
+
'bag-handle-outline': ShoppingBag,
|
|
97
|
+
'bag-outline': ShoppingBag,
|
|
98
|
+
ban: Ban,
|
|
99
|
+
'bar-chart-outline': BarChart3,
|
|
100
|
+
'barcode-outline': Barcode,
|
|
101
|
+
'book-outline': BookOpen,
|
|
102
|
+
'bookmark-outline': Bookmark,
|
|
103
|
+
'brush-outline': Brush,
|
|
104
|
+
'bulb-outline': Lightbulb,
|
|
105
|
+
business: Building2,
|
|
106
|
+
'business-outline': Building2,
|
|
107
|
+
'calculator-outline': Calculator,
|
|
108
|
+
calendar: Calendar,
|
|
109
|
+
'calendar-clear-outline': Calendar,
|
|
110
|
+
'calendar-number-outline': CalendarDays,
|
|
111
|
+
'calendar-outline': Calendar,
|
|
112
|
+
call: Phone,
|
|
113
|
+
'call-outline': Phone,
|
|
114
|
+
camera: Camera,
|
|
115
|
+
'camera-off-outline': CameraOff,
|
|
116
|
+
'camera-outline': Camera,
|
|
117
|
+
'car-outline': Car,
|
|
118
|
+
'card-outline': CreditCard,
|
|
119
|
+
cart: ShoppingCart,
|
|
120
|
+
'cart-outline': ShoppingCart,
|
|
121
|
+
'cash-outline': Banknote,
|
|
122
|
+
'chatbubble-ellipses-outline': MessageCircleMore,
|
|
123
|
+
'chatbubble-outline': MessageCircle,
|
|
124
|
+
'chatbubbles-outline': MessagesSquare,
|
|
125
|
+
checkbox: SquareCheckBig,
|
|
126
|
+
'checkbox-outline': SquareCheck,
|
|
127
|
+
checkmark: Check,
|
|
128
|
+
'checkmark-circle': CheckCircle2,
|
|
129
|
+
'checkmark-circle-outline': CircleCheck,
|
|
130
|
+
'checkmark-done-outline': CheckCheck,
|
|
131
|
+
'checkmark-outline': Check,
|
|
132
|
+
'chevron-back': ChevronLeft,
|
|
133
|
+
'chevron-down': ChevronDown,
|
|
134
|
+
'chevron-down-outline': ChevronDown,
|
|
135
|
+
'chevron-forward': ChevronRight,
|
|
136
|
+
'chevron-small-down': ChevronDown,
|
|
137
|
+
'chevron-up': ChevronUp,
|
|
138
|
+
close: X,
|
|
139
|
+
'close-circle': CircleX,
|
|
140
|
+
'close-circle-outline': CircleX,
|
|
141
|
+
'close-outline': X,
|
|
142
|
+
'cloud-download': CloudDownload,
|
|
143
|
+
'cloud-download-outline': CloudDownload,
|
|
144
|
+
'cloud-offline-outline': CloudOff,
|
|
145
|
+
'cloud-upload-outline': CloudUpload,
|
|
146
|
+
'code-slash': Code,
|
|
147
|
+
'code-slash-outline': Code,
|
|
148
|
+
color: Palette,
|
|
149
|
+
'color-palette-outline': Palette,
|
|
150
|
+
'color-wand-outline': Wand2,
|
|
151
|
+
construct: Wrench,
|
|
152
|
+
'contract-outline': Minimize2,
|
|
153
|
+
'copy-outline': Copy,
|
|
154
|
+
'create-outline': PenLine,
|
|
155
|
+
cube: Package,
|
|
156
|
+
'cube-outline': Package,
|
|
157
|
+
desktop: Monitor,
|
|
158
|
+
'desktop-outline': Monitor,
|
|
159
|
+
diamond: Gem,
|
|
160
|
+
'diamond-outline': Gem,
|
|
161
|
+
'document-outline': File,
|
|
162
|
+
'document-text': FileText,
|
|
163
|
+
'document-text-outline': FileText,
|
|
164
|
+
'documents-outline': Files,
|
|
165
|
+
'download-outline': Download,
|
|
166
|
+
'drag-indicator': GripVertical,
|
|
167
|
+
ellipse: Circle,
|
|
168
|
+
'ellipse-outline': Circle,
|
|
169
|
+
'ellipsis-horizontal': MoreHorizontal,
|
|
170
|
+
'ellipsis-horizontal-circle-outline': CircleEllipsis,
|
|
171
|
+
'ellipsis-vertical': MoreVertical,
|
|
172
|
+
'expand-outline': Maximize2,
|
|
173
|
+
eye: Eye,
|
|
174
|
+
'eye-off-outline': EyeOff,
|
|
175
|
+
'eye-outline': Eye,
|
|
176
|
+
'finger-print-outline': Fingerprint,
|
|
177
|
+
'flag-outline': Flag,
|
|
178
|
+
flash: Zap,
|
|
179
|
+
'flash-outline': Zap,
|
|
180
|
+
'folder-outline': Folder,
|
|
181
|
+
'folder-plus': FolderPlus,
|
|
182
|
+
'funnel-outline': Filter,
|
|
183
|
+
'gift-outline': Gift,
|
|
184
|
+
'git-branch-outline': GitBranch,
|
|
185
|
+
'git-merge-outline': GitMerge,
|
|
186
|
+
'globe-outline': Globe,
|
|
187
|
+
'grid-outline': LayoutGrid,
|
|
188
|
+
'headset-outline': Headphones,
|
|
189
|
+
'heart-outline': Heart,
|
|
190
|
+
'help-circle-outline': HelpCircle,
|
|
191
|
+
'home-outline': Home,
|
|
192
|
+
image: ImageIcon,
|
|
193
|
+
'image-outline': ImageIcon,
|
|
194
|
+
'images-outline': Images,
|
|
195
|
+
'information-circle': Info,
|
|
196
|
+
'information-circle-outline': Info,
|
|
197
|
+
'key-outline': Key,
|
|
198
|
+
'keyboard-arrow-left': ChevronLeft,
|
|
199
|
+
'keyboard-arrow-right': ChevronRight,
|
|
200
|
+
'keypad-outline': Grid3x3,
|
|
201
|
+
'language-outline': Languages,
|
|
202
|
+
'layers-outline': Layers,
|
|
203
|
+
'layout-grid': LayoutGrid,
|
|
204
|
+
left: ChevronLeft,
|
|
205
|
+
'library-outline': Library,
|
|
206
|
+
'link-outline': LinkIcon,
|
|
207
|
+
list: List,
|
|
208
|
+
'list-outline': List,
|
|
209
|
+
location: MapPin,
|
|
210
|
+
'location-outline': MapPin,
|
|
211
|
+
'clipboard-outline': Clipboard,
|
|
212
|
+
'construct-outline': Wrench,
|
|
213
|
+
'cut-outline': Scissors,
|
|
214
|
+
'git-network-outline': Network,
|
|
215
|
+
'hand-left-outline': Hand,
|
|
216
|
+
'hourglass-outline': Hourglass,
|
|
217
|
+
'moon-outline': Moon,
|
|
218
|
+
'save': Save,
|
|
219
|
+
'sunny-outline': Sun,
|
|
220
|
+
'ticket-outline': Ticket,
|
|
221
|
+
printer: Printer,
|
|
222
|
+
'lock-closed': Lock,
|
|
223
|
+
'logo-whatsapp': WhatsappIcon,
|
|
224
|
+
'lock-closed-outline': Lock,
|
|
225
|
+
login: LogIn,
|
|
226
|
+
mail: Mail,
|
|
227
|
+
'mail-open-outline': MailOpen,
|
|
228
|
+
'mail-outline': Mail,
|
|
229
|
+
'mail-unread-outline': MailPlus,
|
|
230
|
+
manual: BookOpen,
|
|
231
|
+
'map-outline': Map,
|
|
232
|
+
megaphone: Megaphone,
|
|
233
|
+
'megaphone-outline': Megaphone,
|
|
234
|
+
menu: Menu,
|
|
235
|
+
'menu-outline': Menu,
|
|
236
|
+
moon: Moon,
|
|
237
|
+
'navigate-outline': Navigation,
|
|
238
|
+
'newspaper-outline': Newspaper,
|
|
239
|
+
'notifications-off-outline': BellOff,
|
|
240
|
+
'notifications-outline': Bell,
|
|
241
|
+
'open-outline': ExternalLink,
|
|
242
|
+
'options-outline': SlidersHorizontal,
|
|
243
|
+
'package-open': PackageOpen,
|
|
244
|
+
'pause-circle-outline': PauseCircle,
|
|
245
|
+
percent: Percent,
|
|
246
|
+
people: Users,
|
|
247
|
+
'people-outline': Users,
|
|
248
|
+
person: UserRound,
|
|
249
|
+
'person-add-outline': UserPlus,
|
|
250
|
+
'person-circle-outline': CircleUserRound,
|
|
251
|
+
'person-outline': UserRound,
|
|
252
|
+
phone: Phone,
|
|
253
|
+
'phone-call': PhoneCall,
|
|
254
|
+
'phone-portrait-outline': Smartphone,
|
|
255
|
+
'pie-chart-outline': PieChart,
|
|
256
|
+
pin: Pin,
|
|
257
|
+
'pin-outline': Pin,
|
|
258
|
+
play: Play,
|
|
259
|
+
'play-circle-outline': PlayCircle,
|
|
260
|
+
'play-skip-forward-outline': SkipForward,
|
|
261
|
+
pricetag: Tag,
|
|
262
|
+
'pricetag-outline': Tag,
|
|
263
|
+
'pricetags-outline': Tags,
|
|
264
|
+
'print-outline': Printer,
|
|
265
|
+
'pulse-outline': Activity,
|
|
266
|
+
'radio-button-off': Circle,
|
|
267
|
+
'radio-button-on': CircleDot,
|
|
268
|
+
'radio-button-on-outline': CircleDot,
|
|
269
|
+
'radio-outline': Radio,
|
|
270
|
+
'reader-outline': BookOpen,
|
|
271
|
+
receipt: Receipt,
|
|
272
|
+
'receipt-outline': Receipt,
|
|
273
|
+
'refresh-circle': RefreshCw,
|
|
274
|
+
'refresh-outline': RefreshCw,
|
|
275
|
+
reload: RotateCw,
|
|
276
|
+
remove: Minus,
|
|
277
|
+
'remove-outline': Minus,
|
|
278
|
+
'reorder-three': AlignJustify,
|
|
279
|
+
'reorder-three-outline': AlignJustify,
|
|
280
|
+
'resize-outline': Scaling,
|
|
281
|
+
'return-down-back-outline': CornerDownLeft,
|
|
282
|
+
rocket: Rocket,
|
|
283
|
+
'rocket-outline': Rocket,
|
|
284
|
+
'save-outline': Save,
|
|
285
|
+
'scan-outline': ScanLine,
|
|
286
|
+
scanner: ScanLine,
|
|
287
|
+
search: Search,
|
|
288
|
+
'search-outline': Search,
|
|
289
|
+
send: Send,
|
|
290
|
+
'send-outline': Send,
|
|
291
|
+
'server-outline': Server,
|
|
292
|
+
settings: Settings,
|
|
293
|
+
'settings-outline': Settings,
|
|
294
|
+
'shapes-outline': Shapes,
|
|
295
|
+
'share-social-outline': Share2,
|
|
296
|
+
'shield-checkmark': ShieldCheck,
|
|
297
|
+
'shield-checkmark-outline': ShieldCheck,
|
|
298
|
+
'shield-half-outline': ShieldHalf,
|
|
299
|
+
shoppingcart: ShoppingCart,
|
|
300
|
+
sparkles: Sparkles,
|
|
301
|
+
'sparkles-outline': Sparkles,
|
|
302
|
+
'speedometer-outline': Gauge,
|
|
303
|
+
'square-outline': Square,
|
|
304
|
+
star: Star,
|
|
305
|
+
'star-outline': Star,
|
|
306
|
+
'stats-chart-outline': BarChart3,
|
|
307
|
+
stop: Square,
|
|
308
|
+
store: Store,
|
|
309
|
+
storefront: Store,
|
|
310
|
+
'storefront-outline': Store,
|
|
311
|
+
sun: Sun,
|
|
312
|
+
'swap-horizontal': ArrowLeftRight,
|
|
313
|
+
'swap-horizontal-outline': ArrowLeftRight,
|
|
314
|
+
'swap-vertical': ArrowUpDown,
|
|
315
|
+
'swap-vertical-outline': ArrowUpDown,
|
|
316
|
+
'sync-outline': RefreshCw,
|
|
317
|
+
'telescope-outline': Telescope,
|
|
318
|
+
'terminal-outline': Terminal,
|
|
319
|
+
'text-outline': Type,
|
|
320
|
+
'time-outline': Clock,
|
|
321
|
+
timeout: TimerOff,
|
|
322
|
+
'today-outline': CalendarDays,
|
|
323
|
+
'trash-2': Trash2,
|
|
324
|
+
'trash-outline': Trash2,
|
|
325
|
+
'trending-down': TrendingDown,
|
|
326
|
+
'trending-down-outline': TrendingDown,
|
|
327
|
+
'trending-up': TrendingUp,
|
|
328
|
+
'trending-up-outline': TrendingUp,
|
|
329
|
+
truck: Truck,
|
|
330
|
+
user: UserRound,
|
|
331
|
+
'wallet-outline': Wallet,
|
|
332
|
+
warehouse: Warehouse,
|
|
333
|
+
warning: AlertTriangle,
|
|
334
|
+
'warning-outline': AlertTriangle,
|
|
335
|
+
};
|
|
336
|
+
const QUMRA_FOR = {
|
|
337
|
+
home: 'home',
|
|
338
|
+
store: 'store',
|
|
339
|
+
'shopping-bag': 'sales',
|
|
340
|
+
package: 'catalog',
|
|
341
|
+
products: 'catalog',
|
|
342
|
+
'bar-chart-3': 'analytics',
|
|
343
|
+
warehouse: 'inventory',
|
|
344
|
+
truck: 'shipping',
|
|
345
|
+
'layout-grid': 'apps',
|
|
346
|
+
image: 'content',
|
|
347
|
+
images: 'content',
|
|
348
|
+
settings: 'settings',
|
|
349
|
+
customer: 'customers',
|
|
350
|
+
users: 'customers',
|
|
351
|
+
'user-round': 'customers',
|
|
352
|
+
wallet: 'payments',
|
|
353
|
+
'credit-card': 'payment',
|
|
354
|
+
bell: 'notifications',
|
|
355
|
+
crown: 'premium',
|
|
356
|
+
bot: 'shihab',
|
|
357
|
+
'book-open': 'academy',
|
|
358
|
+
'life-buoy': 'support',
|
|
359
|
+
'message-circle': 'chat',
|
|
360
|
+
'messages-square': 'chat',
|
|
361
|
+
handshake: 'partners',
|
|
362
|
+
lightbulb: 'guide',
|
|
363
|
+
clapperboard: 'video',
|
|
364
|
+
'play-circle': 'video',
|
|
365
|
+
globe: 'website',
|
|
366
|
+
};
|
|
367
|
+
const wrapped = {};
|
|
368
|
+
function qumraAs(qumraName) {
|
|
369
|
+
const cached = wrapped[qumraName];
|
|
370
|
+
if (cached)
|
|
371
|
+
return cached;
|
|
372
|
+
const Wrapped = ({ size = 16, color, style, onPress, ...rest }) => React.createElement(View, { style, pointerEvents: onPress ? undefined : 'none' }, React.createElement(QumraIcon, { name: qumraName, size, color, onPress, ...rest }));
|
|
373
|
+
Wrapped.displayName = `Qumra(${qumraName})`;
|
|
374
|
+
wrapped[qumraName] = Wrapped;
|
|
375
|
+
return wrapped[qumraName];
|
|
376
|
+
}
|
|
377
|
+
export function qumraIconFor(name) {
|
|
378
|
+
return QUMRA_FOR[name];
|
|
379
|
+
}
|
|
380
|
+
export function icon(name) {
|
|
381
|
+
const brand = QUMRA_FOR[name];
|
|
382
|
+
if (brand)
|
|
383
|
+
return qumraAs(brand);
|
|
384
|
+
return MAP[name] ?? ALIAS[name] ?? Home;
|
|
385
|
+
}
|
|
386
|
+
export function hasIcon(name) {
|
|
387
|
+
return name in QUMRA_FOR || name in MAP || name in ALIAS;
|
|
388
|
+
}
|
|
389
|
+
export function Icon({ name, size = 16, color, strokeWidth, style, flip, onPress }) {
|
|
390
|
+
const Cmp = icon(name);
|
|
391
|
+
const { dir } = useFanar();
|
|
392
|
+
return React.createElement(Cmp, {
|
|
393
|
+
size,
|
|
394
|
+
color,
|
|
395
|
+
strokeWidth,
|
|
396
|
+
onPress,
|
|
397
|
+
style: flip && dir === 'rtl' ? [style, { transform: [{ scaleX: -1 }] }] : style,
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
export { AlertTriangle, ArrowLeft, ArrowRight, BarChart3, Bell, Bot, Check, CheckCheck, ChevronDown, ChevronLeft, ChevronRight, ChevronUp, Copy, ExternalLink, Globe, Home, Info, Lock, Menu, Minus, Plus, Search, Share2, Sparkles, Star, Undo2, X, };
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { TEXT_SCALE, RADIUS_SCALE, SHADOW_SCALE, CONTAINER_SCALE, ANIMATE_SCALE, COLOR_SCALE, TOKENS, DARK_TOKENS, TEXT_PX, RADIUS_PX, type TextSize, type Radius, type Shadow, type Container, type Animation, type ColorToken, type TokenName, } from './tokens';
|
|
2
|
+
export { FanarProvider, useFanar, useTheme, useLang, buildTheme, space, SPACE, LEADING, DURATION, ALEXANDRIA, SYSTEM_FONT, WEIGHT_VALUE, fontFor, rnShadow, type FanarTheme, type FanarContextValue, type FanarProviderProps, type ColorMode, type SpaceStep, type Leading, type FontSet, type Weight, } from './theme';
|
|
3
|
+
export { DICT, EN, CONTENT_EN, SCREENS_EN, PHRASES, phrase, translate, stepsLeft, heroBodyLeft, previewBlockedMsg, ofCount, type Lang, type Dir, type PhraseKey, } from './i18n';
|
|
4
|
+
export { TONE_SOFT, TONE_SOLID, type Tone, type ToneColors } from './lib/tone';
|
|
5
|
+
export { toLatinDigits, toArabicDigits, groupDigits } from './lib/digits';
|
|
6
|
+
export { usePressScale, useEnter, useSkeletonPulse, EASE_OUT, EASE_IN_OUT } from './lib/motion';
|
|
7
|
+
export { hitSlopFor, HIT_SLOP_SM, TOUCH_MIN } from './lib/a11y';
|
|
8
|
+
export { icon, hasIcon, Icon, qumraIconFor, type LucideIcon, type IconProps } from './icons';
|
|
9
|
+
export { QumraIcon, hasQumraIcon, QUMRA_ICONS, type QumraIconProps, type QumraIconName, type QumraIconSpec, } from './qumra/QumraIcon';
|
|
10
|
+
export { NavIcon, type NavIconProps } from './qumra/NavIcon';
|
|
11
|
+
export { art, hasArt, BRAND, ART, type BrandName, type ArtName } from './art';
|
|
12
|
+
export { Text, type TextProps } from './components/Text';
|
|
13
|
+
export { Button, IconButton, type ButtonProps, type ButtonVariant, type ButtonSize, type IconButtonProps, } from './components/Button';
|
|
14
|
+
export { Badge, Counter, Avatar, initials, Card, CardHeader, PageHeader, StatCard, Progress, ProgressSteps, Skeleton, Divider, type BadgeProps, type AvatarProps, type AvatarSize, type CardProps, type CardHeaderProps, type PageHeaderProps, type StatCardProps, type ProgressProps, type SkeletonProps, } from './components/Display';
|
|
15
|
+
export { Field, Input, SearchInput, Textarea, Checkbox, Radio, RadioGroup, Switch, Select, type FieldProps, type FieldSize, type InputProps, type SearchInputProps, type TextareaProps, type ChoiceProps, type RadioGroupProps, type SwitchProps, type SelectProps, type SelectOption, } from './components/Form';
|
|
16
|
+
export { Sheet, SheetRow, Modal, Alert, EmptyState, type SheetProps, type SheetRowProps, type ModalProps, type ModalSize, type AlertProps, type EmptyStateProps, } from './components/Overlay';
|
|
17
|
+
export { toast, useToasts, ToastHost, Tooltip, type ToastItem, type ToastInput, type ToastTone, } from './components/Feedback';
|
|
18
|
+
export { Tabs, FilterChips, type TabsProps, type TabItem, type FilterChip } from './components/Nav';
|
|
19
|
+
export { Accordion, Timeline, Stepper, type AccordionProps, type AccordionItem, type TimelineStep, type StepperStep, } from './components/Disclosure';
|
|
20
|
+
export { NumberStepper, type NumberStepperProps, type StepperSize } from './components/NumberStepper';
|
|
21
|
+
export { Stars, RatingInput, MAX as RATING_MAX, type StarsProps, type RatingInputProps } from './components/Rating';
|
|
22
|
+
export { Money, MoneyProvider, useCurrency, useCurrencySymbol, useMoneyLocale, CURRENCY, currencyName, isCurrency, type MoneyProps, type MoneySize, type Currency, type SymbolStyle, } from './components/Money';
|
|
23
|
+
export { DrawerMenu, type DrawerMenuProps, type DrawerSection, type DrawerItem, } from './components/Drawer';
|
|
24
|
+
export { Screen, AppHeader, BottomTabBar, type ScreenProps, type AppHeaderProps, type HeaderMark, type HeaderAction, type BottomTabBarProps, type TabBarItem, } from './components/Shell';
|
|
25
|
+
export { Hero, PromptCard, ListRow, StepRow, RuleGrid, Glow, type HeroProps, type PromptCardProps, type ListRowProps, type StepRowProps, } from './components/Surfaces';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { TEXT_SCALE, RADIUS_SCALE, SHADOW_SCALE, CONTAINER_SCALE, ANIMATE_SCALE, COLOR_SCALE, TOKENS, DARK_TOKENS, TEXT_PX, RADIUS_PX, } from './tokens';
|
|
2
|
+
export { FanarProvider, useFanar, useTheme, useLang, buildTheme, space, SPACE, LEADING, DURATION, ALEXANDRIA, SYSTEM_FONT, WEIGHT_VALUE, fontFor, rnShadow, } from './theme';
|
|
3
|
+
export { DICT, EN, CONTENT_EN, SCREENS_EN, PHRASES, phrase, translate, stepsLeft, heroBodyLeft, previewBlockedMsg, ofCount, } from './i18n';
|
|
4
|
+
export { TONE_SOFT, TONE_SOLID } from './lib/tone';
|
|
5
|
+
export { toLatinDigits, toArabicDigits, groupDigits } from './lib/digits';
|
|
6
|
+
export { usePressScale, useEnter, useSkeletonPulse, EASE_OUT, EASE_IN_OUT } from './lib/motion';
|
|
7
|
+
export { hitSlopFor, HIT_SLOP_SM, TOUCH_MIN } from './lib/a11y';
|
|
8
|
+
export { icon, hasIcon, Icon, qumraIconFor } from './icons';
|
|
9
|
+
export { QumraIcon, hasQumraIcon, QUMRA_ICONS, } from './qumra/QumraIcon';
|
|
10
|
+
export { NavIcon } from './qumra/NavIcon';
|
|
11
|
+
export { art, hasArt, BRAND, ART } from './art';
|
|
12
|
+
export { Text } from './components/Text';
|
|
13
|
+
export { Button, IconButton, } from './components/Button';
|
|
14
|
+
export { Badge, Counter, Avatar, initials, Card, CardHeader, PageHeader, StatCard, Progress, ProgressSteps, Skeleton, Divider, } from './components/Display';
|
|
15
|
+
export { Field, Input, SearchInput, Textarea, Checkbox, Radio, RadioGroup, Switch, Select, } from './components/Form';
|
|
16
|
+
export { Sheet, SheetRow, Modal, Alert, EmptyState, } from './components/Overlay';
|
|
17
|
+
export { toast, useToasts, ToastHost, Tooltip, } from './components/Feedback';
|
|
18
|
+
export { Tabs, FilterChips } from './components/Nav';
|
|
19
|
+
export { Accordion, Timeline, Stepper, } from './components/Disclosure';
|
|
20
|
+
export { NumberStepper } from './components/NumberStepper';
|
|
21
|
+
export { Stars, RatingInput, MAX as RATING_MAX } from './components/Rating';
|
|
22
|
+
export { Money, MoneyProvider, useCurrency, useCurrencySymbol, useMoneyLocale, CURRENCY, currencyName, isCurrency, } from './components/Money';
|
|
23
|
+
export { DrawerMenu, } from './components/Drawer';
|
|
24
|
+
export { Screen, AppHeader, BottomTabBar, } from './components/Shell';
|
|
25
|
+
export { Hero, PromptCard, ListRow, StepRow, RuleGrid, Glow, } from './components/Surfaces';
|
package/lib/lib/a11y.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const TOUCH_MIN = 44;
|
|
2
|
+
export function hitSlopFor(size) {
|
|
3
|
+
if (size >= TOUCH_MIN)
|
|
4
|
+
return undefined;
|
|
5
|
+
const pad = Math.ceil((TOUCH_MIN - size) / 2);
|
|
6
|
+
return { top: pad, bottom: pad, left: pad, right: pad };
|
|
7
|
+
}
|
|
8
|
+
export const HIT_SLOP_SM = { top: 10, bottom: 10, left: 10, right: 10 };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const ARABIC = '٠١٢٣٤٥٦٧٨٩';
|
|
2
|
+
export function toLatinDigits(s) {
|
|
3
|
+
return s.replace(/[٠-٩۰-۹٫٬]/g, (c) => {
|
|
4
|
+
if (c === '٫')
|
|
5
|
+
return '.';
|
|
6
|
+
if (c === '٬')
|
|
7
|
+
return ',';
|
|
8
|
+
const i = ARABIC.indexOf(c);
|
|
9
|
+
if (i >= 0)
|
|
10
|
+
return String(i);
|
|
11
|
+
return String(c.charCodeAt(0) - 0x06f0);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function toArabicDigits(s) {
|
|
15
|
+
return s.replace(/[0-9]/g, (d) => ARABIC[Number(d)]);
|
|
16
|
+
}
|
|
17
|
+
export function groupDigits(n, fractionDigits = 0) {
|
|
18
|
+
const fixed = Math.abs(n).toFixed(fractionDigits);
|
|
19
|
+
const [int = '0', frac] = fixed.split('.');
|
|
20
|
+
const grouped = int.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
21
|
+
return `${n < 0 ? '-' : ''}${grouped}${frac ? `.${frac}` : ''}`;
|
|
22
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Animated } from 'react-native';
|
|
2
|
+
export declare const EASE_OUT: import("react-native").EasingFunction;
|
|
3
|
+
export declare const EASE_IN_OUT: import("react-native").EasingFunction;
|
|
4
|
+
export declare function usePressScale(enabled?: boolean, to?: number): {
|
|
5
|
+
style: {
|
|
6
|
+
transform: {
|
|
7
|
+
scale: Animated.Value;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
onPressIn: () => void;
|
|
11
|
+
onPressOut: () => void;
|
|
12
|
+
};
|
|
13
|
+
export declare function useEnter(open: boolean, duration?: number): Animated.Value;
|
|
14
|
+
export declare function useSkeletonPulse(): Animated.Value;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
import { Animated, Easing } from 'react-native';
|
|
3
|
+
import { DURATION } from '../theme/theme';
|
|
4
|
+
export const EASE_OUT = Easing.bezier(0.2, 0.9, 0.2, 1);
|
|
5
|
+
export const EASE_IN_OUT = Easing.bezier(0.2, 0.8, 0.2, 1);
|
|
6
|
+
export function usePressScale(enabled = true, to = 0.97) {
|
|
7
|
+
const scale = useRef(new Animated.Value(1)).current;
|
|
8
|
+
const run = useCallback((value) => {
|
|
9
|
+
if (!enabled)
|
|
10
|
+
return;
|
|
11
|
+
Animated.timing(scale, {
|
|
12
|
+
toValue: value,
|
|
13
|
+
duration: DURATION.press,
|
|
14
|
+
easing: EASE_OUT,
|
|
15
|
+
useNativeDriver: true,
|
|
16
|
+
}).start();
|
|
17
|
+
}, [enabled, scale]);
|
|
18
|
+
return {
|
|
19
|
+
style: { transform: [{ scale }] },
|
|
20
|
+
onPressIn: () => run(to),
|
|
21
|
+
onPressOut: () => run(1),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function useEnter(open, duration = DURATION.sheet) {
|
|
25
|
+
const value = useRef(new Animated.Value(open ? 1 : 0)).current;
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
Animated.timing(value, {
|
|
28
|
+
toValue: open ? 1 : 0,
|
|
29
|
+
duration,
|
|
30
|
+
easing: EASE_OUT,
|
|
31
|
+
useNativeDriver: true,
|
|
32
|
+
}).start();
|
|
33
|
+
}, [open, duration, value]);
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
export function useSkeletonPulse() {
|
|
37
|
+
const value = useRef(new Animated.Value(1)).current;
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
const loop = Animated.loop(Animated.sequence([
|
|
40
|
+
Animated.timing(value, { toValue: 0.7, duration: 800, easing: EASE_IN_OUT, useNativeDriver: true }),
|
|
41
|
+
Animated.timing(value, { toValue: 1, duration: 800, easing: EASE_IN_OUT, useNativeDriver: true }),
|
|
42
|
+
]));
|
|
43
|
+
loop.start();
|
|
44
|
+
return () => loop.stop();
|
|
45
|
+
}, [value]);
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ColorToken } from '../tokens';
|
|
2
|
+
export type Tone = 'neutral' | 'brand' | 'amber' | 'green' | 'red' | 'violet';
|
|
3
|
+
export interface ToneColors {
|
|
4
|
+
bg: ColorToken | 'white' | 'transparent';
|
|
5
|
+
fg: ColorToken | 'white';
|
|
6
|
+
line: ColorToken | 'transparent';
|
|
7
|
+
}
|
|
8
|
+
export declare const TONE_SOFT: Record<Tone, ToneColors>;
|
|
9
|
+
export declare const TONE_SOLID: Record<Tone, ToneColors>;
|
package/lib/lib/tone.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const TONE_SOFT = {
|
|
2
|
+
neutral: { bg: 'hover', fg: 'muted', line: 'line' },
|
|
3
|
+
brand: { bg: 'soft', fg: 'brand-ink', line: 'soft2' },
|
|
4
|
+
amber: { bg: 'amber-bg', fg: 'amber-ink', line: 'amber-line' },
|
|
5
|
+
green: { bg: 'green-bg2', fg: 'green', line: 'green-line' },
|
|
6
|
+
red: { bg: 'red-bg', fg: 'red', line: 'red-line' },
|
|
7
|
+
violet: { bg: 'violet-bg', fg: 'violet', line: 'violet-line' },
|
|
8
|
+
};
|
|
9
|
+
export const TONE_SOLID = {
|
|
10
|
+
neutral: { bg: 'ink2', fg: 'surface', line: 'transparent' },
|
|
11
|
+
brand: { bg: 'brand', fg: 'white', line: 'transparent' },
|
|
12
|
+
amber: { bg: 'amber', fg: 'amber-900', line: 'transparent' },
|
|
13
|
+
green: { bg: 'green-solid', fg: 'white', line: 'transparent' },
|
|
14
|
+
red: { bg: 'danger', fg: 'white', line: 'transparent' },
|
|
15
|
+
violet: { bg: 'violet-solid', fg: 'white', line: 'transparent' },
|
|
16
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
+
import { type LucideIcon } from '../icons';
|
|
4
|
+
export interface NavIconProps {
|
|
5
|
+
icon: LucideIcon | string;
|
|
6
|
+
size?: number;
|
|
7
|
+
active?: boolean;
|
|
8
|
+
color?: string;
|
|
9
|
+
activeColor?: string;
|
|
10
|
+
strokeWidth?: number;
|
|
11
|
+
style?: StyleProp<ViewStyle>;
|
|
12
|
+
}
|
|
13
|
+
export declare function NavIcon({ icon, size, active, color, activeColor, strokeWidth, style, }: NavIconProps): React.JSX.Element;
|
|
14
|
+
export default NavIcon;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { icon as resolveLucide, qumraIconFor } from '../icons';
|
|
3
|
+
import { QUMRA_ICONS, QumraIcon } from './QumraIcon';
|
|
4
|
+
const brandName = (name) => qumraIconFor(name) ?? (name in QUMRA_ICONS ? name : undefined);
|
|
5
|
+
export function NavIcon({ icon, size = 20, active, color, activeColor, strokeWidth, style, }) {
|
|
6
|
+
if (typeof icon === 'string') {
|
|
7
|
+
const brand = brandName(icon);
|
|
8
|
+
if (brand) {
|
|
9
|
+
return _jsx(QumraIcon, { name: brand, size: size, mono: true, active: active });
|
|
10
|
+
}
|
|
11
|
+
const Lucide = resolveLucide(icon);
|
|
12
|
+
return _jsx(Lucide, { size: size, strokeWidth: strokeWidth, color: active ? activeColor : color, style: style });
|
|
13
|
+
}
|
|
14
|
+
const Lucide = icon;
|
|
15
|
+
return _jsx(Lucide, { size: size, strokeWidth: strokeWidth, color: active ? activeColor : color, style: style });
|
|
16
|
+
}
|
|
17
|
+
export default NavIcon;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { QUMRA_ICONS } from './data.generated';
|
|
3
|
+
export interface QumraIconProps {
|
|
4
|
+
name: string;
|
|
5
|
+
size?: number;
|
|
6
|
+
mono?: boolean;
|
|
7
|
+
active?: boolean;
|
|
8
|
+
color?: string;
|
|
9
|
+
count?: number | string;
|
|
10
|
+
label?: string;
|
|
11
|
+
onPress?: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function QumraIcon({ name, size, mono, active, color, count, label, onPress, }: QumraIconProps): React.JSX.Element | null;
|
|
14
|
+
export declare const hasQumraIcon: (name: string) => boolean;
|
|
15
|
+
export { QUMRA_ICONS };
|
|
16
|
+
export type { QumraIconName } from './data.generated';
|
|
17
|
+
export type { QumraIconSpec, QumraNode } from './types';
|