@dropins/tools 0.21.1 → 0.21.2-alpha2

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 (478) hide show
  1. package/components/Accordion/Accordion.d.ts +25 -0
  2. package/components/Accordion/Accordion.d.ts.map +1 -0
  3. package/components/Accordion/Accordion.jsx +59 -0
  4. package/components/Accordion/Accordion.stories.d.ts +22 -0
  5. package/components/Accordion/Accordion.stories.d.ts.map +1 -0
  6. package/components/Accordion/Accordion.stories.jsx +320 -0
  7. package/components/Accordion/Accordion.test.d.ts +3 -0
  8. package/components/Accordion/Accordion.test.d.ts.map +1 -0
  9. package/components/Accordion/Accordion.test.jsx +79 -0
  10. package/components/Accordion/index.d.ts +3 -0
  11. package/components/Accordion/index.d.ts.map +1 -0
  12. package/components/Accordion/index.js +2 -0
  13. package/components/ActionButton/ActionButton.d.ts +11 -0
  14. package/components/ActionButton/ActionButton.d.ts.map +1 -0
  15. package/components/ActionButton/ActionButton.jsx +14 -0
  16. package/components/ActionButton/ActionButton.stories.d.ts +16 -0
  17. package/components/ActionButton/ActionButton.stories.d.ts.map +1 -0
  18. package/components/ActionButton/ActionButton.stories.jsx +119 -0
  19. package/components/ActionButton/ActionButton.test.d.ts +3 -0
  20. package/components/ActionButton/ActionButton.test.d.ts.map +1 -0
  21. package/components/ActionButton/ActionButton.test.jsx +47 -0
  22. package/components/ActionButton/index.d.ts +2 -0
  23. package/components/ActionButton/index.d.ts.map +1 -0
  24. package/components/ActionButton/index.js +1 -0
  25. package/components/ActionButtonGroup/ActionButtonGroup.d.ts +20 -0
  26. package/components/ActionButtonGroup/ActionButtonGroup.d.ts.map +1 -0
  27. package/components/ActionButtonGroup/ActionButtonGroup.jsx +39 -0
  28. package/components/ActionButtonGroup/ActionButtonGroup.stories.d.ts +16 -0
  29. package/components/ActionButtonGroup/ActionButtonGroup.stories.d.ts.map +1 -0
  30. package/components/ActionButtonGroup/ActionButtonGroup.stories.jsx +72 -0
  31. package/components/ActionButtonGroup/ActionButtonGroup.test.d.ts +3 -0
  32. package/components/ActionButtonGroup/ActionButtonGroup.test.d.ts.map +1 -0
  33. package/components/ActionButtonGroup/ActionButtonGroup.test.jsx +78 -0
  34. package/components/ActionButtonGroup/index.d.ts +2 -0
  35. package/components/ActionButtonGroup/index.d.ts.map +1 -0
  36. package/components/ActionButtonGroup/index.js +1 -0
  37. package/components/AlertBanner/AlertBanner.d.ts +15 -0
  38. package/components/AlertBanner/AlertBanner.d.ts.map +1 -0
  39. package/components/AlertBanner/AlertBanner.jsx +30 -0
  40. package/components/AlertBanner/AlertBanner.stories.d.ts +17 -0
  41. package/components/AlertBanner/AlertBanner.stories.d.ts.map +1 -0
  42. package/components/AlertBanner/AlertBanner.stories.jsx +128 -0
  43. package/components/AlertBanner/AlertBanner.test.d.ts +3 -0
  44. package/components/AlertBanner/AlertBanner.test.d.ts.map +1 -0
  45. package/components/AlertBanner/AlertBanner.test.jsx +40 -0
  46. package/components/AlertBanner/index.d.ts +3 -0
  47. package/components/AlertBanner/index.d.ts.map +1 -0
  48. package/components/AlertBanner/index.js +2 -0
  49. package/components/Breadcrumbs/Breadcrumbs.d.ts +9 -0
  50. package/components/Breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  51. package/components/Breadcrumbs/Breadcrumbs.jsx +26 -0
  52. package/components/Breadcrumbs/Breadcrumbs.stories.d.ts +15 -0
  53. package/components/Breadcrumbs/Breadcrumbs.stories.d.ts.map +1 -0
  54. package/components/Breadcrumbs/Breadcrumbs.stories.jsx +110 -0
  55. package/components/Breadcrumbs/Breadcrumbs.test.d.ts +3 -0
  56. package/components/Breadcrumbs/Breadcrumbs.test.d.ts.map +1 -0
  57. package/components/Breadcrumbs/Breadcrumbs.test.jsx +67 -0
  58. package/components/Breadcrumbs/index.d.ts +3 -0
  59. package/components/Breadcrumbs/index.d.ts.map +1 -0
  60. package/components/Breadcrumbs/index.js +2 -0
  61. package/components/Button/Button.d.ts +15 -0
  62. package/components/Button/Button.d.ts.map +1 -0
  63. package/components/Button/Button.jsx +59 -0
  64. package/components/Button/Button.stories.d.ts +135 -0
  65. package/components/Button/Button.stories.d.ts.map +1 -0
  66. package/components/Button/Button.stories.jsx +354 -0
  67. package/components/Button/Button.test.d.ts +2 -0
  68. package/components/Button/Button.test.d.ts.map +1 -0
  69. package/components/Button/Button.test.jsx +134 -0
  70. package/components/Button/index.d.ts +3 -0
  71. package/components/Button/index.d.ts.map +1 -0
  72. package/components/Button/index.js +2 -0
  73. package/components/Card/Card.d.ts +9 -0
  74. package/components/Card/Card.d.ts.map +1 -0
  75. package/components/Card/Card.jsx +7 -0
  76. package/components/Card/Card.stories.d.ts +16 -0
  77. package/components/Card/Card.stories.d.ts.map +1 -0
  78. package/components/Card/Card.stories.jsx +47 -0
  79. package/components/Card/Card.test.d.ts +3 -0
  80. package/components/Card/Card.test.d.ts.map +1 -0
  81. package/components/Card/Card.test.jsx +26 -0
  82. package/components/Card/index.d.ts +2 -0
  83. package/components/Card/index.d.ts.map +1 -0
  84. package/components/Card/index.js +1 -0
  85. package/components/CartItem/CartItem.d.ts +25 -0
  86. package/components/CartItem/CartItem.d.ts.map +1 -0
  87. package/components/CartItem/CartItem.jsx +124 -0
  88. package/components/CartItem/CartItem.stories.d.ts +54 -0
  89. package/components/CartItem/CartItem.stories.d.ts.map +1 -0
  90. package/components/CartItem/CartItem.stories.jsx +309 -0
  91. package/components/CartItem/CartItem.test.d.ts +3 -0
  92. package/components/CartItem/CartItem.test.d.ts.map +1 -0
  93. package/components/CartItem/CartItem.test.jsx +71 -0
  94. package/components/CartItem/CartItemSkeleton.d.ts +3 -0
  95. package/components/CartItem/CartItemSkeleton.d.ts.map +1 -0
  96. package/components/CartItem/CartItemSkeleton.jsx +25 -0
  97. package/components/CartItem/CartItemSkeleton.test.d.ts +3 -0
  98. package/components/CartItem/CartItemSkeleton.test.d.ts.map +1 -0
  99. package/components/CartItem/CartItemSkeleton.test.jsx +11 -0
  100. package/components/CartItem/index.d.ts +4 -0
  101. package/components/CartItem/index.d.ts.map +1 -0
  102. package/components/CartItem/index.js +3 -0
  103. package/components/CartList/CartList.d.ts +7 -0
  104. package/components/CartList/CartList.d.ts.map +1 -0
  105. package/components/CartList/CartList.jsx +14 -0
  106. package/components/CartList/CartList.stories.d.ts +17 -0
  107. package/components/CartList/CartList.stories.d.ts.map +1 -0
  108. package/components/CartList/CartList.stories.jsx +54 -0
  109. package/components/CartList/CartList.test.d.ts +3 -0
  110. package/components/CartList/CartList.test.d.ts.map +1 -0
  111. package/components/CartList/CartList.test.jsx +12 -0
  112. package/components/CartList/index.d.ts +3 -0
  113. package/components/CartList/index.d.ts.map +1 -0
  114. package/components/CartList/index.js +2 -0
  115. package/components/Checkbox/Checkbox.d.ts +13 -0
  116. package/components/Checkbox/Checkbox.d.ts.map +1 -0
  117. package/components/Checkbox/Checkbox.jsx +51 -0
  118. package/components/Checkbox/Checkbox.stories.d.ts +22 -0
  119. package/components/Checkbox/Checkbox.stories.d.ts.map +1 -0
  120. package/components/Checkbox/Checkbox.stories.jsx +157 -0
  121. package/components/Checkbox/Checkbox.test.d.ts +3 -0
  122. package/components/Checkbox/Checkbox.test.d.ts.map +1 -0
  123. package/components/Checkbox/Checkbox.test.jsx +136 -0
  124. package/components/Checkbox/index.d.ts +2 -0
  125. package/components/Checkbox/index.d.ts.map +1 -0
  126. package/components/Checkbox/index.js +1 -0
  127. package/components/ColorSwatch/ColorSwatch.d.ts +20 -0
  128. package/components/ColorSwatch/ColorSwatch.d.ts.map +1 -0
  129. package/components/ColorSwatch/ColorSwatch.jsx +57 -0
  130. package/components/ColorSwatch/ColorSwatch.stories.d.ts +20 -0
  131. package/components/ColorSwatch/ColorSwatch.stories.d.ts.map +1 -0
  132. package/components/ColorSwatch/ColorSwatch.stories.jsx +206 -0
  133. package/components/ColorSwatch/ColorSwatch.test.d.ts +3 -0
  134. package/components/ColorSwatch/ColorSwatch.test.d.ts.map +1 -0
  135. package/components/ColorSwatch/ColorSwatch.test.jsx +87 -0
  136. package/components/ColorSwatch/index.d.ts +3 -0
  137. package/components/ColorSwatch/index.d.ts.map +1 -0
  138. package/components/ColorSwatch/index.js +2 -0
  139. package/components/Divider/Divider.d.ts +8 -0
  140. package/components/Divider/Divider.d.ts.map +1 -0
  141. package/components/Divider/Divider.jsx +9 -0
  142. package/components/Divider/Divider.stories.d.ts +11 -0
  143. package/components/Divider/Divider.stories.d.ts.map +1 -0
  144. package/components/Divider/Divider.stories.jsx +43 -0
  145. package/components/Divider/Divider.test.d.ts +2 -0
  146. package/components/Divider/Divider.test.d.ts.map +1 -0
  147. package/components/Divider/Divider.test.jsx +19 -0
  148. package/components/Divider/index.d.ts +3 -0
  149. package/components/Divider/index.d.ts.map +1 -0
  150. package/components/Divider/index.js +2 -0
  151. package/components/Field/Field.d.ts +14 -0
  152. package/components/Field/Field.d.ts.map +1 -0
  153. package/components/Field/Field.jsx +29 -0
  154. package/components/Field/Field.stories.d.ts +37 -0
  155. package/components/Field/Field.stories.d.ts.map +1 -0
  156. package/components/Field/Field.stories.jsx +174 -0
  157. package/components/Field/Field.test.d.ts +3 -0
  158. package/components/Field/Field.test.d.ts.map +1 -0
  159. package/components/Field/Field.test.jsx +91 -0
  160. package/components/Field/index.d.ts +2 -0
  161. package/components/Field/index.d.ts.map +1 -0
  162. package/components/Field/index.js +1 -0
  163. package/components/Icon/Icon.d.ts +11 -0
  164. package/components/Icon/Icon.d.ts.map +1 -0
  165. package/components/Icon/Icon.jsx +57 -0
  166. package/components/Icon/Icon.stories.d.ts +16 -0
  167. package/components/Icon/Icon.stories.d.ts.map +1 -0
  168. package/components/Icon/Icon.stories.helpers.d.ts +4 -0
  169. package/components/Icon/Icon.stories.helpers.d.ts.map +1 -0
  170. package/components/Icon/Icon.stories.helpers.jsx +7 -0
  171. package/components/Icon/Icon.stories.jsx +48 -0
  172. package/components/Icon/Icon.test.d.ts +3 -0
  173. package/components/Icon/Icon.test.d.ts.map +1 -0
  174. package/components/Icon/Icon.test.jsx +67 -0
  175. package/components/Icon/index.d.ts +2 -0
  176. package/components/Icon/index.d.ts.map +1 -0
  177. package/components/Icon/index.js +1 -0
  178. package/components/IllustratedMessage/IllustratedMessage.d.ts +13 -0
  179. package/components/IllustratedMessage/IllustratedMessage.d.ts.map +1 -0
  180. package/components/IllustratedMessage/IllustratedMessage.jsx +21 -0
  181. package/components/IllustratedMessage/IllustratedMessage.stories.d.ts +10 -0
  182. package/components/IllustratedMessage/IllustratedMessage.stories.d.ts.map +1 -0
  183. package/components/IllustratedMessage/IllustratedMessage.stories.jsx +90 -0
  184. package/components/IllustratedMessage/IllustratedMessage.test.d.ts +3 -0
  185. package/components/IllustratedMessage/IllustratedMessage.test.d.ts.map +1 -0
  186. package/components/IllustratedMessage/IllustratedMessage.test.jsx +42 -0
  187. package/components/IllustratedMessage/index.d.ts +3 -0
  188. package/components/IllustratedMessage/index.d.ts.map +1 -0
  189. package/components/IllustratedMessage/index.js +2 -0
  190. package/components/Image/Image.d.ts +11 -0
  191. package/components/Image/Image.d.ts.map +1 -0
  192. package/components/Image/Image.jsx +26 -0
  193. package/components/Image/Image.stories.d.ts +11 -0
  194. package/components/Image/Image.stories.d.ts.map +1 -0
  195. package/components/Image/Image.stories.jsx +66 -0
  196. package/components/Image/Image.test.d.ts +3 -0
  197. package/components/Image/Image.test.d.ts.map +1 -0
  198. package/components/Image/Image.test.jsx +82 -0
  199. package/components/Image/index.d.ts +2 -0
  200. package/components/Image/index.d.ts.map +1 -0
  201. package/components/Image/index.js +1 -0
  202. package/components/ImageSwatch/ImageSwatch.d.ts +20 -0
  203. package/components/ImageSwatch/ImageSwatch.d.ts.map +1 -0
  204. package/components/ImageSwatch/ImageSwatch.jsx +49 -0
  205. package/components/ImageSwatch/ImageSwatch.stories.d.ts +20 -0
  206. package/components/ImageSwatch/ImageSwatch.stories.d.ts.map +1 -0
  207. package/components/ImageSwatch/ImageSwatch.stories.jsx +206 -0
  208. package/components/ImageSwatch/ImageSwatch.test.d.ts +3 -0
  209. package/components/ImageSwatch/ImageSwatch.test.d.ts.map +1 -0
  210. package/components/ImageSwatch/ImageSwatch.test.jsx +64 -0
  211. package/components/ImageSwatch/index.d.ts +3 -0
  212. package/components/ImageSwatch/index.d.ts.map +1 -0
  213. package/components/ImageSwatch/index.js +2 -0
  214. package/components/InLineAlert/InLineAlert.d.ts +16 -0
  215. package/components/InLineAlert/InLineAlert.d.ts.map +1 -0
  216. package/components/InLineAlert/InLineAlert.jsx +38 -0
  217. package/components/InLineAlert/InLineAlert.stories.d.ts +86 -0
  218. package/components/InLineAlert/InLineAlert.stories.d.ts.map +1 -0
  219. package/components/InLineAlert/InLineAlert.stories.jsx +193 -0
  220. package/components/InLineAlert/InLineAlert.test.d.ts +3 -0
  221. package/components/InLineAlert/InLineAlert.test.d.ts.map +1 -0
  222. package/components/InLineAlert/InLineAlert.test.jsx +77 -0
  223. package/components/InLineAlert/index.d.ts +3 -0
  224. package/components/InLineAlert/index.d.ts.map +1 -0
  225. package/components/InLineAlert/index.js +2 -0
  226. package/components/Incrementer/Incrementer.d.ts +17 -0
  227. package/components/Incrementer/Incrementer.d.ts.map +1 -0
  228. package/components/Incrementer/Incrementer.jsx +87 -0
  229. package/components/Incrementer/Incrementer.stories.d.ts +10 -0
  230. package/components/Incrementer/Incrementer.stories.d.ts.map +1 -0
  231. package/components/Incrementer/Incrementer.stories.jsx +68 -0
  232. package/components/Incrementer/Incrementer.test.d.ts +3 -0
  233. package/components/Incrementer/Incrementer.test.d.ts.map +1 -0
  234. package/components/Incrementer/Incrementer.test.jsx +112 -0
  235. package/components/Incrementer/index.d.ts +2 -0
  236. package/components/Incrementer/index.d.ts.map +1 -0
  237. package/components/Incrementer/index.js +1 -0
  238. package/components/Input/Input.d.ts +19 -0
  239. package/components/Input/Input.d.ts.map +1 -0
  240. package/components/Input/Input.jsx +73 -0
  241. package/components/Input/Input.stories.d.ts +11 -0
  242. package/components/Input/Input.stories.d.ts.map +1 -0
  243. package/components/Input/Input.stories.jsx +115 -0
  244. package/components/Input/Input.test.d.ts +3 -0
  245. package/components/Input/Input.test.d.ts.map +1 -0
  246. package/components/Input/Input.test.jsx +111 -0
  247. package/components/Input/index.d.ts +3 -0
  248. package/components/Input/index.d.ts.map +1 -0
  249. package/components/Input/index.js +2 -0
  250. package/components/Modal/Modal.d.ts +15 -0
  251. package/components/Modal/Modal.d.ts.map +1 -0
  252. package/components/Modal/Modal.jsx +93 -0
  253. package/components/Modal/Modal.stories.d.ts +56 -0
  254. package/components/Modal/Modal.stories.d.ts.map +1 -0
  255. package/components/Modal/Modal.stories.jsx +189 -0
  256. package/components/Modal/Modal.test.d.ts +3 -0
  257. package/components/Modal/Modal.test.d.ts.map +1 -0
  258. package/components/Modal/Modal.test.jsx +85 -0
  259. package/components/Modal/index.d.ts +2 -0
  260. package/components/Modal/index.d.ts.map +1 -0
  261. package/components/Modal/index.js +14 -0
  262. package/components/Picker/Picker.d.ts +26 -0
  263. package/components/Picker/Picker.d.ts.map +1 -0
  264. package/components/Picker/Picker.jsx +81 -0
  265. package/components/Picker/Picker.stories.d.ts +22 -0
  266. package/components/Picker/Picker.stories.d.ts.map +1 -0
  267. package/components/Picker/Picker.stories.jsx +236 -0
  268. package/components/Picker/Picker.test.d.ts +2 -0
  269. package/components/Picker/Picker.test.d.ts.map +1 -0
  270. package/components/Picker/Picker.test.jsx +190 -0
  271. package/components/Picker/index.d.ts +2 -0
  272. package/components/Picker/index.d.ts.map +1 -0
  273. package/components/Picker/index.js +1 -0
  274. package/components/Price/Price.d.ts +17 -0
  275. package/components/Price/Price.d.ts.map +1 -0
  276. package/components/Price/Price.jsx +24 -0
  277. package/components/Price/Price.stories.d.ts +17 -0
  278. package/components/Price/Price.stories.d.ts.map +1 -0
  279. package/components/Price/Price.stories.jsx +78 -0
  280. package/components/Price/Price.test.d.ts +3 -0
  281. package/components/Price/Price.test.d.ts.map +1 -0
  282. package/components/Price/Price.test.jsx +68 -0
  283. package/components/Price/index.d.ts +2 -0
  284. package/components/Price/index.d.ts.map +1 -0
  285. package/components/Price/index.js +1 -0
  286. package/components/PriceRange/PriceRange.d.ts +17 -0
  287. package/components/PriceRange/PriceRange.d.ts.map +1 -0
  288. package/components/PriceRange/PriceRange.jsx +75 -0
  289. package/components/PriceRange/PriceRange.stories.d.ts +107 -0
  290. package/components/PriceRange/PriceRange.stories.d.ts.map +1 -0
  291. package/components/PriceRange/PriceRange.stories.jsx +210 -0
  292. package/components/PriceRange/PriceRange.test.d.ts +3 -0
  293. package/components/PriceRange/PriceRange.test.d.ts.map +1 -0
  294. package/components/PriceRange/PriceRange.test.jsx +188 -0
  295. package/components/PriceRange/index.d.ts +3 -0
  296. package/components/PriceRange/index.d.ts.map +1 -0
  297. package/components/PriceRange/index.js +2 -0
  298. package/components/PriceSummary/PriceSummary.d.ts +43 -0
  299. package/components/PriceSummary/PriceSummary.d.ts.map +1 -0
  300. package/components/PriceSummary/PriceSummary.jsx +228 -0
  301. package/components/PriceSummary/PriceSummary.stories.d.ts +127 -0
  302. package/components/PriceSummary/PriceSummary.stories.d.ts.map +1 -0
  303. package/components/PriceSummary/PriceSummary.stories.jsx +456 -0
  304. package/components/PriceSummary/PriceSummary.test.d.ts +3 -0
  305. package/components/PriceSummary/PriceSummary.test.d.ts.map +1 -0
  306. package/components/PriceSummary/PriceSummary.test.jsx +275 -0
  307. package/components/PriceSummary/index.d.ts +3 -0
  308. package/components/PriceSummary/index.d.ts.map +1 -0
  309. package/components/PriceSummary/index.js +2 -0
  310. package/components/ProgressSpinner/ProgressSpinner.d.ts +14 -0
  311. package/components/ProgressSpinner/ProgressSpinner.d.ts.map +1 -0
  312. package/components/ProgressSpinner/ProgressSpinner.jsx +31 -0
  313. package/components/ProgressSpinner/ProgressSpinner.stories.d.ts +19 -0
  314. package/components/ProgressSpinner/ProgressSpinner.stories.d.ts.map +1 -0
  315. package/components/ProgressSpinner/ProgressSpinner.stories.jsx +195 -0
  316. package/components/ProgressSpinner/ProgressSpinner.test.d.ts +3 -0
  317. package/components/ProgressSpinner/ProgressSpinner.test.d.ts.map +1 -0
  318. package/components/ProgressSpinner/ProgressSpinner.test.jsx +40 -0
  319. package/components/ProgressSpinner/index.d.ts +3 -0
  320. package/components/ProgressSpinner/index.d.ts.map +1 -0
  321. package/components/ProgressSpinner/index.js +2 -0
  322. package/components/RadioButton/RadioButton.d.ts +15 -0
  323. package/components/RadioButton/RadioButton.d.ts.map +1 -0
  324. package/components/RadioButton/RadioButton.jsx +31 -0
  325. package/components/RadioButton/RadioButton.stories.d.ts +15 -0
  326. package/components/RadioButton/RadioButton.stories.d.ts.map +1 -0
  327. package/components/RadioButton/RadioButton.stories.jsx +92 -0
  328. package/components/RadioButton/RadioButton.test.d.ts +3 -0
  329. package/components/RadioButton/RadioButton.test.d.ts.map +1 -0
  330. package/components/RadioButton/RadioButton.test.jsx +62 -0
  331. package/components/RadioButton/index.d.ts +3 -0
  332. package/components/RadioButton/index.d.ts.map +1 -0
  333. package/components/RadioButton/index.js +2 -0
  334. package/components/Skeleton/Skeleton.d.ts +17 -0
  335. package/components/Skeleton/Skeleton.d.ts.map +1 -0
  336. package/components/Skeleton/Skeleton.jsx +52 -0
  337. package/components/Skeleton/Skeleton.stories.d.ts +67 -0
  338. package/components/Skeleton/Skeleton.stories.d.ts.map +1 -0
  339. package/components/Skeleton/Skeleton.stories.jsx +184 -0
  340. package/components/Skeleton/Skeleton.test.d.ts +3 -0
  341. package/components/Skeleton/Skeleton.test.d.ts.map +1 -0
  342. package/components/Skeleton/Skeleton.test.jsx +62 -0
  343. package/components/Skeleton/index.d.ts +2 -0
  344. package/components/Skeleton/index.d.ts.map +1 -0
  345. package/components/Skeleton/index.js +1 -0
  346. package/components/TextSwatch/TextSwatch.d.ts +18 -0
  347. package/components/TextSwatch/TextSwatch.d.ts.map +1 -0
  348. package/components/TextSwatch/TextSwatch.jsx +56 -0
  349. package/components/TextSwatch/TextSwatch.stories.d.ts +21 -0
  350. package/components/TextSwatch/TextSwatch.stories.d.ts.map +1 -0
  351. package/components/TextSwatch/TextSwatch.stories.jsx +211 -0
  352. package/components/TextSwatch/TextSwatch.test.d.ts +3 -0
  353. package/components/TextSwatch/TextSwatch.test.d.ts.map +1 -0
  354. package/components/TextSwatch/TextSwatch.test.jsx +85 -0
  355. package/components/TextSwatch/index.d.ts +3 -0
  356. package/components/TextSwatch/index.d.ts.map +1 -0
  357. package/components/TextSwatch/index.js +2 -0
  358. package/components/UIProvider/UIProvider.d.ts +18 -0
  359. package/components/UIProvider/UIProvider.d.ts.map +1 -0
  360. package/components/UIProvider/UIProvider.jsx +26 -0
  361. package/components/UIProvider/UIProvider.test.d.ts +2 -0
  362. package/components/UIProvider/UIProvider.test.d.ts.map +1 -0
  363. package/components/UIProvider/UIProvider.test.jsx +9 -0
  364. package/components/UIProvider/index.d.ts +2 -0
  365. package/components/UIProvider/index.d.ts.map +1 -0
  366. package/components/UIProvider/index.js +1 -0
  367. package/components/index.d.ts +34 -0
  368. package/components/index.d.ts.map +1 -0
  369. package/components/index.js +33 -0
  370. package/docs/Design/designBlocks.d.ts +21 -0
  371. package/docs/Design/designBlocks.d.ts.map +1 -0
  372. package/docs/Design/designBlocks.jsx +59 -0
  373. package/docs/Design/getTokenData.d.ts +7 -0
  374. package/docs/Design/getTokenData.d.ts.map +1 -0
  375. package/docs/Design/getTokenData.js +18 -0
  376. package/docs/Design/getTokenData.test.d.ts +2 -0
  377. package/docs/Design/getTokenData.test.d.ts.map +1 -0
  378. package/docs/Design/getTokenData.test.js +92 -0
  379. package/event-bus.js +49 -1
  380. package/fetch-graphql.js +62 -1
  381. package/i18n/en_US.json +112 -0
  382. package/i18n/index.d.ts +341 -0
  383. package/i18n/index.d.ts.map +1 -0
  384. package/i18n/index.js +12 -0
  385. package/i18n/index.test.d.ts +2 -0
  386. package/i18n/index.test.d.ts.map +1 -0
  387. package/i18n/index.test.js +11 -0
  388. package/icons/index.d.ts +35 -0
  389. package/icons/index.d.ts.map +1 -0
  390. package/icons/index.js +34 -0
  391. package/initializer.js +61 -1
  392. package/lib/classes.d.ts +5 -0
  393. package/lib/classes.d.ts.map +1 -0
  394. package/lib/classes.js +16 -0
  395. package/lib/classes.test.d.ts +2 -0
  396. package/lib/classes.test.d.ts.map +1 -0
  397. package/lib/classes.test.js +18 -0
  398. package/lib/config.d.ts +7 -0
  399. package/lib/config.d.ts.map +1 -0
  400. package/lib/config.js +12 -0
  401. package/lib/config.test.d.ts +2 -0
  402. package/lib/config.test.d.ts.map +1 -0
  403. package/lib/config.test.js +12 -0
  404. package/lib/debounce.d.ts +2 -0
  405. package/lib/debounce.d.ts.map +1 -0
  406. package/lib/debounce.js +7 -0
  407. package/lib/debounce.test.d.ts +2 -0
  408. package/lib/debounce.test.d.ts.map +1 -0
  409. package/lib/debounce.test.js +40 -0
  410. package/lib/deepmerge.d.ts +2 -0
  411. package/lib/deepmerge.d.ts.map +1 -0
  412. package/lib/deepmerge.js +1 -0
  413. package/lib/form-values.d.ts +5 -0
  414. package/lib/form-values.d.ts.map +1 -0
  415. package/lib/form-values.js +17 -0
  416. package/lib/form-values.test.d.ts +2 -0
  417. package/lib/form-values.test.d.ts.map +1 -0
  418. package/lib/form-values.test.jsx +29 -0
  419. package/lib/i18n.d.ts +8 -0
  420. package/lib/i18n.d.ts.map +1 -0
  421. package/lib/i18n.js +9 -0
  422. package/lib/i18n.test.d.ts +2 -0
  423. package/lib/i18n.test.d.ts.map +1 -0
  424. package/lib/i18n.test.jsx +8 -0
  425. package/lib/image-params-keymap.d.ts +4 -0
  426. package/lib/image-params-keymap.d.ts.map +1 -0
  427. package/lib/image-params-keymap.js +19 -0
  428. package/lib/image-params-keymap.test.d.ts +2 -0
  429. package/lib/image-params-keymap.test.d.ts.map +1 -0
  430. package/lib/image-params-keymap.test.js +7 -0
  431. package/lib/index.d.ts +14 -0
  432. package/lib/index.d.ts.map +1 -0
  433. package/lib/index.js +13 -0
  434. package/lib/initializer.d.ts +78 -0
  435. package/lib/initializer.d.ts.map +1 -0
  436. package/lib/initializer.js +93 -0
  437. package/lib/initializer.test.d.ts +2 -0
  438. package/lib/initializer.test.d.ts.map +1 -0
  439. package/lib/initializer.test.js +64 -0
  440. package/lib/render.d.ts +10 -0
  441. package/lib/render.d.ts.map +1 -0
  442. package/lib/render.jsx +34 -0
  443. package/lib/render.test.d.ts +2 -0
  444. package/lib/render.test.d.ts.map +1 -0
  445. package/lib/render.test.jsx +70 -0
  446. package/lib/resolve-image.d.ts +10 -0
  447. package/lib/resolve-image.d.ts.map +1 -0
  448. package/lib/resolve-image.js +57 -0
  449. package/lib/resolve-image.test.d.ts +2 -0
  450. package/lib/resolve-image.test.d.ts.map +1 -0
  451. package/lib/resolve-image.test.jsx +146 -0
  452. package/lib/slot.d.ts +43 -0
  453. package/lib/slot.d.ts.map +1 -0
  454. package/lib/slot.jsx +184 -0
  455. package/lib/slot.test.d.ts +2 -0
  456. package/lib/slot.test.d.ts.map +1 -0
  457. package/lib/slot.test.jsx +325 -0
  458. package/lib/tests.d.ts +4 -0
  459. package/lib/tests.d.ts.map +1 -0
  460. package/lib/tests.jsx +19 -0
  461. package/lib/tests.test.d.ts +2 -0
  462. package/lib/tests.test.d.ts.map +1 -0
  463. package/lib/tests.test.jsx +13 -0
  464. package/lib/types.d.ts +9 -0
  465. package/lib/types.d.ts.map +1 -0
  466. package/lib/types.js +1 -0
  467. package/lib/vcomponent.d.ts +8 -0
  468. package/lib/vcomponent.d.ts.map +1 -0
  469. package/lib/vcomponent.jsx +27 -0
  470. package/lib/vcomponent.test.d.ts +2 -0
  471. package/lib/vcomponent.test.d.ts.map +1 -0
  472. package/lib/vcomponent.test.jsx +51 -0
  473. package/package.json +1 -1
  474. package/preact-compat.js +93 -1
  475. package/preact-hooks.js +40 -1
  476. package/preact-jsx-runtime.js +35 -1
  477. package/preact.js +21 -1
  478. package/runtime.js +69 -1
@@ -0,0 +1,188 @@
1
+ /** https://preactjs.com/guide/v10/preact-testing-library/ */
2
+ import { render } from '@adobe/elsie/lib/tests';
3
+ import { PriceRange } from '@adobe/elsie/components/PriceRange';
4
+ describe('Base/Components/PriceRange', () => {
5
+ test('renders', () => {
6
+ const { container } = render(<PriceRange />);
7
+ expect(!!container).toEqual(true);
8
+ });
9
+ test('Renders simple price range', () => {
10
+ const { container } = render(<PriceRange minimumAmount={100} maximumAmount={200} currency="USD" locale="en-US" display="dash"/>);
11
+ // Ensure the price range is rendered
12
+ const priceRange = container.querySelector('.dropin-price-range');
13
+ expect(priceRange).toMatchInlineSnapshot(`
14
+ <div
15
+ class="dropin-price-range"
16
+ >
17
+ <span
18
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
19
+ >
20
+ $100.00
21
+ </span>
22
+ <span
23
+ class="dropin-price-range__separator"
24
+ >
25
+ -
26
+ </span>
27
+ <span
28
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
29
+ >
30
+ $200.00
31
+ </span>
32
+ </div>
33
+ `);
34
+ });
35
+ test('Renders from to price range', () => {
36
+ const { container } = render(<PriceRange minimumAmount={100} maximumAmount={200} currency="USD" locale="en-US" display="from to"/>);
37
+ // Ensure the price range is rendered
38
+ const priceRange = container.querySelector('.dropin-price-range');
39
+ expect(priceRange).toMatchInlineSnapshot(`
40
+ <div
41
+ class="dropin-price-range"
42
+ >
43
+ <span
44
+ class="dropin-price-range__from dropin-price-range__from--small"
45
+ >
46
+ From
47
+ </span>
48
+ <span
49
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
50
+ >
51
+ $100.00
52
+ </span>
53
+ <span
54
+ class="dropin-price-range__to dropin-price-range__to--small"
55
+ >
56
+ to
57
+ </span>
58
+ <span
59
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
60
+ >
61
+ $200.00
62
+ </span>
63
+ </div>
64
+ `);
65
+ });
66
+ test('Renders as low as price range', () => {
67
+ const { container } = render(<PriceRange minimumAmount={100} maximumAmount={200} currency="USD" locale="en-US" display="as low as"/>);
68
+ // Ensure the price range is rendered
69
+ const priceRange = container.querySelector('.dropin-price-range');
70
+ expect(priceRange).toMatchInlineSnapshot(`
71
+ <div
72
+ class="dropin-price-range"
73
+ >
74
+ <span
75
+ class="dropin-price-range__as-low-as dropin-price-range__as-low-as--small"
76
+ >
77
+ As low as
78
+ </span>
79
+ <span
80
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
81
+ >
82
+ $100.00
83
+ </span>
84
+ </div>
85
+ `);
86
+ });
87
+ test('Renders simple price range with special price', () => {
88
+ const { container } = render(<PriceRange minimumAmount={100} maximumAmount={200} currency="USD" locale="en-US" display="dash" specialPrice={9.99} sale={false}/>);
89
+ // Ensure the price range is rendered
90
+ const priceRange = container.querySelector('.dropin-price-range');
91
+ expect(priceRange).toMatchInlineSnapshot(`
92
+ <div
93
+ class="dropin-price-range"
94
+ >
95
+ <span
96
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
97
+ >
98
+ $9.99
99
+ </span>
100
+ <span
101
+ class="dropin-price-range__separator"
102
+ >
103
+ -
104
+ </span>
105
+ <span
106
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
107
+ >
108
+ $200.00
109
+ </span>
110
+ </div>
111
+ `);
112
+ });
113
+ test('Renders from to price range with special price', () => {
114
+ const { container } = render(<PriceRange minimumAmount={100} maximumAmount={200} currency="USD" locale="en-US" display="from to" specialPrice={9.99} sale={false}/>);
115
+ // Ensure the price range is rendered
116
+ const priceRange = container.querySelector('.dropin-price-range');
117
+ expect(priceRange).toMatchInlineSnapshot(`
118
+ <div
119
+ class="dropin-price-range"
120
+ >
121
+ <span
122
+ class="dropin-price-range__from dropin-price-range__from--small"
123
+ >
124
+ From
125
+ </span>
126
+ <span
127
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
128
+ >
129
+ $9.99
130
+ </span>
131
+ <span
132
+ class="dropin-price-range__to dropin-price-range__to--small"
133
+ >
134
+ to
135
+ </span>
136
+ <span
137
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
138
+ >
139
+ $200.00
140
+ </span>
141
+ </div>
142
+ `);
143
+ });
144
+ test('Renders as low as price range with high contrast special price', () => {
145
+ const { container } = render(<PriceRange minimumAmount={100} maximumAmount={200} currency="USD" locale="en-US" display="as low as" specialPrice={9.99} sale={true}/>);
146
+ // Ensure the price range is rendered
147
+ const priceRange = container.querySelector('.dropin-price-range');
148
+ expect(priceRange).toMatchInlineSnapshot(`
149
+ <div
150
+ class="dropin-price-range"
151
+ >
152
+ <span
153
+ class="dropin-price-range__as-low-as dropin-price-range__as-low-as--small"
154
+ >
155
+ As low as
156
+ </span>
157
+ <div>
158
+ <span
159
+ class="dropin-price dropin-price--strikethrough dropin-price--small dropin-price--bold"
160
+ >
161
+ $200.00
162
+ </span>
163
+ <span
164
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold dropin-price--sale dropin-price-range__special"
165
+ >
166
+ $9.99
167
+ </span>
168
+ </div>
169
+ </div>
170
+ `);
171
+ });
172
+ test('Renders simple product price with amount prop', () => {
173
+ const { container } = render(<PriceRange amount={9.99} currency="USD" locale="en-US"/>);
174
+ // Ensure the price range is rendered
175
+ const priceRange = container.querySelector('.dropin-price-range');
176
+ expect(priceRange).toMatchInlineSnapshot(`
177
+ <div
178
+ class="dropin-price-range"
179
+ >
180
+ <span
181
+ class="dropin-price dropin-price--default dropin-price--small dropin-price--bold"
182
+ >
183
+ $9.99
184
+ </span>
185
+ </div>
186
+ `);
187
+ });
188
+ });
@@ -0,0 +1,3 @@
1
+ export * from '@adobe/elsie/components/PriceRange/PriceRange';
2
+ export { PriceRange as default } from '@adobe/elsie/components/PriceRange/PriceRange';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/PriceRange/index.ts"],"names":[],"mappings":"AAAA,cAAc,+CAA+C,CAAC;AAC9D,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,MAAM,+CAA+C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@adobe/elsie/components/PriceRange/PriceRange';
2
+ export { PriceRange as default } from '@adobe/elsie/components/PriceRange/PriceRange';
@@ -0,0 +1,43 @@
1
+ import { FunctionComponent, VNode } from 'preact';
2
+ import { HTMLAttributes } from 'preact/compat';
3
+ import '@adobe/elsie/components/PriceSummary/PriceSummary.css';
4
+ export interface PriceSummaryProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {
5
+ heading: string;
6
+ loading?: boolean;
7
+ total?: {
8
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
9
+ estimated?: boolean;
10
+ priceWithoutTax?: VNode<HTMLAttributes<HTMLSpanElement>>;
11
+ };
12
+ subTotal?: {
13
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
14
+ taxIncluded?: boolean;
15
+ };
16
+ shipping?: {
17
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
18
+ estimated?: boolean;
19
+ taxIncluded?: boolean;
20
+ countryField?: VNode<HTMLAttributes<HTMLInputElement>>;
21
+ stateField?: VNode<HTMLAttributes<HTMLInputElement>>;
22
+ zipField?: VNode<HTMLAttributes<HTMLInputElement>>;
23
+ destinationText?: string;
24
+ onEstimate?: (formData: any) => void;
25
+ estimateButton?: VNode<HTMLAttributes<HTMLButtonElement>>;
26
+ };
27
+ taxTotal?: {
28
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
29
+ estimated?: boolean;
30
+ };
31
+ taxesApplied?: {
32
+ label: string;
33
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
34
+ }[];
35
+ discounts?: {
36
+ label: string;
37
+ price: VNode<HTMLAttributes<HTMLSpanElement>>;
38
+ caption?: VNode<HTMLAttributes<HTMLDivElement>>;
39
+ }[];
40
+ primaryAction?: VNode<HTMLAttributes<HTMLButtonElement>>;
41
+ }
42
+ export declare const PriceSummary: FunctionComponent<PriceSummaryProps>;
43
+ //# sourceMappingURL=PriceSummary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriceSummary.d.ts","sourceRoot":"","sources":["../../../src/components/PriceSummary/PriceSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,cAAc,EAAoB,MAAM,eAAe,CAAC;AAajE,OAAO,uDAAuD,CAAC;AAE/D,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,eAAe,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;KAC1D,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvD,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACnD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,CAAC;QACrC,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;KAC3D,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;KAC/C,EAAE,CAAC;IACJ,SAAS,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;KACjD,EAAE,CAAC;IACJ,aAAa,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;CAC1D;AAED,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAAC,iBAAiB,CA2b7D,CAAC"}
@@ -0,0 +1,228 @@
1
+ import { useRef, useState } from 'preact/compat';
2
+ import { VComponent, classes, getFormValues } from '@adobe/elsie/lib';
3
+ import { Text, useText } from '@adobe/elsie/i18n';
4
+ import { Accordion, AccordionSection, Divider, Skeleton, SkeletonRow, } from '@adobe/elsie/components';
5
+ import { ChevronDown, ChevronUp } from '@adobe/elsie/icons';
6
+ import '@adobe/elsie/components/PriceSummary/PriceSummary.css';
7
+ export const PriceSummary = ({ className, children, ...props }) => {
8
+ const { heading, loading = true, total, subTotal, shipping, taxTotal, taxesApplied, discounts, primaryAction, ...restProps } = props;
9
+ const [showTaxBreakdown, setShowTaxBreakdown] = useState(false);
10
+ const estimateFormRef = useRef(null);
11
+ const [showEstimateForm, setShowEstimateForm] = useState(true);
12
+ const [estimateField, setEstimateField] = useState('zip');
13
+ const translations = useText({
14
+ editZipAction: 'Dropin.PriceSummary.shipping.editZipAction',
15
+ destinationLinkAriaLabel: 'Dropin.PriceSummary.shipping.destinationLinkAriaLabel',
16
+ taxesBreakdownTitle: 'Dropin.PriceSummary.taxes.breakdown',
17
+ showTaxBreakdown: 'Dropin.PriceSummary.taxes.showBreakdown',
18
+ hideTaxBreakdown: 'Dropin.PriceSummary.taxes.hideBreakdown',
19
+ zipPlaceholder: 'Dropin.PriceSummary.shipping.zipPlaceholder',
20
+ });
21
+ const onDestinationLinkClick = (e) => {
22
+ e.preventDefault();
23
+ setShowEstimateForm((show) => !show);
24
+ };
25
+ const onAlternateFieldClick = (e) => {
26
+ e.preventDefault();
27
+ setShowEstimateForm(true);
28
+ setEstimateField((field) => (field === 'zip' ? 'state' : 'zip'));
29
+ };
30
+ const onSubmitEstimate = (e) => {
31
+ e.preventDefault();
32
+ setShowEstimateForm(false);
33
+ const formData = getFormValues(estimateFormRef.current);
34
+ shipping?.onEstimate?.(formData);
35
+ };
36
+ // Skeleton content to show while loading
37
+ const skeletonContent = (<Skeleton data-testid="loading-skeleton" rowGap="xsmall">
38
+ <SkeletonRow variant="row" size="small" lines={5} fullWidth={true} multilineGap="xsmall"/>
39
+ </Skeleton>);
40
+ // Entry for the shipping price
41
+ const shippingContent = shipping && (<>
42
+ <div data-testid="shipping-content" className={classes([
43
+ 'dropin-price-summary__entry',
44
+ 'dropin-price-summary__shipping',
45
+ ])}>
46
+ <span className={'dropin-price-summary__label'}>
47
+ {shipping.estimated ? (shipping.destinationText ? (<>
48
+ <Text id="Dropin.PriceSummary.shipping.estimatedDestination"/>
49
+ <a className={'dropin-price-summary__shippingLink'} role="button" href="" onClick={onDestinationLinkClick} onKeyDown={(event) => {
50
+ if (event.key === 'Enter' || event.key === ' ') {
51
+ onDestinationLinkClick(event);
52
+ }
53
+ }} tabIndex={0} aria-label={translations.destinationLinkAriaLabel} data-testid="shipping-destination-link">
54
+ {shipping.destinationText}
55
+ </a>
56
+ </>) : (<Text id="Dropin.PriceSummary.shipping.estimated"/>)) : (<Text id="Dropin.PriceSummary.shipping.label"/>)}
57
+ </span>
58
+ <VComponent node={shipping.price} className={'dropin-price-summary__price'}/>
59
+
60
+ {shipping.estimated && (<>
61
+ <div className={classes(['dropin-price-summary__caption'])}>
62
+ <a href="#" className={'dropin-price-summary__shippingLink'} onClick={onAlternateFieldClick} data-testid="shipping-alternate-field-link">
63
+ {estimateField === 'zip' ? (<Text id="Dropin.PriceSummary.shipping.alternateField.state"/>) : (<Text id="Dropin.PriceSummary.shipping.alternateField.zip"/>)}
64
+ </a>
65
+ </div>
66
+ </>)}
67
+
68
+ {/* Edit shipping address form */}
69
+ {shipping.estimated && (<>
70
+ <form className={classes([
71
+ 'dropin-price-summary__shipping--edit',
72
+ ['dropin-price-summary__shipping--hide', !showEstimateForm],
73
+ ])} ref={estimateFormRef} data-testid="shipping-estimate-form">
74
+ {shipping.countryField && (<VComponent node={shipping.countryField} className={classes([
75
+ 'dropin-price-summary__shipping--country',
76
+ ])}/>)}
77
+ {estimateField === 'state'
78
+ ? shipping.stateField && (<VComponent node={shipping.stateField} className={classes([
79
+ 'dropin-price-summary__shipping--state',
80
+ ])}/>)
81
+ : shipping.zipField && (<VComponent node={shipping.zipField} className={classes([
82
+ 'dropin-price-summary__shipping--zip',
83
+ ])}/>)}
84
+ {shipping.estimateButton && (<VComponent node={shipping.estimateButton} className={classes([
85
+ 'dropin-price-summary__shipping--action',
86
+ ])} onClick={onSubmitEstimate} type="submit"/>)}
87
+ </form>
88
+ </>)}
89
+
90
+ {shipping.taxIncluded && (<div className={classes(['dropin-price-summary__caption'])}>
91
+ <span>
92
+ <Text id="Dropin.PriceSummary.shipping.withTaxes"/>
93
+ </span>
94
+ </div>)}
95
+ </div>
96
+ </>);
97
+ // Entry for the discounts
98
+ const discountContent = discounts && (<>
99
+ {discounts.map((discount) => (<div className={classes([
100
+ 'dropin-price-summary__entry',
101
+ 'dropin-price-summary__discount',
102
+ ])} key={discount.label}>
103
+ <span className={classes(['dropin-price-summary__label'])}>
104
+ {discount.label}
105
+ </span>
106
+ <VComponent node={discount.price} className={classes(['dropin-price-summary__price'])}/>
107
+ {discount.caption && (<VComponent node={discount.caption} className={classes(['dropin-price-summary__caption'])}/>)}
108
+ </div>))}
109
+ </>);
110
+ // Entry for the total tax and breakdown (if provided)
111
+ const taxContent = taxesApplied ? (
112
+ /* Show breakdown if provided */
113
+ <>
114
+ <Accordion data-testid="tax-breakdown" className={'dropin-price-summary__taxes'} iconOpen={ChevronDown} iconClose={ChevronUp}>
115
+ <AccordionSection title={translations.taxesBreakdownTitle} secondaryText={!showTaxBreakdown && taxTotal ? (<VComponent node={taxTotal.price} className={'dropin-price-summary__price'}/>) : undefined} renderContentWhenClosed={false} onStateChange={setShowTaxBreakdown}>
116
+ <div className={classes(['dropin-price-summary__appliedTaxes'])}>
117
+ {taxesApplied.map((tax) => (<div className={classes([
118
+ 'dropin-price-summary__entry',
119
+ 'dropin-price-summary__taxEntry',
120
+ ])} key={tax.label}>
121
+ <span className={classes([
122
+ 'dropin-price-summary__label',
123
+ 'dropin-price-summary__label--muted',
124
+ ])}>
125
+ {tax.label}
126
+ </span>
127
+
128
+ <VComponent node={tax.price} className={classes([
129
+ 'dropin-price-summary__price',
130
+ 'dropin-price-summary__price--muted',
131
+ ])}/>
132
+ </div>))}
133
+ </div>
134
+
135
+ <div className={classes(['dropin-price-summary__entry'])}>
136
+ <span className={'dropin-price-summary__label'}>
137
+ <Text id="Dropin.PriceSummary.taxes.total"/>
138
+ </span>
139
+ {taxTotal && (<VComponent node={taxTotal.price} className={'dropin-price-summary__price'}/>)}
140
+ </div>
141
+ </AccordionSection>
142
+ </Accordion>
143
+ </>) : (taxTotal && (
144
+ /* Otherwise, show total only */
145
+ <div data-testid="tax-total-only" className={classes([
146
+ 'dropin-price-summary__entry',
147
+ 'dropin-price-summary__taxTotal',
148
+ ])}>
149
+ <span className={'dropin-price-summary__label'}>
150
+ {taxTotal.estimated ? (<Text id="Dropin.PriceSummary.taxes.estimated"/>) : (<Text id="Dropin.PriceSummary.taxes.totalOnly"/>)}
151
+ </span>
152
+ <VComponent node={taxTotal.price} className={'dropin-price-summary__price'}/>
153
+ </div>));
154
+ // Entry for the total
155
+ const totalContent = total && (<>
156
+ <div data-testid="total-content" className={classes([
157
+ 'dropin-price-summary__entry',
158
+ 'dropin-price-summary__total',
159
+ total.estimated && 'dropin-price-summary__total--padded',
160
+ ])}>
161
+ <span className={classes([
162
+ 'dropin-price-summary__label',
163
+ 'dropin-price-summary__label--bold',
164
+ ])}>
165
+ {total.estimated ? (<Text id="Dropin.PriceSummary.total.estimated"/>) : (<Text id="Dropin.PriceSummary.total.label"/>)}
166
+ </span>
167
+ <VComponent node={total.price} className={classes([
168
+ 'dropin-price-summary__price',
169
+ 'dropin-price-summary__price--bold',
170
+ ])}/>
171
+ </div>
172
+ </>);
173
+ // Entry for the total without tax
174
+ const totalWithoutTaxContent = total && total.priceWithoutTax && (<div data-testid="total-without-tax" className={'dropin-price-summary__entry dropin-price-summary__totalWithoutTax'}>
175
+ <span className={classes([
176
+ 'dropin-price-summary__label',
177
+ 'dropin-price-summary__label--muted',
178
+ ])}>
179
+ <Text id="Dropin.PriceSummary.total.withoutTax"/>
180
+ </span>
181
+ <VComponent node={total.priceWithoutTax} className={classes([
182
+ 'dropin-price-summary__price',
183
+ 'dropin-price-summary__price--muted',
184
+ ])}/>
185
+ </div>);
186
+ // Entry for the primary action
187
+ const primaryActionContent = primaryAction && (<div className={classes([
188
+ 'dropin-price-summary__entry',
189
+ 'dropin-price-summary__primaryAction',
190
+ ])}>
191
+ {primaryAction}
192
+ </div>);
193
+ const subTotalContent = subTotal && (<div className={classes([
194
+ 'dropin-price-summary__entry',
195
+ 'dropin-price-summary__subTotal',
196
+ ])}>
197
+ <span className={'dropin-price-summary__label'}>
198
+ <Text id="Dropin.PriceSummary.subTotal.label"/>
199
+ </span>
200
+ <VComponent node={subTotal.price} className={'dropin-price-summary__price'}/>
201
+ {subTotal.taxIncluded && (<div data-testid="sub-total-tax-caption" className={classes(['dropin-price-summary__caption'])}>
202
+ <span>
203
+ <Text id="Dropin.PriceSummary.subTotal.withTaxes"/>
204
+ </span>
205
+ </div>)}
206
+ </div>);
207
+ return (<div {...restProps} className={classes(['dropin-price-summary', className])}>
208
+ <div className={'dropin-price-summary__heading'}>{heading}</div>
209
+
210
+ <Divider variant="primary" className={'dropin-price-summary__divider-primary'}/>
211
+
212
+ {loading ? (skeletonContent) : (<>
213
+ {subTotalContent}
214
+
215
+ {shippingContent}
216
+
217
+ {discountContent}
218
+
219
+ {taxContent}
220
+
221
+ {totalContent}
222
+
223
+ {totalWithoutTaxContent}
224
+
225
+ {primaryActionContent}
226
+ </>)}
227
+ </div>);
228
+ };
@@ -0,0 +1,127 @@
1
+ import type { Meta, StoryObj } from '@storybook/preact';
2
+ import { PriceSummaryProps } from '@adobe/elsie/components/PriceSummary';
3
+ /**
4
+ * Use PriceSummary to provide a summary of the total, subtotal, shipping, discounts, and tax amounts.
5
+ *
6
+ * Import the component like this:
7
+ *
8
+ * ```tsx
9
+ * import { PriceSummary } from '@adobe/elsie/componens/PriceSummary';
10
+ * ```
11
+ *
12
+ */
13
+ declare const meta: Meta<PriceSummaryProps>;
14
+ export default meta;
15
+ type Story = StoryObj<PriceSummaryProps>;
16
+ /**
17
+ * Use the component like this to get a Checkout variation of the PriceSummary:
18
+ *
19
+ * ```tsx
20
+ * <PriceSummary
21
+ * heading='Order Summary'
22
+ * loading={false}
23
+ * total={{
24
+ * price: <Price amount={100} currency="USD" />
25
+ * priceWithoutTax: <Price amount={90} currency="USD" />,
26
+ * }}
27
+ * subTotal={
28
+ * price: <Price amount={90} currency="USD" />,
29
+ * taxIncluded: true,
30
+ * }
31
+ * shipping={{
32
+ * price: <Price amount={10} currency="USD" />,
33
+ * taxIncluded: true,
34
+ * }}
35
+ * taxTotal={<Price amount={10} currency="USD" />},
36
+ * taxesApplied={[
37
+ * {
38
+ * label: 'VAT standard',
39
+ * price: <Price amount={5} currency="USD" />,
40
+ * },
41
+ * {
42
+ * label: 'VAT reduced',
43
+ * price: <Price amount={5} currency="USD" />,
44
+ * },
45
+ * ]}
46
+ * />
47
+ * ```
48
+ */
49
+ export declare const Checkout: Story;
50
+ /**
51
+ * Use the component like this to get a Cart variation of the PriceSummary:
52
+ *
53
+ * ```tsx
54
+ * <PriceSummary
55
+ * heading='Order Summary'
56
+ * loading={false}
57
+ * subTotal={{
58
+ * price: <Price amount={90} currency="USD" />,
59
+ * }}
60
+ * shipping={{
61
+ * price: <Price amount={10} currency="USD" />,
62
+ * estimated: true,
63
+ * countryField: (
64
+ * <Picker
65
+ * name="shippingCountry"
66
+ * placeholder="Country"
67
+ * variant="primary"
68
+ * options={[
69
+ * { text: 'United States', value: 'US' },
70
+ * { text: 'Canada', value: 'CA' },
71
+ * ]}/>
72
+ * ),
73
+ * stateField: (
74
+ * <Picker name="shippingState" placeholder="State" variant="primary"
75
+ * options={
76
+ * [
77
+ * { text: 'Alabama', value: 'AL' },
78
+ * { text: 'Alaska', value: 'AK' },
79
+ * { text: 'Arizona', value: 'AZ' },
80
+ * ]} />
81
+ * ),
82
+ * zipField: (
83
+ * <Input
84
+ * aria-label="Zip"
85
+ * name="shippingZip"
86
+ * placeholder="Zip Code"
87
+ * variant="primary"
88
+ * value=""
89
+ * />
90
+ * ),
91
+ * destinationText: '12345',
92
+ * onEstimate: (value) => console.log(value),
93
+ * estimateButton: <Button variant="secondary">Apply</Button>,
94
+ * }}
95
+ * total={{
96
+ * price: <Price amount={100} currency="USD" />,
97
+ * estimated: true,
98
+ * }}
99
+ * taxTotal={<span>TBD</span>}
100
+ * discounts={[
101
+ * {
102
+ * label: '10% off',
103
+ * price: <Price amount={-10} currency="USD" sale={true} />,
104
+ * },
105
+ * {
106
+ * label: '100th Customer Discount',
107
+ * price: <Price amount={-2} currency="USD" sale={true} />,
108
+ * caption: <div>Discount for our 100th customer!</div>,
109
+ * },
110
+ * ]}
111
+ * primaryAction={<Button variant="primary">Checkout</Button>}
112
+ * />
113
+ * ```
114
+ */
115
+ export declare const Cart: Story;
116
+ /**
117
+ * Set the loading prop to true to show a loading state.
118
+ *
119
+ * ```tsx
120
+ * <PriceSummary
121
+ * heading='Order Summary',
122
+ * loading={true},
123
+ * />
124
+ * ```
125
+ */
126
+ export declare const Loading: Story;
127
+ //# sourceMappingURL=PriceSummary.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriceSummary.stories.d.ts","sourceRoot":"","sources":["../../../src/components/PriceSummary/PriceSummary.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAEL,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAK9C;;;;;;;;;GASG;AACH,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAgOjC,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,KAAK,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAgCzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,QAAQ,EAAE,KAItB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,eAAO,MAAM,IAAI,EAAE,KA4GlB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC"}