@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,87 @@
1
+ import { Source } from '@storybook/blocks';
2
+
3
+ export const Block = ({ style, children }) => (
4
+ // Renders content in a block that has a light background
5
+ <div
6
+ style={{
7
+ background: 'var(--color-neutral-50)',
8
+ color: 'black',
9
+ display: 'grid',
10
+ gridGap: 'var(--spacing-sm)',
11
+ padding: 'var(--spacing-sm)',
12
+ ...style,
13
+ }}
14
+ >
15
+ {children}
16
+ </div>
17
+ );
18
+
19
+ export const DesignSwatchGroup = ({
20
+ property,
21
+ prefix,
22
+ tokens,
23
+ swatchStyles,
24
+ groupStyles,
25
+ children,
26
+ }) => {
27
+ // Renders a group of token swatches
28
+ const group = prefix
29
+ ? tokens.filter((entry) => entry.startsWith(prefix))
30
+ : tokens;
31
+ return group.map((entry) => {
32
+ const styleOverride = {};
33
+ styleOverride[property] = `var(${entry})`;
34
+ return (
35
+ <div
36
+ key={entry}
37
+ style={{
38
+ display: 'flex',
39
+ alignItems: 'center',
40
+ font: 'var(--type-body-1-strong-font)',
41
+ letterSpacing: 'var(--type-body-1-strong-spacing)',
42
+ margin: 'var(--spacing-xxsmall)',
43
+ ...groupStyles,
44
+ }}
45
+ >
46
+ <DesignSwatch style={{ ...swatchStyles, ...styleOverride }}>
47
+ {children}
48
+ </DesignSwatch>
49
+ <pre style={{ marginLeft: 'var(--spacing-small)' }}>var({entry});</pre>
50
+ </div>
51
+ );
52
+ });
53
+ };
54
+
55
+ export const DesignSwatch = ({ style, children, ...restProps }) => {
56
+ // Renders a token swatch
57
+ return (
58
+ <div
59
+ style={{
60
+ width: '3rem',
61
+ height: '3rem',
62
+ background: 'var(--color-informational-200)',
63
+ border: '1px solid var(--color-neutral-400)',
64
+ display: 'flex',
65
+ alignItems: 'center',
66
+ justifyContent: 'center',
67
+ ...style,
68
+ }}
69
+ >
70
+ {children}
71
+ </div>
72
+ );
73
+ };
74
+
75
+ export const TokenDefinitions = ({ tokenData }) => {
76
+ const tokenDefinitions = tokenData.map((token) => {
77
+ const { name, value, comment } = token;
78
+ return `${name}: ${value}; ${comment ? `/* ${comment} */` : ''}`;
79
+ });
80
+ return (
81
+ <Source
82
+ language="css"
83
+ code={`.dropin-design {\n ${tokenDefinitions.join('\n ')}
84
+ }`}
85
+ />
86
+ );
87
+ };
@@ -0,0 +1,28 @@
1
+ export interface TokenData {
2
+ name: string;
3
+ value: string;
4
+ comment?: string;
5
+ }
6
+
7
+ export const getTokenData = (data: any) => {
8
+ const results: TokenData[] = [];
9
+
10
+ walk(results, '-', data);
11
+
12
+ return results;
13
+ };
14
+
15
+ const walk = (results: TokenData[], currentName: string, data: any) => {
16
+ if (data.value) {
17
+ results.push({
18
+ name: currentName,
19
+ value: data.value,
20
+ comment: data.comment || null,
21
+ });
22
+ return;
23
+ }
24
+
25
+ Object.entries(data).forEach((entry) => {
26
+ walk(results, `${currentName}-${entry[0]}`, entry[1]);
27
+ });
28
+ };
@@ -0,0 +1,365 @@
1
+ import { Meta, Unstyled } from '@storybook/blocks';
2
+ import { Block, DesignSwatchGroup, TokenDefinitions } from './designBlocks.jsx';
3
+ import gridData from '@adobe/storefront-design/base/grid/grid.json';
4
+ import { getTokenData } from './getTokenData';
5
+ import { OptionsTable } from '@adobe/elsie/config/storybook/components/OptionsTable';
6
+
7
+ export const tokenData = getTokenData(gridData);
8
+ export const tokenNames = tokenData.map((token) => token.name);
9
+
10
+ <Meta title="Design/Grid System" />
11
+ <Unstyled>
12
+
13
+ export const SampleColumn = () => {
14
+ return (
15
+ <div
16
+ style={{
17
+ background: `var(--color-informational-200)`,
18
+ padding:`200px 0`,
19
+ }}
20
+ ></div>
21
+ );
22
+ };
23
+ export const SampleGrid = ({ prefix, columnNumber }) => {
24
+ return (
25
+ <div>
26
+ <TokenDefinitions
27
+ tokenData={tokenData.filter((data) => data.name.startsWith(prefix))}
28
+ />
29
+ <Block
30
+ style={{
31
+ display: `grid`,
32
+ gridTemplateColumns: `repeat(var(${prefix}-columns), 1fr)`,
33
+ gridColumnGap: `var(${prefix}-gutters)`,
34
+ margin: `0 var(${prefix}-margins)`,
35
+ }}
36
+ >
37
+
38
+ {Array.from(Array(parseInt(columnNumber)).keys()).map((i) => (
39
+ <SampleColumn key={i} />
40
+ )) }
41
+
42
+ </Block>
43
+ </div>
44
+
45
+ );
46
+
47
+ };
48
+
49
+ # Grid System
50
+
51
+ The grid system is based on a **12-column responsive grid**, meaning that the number of columns can change depending on the screen width. Let's look first at the breakpoints and tokens we defined for our grid system. Then we'll look at how to use them in your drop-ins.
52
+
53
+ ## Grid Breakpoints
54
+
55
+ Breakpoints are the specific widths (in pixels) that define how the drop-in grid changes when displayed on different screen widths. These changes include the number of columns, column widths, column gaps, and grid margins.
56
+
57
+ These are the breakpoints we defined for the drop-in grid:
58
+
59
+ <OptionsTable
60
+ options={[
61
+ ['Name', 'Breakpoint (code)', 'Description', 'Devices'],
62
+ ['Small (default)', 'n/a', 'Screens up to 767px', 'Phones'],
63
+ [
64
+ 'Medium',
65
+ 'min-width: 768px',
66
+ 'Screens that are 768px or larger',
67
+ 'Tablets portrait',
68
+ ],
69
+ [
70
+ 'Large',
71
+ 'min-width: 1024px',
72
+ 'Screens that are 1024px or larger',
73
+ 'Tablets landscape',
74
+ ],
75
+ [
76
+ 'XLarge',
77
+ 'min-width: 1366px',
78
+ 'Screens that are 1366px or larger',
79
+ 'Desktops, laptops',
80
+ ],
81
+ [
82
+ 'XXLarge',
83
+ 'min-width: 1920px',
84
+ 'Screens that are 1920px or larger',
85
+ 'Desktops, laptops',
86
+ ],
87
+ ]}
88
+ />
89
+
90
+ ## Grid tokens
91
+
92
+ The drop-in grid system provides **five sets of grid tokens** (CSS variables) to lay out your components: `--grid-[1-5]-columns`, `--grid-[1-5]-gutters`, and `--grid-[1-5]-margins`. Each set of tokens can provide a different number of columns, column widths, column-gutter widths, or grid margins. These token sets, values, suggested breakpoints, and the CSS properties they are applied to, are listed below.
93
+
94
+ <OptionsTable
95
+ compact
96
+ options={[
97
+ [
98
+ 'Breakpoint',
99
+ 'Grid token (code)',
100
+ 'Value 100px (code)',
101
+ 'CSS property (code)',
102
+ ],
103
+ [
104
+ 'Small (default) screens',
105
+ 'var(--grid-1-columns)',
106
+ '4',
107
+ 'grid-template-columns',
108
+ ],
109
+ ['Small (default)', 'var(--grid-1-gutters)', '16px', 'grid-column-gap'],
110
+ ['Small (default)', 'var(--grid-1-margins)', '0', 'margin'],
111
+ [],
112
+ ['Medium screens', 'var(--grid-2-columns)', '12', 'grid-template-columns'],
113
+ ['Medium', 'var(--grid-2-gutters)', '16px', 'grid-column-gap'],
114
+ ['Medium', 'var(--grid-2-margins)', '0', 'margin'],
115
+ [],
116
+ ['Large screens', 'var(--grid-3-columns)', '12', 'grid-template-columns'],
117
+ ['Large', 'var(--grid-3-gutters)', '24px', 'grid-column-gap'],
118
+ ['Large', 'var(--grid-3-margins)', '0', 'margin'],
119
+ [],
120
+ ['XLarge screens', 'var(--grid-4-columns)', '12', 'grid-template-columns'],
121
+ ['XLarge', 'var(--grid-4-gutters)', '24px', 'grid-column-gap'],
122
+ ['XLarge', 'var(--grid-4-margins)', '0', 'margin'],
123
+ [],
124
+ ['XXLarge screens', 'var(--grid-5-columns)', '12', 'grid-template-columns'],
125
+ ['XXLarge', 'var(--grid-5-gutters)', '24px', 'grid-column-gap'],
126
+ ['XXLarge', 'var(--grid-5-margins)', '0', 'margin'],
127
+ ]}
128
+ compact={true}
129
+ />
130
+
131
+ ## How to use the grid system
132
+
133
+ To use the grid system in your drop-ins, you need to:
134
+
135
+ - Define your **grid-container** CSS class(es) using the drop-in grid token sets.
136
+ - Define your **grid-item** CSS classes to specify the columns and spans for your drop-in components.
137
+
138
+ You can name your grid-container and grid-item classes whatever you want. For these examples, we will use `grid-container-[size]` and `grid-item-a`, `grid-item-b`, and so on.
139
+
140
+ The grid-container class defines the grid itself, and the grid-item classes define where and how to put your components on the grid. The following example shows a simple usage of these classes:
141
+
142
+ ```html
143
+ <div class="grid-container-small">
144
+ <div class="grid-item-a">Item A</div>
145
+ <div class="grid-item-b">Item B</div>
146
+ </div>
147
+ ```
148
+
149
+ ## Define a grid container
150
+
151
+ The first step is to define your `grid-container` classes. Use the grid token sets to define values for grid-column CSS properties as shown here:
152
+
153
+ ```css
154
+ .grid-container-small {
155
+ display: grid;
156
+ grid-template-columns: repeat(var(--grid-1-columns), 1fr);
157
+ grid-column-gap: var(--grid-1-gutters);
158
+ margin: 0 var(--grid-1-margins);
159
+ }
160
+ ```
161
+
162
+ **CSS properties**
163
+
164
+ As shown in the previous example, every grid container needs the following CSS properties:
165
+
166
+ - `display: grid` — Creates a grid layout.
167
+ - `grid-template-columns:` — Defines the number and width of columns in the grid.
168
+ - `grid-column-gap:` — Defines the space between columns.
169
+ - `margin:` — Defines the space between the grid container and the edge of the screen.
170
+
171
+ ## Define grid items
172
+
173
+ Grid item CSS classes define where (which column) and how (columns span) you want to put the components that make up your drop-in UI. To create grid-item classes, add a `grid-item-x` class to the UI components within your drop-in. You can then use the `grid-column` CSS property to define which column a component starts in and the number of columns it spans.
174
+
175
+ In this example, the `grid-item-a` class starts at column 1 and spans 5 columns:
176
+
177
+ ```css
178
+ .grid-item-a {
179
+ grid-column: 1 / span 5;
180
+ }
181
+ ```
182
+
183
+ ## Example grids
184
+
185
+ The following examples show which grid token sets we recommend when using the defined breakpoints.
186
+
187
+ ### Small (default) layouts (up to 767px)
188
+
189
+ For this breakpoint, we recommend the `grid-1` token set:
190
+
191
+ <SampleGrid prefix="--grid-1" columnNumber="4" />
192
+
193
+ **CSS classes**
194
+
195
+ ```css
196
+ .grid-container-small {
197
+ display: grid;
198
+ grid-template-columns: repeat(var(--grid-1-columns), 1fr);
199
+ grid-column-gap: var(--grid-1-gutters);
200
+ margin: 0 var(--grid-1-margins);
201
+ }
202
+ .grid-item-a {
203
+ grid-column: 1 / span 4;
204
+ }
205
+ .grid-item-b {
206
+ grid-column: 3 / span 2;
207
+ }
208
+ ```
209
+
210
+ **HTML additions**
211
+
212
+ ```html
213
+ <div class="grid-container-small">
214
+ <div class="grid-item-a">Item A</div>
215
+ <div class="grid-item-b">Item B</div>
216
+ </div>
217
+ ```
218
+
219
+ ### Medium layouts (768px and wider)
220
+
221
+ For this breakpoint, we recommend the `grid-2` token set:
222
+
223
+ <SampleGrid prefix="--grid-2" columnNumber="12" />
224
+
225
+ **CSS classes**
226
+
227
+ ```css
228
+ .grid-container-medium {
229
+ display: grid;
230
+ grid-template-columns: repeat(var(--grid-2-columns), 1fr);
231
+ grid-column-gap: var(--grid-2-gutters);
232
+ margin: 0 var(--grid-2-margins);
233
+ }
234
+ .grid-item-a {
235
+ grid-column: 1 / span 4;
236
+ }
237
+ .grid-item-b {
238
+ grid-column: 5 / span 4;
239
+ }
240
+ .grid-item-c {
241
+ grid-column: 9 / span 4;
242
+ }
243
+ ```
244
+
245
+ **HTML additions**
246
+
247
+ ```html
248
+ <div class="grid-container-medium">
249
+ <div class="grid-item-a">Item A</div>
250
+ <div class="grid-item-b">Item B</div>
251
+ <div class="grid-item-c">Item C</div>
252
+ </div>
253
+ ```
254
+
255
+ ### Large layouts (1024px and wider)
256
+
257
+ For this breakpoint, we recommend the `grid-3` token set:
258
+
259
+ <SampleGrid prefix="--grid-3" columnNumber="12" />
260
+
261
+ **CSS classes**
262
+
263
+ ```css
264
+ .grid-container-large {
265
+ display: grid;
266
+ grid-template-columns: repeat(var(--grid-3-columns), 1fr);
267
+ grid-column-gap: var(--grid-3-gutters);
268
+ margin: 0 var(--grid-3-margins);
269
+ }
270
+ .grid-item-a {
271
+ grid-column: 1 / span 12;
272
+ }
273
+ .grid-item-b {
274
+ grid-column: 1 / span 6;
275
+ }
276
+ .grid-item-c {
277
+ grid-column: 7 / span 6;
278
+ }
279
+ ```
280
+
281
+ **HTML additions**
282
+
283
+ ```html
284
+ <div class="grid-container-large">
285
+ <div class="grid-item-a">Item A</div>
286
+ <div class="grid-item-b">Item B</div>
287
+ <div class="grid-item-c">Item C</div>
288
+ </div>
289
+ ```
290
+
291
+ ### XLarge layouts (1366px and wider)
292
+
293
+ For this breakpoint, we recommend the `grid-4` token set:
294
+
295
+ <SampleGrid prefix="--grid-4" columnNumber="12" />
296
+
297
+ **CSS classes**
298
+
299
+ ```css
300
+ .grid-container-x-large {
301
+ display: grid;
302
+ grid-template-columns: repeat(var(--grid-4-columns), 1fr);
303
+ grid-column-gap: var(--grid-4-gutters);
304
+ margin: 0 var(--grid-4-margins);
305
+ }
306
+ .grid-item-a {
307
+ grid-column: 1 / span 5;
308
+ }
309
+ .grid-item-b {
310
+ grid-column: 6 / span 7;
311
+ }
312
+ .grid-item-c {
313
+ grid-column: 1 / span 12;
314
+ }
315
+ ```
316
+
317
+ **HTML additions**
318
+
319
+ ```html
320
+ <div class="grid-container-x-large">
321
+ <div class="grid-item-a">Item A</div>
322
+ <div class="grid-item-b">Item B</div>
323
+ <div class="grid-item-c">Item C</div>
324
+ </div>
325
+ ```
326
+
327
+ ### XXLarge layouts (1920px and wider)
328
+
329
+ For this breakpoint, we recommend the `grid-5` token set:
330
+
331
+ <SampleGrid prefix="--grid-5" columnNumber="12" />
332
+
333
+ **NOTE:** The `grid-3`, `grid-4`, and `grid-5`token sets are the same. We provide these tokens to make it easier to customize this token set for different layouts or breakpoints.
334
+
335
+ **CSS classes**
336
+
337
+ ```css
338
+ .grid-container-xx-large {
339
+ display: grid;
340
+ grid-template-columns: repeat(var(--grid-5-columns), 1fr);
341
+ grid-column-gap: var(--grid-5-gutters);
342
+ margin: 0 var(--grid-5-margins);
343
+ }
344
+ .grid-item-a {
345
+ grid-column: 1 / span 5;
346
+ }
347
+ .grid-item-b {
348
+ grid-column: 6 / span 7;
349
+ }
350
+ .grid-item-c {
351
+ grid-column: 1 / span 12;
352
+ }
353
+ ```
354
+
355
+ **HTML additions**
356
+
357
+ ```html
358
+ <div class="grid-container-xx-large">
359
+ <div class="grid-item-a">Item A</div>
360
+ <div class="grid-item-b">Item B</div>
361
+ <div class="grid-item-c">Item C</div>
362
+ </div>
363
+ ```
364
+
365
+ </Unstyled>
@@ -0,0 +1,69 @@
1
+ import { Meta, Unstyled } from '@storybook/blocks';
2
+ import { Flex } from '@adobe/elsie/config/storybook/components/Flex';
3
+ import { Panel } from '@adobe/elsie/config/storybook/components/Panel';
4
+
5
+ import colors from '@adobe/elsie/src/docs/assets/Colors.png';
6
+ import spacing from '@adobe/elsie/src/docs/assets/Spacing.png';
7
+ import typography from '@adobe/elsie/src/docs/assets/Typography.png';
8
+ import shapeStyles from '@adobe/elsie/src/docs/assets/ShapeStyles.png';
9
+
10
+ <Meta title="Design/Overview" />
11
+ <Unstyled>
12
+
13
+ # Drop-in Design Tokens
14
+
15
+ All of our drop-ins are built with our design tokens baked-in so that you can quickly change their visual appearance to match your brand.
16
+
17
+ ## What are design tokens?
18
+
19
+ Design tokens are CSS variables with default values. Our design tokens provide a standard set of CSS properties and default values for colors, typography, spacing, shapes, and layouts. We use them in all of our component CSS classes to avoid hard-coded values that cannot be easily changed. With this strategy, you can restyle our drop-ins to match your brand simply by changing the default values.
20
+
21
+ <Flex itemsPerAxis={2}>
22
+ <Panel header footer>
23
+ <img src={colors} alt="Colors"/>
24
+ ### Colors
25
+ Create meaningful experiences while also expressing hierarchy, state, and brand identity.
26
+
27
+ [Read more](/docs/design-colors--overview)
28
+ </Panel>
29
+
30
+ <Panel header footer>
31
+ <img src={typography} alt="Typography" />
32
+ ### Typography
33
+ Set your typography scale to present your content as clearly and efficiently as possible.
34
+
35
+ [Read more](/docs/design-typography--overview)
36
+ </Panel>
37
+
38
+ <Panel header footer>
39
+ <img src={spacing} alt="Spacing" />
40
+ ### Spacing
41
+ Create harmonious arrangements with consistent visual balance and predictable rhythm.
42
+
43
+ [Read more](/docs/design-spacing--overview)
44
+ </Panel>
45
+
46
+ <Panel header footer>
47
+ <img src={shapeStyles} alt="Shape styles" />
48
+ ### Shape styles
49
+ Grab user attention by using shadows or other visual cues, such as strokes, border-radius, and size.
50
+
51
+ [Read more](/docs/design-shape-styles--overview)
52
+ </Panel>
53
+ </Flex>
54
+
55
+ ## How to use design tokens
56
+
57
+ To apply design tokens on your project, make use of the UIProvider, which grants components access to the design tokens as CSS variables. Simply specify the desired design token using the var() CSS function to apply its corresponding value.
58
+
59
+ ```css
60
+ .myComponent {
61
+ background-color: var(--color-brand-500);
62
+ }
63
+ ```
64
+
65
+ ## How to add new design tokens
66
+
67
+ You can always add new design tokens to the existing categories (color, spacing, etc.) or create new categories to fit your needs. Just follow the simple patterns and conventions we use in our existing design tokens and you can add as many new tokens for your drop-in as you want.
68
+
69
+ </Unstyled>
@@ -0,0 +1,100 @@
1
+ import { Meta, Unstyled } from '@storybook/blocks';
2
+
3
+ import { Block, DesignSwatchGroup, TokenDefinitions } from './designBlocks.jsx';
4
+
5
+ import shapesData from '@adobe/storefront-design/base/shapes/shapes.json';
6
+ import { getTokenData } from './getTokenData';
7
+
8
+ import { Icon } from '@adobe/elsie/src/components';
9
+ import { Placeholder } from '@adobe/elsie/src/icons';
10
+
11
+ export const tokenData = getTokenData(shapesData);
12
+ export const tokenNames = tokenData.map((token) => token.name);
13
+
14
+ <Meta title="Design/Shape styles" />
15
+ <Unstyled>
16
+
17
+ # Shapes
18
+
19
+ Grab user attention by using shadows or other visual cues, such as strokes, surface fills, or opacities.
20
+ These can serve a number of purposes from aesthetics to functionality.
21
+ Use them to provide visual hierarchy or to focus a user's attention on a specific group.
22
+
23
+ ## Border
24
+
25
+ ### Radius
26
+
27
+ export const shapeBorderRadiusPrefix = '--shape-border-radius';
28
+
29
+ <TokenDefinitions
30
+ tokenData={tokenData.filter((data) =>
31
+ data.name.startsWith(shapeBorderRadiusPrefix)
32
+ )}
33
+ />
34
+
35
+ <Block>
36
+ <DesignSwatchGroup
37
+ property="borderRadius"
38
+ prefix={shapeBorderRadiusPrefix}
39
+ tokens={tokenNames}
40
+ />
41
+ </Block>
42
+
43
+ ### Width
44
+
45
+ export const shapeBorderWidthPrefix = '--shape-border-width';
46
+
47
+ <TokenDefinitions
48
+ tokenData={tokenData.filter((data) =>
49
+ data.name.startsWith(shapeBorderWidthPrefix)
50
+ )}
51
+ />
52
+
53
+ <Block>
54
+ <DesignSwatchGroup
55
+ property="borderWidth"
56
+ prefix={shapeBorderWidthPrefix}
57
+ tokens={tokenNames}
58
+ />
59
+ </Block>
60
+
61
+ ## Drop Shadows
62
+
63
+ export const shapeShadowPrefix = '--shape-shadow';
64
+
65
+ <TokenDefinitions
66
+ tokenData={tokenData.filter((data) =>
67
+ data.name.startsWith(shapeShadowPrefix)
68
+ )}
69
+ />
70
+
71
+ <Block style={{ background: 'var(--color-neutral-50)' }}>
72
+ <DesignSwatchGroup
73
+ property="boxShadow"
74
+ prefix="--shape-shadow"
75
+ tokens={tokenNames}
76
+ swatchStyles={{ border: 'none', background: 'var(--color-neutral-50)' }}
77
+ />
78
+ </Block>
79
+
80
+ ## Icon Stroke Widths
81
+
82
+ export const shapeIconStrokePrefix = '--shape-icon-stroke-';
83
+
84
+ <TokenDefinitions
85
+ tokenData={tokenData.filter((data) =>
86
+ data.name.startsWith(shapeIconStrokePrefix)
87
+ )}
88
+ />
89
+
90
+ <Block>
91
+ <DesignSwatchGroup
92
+ property="strokeWidth"
93
+ prefix={shapeIconStrokePrefix}
94
+ tokens={tokenNames}
95
+ >
96
+ <Icon source={Placeholder} size={32} />
97
+ </DesignSwatchGroup>
98
+ </Block>
99
+
100
+ </Unstyled>
@@ -0,0 +1,22 @@
1
+ import { Meta, Unstyled } from '@storybook/blocks';
2
+ import { Block, DesignSwatchGroup, TokenDefinitions } from './designBlocks.jsx';
3
+ import spacingData from '@adobe/storefront-design/base/spacing/spacing.json';
4
+ import { getTokenData } from './getTokenData';
5
+
6
+ export const tokenData = getTokenData(spacingData);
7
+ export const tokenNames = tokenData.map((token) => token.name);
8
+
9
+ <Meta title="Design/Spacing" />
10
+ <Unstyled>
11
+
12
+ # Spacing
13
+
14
+ Use an incremental system to create harmonious arrangements with consistent visual balance and predictable rhythm to make the user interface easier for users to scan and identify relevant groups.
15
+
16
+ <TokenDefinitions tokenData={tokenData} />
17
+
18
+ <Block>
19
+ <DesignSwatchGroup property="width" tokens={tokenNames} />
20
+ </Block>
21
+
22
+ </Unstyled>