@ebay/skin 18.1.0 → 18.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1254) hide show
  1. package/.github/ISSUE_TEMPLATE/BUG-REPORT.yml +1 -1
  2. package/.github/ISSUE_TEMPLATE/ENHANCEMENT.yml +37 -0
  3. package/.github/ISSUE_TEMPLATE/NEW-FEATURE-REQUEST.yml +1 -1
  4. package/.github/workflows/{jekyll-gh-pages.yml → gh-pages.yml} +5 -14
  5. package/.github/workflows/pages-html-proofer.yml +6 -12
  6. package/.husky/commit-msg +0 -3
  7. package/.husky/pre-commit +0 -3
  8. package/.percy.yml +1 -0
  9. package/CHANGELOG.md +18 -0
  10. package/CONTRIBUTING.md +9 -27
  11. package/dist/bundles/skin-default.css +67 -4
  12. package/dist/bundles/skin-full.css +69 -5
  13. package/dist/bundles/skin-headless.css +65 -3
  14. package/dist/button/button.css +17 -0
  15. package/dist/menu-button/menu-button.css +4 -4
  16. package/dist/table/table.css +62 -0
  17. package/dist/tokens/evo-dark.css +2 -1
  18. package/dist/tokens/evo-light.css +2 -1
  19. package/index.browser.json +1 -0
  20. package/index.css +1 -0
  21. package/index.js +1 -0
  22. package/index.mjs +1 -0
  23. package/lint.log +4 -4
  24. package/package.json +64 -77
  25. package/scripts/generate-flags.js +8 -3
  26. package/scripts/generate-images.js +13 -8
  27. package/scripts/jekyll-config.js +4 -6
  28. package/src/components/about.marko +15 -0
  29. package/src/components/animation.marko +74 -0
  30. package/src/components/bundling.marko +63 -0
  31. package/src/components/eek-icon.marko +5 -0
  32. package/src/components/eek-range.marko +7 -0
  33. package/src/components/eek-rating.marko +9 -0
  34. package/src/components/flag-list.marko +13 -0
  35. package/src/components/highlight-code/index.marko +50 -0
  36. package/src/components/highlight-code/marko-tag.json +4 -0
  37. package/src/components/highlight-code/transform.js +10 -0
  38. package/src/components/icon-deprecated-list.marko +22 -0
  39. package/src/components/icon-list.marko +22 -0
  40. package/src/components/icon-symbol.marko +3 -0
  41. package/src/components/install.marko +23 -0
  42. package/src/components/master-flags.marko +60135 -0
  43. package/src/components/master-icons.marko +9448 -0
  44. package/src/components/module-list.marko +9 -0
  45. package/src/components/section-header.marko +29 -0
  46. package/src/components/themes.marko +34 -0
  47. package/src/components/token-system.marko +18 -0
  48. package/src/modules/alert-dialog.marko +100 -0
  49. package/src/modules/avatar.marko +390 -0
  50. package/src/modules/badge.marko +45 -0
  51. package/src/modules/breadcrumbs.marko +235 -0
  52. package/src/modules/button.marko +521 -0
  53. package/src/modules/calendar.marko +1072 -0
  54. package/src/modules/carousel.marko +220 -0
  55. package/src/modules/chart-legend.marko +69 -0
  56. package/src/modules/checkbox.marko +649 -0
  57. package/src/modules/chip.marko +171 -0
  58. package/src/modules/chips-combobox.marko +784 -0
  59. package/src/modules/combobox.marko +322 -0
  60. package/src/modules/confirm-dialog.marko +83 -0
  61. package/src/modules/cta-button.marko +44 -0
  62. package/src/modules/date-textbox.marko +839 -0
  63. package/src/modules/details.marko +231 -0
  64. package/src/modules/donut-chart.marko +183 -0
  65. package/src/modules/education-notice.marko +253 -0
  66. package/src/modules/eek.marko +259 -0
  67. package/src/modules/field.marko +1242 -0
  68. package/src/modules/filter-button.marko +193 -0
  69. package/src/modules/filter-menu-button.marko +912 -0
  70. package/src/modules/filter-menu.marko +712 -0
  71. package/src/modules/flag.marko +46 -0
  72. package/src/modules/floating-label.marko +492 -0
  73. package/src/modules/global.marko +7 -0
  74. package/src/modules/icon-button.marko +363 -0
  75. package/src/modules/icon.marko +185 -0
  76. package/src/modules/image-placeholder.marko +64 -0
  77. package/src/modules/infotip.marko +243 -0
  78. package/src/modules/inline-notice.marko +98 -0
  79. package/src/modules/less.marko +173 -0
  80. package/src/modules/lightbox-dialog.marko +511 -0
  81. package/src/modules/link.marko +168 -0
  82. package/src/modules/listbox-button.marko +1079 -0
  83. package/src/modules/listbox.marko +323 -0
  84. package/src/modules/marketsans.marko +23 -0
  85. package/src/modules/menu-button.marko +1069 -0
  86. package/src/modules/menu.marko +588 -0
  87. package/src/modules/page-grid.marko +274 -0
  88. package/src/modules/page-notice.marko +295 -0
  89. package/src/modules/pagination.marko +792 -0
  90. package/src/modules/panel-dialog.marko +426 -0
  91. package/src/modules/phone-input.marko +1664 -0
  92. package/src/modules/progress-bar-expressive.marko +435 -0
  93. package/src/modules/progress-bar.marko +136 -0
  94. package/src/modules/progress-spinner.marko +108 -0
  95. package/src/modules/progress-stepper.marko +576 -0
  96. package/src/modules/radio.marko +578 -0
  97. package/src/modules/section-notice.marko +387 -0
  98. package/src/modules/section-title.marko +233 -0
  99. package/src/modules/segmented-buttons.marko +276 -0
  100. package/src/modules/select.marko +370 -0
  101. package/src/modules/signal.marko +41 -0
  102. package/src/modules/skeleton.marko +723 -0
  103. package/src/modules/snackbar-dialog.marko +215 -0
  104. package/src/modules/split-button.marko +370 -0
  105. package/src/modules/star-rating-select.marko +229 -0
  106. package/src/modules/star-rating.marko +159 -0
  107. package/src/modules/svg.marko +7 -0
  108. package/src/modules/switch.marko +258 -0
  109. package/src/modules/table.marko +947 -0
  110. package/src/modules/tabs.marko +268 -0
  111. package/src/modules/textbox.marko +529 -0
  112. package/src/modules/toast-dialog.marko +197 -0
  113. package/src/modules/toggle-button-group.marko +2408 -0
  114. package/src/modules/toggle-button.marko +1094 -0
  115. package/src/modules/tokens.marko +70 -0
  116. package/src/modules/tooltip.marko +160 -0
  117. package/src/modules/tourtip.marko +255 -0
  118. package/src/modules/typography.marko +114 -0
  119. package/src/modules/utility.marko +101 -0
  120. package/src/routes/+layout.marko +1 -0
  121. package/src/routes/+layout.style.scss +518 -0
  122. package/src/routes/_index/+layout.component-browser.js +6 -0
  123. package/src/routes/_index/+layout.marko +70 -0
  124. package/src/routes/_index/+meta.json +3984 -0
  125. package/src/routes/_index/+page.marko +21 -0
  126. package/src/routes/_index/logo.svg +41 -0
  127. package/src/routes/blog-stretchy-nested/+layout.marko +13 -0
  128. package/src/routes/blog-stretchy-nested/+page.marko +100 -0
  129. package/src/routes/blog-stretchy-nested/+page.style.css +150 -0
  130. package/src/routes/blog-stretchy-subgrid/+layout.marko +108 -0
  131. package/src/routes/blog-stretchy-subgrid/+page.marko +13 -0
  132. package/src/routes/blog-stretchy-subgrid/+page.style.css +159 -0
  133. package/src/routes/favicon.png +0 -0
  134. package/src/routes/flags.json +1841 -0
  135. package/src/routes/icons.json +4430 -0
  136. package/src/routes/main.js +908 -0
  137. package/src/routes/modules.marko +7 -0
  138. package/src/routes/page-grid-templates/+layout.marko +58 -0
  139. package/src/routes/page-grid-templates/+page.marko +35 -0
  140. package/src/routes/pricing/+layout.marko +1 -0
  141. package/src/routes/pricing/+page.marko +120 -0
  142. package/src/routes/pricing/+page.style.css +162 -0
  143. package/src/routes/skeleton-examples/examples/+layout.component-browser.js +1 -0
  144. package/src/routes/skeleton-examples/examples/+layout.marko +12 -0
  145. package/src/routes/skeleton-examples/examples/+layout.style.css +160 -0
  146. package/src/routes/skeleton-examples/examples/buffered/example-1/+meta.json +3 -0
  147. package/src/routes/skeleton-examples/examples/buffered/example-1/+page.component-browser.js +95 -0
  148. package/src/routes/skeleton-examples/examples/buffered/example-1/+page.marko +0 -0
  149. package/src/routes/skeleton-examples/examples/csr/example-1/+meta.json +3 -0
  150. package/src/routes/skeleton-examples/examples/csr/example-1/+page.component-browser.js +36 -0
  151. package/src/routes/skeleton-examples/examples/csr/example-1/+page.marko +15 -0
  152. package/src/routes/skeleton-examples/examples/csr/example-1/+page.style.css +19 -0
  153. package/src/routes/skeleton-examples/examples/csr/example-2/+meta.json +3 -0
  154. package/src/routes/skeleton-examples/examples/csr/example-2/+page.component-browser.js +35 -0
  155. package/src/routes/skeleton-examples/examples/csr/example-2/+page.marko +15 -0
  156. package/src/routes/skeleton-examples/examples/csr/example-2/+page.style.css +19 -0
  157. package/src/routes/skeleton-examples/examples/csr/example-3/+meta.json +3 -0
  158. package/src/routes/skeleton-examples/examples/csr/example-3/+page.component-browser.js +36 -0
  159. package/src/routes/skeleton-examples/examples/csr/example-3/+page.marko +15 -0
  160. package/src/routes/skeleton-examples/examples/csr/example-3/+page.style.css +19 -0
  161. package/src/routes/skeleton-examples/examples/csr/example-4/+meta.json +3 -0
  162. package/src/routes/skeleton-examples/examples/csr/example-4/+page.component-browser.js +35 -0
  163. package/src/routes/skeleton-examples/examples/csr/example-4/+page.marko +15 -0
  164. package/src/routes/skeleton-examples/examples/csr/example-4/+page.style.css +19 -0
  165. package/src/routes/skeleton-examples/examples/in-order/example-1a/+meta.json +3 -0
  166. package/src/routes/skeleton-examples/examples/in-order/example-1a/+page.component-browser.js +107 -0
  167. package/src/routes/skeleton-examples/examples/in-order/example-1a/+page.marko +3 -0
  168. package/src/routes/skeleton-examples/examples/in-order/example-1a/+page.style.css +10 -0
  169. package/src/routes/skeleton-examples/examples/in-order/example-1b/+meta.json +3 -0
  170. package/src/routes/skeleton-examples/examples/in-order/example-1b/+page.component-browser.js +106 -0
  171. package/src/routes/skeleton-examples/examples/in-order/example-1b/+page.marko +3 -0
  172. package/src/routes/skeleton-examples/examples/in-order/example-1b/+page.style.css +15 -0
  173. package/src/routes/skeleton-examples/examples/in-order/example-2a/+meta.json +3 -0
  174. package/src/routes/skeleton-examples/examples/in-order/example-2a/+page.component-browser.js +120 -0
  175. package/src/routes/skeleton-examples/examples/in-order/example-2a/+page.marko +3 -0
  176. package/src/routes/skeleton-examples/examples/in-order/example-2a/+page.style.css +5 -0
  177. package/src/routes/skeleton-examples/examples/in-order/example-2b/+meta.json +3 -0
  178. package/src/routes/skeleton-examples/examples/in-order/example-2b/+page.component-browser.js +117 -0
  179. package/src/routes/skeleton-examples/examples/in-order/example-2b/+page.marko +3 -0
  180. package/src/routes/skeleton-examples/examples/in-order/example-2b/+page.style.css +19 -0
  181. package/src/routes/skeleton-examples/examples/out-of-order/example-1/+meta.json +3 -0
  182. package/src/routes/skeleton-examples/examples/out-of-order/example-1/+page.component-browser.js +121 -0
  183. package/src/routes/skeleton-examples/examples/out-of-order/example-1/+page.marko +3 -0
  184. package/src/routes/skeleton-examples/examples/out-of-order/example-1/+page.style.css +5 -0
  185. package/src/routes/skeleton-examples/examples/out-of-order/example-2/+meta.json +3 -0
  186. package/src/routes/skeleton-examples/examples/out-of-order/example-2/+page.component-browser.js +131 -0
  187. package/src/routes/skeleton-examples/examples/out-of-order/example-2/+page.marko +3 -0
  188. package/src/routes/skeleton-examples/examples/out-of-order/example-2/+page.style.css +10 -0
  189. package/src/routes/skeleton-examples/examples/out-of-order/example-3/+meta.json +3 -0
  190. package/src/routes/skeleton-examples/examples/out-of-order/example-3/+page.component-browser.js +154 -0
  191. package/src/routes/skeleton-examples/examples/out-of-order/example-3/+page.marko +3 -0
  192. package/src/routes/skeleton-examples/examples/out-of-order/example-3/+page.style.css +27 -0
  193. package/src/routes/skeleton-examples/examples/out-of-order/example-4/+meta.json +3 -0
  194. package/src/routes/skeleton-examples/examples/out-of-order/example-4/+page.component-browser.js +140 -0
  195. package/src/routes/skeleton-examples/examples/out-of-order/example-4/+page.marko +3 -0
  196. package/src/routes/skeleton-examples/examples/out-of-order/example-4/+page.style.css +14 -0
  197. package/src/routes/skeleton-examples/skeleton/+layout.component-browser.js +4 -0
  198. package/src/routes/skeleton-examples/skeleton/+layout.marko +58 -0
  199. package/src/routes/skeleton-examples/skeleton/+page.marko +176 -0
  200. package/src/routes/static/flag/flag-ac.svg +333 -0
  201. package/src/routes/static/flag/flag-ad.svg +674 -0
  202. package/src/routes/static/flag/flag-ae.svg +13 -0
  203. package/src/routes/static/flag/flag-af.svg +871 -0
  204. package/src/routes/static/flag/flag-ag.svg +52 -0
  205. package/src/routes/static/flag/flag-ai.svg +80 -0
  206. package/src/routes/static/flag/flag-al.svg +18 -0
  207. package/src/routes/static/flag/flag-am.svg +12 -0
  208. package/src/routes/static/flag/flag-ao.svg +62 -0
  209. package/src/routes/static/flag/flag-aq.svg +20 -0
  210. package/src/routes/static/flag/flag-ar.svg +281 -0
  211. package/src/routes/static/flag/flag-as.svg +280 -0
  212. package/src/routes/static/flag/flag-at.svg +21 -0
  213. package/src/routes/static/flag/flag-au.svg +27 -0
  214. package/src/routes/static/flag/flag-aw.svg +157 -0
  215. package/src/routes/static/flag/flag-ax.svg +36 -0
  216. package/src/routes/static/flag/flag-az.svg +24 -0
  217. package/src/routes/static/flag/flag-ba.svg +40 -0
  218. package/src/routes/static/flag/flag-bb.svg +19 -0
  219. package/src/routes/static/flag/flag-bd.svg +14 -0
  220. package/src/routes/static/flag/flag-be.svg +27 -0
  221. package/src/routes/static/flag/flag-bf.svg +27 -0
  222. package/src/routes/static/flag/flag-bg.svg +27 -0
  223. package/src/routes/static/flag/flag-bh.svg +14 -0
  224. package/src/routes/static/flag/flag-bi.svg +60 -0
  225. package/src/routes/static/flag/flag-bj.svg +43 -0
  226. package/src/routes/static/flag/flag-bl.svg +27 -0
  227. package/src/routes/static/flag/flag-bm.svg +529 -0
  228. package/src/routes/static/flag/flag-bn.svg +136 -0
  229. package/src/routes/static/flag/flag-bo.svg +3938 -0
  230. package/src/routes/static/flag/flag-bq.svg +12 -0
  231. package/src/routes/static/flag/flag-br.svg +123 -0
  232. package/src/routes/static/flag/flag-bs.svg +46 -0
  233. package/src/routes/static/flag/flag-bt.svg +477 -0
  234. package/src/routes/static/flag/flag-bv.svg +46 -0
  235. package/src/routes/static/flag/flag-bw.svg +27 -0
  236. package/src/routes/static/flag/flag-by.svg +76 -0
  237. package/src/routes/static/flag/flag-bz.svg +605 -0
  238. package/src/routes/static/flag/flag-ca.svg +14 -0
  239. package/src/routes/static/flag/flag-cc.svg +52 -0
  240. package/src/routes/static/flag/flag-cd.svg +15 -0
  241. package/src/routes/static/flag/flag-cefta.svg +52 -0
  242. package/src/routes/static/flag/flag-cf.svg +58 -0
  243. package/src/routes/static/flag/flag-cg.svg +40 -0
  244. package/src/routes/static/flag/flag-ch.svg +27 -0
  245. package/src/routes/static/flag/flag-ci.svg +27 -0
  246. package/src/routes/static/flag/flag-ck.svg +30 -0
  247. package/src/routes/static/flag/flag-cl.svg +46 -0
  248. package/src/routes/static/flag/flag-cm.svg +52 -0
  249. package/src/routes/static/flag/flag-cn.svg +30 -0
  250. package/src/routes/static/flag/flag-co.svg +27 -0
  251. package/src/routes/static/flag/flag-cp.svg +27 -0
  252. package/src/routes/static/flag/flag-cr.svg +27 -0
  253. package/src/routes/static/flag/flag-cu.svg +46 -0
  254. package/src/routes/static/flag/flag-cv.svg +46 -0
  255. package/src/routes/static/flag/flag-cw.svg +32 -0
  256. package/src/routes/static/flag/flag-cx.svg +47 -0
  257. package/src/routes/static/flag/flag-cy.svg +22 -0
  258. package/src/routes/static/flag/flag-cz.svg +12 -0
  259. package/src/routes/static/flag/flag-de.svg +12 -0
  260. package/src/routes/static/flag/flag-dg.svg +809 -0
  261. package/src/routes/static/flag/flag-dj.svg +46 -0
  262. package/src/routes/static/flag/flag-dk.svg +12 -0
  263. package/src/routes/static/flag/flag-dm.svg +701 -0
  264. package/src/routes/static/flag/flag-do.svg +557 -0
  265. package/src/routes/static/flag/flag-dz.svg +15 -0
  266. package/src/routes/static/flag/flag-ea.svg +2497 -0
  267. package/src/routes/static/flag/flag-ec.svg +904 -0
  268. package/src/routes/static/flag/flag-ee.svg +17 -0
  269. package/src/routes/static/flag/flag-eg.svg +166 -0
  270. package/src/routes/static/flag/flag-eh.svg +60 -0
  271. package/src/routes/static/flag/flag-er.svg +33 -0
  272. package/src/routes/static/flag/flag-es-ct.svg +19 -0
  273. package/src/routes/static/flag/flag-es-ga.svg +849 -0
  274. package/src/routes/static/flag/flag-es-pv.svg +18 -0
  275. package/src/routes/static/flag/flag-es.svg +2497 -0
  276. package/src/routes/static/flag/flag-et.svg +50 -0
  277. package/src/routes/static/flag/flag-eu.svg +490 -0
  278. package/src/routes/static/flag/flag-fi.svg +12 -0
  279. package/src/routes/static/flag/flag-fj.svg +571 -0
  280. package/src/routes/static/flag/flag-fk.svg +553 -0
  281. package/src/routes/static/flag/flag-fm.svg +34 -0
  282. package/src/routes/static/flag/flag-fo.svg +40 -0
  283. package/src/routes/static/flag/flag-fr.svg +27 -0
  284. package/src/routes/static/flag/flag-ga.svg +27 -0
  285. package/src/routes/static/flag/flag-gb-eng.svg +12 -0
  286. package/src/routes/static/flag/flag-gb-nir.svg +730 -0
  287. package/src/routes/static/flag/flag-gb-sct.svg +12 -0
  288. package/src/routes/static/flag/flag-gb-wls.svg +33 -0
  289. package/src/routes/static/flag/flag-gb.svg +20 -0
  290. package/src/routes/static/flag/flag-gd.svg +97 -0
  291. package/src/routes/static/flag/flag-ge.svg +18 -0
  292. package/src/routes/static/flag/flag-gf.svg +27 -0
  293. package/src/routes/static/flag/flag-gg.svg +28 -0
  294. package/src/routes/static/flag/flag-gh.svg +13 -0
  295. package/src/routes/static/flag/flag-gi.svg +137 -0
  296. package/src/routes/static/flag/flag-gl.svg +14 -0
  297. package/src/routes/static/flag/flag-gm.svg +52 -0
  298. package/src/routes/static/flag/flag-gn.svg +27 -0
  299. package/src/routes/static/flag/flag-gp.svg +27 -0
  300. package/src/routes/static/flag/flag-gq.svg +90 -0
  301. package/src/routes/static/flag/flag-gr.svg +71 -0
  302. package/src/routes/static/flag/flag-gs.svg +709 -0
  303. package/src/routes/static/flag/flag-gt.svg +889 -0
  304. package/src/routes/static/flag/flag-gu.svg +135 -0
  305. package/src/routes/static/flag/flag-gw.svg +22 -0
  306. package/src/routes/static/flag/flag-gy.svg +39 -0
  307. package/src/routes/static/flag/flag-hk.svg +160 -0
  308. package/src/routes/static/flag/flag-hm.svg +27 -0
  309. package/src/routes/static/flag/flag-hn.svg +211 -0
  310. package/src/routes/static/flag/flag-hr.svg +241 -0
  311. package/src/routes/static/flag/flag-ht.svg +992 -0
  312. package/src/routes/static/flag/flag-hu.svg +27 -0
  313. package/src/routes/static/flag/flag-ic.svg +27 -0
  314. package/src/routes/static/flag/flag-id.svg +11 -0
  315. package/src/routes/static/flag/flag-ie.svg +27 -0
  316. package/src/routes/static/flag/flag-il.svg +52 -0
  317. package/src/routes/static/flag/flag-im.svg +191 -0
  318. package/src/routes/static/flag/flag-in.svg +216 -0
  319. package/src/routes/static/flag/flag-io.svg +809 -0
  320. package/src/routes/static/flag/flag-iq.svg +24 -0
  321. package/src/routes/static/flag/flag-ir.svg +838 -0
  322. package/src/routes/static/flag/flag-is.svg +40 -0
  323. package/src/routes/static/flag/flag-it.svg +27 -0
  324. package/src/routes/static/flag/flag-je.svg +137 -0
  325. package/src/routes/static/flag/flag-jm.svg +33 -0
  326. package/src/routes/static/flag/flag-jo.svg +52 -0
  327. package/src/routes/static/flag/flag-jp.svg +32 -0
  328. package/src/routes/static/flag/flag-ke.svg +64 -0
  329. package/src/routes/static/flag/flag-kg.svg +58 -0
  330. package/src/routes/static/flag/flag-kh.svg +416 -0
  331. package/src/routes/static/flag/flag-ki.svg +229 -0
  332. package/src/routes/static/flag/flag-km.svg +64 -0
  333. package/src/routes/static/flag/flag-kn.svg +52 -0
  334. package/src/routes/static/flag/flag-kp.svg +63 -0
  335. package/src/routes/static/flag/flag-kr.svg +88 -0
  336. package/src/routes/static/flag/flag-kw.svg +46 -0
  337. package/src/routes/static/flag/flag-ky.svg +600 -0
  338. package/src/routes/static/flag/flag-kz.svg +204 -0
  339. package/src/routes/static/flag/flag-la.svg +40 -0
  340. package/src/routes/static/flag/flag-lb.svg +48 -0
  341. package/src/routes/static/flag/flag-lc.svg +33 -0
  342. package/src/routes/static/flag/flag-li.svg +375 -0
  343. package/src/routes/static/flag/flag-lk.svg +110 -0
  344. package/src/routes/static/flag/flag-lr.svg +52 -0
  345. package/src/routes/static/flag/flag-ls.svg +27 -0
  346. package/src/routes/static/flag/flag-lt.svg +17 -0
  347. package/src/routes/static/flag/flag-lu.svg +12 -0
  348. package/src/routes/static/flag/flag-lv.svg +21 -0
  349. package/src/routes/static/flag/flag-ly.svg +29 -0
  350. package/src/routes/static/flag/flag-ma.svg +15 -0
  351. package/src/routes/static/flag/flag-mc.svg +21 -0
  352. package/src/routes/static/flag/flag-md.svg +380 -0
  353. package/src/routes/static/flag/flag-me.svg +459 -0
  354. package/src/routes/static/flag/flag-mf.svg +27 -0
  355. package/src/routes/static/flag/flag-mg.svg +27 -0
  356. package/src/routes/static/flag/flag-mh.svg +27 -0
  357. package/src/routes/static/flag/flag-mk.svg +20 -0
  358. package/src/routes/static/flag/flag-ml.svg +27 -0
  359. package/src/routes/static/flag/flag-mm.svg +29 -0
  360. package/src/routes/static/flag/flag-mn.svg +43 -0
  361. package/src/routes/static/flag/flag-mo.svg +30 -0
  362. package/src/routes/static/flag/flag-mp.svg +562 -0
  363. package/src/routes/static/flag/flag-mq.svg +27 -0
  364. package/src/routes/static/flag/flag-mr.svg +19 -0
  365. package/src/routes/static/flag/flag-ms.svg +118 -0
  366. package/src/routes/static/flag/flag-mt.svg +223 -0
  367. package/src/routes/static/flag/flag-mu.svg +33 -0
  368. package/src/routes/static/flag/flag-mv.svg +19 -0
  369. package/src/routes/static/flag/flag-mw.svg +45 -0
  370. package/src/routes/static/flag/flag-mx.svg +1686 -0
  371. package/src/routes/static/flag/flag-my.svg +42 -0
  372. package/src/routes/static/flag/flag-mz.svg +103 -0
  373. package/src/routes/static/flag/flag-na.svg +64 -0
  374. package/src/routes/static/flag/flag-nc.svg +51 -0
  375. package/src/routes/static/flag/flag-ne.svg +16 -0
  376. package/src/routes/static/flag/flag-nf.svg +50 -0
  377. package/src/routes/static/flag/flag-ng.svg +21 -0
  378. package/src/routes/static/flag/flag-ni.svg +1136 -0
  379. package/src/routes/static/flag/flag-nl.svg +12 -0
  380. package/src/routes/static/flag/flag-no.svg +14 -0
  381. package/src/routes/static/flag/flag-np.svg +29 -0
  382. package/src/routes/static/flag/flag-nr.svg +40 -0
  383. package/src/routes/static/flag/flag-nu.svg +32 -0
  384. package/src/routes/static/flag/flag-nz.svg +331 -0
  385. package/src/routes/static/flag/flag-om.svg +675 -0
  386. package/src/routes/static/flag/flag-pa.svg +47 -0
  387. package/src/routes/static/flag/flag-pe.svg +2197 -0
  388. package/src/routes/static/flag/flag-pf.svg +88 -0
  389. package/src/routes/static/flag/flag-pg.svg +41 -0
  390. package/src/routes/static/flag/flag-ph.svg +16 -0
  391. package/src/routes/static/flag/flag-pk.svg +46 -0
  392. package/src/routes/static/flag/flag-pl.svg +21 -0
  393. package/src/routes/static/flag/flag-pm.svg +27 -0
  394. package/src/routes/static/flag/flag-pn.svg +288 -0
  395. package/src/routes/static/flag/flag-pr.svg +46 -0
  396. package/src/routes/static/flag/flag-ps.svg +46 -0
  397. package/src/routes/static/flag/flag-pt.svg +710 -0
  398. package/src/routes/static/flag/flag-pw.svg +34 -0
  399. package/src/routes/static/flag/flag-py.svg +1027 -0
  400. package/src/routes/static/flag/flag-qa.svg +14 -0
  401. package/src/routes/static/flag/flag-re.svg +27 -0
  402. package/src/routes/static/flag/flag-ro.svg +27 -0
  403. package/src/routes/static/flag/flag-rs.svg +1943 -0
  404. package/src/routes/static/flag/flag-ru.svg +27 -0
  405. package/src/routes/static/flag/flag-rw.svg +34 -0
  406. package/src/routes/static/flag/flag-sa.svg +124 -0
  407. package/src/routes/static/flag/flag-sb.svg +46 -0
  408. package/src/routes/static/flag/flag-sc.svg +14 -0
  409. package/src/routes/static/flag/flag-sd.svg +46 -0
  410. package/src/routes/static/flag/flag-se.svg +14 -0
  411. package/src/routes/static/flag/flag-sg.svg +46 -0
  412. package/src/routes/static/flag/flag-sh.svg +333 -0
  413. package/src/routes/static/flag/flag-si.svg +76 -0
  414. package/src/routes/static/flag/flag-sj.svg +14 -0
  415. package/src/routes/static/flag/flag-sk.svg +28 -0
  416. package/src/routes/static/flag/flag-sl.svg +27 -0
  417. package/src/routes/static/flag/flag-sm.svg +419 -0
  418. package/src/routes/static/flag/flag-sn.svg +31 -0
  419. package/src/routes/static/flag/flag-so.svg +34 -0
  420. package/src/routes/static/flag/flag-sr.svg +19 -0
  421. package/src/routes/static/flag/flag-ss.svg +18 -0
  422. package/src/routes/static/flag/flag-st.svg +32 -0
  423. package/src/routes/static/flag/flag-sv.svg +5519 -0
  424. package/src/routes/static/flag/flag-sx.svg +234 -0
  425. package/src/routes/static/flag/flag-sy.svg +16 -0
  426. package/src/routes/static/flag/flag-sz.svg +172 -0
  427. package/src/routes/static/flag/flag-ta.svg +337 -0
  428. package/src/routes/static/flag/flag-tc.svg +285 -0
  429. package/src/routes/static/flag/flag-td.svg +27 -0
  430. package/src/routes/static/flag/flag-tf.svg +37 -0
  431. package/src/routes/static/flag/flag-tg.svg +52 -0
  432. package/src/routes/static/flag/flag-th.svg +27 -0
  433. package/src/routes/static/flag/flag-tj.svg +73 -0
  434. package/src/routes/static/flag/flag-tk.svg +18 -0
  435. package/src/routes/static/flag/flag-tl.svg +46 -0
  436. package/src/routes/static/flag/flag-tm.svg +1073 -0
  437. package/src/routes/static/flag/flag-tn.svg +46 -0
  438. package/src/routes/static/flag/flag-to.svg +33 -0
  439. package/src/routes/static/flag/flag-tr.svg +33 -0
  440. package/src/routes/static/flag/flag-tt.svg +22 -0
  441. package/src/routes/static/flag/flag-tv.svg +30 -0
  442. package/src/routes/static/flag/flag-tw.svg +110 -0
  443. package/src/routes/static/flag/flag-tz.svg +46 -0
  444. package/src/routes/static/flag/flag-ua.svg +21 -0
  445. package/src/routes/static/flag/flag-ug.svg +185 -0
  446. package/src/routes/static/flag/flag-um.svg +46 -0
  447. package/src/routes/static/flag/flag-un.svg +59 -0
  448. package/src/routes/static/flag/flag-us.svg +33 -0
  449. package/src/routes/static/flag/flag-uy.svg +265 -0
  450. package/src/routes/static/flag/flag-uz.svg +141 -0
  451. package/src/routes/static/flag/flag-va.svg +3551 -0
  452. package/src/routes/static/flag/flag-vc.svg +33 -0
  453. package/src/routes/static/flag/flag-ve.svg +332 -0
  454. package/src/routes/static/flag/flag-vg.svg +747 -0
  455. package/src/routes/static/flag/flag-vi.svg +182 -0
  456. package/src/routes/static/flag/flag-vn.svg +34 -0
  457. package/src/routes/static/flag/flag-vu.svg +65 -0
  458. package/src/routes/static/flag/flag-wf.svg +27 -0
  459. package/src/routes/static/flag/flag-ws.svg +27 -0
  460. package/src/routes/static/flag/flag-xk.svg +22 -0
  461. package/src/routes/static/flag/flag-xx.svg +22 -0
  462. package/src/routes/static/flag/flag-ye.svg +27 -0
  463. package/src/routes/static/flag/flag-yt.svg +27 -0
  464. package/src/routes/static/flag/flag-za.svg +58 -0
  465. package/src/routes/static/flag/flag-zm.svg +176 -0
  466. package/src/routes/static/flag/flag-zw.svg +75 -0
  467. package/src/routes/static/flags.svg +60135 -0
  468. package/src/routes/static/icon/icon-add-16.svg +5 -0
  469. package/src/routes/static/icon/icon-add-24.svg +5 -0
  470. package/src/routes/static/icon/icon-add-image-24.svg +13 -0
  471. package/src/routes/static/icon/icon-afterpay-12-colored.svg +16 -0
  472. package/src/routes/static/icon/icon-afterpay-18-colored.svg +16 -0
  473. package/src/routes/static/icon/icon-afterpay-24-colored.svg +16 -0
  474. package/src/routes/static/icon/icon-afterpay-32-colored.svg +16 -0
  475. package/src/routes/static/icon/icon-ai-16.svg +7 -0
  476. package/src/routes/static/icon/icon-ai-20.svg +7 -0
  477. package/src/routes/static/icon/icon-ai-24.svg +7 -0
  478. package/src/routes/static/icon/icon-ai-filled-16.svg +5 -0
  479. package/src/routes/static/icon/icon-ai-filled-20.svg +5 -0
  480. package/src/routes/static/icon/icon-ai-filled-24.svg +5 -0
  481. package/src/routes/static/icon/icon-ai-spectrum-16-colored.svg +24 -0
  482. package/src/routes/static/icon/icon-ai-spectrum-20-colored.svg +24 -0
  483. package/src/routes/static/icon/icon-ai-spectrum-24-colored.svg +24 -0
  484. package/src/routes/static/icon/icon-ai-spectrum-filled-16-colored.svg +22 -0
  485. package/src/routes/static/icon/icon-ai-spectrum-filled-20-colored.svg +22 -0
  486. package/src/routes/static/icon/icon-ai-spectrum-filled-24-colored.svg +22 -0
  487. package/src/routes/static/icon/icon-ai-spectrum-thin-16-colored.svg +24 -0
  488. package/src/routes/static/icon/icon-ai-thin-16.svg +7 -0
  489. package/src/routes/static/icon/icon-alipay-cn-12-colored.svg +44 -0
  490. package/src/routes/static/icon/icon-alipay-cn-18-colored.svg +44 -0
  491. package/src/routes/static/icon/icon-alipay-cn-24-colored.svg +44 -0
  492. package/src/routes/static/icon/icon-alipay-cn-32-colored.svg +44 -0
  493. package/src/routes/static/icon/icon-amex-12-colored.svg +10 -0
  494. package/src/routes/static/icon/icon-amex-18-colored.svg +10 -0
  495. package/src/routes/static/icon/icon-amex-24-colored.svg +10 -0
  496. package/src/routes/static/icon/icon-amex-32-colored.svg +10 -0
  497. package/src/routes/static/icon/icon-apple-pay-12-colored.svg +16 -0
  498. package/src/routes/static/icon/icon-apple-pay-18-colored.svg +16 -0
  499. package/src/routes/static/icon/icon-apple-pay-24-colored.svg +16 -0
  500. package/src/routes/static/icon/icon-apple-pay-32-colored.svg +16 -0
  501. package/src/routes/static/icon/icon-archive-16.svg +7 -0
  502. package/src/routes/static/icon/icon-archive-24.svg +8 -0
  503. package/src/routes/static/icon/icon-arrow-left-12.svg +5 -0
  504. package/src/routes/static/icon/icon-arrow-left-16.svg +5 -0
  505. package/src/routes/static/icon/icon-arrow-left-20.svg +5 -0
  506. package/src/routes/static/icon/icon-arrow-left-24.svg +5 -0
  507. package/src/routes/static/icon/icon-arrow-right-12.svg +5 -0
  508. package/src/routes/static/icon/icon-arrow-right-16.svg +5 -0
  509. package/src/routes/static/icon/icon-arrow-right-20.svg +5 -0
  510. package/src/routes/static/icon/icon-arrow-right-24.svg +5 -0
  511. package/src/routes/static/icon/icon-arrows-3d-16.svg +7 -0
  512. package/src/routes/static/icon/icon-arrows-3d-24.svg +5 -0
  513. package/src/routes/static/icon/icon-arrows-3d-filled-64-colored.svg +9 -0
  514. package/src/routes/static/icon/icon-arrows-expand-16.svg +7 -0
  515. package/src/routes/static/icon/icon-arrows-expand-24.svg +7 -0
  516. package/src/routes/static/icon/icon-article-16.svg +10 -0
  517. package/src/routes/static/icon/icon-article-24.svg +10 -0
  518. package/src/routes/static/icon/icon-attention-16.svg +8 -0
  519. package/src/routes/static/icon/icon-attention-24.svg +5 -0
  520. package/src/routes/static/icon/icon-attention-64.svg +10 -0
  521. package/src/routes/static/icon/icon-attention-filled-16.svg +5 -0
  522. package/src/routes/static/icon/icon-attention-filled-24.svg +5 -0
  523. package/src/routes/static/icon/icon-atv-16.svg +8 -0
  524. package/src/routes/static/icon/icon-atv-24.svg +8 -0
  525. package/src/routes/static/icon/icon-audio-high-16.svg +13 -0
  526. package/src/routes/static/icon/icon-audio-low-16.svg +10 -0
  527. package/src/routes/static/icon/icon-audio-off-16.svg +5 -0
  528. package/src/routes/static/icon/icon-authenticity-guarantee-16.svg +10 -0
  529. package/src/routes/static/icon/icon-authenticity-guarantee-24.svg +7 -0
  530. package/src/routes/static/icon/icon-authenticity-guarantee-filled-16-colored.svg +12 -0
  531. package/src/routes/static/icon/icon-authenticity-guarantee-filled-24-colored.svg +12 -0
  532. package/src/routes/static/icon/icon-auto-adjust-24.svg +5 -0
  533. package/src/routes/static/icon/icon-avatar-signed-out.svg +18 -0
  534. package/src/routes/static/icon/icon-background-removal-24.svg +7 -0
  535. package/src/routes/static/icon/icon-bank-16.svg +7 -0
  536. package/src/routes/static/icon/icon-bank-24.svg +7 -0
  537. package/src/routes/static/icon/icon-bank-64.svg +7 -0
  538. package/src/routes/static/icon/icon-bank-account-12-colored.svg +16 -0
  539. package/src/routes/static/icon/icon-bank-account-18-colored.svg +16 -0
  540. package/src/routes/static/icon/icon-bank-account-24-colored.svg +16 -0
  541. package/src/routes/static/icon/icon-bank-account-32-colored.svg +16 -0
  542. package/src/routes/static/icon/icon-bids-24.svg +7 -0
  543. package/src/routes/static/icon/icon-bids-64.svg +7 -0
  544. package/src/routes/static/icon/icon-boat-16.svg +7 -0
  545. package/src/routes/static/icon/icon-boat-24.svg +7 -0
  546. package/src/routes/static/icon/icon-book-16.svg +7 -0
  547. package/src/routes/static/icon/icon-book-24.svg +7 -0
  548. package/src/routes/static/icon/icon-bookmark-16.svg +7 -0
  549. package/src/routes/static/icon/icon-bookmark-24.svg +7 -0
  550. package/src/routes/static/icon/icon-bookmark-filled-16.svg +7 -0
  551. package/src/routes/static/icon/icon-bookmark-filled-24.svg +7 -0
  552. package/src/routes/static/icon/icon-brand-authorized-seller-16.svg +10 -0
  553. package/src/routes/static/icon/icon-brand-authorized-seller-24.svg +7 -0
  554. package/src/routes/static/icon/icon-brightness-16.svg +7 -0
  555. package/src/routes/static/icon/icon-brightness-20.svg +7 -0
  556. package/src/routes/static/icon/icon-brightness-24.svg +5 -0
  557. package/src/routes/static/icon/icon-calendar-16.svg +7 -0
  558. package/src/routes/static/icon/icon-calendar-24.svg +7 -0
  559. package/src/routes/static/icon/icon-calendar-64.svg +7 -0
  560. package/src/routes/static/icon/icon-camera-16.svg +12 -0
  561. package/src/routes/static/icon/icon-camera-24.svg +12 -0
  562. package/src/routes/static/icon/icon-camera-64.svg +12 -0
  563. package/src/routes/static/icon/icon-car-16.svg +10 -0
  564. package/src/routes/static/icon/icon-car-24.svg +10 -0
  565. package/src/routes/static/icon/icon-car-brake-16.svg +7 -0
  566. package/src/routes/static/icon/icon-car-brake-24.svg +7 -0
  567. package/src/routes/static/icon/icon-carryon-24.svg +7 -0
  568. package/src/routes/static/icon/icon-cart-16.svg +10 -0
  569. package/src/routes/static/icon/icon-cart-20.svg +10 -0
  570. package/src/routes/static/icon/icon-cart-24.svg +10 -0
  571. package/src/routes/static/icon/icon-cart-64.svg +10 -0
  572. package/src/routes/static/icon/icon-categories-16.svg +7 -0
  573. package/src/routes/static/icon/icon-categories-24.svg +5 -0
  574. package/src/routes/static/icon/icon-cb-12-colored.svg +27 -0
  575. package/src/routes/static/icon/icon-cb-18-colored.svg +27 -0
  576. package/src/routes/static/icon/icon-cb-24-colored.svg +27 -0
  577. package/src/routes/static/icon/icon-cb-32-colored.svg +27 -0
  578. package/src/routes/static/icon/icon-certified-recycled-16.svg +5 -0
  579. package/src/routes/static/icon/icon-certified-recycled-24.svg +7 -0
  580. package/src/routes/static/icon/icon-chair-16.svg +7 -0
  581. package/src/routes/static/icon/icon-chair-24.svg +7 -0
  582. package/src/routes/static/icon/icon-chat-16.svg +10 -0
  583. package/src/routes/static/icon/icon-chat-24.svg +8 -0
  584. package/src/routes/static/icon/icon-chat-64.svg +8 -0
  585. package/src/routes/static/icon/icon-check-in-24.svg +7 -0
  586. package/src/routes/static/icon/icon-checkbox-checked-18.svg +5 -0
  587. package/src/routes/static/icon/icon-checkbox-checked-24.svg +7 -0
  588. package/src/routes/static/icon/icon-checkbox-mixed-18.svg +7 -0
  589. package/src/routes/static/icon/icon-checkbox-mixed-24.svg +7 -0
  590. package/src/routes/static/icon/icon-checkbox-unchecked-18.svg +5 -0
  591. package/src/routes/static/icon/icon-checkbox-unchecked-24.svg +5 -0
  592. package/src/routes/static/icon/icon-checkmark-24.svg +7 -0
  593. package/src/routes/static/icon/icon-chevron-down-12.svg +7 -0
  594. package/src/routes/static/icon/icon-chevron-down-16.svg +5 -0
  595. package/src/routes/static/icon/icon-chevron-down-20.svg +5 -0
  596. package/src/routes/static/icon/icon-chevron-down-24.svg +5 -0
  597. package/src/routes/static/icon/icon-chevron-left-12.svg +7 -0
  598. package/src/routes/static/icon/icon-chevron-left-16.svg +5 -0
  599. package/src/routes/static/icon/icon-chevron-left-20.svg +5 -0
  600. package/src/routes/static/icon/icon-chevron-left-24.svg +5 -0
  601. package/src/routes/static/icon/icon-chevron-right-12.svg +7 -0
  602. package/src/routes/static/icon/icon-chevron-right-16.svg +5 -0
  603. package/src/routes/static/icon/icon-chevron-right-20.svg +5 -0
  604. package/src/routes/static/icon/icon-chevron-right-24.svg +5 -0
  605. package/src/routes/static/icon/icon-chevron-up-12.svg +7 -0
  606. package/src/routes/static/icon/icon-chevron-up-16.svg +5 -0
  607. package/src/routes/static/icon/icon-chevron-up-20.svg +5 -0
  608. package/src/routes/static/icon/icon-chevron-up-24.svg +5 -0
  609. package/src/routes/static/icon/icon-chinese-coin-16.svg +7 -0
  610. package/src/routes/static/icon/icon-chinese-coin-24.svg +7 -0
  611. package/src/routes/static/icon/icon-clear-16.svg +5 -0
  612. package/src/routes/static/icon/icon-clear-20.svg +7 -0
  613. package/src/routes/static/icon/icon-clear-24.svg +5 -0
  614. package/src/routes/static/icon/icon-click-to-call-16.svg +5 -0
  615. package/src/routes/static/icon/icon-click-to-call-24.svg +7 -0
  616. package/src/routes/static/icon/icon-clock-16.svg +8 -0
  617. package/src/routes/static/icon/icon-clock-24.svg +5 -0
  618. package/src/routes/static/icon/icon-clock-64.svg +7 -0
  619. package/src/routes/static/icon/icon-close-12.svg +5 -0
  620. package/src/routes/static/icon/icon-close-16.svg +5 -0
  621. package/src/routes/static/icon/icon-close-20.svg +7 -0
  622. package/src/routes/static/icon/icon-close-24.svg +5 -0
  623. package/src/routes/static/icon/icon-closed-caption-16.svg +10 -0
  624. package/src/routes/static/icon/icon-closed-caption-filled-16.svg +7 -0
  625. package/src/routes/static/icon/icon-coin-24.svg +7 -0
  626. package/src/routes/static/icon/icon-collections-16.svg +5 -0
  627. package/src/routes/static/icon/icon-collections-24.svg +7 -0
  628. package/src/routes/static/icon/icon-condensed-grid-24.svg +5 -0
  629. package/src/routes/static/icon/icon-condensed-grid-filled-24.svg +5 -0
  630. package/src/routes/static/icon/icon-confirmation-16.svg +7 -0
  631. package/src/routes/static/icon/icon-confirmation-24.svg +7 -0
  632. package/src/routes/static/icon/icon-confirmation-64.svg +7 -0
  633. package/src/routes/static/icon/icon-confirmation-filled-16.svg +7 -0
  634. package/src/routes/static/icon/icon-confirmation-filled-24.svg +7 -0
  635. package/src/routes/static/icon/icon-contract-16.svg +5 -0
  636. package/src/routes/static/icon/icon-contrast-24.svg +5 -0
  637. package/src/routes/static/icon/icon-copy-16.svg +7 -0
  638. package/src/routes/static/icon/icon-copy-24.svg +7 -0
  639. package/src/routes/static/icon/icon-credit-card-16.svg +7 -0
  640. package/src/routes/static/icon/icon-credit-card-24.svg +7 -0
  641. package/src/routes/static/icon/icon-credit-card-64.svg +7 -0
  642. package/src/routes/static/icon/icon-crop-24.svg +5 -0
  643. package/src/routes/static/icon/icon-customize-16.svg +7 -0
  644. package/src/routes/static/icon/icon-customize-24.svg +7 -0
  645. package/src/routes/static/icon/icon-delete-16.svg +7 -0
  646. package/src/routes/static/icon/icon-delete-20.svg +10 -0
  647. package/src/routes/static/icon/icon-delete-24.svg +10 -0
  648. package/src/routes/static/icon/icon-density-compact-16.svg +7 -0
  649. package/src/routes/static/icon/icon-density-compact-24.svg +7 -0
  650. package/src/routes/static/icon/icon-density-default-16.svg +7 -0
  651. package/src/routes/static/icon/icon-density-default-24.svg +7 -0
  652. package/src/routes/static/icon/icon-density-relaxed-16.svg +7 -0
  653. package/src/routes/static/icon/icon-density-relaxed-24.svg +7 -0
  654. package/src/routes/static/icon/icon-diamond-16.svg +7 -0
  655. package/src/routes/static/icon/icon-diamond-24.svg +7 -0
  656. package/src/routes/static/icon/icon-diners-12-colored.svg +16 -0
  657. package/src/routes/static/icon/icon-diners-18-colored.svg +16 -0
  658. package/src/routes/static/icon/icon-diners-24-colored.svg +16 -0
  659. package/src/routes/static/icon/icon-diners-32-colored.svg +16 -0
  660. package/src/routes/static/icon/icon-direct-debit-12-colored.svg +24 -0
  661. package/src/routes/static/icon/icon-direct-debit-18-colored.svg +24 -0
  662. package/src/routes/static/icon/icon-direct-debit-24-colored.svg +24 -0
  663. package/src/routes/static/icon/icon-direct-debit-32-colored.svg +24 -0
  664. package/src/routes/static/icon/icon-direct-from-brand-16.svg +10 -0
  665. package/src/routes/static/icon/icon-direct-from-brand-24.svg +7 -0
  666. package/src/routes/static/icon/icon-discord-24.svg +5 -0
  667. package/src/routes/static/icon/icon-discount-16.svg +7 -0
  668. package/src/routes/static/icon/icon-discount-24.svg +7 -0
  669. package/src/routes/static/icon/icon-discover-12-colored.svg +124 -0
  670. package/src/routes/static/icon/icon-discover-18-colored.svg +124 -0
  671. package/src/routes/static/icon/icon-discover-24-colored.svg +124 -0
  672. package/src/routes/static/icon/icon-discover-32-colored.svg +124 -0
  673. package/src/routes/static/icon/icon-dollar-16.svg +5 -0
  674. package/src/routes/static/icon/icon-dollar-24.svg +5 -0
  675. package/src/routes/static/icon/icon-download-16.svg +10 -0
  676. package/src/routes/static/icon/icon-download-20.svg +7 -0
  677. package/src/routes/static/icon/icon-download-24.svg +7 -0
  678. package/src/routes/static/icon/icon-ebay-balance-12-colored.svg +31 -0
  679. package/src/routes/static/icon/icon-ebay-balance-18-colored.svg +31 -0
  680. package/src/routes/static/icon/icon-ebay-balance-24-colored.svg +34 -0
  681. package/src/routes/static/icon/icon-ebay-balance-32-colored.svg +31 -0
  682. package/src/routes/static/icon/icon-ebay-bucks-logo-16-colored.svg +10 -0
  683. package/src/routes/static/icon/icon-ebay-for-charity-16.svg +7 -0
  684. package/src/routes/static/icon/icon-ebay-for-charity-24.svg +7 -0
  685. package/src/routes/static/icon/icon-ebay-international-shipping-16.svg +7 -0
  686. package/src/routes/static/icon/icon-ebay-international-shipping-24.svg +7 -0
  687. package/src/routes/static/icon/icon-ebay-international-shipping-64.svg +7 -0
  688. package/src/routes/static/icon/icon-ebay-live-16.svg +11 -0
  689. package/src/routes/static/icon/icon-ebay-live-24.svg +11 -0
  690. package/src/routes/static/icon/icon-ebay-mastercard-12-colored.svg +55 -0
  691. package/src/routes/static/icon/icon-ebay-mastercard-18-colored.svg +56 -0
  692. package/src/routes/static/icon/icon-ebay-mastercard-24-colored.svg +56 -0
  693. package/src/routes/static/icon/icon-ebay-mastercard-32-colored.svg +59 -0
  694. package/src/routes/static/icon/icon-ebay-money-back-guarantee-logo-16-colored.svg +25 -0
  695. package/src/routes/static/icon/icon-ebay-plus-16.svg +7 -0
  696. package/src/routes/static/icon/icon-ebay-plus-24.svg +7 -0
  697. package/src/routes/static/icon/icon-ebay-plus-logo-16-colored.svg +10 -0
  698. package/src/routes/static/icon/icon-ebay-preloved-16.svg +7 -0
  699. package/src/routes/static/icon/icon-ebay-preloved-24.svg +5 -0
  700. package/src/routes/static/icon/icon-ebay-refurbished-16.svg +10 -0
  701. package/src/routes/static/icon/icon-ebay-refurbished-24.svg +7 -0
  702. package/src/routes/static/icon/icon-eek-arrow.svg +7 -0
  703. package/src/routes/static/icon/icon-eek-range-arrow.svg +8 -0
  704. package/src/routes/static/icon/icon-escrow-16.svg +8 -0
  705. package/src/routes/static/icon/icon-escrow-24.svg +8 -0
  706. package/src/routes/static/icon/icon-escrow-card-12-colored.svg +20 -0
  707. package/src/routes/static/icon/icon-escrow-card-18-colored.svg +20 -0
  708. package/src/routes/static/icon/icon-escrow-card-24-colored.svg +20 -0
  709. package/src/routes/static/icon/icon-escrow-card-32-colored.svg +20 -0
  710. package/src/routes/static/icon/icon-euro-16.svg +5 -0
  711. package/src/routes/static/icon/icon-euro-24.svg +5 -0
  712. package/src/routes/static/icon/icon-exclude-16.svg +7 -0
  713. package/src/routes/static/icon/icon-exclude-24.svg +7 -0
  714. package/src/routes/static/icon/icon-expand-16.svg +5 -0
  715. package/src/routes/static/icon/icon-external-link-16.svg +7 -0
  716. package/src/routes/static/icon/icon-external-link-20.svg +7 -0
  717. package/src/routes/static/icon/icon-external-link-24.svg +7 -0
  718. package/src/routes/static/icon/icon-face-happiest-24.svg +11 -0
  719. package/src/routes/static/icon/icon-face-happy-16.svg +7 -0
  720. package/src/routes/static/icon/icon-face-happy-24.svg +9 -0
  721. package/src/routes/static/icon/icon-face-neutral-24.svg +9 -0
  722. package/src/routes/static/icon/icon-face-sad-24.svg +9 -0
  723. package/src/routes/static/icon/icon-face-saddest-24.svg +13 -0
  724. package/src/routes/static/icon/icon-facebook-24.svg +5 -0
  725. package/src/routes/static/icon/icon-facebook-messenger-24.svg +5 -0
  726. package/src/routes/static/icon/icon-fast-and-free-16.svg +7 -0
  727. package/src/routes/static/icon/icon-fast-and-free-24.svg +7 -0
  728. package/src/routes/static/icon/icon-fast-and-free-64.svg +7 -0
  729. package/src/routes/static/icon/icon-feedback-16.svg +7 -0
  730. package/src/routes/static/icon/icon-feedback-20.svg +7 -0
  731. package/src/routes/static/icon/icon-feedback-24.svg +7 -0
  732. package/src/routes/static/icon/icon-feedback-received-16.svg +7 -0
  733. package/src/routes/static/icon/icon-feedback-received-24.svg +7 -0
  734. package/src/routes/static/icon/icon-file-16.svg +7 -0
  735. package/src/routes/static/icon/icon-file-24.svg +7 -0
  736. package/src/routes/static/icon/icon-filter-16.svg +7 -0
  737. package/src/routes/static/icon/icon-filter-24.svg +5 -0
  738. package/src/routes/static/icon/icon-fingerprint-24.svg +7 -0
  739. package/src/routes/static/icon/icon-fingerprint-64.svg +11 -0
  740. package/src/routes/static/icon/icon-flag-16.svg +7 -0
  741. package/src/routes/static/icon/icon-flag-24.svg +7 -0
  742. package/src/routes/static/icon/icon-flag-filled-16.svg +7 -0
  743. package/src/routes/static/icon/icon-flag-filled-24.svg +5 -0
  744. package/src/routes/static/icon/icon-flash-24.svg +5 -0
  745. package/src/routes/static/icon/icon-flash-auto-24.svg +7 -0
  746. package/src/routes/static/icon/icon-flash-off-24.svg +5 -0
  747. package/src/routes/static/icon/icon-folder-16.svg +7 -0
  748. package/src/routes/static/icon/icon-folder-24.svg +7 -0
  749. package/src/routes/static/icon/icon-franc-16.svg +5 -0
  750. package/src/routes/static/icon/icon-franc-24.svg +5 -0
  751. package/src/routes/static/icon/icon-free-warranty-16.svg +12 -0
  752. package/src/routes/static/icon/icon-free-warranty-24.svg +13 -0
  753. package/src/routes/static/icon/icon-full-view-16.svg +5 -0
  754. package/src/routes/static/icon/icon-full-view-24.svg +5 -0
  755. package/src/routes/static/icon/icon-full-view-filled-16.svg +5 -0
  756. package/src/routes/static/icon/icon-full-view-filled-24.svg +5 -0
  757. package/src/routes/static/icon/icon-gallery-16.svg +11 -0
  758. package/src/routes/static/icon/icon-gallery-24.svg +11 -0
  759. package/src/routes/static/icon/icon-general-card-12-colored.svg +62 -0
  760. package/src/routes/static/icon/icon-general-card-18-colored.svg +61 -0
  761. package/src/routes/static/icon/icon-general-card-24-colored.svg +62 -0
  762. package/src/routes/static/icon/icon-general-card-32-colored.svg +58 -0
  763. package/src/routes/static/icon/icon-generic-card-12-colored.svg +24 -0
  764. package/src/routes/static/icon/icon-generic-card-18-colored.svg +28 -0
  765. package/src/routes/static/icon/icon-generic-card-24-colored.svg +24 -0
  766. package/src/routes/static/icon/icon-generic-card-32-colored.svg +24 -0
  767. package/src/routes/static/icon/icon-gift-16.svg +7 -0
  768. package/src/routes/static/icon/icon-gift-24.svg +7 -0
  769. package/src/routes/static/icon/icon-gift-64.svg +7 -0
  770. package/src/routes/static/icon/icon-gift-card-12-colored.svg +16 -0
  771. package/src/routes/static/icon/icon-gift-card-18-colored.svg +16 -0
  772. package/src/routes/static/icon/icon-gift-card-24-colored.svg +16 -0
  773. package/src/routes/static/icon/icon-gift-card-32-colored.svg +16 -0
  774. package/src/routes/static/icon/icon-girocard-12-colored.svg +24 -0
  775. package/src/routes/static/icon/icon-girocard-18-colored.svg +24 -0
  776. package/src/routes/static/icon/icon-girocard-24-colored.svg +24 -0
  777. package/src/routes/static/icon/icon-girocard-32-colored.svg +24 -0
  778. package/src/routes/static/icon/icon-glasses-24.svg +5 -0
  779. package/src/routes/static/icon/icon-glasses-64.svg +5 -0
  780. package/src/routes/static/icon/icon-google-pay-12-colored.svg +32 -0
  781. package/src/routes/static/icon/icon-google-pay-18-colored.svg +32 -0
  782. package/src/routes/static/icon/icon-google-pay-24-colored.svg +32 -0
  783. package/src/routes/static/icon/icon-google-pay-32-colored.svg +32 -0
  784. package/src/routes/static/icon/icon-graph-16.svg +7 -0
  785. package/src/routes/static/icon/icon-graph-24.svg +7 -0
  786. package/src/routes/static/icon/icon-graph-dynamic-16.svg +7 -0
  787. package/src/routes/static/icon/icon-graph-dynamic-24.svg +7 -0
  788. package/src/routes/static/icon/icon-grid-view-16.svg +5 -0
  789. package/src/routes/static/icon/icon-grid-view-24.svg +5 -0
  790. package/src/routes/static/icon/icon-grid-view-filled-16.svg +5 -0
  791. package/src/routes/static/icon/icon-grid-view-filled-24.svg +5 -0
  792. package/src/routes/static/icon/icon-handbag-16.svg +7 -0
  793. package/src/routes/static/icon/icon-handbag-24.svg +7 -0
  794. package/src/routes/static/icon/icon-hanger-16.svg +7 -0
  795. package/src/routes/static/icon/icon-hanger-24.svg +7 -0
  796. package/src/routes/static/icon/icon-headlight-16.svg +7 -0
  797. package/src/routes/static/icon/icon-headlight-24.svg +7 -0
  798. package/src/routes/static/icon/icon-headphone-16.svg +7 -0
  799. package/src/routes/static/icon/icon-headphone-24.svg +7 -0
  800. package/src/routes/static/icon/icon-help-16.svg +8 -0
  801. package/src/routes/static/icon/icon-help-20.svg +5 -0
  802. package/src/routes/static/icon/icon-help-24.svg +8 -0
  803. package/src/routes/static/icon/icon-help-outline-16.svg +18 -0
  804. package/src/routes/static/icon/icon-help-outline-20.svg +7 -0
  805. package/src/routes/static/icon/icon-help-outline-24.svg +13 -0
  806. package/src/routes/static/icon/icon-hide-16.svg +7 -0
  807. package/src/routes/static/icon/icon-hide-24.svg +7 -0
  808. package/src/routes/static/icon/icon-history-24.svg +8 -0
  809. package/src/routes/static/icon/icon-history-64.svg +8 -0
  810. package/src/routes/static/icon/icon-home-24.svg +7 -0
  811. package/src/routes/static/icon/icon-home-filled-24.svg +7 -0
  812. package/src/routes/static/icon/icon-image-16.svg +8 -0
  813. package/src/routes/static/icon/icon-image-24.svg +8 -0
  814. package/src/routes/static/icon/icon-image-64.svg +8 -0
  815. package/src/routes/static/icon/icon-inbox-16.svg +7 -0
  816. package/src/routes/static/icon/icon-inbox-24.svg +7 -0
  817. package/src/routes/static/icon/icon-information-16.svg +8 -0
  818. package/src/routes/static/icon/icon-information-24.svg +5 -0
  819. package/src/routes/static/icon/icon-information-filled-16.svg +5 -0
  820. package/src/routes/static/icon/icon-information-filled-24.svg +5 -0
  821. package/src/routes/static/icon/icon-inspect-16.svg +13 -0
  822. package/src/routes/static/icon/icon-inspect-24.svg +13 -0
  823. package/src/routes/static/icon/icon-inspect-64.svg +7 -0
  824. package/src/routes/static/icon/icon-instagram-24.svg +5 -0
  825. package/src/routes/static/icon/icon-jcb-12-colored.svg +128 -0
  826. package/src/routes/static/icon/icon-jcb-18-colored.svg +128 -0
  827. package/src/routes/static/icon/icon-jcb-24-colored.svg +128 -0
  828. package/src/routes/static/icon/icon-jcb-32-colored.svg +128 -0
  829. package/src/routes/static/icon/icon-jet-ski-16.svg +8 -0
  830. package/src/routes/static/icon/icon-jet-ski-24.svg +8 -0
  831. package/src/routes/static/icon/icon-key-16.svg +8 -0
  832. package/src/routes/static/icon/icon-key-24.svg +12 -0
  833. package/src/routes/static/icon/icon-keyboard-16.svg +11 -0
  834. package/src/routes/static/icon/icon-keyboard-24.svg +16 -0
  835. package/src/routes/static/icon/icon-klarna-black-12-colored.svg +7 -0
  836. package/src/routes/static/icon/icon-klarna-black-18-colored.svg +7 -0
  837. package/src/routes/static/icon/icon-klarna-black-24-colored.svg +7 -0
  838. package/src/routes/static/icon/icon-klarna-black-32-colored.svg +7 -0
  839. package/src/routes/static/icon/icon-klarna-pink-12-colored.svg +7 -0
  840. package/src/routes/static/icon/icon-klarna-pink-18-colored.svg +7 -0
  841. package/src/routes/static/icon/icon-klarna-pink-24-colored.svg +7 -0
  842. package/src/routes/static/icon/icon-klarna-pink-32-colored.svg +7 -0
  843. package/src/routes/static/icon/icon-klarna-white-12-colored.svg +16 -0
  844. package/src/routes/static/icon/icon-klarna-white-18-colored.svg +16 -0
  845. package/src/routes/static/icon/icon-klarna-white-24-colored.svg +16 -0
  846. package/src/routes/static/icon/icon-klarna-white-32-colored.svg +16 -0
  847. package/src/routes/static/icon/icon-krona-16.svg +5 -0
  848. package/src/routes/static/icon/icon-krona-24.svg +5 -0
  849. package/src/routes/static/icon/icon-lamp-16.svg +7 -0
  850. package/src/routes/static/icon/icon-lamp-24.svg +7 -0
  851. package/src/routes/static/icon/icon-large-box-16.svg +7 -0
  852. package/src/routes/static/icon/icon-large-box-24.svg +7 -0
  853. package/src/routes/static/icon/icon-legacy-authenticity-guarantee-48-colored.svg +12 -0
  854. package/src/routes/static/icon/icon-legacy-click-to-call-48-colored.svg +9 -0
  855. package/src/routes/static/icon/icon-legacy-escrow-48-colored.svg +16 -0
  856. package/src/routes/static/icon/icon-legacy-free-warranty-48-colored.svg +12 -0
  857. package/src/routes/static/icon/icon-legacy-money-back-guarantee-chf-48-colored.svg +16 -0
  858. package/src/routes/static/icon/icon-legacy-money-back-guarantee-eu-48-colored.svg +10 -0
  859. package/src/routes/static/icon/icon-legacy-money-back-guarantee-uk-48-colored.svg +10 -0
  860. package/src/routes/static/icon/icon-legacy-money-back-guarantee-us-48-colored.svg +10 -0
  861. package/src/routes/static/icon/icon-legacy-money-back-guarantee-zl-48-colored.svg +14 -0
  862. package/src/routes/static/icon/icon-legacy-top-rated-seller-48-colored.svg +12 -0
  863. package/src/routes/static/icon/icon-lightbulb-16.svg +7 -0
  864. package/src/routes/static/icon/icon-lightbulb-24.svg +7 -0
  865. package/src/routes/static/icon/icon-lightning-bolt-16.svg +7 -0
  866. package/src/routes/static/icon/icon-lightning-bolt-24.svg +6 -0
  867. package/src/routes/static/icon/icon-link-24.svg +11 -0
  868. package/src/routes/static/icon/icon-linkedin-24.svg +5 -0
  869. package/src/routes/static/icon/icon-list-view-16.svg +10 -0
  870. package/src/routes/static/icon/icon-list-view-24.svg +5 -0
  871. package/src/routes/static/icon/icon-list-view-filled-16.svg +10 -0
  872. package/src/routes/static/icon/icon-list-view-filled-24.svg +10 -0
  873. package/src/routes/static/icon/icon-live-eye-16.svg +7 -0
  874. package/src/routes/static/icon/icon-live-eye-24.svg +7 -0
  875. package/src/routes/static/icon/icon-location-16.svg +8 -0
  876. package/src/routes/static/icon/icon-location-24.svg +12 -0
  877. package/src/routes/static/icon/icon-location-64.svg +12 -0
  878. package/src/routes/static/icon/icon-locked-16.svg +7 -0
  879. package/src/routes/static/icon/icon-locked-20.svg +7 -0
  880. package/src/routes/static/icon/icon-locked-24.svg +7 -0
  881. package/src/routes/static/icon/icon-maestro-12-colored.svg +44 -0
  882. package/src/routes/static/icon/icon-maestro-18-colored.svg +44 -0
  883. package/src/routes/static/icon/icon-maestro-24-colored.svg +44 -0
  884. package/src/routes/static/icon/icon-maestro-32-colored.svg +44 -0
  885. package/src/routes/static/icon/icon-mail-16.svg +7 -0
  886. package/src/routes/static/icon/icon-mail-20.svg +7 -0
  887. package/src/routes/static/icon/icon-mail-24.svg +7 -0
  888. package/src/routes/static/icon/icon-mail-64.svg +7 -0
  889. package/src/routes/static/icon/icon-mail-move-16.svg +10 -0
  890. package/src/routes/static/icon/icon-mail-move-24.svg +10 -0
  891. package/src/routes/static/icon/icon-mail-open-16.svg +7 -0
  892. package/src/routes/static/icon/icon-mail-open-24.svg +7 -0
  893. package/src/routes/static/icon/icon-mail-unread-16.svg +7 -0
  894. package/src/routes/static/icon/icon-mail-unread-24.svg +8 -0
  895. package/src/routes/static/icon/icon-map-16.svg +7 -0
  896. package/src/routes/static/icon/icon-map-20.svg +7 -0
  897. package/src/routes/static/icon/icon-map-24.svg +7 -0
  898. package/src/routes/static/icon/icon-masonry-view-16.svg +7 -0
  899. package/src/routes/static/icon/icon-masonry-view-24.svg +6 -0
  900. package/src/routes/static/icon/icon-masonry-view-filled-16.svg +7 -0
  901. package/src/routes/static/icon/icon-masonry-view-filled-24.svg +7 -0
  902. package/src/routes/static/icon/icon-mastercard-12-colored.svg +25 -0
  903. package/src/routes/static/icon/icon-mastercard-18-colored.svg +25 -0
  904. package/src/routes/static/icon/icon-mastercard-24-colored.svg +25 -0
  905. package/src/routes/static/icon/icon-mastercard-32-colored.svg +25 -0
  906. package/src/routes/static/icon/icon-medium-box-16.svg +7 -0
  907. package/src/routes/static/icon/icon-medium-box-24.svg +7 -0
  908. package/src/routes/static/icon/icon-menu-20.svg +7 -0
  909. package/src/routes/static/icon/icon-menu-24.svg +5 -0
  910. package/src/routes/static/icon/icon-microphone-16.svg +8 -0
  911. package/src/routes/static/icon/icon-microphone-24.svg +5 -0
  912. package/src/routes/static/icon/icon-mobile-24.svg +6 -0
  913. package/src/routes/static/icon/icon-mobile-signal-24.svg +9 -0
  914. package/src/routes/static/icon/icon-money-back-guarantee-16.svg +7 -0
  915. package/src/routes/static/icon/icon-money-back-guarantee-24.svg +7 -0
  916. package/src/routes/static/icon/icon-money-back-guarantee-filled-16-colored.svg +12 -0
  917. package/src/routes/static/icon/icon-money-back-guarantee-filled-24-colored.svg +14 -0
  918. package/src/routes/static/icon/icon-monthly-invoice-12-colored.svg +18 -0
  919. package/src/routes/static/icon/icon-monthly-invoice-18-colored.svg +18 -0
  920. package/src/routes/static/icon/icon-monthly-invoice-24-colored.svg +18 -0
  921. package/src/routes/static/icon/icon-monthly-invoice-32-colored.svg +18 -0
  922. package/src/routes/static/icon/icon-moon-16.svg +7 -0
  923. package/src/routes/static/icon/icon-moon-20.svg +7 -0
  924. package/src/routes/static/icon/icon-moon-24.svg +7 -0
  925. package/src/routes/static/icon/icon-motorcycle-16.svg +8 -0
  926. package/src/routes/static/icon/icon-motorcycle-24.svg +12 -0
  927. package/src/routes/static/icon/icon-move-16.svg +5 -0
  928. package/src/routes/static/icon/icon-move-24.svg +5 -0
  929. package/src/routes/static/icon/icon-nectar-logo-24-colored.svg +24 -0
  930. package/src/routes/static/icon/icon-negative-filled-16.svg +7 -0
  931. package/src/routes/static/icon/icon-negative-filled-24.svg +6 -0
  932. package/src/routes/static/icon/icon-neutral-16.svg +7 -0
  933. package/src/routes/static/icon/icon-neutral-24.svg +7 -0
  934. package/src/routes/static/icon/icon-notification-16.svg +7 -0
  935. package/src/routes/static/icon/icon-notification-20.svg +7 -0
  936. package/src/routes/static/icon/icon-notification-24.svg +7 -0
  937. package/src/routes/static/icon/icon-notification-64.svg +7 -0
  938. package/src/routes/static/icon/icon-notification-filled-24.svg +7 -0
  939. package/src/routes/static/icon/icon-on-the-way-16.svg +7 -0
  940. package/src/routes/static/icon/icon-on-the-way-24.svg +7 -0
  941. package/src/routes/static/icon/icon-overflow-horizontal-16.svg +5 -0
  942. package/src/routes/static/icon/icon-overflow-horizontal-20.svg +5 -0
  943. package/src/routes/static/icon/icon-overflow-horizontal-24.svg +5 -0
  944. package/src/routes/static/icon/icon-overflow-vertical-16.svg +5 -0
  945. package/src/routes/static/icon/icon-overflow-vertical-20.svg +5 -0
  946. package/src/routes/static/icon/icon-overflow-vertical-24.svg +5 -0
  947. package/src/routes/static/icon/icon-package-16.svg +7 -0
  948. package/src/routes/static/icon/icon-package-24.svg +7 -0
  949. package/src/routes/static/icon/icon-package-64.svg +7 -0
  950. package/src/routes/static/icon/icon-passkey-16.svg +7 -0
  951. package/src/routes/static/icon/icon-passkey-24.svg +7 -0
  952. package/src/routes/static/icon/icon-passkey-64.svg +7 -0
  953. package/src/routes/static/icon/icon-pause-16.svg +5 -0
  954. package/src/routes/static/icon/icon-pause-24.svg +5 -0
  955. package/src/routes/static/icon/icon-pause-filled-64-colored.svg +9 -0
  956. package/src/routes/static/icon/icon-payoneer-12-colored.svg +132 -0
  957. package/src/routes/static/icon/icon-payoneer-18-colored.svg +132 -0
  958. package/src/routes/static/icon/icon-payoneer-24-colored.svg +132 -0
  959. package/src/routes/static/icon/icon-payoneer-32-colored.svg +132 -0
  960. package/src/routes/static/icon/icon-paypal-12-colored.svg +32 -0
  961. package/src/routes/static/icon/icon-paypal-18-colored.svg +32 -0
  962. package/src/routes/static/icon/icon-paypal-24-colored.svg +32 -0
  963. package/src/routes/static/icon/icon-paypal-32-colored.svg +32 -0
  964. package/src/routes/static/icon/icon-paypal-credit-12-colored.svg +43 -0
  965. package/src/routes/static/icon/icon-paypal-credit-18-colored.svg +43 -0
  966. package/src/routes/static/icon/icon-paypal-credit-24-colored.svg +43 -0
  967. package/src/routes/static/icon/icon-paypal-credit-32-colored.svg +43 -0
  968. package/src/routes/static/icon/icon-paypal-disabled-12-colored.svg +32 -0
  969. package/src/routes/static/icon/icon-paypal-disabled-18-colored.svg +32 -0
  970. package/src/routes/static/icon/icon-paypal-disabled-24-colored.svg +32 -0
  971. package/src/routes/static/icon/icon-paypal-disabled-32-colored.svg +32 -0
  972. package/src/routes/static/icon/icon-pencil-16.svg +5 -0
  973. package/src/routes/static/icon/icon-pencil-20.svg +7 -0
  974. package/src/routes/static/icon/icon-pencil-24.svg +5 -0
  975. package/src/routes/static/icon/icon-peso-16.svg +7 -0
  976. package/src/routes/static/icon/icon-peso-24.svg +7 -0
  977. package/src/routes/static/icon/icon-phone-16.svg +5 -0
  978. package/src/routes/static/icon/icon-phone-24.svg +7 -0
  979. package/src/routes/static/icon/icon-pin-24.svg +7 -0
  980. package/src/routes/static/icon/icon-pin-filled-24.svg +5 -0
  981. package/src/routes/static/icon/icon-pinterest-24.svg +5 -0
  982. package/src/routes/static/icon/icon-play-16.svg +5 -0
  983. package/src/routes/static/icon/icon-play-24.svg +5 -0
  984. package/src/routes/static/icon/icon-play-filled-16-colored.svg +13 -0
  985. package/src/routes/static/icon/icon-play-filled-24-colored.svg +11 -0
  986. package/src/routes/static/icon/icon-play-filled-64-colored.svg +7 -0
  987. package/src/routes/static/icon/icon-postepay-12-colored.svg +16 -0
  988. package/src/routes/static/icon/icon-postepay-18-colored.svg +16 -0
  989. package/src/routes/static/icon/icon-postepay-24-colored.svg +16 -0
  990. package/src/routes/static/icon/icon-postepay-32-colored.svg +16 -0
  991. package/src/routes/static/icon/icon-potted-plant-16.svg +7 -0
  992. package/src/routes/static/icon/icon-potted-plant-24.svg +7 -0
  993. package/src/routes/static/icon/icon-pound-16.svg +5 -0
  994. package/src/routes/static/icon/icon-pound-24.svg +5 -0
  995. package/src/routes/static/icon/icon-print-16.svg +7 -0
  996. package/src/routes/static/icon/icon-print-24.svg +6 -0
  997. package/src/routes/static/icon/icon-profile-20.svg +12 -0
  998. package/src/routes/static/icon/icon-profile-24.svg +12 -0
  999. package/src/routes/static/icon/icon-profile-filled-24.svg +8 -0
  1000. package/src/routes/static/icon/icon-progress-current-24.svg +8 -0
  1001. package/src/routes/static/icon/icon-progress-upcoming-24.svg +7 -0
  1002. package/src/routes/static/icon/icon-promotion-16.svg +7 -0
  1003. package/src/routes/static/icon/icon-promotion-24.svg +7 -0
  1004. package/src/routes/static/icon/icon-qr-code-16.svg +5 -0
  1005. package/src/routes/static/icon/icon-qr-code-24.svg +10 -0
  1006. package/src/routes/static/icon/icon-radio-checked-18.svg +7 -0
  1007. package/src/routes/static/icon/icon-radio-checked-24.svg +7 -0
  1008. package/src/routes/static/icon/icon-radio-unchecked-18.svg +7 -0
  1009. package/src/routes/static/icon/icon-radio-unchecked-24.svg +7 -0
  1010. package/src/routes/static/icon/icon-recovery-code-16.svg +10 -0
  1011. package/src/routes/static/icon/icon-recovery-code-24.svg +10 -0
  1012. package/src/routes/static/icon/icon-reddit-24.svg +9 -0
  1013. package/src/routes/static/icon/icon-refresh-16.svg +5 -0
  1014. package/src/routes/static/icon/icon-refresh-24.svg +5 -0
  1015. package/src/routes/static/icon/icon-relaxed-grid-24.svg +5 -0
  1016. package/src/routes/static/icon/icon-relaxed-grid-filled-24.svg +5 -0
  1017. package/src/routes/static/icon/icon-remove-16.svg +3 -0
  1018. package/src/routes/static/icon/icon-remove-24.svg +3 -0
  1019. package/src/routes/static/icon/icon-reply-16.svg +5 -0
  1020. package/src/routes/static/icon/icon-reply-24.svg +5 -0
  1021. package/src/routes/static/icon/icon-return-16.svg +5 -0
  1022. package/src/routes/static/icon/icon-return-24.svg +5 -0
  1023. package/src/routes/static/icon/icon-ribbon-16.svg +7 -0
  1024. package/src/routes/static/icon/icon-ribbon-24.svg +7 -0
  1025. package/src/routes/static/icon/icon-rim-16.svg +7 -0
  1026. package/src/routes/static/icon/icon-rim-24.svg +7 -0
  1027. package/src/routes/static/icon/icon-ringgit-16.svg +10 -0
  1028. package/src/routes/static/icon/icon-ringgit-24.svg +10 -0
  1029. package/src/routes/static/icon/icon-rotate-24.svg +5 -0
  1030. package/src/routes/static/icon/icon-rotate-landscape-left-24.svg +10 -0
  1031. package/src/routes/static/icon/icon-rotate-landscape-right-24.svg +10 -0
  1032. package/src/routes/static/icon/icon-rotate-portrait-left-24.svg +10 -0
  1033. package/src/routes/static/icon/icon-rotate-portrait-right-24.svg +10 -0
  1034. package/src/routes/static/icon/icon-rupee-16.svg +5 -0
  1035. package/src/routes/static/icon/icon-rupee-24.svg +5 -0
  1036. package/src/routes/static/icon/icon-satchel-16.svg +7 -0
  1037. package/src/routes/static/icon/icon-satchel-24.svg +7 -0
  1038. package/src/routes/static/icon/icon-save-16.svg +7 -0
  1039. package/src/routes/static/icon/icon-save-20.svg +7 -0
  1040. package/src/routes/static/icon/icon-save-24.svg +7 -0
  1041. package/src/routes/static/icon/icon-save-filled-16.svg +5 -0
  1042. package/src/routes/static/icon/icon-save-filled-20.svg +5 -0
  1043. package/src/routes/static/icon/icon-save-filled-24.svg +5 -0
  1044. package/src/routes/static/icon/icon-scan-16.svg +7 -0
  1045. package/src/routes/static/icon/icon-scan-24.svg +7 -0
  1046. package/src/routes/static/icon/icon-search-16.svg +5 -0
  1047. package/src/routes/static/icon/icon-search-20.svg +7 -0
  1048. package/src/routes/static/icon/icon-search-24.svg +5 -0
  1049. package/src/routes/static/icon/icon-search-64.svg +5 -0
  1050. package/src/routes/static/icon/icon-search-filled-24.svg +7 -0
  1051. package/src/routes/static/icon/icon-search-similar-16.svg +7 -0
  1052. package/src/routes/static/icon/icon-search-similar-20.svg +7 -0
  1053. package/src/routes/static/icon/icon-search-similar-24.svg +7 -0
  1054. package/src/routes/static/icon/icon-security-key-24.svg +8 -0
  1055. package/src/routes/static/icon/icon-select-all-24.svg +5 -0
  1056. package/src/routes/static/icon/icon-selling-16.svg +7 -0
  1057. package/src/routes/static/icon/icon-selling-20.svg +7 -0
  1058. package/src/routes/static/icon/icon-selling-24.svg +7 -0
  1059. package/src/routes/static/icon/icon-selling-filled-24.svg +7 -0
  1060. package/src/routes/static/icon/icon-send-24.svg +5 -0
  1061. package/src/routes/static/icon/icon-settings-16.svg +12 -0
  1062. package/src/routes/static/icon/icon-settings-20.svg +8 -0
  1063. package/src/routes/static/icon/icon-settings-24.svg +5 -0
  1064. package/src/routes/static/icon/icon-share-android-16.svg +7 -0
  1065. package/src/routes/static/icon/icon-share-android-20.svg +7 -0
  1066. package/src/routes/static/icon/icon-share-android-24.svg +7 -0
  1067. package/src/routes/static/icon/icon-share-ios-16.svg +8 -0
  1068. package/src/routes/static/icon/icon-share-ios-20.svg +8 -0
  1069. package/src/routes/static/icon/icon-share-ios-24.svg +8 -0
  1070. package/src/routes/static/icon/icon-sharpen-24.svg +7 -0
  1071. package/src/routes/static/icon/icon-ship-and-local-16.svg +7 -0
  1072. package/src/routes/static/icon/icon-ship-and-local-24.svg +7 -0
  1073. package/src/routes/static/icon/icon-shirt-16.svg +7 -0
  1074. package/src/routes/static/icon/icon-shirt-24.svg +7 -0
  1075. package/src/routes/static/icon/icon-shoe-box-24.svg +7 -0
  1076. package/src/routes/static/icon/icon-shovel-16.svg +7 -0
  1077. package/src/routes/static/icon/icon-shovel-24.svg +7 -0
  1078. package/src/routes/static/icon/icon-show-16.svg +7 -0
  1079. package/src/routes/static/icon/icon-show-24.svg +7 -0
  1080. package/src/routes/static/icon/icon-small-box-16.svg +7 -0
  1081. package/src/routes/static/icon/icon-small-box-24.svg +7 -0
  1082. package/src/routes/static/icon/icon-small-letter-24.svg +7 -0
  1083. package/src/routes/static/icon/icon-sneaker-16.svg +7 -0
  1084. package/src/routes/static/icon/icon-sneaker-24.svg +7 -0
  1085. package/src/routes/static/icon/icon-snowflake-16.svg +7 -0
  1086. package/src/routes/static/icon/icon-snowflake-24.svg +7 -0
  1087. package/src/routes/static/icon/icon-snowmobile-16.svg +8 -0
  1088. package/src/routes/static/icon/icon-snowmobile-24.svg +8 -0
  1089. package/src/routes/static/icon/icon-sort-12.svg +5 -0
  1090. package/src/routes/static/icon/icon-sort-16.svg +7 -0
  1091. package/src/routes/static/icon/icon-sort-24.svg +5 -0
  1092. package/src/routes/static/icon/icon-sort-down-12.svg +5 -0
  1093. package/src/routes/static/icon/icon-sort-up-12.svg +5 -0
  1094. package/src/routes/static/icon/icon-sparkline-down-16.svg +5 -0
  1095. package/src/routes/static/icon/icon-sparkline-down-20.svg +5 -0
  1096. package/src/routes/static/icon/icon-sparkline-down-24.svg +5 -0
  1097. package/src/routes/static/icon/icon-sparkline-up-16.svg +5 -0
  1098. package/src/routes/static/icon/icon-sparkline-up-20.svg +5 -0
  1099. package/src/routes/static/icon/icon-sparkline-up-24.svg +5 -0
  1100. package/src/routes/static/icon/icon-sparkline-up-filled-24.svg +7 -0
  1101. package/src/routes/static/icon/icon-spinner-20.svg +16 -0
  1102. package/src/routes/static/icon/icon-spinner-24.svg +16 -0
  1103. package/src/routes/static/icon/icon-spinner-30.svg +14 -0
  1104. package/src/routes/static/icon/icon-split-payment-16.svg +7 -0
  1105. package/src/routes/static/icon/icon-split-payment-24.svg +7 -0
  1106. package/src/routes/static/icon/icon-split-view-24.svg +5 -0
  1107. package/src/routes/static/icon/icon-split-view-filled-24.svg +5 -0
  1108. package/src/routes/static/icon/icon-star-dynamic.svg +17 -0
  1109. package/src/routes/static/icon/icon-star-empty-16.svg +7 -0
  1110. package/src/routes/static/icon/icon-star-empty-24.svg +7 -0
  1111. package/src/routes/static/icon/icon-star-filled-16.svg +5 -0
  1112. package/src/routes/static/icon/icon-star-filled-24.svg +5 -0
  1113. package/src/routes/static/icon/icon-star-half-16-colored.svg +12 -0
  1114. package/src/routes/static/icon/icon-star-half-24-colored.svg +12 -0
  1115. package/src/routes/static/icon/icon-star-half-dark-16-colored.svg +12 -0
  1116. package/src/routes/static/icon/icon-star-half-dark-24-colored.svg +12 -0
  1117. package/src/routes/static/icon/icon-stepper-attention-24.svg +6 -0
  1118. package/src/routes/static/icon/icon-stepper-confirmation-24.svg +6 -0
  1119. package/src/routes/static/icon/icon-stepper-current-24.svg +8 -0
  1120. package/src/routes/static/icon/icon-stepper-upcoming-24.svg +8 -0
  1121. package/src/routes/static/icon/icon-store-16.svg +7 -0
  1122. package/src/routes/static/icon/icon-store-24.svg +7 -0
  1123. package/src/routes/static/icon/icon-store-64.svg +7 -0
  1124. package/src/routes/static/icon/icon-store-filled-24.svg +7 -0
  1125. package/src/routes/static/icon/icon-suitcase-24.svg +7 -0
  1126. package/src/routes/static/icon/icon-support-24.svg +8 -0
  1127. package/src/routes/static/icon/icon-swap-24.svg +7 -0
  1128. package/src/routes/static/icon/icon-switch-camera-24.svg +10 -0
  1129. package/src/routes/static/icon/icon-target-16.svg +7 -0
  1130. package/src/routes/static/icon/icon-target-24.svg +7 -0
  1131. package/src/routes/static/icon/icon-text-messaging-16.svg +9 -0
  1132. package/src/routes/static/icon/icon-text-messaging-20.svg +7 -0
  1133. package/src/routes/static/icon/icon-text-messaging-24.svg +8 -0
  1134. package/src/routes/static/icon/icon-text-messaging-64.svg +8 -0
  1135. package/src/routes/static/icon/icon-the-ebay-vault-16.svg +12 -0
  1136. package/src/routes/static/icon/icon-the-ebay-vault-24.svg +12 -0
  1137. package/src/routes/static/icon/icon-thumb-down-16.svg +7 -0
  1138. package/src/routes/static/icon/icon-thumb-down-24.svg +7 -0
  1139. package/src/routes/static/icon/icon-thumb-down-filled-16.svg +5 -0
  1140. package/src/routes/static/icon/icon-thumb-down-filled-24.svg +5 -0
  1141. package/src/routes/static/icon/icon-thumb-up-16.svg +7 -0
  1142. package/src/routes/static/icon/icon-thumb-up-24.svg +7 -0
  1143. package/src/routes/static/icon/icon-thumb-up-64.svg +7 -0
  1144. package/src/routes/static/icon/icon-thumb-up-filled-16.svg +5 -0
  1145. package/src/routes/static/icon/icon-thumb-up-filled-24.svg +5 -0
  1146. package/src/routes/static/icon/icon-tick-16.svg +7 -0
  1147. package/src/routes/static/icon/icon-tick-24.svg +5 -0
  1148. package/src/routes/static/icon/icon-tiktok-24.svg +7 -0
  1149. package/src/routes/static/icon/icon-toggle-mode-bottom-24.svg +7 -0
  1150. package/src/routes/static/icon/icon-toggle-mode-top-24.svg +7 -0
  1151. package/src/routes/static/icon/icon-top-rated-seller-16.svg +7 -0
  1152. package/src/routes/static/icon/icon-top-rated-seller-24.svg +7 -0
  1153. package/src/routes/static/icon/icon-top-service-16.svg +7 -0
  1154. package/src/routes/static/icon/icon-top-service-24.svg +7 -0
  1155. package/src/routes/static/icon/icon-trading-card-16.svg +7 -0
  1156. package/src/routes/static/icon/icon-trading-card-24.svg +8 -0
  1157. package/src/routes/static/icon/icon-transaction-24.svg +5 -0
  1158. package/src/routes/static/icon/icon-trend-down-16-fit.svg +5 -0
  1159. package/src/routes/static/icon/icon-trend-up-16-fit.svg +5 -0
  1160. package/src/routes/static/icon/icon-trophy-16.svg +7 -0
  1161. package/src/routes/static/icon/icon-trophy-24.svg +7 -0
  1162. package/src/routes/static/icon/icon-twitter-24.svg +5 -0
  1163. package/src/routes/static/icon/icon-undo-16.svg +5 -0
  1164. package/src/routes/static/icon/icon-undo-24.svg +5 -0
  1165. package/src/routes/static/icon/icon-unionpay-12-colored.svg +28 -0
  1166. package/src/routes/static/icon/icon-unionpay-18-colored.svg +28 -0
  1167. package/src/routes/static/icon/icon-unionpay-24-colored.svg +28 -0
  1168. package/src/routes/static/icon/icon-unionpay-32-colored.svg +28 -0
  1169. package/src/routes/static/icon/icon-unlocked-16.svg +7 -0
  1170. package/src/routes/static/icon/icon-unlocked-24.svg +7 -0
  1171. package/src/routes/static/icon/icon-unselect-all-24.svg +5 -0
  1172. package/src/routes/static/icon/icon-upload-16.svg +5 -0
  1173. package/src/routes/static/icon/icon-upload-24.svg +7 -0
  1174. package/src/routes/static/icon/icon-venmo-12-colored.svg +16 -0
  1175. package/src/routes/static/icon/icon-venmo-18-colored.svg +16 -0
  1176. package/src/routes/static/icon/icon-venmo-24-colored.svg +16 -0
  1177. package/src/routes/static/icon/icon-venmo-32-colored.svg +16 -0
  1178. package/src/routes/static/icon/icon-verified-condition-16.svg +10 -0
  1179. package/src/routes/static/icon/icon-verified-condition-24.svg +10 -0
  1180. package/src/routes/static/icon/icon-video-24.svg +7 -0
  1181. package/src/routes/static/icon/icon-visa-12-colored.svg +16 -0
  1182. package/src/routes/static/icon/icon-visa-18-colored.svg +16 -0
  1183. package/src/routes/static/icon/icon-visa-24-colored.svg +16 -0
  1184. package/src/routes/static/icon/icon-visa-32-colored.svg +16 -0
  1185. package/src/routes/static/icon/icon-wallet-24.svg +7 -0
  1186. package/src/routes/static/icon/icon-wallet-64.svg +7 -0
  1187. package/src/routes/static/icon/icon-wallet-balance-12-colored.svg +16 -0
  1188. package/src/routes/static/icon/icon-wallet-balance-18-colored.svg +16 -0
  1189. package/src/routes/static/icon/icon-wallet-balance-24-colored.svg +16 -0
  1190. package/src/routes/static/icon/icon-wallet-balance-32-colored.svg +16 -0
  1191. package/src/routes/static/icon/icon-watch-16.svg +10 -0
  1192. package/src/routes/static/icon/icon-watch-24.svg +10 -0
  1193. package/src/routes/static/icon/icon-whatsapp-24.svg +7 -0
  1194. package/src/routes/static/icon/icon-won-16.svg +7 -0
  1195. package/src/routes/static/icon/icon-won-24.svg +7 -0
  1196. package/src/routes/static/icon/icon-wrench-16.svg +7 -0
  1197. package/src/routes/static/icon/icon-wrench-24.svg +7 -0
  1198. package/src/routes/static/icon/icon-youtube-24.svg +5 -0
  1199. package/src/routes/static/icon/icon-yuan-16.svg +5 -0
  1200. package/src/routes/static/icon/icon-yuan-24.svg +5 -0
  1201. package/src/routes/static/icon/icon-zloty-16.svg +8 -0
  1202. package/src/routes/static/icon/icon-zloty-24.svg +10 -0
  1203. package/src/routes/static/icon/icon-zoom-in-16.svg +8 -0
  1204. package/src/routes/static/icon/icon-zoom-in-24.svg +7 -0
  1205. package/src/routes/static/icon/icon-zoom-out-16.svg +6 -0
  1206. package/src/routes/static/icon/icon-zoom-out-24.svg +7 -0
  1207. package/src/routes/static/icon/image-placeholder.svg +10 -0
  1208. package/src/routes/static/icon/star-rating-0-5.svg +18 -0
  1209. package/src/routes/static/icon/star-rating-0.svg +8 -0
  1210. package/src/routes/static/icon/star-rating-1-5.svg +22 -0
  1211. package/src/routes/static/icon/star-rating-1.svg +12 -0
  1212. package/src/routes/static/icon/star-rating-2-5.svg +22 -0
  1213. package/src/routes/static/icon/star-rating-2.svg +12 -0
  1214. package/src/routes/static/icon/star-rating-3-5.svg +22 -0
  1215. package/src/routes/static/icon/star-rating-3.svg +12 -0
  1216. package/src/routes/static/icon/star-rating-4-5.svg +16 -0
  1217. package/src/routes/static/icon/star-rating-4.svg +12 -0
  1218. package/src/routes/static/icon/star-rating-5.svg +6 -0
  1219. package/src/routes/static/icon/star-rating-small-0-5.svg +18 -0
  1220. package/src/routes/static/icon/star-rating-small-0.svg +8 -0
  1221. package/src/routes/static/icon/star-rating-small-1-5.svg +22 -0
  1222. package/src/routes/static/icon/star-rating-small-1.svg +12 -0
  1223. package/src/routes/static/icon/star-rating-small-2-5.svg +22 -0
  1224. package/src/routes/static/icon/star-rating-small-2.svg +12 -0
  1225. package/src/routes/static/icon/star-rating-small-3-5.svg +22 -0
  1226. package/src/routes/static/icon/star-rating-small-3.svg +12 -0
  1227. package/src/routes/static/icon/star-rating-small-4-5.svg +16 -0
  1228. package/src/routes/static/icon/star-rating-small-4.svg +12 -0
  1229. package/src/routes/static/icon/star-rating-small-5.svg +6 -0
  1230. package/src/routes/static/icons.svg +9448 -0
  1231. package/src/routes/static/img/tb-landscape-pic.jpg +0 -0
  1232. package/src/routes/static/img/tb-profile-pic.jpg +0 -0
  1233. package/src/routes/static/img/tb-square-pic.jpg +0 -0
  1234. package/src/routes/static/sass/breakpoints.scss +93 -0
  1235. package/src/routes/static/sass/color-schemes.scss +28 -0
  1236. package/src/routes/static/sass/demo-colors.scss +766 -0
  1237. package/src/routes/static/sass/index.scss +517 -0
  1238. package/src/routes/static/sass/page-grid.scss +60 -0
  1239. package/src/routes/static/sass/pygments.scss +238 -0
  1240. package/src/routes/static/skin-graphic.png +0 -0
  1241. package/src/routes/static/star-rating.svg +209 -0
  1242. package/src/sass/bundles/skin-headless.scss +1 -0
  1243. package/src/sass/button/button.scss +18 -1
  1244. package/src/sass/menu-button/menu-button.scss +4 -4
  1245. package/src/sass/table/stories/table.selection.stories.js +409 -0
  1246. package/src/sass/table/stories/table.stories.js +254 -0
  1247. package/src/sass/table/table.scss +70 -0
  1248. package/src/tokens/evo-dark.css +2 -1
  1249. package/src/tokens/evo-light.css +2 -1
  1250. package/table.browser.json +1 -0
  1251. package/table.css +1 -0
  1252. package/table.js +1 -0
  1253. package/table.mjs +1 -0
  1254. package/vite.config.js +4 -0
@@ -0,0 +1,154 @@
1
+ window.addEventListener("load", () => {
2
+ const skeletonDelay = 250;
3
+ const navDelay = 500;
4
+ const heroDelay = 500;
5
+ const featured1Delay = 600;
6
+ const featured2Delay = 700;
7
+ const articleDelay = 3000;
8
+ const asideDelay1 = 750;
9
+ const asideDelay2 = 500;
10
+ const footerDelay = 500;
11
+
12
+ setTimeout(() => {
13
+ document.querySelector(".page-grid").innerHTML += `
14
+ <nav>
15
+ <div class="demo-skeleton"></div>
16
+ </nav>
17
+ <article id="hero">
18
+ <div class="demo-skeleton"></div>
19
+ </article>
20
+ <article id="featured-1" class="featured nested-grid-container">
21
+ <div class="demo-skeleton"></div>
22
+ </article>
23
+ <article id="featured-2" class="featured nested-grid-container">
24
+ <div class="demo-skeleton"></div>
25
+ </article>
26
+ <main>
27
+ <div class="demo-skeleton"></div>
28
+ </main>
29
+ <aside>
30
+ <section id="section-1">
31
+ <div class="demo-skeleton"></div>
32
+ </section>
33
+ <section id="section-2">
34
+ <div class="demo-skeleton"></div>
35
+ </section>
36
+ </aside>
37
+ `;
38
+ }, skeletonDelay);
39
+
40
+ setTimeout(() => {
41
+ document.querySelector("nav").innerHTML = `
42
+ <ul>
43
+ <li><a href="#">World</a>
44
+ <li><a href="#">U.S.</a>
45
+ <li><a href="#">Technology</a>
46
+ <li><a href="#">Design</a>
47
+ <li><a href="#">Culture</a>
48
+ <li><a href="#">Business</a>
49
+ <li><a href="#">Politics</a>
50
+ <li><a href="#">Opinion</a>
51
+ <li><a href="#">Science</a>
52
+ <li><a href="#">Health</a>
53
+ <li><a href="#">Style</a>
54
+ <li><a href="#">Travel</a>
55
+ </ul>
56
+ `;
57
+ }, navDelay);
58
+
59
+ setTimeout(() => {
60
+ document.querySelector("#hero").innerHTML = `
61
+ <h2>Title of a longer featured blog post</h2>
62
+ <p>Multiple lines of text that form the lede, informing new readers quickly and efficiently about what's most
63
+ interesting in this post's contents.</p>
64
+ <p><a>Continue reading...</a></p>
65
+ `;
66
+ }, heroDelay);
67
+
68
+ setTimeout(() => {
69
+ document.querySelector("#featured-1").innerHTML = `
70
+ <div class="page-grid">
71
+ <div class="featured__article">
72
+ <h2>Featured Post 1</h2>
73
+ <p>This is a wider card with supporting text below as a natural lead-in to additional content.</p>
74
+ </div>
75
+ <div class="featured__thumbnail">
76
+ Thumbnail
77
+ </div>
78
+ </div>;
79
+ `;
80
+ }, featured1Delay);
81
+
82
+ setTimeout(() => {
83
+ document.querySelector("#featured-2").innerHTML = `
84
+ <div class="page-grid">
85
+ <div class="featured__article">
86
+ <h2>Featured Post 2</h2>
87
+ <p>This is a wider card with supporting text below as a natural lead-in to additional content.</p>
88
+ </div>
89
+ <div class="featured__thumbnail">
90
+ Thumbnail
91
+ </div>
92
+ </div>;
93
+ `;
94
+ }, featured2Delay);
95
+
96
+ setTimeout(() => {
97
+ document.querySelector("main").innerHTML = `
98
+ <article>
99
+ <h1>From the Firehose</h1>
100
+ <h2>Sample blog post</h2>
101
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam.
102
+ Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras
103
+ mattis consectetur purus sit amet fermentum.</p>
104
+ <p>Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor
105
+ id nibh ultricies vehicula ut id elit.
106
+ Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean
107
+ lacinia bibendum nulla sed consectetur.</p>
108
+ <h3>Heading</h3>
109
+ <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus,
110
+ nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac,
111
+ vestibulum at eros.</p>
112
+ <h4>Sub-heading</h4>
113
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
114
+ <pre><code>Example code block</code></pre>
115
+ <p>Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce
116
+ dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>
117
+ <h4>Sub-heading</h4>
118
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia
119
+ bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac
120
+ cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
121
+ <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
122
+ Donec id elit non mi porta gravida at eget metus.
123
+ Nulla vitae elit libero, a pharetra augue.
124
+ Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p>
125
+ <p>Vestibulum id ligula porta felis euismod semper.
126
+ Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
127
+ Maecenas sed diam eget risus varius blandit sit amet non magna.
128
+ Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.</p>
129
+ </article>
130
+ `;
131
+ }, articleDelay);
132
+
133
+ setTimeout(() => {
134
+ document.querySelector("#section-1").innerHTML = `
135
+ <h2>About</h2>
136
+ <p>Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
137
+ `;
138
+ }, asideDelay1);
139
+
140
+ setTimeout(() => {
141
+ document.querySelector("#section-2").innerHTML = `
142
+ <h2>Archives</h2>
143
+ <p>Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
144
+ `;
145
+ }, asideDelay2);
146
+
147
+ setTimeout(() => {
148
+ document.body.innerHTML += `
149
+ <footer>This pen is a "stretchy" CSS Grid recreation of the <a href="https://getbootstrap.com/docs/4.0/examples/blog/">Bootstrap Blog Example</a>.</footer>
150
+ `;
151
+ }, footerDelay);
152
+ });
153
+
154
+ export default {};
@@ -0,0 +1,3 @@
1
+ <div class="page-grid-container">
2
+ <div class="page-grid"></div>
3
+ </div>
@@ -0,0 +1,27 @@
1
+ aside,
2
+ main,
3
+ .page-grid {
4
+ outline: 0;
5
+ }
6
+ .demo-skeleton:empty {
7
+ background: var(--color-loading-fill);
8
+ border-radius: 8px;
9
+ height: 150px;
10
+ }
11
+ nav .demo-skeleton:empty {
12
+ height: 50px;
13
+ }
14
+ article .demo-skeleton:empty {
15
+ height: 200px;
16
+ }
17
+ #hero .demo-skeleton:empty {
18
+ background-color: #343a40;
19
+ height: 150px;
20
+ }
21
+ main .demo-skeleton:empty {
22
+ height: 800px;
23
+ }
24
+ aside .demo-skeleton:empty {
25
+ height: 400px;
26
+ margin-bottom: 16px;
27
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "title": "Out-of-Order Streaming - Out-of-Order Placeholders Only"
3
+ }
@@ -0,0 +1,140 @@
1
+ window.addEventListener("load", () => {
2
+ const navDelay = 200;
3
+ const heroDelay = 250;
4
+ const skeletonDelay = 250;
5
+ const articleDelay = 3000;
6
+ const asideDelay1 = 1000;
7
+ const asideDelay2 = 1500;
8
+ const footerDelay = 1750;
9
+
10
+ setTimeout(() => {
11
+ document.querySelector(".page-grid").innerHTML += `
12
+ <nav>
13
+ <ul>
14
+ <li><a href="#">World</a>
15
+ <li><a href="#">U.S.</a>
16
+ <li><a href="#">Technology</a>
17
+ <li><a href="#">Design</a>
18
+ <li><a href="#">Culture</a>
19
+ <li><a href="#">Business</a>
20
+ <li><a href="#">Politics</a>
21
+ <li><a href="#">Opinion</a>
22
+ <li><a href="#">Science</a>
23
+ <li><a href="#">Health</a>
24
+ <li><a href="#">Style</a>
25
+ <li><a href="#">Travel</a>
26
+ </ul>
27
+ </nav>
28
+ `;
29
+ }, navDelay);
30
+
31
+ setTimeout(() => {
32
+ document.querySelector(".page-grid").innerHTML += `
33
+ <article id="hero">
34
+ <h2>Title of a longer featured blog post</h2>
35
+ <p>Multiple lines of text that form the lede, informing new readers quickly and efficiently about what's most
36
+ interesting in this post's contents.</p>
37
+ <p><a>Continue reading...</a></p>
38
+ </article>
39
+ <article id="featured-1" class="featured nested-grid-container">
40
+ <div class="page-grid">
41
+ <div class="featured__article">
42
+ <h2>Featured Post 1</h2>
43
+ <p>This is a wider card with supporting text below as a natural lead-in to additional content.</p>
44
+ </div>
45
+ <div class="featured__thumbnail">
46
+ Thumbnail
47
+ </div>
48
+ </div>
49
+ </article>
50
+ <article id="featured-2" class="featured nested-grid-container">
51
+ <div class="page-grid">
52
+ <div class="featured__article">
53
+ <h2>Featured Post 2</h2>
54
+ <p>This is a wider card with supporting text below as a natural lead-in to additional content.</p>
55
+ </div>
56
+ <div class="featured__thumbnail">
57
+ Thumbnail
58
+ </div>
59
+ </div>
60
+ </article>
61
+ `;
62
+ }, heroDelay);
63
+
64
+ setTimeout(() => {
65
+ document.querySelector(".page-grid").innerHTML += `
66
+ <main>
67
+ <h1>From the Firehose</h1>
68
+ <div class="demo-skeleton"></div>
69
+ </main>
70
+ <aside>
71
+ <section id="section-1">
72
+ <div class="demo-skeleton"></div>
73
+ </section>
74
+ <section id="section-2">
75
+ <div class="demo-skeleton"></div>
76
+ </section>
77
+ </aside>
78
+ `;
79
+ }, skeletonDelay);
80
+
81
+ setTimeout(() => {
82
+ document.querySelector("main .demo-skeleton").hidden = true;
83
+
84
+ document.querySelector("main").innerHTML += `
85
+ <article>
86
+ <h2>Sample blog post</h2>
87
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam.
88
+ Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras
89
+ mattis consectetur purus sit amet fermentum.</p>
90
+ <p>Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor
91
+ id nibh ultricies vehicula ut id elit.
92
+ Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean
93
+ lacinia bibendum nulla sed consectetur.</p>
94
+ <h3>Heading</h3>
95
+ <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Duis mollis, est non commodo luctus,
96
+ nisi erat porttitor ligula, eget lacinia odio sem nec elit. Morbi leo risus, porta ac consectetur ac,
97
+ vestibulum at eros.</p>
98
+ <h4>Sub-heading</h4>
99
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p>
100
+ <pre><code>Example code block</code></pre>
101
+ <p>Aenean lacinia bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce
102
+ dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa.</p>
103
+ <h4>Sub-heading</h4>
104
+ <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean lacinia
105
+ bibendum nulla sed consectetur. Etiam porta sem malesuada magna mollis euismod. Fusce dapibus, tellus ac
106
+ cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
107
+ <p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
108
+ Donec id elit non mi porta gravida at eget metus.
109
+ Nulla vitae elit libero, a pharetra augue.
110
+ Donec ullamcorper nulla non metus auctor fringilla. Nulla vitae elit libero, a pharetra augue.</p>
111
+ <p>Vestibulum id ligula porta felis euismod semper.
112
+ Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
113
+ Maecenas sed diam eget risus varius blandit sit amet non magna.
114
+ Cras mattis consectetur purus sit amet fermentum. Sed posuere consectetur est at lobortis.</p>
115
+ </article>
116
+ `;
117
+ }, articleDelay);
118
+
119
+ setTimeout(() => {
120
+ document.querySelector("#section-1").innerHTML = `
121
+ <h2>About</h2>
122
+ <p>Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
123
+ `;
124
+ }, asideDelay1);
125
+
126
+ setTimeout(() => {
127
+ document.querySelector("#section-2").innerHTML = `
128
+ <h2>Archives</h2>
129
+ <p>Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.</p>
130
+ `;
131
+ }, asideDelay2);
132
+
133
+ setTimeout(() => {
134
+ document.body.innerHTML += `
135
+ <footer>This pen is a "stretchy" CSS Grid recreation of the <a href="https://getbootstrap.com/docs/4.0/examples/blog/">Bootstrap Blog Example</a>.</footer>
136
+ `;
137
+ }, footerDelay);
138
+ });
139
+
140
+ export default {};
@@ -0,0 +1,3 @@
1
+ <div class="page-grid-container">
2
+ <div class="page-grid"></div>
3
+ </div>
@@ -0,0 +1,14 @@
1
+ aside,
2
+ main,
3
+ .page-grid {
4
+ outline: 0;
5
+ }
6
+ .demo-skeleton:empty {
7
+ background: var(--color-loading-fill);
8
+ border-radius: 8px;
9
+ height: 600px;
10
+ }
11
+ aside .demo-skeleton:empty {
12
+ height: 200px;
13
+ margin-bottom: 16px;
14
+ }
@@ -0,0 +1,4 @@
1
+ import "prismjs";
2
+ import "prismjs/themes/prism-tomorrow.css";
3
+
4
+ export default {};
@@ -0,0 +1,58 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <title>${$global.meta.title}</title>
5
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
7
+ <style>
8
+ iframe {
9
+ border: 1px solid #000;
10
+ width: 320px;
11
+ height: 480px;
12
+ min-height: 480px;
13
+ resize: both;
14
+ overflow: auto;
15
+ }
16
+
17
+ .template--item {
18
+ display: inline-block;
19
+ margin-right: 20px;
20
+ }
21
+
22
+ .template--item_head {
23
+ display: flex;
24
+ align-items: baseline;
25
+ }
26
+ .template--item_head_actions {
27
+ margin-left: auto;
28
+ }
29
+ </style>
30
+
31
+ </head>
32
+ <body>
33
+ <header>
34
+ <div class="page-grid-container">
35
+ <div class="page-grid">
36
+ <div class="app-bar">
37
+ <h1 class="app-bar__title">${$global.meta.title}</h1>
38
+ <ul class="app-bar__links">
39
+ <li><a href="../">< Back to Skin Site</a></li>
40
+ </ul>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </header>
45
+ <div class="page-grid-container">
46
+ <div class="page-grid">
47
+ <div class="content">
48
+
49
+ <${input.renderBody}/>
50
+ </div>
51
+ <footer>
52
+ <hr />
53
+ <p>Copyright &copy; ${(new Date()).getFullYear()} eBay, Inc. All rights reserved.</p>
54
+ </footer>
55
+ </div>
56
+ </div>
57
+ </body>
58
+ </html>
@@ -0,0 +1,176 @@
1
+
2
+ <p>This page details <a href="#techniques">implementation techniques</a> and <a href="#scenarios">common loading scenarios</a> for eBay Skin's <a href="../index.html#skeleton">skeleton</a> module.</p>
3
+ <p><strong>NOTE:</strong> This page demonstrates both good and bad uses of skeletons; please be sure to read and understand carefully to avoid replicating an anti-pattern!</p>
4
+
5
+ <hr />
6
+
7
+ <h2 id="techniques">Techniques</h2>
8
+ <p>Skeletons can be used as placeholders for content (i.e. reserving physical space in the page) using either a pure CSS approach, or a DOM manipulation approach with JavaScript.</p>
9
+
10
+ <h3 id="techniques-css">Technique 1: Pure CSS</h3>
11
+ <p>This technique leverages the CSS <span class="highlight">:empty</span> pseudo-class, as documented in the article, <a href="https://dev.to/tigt/skeleton-screens-but-fast-48f1">"Skeleton screens, but fast"</a> by Taylor Hunt. This approach is highly performant, especially on devices with limited CPU resources.</p>
12
+ <p>If an element is empty, then its <span class="highlight">:empty</span> selector matches, and the associated styles (i.e. the skeleton graphics) are applied. When the content is rendered, <span class="highlight">:empty</span> no longer matches, and the styles (our skeleton graphics) are removed. Marvellous!</p>
13
+ <p>The HTML would look like this:</p>
14
+ <highlight-code type="html" >
15
+ <div class="search-results-skeleton">
16
+ <!-- this element will match :empty until content is inserted -->
17
+ </div>
18
+ </highlight-code>
19
+
20
+ <p>The CSS selector like so:</p>
21
+
22
+ <highlight-code type="css" code=`
23
+ .search-results-skeleton:empty {
24
+ /* app developer must write CSS to create skeleton graphics */
25
+ }
26
+ `></highlight-code>
27
+
28
+ <p><strong>NOTE:</strong> The <span class="highlight">:empty</span> pseudo-class considers elements with whitespace as not empty!</p>
29
+ <p>The downside is that our <a href="../index.html#skeleton">skeleton classes</a> cannot be leveraged (in theory, LESS mixins could be provided) and <em>composite</em> skeletons (e.g. items tiles) may require some non-trivial use of CSS linear gradients for certain skeletons.</p>
30
+
31
+ <hr />
32
+
33
+ <h3 id="techniques-javascript">Technique 2: JavaScript</h3>
34
+ <p>With JavaScript, we gain more flexibility and control over when and how the skeleton placeholder is replaced with the actual content. We can either remove the skeleton node from the DOM, as shown below.</p>
35
+
36
+ <highlight-code type="html" >
37
+ <!-- Before -->
38
+ <div class="skeleton" role="img" aria-label="loading" style="width: 200px;">
39
+ <div class="skeleton__button"></div>
40
+ </div>
41
+
42
+ <!-- After -->
43
+ <div>
44
+ <p>content</p>
45
+ </div>
46
+ </highlight-code>
47
+
48
+ <p>Or we can simply hide the skeleton, using the <span class="highlight">hidden</span> property.</p>
49
+
50
+ <highlight-code type="html" >
51
+ <!-- Before -->
52
+ <div class="skeleton" role="img" aria-label="loading" style="width: 200px;">
53
+ <div class="skeleton__button"></div>
54
+ </div>
55
+
56
+ <!-- After -->
57
+ <div class="skeleton" role="img" aria-label="loading" style="width: 200px;" hidden>
58
+ <div class="skeleton__button"></div>
59
+ </div>
60
+ <div>
61
+ <p>content</p>
62
+ </div>
63
+ </highlight-code>
64
+
65
+ <p>Notice that JavaScript also gives us the ability to add and remove ARIA roles, properties and states.</p>
66
+
67
+ <hr />
68
+
69
+ <h2 id="scenarios">Page Loading Scenarios</h2>
70
+ <p>For the purposes of keeping examples simple, we use a basic blog page template for conveying common loading techniques. In reality, blogs by their nature should be highly performant (i.e. fetching cached, static content) and would not require any kind of asyncronous rendering or skeleton placeholders. Please keep this in mind and think very carefully about whether your type of page and architecture actually requires the technical overhead of skeletons or not.</p>
71
+
72
+ <p>We consider 4 main scenarios for how a full page may be constructed:</p>
73
+ <ol>
74
+ <li>Buffered (default)</li>
75
+ <li>Client-Side Rendered (SPA)</li>
76
+ <li>In-Order Streaming (Progressive Rendering)</li>
77
+ <li>Out of Order Streaming</li>
78
+ </ol>
79
+
80
+ <p>Of course this is not the whole story! After the page has been loaded, users may interact with components that trigger <a href="#scenario-5">partial page updates</a>, in which case skeleton placeholders may also be utilized.</p>
81
+
82
+ <h3 id="scenario-1">Scenario 1: Buffered Rendering</h3>
83
+ <p>With buffered rendering (the default manner in which web pages are loaded) the client waits for the entire HTML to be sent by the server before rendering. Therefore, in this scenario, there is no opportunity to display skeleton placeholders, because the content arrives all at once (one caveat would be a SPA, which we cover in the next section).</p>
84
+
85
+ <h4>The Empty Screen</h4>
86
+ <p>This example simulates the delay (set to 3 seconds) and empty screen while the client waits for the entire HTML payload from the server.</p>
87
+ <p><a href="../examples/buffered/example-1/">View Example</a></p>
88
+ <p>For many types of web site, so long as the delay is not too long, this empty screen can be a perfectly acceptable user experience and no further optimizations or skeletons are necessary.</p>
89
+
90
+ <hr />
91
+
92
+ <h3 id="scenario-2">Scenario 2: Client Side Rendering (SPA)</h3>
93
+ <p>A buffered page load can however be the starting point for a non-isomorphic client-side app, i.e. if the server sends a single script tag as the app entry point. The JavaScript app could then leverage skeletons as content placeholders.</p>
94
+ <p>Fully client-side rendered JavaScript applications (i.e. SPAs) such as this are currently out of scope for this documentation. We may add updates in the future. In general though, many of the concepts of <a href="#scenario-4">out-of-order streaming</a> will apply.</p>
95
+
96
+ <hr />
97
+
98
+ <h3 id="scenario-3">Scenario 3: In-Order Streaming (Progressive Rendering)</h3>
99
+ <p>In contrast to buffered rendering, progressive rendering does not have to wait for the entire HTML to arrive from the server. The client receives the HTML in chunks, allowing critical above-the-fold content to be displayed first, meaning less time staring at an empty white screen. For the vast majority of pages using progressive rendering, skeleton placeholders will be unneccessary, as the nature and speed in which content is streamed is a sufficient UX improvement over the "white screen" encountered with buffered rendering.</p>
100
+ <p>The CSS <span class="highlight">:empty</span> technique is highly efficient for this scenario and basic skeleton orchestration. Any kind of complex skeleton orchestration would be better left to <a href="#scenario-4">out-of-order streaming</a>. Remember also, that our Skin skeleton classes cannot be leveraged with this technique; therefore the developer must construct skeletons with their own custom CSS.</p>
101
+ <p>In all examples below we utilize client-side JavaScript to simulate how a server might stream the HTML in chunks to the client.</p>
102
+
103
+ <h4>One Column with Empty Space</h4>
104
+ <p>Our first progressive rendering example shows how the main article content might be streamed in after the main navigation and featured articles.</p>
105
+ <p><a href="../examples/in-order/example-1a/">View Example</a></p>
106
+ <p>We have added a 3 second delay in order to simulate a service that is slow to fetch the main content. Remember, this is a highly contrived use case! No web site should be taking that long to retrieve static content and therefore would never require a skeleton!</p>
107
+
108
+ <h4>One Column with Skeleton</h4>
109
+ <p>Now let's add a skeleton placeholder for the main content. Using progressive rendering we stream an opening div tag to the client, and while the server works on getting the next chunk ready, the element will match the CSS :empty rule.</p>
110
+ <p><a href="../examples/in-order/example-1b/">View Example</a></p>
111
+ <p>Okay, that was easy, our white space has been replaced with a skeleton while we wait for the next chunk to arrive. But what about when we have two columns?</p>
112
+
113
+ <h4>Two Columns with Empty Space</h4>
114
+ <p>To keep things simple lets assume the second column is also static content that will be quickly flushed from the server.</p>
115
+ <p><a href="../examples/in-order/example-2a/">View Example</a></p>
116
+ <p>The goal of a skeleton is to replace empty space with a placeholder graphic giving a rough approximation of the content and layout to come. Lets see if we can update our skeleton to show two columns instead of just one.</p>
117
+
118
+ <h4>Two Columns with Skeleton</h4>
119
+ <p>Our main column and side column are siblings elements, so we cannot start the side column element without flushing and closing the main column element that precedes it. This means we cannot have an :empty main column and an :empty side column simultaneously.</p>
120
+ <p>With some clever CSS we can create a single background image graphic representing a two column layout on the :empty main column.</p>
121
+ <p><a href="../examples/in-order/example-2b/">View Example</a></p>
122
+ <p>This might be satisfactory in some cases, but what if we want to show the main content without waiting for the side column to be flushed (the side content may be a slow service also)? What about responsive design? How will our two column skeleton respond at various breakpoints?</p>
123
+ <p>At this point we start to see that choreographing more than one skeleton placeholder with in-order streaming can become quite tricky. When we have more than one slow service, and a need for multiple skeleton placeholders, it is time to think about out-of-order streaming, which can eliminate these choreography concerns, but on the flipside has the potential to introduce the dreaded layout shift. Read on to find out more.</p>
124
+
125
+ <hr />
126
+
127
+ <h3 id="scenario-4">Scenario 4: Out-of-Order Streaming</h3>
128
+ <p>Out-of-order streaming allows chunks of page content to arrive in any order, e.g. the server could send the chunk for the side column before the chunk for the main column. This technique does require some client-side JavaScript to re-assemble the DOM in the correct order as pieces arrive.</p>
129
+ <p>Out-of-order streaming also has parallels with client-side rendered SPAs, as those apps might typically render content based on the order in which their fetch requests come in.</p>
130
+ <p>In all examples below we utilize client-side JavaScript to simulate an out-of-order streaming experience.</p>
131
+
132
+ <h4>Layout Shift</h4>
133
+ <p>With our in-order streaming examples, the appereance of new content was always <em>appended</em>, therefore never caused existing content or layout to move. Let's see what happens when we stream in our main content, side column and footer out of order.</p>
134
+ <p><a href="../examples/out-of-order/example-1/">View Example</a></p>
135
+ <p>As the content is loading, try clicking on the link in the footer. Now imagine if it were an "Add to Cart" or "Buy Now" button and how infuriating that would be. Imagine being a keyboard user, and the element with keyboard focus being pushed down the page out of view</p>
136
+ <p>So, while getting content to the user faster always sounds like a good idea in theory, this example showcases how it can cause some unintended consequences and a poor UX.</p>
137
+ <p>The good news is that skeletons, under certain conditions, have the ability to mitigate or mask entirely the problems associated with content arriving out-of-order.</p>
138
+
139
+ <h4>Reserving Space</h4>
140
+ <p>Skeletons can prevent the layout shift associated with out-of-order streaming by reserving the physical space for that content.</p>
141
+ <p><a href="../examples/out-of-order/example-2/">View Example</a></p>
142
+ <p>The physical dimensions of the reserved space must be known ahead of time. When skeletons reserve the right amount of space, they will prevent layout from shifting. When they reserve too much or too little, layout will shift.</p>
143
+ <p>For some kinds of content, we can be sure of the physical dimensions ahead of time, images, videos, carousels, for example. For text however, we can only approximate in most cases, and therefore blocks of text make poor candidates for skeletons.</p>
144
+
145
+ <h4>Skeleton-itis</h4>
146
+ <p>With in order streaming and the :empty technique, it is not possible to display more than one skeleton concurrently. With out-of-order streaming, this restriction is lifted. This is both a good and a bad thing.</p>
147
+ <p>Let's see what happens when we create skeletons for all main page sections.</p>
148
+ <p><a href="../examples/out-of-order/example-3/">View Example</a></p>
149
+ <p>Compare this with our <a href="../examples/out-of-order/example-2/">previous example</a> or <a href="../examples/in-order/example-2b/">In-Order streaming</a>. The wait time for the main content is the same, but without any shift or flashing in-and-out of skeletons. Most web pages should not have a 1:1 mapping of page sections to skeletons!</p>
150
+
151
+ <h4>Out-of-order Placeholders Only</h4>
152
+ <p>Perhaps there is a compromise? We have established that to avoid unexpected layout shift, skeletons must reserve exactly the same amount of space as the content. The exception to this rule is if the skeleton and its content is appended to the page.</p>
153
+ <p>Out-of-order streaming allows us to lay down our placeholders all at the same time and reserve space <em>without</em> waiting for the rest of the page. We can then sequence the streaming in a way that only ever appends the content.</p>
154
+ <p><a href="../examples/out-of-order/example-4/">View Example</a></p>
155
+ <p>While this might seem to defeat the purpose of out-of-order streaming (i.e. getting content onscreen quicker, regardless of its position) this does provide us with one method of tackling undesired layout shift and gaining some of the perceived performance increase of skeletons.</p>
156
+
157
+ <hr />
158
+
159
+ <h3 id="scenario-5">Scenario 5: Partial Page Updates</h3>
160
+ <p>So far, our emphasis has been on the initial page load, but skeletons are also useful (perhaps even more so) for partial page updates, i.e. when a user interface component triggers a request for additional content from the server.</p>
161
+ <p>Two common examples are loading in more content to any section of the page (e.g. a "see more" button) and refreshing the content of a section (e.g. by changing a search filter).</p>
162
+ <p>It is important to note that any layout shift that happens <strong>immediately</strong> upon click of a button would not be classed as unexpected. However, if the layout shifts again, after some amount of time (i.e. after a wait for data to be fetched), then this would be classed as unexpected (because the user triggered that action). Again, skeletons can help in this scenario by reserving physical space until the actual content is ready.</p>
163
+
164
+ <h4>Load More - Unpredictable Size</h4>
165
+ <p>This example shows an initial expected layout shift upon clicking the load more button. After a 3 second wait we experience an unexpected layout shift (i.e. the button is shunted down the page) due to the skeletons not reserving the same amount of physical space as the content that is fetched.</p>
166
+ <p><a href="../examples/csr/example-1/">View Example</a></p>
167
+ <p>Each item that is loaded has an arbitrary amount of text. How could we make it less arbitrary and more predictable?</p>
168
+
169
+ <h4>Load More - Predictable Size</h4>
170
+ <p>One way to make content length less arbitrary is via text truncation. In this example the content has been truncated to two lines, meaning we can be more sure about the physical space that needs to be reserved by the skeleton.</p>
171
+ <p><a href="../examples/csr/example-2/">View Example</a></p>
172
+ <p>Again though it is worth remembering, working with text is far less predictable than with images, video and the like. The more predictable the type of content and its size and shape, the better skeletons will work to mitigate layout shift.</p>
173
+
174
+ <h4>Refreshing Content</h4>
175
+ <p>In addition to adding more content to any section of the page, another common scenario is to refresh the content of an existing area of the page. For example, paginating to the next set of results, or refreshing a set of thumbnail images.</p>
176
+ <p>Just as with loading more content, refreshing a section of content can fall afoul of layout shift if the content size is <a href="../examples/csr/example-3/">unpredictable</a>. Again the situation can be avoided with <a href="../examples/csr/example-4/">predictable</a> content size.</p>