@thewhileloop/whileui 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/README.md +493 -39
  2. package/dist/blocks/chat/chat.d.ts.map +1 -1
  3. package/dist/blocks/chat/chat.js +17 -6
  4. package/dist/blocks/chat/chat.js.map +1 -1
  5. package/dist/blocks/commerce/feature-gate.d.ts +13 -0
  6. package/dist/blocks/commerce/feature-gate.d.ts.map +1 -0
  7. package/dist/blocks/commerce/feature-gate.js +13 -0
  8. package/dist/blocks/commerce/feature-gate.js.map +1 -0
  9. package/dist/blocks/commerce/index.d.ts +5 -0
  10. package/dist/blocks/commerce/index.d.ts.map +1 -1
  11. package/dist/blocks/commerce/index.js +5 -0
  12. package/dist/blocks/commerce/index.js.map +1 -1
  13. package/dist/blocks/commerce/metric-card.d.ts +3 -1
  14. package/dist/blocks/commerce/metric-card.d.ts.map +1 -1
  15. package/dist/blocks/commerce/metric-card.js +8 -1
  16. package/dist/blocks/commerce/metric-card.js.map +1 -1
  17. package/dist/blocks/commerce/plan-toggle.d.ts +12 -0
  18. package/dist/blocks/commerce/plan-toggle.d.ts.map +1 -0
  19. package/dist/blocks/commerce/plan-toggle.js +19 -0
  20. package/dist/blocks/commerce/plan-toggle.js.map +1 -0
  21. package/dist/blocks/commerce/pricing-card.d.ts +3 -1
  22. package/dist/blocks/commerce/pricing-card.d.ts.map +1 -1
  23. package/dist/blocks/commerce/pricing-card.js +9 -1
  24. package/dist/blocks/commerce/pricing-card.js.map +1 -1
  25. package/dist/blocks/commerce/product-card.d.ts +3 -1
  26. package/dist/blocks/commerce/product-card.d.ts.map +1 -1
  27. package/dist/blocks/commerce/product-card.js +16 -2
  28. package/dist/blocks/commerce/product-card.js.map +1 -1
  29. package/dist/blocks/commerce/subscription-card.d.ts +17 -0
  30. package/dist/blocks/commerce/subscription-card.d.ts.map +1 -0
  31. package/dist/blocks/commerce/subscription-card.js +18 -0
  32. package/dist/blocks/commerce/subscription-card.js.map +1 -0
  33. package/dist/blocks/commerce/upgrade-banner.d.ts +12 -0
  34. package/dist/blocks/commerce/upgrade-banner.d.ts.map +1 -0
  35. package/dist/blocks/commerce/upgrade-banner.js +9 -0
  36. package/dist/blocks/commerce/upgrade-banner.js.map +1 -0
  37. package/dist/blocks/commerce/usage-bar.d.ts +11 -0
  38. package/dist/blocks/commerce/usage-bar.d.ts.map +1 -0
  39. package/dist/blocks/commerce/usage-bar.js +33 -0
  40. package/dist/blocks/commerce/usage-bar.js.map +1 -0
  41. package/dist/blocks/datepicker/date-range-picker-modal.d.ts +3 -2
  42. package/dist/blocks/datepicker/date-range-picker-modal.d.ts.map +1 -1
  43. package/dist/blocks/datepicker/date-range-picker-modal.js +16 -3
  44. package/dist/blocks/datepicker/date-range-picker-modal.js.map +1 -1
  45. package/dist/blocks/datepicker/datepicker-inline.d.ts.map +1 -1
  46. package/dist/blocks/datepicker/datepicker-inline.js +3 -1
  47. package/dist/blocks/datepicker/datepicker-inline.js.map +1 -1
  48. package/dist/blocks/datepicker/datepicker-modal.d.ts +3 -2
  49. package/dist/blocks/datepicker/datepicker-modal.d.ts.map +1 -1
  50. package/dist/blocks/datepicker/datepicker-modal.js +16 -3
  51. package/dist/blocks/datepicker/datepicker-modal.js.map +1 -1
  52. package/dist/blocks/datepicker/use-calendar-theme.d.ts.map +1 -1
  53. package/dist/blocks/datepicker/use-calendar-theme.js +2 -1
  54. package/dist/blocks/datepicker/use-calendar-theme.js.map +1 -1
  55. package/dist/blocks/layout/app-shell.d.ts +5 -1
  56. package/dist/blocks/layout/app-shell.d.ts.map +1 -1
  57. package/dist/blocks/layout/app-shell.js +2 -2
  58. package/dist/blocks/layout/app-shell.js.map +1 -1
  59. package/dist/blocks/layout/confirm-action-sheet.d.ts +3 -2
  60. package/dist/blocks/layout/confirm-action-sheet.d.ts.map +1 -1
  61. package/dist/blocks/layout/confirm-action-sheet.js +23 -4
  62. package/dist/blocks/layout/confirm-action-sheet.js.map +1 -1
  63. package/dist/blocks/layout/form-modal-screen.d.ts.map +1 -1
  64. package/dist/blocks/layout/form-modal-screen.js +26 -5
  65. package/dist/blocks/layout/form-modal-screen.js.map +1 -1
  66. package/dist/blocks/layout/index.d.ts +2 -1
  67. package/dist/blocks/layout/index.d.ts.map +1 -1
  68. package/dist/blocks/layout/index.js +1 -0
  69. package/dist/blocks/layout/index.js.map +1 -1
  70. package/dist/blocks/layout/onboarding-screen.js +2 -2
  71. package/dist/blocks/layout/onboarding-screen.js.map +1 -1
  72. package/dist/blocks/layout/page-skeleton.d.ts +7 -1
  73. package/dist/blocks/layout/page-skeleton.d.ts.map +1 -1
  74. package/dist/blocks/layout/page-skeleton.js +7 -14
  75. package/dist/blocks/layout/page-skeleton.js.map +1 -1
  76. package/dist/blocks/layout/screen-skeleton.d.ts +16 -0
  77. package/dist/blocks/layout/screen-skeleton.d.ts.map +1 -0
  78. package/dist/blocks/layout/screen-skeleton.js +8 -0
  79. package/dist/blocks/layout/screen-skeleton.js.map +1 -0
  80. package/dist/blocks/layout/sheet.d.ts +3 -2
  81. package/dist/blocks/layout/sheet.d.ts.map +1 -1
  82. package/dist/blocks/layout/sheet.js +41 -9
  83. package/dist/blocks/layout/sheet.js.map +1 -1
  84. package/dist/blocks/layout/smart-input.d.ts.map +1 -1
  85. package/dist/blocks/layout/smart-input.js +8 -1
  86. package/dist/blocks/layout/smart-input.js.map +1 -1
  87. package/dist/blocks/lists/list-item.d.ts +3 -1
  88. package/dist/blocks/lists/list-item.d.ts.map +1 -1
  89. package/dist/blocks/lists/list-item.js +9 -1
  90. package/dist/blocks/lists/list-item.js.map +1 -1
  91. package/dist/blocks/lists/notification-item.d.ts +3 -1
  92. package/dist/blocks/lists/notification-item.d.ts.map +1 -1
  93. package/dist/blocks/lists/notification-item.js +10 -2
  94. package/dist/blocks/lists/notification-item.js.map +1 -1
  95. package/dist/blocks/lists/swipeable-item.d.ts.map +1 -1
  96. package/dist/blocks/lists/swipeable-item.js +7 -4
  97. package/dist/blocks/lists/swipeable-item.js.map +1 -1
  98. package/dist/blocks/navigation/bottom-nav.d.ts.map +1 -1
  99. package/dist/blocks/navigation/bottom-nav.js +9 -2
  100. package/dist/blocks/navigation/bottom-nav.js.map +1 -1
  101. package/dist/blocks/navigation/drawer-menu.d.ts +3 -2
  102. package/dist/blocks/navigation/drawer-menu.d.ts.map +1 -1
  103. package/dist/blocks/navigation/drawer-menu.js +88 -29
  104. package/dist/blocks/navigation/drawer-menu.js.map +1 -1
  105. package/dist/blocks/navigation/header.d.ts +1 -1
  106. package/dist/blocks/navigation/header.d.ts.map +1 -1
  107. package/dist/blocks/navigation/header.js +12 -3
  108. package/dist/blocks/navigation/header.js.map +1 -1
  109. package/dist/blocks/navigation/navigation-sidebar.d.ts +3 -1
  110. package/dist/blocks/navigation/navigation-sidebar.d.ts.map +1 -1
  111. package/dist/blocks/navigation/navigation-sidebar.js +12 -5
  112. package/dist/blocks/navigation/navigation-sidebar.js.map +1 -1
  113. package/dist/blocks/navigation/tab-bar.d.ts.map +1 -1
  114. package/dist/blocks/navigation/tab-bar.js +8 -2
  115. package/dist/blocks/navigation/tab-bar.js.map +1 -1
  116. package/dist/components/accordion/accordion.d.ts +1 -1
  117. package/dist/components/accordion/accordion.d.ts.map +1 -1
  118. package/dist/components/accordion/accordion.js +10 -4
  119. package/dist/components/accordion/accordion.js.map +1 -1
  120. package/dist/components/alert/alert.js +4 -4
  121. package/dist/components/alert/alert.js.map +1 -1
  122. package/dist/components/alert-dialog/alert-dialog.d.ts +3 -2
  123. package/dist/components/alert-dialog/alert-dialog.d.ts.map +1 -1
  124. package/dist/components/alert-dialog/alert-dialog.js +15 -4
  125. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  126. package/dist/components/badge/badge.js +6 -6
  127. package/dist/components/badge/badge.js.map +1 -1
  128. package/dist/components/button/button.d.ts.map +1 -1
  129. package/dist/components/button/button.js +11 -5
  130. package/dist/components/button/button.js.map +1 -1
  131. package/dist/components/card/card.d.ts +2 -1
  132. package/dist/components/card/card.d.ts.map +1 -1
  133. package/dist/components/card/card.js +12 -3
  134. package/dist/components/card/card.js.map +1 -1
  135. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  136. package/dist/components/checkbox/checkbox.js +7 -1
  137. package/dist/components/checkbox/checkbox.js.map +1 -1
  138. package/dist/components/context-menu/context-menu.d.ts +3 -2
  139. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  140. package/dist/components/context-menu/context-menu.js +12 -3
  141. package/dist/components/context-menu/context-menu.js.map +1 -1
  142. package/dist/components/data-row/data-row.d.ts.map +1 -1
  143. package/dist/components/data-row/data-row.js +8 -5
  144. package/dist/components/data-row/data-row.js.map +1 -1
  145. package/dist/components/dialog/dialog.d.ts +3 -2
  146. package/dist/components/dialog/dialog.d.ts.map +1 -1
  147. package/dist/components/dialog/dialog.js +14 -3
  148. package/dist/components/dialog/dialog.js.map +1 -1
  149. package/dist/components/dropdown-menu/dropdown-menu.d.ts +3 -2
  150. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  151. package/dist/components/dropdown-menu/dropdown-menu.js +12 -3
  152. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  153. package/dist/components/form-field/form-field.d.ts.map +1 -1
  154. package/dist/components/form-field/form-field.js +6 -3
  155. package/dist/components/form-field/form-field.js.map +1 -1
  156. package/dist/components/hover-card/hover-card.d.ts +2 -1
  157. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  158. package/dist/components/hover-card/hover-card.js +17 -2
  159. package/dist/components/hover-card/hover-card.js.map +1 -1
  160. package/dist/components/input/input.d.ts.map +1 -1
  161. package/dist/components/input/input.js +3 -1
  162. package/dist/components/input/input.js.map +1 -1
  163. package/dist/components/labeled-field/labeled-field.d.ts.map +1 -1
  164. package/dist/components/labeled-field/labeled-field.js +3 -1
  165. package/dist/components/labeled-field/labeled-field.js.map +1 -1
  166. package/dist/components/menubar/menubar.d.ts +3 -2
  167. package/dist/components/menubar/menubar.d.ts.map +1 -1
  168. package/dist/components/menubar/menubar.js +12 -3
  169. package/dist/components/menubar/menubar.js.map +1 -1
  170. package/dist/components/numeric-input/numeric-input.d.ts +2 -2
  171. package/dist/components/numeric-input/numeric-input.d.ts.map +1 -1
  172. package/dist/components/numeric-input/numeric-input.js +18 -6
  173. package/dist/components/numeric-input/numeric-input.js.map +1 -1
  174. package/dist/components/otp-input/index.d.ts +2 -0
  175. package/dist/components/otp-input/index.d.ts.map +1 -0
  176. package/dist/components/otp-input/index.js +2 -0
  177. package/dist/components/otp-input/index.js.map +1 -0
  178. package/dist/components/otp-input/otp-input.d.ts +97 -0
  179. package/dist/components/otp-input/otp-input.d.ts.map +1 -0
  180. package/dist/components/otp-input/otp-input.js +88 -0
  181. package/dist/components/otp-input/otp-input.js.map +1 -0
  182. package/dist/components/popover/popover.d.ts +2 -1
  183. package/dist/components/popover/popover.d.ts.map +1 -1
  184. package/dist/components/popover/popover.js +16 -3
  185. package/dist/components/popover/popover.js.map +1 -1
  186. package/dist/components/segmented-control/segmented-control.d.ts +3 -3
  187. package/dist/components/segmented-control/segmented-control.d.ts.map +1 -1
  188. package/dist/components/segmented-control/segmented-control.js +19 -5
  189. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  190. package/dist/components/select/select.d.ts +2 -1
  191. package/dist/components/select/select.d.ts.map +1 -1
  192. package/dist/components/select/select.js +30 -11
  193. package/dist/components/select/select.js.map +1 -1
  194. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  195. package/dist/components/skeleton/skeleton.js +6 -2
  196. package/dist/components/skeleton/skeleton.js.map +1 -1
  197. package/dist/components/switch/switch.d.ts.map +1 -1
  198. package/dist/components/switch/switch.js +7 -1
  199. package/dist/components/switch/switch.js.map +1 -1
  200. package/dist/components/tabs/tabs.d.ts +3 -1
  201. package/dist/components/tabs/tabs.d.ts.map +1 -1
  202. package/dist/components/tabs/tabs.js +9 -3
  203. package/dist/components/tabs/tabs.js.map +1 -1
  204. package/dist/components/textarea/textarea.d.ts +2 -2
  205. package/dist/components/textarea/textarea.d.ts.map +1 -1
  206. package/dist/components/textarea/textarea.js +19 -6
  207. package/dist/components/textarea/textarea.js.map +1 -1
  208. package/dist/components/toast/toast.d.ts.map +1 -1
  209. package/dist/components/toast/toast.js +12 -2
  210. package/dist/components/toast/toast.js.map +1 -1
  211. package/dist/index.d.ts +5 -0
  212. package/dist/index.d.ts.map +1 -1
  213. package/dist/index.js +5 -0
  214. package/dist/index.js.map +1 -1
  215. package/dist/lib/frosted-surface.d.ts +33 -0
  216. package/dist/lib/frosted-surface.d.ts.map +1 -0
  217. package/dist/lib/frosted-surface.js +181 -0
  218. package/dist/lib/frosted-surface.js.map +1 -0
  219. package/dist/lib/interaction-tokens.d.ts +26 -0
  220. package/dist/lib/interaction-tokens.d.ts.map +1 -0
  221. package/dist/lib/interaction-tokens.js +70 -0
  222. package/dist/lib/interaction-tokens.js.map +1 -0
  223. package/dist/lib/react-native-classname.d.ts +23 -0
  224. package/dist/lib/react-native-classname.d.ts.map +1 -0
  225. package/dist/lib/react-native-classname.js +2 -0
  226. package/dist/lib/react-native-classname.js.map +1 -0
  227. package/dist/lib/theme-colors.d.ts +33 -4
  228. package/dist/lib/theme-colors.d.ts.map +1 -1
  229. package/dist/lib/theme-colors.js +249 -37
  230. package/dist/lib/theme-colors.js.map +1 -1
  231. package/dist/lib/visual-tokens.d.ts +39 -0
  232. package/dist/lib/visual-tokens.d.ts.map +1 -0
  233. package/dist/lib/visual-tokens.js +91 -0
  234. package/dist/lib/visual-tokens.js.map +1 -0
  235. package/dist/vite.d.ts +47 -0
  236. package/dist/vite.d.ts.map +1 -0
  237. package/dist/vite.js +110 -0
  238. package/dist/vite.js.map +1 -0
  239. package/package.json +16 -2
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/blocks/chat/chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AASjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CAEvC;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,yFAAyF;IACzF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAwBD,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,2CAoCA;AAID,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CAgBzF;AAID,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,MAAM,EACN,WAA0B,EAC1B,WAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,OAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAoB,EACpB,sBAA0B,EAC1B,SAAS,EACT,iBAAiB,GAClB,EAAE,SAAS,2CAgFX"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/blocks/chat/chat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAkBjD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;CAEvC;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,yFAAyF;IACzF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+FAA+F;IAC/F,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAwBD,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,2CA0CA;AAID,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,oBAAoB,2CAgBzF;AAMD,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,MAAM,EACN,WAA0B,EAC1B,WAA+B,EAC/B,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,OAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAoB,EACpB,sBAA0B,EAC1B,SAAS,EACT,iBAAiB,GAClB,EAAE,SAAS,2CAgFX"}
@@ -1,9 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { useRef, useEffect } from 'react';
3
- import { View, ScrollView, Pressable, KeyboardAvoidingView, Platform } from 'react-native';
3
+ import { View, ScrollView, Pressable, KeyboardAvoidingView, Platform, useWindowDimensions, } from 'react-native';
4
4
  import { Text } from '../../components/text';
5
5
  import { SmartInput } from '../layout/smart-input';
6
6
  import { cn } from '../../lib/cn';
7
+ import { useInteractionTokens, withInteractivePressableStyle } from '../../lib/interaction-tokens';
8
+ import { useVisualTokens } from '../../lib/visual-tokens';
7
9
  import { tv } from '../../lib/tv';
8
10
  // ─── ChatMessage Variants ────────────────────────────────────
9
11
  const contentSizeClasses = {
@@ -12,12 +14,12 @@ const contentSizeClasses = {
12
14
  lg: 'text-lg',
13
15
  };
14
16
  const chatMessageBubbleVariants = tv({
15
- base: 'max-w-[85%] rounded-2xl px-4 py-3',
17
+ base: 'rounded-2xl px-4 py-3',
16
18
  variants: {
17
19
  role: {
18
20
  user: 'self-end bg-primary',
19
21
  assistant: 'self-start bg-muted',
20
- system: 'self-center bg-muted/50 max-w-[90%]',
22
+ system: 'self-center bg-muted-soft',
21
23
  },
22
24
  },
23
25
  defaultVariants: { role: 'assistant' },
@@ -27,14 +29,19 @@ export function ChatMessageBubble({ message, contentClassName, }) {
27
29
  const role = message.role === 'system' ? 'system' : message.role;
28
30
  const isUser = message.role === 'user';
29
31
  const sizeClass = contentSizeClasses[message.contentSize ?? 'default'];
30
- return (_jsxs(View, { accessible: true, accessibilityRole: "none", accessibilityLabel: isUser ? 'Your message' : message.role === 'system' ? 'System message' : 'Assistant message', className: chatMessageBubbleVariants({ role }), children: [_jsx(Text, { className: cn('leading-relaxed', sizeClass, isUser ? 'text-primary-foreground' : 'text-foreground', contentClassName), children: message.content }), message.secondary && (_jsx(Text, { className: cn('mt-1 text-xs', isUser ? 'text-primary-foreground/70' : 'text-muted-foreground'), children: message.secondary }))] }));
32
+ const visual = useVisualTokens();
33
+ const { width: screenWidth } = useWindowDimensions();
34
+ const ratio = role === 'system' ? visual.chatSystemBubbleMaxWidthRatio : visual.chatBubbleMaxWidthRatio;
35
+ const maxWidth = screenWidth * ratio;
36
+ return (_jsxs(View, { accessible: true, accessibilityRole: "none", accessibilityLabel: isUser ? 'Your message' : message.role === 'system' ? 'System message' : 'Assistant message', className: chatMessageBubbleVariants({ role }), style: { maxWidth }, children: [_jsx(Text, { className: cn('leading-relaxed', sizeClass, isUser ? 'text-primary-foreground' : 'text-foreground', contentClassName), children: message.content }), message.secondary && (_jsx(Text, { className: cn('mt-1 text-xs', isUser ? 'text-primary-foreground-muted' : 'text-muted-foreground'), children: message.secondary }))] }));
31
37
  }
32
38
  // ─── ChatSuggestions ──────────────────────────────────────────
33
39
  export function ChatSuggestions({ suggestions, onSelect, className }) {
34
40
  return (_jsx(View, { className: cn('flex-row flex-wrap justify-center gap-2 px-4 py-6', className), children: suggestions.map((text, i) => (_jsx(Pressable, { onPress: () => onSelect(text), accessibilityRole: "button", accessibilityLabel: `Suggestion: ${text}`, className: "rounded-full border border-border bg-muted px-4 py-2 active:bg-muted", children: _jsx(Text, { className: "text-sm text-foreground", children: text }) }, `${text}-${i}`))) }));
35
41
  }
42
+ const EMPTY_SUGGESTIONS = [];
36
43
  // ─── Chat ────────────────────────────────────────────────────
37
- export function Chat({ messages, value, onChangeText, onSend, placeholder = 'Message...', suggestions = [], onSuggestionPress, leftSlot, rightSlot, loading = false, header, emptyTitle, emptyDescription, exampleMessage, renderMessage, loadingIndicator, inputSafeArea = true, keyboardVerticalOffset = 0, className, messagesClassName, }) {
44
+ export function Chat({ messages, value, onChangeText, onSend, placeholder = 'Message...', suggestions = EMPTY_SUGGESTIONS, onSuggestionPress, leftSlot, rightSlot, loading = false, header, emptyTitle, emptyDescription, exampleMessage, renderMessage, loadingIndicator, inputSafeArea = true, keyboardVerticalOffset = 0, className, messagesClassName, }) {
38
45
  const scrollRef = useRef(null);
39
46
  const isEmpty = messages.length === 0;
40
47
  const showSuggestions = isEmpty && suggestions.length > 0;
@@ -52,6 +59,10 @@ export function Chat({ messages, value, onChangeText, onSend, placeholder = 'Mes
52
59
  }
53
60
  // ─── ChatSendButton ───────────────────────────────────────────
54
61
  function ChatSendButton({ onPress, disabled }) {
55
- return (_jsx(Pressable, { onPress: onPress, disabled: disabled, accessibilityRole: "button", accessibilityLabel: disabled ? 'Send (disabled)' : 'Send message', className: cn('h-11 w-11 items-center justify-center rounded-full', disabled ? 'bg-muted opacity-50' : 'bg-primary active:opacity-90'), children: _jsx(Text, { className: "text-lg text-primary-foreground", children: "\u2191" }) }));
62
+ const interaction = useInteractionTokens();
63
+ return (_jsx(Pressable, { onPress: onPress, disabled: disabled, accessibilityRole: "button", accessibilityLabel: disabled ? 'Send (disabled)' : 'Send message', style: withInteractivePressableStyle(undefined, interaction, {
64
+ disabled: Boolean(disabled),
65
+ pressedVariant: 'strong',
66
+ }), className: cn('h-11 w-11 items-center justify-center rounded-full', disabled ? 'bg-muted' : 'bg-primary'), children: _jsx(Text, { className: "text-lg text-primary-foreground", children: "\u2191" }) }));
56
67
  }
57
68
  //# sourceMappingURL=chat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/blocks/chat/chat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/blocks/chat/chat.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ViewProps } from 'react-native';
3
+ export interface FeatureGateProps extends ViewProps {
4
+ title: string;
5
+ description: string;
6
+ icon?: ReactNode;
7
+ buttonLabel?: string;
8
+ onUpgrade?: () => void;
9
+ children?: ReactNode;
10
+ className?: string;
11
+ }
12
+ export declare function FeatureGate({ title, description, icon, buttonLabel, onUpgrade, children, className, ...props }: FeatureGateProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=feature-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-gate.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/feature-gate.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMpD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,IAAI,EACJ,WAAuB,EACvB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CA+BlB"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { Card } from '../../components/card';
4
+ import { Button, ButtonText } from '../../components/button';
5
+ import { Text } from '../../components/text';
6
+ import { cn } from '../../lib/cn';
7
+ export function FeatureGate({ title, description, icon, buttonLabel = 'Upgrade', onUpgrade, children, className, ...props }) {
8
+ if (!children) {
9
+ return (_jsx(Card, { className: cn('rounded-xl border-dashed border-border p-5', className), ...props, children: _jsxs(View, { className: "items-start gap-3", children: [icon ? _jsx(View, { children: icon }) : null, _jsxs(View, { className: "gap-1", children: [_jsx(Text, { className: "text-base font-semibold text-foreground", children: title }), _jsx(Text, { className: "text-sm text-muted-foreground", children: description })] }), _jsx(Button, { onPress: onUpgrade, disabled: !onUpgrade, children: _jsx(ButtonText, { children: buttonLabel }) })] }) }));
10
+ }
11
+ return (_jsxs(View, { className: cn('overflow-hidden rounded-xl border border-border', className), ...props, children: [_jsx(View, { className: "opacity-45", children: children }), _jsxs(View, { className: "absolute inset-0 items-center justify-center bg-background/70 px-6", children: [icon ? _jsx(View, { className: "mb-3", children: icon }) : null, _jsx(Text, { className: "text-center text-base font-semibold text-foreground", children: title }), _jsx(Text, { className: "mt-1 text-center text-sm text-muted-foreground", children: description }), _jsx(Button, { className: "mt-4", onPress: onUpgrade, disabled: !onUpgrade, children: _jsx(ButtonText, { children: buttonLabel }) })] })] }));
12
+ }
13
+ //# sourceMappingURL=feature-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-gate.js","sourceRoot":"","sources":["../../../src/blocks/commerce/feature-gate.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,MAAM,UAAU,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,IAAI,EACJ,WAAW,GAAG,SAAS,EACvB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACS;IACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,4CAA4C,EAAE,SAAS,CAAC,KAAM,KAAK,YACrF,MAAC,IAAI,IAAC,SAAS,EAAC,mBAAmB,aAChC,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,cAAE,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,EAClC,MAAC,IAAI,IAAC,SAAS,EAAC,OAAO,aACrB,KAAC,IAAI,IAAC,SAAS,EAAC,yCAAyC,YAAE,KAAK,GAAQ,EACxE,KAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,YAAE,WAAW,GAAQ,IAC/D,EACP,KAAC,MAAM,IAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,SAAS,YAC9C,KAAC,UAAU,cAAE,WAAW,GAAc,GAC/B,IACJ,GACF,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,iDAAiD,EAAE,SAAS,CAAC,KAAM,KAAK,aAC1F,KAAC,IAAI,IAAC,SAAS,EAAC,YAAY,YAAE,QAAQ,GAAQ,EAC9C,MAAC,IAAI,IAAC,SAAS,EAAC,oEAAoE,aACjF,IAAI,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YAAE,IAAI,GAAQ,CAAC,CAAC,CAAC,IAAI,EACnD,KAAC,IAAI,IAAC,SAAS,EAAC,qDAAqD,YAAE,KAAK,GAAQ,EACpF,KAAC,IAAI,IAAC,SAAS,EAAC,gDAAgD,YAAE,WAAW,GAAQ,EACrF,KAAC,MAAM,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,SAAS,YAC/D,KAAC,UAAU,cAAE,WAAW,GAAc,GAC/B,IACJ,IACF,CACR,CAAC;AACJ,CAAC"}
@@ -2,4 +2,9 @@ export { ProductCard, type ProductCardProps } from './product-card';
2
2
  export { PricingCard, type PricingCardProps, type PricingFeature } from './pricing-card';
3
3
  export { MetricCard, type MetricCardProps } from './metric-card';
4
4
  export { CheckoutSummary, type CheckoutSummaryProps, type CheckoutLineItem, } from './checkout-summary';
5
+ export { SubscriptionCard, type SubscriptionCardProps } from './subscription-card';
6
+ export { FeatureGate, type FeatureGateProps } from './feature-gate';
7
+ export { UsageBar, type UsageBarProps, type UsageBarVariant } from './usage-bar';
8
+ export { PlanToggle, type PlanToggleProps, type PlanToggleValue } from './plan-toggle';
9
+ export { UpgradeBanner, type UpgradeBannerProps, type UpgradeBannerVariant, } from './upgrade-banner';
5
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC"}
@@ -2,4 +2,9 @@ export { ProductCard } from './product-card';
2
2
  export { PricingCard } from './pricing-card';
3
3
  export { MetricCard } from './metric-card';
4
4
  export { CheckoutSummary, } from './checkout-summary';
5
+ export { SubscriptionCard } from './subscription-card';
6
+ export { FeatureGate } from './feature-gate';
7
+ export { UsageBar } from './usage-bar';
8
+ export { PlanToggle } from './plan-toggle';
9
+ export { UpgradeBanner, } from './upgrade-banner';
5
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/blocks/commerce/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,WAAW,EAA8C,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,eAAe,GAGhB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/blocks/commerce/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,WAAW,EAA8C,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAA8B,MAAM,qBAAqB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAyB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAA4C,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,UAAU,EAA8C,MAAM,eAAe,CAAC;AACvF,OAAO,EACL,aAAa,GAGd,MAAM,kBAAkB,CAAC"}
@@ -48,7 +48,9 @@ export interface MetricCardProps extends ViewProps, VariantProps<typeof metricCa
48
48
  color: string;
49
49
  }[];
50
50
  icon?: React.ReactNode;
51
+ /** Show a skeleton placeholder instead of content. */
52
+ loading?: boolean;
51
53
  }
52
- declare function MetricCard({ className, label, value, subtitle, progress, segments, icon, variant, ...props }: MetricCardProps): import("react/jsx-runtime").JSX.Element;
54
+ declare function MetricCard({ className, label, value, subtitle, progress, segments, icon, variant, loading, ...props }: MetricCardProps): import("react/jsx-runtime").JSX.Element;
53
55
  export { MetricCard, metricCardVariants };
54
56
  //# sourceMappingURL=metric-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metric-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/metric-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAErD,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAWtB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,SAAS,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACT,EAAE,eAAe,2CA4CjB;AAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"metric-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/metric-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKpD,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAErD,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAWtB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,SAAS,EAAE,YAAY,CAAC,OAAO,kBAAkB,CAAC;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAwBD,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,OAAe,EACf,GAAG,KAAK,EACT,EAAE,eAAe,2CAgDjB;AAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"}
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { View } from 'react-native';
3
3
  import { Text } from '../../components/text';
4
4
  import { Card } from '../../components/card';
5
+ import { Skeleton } from '../../components/skeleton';
5
6
  import { cn } from '../../lib/cn';
6
7
  import { tv } from '../../lib/tv';
7
8
  const metricCardVariants = tv({
@@ -16,7 +17,13 @@ const metricCardVariants = tv({
16
17
  variant: 'default',
17
18
  },
18
19
  });
19
- function MetricCard({ className, label, value, subtitle, progress, segments, icon, variant, ...props }) {
20
+ function MetricCardSkeleton({ className, variant, }) {
21
+ return (_jsxs(Card, { className: cn(metricCardVariants({ variant }), className), children: [_jsxs(View, { className: "flex-row items-start justify-between mb-2", children: [_jsx(Skeleton, { className: "h-3 w-1/3 rounded-md" }), _jsx(Skeleton, { className: "h-5 w-5 rounded-sm" })] }), _jsx(Skeleton, { className: "h-6 w-1/2 rounded-md mb-1" }), _jsx(Skeleton, { className: "h-3 w-2/5 rounded-md" }), _jsx(View, { className: "mt-3", children: _jsx(Skeleton, { className: "h-2 w-full rounded-full" }) })] }));
22
+ }
23
+ function MetricCard({ className, label, value, subtitle, progress, segments, icon, variant, loading = false, ...props }) {
24
+ if (loading) {
25
+ return _jsx(MetricCardSkeleton, { className: className, variant: variant ?? 'default' });
26
+ }
20
27
  return (_jsxs(Card, { className: cn(metricCardVariants({ variant }), className), ...props, children: [_jsxs(View, { className: "flex-row items-start justify-between mb-2", children: [_jsx(Text, { variant: "caption", className: "text-muted-foreground", children: label }), icon && _jsx(View, { children: icon })] }), _jsx(Text, { variant: "heading", className: "mb-1", children: value }), subtitle && (_jsx(Text, { variant: "caption", className: "text-muted-foreground", children: subtitle })), progress !== undefined && (_jsx(View, { className: "mt-3", children: _jsx(View, { className: "h-2 bg-muted rounded-full overflow-hidden", children: _jsx(View, { className: "h-full bg-primary rounded-full", style: { width: `${Math.min(100, Math.max(0, progress))}%` } }) }) })), segments && segments.length > 0 && (_jsx(View, { className: "mt-3 flex-row h-3 rounded-full overflow-hidden", children: segments.map((seg, i) => (_jsx(View, { className: "h-full", style: { width: `${seg.value}%`, backgroundColor: seg.color } }, i))) }))] }));
21
28
  }
22
29
  export { MetricCard, metricCardVariants };
@@ -1 +1 @@
1
- {"version":3,"file":"metric-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/metric-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AAErD,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC5B,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,qCAAqC;SAChD;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC,CAAC;AAYH,SAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACQ;IAChB,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,aACxE,MAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,aACzD,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,uBAAuB,YACtD,KAAK,GACD,EACN,IAAI,IAAI,KAAC,IAAI,cAAE,IAAI,GAAQ,IACvB,EAEP,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,YACrC,KAAK,GACD,EAEN,QAAQ,IAAI,CACX,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,uBAAuB,YACtD,QAAQ,GACJ,CACR,EAEA,QAAQ,KAAK,SAAS,IAAI,CACzB,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YACpB,KAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,YACzD,KAAC,IAAI,IACH,SAAS,EAAC,gCAAgC,EAC1C,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,GAC5D,GACG,GACF,CACR,EAEA,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAClC,KAAC,IAAI,IAAC,SAAS,EAAC,gDAAgD,YAC7D,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACxB,KAAC,IAAI,IAEH,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,KAAK,EAAE,IAFxD,CAAC,CAGN,CACH,CAAC,GACG,CACR,IACI,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"metric-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/metric-card.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,EAAE,EAAqB,MAAM,cAAc,CAAC;AAErD,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC5B,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,qCAAqC;SAChD;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CAAC,CAAC;AAcH,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,OAAO,GAIR;IACC,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,aAC7D,MAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,aACzD,KAAC,QAAQ,IAAC,SAAS,EAAC,sBAAsB,GAAG,EAC7C,KAAC,QAAQ,IAAC,SAAS,EAAC,oBAAoB,GAAG,IACtC,EACP,KAAC,QAAQ,IAAC,SAAS,EAAC,2BAA2B,GAAG,EAClD,KAAC,QAAQ,IAAC,SAAS,EAAC,sBAAsB,GAAG,EAC7C,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YACpB,KAAC,QAAQ,IAAC,SAAS,EAAC,yBAAyB,GAAG,GAC3C,IACF,CACR,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACQ;IAChB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,KAAC,kBAAkB,IAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,GAAI,CAAC;IACrF,CAAC;IAED,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAAM,KAAK,aACxE,MAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,aACzD,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,uBAAuB,YACtD,KAAK,GACD,EACN,IAAI,IAAI,KAAC,IAAI,cAAE,IAAI,GAAQ,IACvB,EAEP,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,MAAM,YACrC,KAAK,GACD,EAEN,QAAQ,IAAI,CACX,KAAC,IAAI,IAAC,OAAO,EAAC,SAAS,EAAC,SAAS,EAAC,uBAAuB,YACtD,QAAQ,GACJ,CACR,EAEA,QAAQ,KAAK,SAAS,IAAI,CACzB,KAAC,IAAI,IAAC,SAAS,EAAC,MAAM,YACpB,KAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,YACzD,KAAC,IAAI,IACH,SAAS,EAAC,gCAAgC,EAC1C,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,GAC5D,GACG,GACF,CACR,EAEA,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAClC,KAAC,IAAI,IAAC,SAAS,EAAC,gDAAgD,YAC7D,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACxB,KAAC,IAAI,IAEH,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,eAAe,EAAE,GAAG,CAAC,KAAK,EAAE,IAFxD,CAAC,CAGN,CACH,CAAC,GACG,CACR,IACI,CACR,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { type ViewProps } from 'react-native';
2
+ export type PlanToggleValue = 'monthly' | 'annual';
3
+ export interface PlanToggleProps extends ViewProps {
4
+ selected: PlanToggleValue;
5
+ monthlyLabel?: string;
6
+ annualLabel?: string;
7
+ annualDiscount?: string;
8
+ onChange?: (value: PlanToggleValue) => void;
9
+ className?: string;
10
+ }
11
+ export declare function PlanToggle({ selected, monthlyLabel, annualLabel, annualDiscount, onChange, className, ...props }: PlanToggleProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=plan-toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-toggle.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/plan-toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAOpD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,YAAwB,EACxB,WAAsB,EACtB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,2CAsCjB"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { Pressable } from '../../components/pressable';
4
+ import { Badge, BadgeText } from '../../components/badge';
5
+ import { Text } from '../../components/text';
6
+ import { cn } from '../../lib/cn';
7
+ import { useInteractionTokens, withInteractivePressableStyle } from '../../lib/interaction-tokens';
8
+ export function PlanToggle({ selected, monthlyLabel = 'Monthly', annualLabel = 'Annual', annualDiscount, onChange, className, ...props }) {
9
+ const interaction = useInteractionTokens();
10
+ const renderItem = (value, label) => {
11
+ const active = selected === value;
12
+ return (_jsxs(Pressable, { className: cn('flex-1 flex-row items-center justify-center gap-2 rounded-lg px-3 py-2', active ? 'bg-background border border-border' : 'bg-transparent'), style: withInteractivePressableStyle(undefined, interaction, {
13
+ disabled: !onChange,
14
+ pressedVariant: 'default',
15
+ }), disabled: !onChange, onPress: () => onChange?.(value), children: [_jsx(Text, { className: cn('text-sm', active ? 'text-foreground' : 'text-muted-foreground'), children: label }), value === 'annual' && annualDiscount ? (_jsx(Badge, { variant: "success", children: _jsx(BadgeText, { children: annualDiscount }) })) : null] }, value));
16
+ };
17
+ return (_jsx(View, { className: cn('rounded-xl bg-muted p-1', className), ...props, children: _jsx(View, { className: "flex-row", children: [renderItem('monthly', monthlyLabel), renderItem('annual', annualLabel)] }) }));
18
+ }
19
+ //# sourceMappingURL=plan-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-toggle.js","sourceRoot":"","sources":["../../../src/blocks/commerce/plan-toggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAanG,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,EACR,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,EACtB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACQ;IAChB,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAE3C,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAE,KAAa,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,QAAQ,KAAK,KAAK,CAAC;QAClC,OAAO,CACL,MAAC,SAAS,IAER,SAAS,EAAE,EAAE,CACX,wEAAwE,EACxE,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,gBAAgB,CACjE,EACD,KAAK,EAAE,6BAA6B,CAAC,SAAS,EAAE,WAAW,EAAE;gBAC3D,QAAQ,EAAE,CAAC,QAAQ;gBACnB,cAAc,EAAE,SAAS;aAC1B,CAAC,EACF,QAAQ,EAAE,CAAC,QAAQ,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,aAEhC,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,CAAC,YACjF,KAAK,GACD,EACN,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,CAAC,CAAC,CACtC,KAAC,KAAK,IAAC,OAAO,EAAC,SAAS,YACtB,KAAC,SAAS,cAAE,cAAc,GAAa,GACjC,CACT,CAAC,CAAC,CAAC,IAAI,KAnBH,KAAK,CAoBA,CACb,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,KAAM,KAAK,YAClE,KAAC,IAAI,IAAC,SAAS,EAAC,UAAU,YACvB,CAAC,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GACpE,GACF,CACR,CAAC;AACJ,CAAC"}
@@ -13,6 +13,8 @@ export interface PricingCardProps extends ViewProps {
13
13
  highlighted?: boolean;
14
14
  buttonLabel?: string;
15
15
  onPress?: () => void;
16
+ /** Show a skeleton placeholder instead of content. */
17
+ loading?: boolean;
16
18
  }
17
- export declare function PricingCard({ name, description, price, period, features, badge, highlighted, buttonLabel, onPress, className, ...props }: PricingCardProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function PricingCard({ name, description, price, period, features, badge, highlighted, buttonLabel, onPress, loading, className, ...props }: PricingCardProps): import("react/jsx-runtime").JSX.Element;
18
20
  //# sourceMappingURL=pricing-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pricing-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/pricing-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAQpD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAID,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAiB,EACjB,QAAQ,EACR,KAAK,EACL,WAAmB,EACnB,WAA2B,EAC3B,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAqDlB"}
1
+ {"version":3,"file":"pricing-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/pricing-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AASpD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA2CD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAiB,EACjB,QAAQ,EACR,KAAK,EACL,WAAmB,EACnB,WAA2B,EAC3B,OAAO,EACP,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAyDlB"}
@@ -3,9 +3,17 @@ import { View } from 'react-native';
3
3
  import { Text } from '../../components/text';
4
4
  import { Button, ButtonText } from '../../components/button';
5
5
  import { Badge, BadgeText } from '../../components/badge';
6
+ import { Skeleton } from '../../components/skeleton';
6
7
  import { cn } from '../../lib/cn';
8
+ // ─── Skeleton ─────────────────────────────────────────────────
9
+ function PricingCardSkeleton({ highlighted = false, className, }) {
10
+ return (_jsxs(View, { className: cn('overflow-hidden rounded-2xl p-6', highlighted ? 'border-2 border-primary bg-card' : 'border border-border bg-card', className), children: [_jsxs(View, { className: "mb-4 flex-row items-center justify-between", children: [_jsx(Skeleton, { className: "h-5 w-1/3 rounded-md" }), _jsx(Skeleton, { className: "h-5 w-16 rounded-full" })] }), _jsx(Skeleton, { className: "mb-4 h-3 w-3/4 rounded-md" }), _jsxs(View, { className: "mb-6 flex-row items-baseline gap-1", children: [_jsx(Skeleton, { className: "h-10 w-20 rounded-md" }), _jsx(Skeleton, { className: "h-3 w-12 rounded-md" })] }), _jsx(View, { className: "mb-6 gap-3", children: [1, 2, 3, 4].map((i) => (_jsxs(View, { className: "flex-row items-center gap-3", children: [_jsx(Skeleton, { className: "h-4 w-4 rounded-sm" }), _jsx(Skeleton, { className: "h-3 w-3/5 rounded-md" })] }, i))) }), _jsx(Skeleton, { className: "h-10 w-full rounded-lg" })] }));
11
+ }
7
12
  // ─── Component ───────────────────────────────────────────────
8
- export function PricingCard({ name, description, price, period = '/month', features, badge, highlighted = false, buttonLabel = 'Get Started', onPress, className, ...props }) {
13
+ export function PricingCard({ name, description, price, period = '/month', features, badge, highlighted = false, buttonLabel = 'Get Started', onPress, loading = false, className, ...props }) {
14
+ if (loading) {
15
+ return _jsx(PricingCardSkeleton, { highlighted: highlighted, className: className });
16
+ }
9
17
  return (_jsxs(View, { className: cn('overflow-hidden rounded-2xl p-6', highlighted ? 'border-2 border-primary bg-card' : 'border border-border bg-card', className), ...props, children: [_jsxs(View, { className: "mb-4 flex-row items-center justify-between", children: [_jsx(Text, { className: "text-lg font-semibold text-foreground", children: name }), badge && (_jsx(Badge, { variant: highlighted ? 'default' : 'secondary', children: _jsx(BadgeText, { children: badge }) }))] }), description && _jsx(Text, { className: "mb-4 text-sm text-muted-foreground", children: description }), _jsxs(View, { className: "mb-6 flex-row items-baseline", children: [_jsx(Text, { className: "text-4xl font-bold text-foreground", children: price }), _jsx(Text, { className: "ml-1 text-muted-foreground", children: period })] }), _jsx(View, { className: "mb-6 gap-3", children: features.map((feature, index) => (_jsxs(View, { className: "flex-row items-center gap-3", children: [_jsx(Text, { className: feature.included ? 'text-primary' : 'text-muted-foreground', children: feature.included ? '✓' : '✕' }), _jsx(Text, { className: cn('text-sm', feature.included ? 'text-foreground' : 'text-muted-foreground line-through'), children: feature.label })] }, index))) }), _jsx(Button, { variant: highlighted ? 'default' : 'outline', className: "w-full", onPress: onPress, children: _jsx(ButtonText, { children: buttonLabel }) })] }));
10
18
  }
11
19
  //# sourceMappingURL=pricing-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pricing-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/pricing-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAqBlC,gEAAgE;AAEhE,MAAM,UAAU,WAAW,CAAC,EAC1B,IAAI,EACJ,WAAW,EACX,KAAK,EACL,MAAM,GAAG,QAAQ,EACjB,QAAQ,EACR,KAAK,EACL,WAAW,GAAG,KAAK,EACnB,WAAW,GAAG,aAAa,EAC3B,OAAO,EACP,SAAS,EACT,GAAG,KAAK,EACS;IACjB,OAAO,CACL,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,iCAAiC,EACjC,WAAW,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,8BAA8B,EAChF,SAAS,CACV,KACG,KAAK,aAGT,MAAC,IAAI,IAAC,SAAS,EAAC,4CAA4C,aAC1D,KAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,YAAE,IAAI,GAAQ,EACpE,KAAK,IAAI,CACR,KAAC,KAAK,IAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,YACnD,KAAC,SAAS,cAAE,KAAK,GAAa,GACxB,CACT,IACI,EAEN,WAAW,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,oCAAoC,YAAE,WAAW,GAAQ,EAGzF,MAAC,IAAI,IAAC,SAAS,EAAC,8BAA8B,aAC5C,KAAC,IAAI,IAAC,SAAS,EAAC,oCAAoC,YAAE,KAAK,GAAQ,EACnE,KAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,YAAE,MAAM,GAAQ,IACvD,EAGP,KAAC,IAAI,IAAC,SAAS,EAAC,YAAY,YACzB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,MAAC,IAAI,IAAa,SAAS,EAAC,6BAA6B,aACvD,KAAC,IAAI,IAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,YACzE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GACxB,EACP,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,SAAS,EACT,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,oCAAoC,CAC5E,YAEA,OAAO,CAAC,KAAK,GACT,KAXE,KAAK,CAYT,CACR,CAAC,GACG,EAGP,KAAC,MAAM,IAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,YACvF,KAAC,UAAU,cAAE,WAAW,GAAc,GAC/B,IACJ,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"pricing-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/pricing-card.tsx"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface ProductCardProps extends Omit<PressableProps, 'children'> {
10
10
  reviewCount?: number;
11
11
  inStock?: boolean;
12
12
  variant?: 'vertical' | 'horizontal';
13
+ /** Show a skeleton placeholder instead of content. */
14
+ loading?: boolean;
13
15
  }
14
- export declare function ProductCard({ imageUrl, title, description, price, originalPrice, badge, rating, reviewCount, inStock, variant, className, ...props }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function ProductCard({ imageUrl, title, description, price, originalPrice, badge, rating, reviewCount, inStock, variant, loading, className, style: styleProp, ...props }: ProductCardProps): import("react/jsx-runtime").JSX.Element;
15
17
  //# sourceMappingURL=product-card.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/product-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAO3E,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;CACrC;AAID,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAAW,EACX,KAAK,EACL,aAAa,EACb,KAAK,EACL,MAAM,EACN,WAAW,EACX,OAAc,EACd,OAAoB,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAyElB"}
1
+ {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/product-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAS3E,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACpC,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiCD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAAW,EACX,KAAK,EACL,aAAa,EACb,KAAK,EACL,MAAM,EACN,WAAW,EACX,OAAc,EACd,OAAoB,EACpB,OAAe,EACf,SAAS,EACT,KAAK,EAAE,SAAS,EAChB,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAkFlB"}
@@ -2,10 +2,24 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { View, Pressable, Image } from 'react-native';
3
3
  import { Text } from '../../components/text';
4
4
  import { Badge, BadgeText } from '../../components/badge';
5
+ import { Skeleton } from '../../components/skeleton';
5
6
  import { cn } from '../../lib/cn';
7
+ import { useInteractionTokens, withInteractivePressableStyle } from '../../lib/interaction-tokens';
8
+ // ─── Skeleton ─────────────────────────────────────────────────
9
+ function ProductCardSkeleton({ variant = 'vertical', className, }) {
10
+ const isHorizontal = variant === 'horizontal';
11
+ return (_jsxs(View, { className: cn('overflow-hidden rounded-xl border border-border bg-card', isHorizontal ? 'flex-row' : 'flex-col', className), children: [_jsx(Skeleton, { className: cn(isHorizontal ? 'h-28 w-28' : 'aspect-square w-full rounded-none') }), _jsxs(View, { className: cn('flex-1 p-3 gap-2', isHorizontal && 'justify-center'), children: [_jsx(Skeleton, { className: "h-4 w-3/4 rounded-md" }), !isHorizontal && _jsx(Skeleton, { className: "h-3 w-full rounded-md" }), _jsx(Skeleton, { className: "h-3 w-1/3 rounded-md" }), _jsx(Skeleton, { className: "h-5 w-1/4 rounded-md" })] })] }));
12
+ }
6
13
  // ─── Component ───────────────────────────────────────────────
7
- export function ProductCard({ imageUrl, title, description, price, originalPrice, badge, rating, reviewCount, inStock = true, variant = 'vertical', className, ...props }) {
14
+ export function ProductCard({ imageUrl, title, description, price, originalPrice, badge, rating, reviewCount, inStock = true, variant = 'vertical', loading = false, className, style: styleProp, ...props }) {
8
15
  const isHorizontal = variant === 'horizontal';
9
- return (_jsxs(Pressable, { className: cn('overflow-hidden rounded-xl border border-border bg-card active:opacity-90', isHorizontal ? 'flex-row' : 'flex-col', className), ...props, children: [_jsxs(View, { className: cn('items-center justify-center bg-muted', isHorizontal ? 'h-28 w-28' : 'aspect-square w-full'), children: [imageUrl ? (_jsx(Image, { source: { uri: imageUrl }, className: "h-full w-full", resizeMode: "cover" })) : (_jsx(View, { className: "items-center justify-center gap-2", children: _jsx(View, { className: "h-10 w-10 rounded-lg bg-muted-foreground/10 items-center justify-center", children: _jsx(Text, { className: "text-muted-foreground text-lg", children: "\uD83D\uDCE6" }) }) })), badge && (_jsx(View, { className: "absolute left-2 top-2", children: _jsx(Badge, { variant: "destructive", children: _jsx(BadgeText, { children: badge }) }) }))] }), _jsxs(View, { className: cn('flex-1 p-3', isHorizontal && 'justify-center'), children: [_jsx(Text, { className: "font-medium text-foreground", numberOfLines: 2, children: title }), description && !isHorizontal && (_jsx(Text, { className: "mt-1 text-sm text-muted-foreground", numberOfLines: 2, children: description })), rating !== undefined && (_jsxs(View, { className: "mt-1 flex-row items-center gap-1", children: [_jsx(Text, { className: "text-sm text-amber-500", children: "\u2605" }), _jsxs(Text, { className: "text-sm text-muted-foreground", children: [rating.toFixed(1), reviewCount !== undefined && ` (${reviewCount})`] })] })), _jsxs(View, { className: "mt-2 flex-row items-center gap-2", children: [_jsx(Text, { className: "text-lg font-bold text-foreground", children: price }), originalPrice && (_jsx(Text, { className: "text-sm text-muted-foreground line-through", children: originalPrice }))] }), !inStock && _jsx(Text, { className: "mt-1 text-sm text-destructive", children: "Out of stock" })] })] }));
16
+ const interaction = useInteractionTokens();
17
+ if (loading) {
18
+ return _jsx(ProductCardSkeleton, { variant: variant, className: className });
19
+ }
20
+ return (_jsxs(Pressable, { className: cn('overflow-hidden rounded-xl border border-border bg-card', isHorizontal ? 'flex-row' : 'flex-col', className), style: withInteractivePressableStyle(styleProp, interaction, {
21
+ disabled: Boolean(props.disabled),
22
+ pressedVariant: 'strong',
23
+ }), ...props, children: [_jsxs(View, { className: cn('items-center justify-center bg-muted', isHorizontal ? 'h-28 w-28' : 'aspect-square w-full'), children: [imageUrl ? (_jsx(Image, { source: { uri: imageUrl }, className: "h-full w-full", resizeMode: "cover" })) : (_jsx(View, { className: "items-center justify-center gap-2", children: _jsx(View, { className: "h-10 w-10 rounded-lg bg-muted-soft items-center justify-center", children: _jsx(Text, { className: "text-muted-foreground text-lg", children: "\uD83D\uDCE6" }) }) })), badge && (_jsx(View, { className: "absolute left-2 top-2", children: _jsx(Badge, { variant: "destructive", children: _jsx(BadgeText, { children: badge }) }) }))] }), _jsxs(View, { className: cn('flex-1 p-3', isHorizontal && 'justify-center'), children: [_jsx(Text, { className: "font-medium text-foreground", numberOfLines: 2, children: title }), description && !isHorizontal && (_jsx(Text, { className: "mt-1 text-sm text-muted-foreground", numberOfLines: 2, children: description })), rating !== undefined && (_jsxs(View, { className: "mt-1 flex-row items-center gap-1", children: [_jsx(Text, { className: "text-sm text-accent", children: "\u2605" }), _jsxs(Text, { className: "text-sm text-muted-foreground", children: [rating.toFixed(1), reviewCount !== undefined && ` (${reviewCount})`] })] })), _jsxs(View, { className: "mt-2 flex-row items-center gap-2", children: [_jsx(Text, { className: "text-lg font-bold text-foreground", children: price }), originalPrice && (_jsx(Text, { className: "text-sm text-muted-foreground line-through", children: originalPrice }))] }), !inStock && _jsx(Text, { className: "mt-1 text-sm text-destructive", children: "Out of stock" })] })] }));
10
24
  }
11
25
  //# sourceMappingURL=product-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/product-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAuB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAiBlC,gEAAgE;AAEhE,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,WAAW,EACX,KAAK,EACL,aAAa,EACb,KAAK,EACL,MAAM,EACN,WAAW,EACX,OAAO,GAAG,IAAI,EACd,OAAO,GAAG,UAAU,EACpB,SAAS,EACT,GAAG,KAAK,EACS;IACjB,MAAM,YAAY,GAAG,OAAO,KAAK,YAAY,CAAC;IAE9C,OAAO,CACL,MAAC,SAAS,IACR,SAAS,EAAE,EAAE,CACX,2EAA2E,EAC3E,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EACtC,SAAS,CACV,KACG,KAAK,aAGT,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,sCAAsC,EACtC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CACpD,aAEA,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,KAAK,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAC,eAAe,EAAC,UAAU,EAAC,OAAO,GAAG,CAClF,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,SAAS,EAAC,mCAAmC,YACjD,KAAC,IAAI,IAAC,SAAS,EAAC,yEAAyE,YACvF,KAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,6BAAU,GACpD,GACF,CACR,EACA,KAAK,IAAI,CACR,KAAC,IAAI,IAAC,SAAS,EAAC,uBAAuB,YACrC,KAAC,KAAK,IAAC,OAAO,EAAC,aAAa,YAC1B,KAAC,SAAS,cAAE,KAAK,GAAa,GACxB,GACH,CACR,IACI,EAGP,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,IAAI,gBAAgB,CAAC,aACjE,KAAC,IAAI,IAAC,SAAS,EAAC,6BAA6B,EAAC,aAAa,EAAE,CAAC,YAC3D,KAAK,GACD,EAEN,WAAW,IAAI,CAAC,YAAY,IAAI,CAC/B,KAAC,IAAI,IAAC,SAAS,EAAC,oCAAoC,EAAC,aAAa,EAAE,CAAC,YAClE,WAAW,GACP,CACR,EAGA,MAAM,KAAK,SAAS,IAAI,CACvB,MAAC,IAAI,IAAC,SAAS,EAAC,kCAAkC,aAChD,KAAC,IAAI,IAAC,SAAS,EAAC,wBAAwB,uBAAS,EACjD,MAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,aAC5C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EACjB,WAAW,KAAK,SAAS,IAAI,KAAK,WAAW,GAAG,IAC5C,IACF,CACR,EAGD,MAAC,IAAI,IAAC,SAAS,EAAC,kCAAkC,aAChD,KAAC,IAAI,IAAC,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAQ,EACjE,aAAa,IAAI,CAChB,KAAC,IAAI,IAAC,SAAS,EAAC,4CAA4C,YAAE,aAAa,GAAQ,CACpF,IACI,EAGN,CAAC,OAAO,IAAI,KAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,6BAAoB,IAC3E,IACG,CACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"product-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/product-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type ViewProps } from 'react-native';
2
+ export interface SubscriptionCardProps extends ViewProps {
3
+ planName: string;
4
+ price: string;
5
+ period?: string;
6
+ expiresAt?: string;
7
+ isActive?: boolean;
8
+ onManage?: () => void;
9
+ onUpgrade?: () => void;
10
+ manageLabel?: string;
11
+ upgradeLabel?: string;
12
+ /** Show a skeleton placeholder instead of content. */
13
+ loading?: boolean;
14
+ className?: string;
15
+ }
16
+ export declare function SubscriptionCard({ planName, price, period, expiresAt, isActive, onManage, onUpgrade, manageLabel, upgradeLabel, loading, className, ...props }: SubscriptionCardProps): import("react/jsx-runtime").JSX.Element;
17
+ //# sourceMappingURL=subscription-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-card.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/subscription-card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAQpD,MAAM,WAAW,qBAAsB,SAAQ,SAAS;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,KAAK,EACL,MAAiB,EACjB,SAAS,EACT,QAAe,EACf,QAAQ,EACR,SAAS,EACT,WAA2B,EAC3B,YAAwB,EACxB,OAAe,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAoCvB"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { Card, CardContent, CardFooter, CardHeader, CardTitle } from '../../components/card';
4
+ import { Button, ButtonText } from '../../components/button';
5
+ import { Badge, BadgeText } from '../../components/badge';
6
+ import { Skeleton } from '../../components/skeleton';
7
+ import { Text } from '../../components/text';
8
+ import { cn } from '../../lib/cn';
9
+ function SubscriptionCardSkeleton({ className }) {
10
+ return (_jsxs(Card, { className: cn('rounded-xl', className), children: [_jsx(CardHeader, { className: "pb-2", children: _jsxs(View, { className: "flex-row items-center justify-between", children: [_jsx(Skeleton, { className: "h-5 w-1/3 rounded-md" }), _jsx(Skeleton, { className: "h-5 w-16 rounded-full" })] }) }), _jsxs(CardContent, { className: "gap-2", children: [_jsxs(View, { className: "flex-row items-baseline gap-1", children: [_jsx(Skeleton, { className: "h-7 w-20 rounded-md" }), _jsx(Skeleton, { className: "h-3 w-12 rounded-md" })] }), _jsx(Skeleton, { className: "h-3 w-2/5 rounded-md" })] }), _jsxs(CardFooter, { className: "gap-2", children: [_jsx(Skeleton, { className: "h-10 flex-1 rounded-lg" }), _jsx(Skeleton, { className: "h-10 flex-1 rounded-lg" })] })] }));
11
+ }
12
+ export function SubscriptionCard({ planName, price, period = '/month', expiresAt, isActive = true, onManage, onUpgrade, manageLabel = 'Manage plan', upgradeLabel = 'Upgrade', loading = false, className, ...props }) {
13
+ if (loading) {
14
+ return _jsx(SubscriptionCardSkeleton, { className: className });
15
+ }
16
+ return (_jsxs(Card, { className: cn('rounded-xl', className), ...props, children: [_jsx(CardHeader, { className: "pb-2", children: _jsxs(View, { className: "flex-row items-center justify-between", children: [_jsx(CardTitle, { children: planName }), _jsx(Badge, { variant: isActive ? 'success' : 'secondary', children: _jsx(BadgeText, { children: isActive ? 'Active' : 'Inactive' }) })] }) }), _jsxs(CardContent, { className: "gap-2", children: [_jsxs(View, { className: "flex-row items-baseline gap-1", children: [_jsx(Text, { className: "text-2xl font-bold text-foreground", children: price }), _jsx(Text, { className: "text-sm text-muted-foreground", children: period })] }), expiresAt ? (_jsxs(Text, { className: "text-sm text-muted-foreground", children: ["Renews on ", expiresAt] })) : (_jsx(Text, { className: "text-sm text-muted-foreground", children: "No renewal date set" }))] }), _jsxs(CardFooter, { className: "gap-2", children: [_jsx(Button, { variant: "outline", onPress: onManage, disabled: !onManage, children: _jsx(ButtonText, { children: manageLabel }) }), _jsx(Button, { onPress: onUpgrade, disabled: !onUpgrade, children: _jsx(ButtonText, { children: upgradeLabel }) })] })] }));
17
+ }
18
+ //# sourceMappingURL=subscription-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription-card.js","sourceRoot":"","sources":["../../../src/blocks/commerce/subscription-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ViewProps } from 'react-native';
2
+ export type UpgradeBannerVariant = 'info' | 'warning';
3
+ export interface UpgradeBannerProps extends ViewProps {
4
+ message: string;
5
+ actionLabel?: string;
6
+ onAction?: () => void;
7
+ onDismiss?: () => void;
8
+ variant?: UpgradeBannerVariant;
9
+ className?: string;
10
+ }
11
+ export declare function UpgradeBanner({ message, actionLabel, onAction, onDismiss, variant, className, ...props }: UpgradeBannerProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=upgrade-banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-banner.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/upgrade-banner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKpD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,WAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAgB,EAChB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAyBpB"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { Button, ButtonText } from '../../components/button';
4
+ import { Text } from '../../components/text';
5
+ import { cn } from '../../lib/cn';
6
+ export function UpgradeBanner({ message, actionLabel = 'Upgrade', onAction, onDismiss, variant = 'info', className, ...props }) {
7
+ return (_jsx(View, { className: cn('rounded-xl border p-4', variant === 'warning' ? 'border-warning/40 bg-warning/10' : 'border-info/40 bg-info/10', className), ...props, children: _jsxs(View, { className: "gap-3", children: [_jsx(Text, { className: "text-sm text-foreground", children: message }), _jsxs(View, { className: "flex-row gap-2", children: [_jsx(Button, { size: "sm", onPress: onAction, disabled: !onAction, children: _jsx(ButtonText, { children: actionLabel }) }), onDismiss ? (_jsx(Button, { size: "sm", variant: "ghost", onPress: onDismiss, children: _jsx(ButtonText, { children: "Dismiss" }) })) : null] })] }) }));
8
+ }
9
+ //# sourceMappingURL=upgrade-banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade-banner.js","sourceRoot":"","sources":["../../../src/blocks/commerce/upgrade-banner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAalC,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,WAAW,GAAG,SAAS,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,GAAG,MAAM,EAChB,SAAS,EACT,GAAG,KAAK,EACW;IACnB,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CACX,uBAAuB,EACvB,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,2BAA2B,EACvF,SAAS,CACV,KACG,KAAK,YAET,MAAC,IAAI,IAAC,SAAS,EAAC,OAAO,aACrB,KAAC,IAAI,IAAC,SAAS,EAAC,yBAAyB,YAAE,OAAO,GAAQ,EAC1D,MAAC,IAAI,IAAC,SAAS,EAAC,gBAAgB,aAC9B,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,YACtD,KAAC,UAAU,cAAE,WAAW,GAAc,GAC/B,EACR,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAE,SAAS,YAClD,KAAC,UAAU,0BAAqB,GACzB,CACV,CAAC,CAAC,CAAC,IAAI,IACH,IACF,GACF,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type ViewProps } from 'react-native';
2
+ export type UsageBarVariant = 'default' | 'warning' | 'exceeded';
3
+ export interface UsageBarProps extends ViewProps {
4
+ label: string;
5
+ used: number;
6
+ limit: number;
7
+ variant?: UsageBarVariant;
8
+ className?: string;
9
+ }
10
+ export declare function UsageBar({ label, used, limit, variant, className, ...props }: UsageBarProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=usage-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-bar.d.ts","sourceRoot":"","sources":["../../../src/blocks/commerce/usage-bar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjE,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAmC3F"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { View } from 'react-native';
3
+ import { Text } from '../../components/text';
4
+ import { cn } from '../../lib/cn';
5
+ function getUsageVariant(used, limit, variant) {
6
+ if (variant)
7
+ return variant;
8
+ if (limit <= 0)
9
+ return 'exceeded';
10
+ const ratio = used / limit;
11
+ if (ratio >= 1)
12
+ return 'exceeded';
13
+ if (ratio >= 0.8)
14
+ return 'warning';
15
+ return 'default';
16
+ }
17
+ export function UsageBar({ label, used, limit, variant, className, ...props }) {
18
+ const resolvedVariant = getUsageVariant(used, limit, variant);
19
+ const safeLimit = limit <= 0 ? 1 : limit;
20
+ const clamped = Math.max(0, Math.min(100, (used / safeLimit) * 100));
21
+ const progressClass = resolvedVariant === 'exceeded'
22
+ ? 'bg-destructive'
23
+ : resolvedVariant === 'warning'
24
+ ? 'bg-warning'
25
+ : 'bg-primary';
26
+ const captionClass = resolvedVariant === 'exceeded'
27
+ ? 'text-destructive'
28
+ : resolvedVariant === 'warning'
29
+ ? 'text-warning'
30
+ : 'text-muted-foreground';
31
+ return (_jsxs(View, { className: cn('gap-2', className), ...props, children: [_jsxs(View, { className: "flex-row items-center justify-between", children: [_jsx(Text, { className: "text-sm font-medium text-foreground", children: label }), _jsxs(Text, { className: cn('text-xs', captionClass), children: [used, "/", limit] })] }), _jsx(View, { className: "h-2 overflow-hidden rounded-full bg-muted", children: _jsx(View, { className: cn('h-full rounded-full', progressClass), style: { width: `${clamped}%` } }) })] }));
32
+ }
33
+ //# sourceMappingURL=usage-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-bar.js","sourceRoot":"","sources":["../../../src/blocks/commerce/usage-bar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAYlC,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa,EAAE,OAAyB;IAC7E,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC;IAClC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,SAAS,CAAC;IACnC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,EAAiB;IAC1F,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAErE,MAAM,aAAa,GACjB,eAAe,KAAK,UAAU;QAC5B,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,eAAe,KAAK,SAAS;YAC7B,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,YAAY,CAAC;IAErB,MAAM,YAAY,GAChB,eAAe,KAAK,UAAU;QAC5B,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,eAAe,KAAK,SAAS;YAC7B,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,uBAAuB,CAAC;IAEhC,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,KAAM,KAAK,aAChD,MAAC,IAAI,IAAC,SAAS,EAAC,uCAAuC,aACrD,KAAC,IAAI,IAAC,SAAS,EAAC,qCAAqC,YAAE,KAAK,GAAQ,EACpE,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,aACzC,IAAI,OAAG,KAAK,IACR,IACF,EACP,KAAC,IAAI,IAAC,SAAS,EAAC,2CAA2C,YACzD,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,aAAa,CAAC,EACnD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,GAAG,EAAE,GAC/B,GACG,IACF,CACR,CAAC;AACJ,CAAC"}