@mohasinac/appkit 3.0.2 → 3.0.4

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 (268) hide show
  1. package/dist/_internal/client/features/filters/filter-load-options.js +11 -1
  2. package/dist/_internal/client/features/layout/filterNavItems.js +0 -1
  3. package/dist/_internal/client/features/layout/index.js +0 -1
  4. package/dist/_internal/client/features/maintenance/views/MaintenanceDashboardView.js +0 -1
  5. package/dist/_internal/client/features/maintenance/views/ServerErrorDetailView.js +0 -1
  6. package/dist/_internal/server/features/checkout/actions.js +9 -9
  7. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +1 -1
  8. package/dist/_internal/shared/listing-types/action-tracker.js +1 -1
  9. package/dist/client/api/ApiError.d.ts +10 -4
  10. package/dist/client/api/surface-error.js +0 -1
  11. package/dist/client.d.ts +4 -0
  12. package/dist/client.js +2 -0
  13. package/dist/core/hooks/useSyncManager.js +4 -4
  14. package/dist/features/_guide-cls.d.ts +1 -1
  15. package/dist/features/_guide-cls.js +1 -1
  16. package/dist/features/about/components/AboutView.js +1 -4
  17. package/dist/features/about/components/FAQPageView.js +1 -1
  18. package/dist/features/about/components/FeesView.js +1 -1
  19. package/dist/features/about/components/HelpPageView.js +1 -1
  20. package/dist/features/about/components/HowOrdersWorkView.js +1 -1
  21. package/dist/features/about/components/PublicProfileView.js +6 -6
  22. package/dist/features/about/components/TrackOrderView.js +1 -1
  23. package/dist/features/account/components/AddressBook.js +1 -1
  24. package/dist/features/account/components/AddressForm.js +10 -2
  25. package/dist/features/account/components/AddressesIndexListing.js +1 -1
  26. package/dist/features/account/components/BuyerAccountGuideView.js +1 -1
  27. package/dist/features/account/components/BuyerAuctionsGuideView.js +1 -1
  28. package/dist/features/account/components/BuyerOrdersGuideView.js +1 -1
  29. package/dist/features/account/components/BuyerShoppingGuideView.js +1 -1
  30. package/dist/features/account/components/ChatWindow.js +1 -1
  31. package/dist/features/account/components/MessagesView.js +1 -1
  32. package/dist/features/account/components/NotificationBell.js +25 -10
  33. package/dist/features/account/components/NotificationPreferencesPanel.js +2 -2
  34. package/dist/features/account/components/UserOffersPanel.js +1 -0
  35. package/dist/features/account/components/UserSidebar.js +1 -6
  36. package/dist/features/account/components/UserSupportView.js +1 -1
  37. package/dist/features/admin/components/AdminAnalyticsGuideView.js +2 -2
  38. package/dist/features/admin/components/AdminBlogEditorView.js +1 -1
  39. package/dist/features/admin/components/AdminBundlesView.js +1 -1
  40. package/dist/features/admin/components/AdminCarouselEditorView.js +1 -1
  41. package/dist/features/admin/components/AdminCatalogGuideView.js +2 -2
  42. package/dist/features/admin/components/AdminContentGuideView.js +2 -2
  43. package/dist/features/admin/components/AdminEmployeeEditorView.js +2 -2
  44. package/dist/features/admin/components/AdminGuideHubView.js +1 -5
  45. package/dist/features/admin/components/AdminMediaView.js +1 -1
  46. package/dist/features/admin/components/AdminNavigationView.js +1 -1
  47. package/dist/features/admin/components/AdminOrdersGuideView.js +3 -3
  48. package/dist/features/admin/components/AdminPayoutsView.js +1 -4
  49. package/dist/features/admin/components/AdminSidebar.js +1 -6
  50. package/dist/features/admin/components/AdminSiteConfigGuideView.js +1 -1
  51. package/dist/features/admin/components/AdminSiteSettingsView.js +9 -1
  52. package/dist/features/admin/components/AdminStoreEditorView.js +1 -1
  53. package/dist/features/admin/components/AdminStoresGuideView.js +2 -2
  54. package/dist/features/admin/components/AdminSupportTicketDetailView.js +7 -7
  55. package/dist/features/admin/components/AdminTeamGuideView.js +2 -2
  56. package/dist/features/admin/components/AdminTrustGuideView.js +3 -3
  57. package/dist/features/admin/components/AdminUsersGuideView.js +3 -3
  58. package/dist/features/admin/components/DashboardStats.js +6 -5
  59. package/dist/features/admin/components/DataTable.js +2 -2
  60. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +4 -6
  61. package/dist/features/admin/components/analytics/AdminStatCard.js +4 -3
  62. package/dist/features/admin/components/analytics/AdminTopProductsTable.js +1 -1
  63. package/dist/features/auctions/components/AuctionBidsTable.js +1 -1
  64. package/dist/features/auctions/components/AuctionDetailPageView.js +1 -1
  65. package/dist/features/auctions/components/MarketplaceAuctionCard.js +3 -3
  66. package/dist/features/auth/components/ForgotPasswordView.js +19 -8
  67. package/dist/features/auth/components/LoginForm.js +10 -2
  68. package/dist/features/auth/components/RegisterForm.js +10 -2
  69. package/dist/features/auth/components/ResetPasswordView.js +19 -8
  70. package/dist/features/auth/components/SocialAuthButtons.js +1 -1
  71. package/dist/features/before-after/components/BeforeAfterSlider.js +1 -1
  72. package/dist/features/blog/api/[slug]/route.js +1 -1
  73. package/dist/features/blog/components/BlogFeaturedCard.js +1 -1
  74. package/dist/features/blog/components/BlogListView.js +1 -1
  75. package/dist/features/blog/components/BlogPostView.js +1 -1
  76. package/dist/features/blog/schemas/index.d.ts +2 -2
  77. package/dist/features/cart/components/CartDrawer.js +2 -2
  78. package/dist/features/cart/components/CartView.js +1 -1
  79. package/dist/features/cart/components/CheckoutView.js +1 -1
  80. package/dist/features/categories/components/BrandDetailPageView.js +2 -1
  81. package/dist/features/categories/components/BundleDetailView.js +1 -1
  82. package/dist/features/categories/components/BundleItemsPicker.js +1 -1
  83. package/dist/features/categories/components/CategoryBundlesListing.js +3 -1
  84. package/dist/features/categories/components/CategoryDetailPageView.js +1 -1
  85. package/dist/features/categories/components/CategoryGrid.js +2 -1
  86. package/dist/features/categories/components/CategoryTableColumns.js +5 -2
  87. package/dist/features/categories/components/CategoryTree.js +3 -2
  88. package/dist/features/categories/components/ConcernCard.js +1 -1
  89. package/dist/features/categories/schemas/index.d.ts +2 -2
  90. package/dist/features/checkout/components/CheckoutStepper.js +1 -1
  91. package/dist/features/collections/components/CollectionCard.js +1 -1
  92. package/dist/features/contact/components/ContactPageView.js +27 -27
  93. package/dist/features/contact/email.d.ts +1 -0
  94. package/dist/features/contact/email.js +17 -5
  95. package/dist/features/copilot/components/AdminCopilotView.js +3 -3
  96. package/dist/features/email/primitives.d.ts +4 -0
  97. package/dist/features/email/primitives.js +4 -0
  98. package/dist/features/events/components/EventCard.js +2 -2
  99. package/dist/features/events/components/EventOfferCard.js +1 -1
  100. package/dist/features/events/components/EventRaffleEntryForm.js +1 -1
  101. package/dist/features/events/components/EventRaffleWinnerView.js +2 -2
  102. package/dist/features/events/components/EventSaleBanner.js +0 -1
  103. package/dist/features/events/schemas/index.d.ts +2 -2
  104. package/dist/features/faq/components/ContactCTA.js +1 -1
  105. package/dist/features/faq/components/FAQAccordion.js +2 -2
  106. package/dist/features/faq/components/FAQCategorySidebar.js +2 -2
  107. package/dist/features/faq/components/FAQHelpfulButtons.js +2 -2
  108. package/dist/features/faq/components/RelatedFAQs.js +1 -1
  109. package/dist/features/faq/schemas/index.d.ts +2 -2
  110. package/dist/features/filters/AsyncFacetSection.js +3 -3
  111. package/dist/features/filters/FilterFacetSection.js +6 -6
  112. package/dist/features/filters/RangeFilter.js +2 -2
  113. package/dist/features/filters/SwitchFilter.js +1 -1
  114. package/dist/features/forms/Checkbox.js +1 -1
  115. package/dist/features/forms/Slider.js +7 -2
  116. package/dist/features/forms/utils.d.ts +2 -2
  117. package/dist/features/forms/utils.js +2 -2
  118. package/dist/features/history/hooks/useHistory.js +1 -1
  119. package/dist/features/homepage/components/AdSlot.js +3 -3
  120. package/dist/features/homepage/components/AdvertisementBanner.js +5 -4
  121. package/dist/features/homepage/components/BeforeAfterCard.js +9 -1
  122. package/dist/features/homepage/components/CharacterHotspot.js +42 -49
  123. package/dist/features/homepage/components/CharacterHotspotForm.js +18 -20
  124. package/dist/features/homepage/components/CollectionCardsSection.js +2 -2
  125. package/dist/features/homepage/components/CustomCardsSection.js +3 -6
  126. package/dist/features/homepage/components/CustomerReviewsSection.js +1 -1
  127. package/dist/features/homepage/components/FAQSection.js +2 -2
  128. package/dist/features/homepage/components/FeaturedResultsSection.js +1 -1
  129. package/dist/features/homepage/components/GoogleReviewsSection.js +4 -4
  130. package/dist/features/homepage/components/HeroBanner.js +12 -63
  131. package/dist/features/homepage/components/HeroCarousel.js +6 -6
  132. package/dist/features/homepage/components/HeroSection.js +1 -1
  133. package/dist/features/homepage/components/HowItWorksInfoView.js +1 -1
  134. package/dist/features/homepage/components/HowItWorksSection.js +5 -3
  135. package/dist/features/homepage/components/NewsletterBanner.js +3 -7
  136. package/dist/features/homepage/components/PromoGrid.js +2 -26
  137. package/dist/features/homepage/components/SectionCarousel.js +1 -1
  138. package/dist/features/homepage/components/SecurityHighlightsSection.js +6 -3
  139. package/dist/features/homepage/components/ShopByCategorySection.js +3 -3
  140. package/dist/features/homepage/components/SiteFeaturesSection.js +1 -1
  141. package/dist/features/homepage/components/SocialPostCard.js +2 -3
  142. package/dist/features/homepage/components/StatsCounterSection.js +6 -3
  143. package/dist/features/homepage/components/TestimonialsCarousel.js +2 -25
  144. package/dist/features/homepage/components/TrustBadges.js +1 -9
  145. package/dist/features/homepage/components/TrustFeaturesSection.js +6 -3
  146. package/dist/features/homepage/components/TrustIndicatorsSection.js +1 -1
  147. package/dist/features/homepage/components/WelcomeSection.js +2 -2
  148. package/dist/features/homepage/components/WhatsAppCommunitySection.js +1 -1
  149. package/dist/features/homepage/lib/franchise-colors.d.ts +7 -0
  150. package/dist/features/homepage/lib/franchise-colors.js +7 -0
  151. package/dist/features/homepage/lib/live-stats.js +5 -5
  152. package/dist/features/layout/AppLayoutShell.js +7 -9
  153. package/dist/features/layout/BottomNavbar.js +1 -2
  154. package/dist/features/messages/hooks/useConversation.js +2 -1
  155. package/dist/features/messages/hooks/useConversations.js +1 -0
  156. package/dist/features/orders/components/OrdersList.js +1 -1
  157. package/dist/features/orders/components/RefundHistoryTable.d.ts +6 -0
  158. package/dist/features/orders/components/RefundHistoryTable.js +3 -2
  159. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +2 -2
  160. package/dist/features/pre-orders/components/PreOrderBadge.js +1 -1
  161. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +2 -1
  162. package/dist/features/products/components/CompareOverlay.js +11 -8
  163. package/dist/features/products/components/CustomSectionTabContent.js +1 -1
  164. package/dist/features/products/components/FeatureBadge.js +11 -1
  165. package/dist/features/products/components/GroupSettingsPanel.js +2 -2
  166. package/dist/features/products/components/MarketplaceBundleCard.js +1 -1
  167. package/dist/features/products/components/MarketplacePrizeDrawCard.js +2 -2
  168. package/dist/features/products/components/PrizeDrawItemsEditor.js +1 -1
  169. package/dist/features/products/components/PrizeDrawsIndexListing.js +1 -1
  170. package/dist/features/products/components/ProductCardMetadataSection.js +0 -1
  171. package/dist/features/products/components/ProductDetailPageView.js +1 -1
  172. package/dist/features/products/components/ProductFeatureBadges.js +1 -1
  173. package/dist/features/products/components/ProductGalleryClient.js +1 -1
  174. package/dist/features/products/components/ProductGrid.js +7 -7
  175. package/dist/features/products/components/ShareButton.js +1 -1
  176. package/dist/features/products/components/ShowGroupSection.js +7 -5
  177. package/dist/features/products/components/SublistingCarouselSection.js +2 -2
  178. package/dist/features/products/schemas/index.d.ts +2 -2
  179. package/dist/features/promotions/components/CouponCard.js +2 -2
  180. package/dist/features/promotions/schemas/index.d.ts +2 -2
  181. package/dist/features/reviews/components/ReviewDetailShell.js +3 -3
  182. package/dist/features/reviews/components/ReviewModal.js +2 -4
  183. package/dist/features/reviews/components/ReviewSummary.js +3 -2
  184. package/dist/features/reviews/components/ReviewsList.js +1 -1
  185. package/dist/features/scams/actions/scam-actions.js +1 -1
  186. package/dist/features/scams/components/ScamProfileView.js +1 -1
  187. package/dist/features/search/components/Search.js +2 -2
  188. package/dist/features/search/components/SearchFiltersRow.js +1 -1
  189. package/dist/features/search/schemas/index.d.ts +1 -1
  190. package/dist/features/seller/components/PhysicalLocationModal.js +2 -3
  191. package/dist/features/seller/components/SellerAddressesView.js +2 -1
  192. package/dist/features/seller/components/SellerAnalyticsAlertsView.js +1 -1
  193. package/dist/features/seller/components/SellerBidsView.js +1 -1
  194. package/dist/features/seller/components/SellerCouponEditorView.js +1 -1
  195. package/dist/features/seller/components/SellerGoogleReviewsView.js +1 -1
  196. package/dist/features/seller/components/SellerLiveView.js +1 -1
  197. package/dist/features/seller/components/SellerOffersPanel.js +1 -0
  198. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  199. package/dist/features/seller/components/SellerPayoutMethodsView.js +8 -2
  200. package/dist/features/seller/components/SellerPayoutRequestView.js +1 -1
  201. package/dist/features/seller/components/SellerPayoutSettingsView.js +1 -1
  202. package/dist/features/seller/components/SellerProductShell.js +2 -2
  203. package/dist/features/seller/components/SellerProductsCards.js +1 -1
  204. package/dist/features/seller/components/SellerProductsView.js +1 -1
  205. package/dist/features/seller/components/SellerReviewsView.js +2 -1
  206. package/dist/features/seller/components/SellerShippingConfigsView.js +9 -3
  207. package/dist/features/seller/components/SellerShippingView.js +1 -1
  208. package/dist/features/seller/components/SellerSidebar.js +3 -8
  209. package/dist/features/seller/components/SellerStoreCategoriesView.js +11 -3
  210. package/dist/features/seller/components/SellerTemplatesView.js +8 -2
  211. package/dist/features/seller/components/analytics/SellerRevenueChart.js +1 -1
  212. package/dist/features/seller/components/analytics/SellerTopProducts.js +1 -1
  213. package/dist/features/seller/schemas/index.d.ts +2 -2
  214. package/dist/features/shell/FormShell.js +2 -2
  215. package/dist/features/shell/QuickFormDrawer.js +1 -1
  216. package/dist/features/site-settings/components/NavPermissionsManager.js +1 -1
  217. package/dist/features/stores/components/StoreCapabilitiesGuideView.js +1 -1
  218. package/dist/features/stores/components/StoreGuideHubView.js +2 -9
  219. package/dist/features/stores/components/StoreHeader.js +1 -1
  220. package/dist/features/stores/components/StoreListingsGuideView.js +4 -4
  221. package/dist/features/stores/components/StoreOrdersGuideView.js +2 -2
  222. package/dist/features/stores/components/StoresIndexListing.js +1 -1
  223. package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +2 -2
  224. package/dist/features/wishlist/components/WishlistPage.js +1 -1
  225. package/dist/features/wishlist/components/WishlistToggleButton.js +3 -3
  226. package/dist/features/wishlist/hooks/useWishlistCount.js +1 -1
  227. package/dist/http/ApiClient.d.ts +1 -0
  228. package/dist/http/ApiClient.js +20 -0
  229. package/dist/monitoring/error-tracking.d.ts +0 -3
  230. package/dist/monitoring/error-tracking.js +1 -1
  231. package/dist/monitoring/server-logger.js +3 -3
  232. package/dist/next/components/GlobalError.js +1 -1
  233. package/dist/react/ErrorBoundary.js +1 -1
  234. package/dist/styles.css +45 -7
  235. package/dist/tailwind-utilities.css +1 -1
  236. package/dist/tokens/themes/default-light.js +3 -0
  237. package/dist/tokens/tokens.css +43 -6
  238. package/dist/ui/components/Anchor.d.ts +8 -1
  239. package/dist/ui/components/Anchor.js +16 -2
  240. package/dist/ui/components/Button.d.ts +5 -2
  241. package/dist/ui/components/Button.js +5 -2
  242. package/dist/ui/components/Details.d.ts +33 -2
  243. package/dist/ui/components/Details.js +73 -4
  244. package/dist/ui/components/Div.d.ts +3 -0
  245. package/dist/ui/components/Div.js +12 -1
  246. package/dist/ui/components/DynamicBgDiv.d.ts +13 -0
  247. package/dist/ui/components/DynamicBgDiv.js +18 -0
  248. package/dist/ui/components/Form.d.ts +3 -19
  249. package/dist/ui/components/Form.js +8 -1
  250. package/dist/ui/components/Layout.d.ts +12 -1
  251. package/dist/ui/components/Layout.js +9 -1
  252. package/dist/ui/components/Progress.d.ts +1 -1
  253. package/dist/ui/components/Progress.js +1 -0
  254. package/dist/ui/components/Progress.style.css +1 -0
  255. package/dist/ui/components/ProgressBarFill.d.ts +6 -0
  256. package/dist/ui/components/ProgressBarFill.js +11 -0
  257. package/dist/ui/components/Semantic.d.ts +26 -7
  258. package/dist/ui/components/Semantic.js +33 -8
  259. package/dist/ui/components/TextLink.d.ts +36 -1
  260. package/dist/ui/components/TextLink.js +30 -2
  261. package/dist/ui/components/Typography.d.ts +26 -6
  262. package/dist/ui/components/Typography.js +37 -13
  263. package/dist/ui/components/VacationBanner.js +0 -1
  264. package/dist/ui/components/surface-tokens.d.ts +12 -2
  265. package/dist/ui/components/surface-tokens.js +19 -1
  266. package/dist/ui/rich-text/RichText.js +1 -1
  267. package/dist/validation/schemas.d.ts +1 -1
  268. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { SurfaceProps } from "./surface-tokens";
2
+ import type { SurfaceProps, RoundedKey, PaddingKey, BorderKey, SurfaceKey } from "./surface-tokens";
3
3
  /**
4
4
  * Semantic HTML Wrapper Components
5
5
  *
@@ -170,6 +170,7 @@ export type ListSize = "xs" | "sm" | "base" | "lg";
170
170
  export type ListColor = "default" | "primary" | "muted" | "faint";
171
171
  type UlPaddingX = "none" | "x-xs" | "x-sm" | "x-md" | "x-lg";
172
172
  type UlPaddingY = "none" | "y-2xs" | "y-xs" | "y-sm" | "y-md" | "y-lg" | "y-bottom-xs";
173
+ type UlGap = "none" | "1" | "2" | "3" | "4" | "6";
173
174
  export interface UlProps extends React.HTMLAttributes<HTMLUListElement> {
174
175
  /** Marker style — replaces consumer `list-disc`/`list-none` className. */
175
176
  marker?: ListMarker;
@@ -185,6 +186,10 @@ export interface UlProps extends React.HTMLAttributes<HTMLUListElement> {
185
186
  size?: ListSize;
186
187
  /** Colour variant cascaded onto list items. */
187
188
  color?: ListColor;
189
+ /** Border radius — replaces consumer `rounded-*` className. */
190
+ rounded?: RoundedKey;
191
+ /** Gap between items (for grid/flex list shells). */
192
+ gap?: UlGap;
188
193
  children: React.ReactNode;
189
194
  }
190
195
  export declare const Ul: React.ForwardRefExoticComponent<UlProps & React.RefAttributes<HTMLUListElement>>;
@@ -229,9 +234,17 @@ export interface LiProps extends React.LiHTMLAttributes<HTMLLIElement> {
229
234
  textSize?: LiTextSize;
230
235
  /** Cascaded text colour. */
231
236
  color?: LiColor;
237
+ /** Padding — replaces consumer `p-*` / `px-* py-*` className. */
238
+ padding?: PaddingKey;
239
+ /** Border radius — replaces consumer `rounded-*` className. */
240
+ rounded?: RoundedKey;
241
+ /** Border style — replaces consumer `border border-*` className. */
242
+ border?: BorderKey;
243
+ /** Background surface — replaces consumer `bg-*` className. */
244
+ surface?: SurfaceKey;
232
245
  children: React.ReactNode;
233
246
  }
234
- export declare function Li({ layout, gap, textSize, color, className, children, ...props }: LiProps): import("react/jsx-runtime").JSX.Element;
247
+ export declare function Li({ layout, gap, textSize, color, padding, rounded, border, surface, className, children, ...props }: LiProps): import("react/jsx-runtime").JSX.Element;
235
248
  type TableVariant = "default" | "striped" | "bordered";
236
249
  type TableSize = "sm" | "md" | "lg";
237
250
  export interface TableProps extends Omit<React.TableHTMLAttributes<HTMLTableElement>, "border">, SurfaceProps {
@@ -249,9 +262,13 @@ export interface TheadProps extends React.HTMLAttributes<HTMLTableSectionElement
249
262
  }
250
263
  export declare function Thead({ surface, className, children, ...props }: TheadProps): import("react/jsx-runtime").JSX.Element;
251
264
  export interface TbodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {
265
+ /** Cascaded typography size for all cells in this tbody. */
266
+ size?: CellTypographySize;
267
+ /** Cascaded text colour for all cells in this tbody. */
268
+ color?: CellColor;
252
269
  children: React.ReactNode;
253
270
  }
254
- export declare function Tbody({ className, children, ...props }: TbodyProps): import("react/jsx-runtime").JSX.Element;
271
+ export declare function Tbody({ className, size, color, children, ...props }: TbodyProps): import("react/jsx-runtime").JSX.Element;
255
272
  type TrBorder = "none" | "default" | "subtle" | "strong";
256
273
  type TrSurface = "none" | "default" | "muted" | "subtle";
257
274
  export interface TrProps extends React.HTMLAttributes<HTMLTableRowElement> {
@@ -268,7 +285,7 @@ type CellPadding = "none" | "xs" | "xs-tall" | "xs-3" | "sm" | "sm-tall" | "md"
268
285
  type CellColor = "default" | "primary" | "muted" | "faint" | "success" | "warning" | "error" | "info";
269
286
  type CellPaddingX = "none" | "xs" | "sm" | "md" | "lg";
270
287
  type CellPaddingY = "none" | "2xs" | "xs" | "sm" | "md";
271
- type CellPaddingSide = "none" | "pr-md" | "pl-md" | "pr-lg" | "pl-lg" | "pt-md" | "pb-md";
288
+ type CellPaddingSide = "none" | "pr-sm" | "pb-sm" | "pr-md" | "pl-md" | "pr-lg" | "pl-lg" | "pt-md" | "pb-md";
272
289
  export interface ThProps extends React.ThHTMLAttributes<HTMLTableCellElement> {
273
290
  align?: CellAlign;
274
291
  size?: CellTypographySize;
@@ -303,15 +320,17 @@ type CodeSize = "xs" | "sm" | "base";
303
320
  type CodePadding = "none" | "xs" | "sm" | "inline";
304
321
  type CodeRounded = "none" | "default" | "sm" | "md" | "lg";
305
322
  type CodeSurface = "none" | "muted" | "subtle" | "default";
323
+ type CodeWeight = "normal" | "medium" | "semibold" | "bold";
306
324
  export interface CodeProps extends React.HTMLAttributes<HTMLElement> {
307
- color?: "default" | "primary" | "error" | "success";
325
+ color?: "default" | "primary" | "error" | "success" | "muted" | "faint";
326
+ weight?: CodeWeight;
308
327
  size?: CodeSize;
309
328
  padding?: CodePadding;
310
329
  rounded?: CodeRounded;
311
330
  surface?: CodeSurface;
312
331
  children: React.ReactNode;
313
332
  }
314
- export declare function Code({ color, size, padding, rounded, surface, className, children, ...props }: CodeProps): import("react/jsx-runtime").JSX.Element;
333
+ export declare function Code({ color, weight, size, padding, rounded, surface, className, children, ...props }: CodeProps): import("react/jsx-runtime").JSX.Element;
315
334
  export interface PreProps extends React.HTMLAttributes<HTMLPreElement>, SurfaceProps {
316
335
  children: React.ReactNode;
317
336
  }
@@ -320,7 +339,7 @@ export interface BlockquoteProps extends React.BlockquoteHTMLAttributes<HTMLQuot
320
339
  color?: "default" | "primary" | "info" | "warning";
321
340
  children: React.ReactNode;
322
341
  }
323
- export declare function Blockquote({ color, className, surface, padding, rounded, border, shadow, children, ...props }: BlockquoteProps): import("react/jsx-runtime").JSX.Element;
342
+ export declare function Blockquote({ color, className, surface, padding, paddingX, paddingY, rounded, border, shadow, children, ...props }: BlockquoteProps): import("react/jsx-runtime").JSX.Element;
324
343
  export interface FigureProps extends React.HTMLAttributes<HTMLElement>, SurfaceProps {
325
344
  children: React.ReactNode;
326
345
  }
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import React from "react";
3
- import { buildSurfaceClasses } from "./surface-tokens";
3
+ import { buildSurfaceClasses, ROUNDED_MAP, PADDING_MAP, BORDER_MAP, SURFACE_MAP } from "./surface-tokens";
4
4
  const SECTION_TONE_MAP = {
5
5
  plain: "",
6
6
  "page-header": "appkit-section--tone-page-header",
@@ -167,7 +167,15 @@ const UL_PADDING_Y_MAP = {
167
167
  "y-lg": "py-6",
168
168
  "y-bottom-xs": "pb-1",
169
169
  };
170
- export const Ul = React.forwardRef(({ marker, spacing, indent, paddingX, paddingY, size, color, className = "", children, ...props }, ref) => (_jsx("ul", { ref: ref, className: [
170
+ const UL_GAP_MAP = {
171
+ none: "",
172
+ "1": "gap-1",
173
+ "2": "gap-2",
174
+ "3": "gap-3",
175
+ "4": "gap-4",
176
+ "6": "gap-6",
177
+ };
178
+ export const Ul = React.forwardRef(({ marker, spacing, indent, paddingX, paddingY, size, color, rounded, gap, className = "", children, ...props }, ref) => (_jsx("ul", { ref: ref, className: [
171
179
  marker ? LIST_MARKER_MAP[marker] : "",
172
180
  spacing ? LIST_SPACING_MAP[spacing] : "",
173
181
  indent ? LIST_INDENT_MAP[indent] : "",
@@ -175,6 +183,8 @@ export const Ul = React.forwardRef(({ marker, spacing, indent, paddingX, padding
175
183
  paddingY ? UL_PADDING_Y_MAP[paddingY] : "",
176
184
  size ? LIST_SIZE_MAP[size] : "",
177
185
  color ? LIST_COLOR_MAP[color] : "",
186
+ rounded ? ROUNDED_MAP[rounded] : "",
187
+ gap ? UL_GAP_MAP[gap] : "",
178
188
  className,
179
189
  ]
180
190
  .filter(Boolean)
@@ -216,12 +226,16 @@ const LI_COLOR_MAP = {
216
226
  muted: "text-[var(--appkit-color-text-muted)]",
217
227
  faint: "text-[var(--appkit-color-text-faint)]",
218
228
  };
219
- export function Li({ layout, gap, textSize, color, className = "", children, ...props }) {
229
+ export function Li({ layout, gap, textSize, color, padding, rounded, border, surface, className = "", children, ...props }) {
220
230
  const classes = [
221
231
  layout ? LI_LAYOUT_MAP[layout] : "",
222
232
  gap ? LI_GAP_MAP[gap] : "",
223
233
  textSize ? LI_TEXT_SIZE_MAP[textSize] : "",
224
234
  color ? LI_COLOR_MAP[color] : "",
235
+ padding ? PADDING_MAP[padding] : "",
236
+ rounded ? ROUNDED_MAP[rounded] : "",
237
+ border ? BORDER_MAP[border] : "",
238
+ surface ? SURFACE_MAP[surface] : "",
225
239
  className,
226
240
  ].filter(Boolean).join(" ");
227
241
  return (_jsx("li", { className: classes, ...props, children: children }));
@@ -252,8 +266,8 @@ export function Thead({ surface, className = "", children, ...props }) {
252
266
  className,
253
267
  ].filter(Boolean).join(" "), ...props, children: children }));
254
268
  }
255
- export function Tbody({ className = "", children, ...props }) {
256
- return (_jsx("tbody", { className: ["appkit-tbody", className].filter(Boolean).join(" "), ...props, children: children }));
269
+ export function Tbody({ className = "", size, color, children, ...props }) {
270
+ return (_jsx("tbody", { className: ["appkit-tbody", size ? CELL_SIZE_MAP[size] : "", color ? CELL_COLOR_MAP[color] : "", className].filter(Boolean).join(" "), ...props, children: children }));
257
271
  }
258
272
  const TR_BORDER_MAP = {
259
273
  none: "",
@@ -306,6 +320,8 @@ const CELL_PADDING_Y_MAP = {
306
320
  };
307
321
  const CELL_PADDING_SIDE_MAP = {
308
322
  none: "",
323
+ "pr-sm": "pr-3",
324
+ "pb-sm": "pb-2",
309
325
  "pr-md": "pr-4",
310
326
  "pl-md": "pl-4",
311
327
  "pr-lg": "pr-6",
@@ -365,11 +381,19 @@ export function Td({ align, size, weight, padding, paddingX, paddingY, paddingSi
365
381
  className,
366
382
  ].filter(Boolean).join(" "), ...props, children: children }));
367
383
  }
384
+ const CODE_WEIGHT_MAP = {
385
+ normal: "appkit-font--normal",
386
+ medium: "appkit-font--medium",
387
+ semibold: "appkit-font--semibold",
388
+ bold: "appkit-font--bold",
389
+ };
368
390
  const CODE_COLOR_MAP = {
369
391
  default: "appkit-code--default",
370
392
  primary: "appkit-code--primary",
371
393
  error: "appkit-code--error",
372
394
  success: "appkit-code--success",
395
+ muted: "appkit-color--muted",
396
+ faint: "appkit-color--faint",
373
397
  };
374
398
  const CODE_SIZE_MAP = {
375
399
  xs: "appkit-text--xs",
@@ -395,10 +419,11 @@ const CODE_SURFACE_MAP = {
395
419
  subtle: "bg-[var(--appkit-color-border-subtle)]",
396
420
  default: "bg-[var(--appkit-color-surface)]",
397
421
  };
398
- export function Code({ color = "default", size, padding, rounded, surface, className = "", children, ...props }) {
422
+ export function Code({ color = "default", weight, size, padding, rounded, surface, className = "", children, ...props }) {
399
423
  return (_jsx("code", { className: [
400
424
  "appkit-code",
401
425
  CODE_COLOR_MAP[color],
426
+ weight ? CODE_WEIGHT_MAP[weight] : "",
402
427
  size ? CODE_SIZE_MAP[size] : "",
403
428
  padding ? CODE_PADDING_MAP[padding] : "",
404
429
  rounded ? CODE_ROUNDED_MAP[rounded] : "",
@@ -415,8 +440,8 @@ const BLOCKQUOTE_COLOR_MAP = {
415
440
  info: "appkit-blockquote--info",
416
441
  warning: "appkit-blockquote--warning",
417
442
  };
418
- export function Blockquote({ color = "default", className = "", surface, padding, rounded, border, shadow, children, ...props }) {
419
- return (_jsx("blockquote", { className: ["appkit-blockquote", BLOCKQUOTE_COLOR_MAP[color], buildSurfaceClasses({ surface, padding, rounded, border, shadow }), className].filter(Boolean).join(" "), ...props, children: children }));
443
+ export function Blockquote({ color = "default", className = "", surface, padding, paddingX, paddingY, rounded, border, shadow, children, ...props }) {
444
+ return (_jsx("blockquote", { className: ["appkit-blockquote", BLOCKQUOTE_COLOR_MAP[color], buildSurfaceClasses({ surface, padding, paddingX, paddingY, rounded, border, shadow }), className].filter(Boolean).join(" "), ...props, children: children }));
420
445
  }
421
446
  export function Figure({ className = "", surface, padding, rounded, border, shadow, children, ...props }) {
422
447
  return (_jsx("figure", { className: ["appkit-figure", buildSurfaceClasses({ surface, padding, rounded, border, shadow }), className].filter(Boolean).join(" "), ...props, children: children }));
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import type { ShadowKey } from "./surface-tokens";
2
3
  declare const VARIANTS: {
3
4
  readonly default: "appkit-text-link appkit-text-link--default";
4
5
  readonly muted: "appkit-text-link appkit-text-link--muted";
@@ -19,6 +20,14 @@ type LinkTruncate = boolean | 1 | 2 | 3 | 4;
19
20
  type LinkRounded = "none" | "default" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "full";
20
21
  type LinkPaddingX = "none" | "sm" | "md" | "lg" | "xl";
21
22
  type LinkPaddingY = "none" | "xs" | "sm" | "md";
23
+ /** Display layout for button-style / nav-style links. */
24
+ type LinkLayout = "flex" | "inline-flex" | "flex-col";
25
+ /** Cross-axis alignment — only takes effect when `layout` is set. */
26
+ type LinkAlign = "center" | "start" | "end" | "stretch" | "baseline";
27
+ /** Main-axis distribution — only takes effect when `layout` is set. */
28
+ type LinkJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
29
+ /** Gap between flex children — only takes effect when `layout` is set. */
30
+ type LinkGap = "none" | "xs" | "sm" | "md" | "lg";
22
31
  export interface TextLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
23
32
  href: string;
24
33
  children: React.ReactNode;
@@ -35,6 +44,32 @@ export interface TextLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElem
35
44
  paddingX?: LinkPaddingX;
36
45
  /** Vertical padding — for button-shaped links. */
37
46
  paddingY?: LinkPaddingY;
47
+ /**
48
+ * Display layout. Use `"flex"` or `"inline-flex"` to turn the link into a
49
+ * flex container (e.g. nav items that need icon + label side by side).
50
+ * Replaces raw `className="flex"` / `"inline-flex"` tokens.
51
+ */
52
+ layout?: LinkLayout;
53
+ /**
54
+ * Cross-axis alignment. Only takes effect when `layout` is set.
55
+ * Replaces raw `className="items-center"` etc.
56
+ */
57
+ align?: LinkAlign;
58
+ /**
59
+ * Main-axis distribution. Only takes effect when `layout` is set.
60
+ * Replaces raw `className="justify-between"` etc.
61
+ */
62
+ justify?: LinkJustify;
63
+ /**
64
+ * Gap between flex children. Only takes effect when `layout` is set.
65
+ * Replaces raw `className="gap-2"` etc.
66
+ */
67
+ gap?: LinkGap;
68
+ /**
69
+ * Box shadow variant — replaces raw `className="shadow-*"` / `hover:shadow-*`.
70
+ * Uses the same `SHADOW_MAP` as layout primitives.
71
+ */
72
+ shadow?: ShadowKey;
38
73
  /**
39
74
  * Force external rendering (`<a target="_blank" rel="noopener noreferrer">`).
40
75
  * Auto-detected when `href` starts with http/https/mailto/tel.
@@ -56,5 +91,5 @@ export interface TextLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElem
56
91
  * <TextLink href="#" variant="danger" onClick={handleDelete}>Delete</TextLink>
57
92
  * ```
58
93
  */
59
- export declare function TextLink({ href, children, variant, size, weight, truncate, rounded, paddingX, paddingY, external, className, ...props }: TextLinkProps): import("react/jsx-runtime").JSX.Element;
94
+ export declare function TextLink({ href, children, variant, size, weight, truncate, rounded, paddingX, paddingY, layout, align, justify, gap, shadow, external, className, ...props }: TextLinkProps): import("react/jsx-runtime").JSX.Element;
60
95
  export {};
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import Link from "next/link";
3
+ import { SHADOW_MAP } from "./surface-tokens";
3
4
  import { twMerge } from "tailwind-merge";
4
5
  const VARIANTS = {
5
6
  default: "appkit-text-link appkit-text-link--default",
@@ -67,6 +68,33 @@ const LINK_PADDING_Y_MAP = {
67
68
  sm: "py-2.5",
68
69
  md: "py-3",
69
70
  };
71
+ const LINK_LAYOUT_MAP = {
72
+ flex: "flex",
73
+ "inline-flex": "inline-flex",
74
+ "flex-col": "flex flex-col",
75
+ };
76
+ const LINK_ALIGN_MAP = {
77
+ center: "items-center",
78
+ start: "items-start",
79
+ end: "items-end",
80
+ stretch: "items-stretch",
81
+ baseline: "items-baseline",
82
+ };
83
+ const LINK_JUSTIFY_MAP = {
84
+ start: "justify-start",
85
+ center: "justify-center",
86
+ end: "justify-end",
87
+ between: "justify-between",
88
+ around: "justify-around",
89
+ evenly: "justify-evenly",
90
+ };
91
+ const LINK_GAP_MAP = {
92
+ none: "",
93
+ xs: "gap-1",
94
+ sm: "gap-2",
95
+ md: "gap-3",
96
+ lg: "gap-4",
97
+ };
70
98
  /**
71
99
  * Styled anchor wrapper. Uses `next/link` for internal navigation and
72
100
  * a plain `<a>` for external/mailto/tel links.
@@ -82,8 +110,8 @@ const LINK_PADDING_Y_MAP = {
82
110
  * <TextLink href="#" variant="danger" onClick={handleDelete}>Delete</TextLink>
83
111
  * ```
84
112
  */
85
- export function TextLink({ href, children, variant = "default", size, weight, truncate, rounded, paddingX, paddingY, external, className = "", ...props }) {
86
- const cls = twMerge(VARIANTS[variant], size ? LINK_SIZE_MAP[size] : "", weight ? LINK_WEIGHT_MAP[weight] : "", truncateClass(truncate), rounded ? LINK_ROUNDED_MAP[rounded] : "", paddingX ? LINK_PADDING_X_MAP[paddingX] : "", paddingY ? LINK_PADDING_Y_MAP[paddingY] : "", className);
113
+ export function TextLink({ href, children, variant = "default", size, weight, truncate, rounded, paddingX, paddingY, layout, align, justify, gap, shadow, external, className = "", ...props }) {
114
+ const cls = twMerge(VARIANTS[variant], size ? LINK_SIZE_MAP[size] : "", weight ? LINK_WEIGHT_MAP[weight] : "", truncateClass(truncate), rounded ? LINK_ROUNDED_MAP[rounded] : "", paddingX ? LINK_PADDING_X_MAP[paddingX] : "", paddingY ? LINK_PADDING_Y_MAP[paddingY] : "", layout ? LINK_LAYOUT_MAP[layout] : "", align ? LINK_ALIGN_MAP[align] : "", justify ? LINK_JUSTIFY_MAP[justify] : "", gap ? LINK_GAP_MAP[gap] : "", shadow ? SHADOW_MAP[shadow] : "", className);
87
115
  const shouldBeExternal = external ?? isExternalUrl(href);
88
116
  if (shouldBeExternal) {
89
117
  return (_jsx("a", { href: href, className: cls, target: "_blank", rel: "noopener noreferrer", ...props, children: children }));
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+ import { type RoundedKey, type PaddingKey, type XPaddingKey } from "./surface-tokens";
2
3
  declare const TYPOGRAPHY: {
3
4
  readonly headingLevel: {
4
5
  readonly 1: "appkit-heading--h1";
@@ -53,6 +54,10 @@ export type FontFamily = "sans" | "display" | "editorial" | "mono";
53
54
  export type TextGradient = "none" | "brand" | "brand-tri" | "accent";
54
55
  /** Multi-line ellipsis: `true` = 1 line; pass `2`, `3`, or `4` for line-clamp. */
55
56
  export type TextTruncate = boolean | 1 | 2 | 3 | 4;
57
+ /** Drop-shadow preset shared by Heading and Text (over-image/hero text). */
58
+ export type DropShadowPreset = "none" | "sm" | "md" | "lg" | "2xl";
59
+ /** CSS text-shadow preset for hero headings where filter drop-shadow is insufficient. */
60
+ export type HeadingTextShadow = "soft-dark";
56
61
  type HeadingSize = "xs" | "sm" | "base" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl";
57
62
  interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
58
63
  level?: 1 | 2 | 3 | 4 | 5 | 6;
@@ -77,9 +82,13 @@ interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
77
82
  family?: FontFamily;
78
83
  align?: TextAlign;
79
84
  gradient?: TextGradient;
85
+ /** Drop-shadow filter preset for over-image / hero-section headings. */
86
+ shadow?: DropShadowPreset;
87
+ /** CSS text-shadow preset — use instead of wrapping children in a native `<span style>`. */
88
+ textShadow?: HeadingTextShadow;
80
89
  children: React.ReactNode;
81
90
  }
82
- export declare function Heading({ level, variant, color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, className, children, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
91
+ export declare function Heading({ level, variant, color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, shadow, textShadow, className, children, ...props }: HeadingProps): import("react/jsx-runtime").JSX.Element;
83
92
  type TextPaddingY = "none" | "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
84
93
  type TextLayout = "default" | "inline-flex" | "flex" | "inline-block";
85
94
  type TextGap = "none" | "1" | "1.5" | "2" | "3";
@@ -102,6 +111,10 @@ interface TextProps extends React.HTMLAttributes<HTMLParagraphElement> {
102
111
  gradient?: TextGradient;
103
112
  /** Vertical padding — used for empty-state Text wrappers. */
104
113
  paddingY?: TextPaddingY;
114
+ /** Horizontal padding — use instead of raw `px-*` className. */
115
+ paddingX?: XPaddingKey;
116
+ /** Border radius — use instead of raw `rounded-*` className. */
117
+ rounded?: RoundedKey;
105
118
  /** Layout — `inline-flex` / `flex` for icon + label compositions. */
106
119
  layout?: TextLayout;
107
120
  /** Flex gap between children (only when `layout` is `inline-flex` / `flex`). */
@@ -112,8 +125,8 @@ interface TextProps extends React.HTMLAttributes<HTMLParagraphElement> {
112
125
  as?: React.ElementType;
113
126
  children: React.ReactNode;
114
127
  }
115
- export declare function Text({ variant, color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, paddingY, layout, gap, shadow, className, as: Tag, children, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
116
- type LabelLayout = "inline" | "inline-flex" | "flex" | "flex-start";
128
+ export declare function Text({ variant, color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, paddingY, paddingX, rounded, layout, gap, shadow, className, as: Tag, children, ...props }: TextProps): import("react/jsx-runtime").JSX.Element;
129
+ type LabelLayout = "inline" | "inline-flex" | "flex" | "flex-start" | "flex-col-center";
117
130
  type LabelGap = "none" | "xs" | "sm" | "md" | "lg";
118
131
  interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
119
132
  required?: boolean;
@@ -128,9 +141,13 @@ interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {
128
141
  layout?: LabelLayout;
129
142
  /** Gap between children. Only takes effect when `layout` is set to a flex variant. */
130
143
  gap?: LabelGap;
144
+ /** Border radius — replaces consumer `rounded-*` className. */
145
+ rounded?: RoundedKey;
146
+ /** Padding — replaces consumer `p-*` className. */
147
+ padding?: PaddingKey;
131
148
  children: React.ReactNode;
132
149
  }
133
- export declare function Label({ required, size, weight, color, transform, align, layout, gap, className, children, ...props }: LabelProps): import("react/jsx-runtime").JSX.Element;
150
+ export declare function Label({ required, size, weight, color, transform, align, layout, gap, rounded, padding, className, children, ...props }: LabelProps): import("react/jsx-runtime").JSX.Element;
134
151
  interface CaptionProps extends React.HTMLAttributes<HTMLSpanElement> {
135
152
  /** "default" — muted grey (default); "accent" — indigo, semibold; "inverse" — light indigo for use on dark indigo backgrounds */
136
153
  variant?: "default" | "accent" | "inverse";
@@ -158,10 +175,11 @@ export declare function Caption({ variant, color, weight, className, children, .
158
175
  /** Inline-decorations allowed on Span (pill chips, code-like wraps, etc). */
159
176
  type SpanRounded = "none" | "default" | "sm" | "md" | "lg" | "xl" | "2xl" | "full";
160
177
  type SpanBorder = "none" | "default" | "subtle" | "strong";
161
- type SpanPadding = "none" | "x-xs" | "x-sm" | "x-md" | "y-2xs" | "y-xs" | "y-sm" | "inline-sm" | "inline" | "pill-2xs" | "pill-xs" | "pill-sm" | "pill-sm-tall" | "pill-md" | "pill-lg";
178
+ type SpanPadding = "none" | "2xs" | "x-xs" | "x-sm" | "x-md" | "y-2xs" | "y-xs" | "y-sm" | "inline-sm" | "inline" | "pill-2xs" | "pill-xs" | "pill-sm" | "pill-sm-tall" | "pill-md" | "pill-lg";
162
179
  type SpanBg = "none" | "muted" | "subtle" | "default" | "success-surface" | "danger-surface" | "warning-surface" | "info-surface" | "overlay-xs" | "overlay-sm" | "overlay-md" | "overlay-lg" | "overlay-xl";
163
180
  type SpanLayout = "inline" | "inline-flex" | "flex" | "inline-flex-center" | "flex-center" | "inline-block" | "block";
164
181
  type SpanGap = "none" | "2xs" | "xs" | "sm" | "md" | "lg";
182
+ type SpanShadow = "none" | "sm" | "md" | "lg" | "2xl" | "default";
165
183
  interface SpanProps extends React.HTMLAttributes<HTMLSpanElement> {
166
184
  /** Colour variant. "inherit" (default) applies no colour class. */
167
185
  variant?: "inherit" | "primary" | "secondary" | "muted" | "error" | "success" | "accent";
@@ -194,7 +212,9 @@ interface SpanProps extends React.HTMLAttributes<HTMLSpanElement> {
194
212
  padding?: SpanPadding;
195
213
  surface?: SpanBg;
196
214
  border?: SpanBorder;
215
+ /** Box shadow preset for Span overlays (e.g. toggle thumb). */
216
+ shadow?: SpanShadow;
197
217
  children?: React.ReactNode;
198
218
  }
199
- export declare function Span({ variant, color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, rounded, padding, surface, border, layout, gap, className, children, ...props }: SpanProps): import("react/jsx-runtime").JSX.Element;
219
+ export declare const Span: React.ForwardRefExoticComponent<SpanProps & React.RefAttributes<HTMLSpanElement>>;
200
220
  export {};
@@ -1,4 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { ROUNDED_MAP, PADDING_MAP, X_ONLY_MAP } from "./surface-tokens";
2
4
  const TYPOGRAPHY = {
3
5
  headingLevel: {
4
6
  1: "appkit-heading--h1",
@@ -45,6 +47,16 @@ const TYPOGRAPHY = {
45
47
  inverse: "appkit-color--inverse",
46
48
  },
47
49
  };
50
+ const DROP_SHADOW_MAP = {
51
+ none: "",
52
+ sm: "drop-shadow-sm",
53
+ md: "drop-shadow-md",
54
+ lg: "drop-shadow-lg",
55
+ "2xl": "drop-shadow-2xl",
56
+ };
57
+ const HEADING_TEXT_SHADOW_MAP = {
58
+ "soft-dark": "[text-shadow:0_4px_32px_rgba(0,0,0,0.5)]",
59
+ };
48
60
  function shapingClasses(opts) {
49
61
  const out = [];
50
62
  if (opts.transform && opts.transform !== "none") {
@@ -74,7 +86,7 @@ function responsiveSizeClass(prefix, size) {
74
86
  // than the custom .appkit-text--N classes (which don't).
75
87
  return `${prefix}text-${size}`;
76
88
  }
77
- export function Heading({ level = 1, variant = "primary", color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, className = "", children, ...props }) {
89
+ export function Heading({ level = 1, variant = "primary", color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, shadow, textShadow, className = "", children, ...props }) {
78
90
  const Tag = `h${level}`;
79
91
  const resolvedColor = color ?? variant;
80
92
  return (_jsx(Tag, { className: [
@@ -88,6 +100,8 @@ export function Heading({ level = 1, variant = "primary", color, size, smSize, m
88
100
  responsiveSizeClass("xl:", xlSize),
89
101
  weight ? TYPOGRAPHY.textWeight[weight] : "",
90
102
  ...shapingClasses({ transform, truncate, numeric, italic, family, align, gradient }),
103
+ shadow ? DROP_SHADOW_MAP[shadow] : "",
104
+ textShadow ? HEADING_TEXT_SHADOW_MAP[textShadow] : "",
91
105
  className,
92
106
  ]
93
107
  .filter(Boolean)
@@ -126,14 +140,8 @@ const TEXT_GAP_MAP = {
126
140
  "2": "gap-2",
127
141
  "3": "gap-3",
128
142
  };
129
- const TEXT_SHADOW_MAP = {
130
- none: "",
131
- sm: "drop-shadow-sm",
132
- md: "drop-shadow-md",
133
- lg: "drop-shadow-lg",
134
- "2xl": "drop-shadow-2xl",
135
- };
136
- export function Text({ variant = "primary", color, size = "base", smSize, mdSize, lgSize, xlSize, weight = "normal", transform, truncate, numeric, italic, family, align, gradient, paddingY, layout, gap, shadow, className = "", as: Tag = "p", children, ...props }) {
143
+ const TEXT_SHADOW_MAP = DROP_SHADOW_MAP;
144
+ export function Text({ variant = "primary", color, size = "base", smSize, mdSize, lgSize, xlSize, weight = "normal", transform, truncate, numeric, italic, family, align, gradient, paddingY, paddingX, rounded, layout, gap, shadow, className = "", as: Tag = "p", children, ...props }) {
137
145
  const resolvedColor = color ?? variant;
138
146
  return (_jsx(Tag, { className: [
139
147
  "appkit-text",
@@ -146,6 +154,8 @@ export function Text({ variant = "primary", color, size = "base", smSize, mdSize
146
154
  TYPOGRAPHY.colorVariant[resolvedColor],
147
155
  ...shapingClasses({ transform, truncate, numeric, italic, family, align, gradient }),
148
156
  paddingY ? TEXT_PADDING_Y_MAP[paddingY] : "",
157
+ paddingX ? X_ONLY_MAP[paddingX] : "",
158
+ rounded ? ROUNDED_MAP[rounded] : "",
149
159
  layout ? TEXT_LAYOUT_MAP[layout] : "",
150
160
  gap ? TEXT_GAP_MAP[gap] : "",
151
161
  shadow ? TEXT_SHADOW_MAP[shadow] : "",
@@ -160,6 +170,8 @@ const LABEL_LAYOUT_MAP = {
160
170
  flex: CLS_FLEX,
161
171
  /** Flex container with `items-start` cross-axis alignment — for checkbox + multi-line description rows. */
162
172
  "flex-start": "flex items-start",
173
+ /** Flex column with center cross-axis + main-axis alignment — for upload drop-zone labels. */
174
+ "flex-col-center": "flex flex-col items-center justify-center",
163
175
  };
164
176
  const LABEL_GAP_MAP = {
165
177
  none: "",
@@ -168,7 +180,7 @@ const LABEL_GAP_MAP = {
168
180
  md: "gap-2",
169
181
  lg: "gap-3",
170
182
  };
171
- export function Label({ required, size, weight, color, transform, align, layout, gap, className = "", children, ...props }) {
183
+ export function Label({ required, size, weight, color, transform, align, layout, gap, rounded, padding, className = "", children, ...props }) {
172
184
  return (_jsxs("label", { className: [
173
185
  "appkit-label",
174
186
  size ? TYPOGRAPHY.textSize[size] : "",
@@ -178,6 +190,8 @@ export function Label({ required, size, weight, color, transform, align, layout,
178
190
  align ? `appkit-text--align-${align}` : "",
179
191
  layout ? LABEL_LAYOUT_MAP[layout] : "",
180
192
  gap ? LABEL_GAP_MAP[gap] : "",
193
+ rounded ? ROUNDED_MAP[rounded] : "",
194
+ padding ? PADDING_MAP[padding] : "",
181
195
  className,
182
196
  ]
183
197
  .filter(Boolean)
@@ -217,6 +231,7 @@ const SPAN_ROUNDED_MAP = {
217
231
  };
218
232
  const SPAN_PADDING_MAP = {
219
233
  none: "",
234
+ "2xs": "p-2",
220
235
  "x-xs": "px-2",
221
236
  "x-sm": "px-3",
222
237
  "x-md": "px-4",
@@ -264,7 +279,15 @@ const SPAN_GAP_MAP = {
264
279
  md: "gap-2",
265
280
  lg: "gap-3",
266
281
  };
267
- export function Span({ variant = "inherit", color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, rounded, padding, surface, border, layout, gap, className = "", children, ...props }) {
282
+ const SPAN_SHADOW_MAP = {
283
+ none: "",
284
+ default: "shadow",
285
+ sm: "shadow-sm",
286
+ md: "shadow-md",
287
+ lg: "shadow-lg",
288
+ "2xl": "shadow-2xl",
289
+ };
290
+ export const Span = React.forwardRef(function Span({ variant = "inherit", color, size, smSize, mdSize, lgSize, xlSize, weight, transform, truncate, numeric, italic, family, align, gradient, rounded, padding, surface, border, layout, gap, shadow, className = "", children, ...props }, ref) {
268
291
  const resolvedColor = color ?? variant;
269
292
  const classes = [
270
293
  "appkit-span",
@@ -282,9 +305,10 @@ export function Span({ variant = "inherit", color, size, smSize, mdSize, lgSize,
282
305
  border ? SPAN_BORDER_MAP[border] : "",
283
306
  layout ? SPAN_LAYOUT_MAP[layout] : "",
284
307
  gap ? SPAN_GAP_MAP[gap] : "",
308
+ shadow ? SPAN_SHADOW_MAP[shadow] : "",
285
309
  className,
286
310
  ]
287
311
  .filter(Boolean)
288
312
  .join(" ");
289
- return (_jsx("span", { className: classes, ...props, children: children }));
290
- }
313
+ return (_jsx("span", { ref: ref, className: classes, ...props, children: children }));
314
+ });
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
2
  import { Alert } from "./Alert";
4
3
  import { Div } from "./Div";
@@ -39,6 +39,7 @@ export declare const PADDING_MAP: {
39
39
  readonly "5": "p-5";
40
40
  readonly lg: "p-6";
41
41
  readonly xl: "p-8";
42
+ readonly "3xl": "p-12";
42
43
  readonly card: "p-5 sm:p-6 lg:p-8";
43
44
  readonly "card-tight": "p-3 sm:p-4";
44
45
  readonly section: "py-10 sm:py-14 xl:py-20";
@@ -122,6 +123,10 @@ export declare const SHADOW_MAP: {
122
123
  readonly "hover-md": "hover:shadow-md transition-shadow";
123
124
  /** No static shadow; transitions to shadow-lg on hover. */
124
125
  readonly "hover-lg": "hover:shadow-lg transition-shadow";
126
+ /** Resting shadow-sm that lifts to shadow-md on hover. */
127
+ readonly "sm-hover-md": "shadow-sm hover:shadow-md transition-shadow";
128
+ /** Themed card shadow via --card-shadow CSS variable. */
129
+ readonly card: "shadow-[var(--card-shadow)]";
125
130
  };
126
131
  export type ShadowKey = keyof typeof SHADOW_MAP;
127
132
  /**
@@ -164,6 +169,7 @@ export declare const PADDING_PRESETS: {
164
169
  readonly "5": "p-5";
165
170
  readonly lg: "p-6";
166
171
  readonly xl: "p-8";
172
+ readonly "3xl": "p-12";
167
173
  readonly card: "p-5 sm:p-6 lg:p-8";
168
174
  readonly "card-tight": "p-3 sm:p-4";
169
175
  readonly section: "py-10 sm:py-14 xl:py-20";
@@ -210,8 +216,10 @@ export declare const PADDING_PRESETS: {
210
216
  readonly "content-banner": "py-10 md:py-12 lg:py-16";
211
217
  };
212
218
  export type PaddingPresetKey = PaddingKey;
213
- type XPaddingKey = "none" | "x-xs" | "x-sm" | "x-md" | "x-5" | "x-lg" | "x-xl" | "x-sm-md" | "x-sm-lg-md" | "x-md-lg" | "x-md-xl" | "x-md-2xl" | "x-page";
214
- type YPaddingKey = "none" | "y-2xs" | "y-2xs-tall" | "y-xs" | "y-xs-tall" | "y-sm" | "y-sm-tall" | "y-md" | "y-md-lg" | "y-lg" | "y-xl" | "y-2xl" | "y-3xl" | "y-4xl" | "y-5xl" | "y-6xl" | "y-2-5xl" | "t-2xs" | "b-2xs" | "t-xs" | "b-xs" | "t-sm" | "b-sm" | "t-md" | "b-md" | "b-md-lg" | "b-lg";
219
+ export type XPaddingKey = "none" | "x-xs" | "x-sm" | "x-md" | "x-5" | "x-lg" | "x-xl" | "x-sm-md" | "x-sm-lg-md" | "x-md-lg" | "x-md-xl" | "x-md-2xl" | "x-page";
220
+ type YPaddingKey = "none" | "y-2xs" | "y-2xs-tall" | "y-xs" | "y-xs-tall" | "y-sm" | "y-sm-tall" | "y-md" | "y-md-lg" | "y-lg" | "y-xl" | "y-2xl" | "y-3xl" | "y-4xl" | "y-5xl" | "y-6xl" | "y-2-5xl" | "t-2xs" | "b-2xs" | "t-xs" | "b-xs" | "t-sm" | "b-sm" | "t-md" | "b-md" | "b-md-lg" | "b-lg" | "t-md-b-lg";
221
+ export declare const X_ONLY_MAP: Record<XPaddingKey, string>;
222
+ export type OverflowKey = "auto" | "hidden" | "scroll" | "visible" | "x-auto" | "x-hidden" | "y-auto" | "y-hidden";
215
223
  export interface SurfaceProps {
216
224
  surface?: SurfaceKey;
217
225
  padding?: PaddingKey;
@@ -222,6 +230,8 @@ export interface SurfaceProps {
222
230
  rounded?: RoundedKey;
223
231
  border?: BorderKey;
224
232
  shadow?: ShadowKey;
233
+ /** Overflow behaviour — replaces consumer `overflow-*` className. */
234
+ overflow?: OverflowKey;
225
235
  }
226
236
  export declare function buildSurfaceClasses(props: SurfaceProps): string;
227
237
  export {};