@snacky/ui 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.
@@ -0,0 +1,541 @@
1
+ import * as react from 'react';
2
+ import { CSSProperties, ButtonHTMLAttributes, ReactNode, InputHTMLAttributes, SVGProps } from 'react';
3
+
4
+ declare const typography: Record<string, Record<string, CSSProperties>>;
5
+
6
+ type ButtonVariant = 'primary' | 'secondary' | 'tertiary';
7
+ type ButtonSize = 'default' | 'small';
8
+ interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {
9
+ /** Hierarchy. Danger is a separate intent that layers onto any of these - it is not a fourth hierarchy. */
10
+ variant?: ButtonVariant;
11
+ /** Danger intent - a filled/outlined/text red treatment layered onto `variant`. */
12
+ danger?: boolean;
13
+ size?: ButtonSize;
14
+ /** Optional 24x24 leading icon or social logo slot. */
15
+ icon?: ReactNode;
16
+ children?: ReactNode;
17
+ }
18
+ /**
19
+ * Snacky Button - Primary/Secondary/Tertiary hierarchy, each with an optional
20
+ * Danger intent, in two sizes. Hover/pressed are real CSS pseudo-classes, not
21
+ * JS-tracked state, matching the design system's documented interaction model.
22
+ */
23
+ declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
24
+
25
+ type IconButtonVariant = 'primary' | 'secondary' | 'tertiary';
26
+ interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
27
+ variant?: IconButtonVariant;
28
+ /** 24px (default) or 16px (small) circle - only meaningful on the primary variant. */
29
+ size?: 'default' | 'small';
30
+ icon: ReactNode;
31
+ /** Toggled/favorited state on the Secondary variant - tints the icon with icon-active, fill unchanged. */
32
+ selected?: boolean;
33
+ /** Accessible label - required since the button has no visible text. */
34
+ ariaLabel: string;
35
+ }
36
+ /**
37
+ * Snacky Icon Button - compact circular touch target for a single icon.
38
+ * Secondary doubles as a toggle control via `selected` (e.g. Favorite).
39
+ */
40
+ declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
41
+
42
+ interface UploadButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
43
+ icon: ReactNode;
44
+ ariaLabel?: string;
45
+ }
46
+ /** Snacky Upload Button - circular dashed-border image drop zone. */
47
+ declare const UploadButton: react.ForwardRefExoticComponent<UploadButtonProps & react.RefAttributes<HTMLButtonElement>>;
48
+
49
+ interface TextFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {
50
+ value: string;
51
+ onChange: (value: string) => void;
52
+ label?: string;
53
+ /** Leading (left) icon or logo - e.g. a marker or payment-method logo. */
54
+ leadingIcon?: ReactNode;
55
+ /** Trailing (right) icon - e.g. eye toggle, chevron, calendar, clear. */
56
+ trailingIcon?: ReactNode;
57
+ /** Rotates the trailing icon 180deg - used by Dropdown while open. */
58
+ trailingIconRotated?: boolean;
59
+ error?: boolean | string;
60
+ }
61
+ /**
62
+ * Snacky Text Field - the shared 312x48 field used for Text, Password
63
+ * (type="password" + trailingIcon), Dropdown (trailingIcon chevron, readOnly),
64
+ * Date Picker (trailingIcon calendar, readOnly) and Address (leading/trailing
65
+ * marker). Focus/error borders are real CSS (:focus-within, .snacky-field--error),
66
+ * not JS-tracked state.
67
+ */
68
+ declare const TextField: react.ForwardRefExoticComponent<TextFieldProps & react.RefAttributes<HTMLInputElement>>;
69
+
70
+ interface SearchFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
71
+ value: string;
72
+ onChange: (value: string) => void;
73
+ searchIcon?: ReactNode;
74
+ onClear?: () => void;
75
+ }
76
+ /** Snacky Search Field - compact 40px field with a leading search icon and a clear button once filled. */
77
+ declare const SearchField: react.ForwardRefExoticComponent<SearchFieldProps & react.RefAttributes<HTMLInputElement>>;
78
+
79
+ interface OtpFieldProps {
80
+ value: string;
81
+ onChange: (value: string) => void;
82
+ length?: number;
83
+ disabled?: boolean;
84
+ }
85
+ /** Snacky OTP Field - N individual 48x48 cells with auto-advance and backspace-to-previous. */
86
+ declare function OtpField({ value, onChange, length, disabled }: OtpFieldProps): react.JSX.Element;
87
+
88
+ interface CopyFieldProps {
89
+ value: string;
90
+ onCopy?: (value: string) => void;
91
+ className?: string;
92
+ }
93
+ /** Snacky Copy Field - a read-only value with a "Copy" link that flips to "Copied" briefly. */
94
+ declare function CopyField({ value, onCopy, className }: CopyFieldProps): react.JSX.Element;
95
+
96
+ interface ChatInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange'> {
97
+ value: string;
98
+ onChange: (value: string) => void;
99
+ onSend: () => void;
100
+ sendIcon?: ReactNode;
101
+ }
102
+ /** Snacky Chat Input - message compose bar with an inline 48x48 send button. */
103
+ declare function ChatInput({ value, onChange, onSend, sendIcon, className, placeholder, ...rest }: ChatInputProps): react.JSX.Element;
104
+
105
+ interface AddressResultProps {
106
+ icon?: ReactNode;
107
+ title: string;
108
+ subtitle: string;
109
+ onClick?: () => void;
110
+ className?: string;
111
+ }
112
+ /** Snacky Address Search Result row - selected address entry in a results list. */
113
+ declare function AddressResult({ icon, title, subtitle, onClick, className }: AddressResultProps): react.JSX.Element;
114
+
115
+ interface ProductChipProps extends ButtonHTMLAttributes<HTMLButtonElement> {
116
+ label: string;
117
+ selected: boolean;
118
+ thumbnail: ReactNode;
119
+ }
120
+ /** Snacky Product Chip - pill chip with a 24x24 thumbnail (e.g. weight/variant picker). */
121
+ declare function ProductChip({ label, selected, thumbnail, onClick, className, ...rest }: ProductChipProps): react.JSX.Element;
122
+
123
+ interface FilterChipProps extends ButtonHTMLAttributes<HTMLButtonElement> {
124
+ label: string;
125
+ selected: boolean;
126
+ }
127
+ /** Snacky Filter Chip - text-only pill toggle, e.g. category/sort filters. */
128
+ declare function FilterChip({ label, selected, onClick, className, ...rest }: FilterChipProps): react.JSX.Element;
129
+
130
+ interface RadioOptionProps {
131
+ label: string;
132
+ selected: boolean;
133
+ onClick: () => void;
134
+ disabled?: boolean;
135
+ name?: string;
136
+ className?: string;
137
+ }
138
+ /** Snacky Radio Option - single-selection control. Always use within a group of 2+ options. */
139
+ declare function RadioOption({ label, selected, onClick, disabled, name, className }: RadioOptionProps): react.JSX.Element;
140
+
141
+ interface CheckboxProps {
142
+ label: string;
143
+ checked: boolean;
144
+ onChange: (checked: boolean) => void;
145
+ disabled?: boolean;
146
+ className?: string;
147
+ }
148
+ /** Snacky Checkbox - binary on/off selection control. */
149
+ declare function Checkbox({ label, checked, onChange, disabled, className }: CheckboxProps): react.JSX.Element;
150
+
151
+ interface ToggleProps {
152
+ checked: boolean;
153
+ onChange: (checked: boolean) => void;
154
+ disabled?: boolean;
155
+ ariaLabel?: string;
156
+ className?: string;
157
+ }
158
+ /** Snacky Toggle - switch for settings that take effect immediately, no confirm step. */
159
+ declare function Toggle({ checked, onChange, disabled, ariaLabel, className }: ToggleProps): react.JSX.Element;
160
+
161
+ interface NavItem {
162
+ label: string;
163
+ icon: ReactNode;
164
+ activeIcon?: ReactNode;
165
+ }
166
+ interface NavBarProps {
167
+ items: NavItem[];
168
+ selected: number;
169
+ onSelect: (index: number) => void;
170
+ className?: string;
171
+ }
172
+ /** Snacky Nav Bar - bottom navigation, 5 tabs for the customer flow. */
173
+ declare function NavBar({ items, selected, onSelect, className }: NavBarProps): react.JSX.Element;
174
+
175
+ interface TabRowProps {
176
+ tabs: string[];
177
+ selected: number;
178
+ onSelect: (index: number) => void;
179
+ className?: string;
180
+ }
181
+ /** Snacky Tab Row - inline tab selector with a 2px accent underline on the active tab. */
182
+ declare function TabRow({ tabs, selected, onSelect, className }: TabRowProps): react.JSX.Element;
183
+
184
+ type HeaderLeadingIcon = 'back' | 'close';
185
+ interface HeaderProps {
186
+ title: string;
187
+ /** Back drills deeper into a flow (goes to the previous screen); Close dismisses it entirely. */
188
+ leadingIcon?: HeaderLeadingIcon;
189
+ onLeadingClick?: () => void;
190
+ /** Only ever pairs with leadingIcon="close", never "back", per the documented variants. */
191
+ trailingIcon?: ReactNode;
192
+ onTrailingClick?: () => void;
193
+ className?: string;
194
+ }
195
+ /**
196
+ * Snacky Header - page header bar. Title always centers in the remaining
197
+ * space - when a leading icon is present but there's no trailing action,
198
+ * the title row gets matching right padding so it stays optically centered
199
+ * against the whole bar, not just the leftover space next to the icon.
200
+ */
201
+ declare function Header({ title, leadingIcon, onLeadingClick, trailingIcon, onTrailingClick, className }: HeaderProps): react.JSX.Element;
202
+
203
+ interface ImageBannerProps {
204
+ imageUrl: string;
205
+ alt: string;
206
+ onClick?: () => void;
207
+ className?: string;
208
+ }
209
+ /** Snacky Hero Banner - main promo carousel image. */
210
+ declare function HeroBanner({ imageUrl, alt, onClick, className }: ImageBannerProps): react.JSX.Element;
211
+ /** Snacky Square Banner - featured category tile (Discount / Favourites / Deals). */
212
+ declare function SquareBanner({ imageUrl, alt, onClick, className }: ImageBannerProps): react.JSX.Element;
213
+ /** Snacky Full-width Banner - prominent promotional banner on detail pages. */
214
+ declare function FullWidthBanner({ imageUrl, alt, onClick, className }: ImageBannerProps): react.JSX.Element;
215
+ interface PointBalanceBannerProps {
216
+ pointsIcon: ReactNode;
217
+ points: string;
218
+ balanceIcon: ReactNode;
219
+ balance: string;
220
+ className?: string;
221
+ }
222
+ /** Snacky Point Balance Banner - loyalty points + wallet balance summary strip. */
223
+ declare function PointBalanceBanner({ pointsIcon, points, balanceIcon, balance, className }: PointBalanceBannerProps): react.JSX.Element;
224
+ interface AlertBannerProps {
225
+ message: string;
226
+ countdown?: string;
227
+ className?: string;
228
+ }
229
+ /** Snacky Alert Banner - inline info/warning strip, optionally with a countdown. */
230
+ declare function AlertBanner({ message, countdown, className }: AlertBannerProps): react.JSX.Element;
231
+
232
+ interface NotificationBadgeProps {
233
+ count: number;
234
+ max?: number;
235
+ children: ReactNode;
236
+ className?: string;
237
+ }
238
+ /** Snacky Notification Badge - numeric count overlay on an icon (e.g. cart). */
239
+ declare function NotificationBadge({ count, max, children, className }: NotificationBadgeProps): react.JSX.Element;
240
+ interface DiscountTagProps {
241
+ label: string;
242
+ className?: string;
243
+ }
244
+ /** Snacky Discount Tag - inline promo/percentage-off tag, e.g. on Product Card. */
245
+ declare function DiscountTag({ label, className }: DiscountTagProps): react.JSX.Element;
246
+ interface SoldOutBadgeProps {
247
+ className?: string;
248
+ }
249
+ /** Snacky Sold Out Badge - absolute overlay on a product image. Position it with your own layout. */
250
+ declare function SoldOutBadge({ className }: SoldOutBadgeProps): react.JSX.Element;
251
+ interface VariantBadgeProps {
252
+ label: string;
253
+ className?: string;
254
+ }
255
+ /** Snacky Variant Badge - static, non-interactive label for the currently selected product variant. */
256
+ declare function VariantBadge({ label, className }: VariantBadgeProps): react.JSX.Element;
257
+
258
+ type CalloutVariant = 'received' | 'sent' | 'pending';
259
+ interface CalloutProps {
260
+ message: string;
261
+ timestamp: string;
262
+ variant: CalloutVariant;
263
+ /** Sent shows a checkmark, Pending a clock - pass your own icon for either. */
264
+ statusIcon?: ReactNode;
265
+ className?: string;
266
+ }
267
+ /** Snacky Callout - chat message bubble. Received aligns left/white, Sent/Pending align right/accent. */
268
+ declare function Callout({ message, timestamp, variant, statusIcon, className }: CalloutProps): react.JSX.Element;
269
+
270
+ type OrderStatus = 'waiting' | 'process' | 'processCod' | 'shipped' | 'received' | 'cancelled';
271
+ interface OrderListItemProps {
272
+ productImage: string;
273
+ /** The first/representative product in the order, shown next to the status. */
274
+ productName: string;
275
+ status: OrderStatus;
276
+ /** e.g. "2 products" */
277
+ itemsSummary: string;
278
+ /** e.g. "Rp 8,000" */
279
+ total: string;
280
+ /** Waiting status only, e.g. "Dec 30, 11:00" */
281
+ paymentDeadline?: string;
282
+ /** Overrides the status-derived CTA label (Track Shipment / Buy Again). */
283
+ actionLabel?: string;
284
+ onAction?: () => void;
285
+ /** Card click, e.g. to open order detail. */
286
+ onClick?: () => void;
287
+ className?: string;
288
+ }
289
+ /**
290
+ * Snacky Order List Item - order summary card. Layout, CTA, and the COD chip
291
+ * / payment-deadline banner are all driven by `status`, matching the real
292
+ * per-status variants (Waiting/Process/Process COD/Shipped/Received/Cancelled).
293
+ */
294
+ declare function OrderListItem({ productImage, productName, status, itemsSummary, total, paymentDeadline, actionLabel, onAction, onClick, className, }: OrderListItemProps): react.JSX.Element;
295
+ interface NotificationListItemProps {
296
+ title: string;
297
+ message: string;
298
+ unread?: boolean;
299
+ onClick?: () => void;
300
+ className?: string;
301
+ }
302
+ /** Snacky Notification List Item - accent-tinted background for unread items. */
303
+ declare function NotificationListItem({ title, message, unread, onClick, className }: NotificationListItemProps): react.JSX.Element;
304
+
305
+ interface AccordionProps {
306
+ title: string;
307
+ /** When passed, uses the compact 12px title with no border (elevation only) - e.g. a payment-method logo. */
308
+ leadingIcon?: ReactNode;
309
+ children: ReactNode;
310
+ defaultOpen?: boolean;
311
+ className?: string;
312
+ }
313
+ /**
314
+ * Snacky Accordion - one component whose header border and title size respond
315
+ * automatically to whether `leadingIcon` is passed (matches the Figma source,
316
+ * which models icon presence as a real variant rather than optional content).
317
+ */
318
+ declare function Accordion({ title, leadingIcon, children, defaultOpen, className }: AccordionProps): react.JSX.Element;
319
+
320
+ interface BottomSheetProps {
321
+ open: boolean;
322
+ onDismiss: () => void;
323
+ children: ReactNode;
324
+ /** Hide the drag-handle bar, e.g. for content that supplies its own header. */
325
+ hideHandle?: boolean;
326
+ className?: string;
327
+ }
328
+ /**
329
+ * Snacky Bottom Sheet - the shared modal shell every documented Modal
330
+ * "variant" (Welcome, Success, Confirmation, Calendar, Variants Selector,
331
+ * Payment Methods, Buyer Reviews, Driver Tracking) composes from, matching
332
+ * `SnackyBottomSheet(onDismiss = {...}) { ...content... }` in the code samples.
333
+ * 20px radius on top corners only, dim overlay backdrop, dismiss on
334
+ * backdrop click or Escape.
335
+ */
336
+ declare function BottomSheet({ open, onDismiss, children, hideHandle, className }: BottomSheetProps): react.JSX.Element | null;
337
+
338
+ interface SectionProps {
339
+ title: string;
340
+ /** Small circular chevron button in the header, shown when provided (e.g. "see more"). */
341
+ onAction?: () => void;
342
+ children: ReactNode;
343
+ className?: string;
344
+ }
345
+ /**
346
+ * Snacky Section - the shared content-block shell every documented Section
347
+ * "variant" (Variant Selector, Product Description, Buyer Reviews, product
348
+ * rows, Order Summary, etc.) composes from, matching
349
+ * `SnackySection(title = "...", onAction = {...}) { ...content... }`.
350
+ */
351
+ declare function Section({ title, onAction, children, className }: SectionProps): react.JSX.Element;
352
+
353
+ type AvatarSize = 'sm' | 'md' | 'lg';
354
+ interface AvatarProps {
355
+ src: string;
356
+ alt: string;
357
+ size?: AvatarSize;
358
+ className?: string;
359
+ }
360
+ /** Snacky Avatar - circular profile photo in three fixed sizes (32 / 56 / 72px). */
361
+ declare function Avatar({ src, alt, size, className }: AvatarProps): react.JSX.Element;
362
+
363
+ type IllustrationVariant = 'empty' | 'createAccount' | 'welcome' | 'success' | 'discountReferral';
364
+ interface IllustrationProps {
365
+ variant: IllustrationVariant;
366
+ /** Host your own export of this illustration (this package ships no artwork). */
367
+ src: string;
368
+ alt: string;
369
+ className?: string;
370
+ }
371
+ /** Snacky Illustration - decorative spot illustration for empty states, onboarding, confirmations. */
372
+ declare function Illustration({ variant, src, alt, className }: IllustrationProps): react.JSX.Element;
373
+
374
+ type ProductImageUsage = 'product-card' | 'product-details' | 'list' | 'review' | 'variant' | 'accordion-modal';
375
+ interface ProductImageProps {
376
+ src: string;
377
+ alt: string;
378
+ usage: ProductImageUsage;
379
+ /** Overlays a centered "Sold Out" badge - product-card and product-details only. */
380
+ sold?: boolean;
381
+ className?: string;
382
+ }
383
+ /**
384
+ * Snacky Product Image - adapts its frame size/border to where it appears:
385
+ * product-card (128) and product-details (200) are bare transparent images;
386
+ * list (56/48 inner) and review (48/40 inner, bordered) wrap in a padded
387
+ * frame; variant (88) is a bordered selection frame; accordion-modal (24)
388
+ * renders a payment-method logo instead of a product photo.
389
+ */
390
+ declare function ProductImage({ src, alt, usage, sold, className }: ProductImageProps): react.JSX.Element;
391
+
392
+ interface BaseProductCardProps {
393
+ productName: string;
394
+ imageUrl: string;
395
+ price: string;
396
+ rating: number;
397
+ onClick?: () => void;
398
+ className?: string;
399
+ }
400
+ interface ProductCardListProps extends BaseProductCardProps {
401
+ variant?: 'list';
402
+ originalPrice?: string;
403
+ discountLabel?: string;
404
+ onAddToCart: () => void;
405
+ cartIcon?: ReactNode;
406
+ ratingIcon?: ReactNode;
407
+ }
408
+ interface ProductCardDetailsProps extends BaseProductCardProps {
409
+ variant: 'details';
410
+ originalPrice?: string;
411
+ discountLabel?: string;
412
+ ratingCount: number;
413
+ favorited: boolean;
414
+ onFavoriteClick: () => void;
415
+ onShareClick: () => void;
416
+ onChatClick: () => void;
417
+ sold?: boolean;
418
+ ratingIcon?: ReactNode;
419
+ favoriteIcon?: ReactNode;
420
+ shareIcon?: ReactNode;
421
+ chatIcon?: ReactNode;
422
+ }
423
+ type ProductCardProps = ProductCardListProps | ProductCardDetailsProps;
424
+ /**
425
+ * Snacky Product Card - `list` (default) for horizontal carousels/2-column
426
+ * grids, `details` for the product detail page with rating count and
427
+ * Favorite/Share/Chat actions.
428
+ */
429
+ declare function ProductCard(props: ProductCardProps): react.JSX.Element;
430
+
431
+ interface IconProps extends SVGProps<SVGSVGElement> {
432
+ width?: number | string;
433
+ height?: number | string;
434
+ color?: string;
435
+ }
436
+
437
+ declare const home$1: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
438
+ declare const category$1: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
439
+ declare const cart$1: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
440
+ declare const cartAdd: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
441
+ declare const history: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
442
+ declare const account: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
443
+ declare const eye: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
444
+ declare const eyeOff: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
445
+ declare const chevronDown: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
446
+ declare const chevronUp: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
447
+ declare const chevronRight: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
448
+ declare const back: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
449
+ declare const close: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
450
+ declare const closeCircle: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
451
+ declare const calendar: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
452
+ declare const search: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
453
+ declare const location: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
454
+ declare const pin: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
455
+ declare const send: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
456
+ declare const chat: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
457
+ declare const messageSquare: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
458
+ declare const heart$1: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
459
+ declare const bell: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
460
+ declare const check: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
461
+ declare const plus: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
462
+ declare const minus: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
463
+ declare const trash: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
464
+ declare const edit: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
465
+ declare const share: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
466
+ declare const camera: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
467
+ declare const phone: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
468
+ declare const lock: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
469
+ declare const document: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
470
+ declare const creditCard: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
471
+ declare const receipt: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
472
+ declare const smartphone: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
473
+ declare const key: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
474
+ declare const help: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
475
+ declare const logout: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
476
+ declare const truck: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
477
+ declare const cash: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
478
+ declare const clock: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
479
+
480
+ declare const outline_account: typeof account;
481
+ declare const outline_back: typeof back;
482
+ declare const outline_bell: typeof bell;
483
+ declare const outline_calendar: typeof calendar;
484
+ declare const outline_camera: typeof camera;
485
+ declare const outline_cartAdd: typeof cartAdd;
486
+ declare const outline_cash: typeof cash;
487
+ declare const outline_chat: typeof chat;
488
+ declare const outline_check: typeof check;
489
+ declare const outline_chevronDown: typeof chevronDown;
490
+ declare const outline_chevronRight: typeof chevronRight;
491
+ declare const outline_chevronUp: typeof chevronUp;
492
+ declare const outline_clock: typeof clock;
493
+ declare const outline_close: typeof close;
494
+ declare const outline_closeCircle: typeof closeCircle;
495
+ declare const outline_creditCard: typeof creditCard;
496
+ declare const outline_document: typeof document;
497
+ declare const outline_edit: typeof edit;
498
+ declare const outline_eye: typeof eye;
499
+ declare const outline_eyeOff: typeof eyeOff;
500
+ declare const outline_help: typeof help;
501
+ declare const outline_history: typeof history;
502
+ declare const outline_key: typeof key;
503
+ declare const outline_location: typeof location;
504
+ declare const outline_lock: typeof lock;
505
+ declare const outline_logout: typeof logout;
506
+ declare const outline_messageSquare: typeof messageSquare;
507
+ declare const outline_minus: typeof minus;
508
+ declare const outline_phone: typeof phone;
509
+ declare const outline_pin: typeof pin;
510
+ declare const outline_plus: typeof plus;
511
+ declare const outline_receipt: typeof receipt;
512
+ declare const outline_search: typeof search;
513
+ declare const outline_send: typeof send;
514
+ declare const outline_share: typeof share;
515
+ declare const outline_smartphone: typeof smartphone;
516
+ declare const outline_trash: typeof trash;
517
+ declare const outline_truck: typeof truck;
518
+ declare namespace outline {
519
+ export { outline_account as account, outline_back as back, outline_bell as bell, outline_calendar as calendar, outline_camera as camera, cart$1 as cart, outline_cartAdd as cartAdd, outline_cash as cash, category$1 as category, outline_chat as chat, outline_check as check, outline_chevronDown as chevronDown, outline_chevronRight as chevronRight, outline_chevronUp as chevronUp, outline_clock as clock, outline_close as close, outline_closeCircle as closeCircle, outline_creditCard as creditCard, outline_document as document, outline_edit as edit, outline_eye as eye, outline_eyeOff as eyeOff, heart$1 as heart, outline_help as help, outline_history as history, home$1 as home, outline_key as key, outline_location as location, outline_lock as lock, outline_logout as logout, outline_messageSquare as messageSquare, outline_minus as minus, outline_phone as phone, outline_pin as pin, outline_plus as plus, outline_receipt as receipt, outline_search as search, outline_send as send, outline_share as share, outline_smartphone as smartphone, outline_trash as trash, outline_truck as truck };
520
+ }
521
+
522
+ declare const home: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
523
+ declare const category: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
524
+ declare const cart: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
525
+ declare const heart: ({ width, height, color, ...rest }: IconProps) => react.JSX.Element;
526
+
527
+ declare const solid_cart: typeof cart;
528
+ declare const solid_category: typeof category;
529
+ declare const solid_heart: typeof heart;
530
+ declare const solid_home: typeof home;
531
+ declare namespace solid {
532
+ export { solid_cart as cart, solid_category as category, solid_heart as heart, solid_home as home };
533
+ }
534
+
535
+ /** Matches the `<SnackyIcons.outline.home />` / `<SnackyIcons.solid.home />` namespace used throughout the design system's documented code samples. */
536
+ declare const SnackyIcons: {
537
+ outline: typeof outline;
538
+ solid: typeof solid;
539
+ };
540
+
541
+ export { Accordion, type AccordionProps, AddressResult, type AddressResultProps, AlertBanner, type AlertBannerProps, Avatar, type AvatarProps, type AvatarSize, BottomSheet, type BottomSheetProps, Button, type ButtonProps, type ButtonSize, type ButtonVariant, Callout, type CalloutProps, type CalloutVariant, ChatInput, type ChatInputProps, Checkbox, type CheckboxProps, CopyField, type CopyFieldProps, DiscountTag, type DiscountTagProps, FilterChip, type FilterChipProps, FullWidthBanner, Header, type HeaderLeadingIcon, type HeaderProps, HeroBanner, IconButton, type IconButtonProps, type IconButtonVariant, type IconProps, Illustration, type IllustrationProps, type IllustrationVariant, type ImageBannerProps, NavBar, type NavBarProps, type NavItem, NotificationBadge, type NotificationBadgeProps, NotificationListItem, type NotificationListItemProps, OrderListItem, type OrderListItemProps, type OrderStatus, OtpField, type OtpFieldProps, PointBalanceBanner, type PointBalanceBannerProps, ProductCard, type ProductCardDetailsProps, type ProductCardListProps, type ProductCardProps, ProductChip, type ProductChipProps, ProductImage, type ProductImageProps, type ProductImageUsage, RadioOption, type RadioOptionProps, SearchField, type SearchFieldProps, Section, type SectionProps, SnackyIcons, SoldOutBadge, type SoldOutBadgeProps, SquareBanner, TabRow, type TabRowProps, TextField, type TextFieldProps, Toggle, type ToggleProps, UploadButton, type UploadButtonProps, VariantBadge, type VariantBadgeProps, typography };