@mohasinac/appkit 2.7.57 → 2.7.58

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 (184) hide show
  1. package/dist/_internal/client/features/layout/DashboardLayoutClient.d.ts +7 -1
  2. package/dist/_internal/client/features/layout/DashboardLayoutClient.js +8 -2
  3. package/dist/client.d.ts +1 -1
  4. package/dist/client.js +1 -1
  5. package/dist/configs/tailwind.d.ts +16 -3
  6. package/dist/configs/tailwind.js +18 -5
  7. package/dist/features/account/components/AddressBook.js +1 -1
  8. package/dist/features/account/components/BuyerAccountGuideView.js +7 -7
  9. package/dist/features/account/components/BuyerAuctionsGuideView.js +7 -7
  10. package/dist/features/account/components/BuyerOrdersGuideView.js +6 -6
  11. package/dist/features/account/components/BuyerShoppingGuideView.js +7 -7
  12. package/dist/features/account/components/UserOffersPanel.js +1 -1
  13. package/dist/features/account/components/UserSupportView.js +4 -4
  14. package/dist/features/admin/components/AdminAdsView.js +1 -1
  15. package/dist/features/admin/components/AdminAllEventEntriesView.js +1 -1
  16. package/dist/features/admin/components/AdminAnalyticsGuideView.js +3 -3
  17. package/dist/features/admin/components/AdminBidsView.js +1 -1
  18. package/dist/features/admin/components/AdminBlogView.js +1 -1
  19. package/dist/features/admin/components/AdminBrandsView.js +1 -1
  20. package/dist/features/admin/components/AdminBundlesView.js +1 -1
  21. package/dist/features/admin/components/AdminCarouselView.js +2 -2
  22. package/dist/features/admin/components/AdminCartsView.js +1 -1
  23. package/dist/features/admin/components/AdminCatalogGuideView.js +5 -5
  24. package/dist/features/admin/components/AdminCategoriesView.js +1 -1
  25. package/dist/features/admin/components/AdminContactEditorView.js +2 -2
  26. package/dist/features/admin/components/AdminContactView.js +1 -1
  27. package/dist/features/admin/components/AdminContentGuideView.js +6 -6
  28. package/dist/features/admin/components/AdminCouponsView.js +1 -1
  29. package/dist/features/admin/components/AdminFaqsView.js +1 -1
  30. package/dist/features/admin/components/AdminFeatureFlagsView.js +1 -1
  31. package/dist/features/admin/components/AdminFeaturesView.js +1 -1
  32. package/dist/features/admin/components/AdminGuideHubView.js +1 -1
  33. package/dist/features/admin/components/AdminHistoryView.js +1 -1
  34. package/dist/features/admin/components/AdminListingScaffold.js +1 -1
  35. package/dist/features/admin/components/AdminNewsletterView.js +1 -1
  36. package/dist/features/admin/components/AdminNotificationsView.js +1 -1
  37. package/dist/features/admin/components/AdminOrdersGuideView.js +5 -5
  38. package/dist/features/admin/components/AdminOrdersView.js +1 -1
  39. package/dist/features/admin/components/AdminPayoutsView.js +1 -1
  40. package/dist/features/admin/components/AdminProductsView.js +1 -1
  41. package/dist/features/admin/components/AdminReturnRequestsView.js +1 -1
  42. package/dist/features/admin/components/AdminReviewsView.js +1 -1
  43. package/dist/features/admin/components/AdminScammerEditorView.js +3 -3
  44. package/dist/features/admin/components/AdminScammersView.js +4 -4
  45. package/dist/features/admin/components/AdminSectionsView.js +1 -1
  46. package/dist/features/admin/components/AdminSessionsView.js +1 -1
  47. package/dist/features/admin/components/AdminSiteSettingsView.js +1 -1
  48. package/dist/features/admin/components/AdminStoreAddressesView.js +1 -1
  49. package/dist/features/admin/components/AdminStoresGuideView.js +6 -6
  50. package/dist/features/admin/components/AdminStoresView.js +1 -1
  51. package/dist/features/admin/components/AdminSublistingCategoriesView.js +1 -1
  52. package/dist/features/admin/components/AdminSupportTicketDetailView.js +4 -4
  53. package/dist/features/admin/components/AdminSupportTicketsView.js +7 -7
  54. package/dist/features/admin/components/AdminTeamGuideView.js +4 -4
  55. package/dist/features/admin/components/AdminTeamView.js +1 -1
  56. package/dist/features/admin/components/AdminTrustGuideView.js +5 -5
  57. package/dist/features/admin/components/AdminUserEditorView.js +1 -1
  58. package/dist/features/admin/components/AdminUsersGuideView.js +5 -5
  59. package/dist/features/admin/components/AdminUsersView.js +1 -1
  60. package/dist/features/admin/components/AdminViewCards.js +1 -1
  61. package/dist/features/admin/components/AdminWishlistsView.js +1 -1
  62. package/dist/features/admin/components/DataTable.js +1 -1
  63. package/dist/features/auctions/components/AuctionBidsTable.js +1 -1
  64. package/dist/features/auctions/components/AuctionDetailPageView.js +2 -2
  65. package/dist/features/auctions/components/MarketplaceAuctionCard.js +2 -2
  66. package/dist/features/auctions/components/PlaceBidFormClient.js +1 -1
  67. package/dist/features/auth/components/VerifyEmailView.js +1 -1
  68. package/dist/features/blog/components/BlogListView.js +1 -1
  69. package/dist/features/blog/components/BlogPostView.js +1 -1
  70. package/dist/features/cart/components/CartDrawer.js +1 -1
  71. package/dist/features/categories/components/CategoryDetailPageView.js +1 -1
  72. package/dist/features/checkout/components/CheckoutStepper.js +1 -1
  73. package/dist/features/collections/components/CollectionCard.js +1 -1
  74. package/dist/features/copilot/components/AdminCopilotView.js +2 -2
  75. package/dist/features/events/components/AdminEventsView.js +1 -1
  76. package/dist/features/events/components/EventPollWidget.js +2 -2
  77. package/dist/features/events/components/EventStatusBadge.js +4 -4
  78. package/dist/features/events/components/SpinWheelView.js +1 -1
  79. package/dist/features/faq/components/FAQAccordion.js +2 -2
  80. package/dist/features/forms/Input.js +3 -3
  81. package/dist/features/forms/Select.js +2 -2
  82. package/dist/features/forms/Textarea.js +2 -2
  83. package/dist/features/forms/utils.d.ts +1 -1
  84. package/dist/features/forms/utils.js +1 -1
  85. package/dist/features/homepage/components/CharacterHotspotForm.js +2 -2
  86. package/dist/features/layout/BottomActions.js +2 -2
  87. package/dist/features/layout/ListingLayout.js +3 -3
  88. package/dist/features/layout/TitleBarLayout.js +1 -1
  89. package/dist/features/media/index.d.ts +2 -0
  90. package/dist/features/media/index.js +1 -0
  91. package/dist/features/media/modals/ImageCropModal.js +1 -1
  92. package/dist/features/media/modals/ImageEditor.d.ts +12 -0
  93. package/dist/features/media/modals/ImageEditor.js +73 -0
  94. package/dist/features/media/upload/ImageUpload.d.ts +5 -1
  95. package/dist/features/media/upload/ImageUpload.js +33 -8
  96. package/dist/features/media/upload/MediaUploadField.d.ts +5 -1
  97. package/dist/features/media/upload/MediaUploadField.js +26 -12
  98. package/dist/features/orders/components/OrdersList.js +7 -7
  99. package/dist/features/orders/components/RefundHistoryTable.js +2 -2
  100. package/dist/features/orders/components/RefundRequestView.js +3 -3
  101. package/dist/features/pre-orders/components/PreOrderActionsClient.js +1 -1
  102. package/dist/features/pre-orders/components/PreOrderBadge.js +4 -4
  103. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +1 -1
  104. package/dist/features/pre-orders/components/PreorderCard.js +2 -2
  105. package/dist/features/products/components/CustomSectionsEditor.js +1 -1
  106. package/dist/features/products/components/MakeOfferButton.js +2 -2
  107. package/dist/features/products/components/PrizeDrawDetailPageView.js +2 -2
  108. package/dist/features/products/components/PrizeDrawItemsEditor.js +3 -3
  109. package/dist/features/products/components/PrizeRevealModal.js +3 -3
  110. package/dist/features/products/components/ProductDetailPageView.js +4 -4
  111. package/dist/features/products/components/ProductFeaturesSelector.js +1 -1
  112. package/dist/features/products/components/ProductGrid.js +3 -3
  113. package/dist/features/promotions/components/CouponCard.js +2 -2
  114. package/dist/features/promotions/components/PromotionsView.js +1 -1
  115. package/dist/features/reviews/components/ReviewDetailShell.js +2 -2
  116. package/dist/features/reviews/components/ReviewsList.js +1 -1
  117. package/dist/features/seller/components/SellerAddressesView.js +2 -2
  118. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +2 -2
  119. package/dist/features/seller/components/SellerAuctionsView.js +1 -1
  120. package/dist/features/seller/components/SellerBidsView.js +1 -1
  121. package/dist/features/seller/components/SellerBundlesView.js +2 -2
  122. package/dist/features/seller/components/SellerClassifiedView.js +3 -3
  123. package/dist/features/seller/components/SellerCouponEditorView.js +2 -2
  124. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  125. package/dist/features/seller/components/SellerDigitalCodesView.js +2 -2
  126. package/dist/features/seller/components/SellerFeaturesView.js +1 -1
  127. package/dist/features/seller/components/SellerLiveView.js +4 -4
  128. package/dist/features/seller/components/SellerOffersPanel.js +2 -2
  129. package/dist/features/seller/components/SellerOffersView.js +1 -1
  130. package/dist/features/seller/components/SellerOrdersView.js +2 -2
  131. package/dist/features/seller/components/SellerPayoutMethodsView.js +2 -2
  132. package/dist/features/seller/components/SellerPayoutsView.js +1 -1
  133. package/dist/features/seller/components/SellerProductsCards.js +1 -1
  134. package/dist/features/seller/components/SellerProductsView.js +1 -1
  135. package/dist/features/seller/components/SellerReviewsView.js +1 -1
  136. package/dist/features/seller/components/SellerShippingConfigsView.js +3 -3
  137. package/dist/features/seller/components/SellerStoreCategoriesView.js +2 -2
  138. package/dist/features/seller/components/SellerTemplatesView.js +2 -2
  139. package/dist/features/seller/components/analytics/SellerTopProducts.js +1 -1
  140. package/dist/features/stores/components/StoreFinanceGuideView.js +2 -2
  141. package/dist/features/stores/components/StoreHeader.js +1 -1
  142. package/dist/features/stores/components/StoreListingsGuideView.js +3 -3
  143. package/dist/features/stores/components/StoreOrdersGuideView.js +4 -4
  144. package/dist/features/stores/components/StoreSettingsGuideView.js +2 -2
  145. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +4 -4
  146. package/dist/features/wishlist/components/WishlistPage.js +1 -1
  147. package/dist/index.d.ts +2 -0
  148. package/dist/index.js +3 -0
  149. package/dist/styles.css +286 -3
  150. package/dist/tailwind-utilities.css +1 -1
  151. package/dist/tokens/motion.d.ts +162 -0
  152. package/dist/tokens/motion.js +89 -0
  153. package/dist/ui/DataTable.js +3 -2
  154. package/dist/ui/components/Accordion.js +2 -1
  155. package/dist/ui/components/Card.d.ts +5 -2
  156. package/dist/ui/components/Card.js +29 -11
  157. package/dist/ui/components/Div.d.ts +2 -16
  158. package/dist/ui/components/Div.js +2 -16
  159. package/dist/ui/components/Layout.d.ts +9 -19
  160. package/dist/ui/components/Layout.js +9 -7
  161. package/dist/ui/components/Modal.js +7 -4
  162. package/dist/ui/components/Motion.d.ts +75 -0
  163. package/dist/ui/components/Motion.js +122 -0
  164. package/dist/ui/components/Semantic.d.ts +81 -14
  165. package/dist/ui/components/Semantic.js +75 -10
  166. package/dist/ui/components/Semantic.style.css +261 -2
  167. package/dist/ui/components/SideDrawer.d.ts +1 -1
  168. package/dist/ui/components/SideDrawer.js +8 -6
  169. package/dist/ui/components/SideModal.d.ts +1 -1
  170. package/dist/ui/components/SideModal.js +11 -9
  171. package/dist/ui/components/StackedViewShell.js +6 -1
  172. package/dist/ui/components/Toast.js +5 -2
  173. package/dist/ui/components/Typography.d.ts +44 -3
  174. package/dist/ui/components/Typography.js +15 -30
  175. package/dist/ui/components/Typography.style.css +24 -0
  176. package/dist/ui/components/VacationBanner.js +2 -1
  177. package/dist/ui/components/surface-tokens.d.ts +70 -0
  178. package/dist/ui/components/surface-tokens.js +68 -0
  179. package/dist/ui/forms/FormShell.d.ts +6 -1
  180. package/dist/ui/forms/FormShell.js +32 -4
  181. package/dist/ui/index.d.ts +9 -2
  182. package/dist/ui/index.js +4 -2
  183. package/dist/validation/schemas.d.ts +28 -28
  184. package/package.json +3 -1
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Motion presets — reusable animation configs for motion/react components.
3
+ *
4
+ * All presets respect `prefers-reduced-motion` via the `useReducedMotion` hook
5
+ * in the consuming component wrappers (Motion.tsx).
6
+ */
7
+ import type { Transition } from "motion/react";
8
+ export declare const SPRING_SNAPPY: Transition;
9
+ export declare const SPRING_GENTLE: Transition;
10
+ export declare const EASE_OUT: Transition;
11
+ export declare const MOTION_PRESETS: {
12
+ readonly fadeIn: {
13
+ readonly initial: {
14
+ readonly opacity: 0;
15
+ };
16
+ readonly animate: {
17
+ readonly opacity: 1;
18
+ };
19
+ readonly exit: {
20
+ readonly opacity: 0;
21
+ };
22
+ readonly transition: {
23
+ readonly duration: 0.2;
24
+ };
25
+ };
26
+ readonly fadeInUp: {
27
+ readonly initial: {
28
+ readonly opacity: 0;
29
+ readonly y: 16;
30
+ };
31
+ readonly animate: {
32
+ readonly opacity: 1;
33
+ readonly y: 0;
34
+ };
35
+ readonly exit: {
36
+ readonly opacity: 0;
37
+ readonly y: 16;
38
+ };
39
+ readonly transition: Transition;
40
+ };
41
+ readonly fadeInDown: {
42
+ readonly initial: {
43
+ readonly opacity: 0;
44
+ readonly y: -16;
45
+ };
46
+ readonly animate: {
47
+ readonly opacity: 1;
48
+ readonly y: 0;
49
+ };
50
+ readonly exit: {
51
+ readonly opacity: 0;
52
+ readonly y: -16;
53
+ };
54
+ readonly transition: Transition;
55
+ };
56
+ readonly slideUp: {
57
+ readonly initial: {
58
+ readonly opacity: 0;
59
+ readonly y: 20;
60
+ };
61
+ readonly animate: {
62
+ readonly opacity: 1;
63
+ readonly y: 0;
64
+ };
65
+ readonly exit: {
66
+ readonly opacity: 0;
67
+ readonly y: 20;
68
+ };
69
+ readonly transition: Transition;
70
+ };
71
+ readonly slideDown: {
72
+ readonly initial: {
73
+ readonly opacity: 0;
74
+ readonly y: -20;
75
+ };
76
+ readonly animate: {
77
+ readonly opacity: 1;
78
+ readonly y: 0;
79
+ };
80
+ readonly exit: {
81
+ readonly opacity: 0;
82
+ readonly y: -20;
83
+ };
84
+ readonly transition: Transition;
85
+ };
86
+ readonly slideInLeft: {
87
+ readonly initial: {
88
+ readonly opacity: 0;
89
+ readonly x: -24;
90
+ };
91
+ readonly animate: {
92
+ readonly opacity: 1;
93
+ readonly x: 0;
94
+ };
95
+ readonly exit: {
96
+ readonly opacity: 0;
97
+ readonly x: -24;
98
+ };
99
+ readonly transition: Transition;
100
+ };
101
+ readonly slideInRight: {
102
+ readonly initial: {
103
+ readonly opacity: 0;
104
+ readonly x: 24;
105
+ };
106
+ readonly animate: {
107
+ readonly opacity: 1;
108
+ readonly x: 0;
109
+ };
110
+ readonly exit: {
111
+ readonly opacity: 0;
112
+ readonly x: 24;
113
+ };
114
+ readonly transition: Transition;
115
+ };
116
+ readonly scaleIn: {
117
+ readonly initial: {
118
+ readonly opacity: 0;
119
+ readonly scale: 0.95;
120
+ };
121
+ readonly animate: {
122
+ readonly opacity: 1;
123
+ readonly scale: 1;
124
+ };
125
+ readonly exit: {
126
+ readonly opacity: 0;
127
+ readonly scale: 0.95;
128
+ };
129
+ readonly transition: Transition;
130
+ };
131
+ readonly pressScale: {
132
+ readonly whileTap: {
133
+ readonly scale: 0.97;
134
+ };
135
+ readonly transition: {
136
+ readonly duration: 0.1;
137
+ };
138
+ };
139
+ readonly hoverLift: {
140
+ readonly whileHover: {
141
+ readonly y: -2;
142
+ };
143
+ readonly transition: Transition;
144
+ };
145
+ readonly hoverScale: {
146
+ readonly whileHover: {
147
+ readonly scale: 1.02;
148
+ };
149
+ readonly transition: Transition;
150
+ };
151
+ readonly stagger: {
152
+ readonly transition: {
153
+ readonly staggerChildren: 0.05;
154
+ };
155
+ };
156
+ readonly staggerSlow: {
157
+ readonly transition: {
158
+ readonly staggerChildren: 0.1;
159
+ };
160
+ };
161
+ };
162
+ export type MotionPreset = keyof typeof MOTION_PRESETS;
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Motion presets — reusable animation configs for motion/react components.
3
+ *
4
+ * All presets respect `prefers-reduced-motion` via the `useReducedMotion` hook
5
+ * in the consuming component wrappers (Motion.tsx).
6
+ */
7
+ export const SPRING_SNAPPY = {
8
+ type: "spring",
9
+ stiffness: 400,
10
+ damping: 30,
11
+ };
12
+ export const SPRING_GENTLE = {
13
+ type: "spring",
14
+ stiffness: 200,
15
+ damping: 25,
16
+ };
17
+ export const EASE_OUT = {
18
+ type: "tween",
19
+ ease: [0.25, 0.46, 0.45, 0.94],
20
+ duration: 0.3,
21
+ };
22
+ export const MOTION_PRESETS = {
23
+ fadeIn: {
24
+ initial: { opacity: 0 },
25
+ animate: { opacity: 1 },
26
+ exit: { opacity: 0 },
27
+ transition: { duration: 0.2 },
28
+ },
29
+ fadeInUp: {
30
+ initial: { opacity: 0, y: 16 },
31
+ animate: { opacity: 1, y: 0 },
32
+ exit: { opacity: 0, y: 16 },
33
+ transition: EASE_OUT,
34
+ },
35
+ fadeInDown: {
36
+ initial: { opacity: 0, y: -16 },
37
+ animate: { opacity: 1, y: 0 },
38
+ exit: { opacity: 0, y: -16 },
39
+ transition: EASE_OUT,
40
+ },
41
+ slideUp: {
42
+ initial: { opacity: 0, y: 20 },
43
+ animate: { opacity: 1, y: 0 },
44
+ exit: { opacity: 0, y: 20 },
45
+ transition: SPRING_SNAPPY,
46
+ },
47
+ slideDown: {
48
+ initial: { opacity: 0, y: -20 },
49
+ animate: { opacity: 1, y: 0 },
50
+ exit: { opacity: 0, y: -20 },
51
+ transition: SPRING_SNAPPY,
52
+ },
53
+ slideInLeft: {
54
+ initial: { opacity: 0, x: -24 },
55
+ animate: { opacity: 1, x: 0 },
56
+ exit: { opacity: 0, x: -24 },
57
+ transition: SPRING_SNAPPY,
58
+ },
59
+ slideInRight: {
60
+ initial: { opacity: 0, x: 24 },
61
+ animate: { opacity: 1, x: 0 },
62
+ exit: { opacity: 0, x: 24 },
63
+ transition: SPRING_SNAPPY,
64
+ },
65
+ scaleIn: {
66
+ initial: { opacity: 0, scale: 0.95 },
67
+ animate: { opacity: 1, scale: 1 },
68
+ exit: { opacity: 0, scale: 0.95 },
69
+ transition: SPRING_GENTLE,
70
+ },
71
+ pressScale: {
72
+ whileTap: { scale: 0.97 },
73
+ transition: { duration: 0.1 },
74
+ },
75
+ hoverLift: {
76
+ whileHover: { y: -2 },
77
+ transition: SPRING_SNAPPY,
78
+ },
79
+ hoverScale: {
80
+ whileHover: { scale: 1.02 },
81
+ transition: SPRING_SNAPPY,
82
+ },
83
+ stagger: {
84
+ transition: { staggerChildren: 0.05 },
85
+ },
86
+ staggerSlow: {
87
+ transition: { staggerChildren: 0.1 },
88
+ },
89
+ };
@@ -6,6 +6,7 @@ import { Button } from "./components/Button";
6
6
  import { Spinner } from "./components/Spinner";
7
7
  import { Pagination } from "./components/Pagination";
8
8
  import { Text } from "./components/Typography";
9
+ import { AnimatedList } from "./components/Motion";
9
10
  import { GRID_MAP } from "./components/Layout";
10
11
  import { Row } from "./components/Layout";
11
12
  import { mergeTableConfig, DEFAULT_PAGINATION_CONFIG } from "../contracts";
@@ -109,9 +110,9 @@ pageSize: pageSizeProp, stickyHeader: stickyHeaderProp, striped: stripedProp, sh
109
110
  const renderCardGrid = (mode) => {
110
111
  if (!mobileCardRender)
111
112
  return null;
112
- return (_jsx("div", { className: mode === "grid"
113
+ return (_jsx(AnimatedList, { className: mode === "grid"
113
114
  ? `${GRID_MAP[gridCols]} gap-6`
114
- : "flex flex-col gap-4", "data-section": "datatable-div-636", children: paginatedData.map((item) => (_jsx(SelectableCard, { id: keyExtractor(item), selectable: selectable, selected: selectedIds.includes(keyExtractor(item)), listMode: mode === "list", onToggle: (id, checked) => onSelectionChange?.(checked
115
+ : "flex flex-col gap-4", staggerDelay: 0.03, "data-section": "datatable-div-636", children: paginatedData.map((item) => (_jsx(SelectableCard, { id: keyExtractor(item), selectable: selectable, selected: selectedIds.includes(keyExtractor(item)), listMode: mode === "list", onToggle: (id, checked) => onSelectionChange?.(checked
115
116
  ? [...selectedIds, id]
116
117
  : selectedIds.filter((s) => s !== id)), children: mobileCardRender(item) }, keyExtractor(item)))) }));
117
118
  };
@@ -4,6 +4,7 @@ import { createContext, useContext, useMemo, useState } from "react";
4
4
  import { Button } from "./Button";
5
5
  import { Div } from "./Div";
6
6
  import { Span } from "./Typography";
7
+ import { Collapse } from "./Motion";
7
8
  const AccordionContext = createContext(null);
8
9
  function toArray(value) {
9
10
  if (!value)
@@ -53,5 +54,5 @@ export function AccordionItem({ value, title, disabled = false, className = "",
53
54
  throw new Error("AccordionItem must be used within Accordion.");
54
55
  }
55
56
  const isOpen = ctx.openValues.includes(value);
56
- return (_jsxs(Div, { className: `appkit-accordion__item ${className}`, children: [_jsxs(Button, { type: "button", disabled: disabled, "aria-expanded": isOpen, onClick: () => ctx.toggle(value), className: "appkit-accordion__trigger", children: [_jsx(Span, { children: title }), _jsx(Span, { className: `appkit-accordion__item-chevron ${isOpen ? "appkit-accordion__item-chevron--open" : ""}`, children: "\u25BE" })] }), isOpen && _jsx(Div, { className: "appkit-accordion__panel", children: children })] }));
57
+ return (_jsxs(Div, { className: `appkit-accordion__item ${className}`, children: [_jsxs(Button, { type: "button", disabled: disabled, "aria-expanded": isOpen, onClick: () => ctx.toggle(value), className: "appkit-accordion__trigger", children: [_jsx(Span, { children: title }), _jsx(Span, { className: `appkit-accordion__item-chevron ${isOpen ? "appkit-accordion__item-chevron--open" : ""}`, children: "\u25BE" })] }), _jsx(Collapse, { isOpen: isOpen, children: _jsx(Div, { className: "appkit-accordion__panel", children: children }) })] }));
57
58
  }
@@ -1,16 +1,19 @@
1
1
  import React from "react";
2
+ import type { SurfaceProps } from "./surface-tokens";
3
+ type CardAnimate = "hoverLift" | "pressScale" | "hoverScale" | "both";
2
4
  type CardVariant = "flat" | "outlined" | "elevated" | "default" | "primary" | "bordered" | "interactive" | "glass" | "gradient-indigo" | "gradient-teal" | "gradient-amber" | "gradient-rose" | "stat-indigo" | "stat-teal" | "stat-amber" | "stat-rose" | "stat-emerald";
3
5
  type CardPadding = "none" | "sm" | "md" | "lg";
4
- export interface CardProps {
6
+ export interface CardProps extends SurfaceProps {
5
7
  children: React.ReactNode;
6
8
  variant?: CardVariant;
7
9
  padding?: CardPadding;
8
10
  hover?: boolean;
11
+ animate?: CardAnimate;
9
12
  className?: string;
10
13
  style?: React.CSSProperties;
11
14
  onClick?: React.MouseEventHandler<HTMLDivElement>;
12
15
  }
13
- export declare function Card({ children, variant, padding, hover, className, style, onClick, }: CardProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function Card({ children, variant, padding, hover, animate, surface, rounded, border, shadow, className, style, onClick, }: CardProps): import("react/jsx-runtime").JSX.Element;
14
17
  export interface CardSectionProps {
15
18
  children: React.ReactNode;
16
19
  className?: string;
@@ -1,4 +1,8 @@
1
+ "use client";
1
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { motion, useReducedMotion } from "motion/react";
4
+ import { buildSurfaceClasses } from "./surface-tokens";
5
+ import { SPRING_SNAPPY } from "../../tokens/motion";
2
6
  const UI_CARD = {
3
7
  base: "appkit-card",
4
8
  variants: {
@@ -27,17 +31,31 @@ const UI_CARD = {
27
31
  lg: "appkit-card--pad-lg",
28
32
  },
29
33
  };
30
- export function Card({ children, variant = "flat", padding = "md", hover = false, className = "", style, onClick, }) {
31
- return (_jsx("div", { className: [
32
- UI_CARD.base,
33
- UI_CARD.variants[variant],
34
- UI_CARD.padding[padding],
35
- hover ? "appkit-card--hoverable" : "",
36
- onClick ? "appkit-card--clickable" : "",
37
- className,
38
- ]
39
- .filter(Boolean)
40
- .join(" "), style: style, onClick: onClick, "data-section": "card-div-463", children: children }));
34
+ export function Card({ children, variant = "flat", padding = "md", hover = false, animate, surface, rounded, border, shadow, className = "", style, onClick, }) {
35
+ const reduced = useReducedMotion();
36
+ const cls = [
37
+ UI_CARD.base,
38
+ UI_CARD.variants[variant],
39
+ UI_CARD.padding[padding],
40
+ hover ? "appkit-card--hoverable" : "",
41
+ onClick ? "appkit-card--clickable" : "",
42
+ buildSurfaceClasses({ surface, rounded, border, shadow }),
43
+ className,
44
+ ]
45
+ .filter(Boolean)
46
+ .join(" ");
47
+ if (animate && !reduced) {
48
+ const whileHover = animate === "hoverLift" || animate === "both"
49
+ ? { y: -2 }
50
+ : animate === "hoverScale"
51
+ ? { scale: 1.02 }
52
+ : undefined;
53
+ const whileTap = animate === "pressScale" || animate === "both"
54
+ ? { scale: 0.97 }
55
+ : undefined;
56
+ return (_jsx(motion.div, { className: cls, style: style, onClick: onClick, whileHover: whileHover, whileTap: whileTap, transition: SPRING_SNAPPY, "data-section": "card-div-463", children: children }));
57
+ }
58
+ return (_jsx("div", { className: cls, style: style, onClick: onClick, "data-section": "card-div-463", children: children }));
41
59
  }
42
60
  export function CardHeader({ children, className = "" }) {
43
61
  return (_jsx("div", { className: ["appkit-card__header", className].filter(Boolean).join(" "), "data-section": "card-div-464", children: children }));
@@ -1,20 +1,6 @@
1
1
  import React from "react";
2
- export interface DivProps extends React.HTMLAttributes<HTMLDivElement> {
2
+ import type { SurfaceProps } from "./surface-tokens";
3
+ export interface DivProps extends React.HTMLAttributes<HTMLDivElement>, SurfaceProps {
3
4
  children?: React.ReactNode;
4
5
  }
5
- /**
6
- * Semantic `<div data-section="div-div-477">` wrapper for general-purpose layout containers.
7
- *
8
- * Use when no more specific semantic element applies
9
- * (`<Section>`, `<Article>`, `<Main>`, `<Aside>` etc). Enables
10
- * future one-place theming and consistent import from `@mohasinac/appkit/ui`.
11
- *
12
- * @example
13
- * ```tsx
14
- * <Div className="flex items-center gap-4">
15
- * <Badge>New</Badge>
16
- * <Text>Product title</Text>
17
- * </Div>
18
- * ```
19
- */
20
6
  export declare const Div: React.ForwardRefExoticComponent<DivProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,19 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- /**
4
- * Semantic `<div data-section="div-div-477">` wrapper for general-purpose layout containers.
5
- *
6
- * Use when no more specific semantic element applies
7
- * (`<Section>`, `<Article>`, `<Main>`, `<Aside>` etc). Enables
8
- * future one-place theming and consistent import from `@mohasinac/appkit/ui`.
9
- *
10
- * @example
11
- * ```tsx
12
- * <Div className="flex items-center gap-4">
13
- * <Badge>New</Badge>
14
- * <Text>Product title</Text>
15
- * </Div>
16
- * ```
17
- */
18
- export const Div = React.forwardRef(({ className = "", children, ...props }, ref) => (_jsx("div", { ref: ref, className: className, ...props, "data-section": "div-div-478", children: children })));
3
+ import { buildSurfaceClasses } from "./surface-tokens";
4
+ export const Div = React.forwardRef(({ className = "", surface, padding, rounded, border, shadow, children, ...props }, ref) => (_jsx("div", { ref: ref, className: [buildSurfaceClasses({ surface, padding, rounded, border, shadow }), className].filter(Boolean).join(" "), ...props, children: children })));
19
5
  Div.displayName = "Div";
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { SurfaceProps } from "./surface-tokens";
2
3
  /**
3
4
  * Layout Primitives — Container, Stack, Row, Grid
4
5
  *
@@ -167,24 +168,13 @@ type JustifyContent = keyof typeof JUSTIFY_MAP;
167
168
  * <Container size="full" as="main">...</Container>
168
169
  * ```
169
170
  */
170
- export interface ContainerProps extends React.HTMLAttributes<HTMLElement> {
171
- /**
172
- * Max-width breakpoint preset.
173
- * - `sm` → `max-w-3xl` (blog / policy)
174
- * - `md` → `max-w-4xl` (contact / about)
175
- * - `lg` → `max-w-5xl` (checkout / help)
176
- * - `xl` → `max-w-6xl` (product detail / cart)
177
- * - `2xl` → `max-w-7xl` (main content grids — **default**)
178
- * - `full` → `max-w-screen-2xl` (full-bleed)
179
- * - `wide` → `max-w-screen-2xl` (compact px, no lg step)
180
- * - `ultra` → `max-w-[1920px]` (ultra-wide / 4K displays)
181
- */
171
+ export interface ContainerProps extends React.HTMLAttributes<HTMLElement>, SurfaceProps {
182
172
  size?: ContainerSize;
183
173
  /** Render as a different element (e.g. `"main"`, `"section"`). Defaults to `"div"`. */
184
174
  as?: React.ElementType;
185
175
  children?: React.ReactNode;
186
176
  }
187
- export declare function Container({ size, as, className, children, ...props }: ContainerProps): import("react/jsx-runtime").JSX.Element;
177
+ export declare function Container({ size, as, surface, padding, rounded, border, shadow, className, children, ...props }: ContainerProps): import("react/jsx-runtime").JSX.Element;
188
178
  /**
189
179
  * Vertical flex column. Use instead of `<div className="flex flex-col gap-4" data-section="layout-div-535">`.
190
180
  *
@@ -201,7 +191,7 @@ export declare function Container({ size, as, className, children, ...props }: C
201
191
  * </Stack>
202
192
  * ```
203
193
  */
204
- export interface StackProps extends React.HTMLAttributes<HTMLElement> {
194
+ export interface StackProps extends React.HTMLAttributes<HTMLElement>, SurfaceProps {
205
195
  /** Space between children. Defaults to `"md"` (`gap-4`). */
206
196
  gap?: GapKey;
207
197
  /** Centers children on both axes (`items-center justify-center`). */
@@ -212,7 +202,7 @@ export interface StackProps extends React.HTMLAttributes<HTMLElement> {
212
202
  as?: React.ElementType;
213
203
  children?: React.ReactNode;
214
204
  }
215
- export declare function Stack({ gap, centered, align, as, className, children, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
205
+ export declare function Stack({ gap, centered, align, as, surface, padding, rounded, border, shadow, className, children, ...props }: StackProps): import("react/jsx-runtime").JSX.Element;
216
206
  /**
217
207
  * Horizontal flex row. Use instead of `<div className="flex items-center gap-3" data-section="layout-div-536">`.
218
208
  *
@@ -229,7 +219,7 @@ export declare function Stack({ gap, centered, align, as, className, children, .
229
219
  * </Row>
230
220
  * ```
231
221
  */
232
- export interface RowProps extends React.HTMLAttributes<HTMLElement> {
222
+ export interface RowProps extends React.HTMLAttributes<HTMLElement>, SurfaceProps {
233
223
  /** Space between children. Defaults to `"md"` (`gap-4`). */
234
224
  gap?: GapKey;
235
225
  /** Centers children on both axes (`items-center justify-center`). */
@@ -244,7 +234,7 @@ export interface RowProps extends React.HTMLAttributes<HTMLElement> {
244
234
  as?: React.ElementType;
245
235
  children?: React.ReactNode;
246
236
  }
247
- export declare function Row({ gap, centered, align, justify, wrap, as, className, children, ...props }: RowProps): import("react/jsx-runtime").JSX.Element;
237
+ export declare function Row({ gap, centered, align, justify, wrap, as, surface, padding, rounded, border, shadow, className, children, ...props }: RowProps): import("react/jsx-runtime").JSX.Element;
248
238
  /**
249
239
  * Responsive CSS grid. Use instead of `<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4" data-section="layout-div-537">`.
250
240
  *
@@ -261,7 +251,7 @@ export declare function Row({ gap, centered, align, justify, wrap, as, className
261
251
  * </Grid>
262
252
  * ```
263
253
  */
264
- export interface GridProps extends React.HTMLAttributes<HTMLElement> {
254
+ export interface GridProps extends React.HTMLAttributes<HTMLElement>, SurfaceProps {
265
255
  /**
266
256
  * Column preset.
267
257
  * - Numbers `1`–`6` → mobile-first responsive stacks
@@ -280,5 +270,5 @@ export interface GridProps extends React.HTMLAttributes<HTMLElement> {
280
270
  as?: React.ElementType;
281
271
  children?: React.ReactNode;
282
272
  }
283
- export declare function Grid({ cols, gap, as, className, children, ...props }: GridProps): import("react/jsx-runtime").JSX.Element;
273
+ export declare function Grid({ cols, gap, as, surface, padding, rounded, border, shadow, className, children, ...props }: GridProps): import("react/jsx-runtime").JSX.Element;
284
274
  export {};
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildSurfaceClasses } from "./surface-tokens";
2
3
  /**
3
4
  * Layout Primitives — Container, Stack, Row, Grid
4
5
  *
@@ -142,26 +143,27 @@ const JUSTIFY_MAP = {
142
143
  around: "appkit-justify--around",
143
144
  evenly: "appkit-justify--evenly",
144
145
  };
145
- export function Container({ size = "2xl", as, className = "", children, ...props }) {
146
+ export function Container({ size = "2xl", as, surface, padding, rounded, border, shadow, className = "", children, ...props }) {
146
147
  const Tag = (as ?? "div");
147
- return (_jsx(Tag, { className: ["appkit-container", CONTAINER_MAP[size], className]
148
+ return (_jsx(Tag, { className: ["appkit-container", CONTAINER_MAP[size], buildSurfaceClasses({ surface, padding, rounded, border, shadow }), className]
148
149
  .filter(Boolean)
149
150
  .join(" "), ...props, children: children }));
150
151
  }
151
- export function Stack({ gap = "md", centered = false, align = "stretch", as, className = "", children, ...props }) {
152
+ export function Stack({ gap = "md", centered = false, align = "stretch", as, surface, padding, rounded, border, shadow, className = "", children, ...props }) {
152
153
  const Tag = (as ?? "div");
153
154
  const classes = [
154
155
  "appkit-stack",
155
156
  GAP_MAP[gap],
156
157
  centered ? "appkit-stack--centered" : "",
157
158
  !centered && align !== "stretch" ? ITEMS_MAP[align] : "",
159
+ buildSurfaceClasses({ surface, padding, rounded, border, shadow }),
158
160
  className,
159
161
  ]
160
162
  .filter(Boolean)
161
163
  .join(" ");
162
164
  return (_jsx(Tag, { className: classes, ...props, children: children }));
163
165
  }
164
- export function Row({ gap = "md", centered = false, align = "center", justify = "start", wrap = false, as, className = "", children, ...props }) {
166
+ export function Row({ gap = "md", centered = false, align = "center", justify = "start", wrap = false, as, surface, padding, rounded, border, shadow, className = "", children, ...props }) {
165
167
  const Tag = (as ?? "div");
166
168
  const classes = [
167
169
  "appkit-row",
@@ -169,17 +171,17 @@ export function Row({ gap = "md", centered = false, align = "center", justify =
169
171
  !centered && justify !== "start" ? JUSTIFY_MAP[justify] : "",
170
172
  GAP_MAP[gap],
171
173
  wrap ? "appkit-row--wrap" : "",
174
+ buildSurfaceClasses({ surface, padding, rounded, border, shadow }),
172
175
  className,
173
176
  ]
174
177
  .filter(Boolean)
175
178
  .join(" ");
176
179
  return (_jsx(Tag, { className: classes, ...props, children: children }));
177
180
  }
178
- export function Grid({ cols, gap = "md", as, className = "", children, ...props }) {
181
+ export function Grid({ cols, gap = "md", as, surface, padding, rounded, border, shadow, className = "", children, ...props }) {
179
182
  const Tag = (as ?? "div");
180
- // When cols is omitted callers supply grid-cols-* themselves via className.
181
183
  const baseClass = cols !== undefined ? GRID_MAP[cols] : "appkit-grid";
182
- const classes = [baseClass, GAP_MAP[gap], className]
184
+ const classes = [baseClass, GAP_MAP[gap], buildSurfaceClasses({ surface, padding, rounded, border, shadow }), className]
183
185
  .filter(Boolean)
184
186
  .join(" ");
185
187
  return (_jsx(Tag, { className: classes, ...props, children: children }));
@@ -2,8 +2,10 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import { createPortal } from "react-dom";
5
+ import { motion, AnimatePresence, useReducedMotion } from "motion/react";
5
6
  import { Heading } from "./Typography";
6
7
  import { Button } from "./Button";
8
+ import { SPRING_GENTLE } from "../../tokens/motion";
7
9
  const SIZE_CLASSES = {
8
10
  sm: "appkit-modal__panel--sm",
9
11
  md: "appkit-modal__panel--md",
@@ -61,12 +63,13 @@ export function Modal({ isOpen, open, onClose, title, children, size = "md", sho
61
63
  first.focus();
62
64
  }
63
65
  };
64
- if (!visible || typeof document === "undefined") {
66
+ const reduced = useReducedMotion();
67
+ if (typeof document === "undefined") {
65
68
  return null;
66
69
  }
67
- return createPortal(_jsxs("div", { className: "appkit-modal", role: "dialog", "aria-modal": "true", "aria-labelledby": title ? titleId : undefined, onKeyDown: handleKeyDown, "data-section": "modal-div-561", children: [_jsx("div", { className: "appkit-modal__backdrop", "aria-hidden": "true", onClick: onClose }), _jsxs("div", { ref: panelRef, tabIndex: -1, className: ["appkit-modal__panel", SIZE_CLASSES[size], className]
68
- .filter(Boolean)
69
- .join(" "), "data-section": "modal-div-562", children: [(title || showCloseButton) && (_jsxs("div", { className: "appkit-modal__header", "data-section": "modal-div-563", children: [title ? (_jsx(Heading, { level: 2, id: titleId, className: "appkit-modal__title", children: title })) : (_jsx("span", {})), showCloseButton ? (_jsx(Button, { variant: "ghost", size: "sm", type: "button", onClick: onClose, className: "appkit-modal__close", "aria-label": "Close", children: _jsx("span", { className: "appkit-modal__close-icon", "aria-hidden": "true", children: "\u00D7" }) })) : null] })), _jsx("div", { className: "appkit-modal__body", "data-section": "modal-div-564", children: children }), actions ? _jsx(ModalFooter, { children: actions }) : null] })] }), document.body);
70
+ return createPortal(_jsx(AnimatePresence, { children: visible && (_jsxs(motion.div, { className: "appkit-modal", role: "dialog", "aria-modal": "true", "aria-labelledby": title ? titleId : undefined, onKeyDown: handleKeyDown, initial: reduced ? false : { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.15 }, "data-section": "modal-div-561", children: [_jsx("div", { className: "appkit-modal__backdrop", "aria-hidden": "true", onClick: onClose }), _jsxs(motion.div, { ref: panelRef, tabIndex: -1, className: ["appkit-modal__panel", SIZE_CLASSES[size], className]
71
+ .filter(Boolean)
72
+ .join(" "), initial: reduced ? false : { opacity: 0, scale: 0.95, y: 8 }, animate: { opacity: 1, scale: 1, y: 0 }, exit: { opacity: 0, scale: 0.95, y: 8 }, transition: SPRING_GENTLE, "data-section": "modal-div-562", children: [(title || showCloseButton) && (_jsxs("div", { className: "appkit-modal__header", "data-section": "modal-div-563", children: [title ? (_jsx(Heading, { level: 2, id: titleId, className: "appkit-modal__title", children: title })) : (_jsx("span", {})), showCloseButton ? (_jsx(Button, { variant: "ghost", size: "sm", type: "button", onClick: onClose, className: "appkit-modal__close", "aria-label": "Close", children: _jsx("span", { className: "appkit-modal__close-icon", "aria-hidden": "true", children: "\u00D7" }) })) : null] })), _jsx("div", { className: "appkit-modal__body", "data-section": "modal-div-564", children: children }), actions ? _jsx(ModalFooter, { children: actions }) : null] })] })) }), document.body);
70
73
  }
71
74
  export function ModalFooter({ children, className = "", }) {
72
75
  return (_jsx("div", { className: [
@@ -0,0 +1,75 @@
1
+ import React from "react";
2
+ import type { HTMLMotionProps } from "motion/react";
3
+ export declare const AnimatePresence: ({ children, custom, initial, onExitComplete, presenceAffectsLayout, mode, propagate, anchorX, anchorY, root }: React.PropsWithChildren<import("framer-motion").AnimatePresenceProps>) => import("react/jsx-runtime").JSX.Element | null;
4
+ export interface FadeInProps extends Omit<HTMLMotionProps<"div">, "ref"> {
5
+ delay?: number;
6
+ duration?: number;
7
+ children: React.ReactNode;
8
+ }
9
+ export declare function FadeIn({ delay, duration, children, ...props }: FadeInProps): import("react/jsx-runtime").JSX.Element;
10
+ export interface SlideUpProps extends Omit<HTMLMotionProps<"div">, "ref"> {
11
+ delay?: number;
12
+ distance?: number;
13
+ children: React.ReactNode;
14
+ }
15
+ export declare function SlideUp({ delay, distance, children, ...props }: SlideUpProps): import("react/jsx-runtime").JSX.Element;
16
+ export interface SlideInProps extends Omit<HTMLMotionProps<"div">, "ref"> {
17
+ direction?: "left" | "right" | "up" | "down";
18
+ delay?: number;
19
+ distance?: number;
20
+ children: React.ReactNode;
21
+ }
22
+ export declare function SlideIn({ direction, delay, distance, children, ...props }: SlideInProps): import("react/jsx-runtime").JSX.Element;
23
+ export interface ScaleInProps extends Omit<HTMLMotionProps<"div">, "ref"> {
24
+ delay?: number;
25
+ children: React.ReactNode;
26
+ }
27
+ export declare function ScaleIn({ delay, children, ...props }: ScaleInProps): import("react/jsx-runtime").JSX.Element;
28
+ export interface CollapseProps extends Omit<HTMLMotionProps<"div">, "ref"> {
29
+ isOpen: boolean;
30
+ children: React.ReactNode;
31
+ }
32
+ export declare function Collapse({ isOpen, children, ...props }: CollapseProps): import("react/jsx-runtime").JSX.Element;
33
+ export interface PressScaleProps extends Omit<HTMLMotionProps<"div">, "ref"> {
34
+ scale?: number;
35
+ children: React.ReactNode;
36
+ }
37
+ export declare function PressScale({ scale, children, ...props }: PressScaleProps): import("react/jsx-runtime").JSX.Element;
38
+ export interface HoverLiftProps extends Omit<HTMLMotionProps<"div">, "ref"> {
39
+ lift?: number;
40
+ children: React.ReactNode;
41
+ }
42
+ export declare function HoverLift({ lift, children, ...props }: HoverLiftProps): import("react/jsx-runtime").JSX.Element;
43
+ export interface AnimatedListProps extends Omit<HTMLMotionProps<"div">, "ref"> {
44
+ staggerDelay?: number;
45
+ children: React.ReactNode;
46
+ }
47
+ export declare function AnimatedList({ staggerDelay, children, ...props }: AnimatedListProps): import("react/jsx-runtime").JSX.Element;
48
+ export interface AnimatedDivProps extends Omit<HTMLMotionProps<"div">, "ref"> {
49
+ delay?: number;
50
+ children?: React.ReactNode;
51
+ }
52
+ export declare function AnimatedDiv({ delay, children, ...props }: AnimatedDivProps): import("react/jsx-runtime").JSX.Element;
53
+ export type AnimatedStackProps = AnimatedDivProps;
54
+ export declare function AnimatedStack({ delay, children, className, ...props }: AnimatedStackProps): import("react/jsx-runtime").JSX.Element;
55
+ export type AnimatedRowProps = AnimatedDivProps;
56
+ export declare function AnimatedRow({ delay, children, className, ...props }: AnimatedRowProps): import("react/jsx-runtime").JSX.Element;
57
+ export interface DraggableProps extends Omit<HTMLMotionProps<"div">, "ref"> {
58
+ axis?: "x" | "y" | boolean;
59
+ constraints?: {
60
+ top?: number;
61
+ right?: number;
62
+ bottom?: number;
63
+ left?: number;
64
+ } | React.RefObject<HTMLElement | null>;
65
+ dragElastic?: number;
66
+ children: React.ReactNode;
67
+ }
68
+ export declare function Draggable({ axis, constraints, dragElastic, children, ...props }: DraggableProps): import("react/jsx-runtime").JSX.Element;
69
+ export interface SwipeableProps extends Omit<HTMLMotionProps<"div">, "ref"> {
70
+ onSwipeLeft?: () => void;
71
+ onSwipeRight?: () => void;
72
+ threshold?: number;
73
+ children: React.ReactNode;
74
+ }
75
+ export declare function Swipeable({ onSwipeLeft, onSwipeRight, threshold, children, ...props }: SwipeableProps): import("react/jsx-runtime").JSX.Element;