@adobe-commerce/elsie 1.0.0-alpha1

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 (507) hide show
  1. package/.elsie.js +12 -0
  2. package/.eslintrc.js +9 -0
  3. package/README.md +52 -0
  4. package/__mocks__/svg.js +1 -0
  5. package/bin/builders/build/index.js +20 -0
  6. package/bin/builders/generate/api/index.js +65 -0
  7. package/bin/builders/generate/api/templates/function.js +9 -0
  8. package/bin/builders/generate/api/templates/index.js +7 -0
  9. package/bin/builders/generate/api/templates/story.js +23 -0
  10. package/bin/builders/generate/api/templates/unit-test.js +15 -0
  11. package/bin/builders/generate/component/index.js +87 -0
  12. package/bin/builders/generate/component/templates/Component.js +43 -0
  13. package/bin/builders/generate/component/templates/css.js +24 -0
  14. package/bin/builders/generate/component/templates/index.js +8 -0
  15. package/bin/builders/generate/component/templates/stories.js +46 -0
  16. package/bin/builders/generate/component/templates/unit-test.js +19 -0
  17. package/bin/builders/generate/config/index.js +54 -0
  18. package/bin/builders/generate/config/templates/elsie.js +29 -0
  19. package/bin/builders/generate/container/index.js +65 -0
  20. package/bin/builders/generate/container/templates/Component.js +18 -0
  21. package/bin/builders/generate/container/templates/index.js +8 -0
  22. package/bin/builders/generate/container/templates/stories.js +34 -0
  23. package/bin/builders/generate/container/templates/unit-test.js +19 -0
  24. package/bin/builders/generate/index.js +283 -0
  25. package/bin/builders/gql/createOrClearDirectory.js +33 -0
  26. package/bin/builders/gql/getSchemaRef.js +25 -0
  27. package/bin/builders/gql/index.js +71 -0
  28. package/bin/builders/lint/index.js +5 -0
  29. package/bin/builders/serve/index.js +44 -0
  30. package/bin/builders/storybook/index.js +5 -0
  31. package/bin/builders/test/index.js +5 -0
  32. package/bin/index.js +26 -0
  33. package/bin/lib/cli.js +8 -0
  34. package/bin/lib/config.js +12 -0
  35. package/bin/lib/log-message.js +11 -0
  36. package/bin/lib/string.js +26 -0
  37. package/bin/lib/validate-typeof.js +19 -0
  38. package/bin/lib/write-file.js +21 -0
  39. package/bin/lib/write-parent-index.js +36 -0
  40. package/config/eslint.js +103 -0
  41. package/config/jest.js +81 -0
  42. package/config/prettier.js +7 -0
  43. package/config/setEnvVars.js +5 -0
  44. package/config/storybook/addon.js +121 -0
  45. package/config/storybook/components/FileTree/FileTree.jsx +183 -0
  46. package/config/storybook/components/FileTree/index.js +1 -0
  47. package/config/storybook/components/Flex/Flex.jsx +12 -0
  48. package/config/storybook/components/Flex/Flex.module.css +20 -0
  49. package/config/storybook/components/Flex/index.js +1 -0
  50. package/config/storybook/components/OptionsTable/OptionsTable.jsx +79 -0
  51. package/config/storybook/components/OptionsTable/OptionsTable.module.css +95 -0
  52. package/config/storybook/components/OptionsTable/index.js +1 -0
  53. package/config/storybook/components/Panel/Panel.module.css +47 -0
  54. package/config/storybook/components/Panel/Panel.tsx +37 -0
  55. package/config/storybook/components/Panel/index.ts +1 -0
  56. package/config/storybook/components/Screenshot/Screenshot.jsx +14 -0
  57. package/config/storybook/components/Screenshot/Screenshot.module.css +19 -0
  58. package/config/storybook/components/Screenshot/index.js +1 -0
  59. package/config/storybook/components/Steps/Steps.jsx +12 -0
  60. package/config/storybook/components/Steps/Steps.module.css +34 -0
  61. package/config/storybook/components/Steps/index.js +1 -0
  62. package/config/storybook/components/StoryWrapper/StoryWrapper.jsx +9 -0
  63. package/config/storybook/components/StoryWrapper/StoryWrapper.module.css +13 -0
  64. package/config/storybook/components/StoryWrapper/index.js +1 -0
  65. package/config/storybook/components/Summary/Summary.jsx +10 -0
  66. package/config/storybook/components/Summary/Summary.module.css +11 -0
  67. package/config/storybook/components/Summary/index.js +1 -0
  68. package/config/storybook/components/Variants/Variants.js +48 -0
  69. package/config/storybook/components/Variants/docs.css +39 -0
  70. package/config/storybook/components/Variants/index.js +1 -0
  71. package/config/storybook/components/video/index.jsx +19 -0
  72. package/config/storybook/manager.js +14 -0
  73. package/config/storybook/preview.jsx +79 -0
  74. package/config/storybook/theming/fonts.css +59 -0
  75. package/config/storybook/theming/logo.svg +19 -0
  76. package/config/storybook/theming/manager.css +54 -0
  77. package/config/storybook/theming/preview.css +84 -0
  78. package/config/storybook/theming/theme.js +52 -0
  79. package/config/tsconfig-base.json +16 -0
  80. package/config/tsconfig-preact.json +15 -0
  81. package/config/vite.mjs +297 -0
  82. package/dist/chunks/deviceUtils.js +14 -0
  83. package/dist/chunks/icons/Add.js +3 -0
  84. package/dist/chunks/icons/AddressBook.js +3 -0
  85. package/dist/chunks/icons/Bulk.js +3 -0
  86. package/dist/chunks/icons/Burger.js +3 -0
  87. package/dist/chunks/icons/Card.js +3 -0
  88. package/dist/chunks/icons/Cart.js +3 -0
  89. package/dist/chunks/icons/Check.js +3 -0
  90. package/dist/chunks/icons/CheckWithCircle.js +3 -0
  91. package/dist/chunks/icons/ChevronDown.js +3 -0
  92. package/dist/chunks/icons/ChevronRight.js +3 -0
  93. package/dist/chunks/icons/ChevronUp.js +3 -0
  94. package/dist/chunks/icons/Close.js +3 -0
  95. package/dist/chunks/icons/Coupon.js +3 -0
  96. package/dist/chunks/icons/Date.js +3 -0
  97. package/dist/chunks/icons/Delivery.js +3 -0
  98. package/dist/chunks/icons/EmptyBox.js +3 -0
  99. package/dist/chunks/icons/Eye.js +3 -0
  100. package/dist/chunks/icons/EyeClose.js +3 -0
  101. package/dist/chunks/icons/Gift.js +3 -0
  102. package/dist/chunks/icons/GiftCard.js +3 -0
  103. package/dist/chunks/icons/Heart.js +3 -0
  104. package/dist/chunks/icons/HeartFilled.js +3 -0
  105. package/dist/chunks/icons/InfoFilled.js +3 -0
  106. package/dist/chunks/icons/Locker.js +3 -0
  107. package/dist/chunks/icons/Minus.js +3 -0
  108. package/dist/chunks/icons/Order.js +3 -0
  109. package/dist/chunks/icons/OrderError.js +3 -0
  110. package/dist/chunks/icons/OrderSuccess.js +3 -0
  111. package/dist/chunks/icons/PaymentError.js +3 -0
  112. package/dist/chunks/icons/Placeholder.js +3 -0
  113. package/dist/chunks/icons/PlaceholderFilled.js +3 -0
  114. package/dist/chunks/icons/Search.js +3 -0
  115. package/dist/chunks/icons/SearchFilled.js +3 -0
  116. package/dist/chunks/icons/Sort.js +3 -0
  117. package/dist/chunks/icons/Star.js +3 -0
  118. package/dist/chunks/icons/Trash.js +3 -0
  119. package/dist/chunks/icons/User.js +3 -0
  120. package/dist/chunks/icons/View.js +3 -0
  121. package/dist/chunks/icons/Wallet.js +3 -0
  122. package/dist/chunks/icons/Warning.js +3 -0
  123. package/dist/chunks/icons/WarningFilled.js +3 -0
  124. package/dist/chunks/icons/WarningWithCircle.js +3 -0
  125. package/dist/chunks/image-params-keymap.js +3 -0
  126. package/dist/chunks/initializer.js +5 -0
  127. package/dist/components.d.ts +1 -0
  128. package/dist/components.js +3 -0
  129. package/dist/event-bus.d.ts +1 -0
  130. package/dist/event-bus.js +3 -0
  131. package/dist/fetch-graphql.d.ts +1 -0
  132. package/dist/fetch-graphql.js +3 -0
  133. package/dist/i18n.d.ts +1 -0
  134. package/dist/i18n.js +5 -0
  135. package/dist/initializer.d.ts +1 -0
  136. package/dist/initializer.js +5 -0
  137. package/dist/lib.d.ts +1 -0
  138. package/dist/lib.js +3 -0
  139. package/dist/preact-compat.d.ts +1 -0
  140. package/dist/preact-compat.js +3 -0
  141. package/dist/preact-hooks.d.ts +1 -0
  142. package/dist/preact-hooks.js +3 -0
  143. package/dist/preact-jsx-runtime.d.ts +1 -0
  144. package/dist/preact-jsx-runtime.js +3 -0
  145. package/dist/preact.d.ts +1 -0
  146. package/dist/preact.js +3 -0
  147. package/dist/recaptcha.d.ts +1 -0
  148. package/dist/recaptcha.js +14 -0
  149. package/dist/signals.d.ts +1 -0
  150. package/dist/signals.js +3 -0
  151. package/dist/types/elsie/src/components/Accordion/Accordion.d.ts +27 -0
  152. package/dist/types/elsie/src/components/Accordion/index.d.ts +3 -0
  153. package/dist/types/elsie/src/components/ActionButton/ActionButton.d.ts +11 -0
  154. package/dist/types/elsie/src/components/ActionButton/index.d.ts +2 -0
  155. package/dist/types/elsie/src/components/ActionButtonGroup/ActionButtonGroup.d.ts +20 -0
  156. package/dist/types/elsie/src/components/ActionButtonGroup/index.d.ts +2 -0
  157. package/dist/types/elsie/src/components/AlertBanner/AlertBanner.d.ts +15 -0
  158. package/dist/types/elsie/src/components/AlertBanner/index.d.ts +3 -0
  159. package/dist/types/elsie/src/components/Breadcrumbs/Breadcrumbs.d.ts +9 -0
  160. package/dist/types/elsie/src/components/Breadcrumbs/index.d.ts +3 -0
  161. package/dist/types/elsie/src/components/Button/Button.d.ts +15 -0
  162. package/dist/types/elsie/src/components/Button/index.d.ts +3 -0
  163. package/dist/types/elsie/src/components/Card/Card.d.ts +9 -0
  164. package/dist/types/elsie/src/components/Card/index.d.ts +2 -0
  165. package/dist/types/elsie/src/components/CartItem/CartItem.d.ts +36 -0
  166. package/dist/types/elsie/src/components/CartItem/CartItemSkeleton.d.ts +4 -0
  167. package/dist/types/elsie/src/components/CartItem/index.d.ts +4 -0
  168. package/dist/types/elsie/src/components/CartList/CartList.d.ts +7 -0
  169. package/dist/types/elsie/src/components/CartList/index.d.ts +3 -0
  170. package/dist/types/elsie/src/components/Checkbox/Checkbox.d.ts +13 -0
  171. package/dist/types/elsie/src/components/Checkbox/index.d.ts +2 -0
  172. package/dist/types/elsie/src/components/ColorSwatch/ColorSwatch.d.ts +20 -0
  173. package/dist/types/elsie/src/components/ColorSwatch/index.d.ts +3 -0
  174. package/dist/types/elsie/src/components/ContentGrid/ContentGrid.d.ts +10 -0
  175. package/dist/types/elsie/src/components/ContentGrid/index.d.ts +19 -0
  176. package/dist/types/elsie/src/components/Divider/Divider.d.ts +8 -0
  177. package/dist/types/elsie/src/components/Divider/index.d.ts +3 -0
  178. package/dist/types/elsie/src/components/Field/Field.d.ts +14 -0
  179. package/dist/types/elsie/src/components/Field/index.d.ts +2 -0
  180. package/dist/types/elsie/src/components/Header/Header.d.ts +11 -0
  181. package/dist/types/elsie/src/components/Header/index.d.ts +3 -0
  182. package/dist/types/elsie/src/components/Icon/Icon.d.ts +18 -0
  183. package/dist/types/elsie/src/components/Icon/index.d.ts +2 -0
  184. package/dist/types/elsie/src/components/IllustratedMessage/IllustratedMessage.d.ts +13 -0
  185. package/dist/types/elsie/src/components/IllustratedMessage/index.d.ts +3 -0
  186. package/dist/types/elsie/src/components/Image/Image.d.ts +11 -0
  187. package/dist/types/elsie/src/components/Image/index.d.ts +2 -0
  188. package/dist/types/elsie/src/components/ImageSwatch/ImageSwatch.d.ts +20 -0
  189. package/dist/types/elsie/src/components/ImageSwatch/index.d.ts +3 -0
  190. package/dist/types/elsie/src/components/InLineAlert/InLineAlert.d.ts +19 -0
  191. package/dist/types/elsie/src/components/InLineAlert/index.d.ts +3 -0
  192. package/dist/types/elsie/src/components/Incrementer/Incrementer.d.ts +17 -0
  193. package/dist/types/elsie/src/components/Incrementer/index.d.ts +2 -0
  194. package/dist/types/elsie/src/components/Input/Input.d.ts +19 -0
  195. package/dist/types/elsie/src/components/Input/index.d.ts +3 -0
  196. package/dist/types/elsie/src/components/InputDate/InputDate.d.ts +11 -0
  197. package/dist/types/elsie/src/components/InputDate/index.d.ts +3 -0
  198. package/dist/types/elsie/src/components/InputPassword/InputPassword.d.ts +19 -0
  199. package/dist/types/elsie/src/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.d.ts +18 -0
  200. package/dist/types/elsie/src/components/InputPassword/PasswordStatusIndicator/index.d.ts +3 -0
  201. package/dist/types/elsie/src/components/InputPassword/index.d.ts +3 -0
  202. package/dist/types/elsie/src/components/Modal/Modal.d.ts +15 -0
  203. package/dist/types/elsie/src/components/Modal/index.d.ts +2 -0
  204. package/dist/types/elsie/src/components/Pagination/Pagination.d.ts +15 -0
  205. package/dist/types/elsie/src/components/Pagination/index.d.ts +3 -0
  206. package/dist/types/elsie/src/components/Picker/Picker.d.ts +28 -0
  207. package/dist/types/elsie/src/components/Picker/index.d.ts +2 -0
  208. package/dist/types/elsie/src/components/Price/Price.d.ts +17 -0
  209. package/dist/types/elsie/src/components/Price/index.d.ts +2 -0
  210. package/dist/types/elsie/src/components/PriceRange/PriceRange.d.ts +17 -0
  211. package/dist/types/elsie/src/components/PriceRange/index.d.ts +3 -0
  212. package/dist/types/elsie/src/components/ProgressSpinner/ProgressSpinner.d.ts +14 -0
  213. package/dist/types/elsie/src/components/ProgressSpinner/index.d.ts +3 -0
  214. package/dist/types/elsie/src/components/RadioButton/RadioButton.d.ts +16 -0
  215. package/dist/types/elsie/src/components/RadioButton/index.d.ts +3 -0
  216. package/dist/types/elsie/src/components/Skeleton/Skeleton.d.ts +17 -0
  217. package/dist/types/elsie/src/components/Skeleton/index.d.ts +2 -0
  218. package/dist/types/elsie/src/components/Tag/Tag.d.ts +9 -0
  219. package/dist/types/elsie/src/components/Tag/index.d.ts +3 -0
  220. package/dist/types/elsie/src/components/TextArea/TextArea.d.ts +11 -0
  221. package/dist/types/elsie/src/components/TextArea/index.d.ts +3 -0
  222. package/dist/types/elsie/src/components/TextSwatch/TextSwatch.d.ts +18 -0
  223. package/dist/types/elsie/src/components/TextSwatch/index.d.ts +3 -0
  224. package/dist/types/elsie/src/components/ToggleButton/ToggleButton.d.ts +14 -0
  225. package/dist/types/elsie/src/components/ToggleButton/index.d.ts +3 -0
  226. package/dist/types/elsie/src/components/UIProvider/UIProvider.d.ts +19 -0
  227. package/dist/types/elsie/src/components/UIProvider/index.d.ts +2 -0
  228. package/dist/types/elsie/src/components/index.d.ts +41 -0
  229. package/dist/types/elsie/src/i18n/en_US.json.d.ts +149 -0
  230. package/dist/types/elsie/src/i18n/index.d.ts +443 -0
  231. package/dist/types/elsie/src/icons/index.d.ts +43 -0
  232. package/dist/types/elsie/src/lib/classes.d.ts +6 -0
  233. package/dist/types/elsie/src/lib/config.d.ts +7 -0
  234. package/dist/types/elsie/src/lib/debounce.d.ts +2 -0
  235. package/dist/types/elsie/src/lib/deepmerge.d.ts +5 -0
  236. package/dist/types/elsie/src/lib/deviceUtils.d.ts +2 -0
  237. package/dist/types/elsie/src/lib/form-values.d.ts +5 -0
  238. package/dist/types/elsie/src/lib/i18n.d.ts +8 -0
  239. package/dist/types/elsie/src/lib/image-params-keymap.d.ts +4 -0
  240. package/dist/types/elsie/src/lib/index.d.ts +16 -0
  241. package/dist/types/elsie/src/lib/initializer.d.ts +81 -0
  242. package/dist/types/elsie/src/lib/is-number.d.ts +2 -0
  243. package/dist/types/elsie/src/lib/render.d.ts +42 -0
  244. package/dist/types/elsie/src/lib/resolve-image.d.ts +10 -0
  245. package/dist/types/elsie/src/lib/signals.d.ts +2 -0
  246. package/dist/types/elsie/src/lib/slot.d.ts +45 -0
  247. package/dist/types/elsie/src/lib/tests.d.ts +5 -0
  248. package/dist/types/elsie/src/lib/types.d.ts +10 -0
  249. package/dist/types/elsie/src/lib/vcomponent.d.ts +9 -0
  250. package/package.json +114 -0
  251. package/src/components/Accordion/Accordion.css +79 -0
  252. package/src/components/Accordion/Accordion.stories.tsx +566 -0
  253. package/src/components/Accordion/Accordion.tsx +166 -0
  254. package/src/components/Accordion/index.ts +2 -0
  255. package/src/components/ActionButton/ActionButton.css +91 -0
  256. package/src/components/ActionButton/ActionButton.stories.tsx +160 -0
  257. package/src/components/ActionButton/ActionButton.tsx +44 -0
  258. package/src/components/ActionButton/index.ts +1 -0
  259. package/src/components/ActionButtonGroup/ActionButtonGroup.css +68 -0
  260. package/src/components/ActionButtonGroup/ActionButtonGroup.stories.tsx +88 -0
  261. package/src/components/ActionButtonGroup/ActionButtonGroup.tsx +82 -0
  262. package/src/components/ActionButtonGroup/index.ts +1 -0
  263. package/src/components/AlertBanner/AlertBanner.css +135 -0
  264. package/src/components/AlertBanner/AlertBanner.stories.tsx +156 -0
  265. package/src/components/AlertBanner/AlertBanner.tsx +81 -0
  266. package/src/components/AlertBanner/index.ts +2 -0
  267. package/src/components/Breadcrumbs/Breadcrumbs.css +51 -0
  268. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +186 -0
  269. package/src/components/Breadcrumbs/Breadcrumbs.tsx +62 -0
  270. package/src/components/Breadcrumbs/index.ts +2 -0
  271. package/src/components/Button/Button.css +204 -0
  272. package/src/components/Button/Button.mdx +133 -0
  273. package/src/components/Button/Button.stories.tsx +389 -0
  274. package/src/components/Button/Button.tsx +112 -0
  275. package/src/components/Button/index.ts +2 -0
  276. package/src/components/Card/Card.css +25 -0
  277. package/src/components/Card/Card.stories.tsx +67 -0
  278. package/src/components/Card/Card.tsx +25 -0
  279. package/src/components/Card/index.ts +1 -0
  280. package/src/components/CartItem/CartItem.css +474 -0
  281. package/src/components/CartItem/CartItem.stories.tsx +588 -0
  282. package/src/components/CartItem/CartItem.tsx +444 -0
  283. package/src/components/CartItem/CartItemSkeleton.tsx +29 -0
  284. package/src/components/CartItem/index.ts +3 -0
  285. package/src/components/CartList/CartList.css +26 -0
  286. package/src/components/CartList/CartList.stories.tsx +102 -0
  287. package/src/components/CartList/CartList.tsx +31 -0
  288. package/src/components/CartList/index.ts +2 -0
  289. package/src/components/Checkbox/Checkbox.css +246 -0
  290. package/src/components/Checkbox/Checkbox.stories.tsx +281 -0
  291. package/src/components/Checkbox/Checkbox.tsx +129 -0
  292. package/src/components/Checkbox/index.ts +1 -0
  293. package/src/components/ColorSwatch/ColorSwatch.css +123 -0
  294. package/src/components/ColorSwatch/ColorSwatch.stories.tsx +265 -0
  295. package/src/components/ColorSwatch/ColorSwatch.tsx +118 -0
  296. package/src/components/ColorSwatch/index.ts +2 -0
  297. package/src/components/ContentGrid/ContentGrid.css +62 -0
  298. package/src/components/ContentGrid/ContentGrid.stories.tsx +145 -0
  299. package/src/components/ContentGrid/ContentGrid.tsx +65 -0
  300. package/src/components/ContentGrid/index.ts +19 -0
  301. package/src/components/Divider/Divider.css +13 -0
  302. package/src/components/Divider/Divider.stories.tsx +53 -0
  303. package/src/components/Divider/Divider.tsx +24 -0
  304. package/src/components/Divider/index.ts +2 -0
  305. package/src/components/Field/Field.css +74 -0
  306. package/src/components/Field/Field.stories.tsx +229 -0
  307. package/src/components/Field/Field.tsx +75 -0
  308. package/src/components/Field/index.ts +1 -0
  309. package/src/components/Header/Header.css +47 -0
  310. package/src/components/Header/Header.stories.tsx +128 -0
  311. package/src/components/Header/Header.tsx +53 -0
  312. package/src/components/Header/index.ts +2 -0
  313. package/src/components/Icon/Icon.css +17 -0
  314. package/src/components/Icon/Icon.stories.helpers.jsx +12 -0
  315. package/src/components/Icon/Icon.stories.tsx +88 -0
  316. package/src/components/Icon/Icon.tsx +103 -0
  317. package/src/components/Icon/index.ts +1 -0
  318. package/src/components/IllustratedMessage/IllustratedMessage.css +52 -0
  319. package/src/components/IllustratedMessage/IllustratedMessage.stories.tsx +117 -0
  320. package/src/components/IllustratedMessage/IllustratedMessage.tsx +69 -0
  321. package/src/components/IllustratedMessage/index.ts +2 -0
  322. package/src/components/Image/Image.css +43 -0
  323. package/src/components/Image/Image.stories.tsx +80 -0
  324. package/src/components/Image/Image.tsx +57 -0
  325. package/src/components/Image/index.ts +1 -0
  326. package/src/components/ImageSwatch/ImageSwatch.css +145 -0
  327. package/src/components/ImageSwatch/ImageSwatch.stories.tsx +252 -0
  328. package/src/components/ImageSwatch/ImageSwatch.tsx +111 -0
  329. package/src/components/ImageSwatch/index.ts +2 -0
  330. package/src/components/InLineAlert/InLineAlert.css +107 -0
  331. package/src/components/InLineAlert/InLineAlert.stories.tsx +317 -0
  332. package/src/components/InLineAlert/InLineAlert.tsx +119 -0
  333. package/src/components/InLineAlert/index.ts +2 -0
  334. package/src/components/Incrementer/Incrementer.css +156 -0
  335. package/src/components/Incrementer/Incrementer.stories.tsx +163 -0
  336. package/src/components/Incrementer/Incrementer.tsx +183 -0
  337. package/src/components/Incrementer/index.ts +1 -0
  338. package/src/components/Input/Input.css +295 -0
  339. package/src/components/Input/Input.stories.tsx +146 -0
  340. package/src/components/Input/Input.tsx +157 -0
  341. package/src/components/Input/index.ts +2 -0
  342. package/src/components/InputDate/InputDate.css +47 -0
  343. package/src/components/InputDate/InputDate.stories.tsx +108 -0
  344. package/src/components/InputDate/InputDate.tsx +111 -0
  345. package/src/components/InputDate/index.ts +2 -0
  346. package/src/components/InputPassword/InputPassword.css +22 -0
  347. package/src/components/InputPassword/InputPassword.stories.tsx +139 -0
  348. package/src/components/InputPassword/InputPassword.tsx +126 -0
  349. package/src/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.css +22 -0
  350. package/src/components/InputPassword/PasswordStatusIndicator/PasswordStatusIndicator.tsx +87 -0
  351. package/src/components/InputPassword/PasswordStatusIndicator/index.ts +2 -0
  352. package/src/components/InputPassword/index.ts +2 -0
  353. package/src/components/Modal/Modal.css +130 -0
  354. package/src/components/Modal/Modal.stories.tsx +255 -0
  355. package/src/components/Modal/Modal.tsx +162 -0
  356. package/src/components/Modal/index.ts +15 -0
  357. package/src/components/Pagination/Pagination.css +86 -0
  358. package/src/components/Pagination/Pagination.stories.tsx +108 -0
  359. package/src/components/Pagination/Pagination.tsx +140 -0
  360. package/src/components/Pagination/index.ts +2 -0
  361. package/src/components/Picker/Picker.css +211 -0
  362. package/src/components/Picker/Picker.stories.tsx +309 -0
  363. package/src/components/Picker/Picker.tsx +194 -0
  364. package/src/components/Picker/index.ts +1 -0
  365. package/src/components/Price/Price.css +48 -0
  366. package/src/components/Price/Price.stories.tsx +101 -0
  367. package/src/components/Price/Price.tsx +66 -0
  368. package/src/components/Price/index.ts +1 -0
  369. package/src/components/PriceRange/PriceRange.css +57 -0
  370. package/src/components/PriceRange/PriceRange.stories.tsx +231 -0
  371. package/src/components/PriceRange/PriceRange.tsx +239 -0
  372. package/src/components/PriceRange/index.ts +2 -0
  373. package/src/components/ProgressSpinner/ProgressSpinner.css +82 -0
  374. package/src/components/ProgressSpinner/ProgressSpinner.stories.tsx +291 -0
  375. package/src/components/ProgressSpinner/ProgressSpinner.tsx +77 -0
  376. package/src/components/ProgressSpinner/index.ts +2 -0
  377. package/src/components/RadioButton/RadioButton.css +125 -0
  378. package/src/components/RadioButton/RadioButton.stories.tsx +117 -0
  379. package/src/components/RadioButton/RadioButton.tsx +77 -0
  380. package/src/components/RadioButton/index.ts +2 -0
  381. package/src/components/Skeleton/Skeleton.css +136 -0
  382. package/src/components/Skeleton/Skeleton.stories.tsx +256 -0
  383. package/src/components/Skeleton/Skeleton.tsx +124 -0
  384. package/src/components/Skeleton/index.ts +1 -0
  385. package/src/components/Tag/Tag.css +17 -0
  386. package/src/components/Tag/Tag.stories.tsx +94 -0
  387. package/src/components/Tag/Tag.tsx +29 -0
  388. package/src/components/Tag/index.ts +2 -0
  389. package/src/components/TextArea/TextArea.css +131 -0
  390. package/src/components/TextArea/TextArea.stories.tsx +121 -0
  391. package/src/components/TextArea/TextArea.tsx +80 -0
  392. package/src/components/TextArea/index.ts +2 -0
  393. package/src/components/TextSwatch/TextSwatch.css +143 -0
  394. package/src/components/TextSwatch/TextSwatch.stories.tsx +268 -0
  395. package/src/components/TextSwatch/TextSwatch.tsx +122 -0
  396. package/src/components/TextSwatch/index.ts +2 -0
  397. package/src/components/ToggleButton/ToggleButton.css +77 -0
  398. package/src/components/ToggleButton/ToggleButton.stories.tsx +146 -0
  399. package/src/components/ToggleButton/ToggleButton.tsx +67 -0
  400. package/src/components/ToggleButton/index.ts +2 -0
  401. package/src/components/UIProvider/UIProvider.css +131 -0
  402. package/src/components/UIProvider/UIProvider.tsx +52 -0
  403. package/src/components/UIProvider/debugger.css +38 -0
  404. package/src/components/UIProvider/index.ts +1 -0
  405. package/src/components/UIProvider/normalize.css +17 -0
  406. package/src/components/index.ts +40 -0
  407. package/src/docs/API/event-bus.mdx +52 -0
  408. package/src/docs/API/graphql.mdx +214 -0
  409. package/src/docs/API/initializer.mdx +110 -0
  410. package/src/docs/API/render.mdx +125 -0
  411. package/src/docs/Design/colors.mdx +202 -0
  412. package/src/docs/Design/designBlocks.jsx +87 -0
  413. package/src/docs/Design/getTokenData.ts +28 -0
  414. package/src/docs/Design/grid.mdx +365 -0
  415. package/src/docs/Design/overview.mdx +69 -0
  416. package/src/docs/Design/shapes.mdx +100 -0
  417. package/src/docs/Design/spacing.mdx +22 -0
  418. package/src/docs/Design/typography.mdx +126 -0
  419. package/src/docs/Utilities/classList.mdx +52 -0
  420. package/src/docs/Utilities/debounce.mdx +49 -0
  421. package/src/docs/Utilities/deepmerge.mdx +12 -0
  422. package/src/docs/Utilities/getFormErrors.mdx +41 -0
  423. package/src/docs/Utilities/getFormValues.mdx +38 -0
  424. package/src/docs/assets/Banner.png +0 -0
  425. package/src/docs/assets/Colors.png +0 -0
  426. package/src/docs/assets/DropinBanner.png +0 -0
  427. package/src/docs/assets/ShapeStyles.png +0 -0
  428. package/src/docs/assets/Spacing.png +0 -0
  429. package/src/docs/assets/Typography.png +0 -0
  430. package/src/docs/cli-usage.mdx +181 -0
  431. package/src/docs/components/overview.mdx +124 -0
  432. package/src/docs/quick-start.mdx +245 -0
  433. package/src/docs/slots.mdx +211 -0
  434. package/src/docs/welcome.mdx +52 -0
  435. package/src/i18n/en_US.json +146 -0
  436. package/src/i18n/index.ts +17 -0
  437. package/src/icons/Add.svg +9 -0
  438. package/src/icons/AddressBook.svg +3 -0
  439. package/src/icons/Bulk.svg +24 -0
  440. package/src/icons/Burger.svg +5 -0
  441. package/src/icons/Card.svg +7 -0
  442. package/src/icons/Cart.svg +11 -0
  443. package/src/icons/Check.svg +8 -0
  444. package/src/icons/CheckWithCircle.svg +4 -0
  445. package/src/icons/ChevronDown.svg +3 -0
  446. package/src/icons/ChevronRight.svg +8 -0
  447. package/src/icons/ChevronUp.svg +3 -0
  448. package/src/icons/Close.svg +4 -0
  449. package/src/icons/Coupon.svg +3 -0
  450. package/src/icons/Date.svg +4 -0
  451. package/src/icons/Delivery.svg +11 -0
  452. package/src/icons/EmptyBox.svg +3 -0
  453. package/src/icons/Eye.svg +3 -0
  454. package/src/icons/EyeClose.svg +3 -0
  455. package/src/icons/Gift.svg +3 -0
  456. package/src/icons/GiftCard.svg +3 -0
  457. package/src/icons/Heart.svg +3 -0
  458. package/src/icons/HeartFilled.svg +3 -0
  459. package/src/icons/InfoFilled.svg +3 -0
  460. package/src/icons/Locker.svg +11 -0
  461. package/src/icons/Minus.svg +3 -0
  462. package/src/icons/Order.svg +6 -0
  463. package/src/icons/OrderError.svg +15 -0
  464. package/src/icons/OrderSuccess.svg +15 -0
  465. package/src/icons/PaymentError.svg +16 -0
  466. package/src/icons/Placeholder.svg +3 -0
  467. package/src/icons/PlaceholderFilled.svg +4 -0
  468. package/src/icons/Search.svg +9 -0
  469. package/src/icons/SearchFilled.svg +10 -0
  470. package/src/icons/Sort.svg +12 -0
  471. package/src/icons/Star.svg +8 -0
  472. package/src/icons/Trash.svg +7 -0
  473. package/src/icons/User.svg +5 -0
  474. package/src/icons/View.svg +14 -0
  475. package/src/icons/Wallet.svg +6 -0
  476. package/src/icons/Warning.svg +12 -0
  477. package/src/icons/WarningFilled.svg +3 -0
  478. package/src/icons/WarningWithCircle.svg +4 -0
  479. package/src/icons/index.ts +42 -0
  480. package/src/lib/classes.ts +25 -0
  481. package/src/lib/config.ts +15 -0
  482. package/src/lib/debounce.ts +7 -0
  483. package/src/lib/deepmerge.ts +36 -0
  484. package/src/lib/deviceUtils.ts +7 -0
  485. package/src/lib/form-values.ts +22 -0
  486. package/src/lib/i18n.ts +9 -0
  487. package/src/lib/image-params-keymap.ts +25 -0
  488. package/src/lib/index.ts +15 -0
  489. package/src/lib/initializer.ts +122 -0
  490. package/src/lib/is-number.ts +3 -0
  491. package/src/lib/render.tsx +129 -0
  492. package/src/lib/resolve-image.ts +77 -0
  493. package/src/lib/signals.ts +2 -0
  494. package/src/lib/slot.tsx +425 -0
  495. package/src/lib/tests.tsx +38 -0
  496. package/src/lib/types.ts +7 -0
  497. package/src/lib/vcomponent.tsx +47 -0
  498. package/static/assets/images/Card.png +0 -0
  499. package/static/assets/images/example.jpg +0 -0
  500. package/static/assets/images/index.ts +2 -0
  501. package/static/dropin.png +0 -0
  502. package/static/favicon.svg +14 -0
  503. package/storybook-stories.js +12 -0
  504. package/tests/__mocks__/browserMocks.ts +19 -0
  505. package/tests/__mocks__/fileMocks.ts +3 -0
  506. package/tests/__mocks__/styleMock.ts +0 -0
  507. package/types/icons.d.ts +9 -0
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Convert locale from Magento standard to react-intl BCP 47 language tag
3
+ *
4
+ * @param {string} locale - A locale (e.g. `fr_FR`).
5
+ * @returns {string} A BCP 47 language tag (e.g. `fr-FR`).
6
+ */
7
+ export const toLanguageTag = (locale: string) => {
8
+ return locale.replace('_', '-');
9
+ };
@@ -0,0 +1,25 @@
1
+ class ImageParamsKeyMap {
2
+ private _map?: { [key: string]: string } | undefined;
3
+
4
+ get map() {
5
+ return this._map;
6
+ }
7
+
8
+ set map(value: typeof this._map) {
9
+ this._map = value;
10
+ }
11
+
12
+ public getMethods() {
13
+ return {
14
+ setMap: (value: typeof this._map) => {
15
+ this.map = value;
16
+ },
17
+ getMap: () => this.map,
18
+ };
19
+ }
20
+ }
21
+
22
+ const keyMap = new ImageParamsKeyMap();
23
+
24
+ export const { setMap: setImageParamsKeyMap, getMap: getImageParamsKeyMap } =
25
+ keyMap.getMethods();
@@ -0,0 +1,15 @@
1
+ export * from '@adobe/elsie/lib/form-values';
2
+ export * from '@adobe/elsie/lib/classes';
3
+ export * from '@adobe/elsie/lib/deepmerge';
4
+ export * from '@adobe/elsie/lib/debounce';
5
+ export * from '@adobe/elsie/lib/resolve-image';
6
+ export * from '@adobe/elsie/lib/render';
7
+ export * from '@adobe/elsie/lib/i18n';
8
+ export * from '@adobe/elsie/lib/initializer';
9
+ export * from '@adobe/elsie/lib/config';
10
+ export * from '@adobe/elsie/lib/types';
11
+ export * from '@adobe/elsie/lib/slot';
12
+ export * from '@adobe/elsie/lib/vcomponent';
13
+ export * from '@adobe/elsie/lib/image-params-keymap';
14
+ export * from '@adobe/elsie/lib/is-number';
15
+ export * from '@adobe/elsie/lib/deviceUtils';
@@ -0,0 +1,122 @@
1
+ import { Config, setImageParamsKeyMap } from '@adobe/elsie/lib';
2
+
3
+ type Listener = { off(): void };
4
+
5
+ type Listeners<T> = (config?: T) => Array<Listener | undefined>;
6
+
7
+ type Init<T> = (config?: T) => Promise<void>;
8
+
9
+ type Options<T> = { init: Init<T>; listeners: Listeners<T> };
10
+
11
+ export type Model<T = any, D = any> = {
12
+ transformer?: (data: D) => T & { [key: string]: any };
13
+ };
14
+
15
+ /**
16
+ * The `Initializer` class is responsible for setting up event listeners and initializing a module with the given configuration.
17
+ *
18
+ * @template T - The type of the configuration object.
19
+ * @class
20
+ */
21
+ export class Initializer<T> {
22
+ private _listeners: Listener[] = [];
23
+ listeners: Listeners<T>;
24
+ init: Init<T>;
25
+ config = new Config<T>({} as T);
26
+
27
+ /**
28
+ * Creates an instance of Initializer.
29
+ * @param options - The initialization options.
30
+ * @param options.init - A function that initializes the module.
31
+ * @param options.listeners - A function that sets up event listeners.
32
+ */
33
+ constructor({ init, listeners }: Options<T>) {
34
+ this.listeners = (config) => {
35
+ // Unbind existing listeners
36
+ this._listeners.forEach((listener) => listener.off());
37
+ // Bind new listeners
38
+ return (this._listeners = listeners(config) as Listener[]);
39
+ };
40
+
41
+ this.init = (options) => {
42
+ const { imageParamsKeyMap, ...rest } = options as any;
43
+ this.config.setConfig({ ...this.config.getConfig(), ...rest });
44
+ setImageParamsKeyMap(imageParamsKeyMap);
45
+ return init(options);
46
+ };
47
+ }
48
+ }
49
+
50
+ type Initializers = [Initializer<any>, { [key: string]: any } | undefined][];
51
+
52
+ /**
53
+ * The Initializers class provides methods to register, mount, and configure initializers.
54
+ *
55
+ * @class
56
+ *
57
+ * @method register - Registers a new initializer. If the initializers have already been mounted, it immediately binds the event listeners and initializes the API for the new initializer.
58
+ * @method mount - Mounts all registered initializers. This involves binding the event listeners and initializing the APIs for each initializer, in that order.
59
+ * @method setImageParamKeys - Sets the image parameter keys. These keys are used when initializing the APIs for the initializers.
60
+ */
61
+ export class initializers {
62
+ static _initializers: Initializers = [];
63
+ static _mounted: boolean = false;
64
+ static _imageParamsKeyMap: { [key: string]: string } | undefined = undefined;
65
+
66
+ /**
67
+ * Registers a new initializer. If the initializers have already been mounted,it immediately binds the event listeners and initializes the API for the new initializer.
68
+ * @param initializer - The initializer to register.
69
+ * @param options - Optional configuration for the initializer.
70
+ */
71
+ static register(
72
+ initializer: Initializer<any>,
73
+ options?: { [key: string]: any }
74
+ ) {
75
+ if (initializers._mounted) {
76
+ initializer.listeners?.(options);
77
+ initializer.init?.(options);
78
+ }
79
+ initializers._initializers.push([initializer, options]);
80
+ }
81
+
82
+ /**
83
+ * Mounts the provided initializer immediately. This involves binding the event listeners and initializing the API for the initializer.
84
+ */
85
+ static async mountImmediately(
86
+ initializer: Initializer<any>,
87
+ options?: { [key: string]: any }
88
+ ) {
89
+ initializer.listeners?.(options);
90
+ await initializer.init?.({
91
+ imageParamsKeyMap: initializers._imageParamsKeyMap,
92
+ ...options
93
+ });
94
+ }
95
+
96
+ /**
97
+ * Mounts all registered initializers. This involves binding the event listeners and initializing the APIs for each initializer, in that order.
98
+ */
99
+ static mount() {
100
+ initializers._mounted = true;
101
+ // In this specific order
102
+ // 1. Bind events
103
+ initializers._initializers?.forEach(([initializer, options]) => {
104
+ initializer.listeners?.(options);
105
+ });
106
+
107
+ // 2. Initialize APIs
108
+ initializers._initializers?.forEach(([initializer, options]) => {
109
+ initializer.init?.({
110
+ imageParamsKeyMap: initializers._imageParamsKeyMap,
111
+ ...options,
112
+ });
113
+ });
114
+ }
115
+ /**
116
+ * Sets the image parameter keys. These keys are used when initializing the APIs for the initializers.
117
+ * @param params - The image parameter keys.
118
+ */
119
+ static setImageParamKeys(params: { [key: string]: any }) {
120
+ initializers._imageParamsKeyMap = params;
121
+ }
122
+ }
@@ -0,0 +1,3 @@
1
+ export const isNumber = (value: number | string): value is number => {
2
+ return typeof value === 'number';
3
+ };
@@ -0,0 +1,129 @@
1
+ import { render, VNode, createContext } from 'preact';
2
+ import renderToString from 'preact-render-to-string';
3
+ import { Container, VComponent } from '@adobe/elsie/lib';
4
+ import { Signal, signal } from '@adobe/elsie/lib/signals';
5
+
6
+ export const SlotQueueContext = createContext<Signal<Set<string>> | null>(null);
7
+
8
+ type RenderAPI = {
9
+ remove: () => void;
10
+ setProps: (cb: (prev: any) => any) => void;
11
+ };
12
+
13
+ /**
14
+ * The `Render` class provides methods to render and unmount components, as well as to render components to a string.
15
+ * @class
16
+ *
17
+ * @property {Function} render - Renders a component to a root element.
18
+ * @property {Function} toString - Renders a component to a string.
19
+ */
20
+ export class Render {
21
+ private _provider: VNode<any>;
22
+
23
+ constructor(provider: VNode<any>) {
24
+ this._provider = provider;
25
+ }
26
+
27
+ /**
28
+ * Renders a container to a root element.
29
+ * @param Container - The container to render.
30
+ * @param props - The container parameters.
31
+ * @returns A function to render the component to a root element.
32
+ */
33
+ render<T>(Component: Container<T>, props: T) {
34
+ /**
35
+ * Renders a component to a root element.
36
+ * @param rootElement - The root element to render the component to.
37
+ * @returns A promise that resolves to an object with methods to control the rendered component.
38
+ */
39
+ return async (rootElement: HTMLElement): Promise<RenderAPI> => {
40
+ if (!Component) throw new Error('Component is not defined');
41
+ if (!rootElement) throw new Error('Root element is not defined');
42
+
43
+ const initialData = (await Component.getInitialData?.(props)) ?? {};
44
+
45
+ const state = signal<T>({ ...props });
46
+
47
+ const queue = signal<Set<string>>(new Set());
48
+
49
+ const provider = this._provider;
50
+
51
+ const Root = ({ next }: { next: Signal<T> }) => {
52
+ return (
53
+ <SlotQueueContext.Provider value={queue}>
54
+ <VComponent node={provider} {...provider.props}>
55
+ <Component {...next.value} initialData={initialData} />
56
+ </VComponent>
57
+ </SlotQueueContext.Provider>
58
+ );
59
+ };
60
+
61
+ // clear the root element
62
+ rootElement.innerHTML = '';
63
+
64
+ // clone the root element to initialize rendering on the background
65
+ const tmp = document.createElement('div');
66
+
67
+ // apply base design tokens and global styles to the root element
68
+ rootElement.classList.add('dropin-design');
69
+
70
+ render(<Root next={state} />, tmp);
71
+
72
+ // API object to control the rendered component
73
+ const API: RenderAPI = {
74
+ remove: () => {
75
+ render(null, tmp);
76
+ },
77
+ setProps: (cb: (prev: T) => T) => {
78
+ const next = cb(state.peek());
79
+ state.value = next;
80
+ },
81
+ };
82
+
83
+ // wait for all slots to be resolved
84
+ return new Promise((resolve) => {
85
+ queue.subscribe((pending) => {
86
+ if (pending.size === 0) {
87
+ // apply base design tokens and global styles to the root element
88
+ rootElement.classList.add('dropin-design');
89
+
90
+ // append the rendered component to the DOM only when all slots are resolved
91
+ rootElement.appendChild(tmp.firstChild ?? tmp);
92
+
93
+ return resolve(API);
94
+ }
95
+ });
96
+ });
97
+ };
98
+ }
99
+
100
+ /**
101
+ * UnRenders a component from a root element.
102
+ * @param rootElement - The root element to unmount the component from.
103
+ * @deprecated Use `remove` method from the returned object of the `mount` method instead.
104
+ */
105
+ unmount(rootElement: HTMLElement) {
106
+ if (!rootElement) throw new Error('Root element is not defined');
107
+ rootElement.firstChild?.remove();
108
+ }
109
+
110
+ /**
111
+ * Renders a component to a string.
112
+ * @param Component - The component to render.
113
+ * @param props - The component props.
114
+ * @param options - Optional rendering options.
115
+ */
116
+ async toString<T>(Component: Container<T>, props: T, options?: T) {
117
+ if (!Component) throw new Error('Component is not defined');
118
+
119
+ const initialData = (await Component.getInitialData?.(props)) ?? {};
120
+
121
+ return renderToString(
122
+ <VComponent node={this._provider} {...this._provider.props}>
123
+ <Component {...props} initialData={initialData} />
124
+ </VComponent>,
125
+ {},
126
+ { ...options }
127
+ );
128
+ }
129
+ }
@@ -0,0 +1,77 @@
1
+ import { getImageParamsKeyMap } from '@adobe/elsie/lib/';
2
+
3
+ const BREAKPOINTS = {
4
+ medium: 768,
5
+ large: 1024,
6
+ xlarge: 1366,
7
+ xxlarge: 1920,
8
+ };
9
+
10
+ export interface ResolveImageUrlOptions {
11
+ width: number;
12
+ height?: number;
13
+ auto?: string;
14
+ quality?: number;
15
+ crop?: boolean;
16
+ fit?: string;
17
+ }
18
+
19
+ const resolveImageUrl = (url: string, _opts?: ResolveImageUrlOptions) => {
20
+ const [base, query] = url.split('?');
21
+ const params = new URLSearchParams(query);
22
+
23
+ const keyMapping = getImageParamsKeyMap();
24
+
25
+ let opts = {};
26
+
27
+ if (keyMapping && Object.keys(keyMapping).length > 0 && _opts) {
28
+ opts = Object.entries(_opts).reduce((acc, [key, value]) => {
29
+ const newKey = keyMapping[key];
30
+ if (newKey) {
31
+ acc[newKey] = value;
32
+ }
33
+ return acc;
34
+ }, {} as { [key: string]: any });
35
+ } else {
36
+ opts = {
37
+ auto: 'webp',
38
+ quality: 80,
39
+ crop: false,
40
+ fit: 'cover',
41
+ ..._opts,
42
+ };
43
+ }
44
+ // Append image optimization parameters
45
+ Object.entries(opts).forEach(([key, value]) => {
46
+ if (value !== undefined && value !== null) {
47
+ params.set(key, String(value));
48
+ }
49
+ });
50
+
51
+ return `${base}?${params.toString()}`;
52
+ };
53
+
54
+ export const generateSrcset = (
55
+ imageURL: string,
56
+ options: ResolveImageUrlOptions
57
+ ) => {
58
+ if (!imageURL || !options?.width) return;
59
+
60
+ const generateSrcsetUrl = (options: ResolveImageUrlOptions) => {
61
+ return resolveImageUrl(imageURL, {
62
+ ...options,
63
+ });
64
+ };
65
+
66
+ return Object.entries(BREAKPOINTS)
67
+ .map(([, value]) => {
68
+ // calculate breakpoints width
69
+ const relativeWidth = (options.width * value) / BREAKPOINTS.xxlarge;
70
+
71
+ return `${generateSrcsetUrl({
72
+ ...options,
73
+ width: relativeWidth,
74
+ })} ${value}w`;
75
+ })
76
+ .join(',\n');
77
+ };
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line no-restricted-imports
2
+ export * from '@preact/signals';