@0001-labs/design-system-1 0.3.0-alpha.13 → 0.3.0-alpha.15

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 (722) hide show
  1. package/DS1/0-face/calendar.ts +194 -0
  2. package/DS1/0-face/carousel.ts +623 -0
  3. package/DS1/0-face/component-visibility.ts +14 -0
  4. package/DS1/0-face/copy-text.ts +96 -0
  5. package/DS1/0-face/device.ts +8 -58
  6. package/DS1/0-face/dialog-swipe.ts +249 -0
  7. package/DS1/0-face/dialogs.ts +208 -0
  8. package/DS1/0-face/drawer.ts +258 -0
  9. package/DS1/0-face/feedback-words.ts +36 -0
  10. package/DS1/0-face/feedback.ts +40 -0
  11. package/DS1/0-face/format.ts +700 -0
  12. package/DS1/0-face/generated/toast-assets.ts +18 -0
  13. package/DS1/0-face/grid-fit.ts +1 -1
  14. package/DS1/0-face/grid.ts +3 -2
  15. package/DS1/0-face/header.ts +78 -0
  16. package/DS1/0-face/i18n.ts +93 -18
  17. package/DS1/0-face/keys.ts +276 -0
  18. package/DS1/0-face/languages.ts +4 -4
  19. package/DS1/0-face/layout-inspector.ts +6 -6
  20. package/DS1/0-face/library-styles.ts +33 -0
  21. package/DS1/0-face/load-toaster.ts +7 -0
  22. package/DS1/0-face/preference-options.ts +29 -0
  23. package/DS1/0-face/preferences.ts +3 -11
  24. package/DS1/0-face/pricing.ts +98 -43
  25. package/DS1/0-face/scaling.ts +160 -4
  26. package/DS1/0-face/shared-words.ts +9 -4
  27. package/DS1/0-face/sidebar.ts +201 -0
  28. package/DS1/0-face/theme-bootstrap.js +184 -0
  29. package/DS1/0-face/theme.ts +89 -47
  30. package/DS1/0-face/toast-queue.ts +157 -0
  31. package/DS1/0-face/toaster.ts +384 -0
  32. package/DS1/0-face/tooltips.ts +157 -15
  33. package/DS1/0-face/translations/da.json +60 -1
  34. package/DS1/0-face/translations/de.json +60 -1
  35. package/DS1/0-face/translations/en.json +60 -1
  36. package/DS1/0-face/translations/es.json +60 -1
  37. package/DS1/0-face/translations/fi.json +60 -1
  38. package/DS1/0-face/translations/fr.json +60 -1
  39. package/DS1/0-face/translations/is.json +60 -1
  40. package/DS1/0-face/translations/it.json +60 -1
  41. package/DS1/0-face/translations/ja.json +60 -1
  42. package/DS1/0-face/translations/ko.json +60 -1
  43. package/DS1/0-face/translations/nb.json +60 -1
  44. package/DS1/0-face/translations/pt-BR.json +60 -1
  45. package/DS1/0-face/translations/pt.json +60 -1
  46. package/DS1/0-face/translations/sv.json +60 -1
  47. package/DS1/0-face/translations/zh.json +60 -1
  48. package/DS1/0-face/translations-format.ts +3 -4
  49. package/DS1/1-root/card.css +192 -0
  50. package/DS1/1-root/carousel.css +136 -0
  51. package/DS1/1-root/cjk.css +23 -0
  52. package/DS1/1-root/component-metrics.css +1 -0
  53. package/DS1/1-root/component-tokens.css +51 -8
  54. package/DS1/1-root/controls.css +891 -14
  55. package/DS1/1-root/dialog-placement.css +191 -0
  56. package/DS1/1-root/document.css +183 -0
  57. package/DS1/1-root/drawer.css +83 -0
  58. package/DS1/1-root/empty.css +83 -0
  59. package/DS1/1-root/figures.css +141 -0
  60. package/DS1/1-root/fonts/Iosevka-LICENSE.md +3 -1
  61. package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
  62. package/DS1/1-root/fonts.css +69 -0
  63. package/DS1/1-root/footer.css +186 -0
  64. package/DS1/1-root/header.css +165 -0
  65. package/DS1/1-root/library-tokens.ts +91 -0
  66. package/DS1/1-root/measures.ts +53 -0
  67. package/DS1/1-root/notice.css +165 -0
  68. package/DS1/1-root/one.css +14 -84
  69. package/DS1/1-root/one.semantic.css +200 -148
  70. package/DS1/1-root/palette.css +58 -0
  71. package/DS1/1-root/palette.ts +19 -0
  72. package/DS1/1-root/progress.css +356 -0
  73. package/DS1/1-root/prose.css +202 -0
  74. package/DS1/1-root/row.css +300 -0
  75. package/DS1/1-root/table.css +111 -0
  76. package/DS1/1-root/text.css +70 -0
  77. package/DS1/2-core/button-split.ts +55 -0
  78. package/DS1/2-core/chart/chart.css +169 -0
  79. package/DS1/2-core/chart/grid-chart.ts +554 -0
  80. package/DS1/2-core/ds-avatar.ts +25 -6
  81. package/DS1/2-core/ds-badge.ts +10 -10
  82. package/DS1/2-core/ds-button.ts +111 -26
  83. package/DS1/2-core/ds-card.ts +135 -105
  84. package/DS1/2-core/ds-chart.ts +327 -0
  85. package/DS1/2-core/ds-composer.ts +8 -2
  86. package/DS1/2-core/ds-cycle.ts +97 -21
  87. package/DS1/2-core/ds-empty.ts +120 -0
  88. package/DS1/2-core/ds-icon.ts +11 -2
  89. package/DS1/2-core/ds-input.ts +165 -6
  90. package/DS1/2-core/ds-message.ts +218 -0
  91. package/DS1/2-core/ds-notice.ts +10 -0
  92. package/DS1/2-core/ds-progress.ts +380 -0
  93. package/DS1/2-core/ds-stat.ts +174 -0
  94. package/DS1/2-core/ds-switch.ts +1 -0
  95. package/DS1/2-core/ds-text.ts +15 -2
  96. package/DS1/2-core/ds-toast.ts +354 -0
  97. package/DS1/2-core/figures.ts +105 -0
  98. package/DS1/2-core/generated/ds-icon-map.ts +238 -128
  99. package/DS1/2-core/generated/icon-avatar.ts +2 -0
  100. package/DS1/2-core/generated/icons-extra.ts +120 -65
  101. package/DS1/2-core/generated/icons-immediate.ts +1 -1
  102. package/DS1/2-core/styles/ds-avatar.css +9 -8
  103. package/DS1/2-core/styles/ds-button-host.css +26 -3
  104. package/DS1/2-core/styles/ds-button-split.css +67 -0
  105. package/DS1/2-core/styles/ds-button.css +49 -15
  106. package/DS1/2-core/styles/ds-card.css +34 -0
  107. package/DS1/2-core/styles/ds-composer.css +13 -0
  108. package/DS1/2-core/styles/ds-cycle.css +10 -0
  109. package/DS1/2-core/styles/ds-empty.css +18 -0
  110. package/DS1/2-core/styles/ds-gap.css +1 -0
  111. package/DS1/2-core/styles/ds-icon.css +1 -0
  112. package/DS1/2-core/styles/ds-input.css +59 -6
  113. package/DS1/2-core/styles/ds-notice.css +32 -0
  114. package/DS1/2-core/styles/ds-progress.css +25 -0
  115. package/DS1/2-core/styles/ds-select.css +2 -2
  116. package/DS1/2-core/styles/ds-split.css +2 -62
  117. package/DS1/2-core/styles/ds-stat.css +34 -0
  118. package/DS1/2-core/styles/ds-switch.css +16 -1
  119. package/DS1/2-core/styles/ds-text.css +43 -12
  120. package/DS1/2-core/styles/ds-toast.css +182 -0
  121. package/DS1/2-core/styles/ds-tooltip.css +1 -0
  122. package/DS1/3-unit/calendar-base.ts +263 -0
  123. package/DS1/3-unit/ds-accordion.ts +9 -1
  124. package/DS1/3-unit/ds-avatar-group.ts +1 -0
  125. package/DS1/3-unit/ds-calendar-large.ts +349 -0
  126. package/DS1/3-unit/ds-calendar.ts +344 -0
  127. package/DS1/3-unit/ds-carousel.ts +368 -0
  128. package/DS1/3-unit/ds-date-picker.ts +540 -0
  129. package/DS1/3-unit/ds-form.ts +45 -37
  130. package/DS1/3-unit/ds-list.ts +48 -1
  131. package/DS1/3-unit/ds-matrix.ts +318 -0
  132. package/DS1/3-unit/ds-menu.ts +8 -4
  133. package/DS1/3-unit/ds-row.ts +84 -1
  134. package/DS1/3-unit/ds-sidebar.ts +366 -0
  135. package/DS1/3-unit/ds-table.ts +75 -34
  136. package/DS1/3-unit/styles/ds-accordion.css +1 -0
  137. package/DS1/3-unit/styles/ds-avatar-group.css +2 -4
  138. package/DS1/3-unit/styles/ds-calendar-large.css +165 -0
  139. package/DS1/3-unit/styles/ds-calendar.css +238 -0
  140. package/DS1/3-unit/styles/ds-carousel.css +30 -0
  141. package/DS1/3-unit/styles/ds-date-picker.css +124 -0
  142. package/DS1/3-unit/styles/ds-list.css +1 -0
  143. package/DS1/3-unit/styles/ds-matrix.css +203 -0
  144. package/DS1/3-unit/styles/ds-menu.css +31 -6
  145. package/DS1/3-unit/styles/ds-row.css +84 -2
  146. package/DS1/3-unit/styles/ds-sidebar.css +134 -0
  147. package/DS1/3-unit/styles/ds-table.css +3 -74
  148. package/DS1/4-page/ds-dialog.ts +40 -4
  149. package/DS1/4-page/ds-document.ts +240 -0
  150. package/DS1/4-page/ds-footer.ts +165 -0
  151. package/DS1/4-page/ds-grid.ts +39 -59
  152. package/DS1/4-page/ds-header.ts +171 -0
  153. package/DS1/4-page/ds-page.ts +184 -0
  154. package/DS1/4-page/email.ts +2 -3
  155. package/DS1/4-page/styles/ds-container.css +1 -0
  156. package/DS1/4-page/styles/ds-document.css +18 -0
  157. package/DS1/4-page/styles/ds-footer.css +29 -0
  158. package/DS1/4-page/styles/ds-grid.css +31 -85
  159. package/DS1/4-page/styles/ds-header.css +57 -0
  160. package/DS1/4-page/styles/ds-page.css +214 -0
  161. package/DS1/components.ts +7 -1
  162. package/DS1/index.ts +24 -6
  163. package/DS1/react/avatar.ts +4 -5
  164. package/DS1/react/button-split.ts +29 -0
  165. package/DS1/react/button.ts +32 -13
  166. package/DS1/react/carousel.ts +76 -0
  167. package/DS1/react/dialog.ts +36 -5
  168. package/DS1/react/document.ts +14 -0
  169. package/DS1/react/empty.ts +32 -0
  170. package/DS1/react/footer.ts +17 -0
  171. package/DS1/react/header.ts +15 -0
  172. package/DS1/react/input.ts +28 -17
  173. package/DS1/react/message.ts +73 -0
  174. package/DS1/react/notice.ts +59 -0
  175. package/DS1/react/page.ts +13 -0
  176. package/DS1/react/progress.ts +99 -0
  177. package/DS1/react/sidebar.ts +71 -0
  178. package/DS1/react/stat.ts +73 -0
  179. package/DS1/react/toast.ts +82 -0
  180. package/DS1/x-icon/Tabler-LICENSE.md +27 -0
  181. package/DS1/x-icon/airtable.svg +5 -0
  182. package/DS1/x-icon/attach.svg +3 -0
  183. package/DS1/x-icon/audio.svg +3 -0
  184. package/DS1/x-icon/bag-alt.svg +3 -0
  185. package/DS1/x-icon/bank.svg +3 -0
  186. package/DS1/x-icon/banknote.svg +3 -0
  187. package/DS1/x-icon/bolt.svg +3 -0
  188. package/DS1/x-icon/book-alt.svg +3 -0
  189. package/DS1/x-icon/book.svg +4 -0
  190. package/DS1/x-icon/box.svg +3 -0
  191. package/DS1/x-icon/briefcase.svg +3 -0
  192. package/DS1/x-icon/building.svg +4 -0
  193. package/DS1/x-icon/car.svg +3 -0
  194. package/DS1/x-icon/card.svg +3 -0
  195. package/DS1/x-icon/cart.svg +3 -0
  196. package/DS1/x-icon/{ezo-android-screen-stats.svg → chevron-down.svg} +1 -1
  197. package/DS1/x-icon/{ezo-item-button-start.svg → chevron-left.svg} +1 -1
  198. package/DS1/x-icon/{ezo-android-screen-lists.svg → chevron-right.svg} +1 -1
  199. package/DS1/x-icon/{ezo-item-button-reopen.svg → chevron-up.svg} +1 -1
  200. package/DS1/x-icon/cloud.svg +3 -0
  201. package/DS1/x-icon/coffee.svg +3 -0
  202. package/DS1/x-icon/coins.svg +3 -0
  203. package/DS1/x-icon/cursor.svg +3 -0
  204. package/DS1/x-icon/curve.svg +7 -0
  205. package/DS1/x-icon/dislike.svg +4 -0
  206. package/DS1/x-icon/dot-bank.svg +3 -0
  207. package/DS1/x-icon/dot-banknote.svg +3 -0
  208. package/DS1/x-icon/dot-banknotes.svg +3 -0
  209. package/DS1/x-icon/dot-card.svg +3 -0
  210. package/DS1/x-icon/dot-coin.svg +3 -0
  211. package/DS1/x-icon/dot-coins.svg +3 -0
  212. package/DS1/x-icon/dot-receipt.svg +3 -0
  213. package/DS1/x-icon/dot-safe.svg +3 -0
  214. package/DS1/x-icon/dot-transfer.svg +3 -0
  215. package/DS1/x-icon/dot-wallet.svg +3 -0
  216. package/DS1/x-icon/download.svg +4 -0
  217. package/DS1/x-icon/drive.svg +5 -0
  218. package/DS1/x-icon/drop.svg +3 -0
  219. package/DS1/x-icon/dropbox.svg +3 -0
  220. package/DS1/x-icon/dumbbell.svg +3 -0
  221. package/DS1/x-icon/eye-off.svg +3 -0
  222. package/DS1/x-icon/eye.svg +3 -0
  223. package/DS1/x-icon/facebook.svg +3 -0
  224. package/DS1/x-icon/figma.svg +5 -0
  225. package/DS1/x-icon/flame.svg +3 -0
  226. package/DS1/x-icon/flip.svg +5 -0
  227. package/DS1/x-icon/food.svg +3 -0
  228. package/DS1/x-icon/fuel.svg +3 -0
  229. package/DS1/x-icon/game.svg +3 -0
  230. package/DS1/x-icon/gift.svg +3 -0
  231. package/DS1/x-icon/github.svg +3 -0
  232. package/DS1/x-icon/heart.svg +3 -0
  233. package/DS1/x-icon/history.svg +3 -0
  234. package/DS1/x-icon/home-alt.svg +3 -0
  235. package/DS1/x-icon/income.svg +3 -0
  236. package/DS1/x-icon/info.svg +5 -0
  237. package/DS1/x-icon/instagram.svg +5 -0
  238. package/DS1/x-icon/jpbank.svg +3 -0
  239. package/DS1/x-icon/key.svg +4 -0
  240. package/DS1/x-icon/keyboard.svg +3 -0
  241. package/DS1/x-icon/like.svg +4 -0
  242. package/DS1/x-icon/linkedin.svg +7 -0
  243. package/DS1/x-icon/loom.svg +6 -0
  244. package/DS1/x-icon/map.svg +4 -0
  245. package/DS1/x-icon/medical.svg +3 -0
  246. package/DS1/x-icon/minus.svg +3 -0
  247. package/DS1/x-icon/moon.svg +3 -0
  248. package/DS1/x-icon/move.svg +3 -0
  249. package/DS1/x-icon/music-alt.svg +3 -0
  250. package/DS1/x-icon/music.svg +5 -0
  251. package/DS1/x-icon/notion.svg +6 -0
  252. package/DS1/x-icon/offline.svg +3 -0
  253. package/DS1/x-icon/pause.svg +4 -0
  254. package/DS1/x-icon/paw.svg +3 -0
  255. package/DS1/x-icon/pdf.svg +3 -0
  256. package/DS1/x-icon/people.svg +5 -0
  257. package/DS1/x-icon/percent.svg +3 -0
  258. package/DS1/x-icon/phone.svg +3 -0
  259. package/DS1/x-icon/pill.svg +3 -0
  260. package/DS1/x-icon/plane.svg +3 -0
  261. package/DS1/x-icon/postal.svg +3 -0
  262. package/DS1/x-icon/present.svg +4 -0
  263. package/DS1/x-icon/reaction.svg +5 -0
  264. package/DS1/x-icon/receipt.svg +3 -0
  265. package/DS1/x-icon/refresh.svg +3 -0
  266. package/DS1/x-icon/refund.svg +3 -0
  267. package/DS1/x-icon/repeat.svg +3 -0
  268. package/DS1/x-icon/rotate.svg +4 -0
  269. package/DS1/x-icon/safe.svg +3 -0
  270. package/DS1/x-icon/school-alt.svg +3 -0
  271. package/DS1/x-icon/shield-alt.svg +3 -0
  272. package/DS1/x-icon/shield.svg +4 -0
  273. package/DS1/x-icon/shirt.svg +3 -0
  274. package/DS1/x-icon/shop.svg +3 -0
  275. package/DS1/x-icon/sign-in.svg +3 -0
  276. package/DS1/x-icon/sign-out.svg +3 -0
  277. package/DS1/x-icon/slack.svg +6 -0
  278. package/DS1/x-icon/sparkle.svg +3 -0
  279. package/DS1/x-icon/start.svg +4 -0
  280. package/DS1/x-icon/stop.svg +3 -0
  281. package/DS1/x-icon/sun.svg +3 -0
  282. package/DS1/x-icon/system.svg +4 -0
  283. package/DS1/x-icon/tag.svg +3 -0
  284. package/DS1/x-icon/ticket.svg +3 -0
  285. package/DS1/x-icon/title-struck.svg +4 -0
  286. package/DS1/x-icon/train.svg +3 -0
  287. package/DS1/x-icon/transfer.svg +3 -0
  288. package/DS1/x-icon/tv.svg +3 -0
  289. package/DS1/x-icon/upload.svg +4 -0
  290. package/DS1/x-icon/video.svg +4 -0
  291. package/DS1/x-icon/vimeo.svg +3 -0
  292. package/DS1/x-icon/wallet.svg +3 -0
  293. package/DS1/x-icon/wifi.svg +3 -0
  294. package/DS1/x-icon/window.svg +4 -0
  295. package/DS1/x-icon/wrench.svg +3 -0
  296. package/DS1/x-icon/x-brand.svg +4 -0
  297. package/DS1/x-icon/youtube.svg +4 -0
  298. package/README.md +3 -3
  299. package/dist/0-face/calendar.d.ts +75 -0
  300. package/dist/0-face/calendar.d.ts.map +1 -0
  301. package/dist/0-face/calendar.js +149 -0
  302. package/dist/0-face/carousel.d.ts +174 -0
  303. package/dist/0-face/carousel.d.ts.map +1 -0
  304. package/dist/0-face/carousel.js +583 -0
  305. package/dist/0-face/component-visibility.d.ts +7 -0
  306. package/dist/0-face/component-visibility.d.ts.map +1 -0
  307. package/dist/0-face/component-visibility.js +11 -0
  308. package/dist/0-face/copy-text.d.ts +11 -0
  309. package/dist/0-face/copy-text.d.ts.map +1 -0
  310. package/dist/0-face/copy-text.js +97 -0
  311. package/dist/0-face/device.d.ts +3 -7
  312. package/dist/0-face/device.d.ts.map +1 -1
  313. package/dist/0-face/device.js +7 -41
  314. package/dist/0-face/dialog-swipe.d.ts +49 -0
  315. package/dist/0-face/dialog-swipe.d.ts.map +1 -0
  316. package/dist/0-face/dialog-swipe.js +239 -0
  317. package/dist/0-face/dialogs.d.ts +33 -0
  318. package/dist/0-face/dialogs.d.ts.map +1 -0
  319. package/dist/0-face/dialogs.js +173 -0
  320. package/dist/0-face/drawer.d.ts +64 -0
  321. package/dist/0-face/drawer.d.ts.map +1 -0
  322. package/dist/0-face/drawer.js +256 -0
  323. package/dist/0-face/feedback-words.d.ts +21 -0
  324. package/dist/0-face/feedback-words.d.ts.map +1 -0
  325. package/dist/0-face/feedback-words.js +30 -0
  326. package/dist/0-face/feedback.d.ts +41 -0
  327. package/dist/0-face/feedback.d.ts.map +1 -0
  328. package/dist/0-face/feedback.js +35 -0
  329. package/dist/0-face/format.d.ts +166 -0
  330. package/dist/0-face/format.d.ts.map +1 -0
  331. package/dist/0-face/format.js +445 -0
  332. package/dist/0-face/generated/toast-assets.d.ts +11 -0
  333. package/dist/0-face/generated/toast-assets.d.ts.map +1 -0
  334. package/dist/0-face/generated/toast-assets.js +14 -0
  335. package/dist/0-face/grid-fit.js +1 -1
  336. package/dist/0-face/grid.d.ts.map +1 -1
  337. package/dist/0-face/grid.js +2 -1
  338. package/dist/0-face/header.d.ts +38 -0
  339. package/dist/0-face/header.d.ts.map +1 -0
  340. package/dist/0-face/header.js +80 -0
  341. package/dist/0-face/i18n.d.ts +32 -2
  342. package/dist/0-face/i18n.d.ts.map +1 -1
  343. package/dist/0-face/i18n.js +65 -19
  344. package/dist/0-face/keys.d.ts +104 -0
  345. package/dist/0-face/keys.d.ts.map +1 -0
  346. package/dist/0-face/keys.js +253 -0
  347. package/dist/0-face/languages.d.ts +2 -2
  348. package/dist/0-face/languages.js +3 -3
  349. package/dist/0-face/layout-inspector.js +6 -6
  350. package/dist/0-face/library-styles.d.ts +7 -0
  351. package/dist/0-face/library-styles.d.ts.map +1 -0
  352. package/dist/0-face/library-styles.js +29 -0
  353. package/dist/0-face/load-toaster.d.ts +8 -0
  354. package/dist/0-face/load-toaster.d.ts.map +1 -0
  355. package/dist/0-face/load-toaster.js +7 -0
  356. package/dist/0-face/preference-options.d.ts +34 -0
  357. package/dist/0-face/preference-options.d.ts.map +1 -0
  358. package/dist/0-face/preference-options.js +1 -0
  359. package/dist/0-face/preferences.d.ts +3 -12
  360. package/dist/0-face/preferences.d.ts.map +1 -1
  361. package/dist/0-face/pricing.d.ts +19 -9
  362. package/dist/0-face/pricing.d.ts.map +1 -1
  363. package/dist/0-face/pricing.js +81 -40
  364. package/dist/0-face/scaling.d.ts +71 -1
  365. package/dist/0-face/scaling.d.ts.map +1 -1
  366. package/dist/0-face/scaling.js +108 -3
  367. package/dist/0-face/shared-words.d.ts +9 -4
  368. package/dist/0-face/shared-words.d.ts.map +1 -1
  369. package/dist/0-face/sidebar.d.ts +69 -0
  370. package/dist/0-face/sidebar.d.ts.map +1 -0
  371. package/dist/0-face/sidebar.js +191 -0
  372. package/dist/0-face/theme-bootstrap.d.ts +1 -0
  373. package/dist/0-face/theme-bootstrap.d.ts.map +1 -0
  374. package/dist/0-face/theme-bootstrap.js +214 -0
  375. package/dist/0-face/theme.d.ts +32 -0
  376. package/dist/0-face/theme.d.ts.map +1 -1
  377. package/dist/0-face/theme.js +69 -43
  378. package/dist/0-face/toast-queue.d.ts +110 -0
  379. package/dist/0-face/toast-queue.d.ts.map +1 -0
  380. package/dist/0-face/toast-queue.js +98 -0
  381. package/dist/0-face/toaster.d.ts +27 -0
  382. package/dist/0-face/toaster.d.ts.map +1 -0
  383. package/dist/0-face/toaster.js +373 -0
  384. package/dist/0-face/tooltips.d.ts +24 -1
  385. package/dist/0-face/tooltips.d.ts.map +1 -1
  386. package/dist/0-face/tooltips.js +155 -16
  387. package/dist/0-face/translations/da.json +60 -1
  388. package/dist/0-face/translations/de.json +60 -1
  389. package/dist/0-face/translations/en.json +60 -1
  390. package/dist/0-face/translations/es.json +60 -1
  391. package/dist/0-face/translations/fi.json +60 -1
  392. package/dist/0-face/translations/fr.json +60 -1
  393. package/dist/0-face/translations/is.json +60 -1
  394. package/dist/0-face/translations/it.json +60 -1
  395. package/dist/0-face/translations/ja.json +60 -1
  396. package/dist/0-face/translations/ko.json +60 -1
  397. package/dist/0-face/translations/nb.json +60 -1
  398. package/dist/0-face/translations/pt-BR.json +60 -1
  399. package/dist/0-face/translations/pt.json +60 -1
  400. package/dist/0-face/translations/sv.json +60 -1
  401. package/dist/0-face/translations/zh.json +60 -1
  402. package/dist/0-face/translations-format.d.ts.map +1 -1
  403. package/dist/0-face/translations-format.js +3 -4
  404. package/dist/1-root/library-tokens.d.ts +31 -0
  405. package/dist/1-root/library-tokens.d.ts.map +1 -0
  406. package/dist/1-root/library-tokens.js +84 -0
  407. package/dist/1-root/measures.d.ts +52 -0
  408. package/dist/1-root/measures.d.ts.map +1 -0
  409. package/dist/1-root/measures.js +49 -0
  410. package/dist/1-root/palette.d.ts +5 -0
  411. package/dist/1-root/palette.d.ts.map +1 -1
  412. package/dist/1-root/palette.js +18 -0
  413. package/dist/2-core/button-split.d.ts +21 -0
  414. package/dist/2-core/button-split.d.ts.map +1 -0
  415. package/dist/2-core/button-split.js +48 -0
  416. package/dist/2-core/chart/grid-chart.d.ts +113 -0
  417. package/dist/2-core/chart/grid-chart.d.ts.map +1 -0
  418. package/dist/2-core/chart/grid-chart.js +466 -0
  419. package/dist/2-core/ds-avatar.d.ts +20 -3
  420. package/dist/2-core/ds-avatar.d.ts.map +1 -1
  421. package/dist/2-core/ds-avatar.js +19 -5
  422. package/dist/2-core/ds-badge.js +10 -13
  423. package/dist/2-core/ds-button.d.ts +76 -0
  424. package/dist/2-core/ds-button.d.ts.map +1 -1
  425. package/dist/2-core/ds-button.js +101 -26
  426. package/dist/2-core/ds-card.d.ts +76 -11
  427. package/dist/2-core/ds-card.d.ts.map +1 -1
  428. package/dist/2-core/ds-card.js +129 -105
  429. package/dist/2-core/ds-chart.d.ts +105 -0
  430. package/dist/2-core/ds-chart.d.ts.map +1 -0
  431. package/dist/2-core/ds-chart.js +390 -0
  432. package/dist/2-core/ds-composer.d.ts +7 -0
  433. package/dist/2-core/ds-composer.d.ts.map +1 -1
  434. package/dist/2-core/ds-composer.js +1 -1
  435. package/dist/2-core/ds-cycle.d.ts +36 -2
  436. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  437. package/dist/2-core/ds-cycle.js +95 -18
  438. package/dist/2-core/ds-empty.d.ts +74 -0
  439. package/dist/2-core/ds-empty.d.ts.map +1 -0
  440. package/dist/2-core/ds-empty.js +96 -0
  441. package/dist/2-core/ds-icon.d.ts +6 -0
  442. package/dist/2-core/ds-icon.d.ts.map +1 -1
  443. package/dist/2-core/ds-icon.js +12 -2
  444. package/dist/2-core/ds-input.d.ts +39 -1
  445. package/dist/2-core/ds-input.d.ts.map +1 -1
  446. package/dist/2-core/ds-input.js +150 -6
  447. package/dist/2-core/ds-message.d.ts +154 -0
  448. package/dist/2-core/ds-message.d.ts.map +1 -0
  449. package/dist/2-core/ds-message.js +177 -0
  450. package/dist/2-core/ds-notice.d.ts +13 -0
  451. package/dist/2-core/ds-notice.d.ts.map +1 -0
  452. package/dist/2-core/ds-notice.js +11 -0
  453. package/dist/2-core/ds-progress.d.ts +200 -0
  454. package/dist/2-core/ds-progress.d.ts.map +1 -0
  455. package/dist/2-core/ds-progress.js +319 -0
  456. package/dist/2-core/ds-stat.d.ts +126 -0
  457. package/dist/2-core/ds-stat.d.ts.map +1 -0
  458. package/dist/2-core/ds-stat.js +137 -0
  459. package/dist/2-core/ds-switch.d.ts +1 -0
  460. package/dist/2-core/ds-switch.d.ts.map +1 -1
  461. package/dist/2-core/ds-switch.js +1 -0
  462. package/dist/2-core/ds-text.d.ts +15 -2
  463. package/dist/2-core/ds-text.d.ts.map +1 -1
  464. package/dist/2-core/ds-text.js +13 -0
  465. package/dist/2-core/ds-toast.d.ts +139 -0
  466. package/dist/2-core/ds-toast.d.ts.map +1 -0
  467. package/dist/2-core/ds-toast.js +329 -0
  468. package/dist/2-core/figures.d.ts +56 -0
  469. package/dist/2-core/figures.d.ts.map +1 -0
  470. package/dist/2-core/figures.js +70 -0
  471. package/dist/2-core/generated/ds-icon-map.d.ts +120 -65
  472. package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
  473. package/dist/2-core/generated/ds-icon-map.js +238 -128
  474. package/dist/2-core/generated/icon-avatar.d.ts +2 -0
  475. package/dist/2-core/generated/icon-avatar.d.ts.map +1 -0
  476. package/dist/2-core/generated/icon-avatar.js +2 -0
  477. package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
  478. package/dist/2-core/generated/icons-extra.js +120 -65
  479. package/dist/2-core/generated/icons-immediate.d.ts +1 -1
  480. package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
  481. package/dist/2-core/generated/icons-immediate.js +1 -1
  482. package/dist/3-unit/calendar-base.d.ts +149 -0
  483. package/dist/3-unit/calendar-base.d.ts.map +1 -0
  484. package/dist/3-unit/calendar-base.js +172 -0
  485. package/dist/3-unit/ds-accordion.d.ts +9 -0
  486. package/dist/3-unit/ds-accordion.d.ts.map +1 -1
  487. package/dist/3-unit/ds-accordion.js +7 -1
  488. package/dist/3-unit/ds-avatar-group.d.ts +1 -0
  489. package/dist/3-unit/ds-avatar-group.d.ts.map +1 -1
  490. package/dist/3-unit/ds-calendar-large.d.ts +138 -0
  491. package/dist/3-unit/ds-calendar-large.d.ts.map +1 -0
  492. package/dist/3-unit/ds-calendar-large.js +305 -0
  493. package/dist/3-unit/ds-calendar.d.ts +175 -0
  494. package/dist/3-unit/ds-calendar.d.ts.map +1 -0
  495. package/dist/3-unit/ds-calendar.js +303 -0
  496. package/dist/3-unit/ds-carousel.d.ts +182 -0
  497. package/dist/3-unit/ds-carousel.d.ts.map +1 -0
  498. package/dist/3-unit/ds-carousel.js +327 -0
  499. package/dist/3-unit/ds-date-picker.d.ts +203 -0
  500. package/dist/3-unit/ds-date-picker.d.ts.map +1 -0
  501. package/dist/3-unit/ds-date-picker.js +499 -0
  502. package/dist/3-unit/ds-form.d.ts.map +1 -1
  503. package/dist/3-unit/ds-form.js +38 -28
  504. package/dist/3-unit/ds-list.d.ts +12 -0
  505. package/dist/3-unit/ds-list.d.ts.map +1 -1
  506. package/dist/3-unit/ds-list.js +52 -1
  507. package/dist/3-unit/ds-matrix.d.ts +146 -0
  508. package/dist/3-unit/ds-matrix.d.ts.map +1 -0
  509. package/dist/3-unit/ds-matrix.js +248 -0
  510. package/dist/3-unit/ds-menu.d.ts +1 -1
  511. package/dist/3-unit/ds-menu.d.ts.map +1 -1
  512. package/dist/3-unit/ds-menu.js +7 -4
  513. package/dist/3-unit/ds-row.d.ts +66 -0
  514. package/dist/3-unit/ds-row.d.ts.map +1 -1
  515. package/dist/3-unit/ds-row.js +80 -1
  516. package/dist/3-unit/ds-sidebar.d.ts +149 -0
  517. package/dist/3-unit/ds-sidebar.d.ts.map +1 -0
  518. package/dist/3-unit/ds-sidebar.js +342 -0
  519. package/dist/3-unit/ds-table.d.ts +28 -10
  520. package/dist/3-unit/ds-table.d.ts.map +1 -1
  521. package/dist/3-unit/ds-table.js +53 -25
  522. package/dist/4-page/ds-dialog.d.ts +16 -1
  523. package/dist/4-page/ds-dialog.d.ts.map +1 -1
  524. package/dist/4-page/ds-dialog.js +39 -3
  525. package/dist/4-page/ds-document.d.ts +98 -0
  526. package/dist/4-page/ds-document.d.ts.map +1 -0
  527. package/dist/4-page/ds-document.js +213 -0
  528. package/dist/4-page/ds-footer.d.ts +100 -0
  529. package/dist/4-page/ds-footer.d.ts.map +1 -0
  530. package/dist/4-page/ds-footer.js +119 -0
  531. package/dist/4-page/ds-grid.d.ts +32 -12
  532. package/dist/4-page/ds-grid.d.ts.map +1 -1
  533. package/dist/4-page/ds-grid.js +30 -39
  534. package/dist/4-page/ds-header.d.ts +84 -0
  535. package/dist/4-page/ds-header.d.ts.map +1 -0
  536. package/dist/4-page/ds-header.js +143 -0
  537. package/dist/4-page/ds-page.d.ts +110 -0
  538. package/dist/4-page/ds-page.d.ts.map +1 -0
  539. package/dist/4-page/ds-page.js +155 -0
  540. package/dist/4-page/email.d.ts +2 -3
  541. package/dist/4-page/email.d.ts.map +1 -1
  542. package/dist/4-page/email.js +2 -3
  543. package/dist/components.d.ts +4 -1
  544. package/dist/components.d.ts.map +1 -1
  545. package/dist/components.js +4 -1
  546. package/dist/design-system-1.bundle.js +12322 -5523
  547. package/dist/design-system-1.bundle.js.map +1 -1
  548. package/dist/design-system-1.bundle.min.js +8771 -4115
  549. package/dist/design-system-1.bundle.min.js.map +1 -1
  550. package/dist/design-system-1.css +1 -1
  551. package/dist/feedback.js +541 -0
  552. package/dist/feedback.js.map +1 -0
  553. package/dist/{icons-extra-BoAACA4X.js → icons-extra-CiDDs7_-.js} +404 -312
  554. package/dist/icons-extra-CiDDs7_-.js.map +1 -0
  555. package/dist/{icons-extra-DlxTo_Y4.js → icons-extra-hauwCx07.js} +121 -66
  556. package/dist/icons-extra-hauwCx07.js.map +1 -0
  557. package/dist/index.d.ts +21 -6
  558. package/dist/index.d.ts.map +1 -1
  559. package/dist/index.js +21 -6
  560. package/dist/react/avatar.d.ts +5 -9
  561. package/dist/react/avatar.d.ts.map +1 -1
  562. package/dist/react/avatar.js +2 -2
  563. package/dist/react/button-split.d.ts +19 -0
  564. package/dist/react/button-split.d.ts.map +1 -0
  565. package/dist/react/{split.js → button-split.js} +12 -9
  566. package/dist/react/button.d.ts +18 -7
  567. package/dist/react/button.d.ts.map +1 -1
  568. package/dist/react/button.js +13 -4
  569. package/dist/react/carousel.d.ts +63 -0
  570. package/dist/react/carousel.d.ts.map +1 -0
  571. package/dist/react/carousel.js +47 -0
  572. package/dist/react/choice.d.ts +1 -1
  573. package/dist/react/context-menu.d.ts +337 -337
  574. package/dist/react/dialog.d.ts +684 -678
  575. package/dist/react/dialog.d.ts.map +1 -1
  576. package/dist/react/dialog.js +29 -3
  577. package/dist/react/document.d.ts +11 -0
  578. package/dist/react/document.d.ts.map +1 -0
  579. package/dist/react/document.js +10 -0
  580. package/dist/react/empty.d.ts +34 -0
  581. package/dist/react/empty.d.ts.map +1 -0
  582. package/dist/react/empty.js +8 -0
  583. package/dist/react/file-picker.d.ts +1 -1
  584. package/dist/react/footer.d.ts +13 -0
  585. package/dist/react/footer.d.ts.map +1 -0
  586. package/dist/react/footer.js +12 -0
  587. package/dist/react/header.d.ts +12 -0
  588. package/dist/react/header.d.ts.map +1 -0
  589. package/dist/react/header.js +11 -0
  590. package/dist/react/input.d.ts +31 -9
  591. package/dist/react/input.d.ts.map +1 -1
  592. package/dist/react/input.js +94 -94
  593. package/dist/react/message.d.ts +66 -0
  594. package/dist/react/message.d.ts.map +1 -0
  595. package/dist/react/message.js +37 -0
  596. package/dist/react/notice.d.ts +45 -0
  597. package/dist/react/notice.d.ts.map +1 -0
  598. package/dist/react/notice.js +34 -0
  599. package/dist/react/page.d.ts +10 -0
  600. package/dist/react/page.d.ts.map +1 -0
  601. package/dist/react/page.js +9 -0
  602. package/dist/react/progress.d.ts +107 -0
  603. package/dist/react/progress.d.ts.map +1 -0
  604. package/dist/react/progress.js +47 -0
  605. package/dist/react/sidebar.d.ts +54 -0
  606. package/dist/react/sidebar.d.ts.map +1 -0
  607. package/dist/react/sidebar.js +48 -0
  608. package/dist/react/stat.d.ts +78 -0
  609. package/dist/react/stat.d.ts.map +1 -0
  610. package/dist/react/stat.js +25 -0
  611. package/dist/react/toast.d.ts +37 -0
  612. package/dist/react/toast.d.ts.map +1 -0
  613. package/dist/react/toast.js +55 -0
  614. package/dist/shared-words-CyZYc_De.js +1818 -0
  615. package/dist/shared-words-CyZYc_De.js.map +1 -0
  616. package/dist/shared-words-DAVSET4Z.js +1800 -0
  617. package/dist/shared-words-DAVSET4Z.js.map +1 -0
  618. package/package.json +19 -6
  619. package/DS1/2-core/ds-banner.ts +0 -122
  620. package/DS1/2-core/ds-date.ts +0 -24
  621. package/DS1/2-core/ds-language.ts +0 -94
  622. package/DS1/2-core/ds-pagedots.ts +0 -52
  623. package/DS1/2-core/ds-split.ts +0 -122
  624. package/DS1/2-core/ds-textarea.ts +0 -136
  625. package/DS1/2-core/styles/ds-banner.css +0 -77
  626. package/DS1/2-core/styles/ds-date.css +0 -9
  627. package/DS1/2-core/styles/ds-language.css +0 -78
  628. package/DS1/2-core/styles/ds-pagedots.css +0 -31
  629. package/DS1/2-core/styles/ds-textarea.css +0 -27
  630. package/DS1/4-page/ds-layout.ts +0 -949
  631. package/DS1/4-page/styles/ds-layout.css +0 -246
  632. package/DS1/react/split.ts +0 -42
  633. package/DS1/x-icon/ezo-accordion-chevron.svg +0 -11
  634. package/DS1/x-icon/ezo-account-close.svg +0 -1
  635. package/DS1/x-icon/ezo-android-screen-archive.svg +0 -4
  636. package/DS1/x-icon/ezo-android-screen-calendar.svg +0 -6
  637. package/DS1/x-icon/ezo-android-screen-camera.svg +0 -5
  638. package/DS1/x-icon/ezo-android-screen-check.svg +0 -3
  639. package/DS1/x-icon/ezo-android-screen-compose.svg +0 -4
  640. package/DS1/x-icon/ezo-android-screen-globe.svg +0 -1
  641. package/DS1/x-icon/ezo-android-screen-shared.svg +0 -5
  642. package/DS1/x-icon/ezo-android-screen-store.svg +0 -4
  643. package/DS1/x-icon/ezo-android-screen-views.svg +0 -4
  644. package/DS1/x-icon/ezo-android-screen-work.svg +0 -3
  645. package/DS1/x-icon/ezo-arrow-cursor.svg +0 -8
  646. package/DS1/x-icon/ezo-block-accordion.svg +0 -1
  647. package/DS1/x-icon/ezo-block-divider.svg +0 -1
  648. package/DS1/x-icon/ezo-block-group.svg +0 -1
  649. package/DS1/x-icon/ezo-block-image.svg +0 -1
  650. package/DS1/x-icon/ezo-block-section.svg +0 -1
  651. package/DS1/x-icon/ezo-block-table.svg +0 -1
  652. package/DS1/x-icon/ezo-code.svg +0 -14
  653. package/DS1/x-icon/ezo-down.svg +0 -3
  654. package/DS1/x-icon/ezo-figma-premium-star.svg +0 -5
  655. package/DS1/x-icon/ezo-item-button-complete.svg +0 -4
  656. package/DS1/x-icon/ezo-item-button-header.svg +0 -3
  657. package/DS1/x-icon/ezo-item-button-open.svg +0 -3
  658. package/DS1/x-icon/ezo-item-button-star.svg +0 -3
  659. package/DS1/x-icon/ezo-item-button-unheader.svg +0 -7
  660. package/DS1/x-icon/ezo-item-button-unstar.svg +0 -5
  661. package/DS1/x-icon/ezo-item-star.svg +0 -5
  662. package/DS1/x-icon/ezo-left.svg +0 -3
  663. package/DS1/x-icon/ezo-logo.svg +0 -1
  664. package/DS1/x-icon/ezo-mic.svg +0 -8
  665. package/DS1/x-icon/ezo-move-column.svg +0 -14
  666. package/DS1/x-icon/ezo-move-row.svg +0 -18
  667. package/DS1/x-icon/ezo-navigation-check.svg +0 -1
  668. package/DS1/x-icon/ezo-note-back.svg +0 -5
  669. package/DS1/x-icon/ezo-note-menu-complete.svg +0 -11
  670. package/DS1/x-icon/ezo-note-menu-delete.svg +0 -4
  671. package/DS1/x-icon/ezo-note-menu-duplicate.svg +0 -8
  672. package/DS1/x-icon/ezo-note-menu-note.svg +0 -5
  673. package/DS1/x-icon/ezo-note-menu-page.svg +0 -3
  674. package/DS1/x-icon/ezo-note-menu-star.svg +0 -5
  675. package/DS1/x-icon/ezo-note-menu-start.svg +0 -6
  676. package/DS1/x-icon/ezo-note-menu-stop.svg +0 -6
  677. package/DS1/x-icon/ezo-note-more.svg +0 -7
  678. package/DS1/x-icon/ezo-note-star.svg +0 -5
  679. package/DS1/x-icon/ezo-pattern-call-to-action.svg +0 -1
  680. package/DS1/x-icon/ezo-play.svg +0 -5
  681. package/DS1/x-icon/ezo-premium-star.svg +0 -5
  682. package/DS1/x-icon/ezo-setting-1xdots.svg +0 -13
  683. package/DS1/x-icon/ezo-setting-1xgrid.svg +0 -10
  684. package/DS1/x-icon/ezo-setting-1xlines.svg +0 -7
  685. package/DS1/x-icon/ezo-setting-2xdots.svg +0 -8
  686. package/DS1/x-icon/ezo-setting-2xgrid.svg +0 -8
  687. package/DS1/x-icon/ezo-setting-2xlines.svg +0 -6
  688. package/DS1/x-icon/ezo-setting-blank.svg +0 -5
  689. package/DS1/x-icon/ezo-store-chevron.svg +0 -1
  690. package/DS1/x-icon/ezo-upgrade-close.svg +0 -5
  691. package/DS1/x-icon/product-sources.json +0 -2557
  692. package/dist/2-core/ds-banner.d.ts +0 -68
  693. package/dist/2-core/ds-banner.d.ts.map +0 -1
  694. package/dist/2-core/ds-banner.js +0 -98
  695. package/dist/2-core/ds-date.d.ts +0 -16
  696. package/dist/2-core/ds-date.d.ts.map +0 -1
  697. package/dist/2-core/ds-date.js +0 -15
  698. package/dist/2-core/ds-language.d.ts +0 -75
  699. package/dist/2-core/ds-language.d.ts.map +0 -1
  700. package/dist/2-core/ds-language.js +0 -74
  701. package/dist/2-core/ds-pagedots.d.ts +0 -32
  702. package/dist/2-core/ds-pagedots.d.ts.map +0 -1
  703. package/dist/2-core/ds-pagedots.js +0 -36
  704. package/dist/2-core/ds-split.d.ts +0 -75
  705. package/dist/2-core/ds-split.d.ts.map +0 -1
  706. package/dist/2-core/ds-split.js +0 -101
  707. package/dist/2-core/ds-textarea.d.ts +0 -46
  708. package/dist/2-core/ds-textarea.d.ts.map +0 -1
  709. package/dist/2-core/ds-textarea.js +0 -121
  710. package/dist/4-page/ds-layout.d.ts +0 -31
  711. package/dist/4-page/ds-layout.d.ts.map +0 -1
  712. package/dist/4-page/ds-layout.js +0 -930
  713. package/dist/icons-extra-BoAACA4X.js.map +0 -1
  714. package/dist/icons-extra-DlxTo_Y4.js.map +0 -1
  715. package/dist/react/split.d.ts +0 -15
  716. package/dist/react/split.d.ts.map +0 -1
  717. package/dist/shared-words-Cg6Phtx0.js +0 -915
  718. package/dist/shared-words-Cg6Phtx0.js.map +0 -1
  719. package/dist/shared-words-Ddz0yUEF.js +0 -933
  720. package/dist/shared-words-Ddz0yUEF.js.map +0 -1
  721. /package/DS1/x-icon/{ezo-password-visibility-see.svg → password-see.svg} +0 -0
  722. /package/DS1/x-icon/{ezo-password-visibility-unsee.svg → password-unsee.svg} +0 -0
@@ -0,0 +1,329 @@
1
+ /**
2
+ * Toast: short messages that stack in a corner of the page and leave on their own.
3
+ *
4
+ * BASED ON SONNER. This component is a Lit port of Sonner, the React toast
5
+ * library by Emil Kowalski (https://sonner.emilkowal.ski,
6
+ * https://github.com/emilkowalski/sonner, MIT licence). Its API and behaviour
7
+ * follow Sonner's, so Sonner's documentation describes how it works:
8
+ *
9
+ * - `toast()`, `toast.success()`, `.info()`, `.warning()`, `.error()`,
10
+ * `.loading()`, `.message()`, `.promise()` and `.dismiss()` are Sonner's calls,
11
+ * with Sonner's options (`id`, `description`, `duration`, `action`, `cancel`,
12
+ * `dismissible`, `closeButton`, `important`, `onDismiss`, `onAutoClose`).
13
+ * - `<ds-toast>` is Sonner's `<Toaster />`, with its `position`, `expand`,
14
+ * `visible-toasts`, `duration`, `close-button` and `rich-colors`;
15
+ * `contained` draws it inside its positioned parent instead of the window.
16
+ * - A toast stays until dismissed; an explicitly timed toast pauses while the stack is hovered,
17
+ * focused, held or the tab is hidden. Three show at once, stacked behind
18
+ * one another and spread out on hover. A swipe towards the edge dismisses one,
19
+ * Alt+T reaches them from the keyboard, and they come and go with Sonner's
20
+ * 400ms slide and fade.
21
+ *
22
+ * Where it departs from Sonner, it follows Design system 1: a toast is drawn as
23
+ * the system's label, an ink chip one control high per line in the tooltip's
24
+ * colours, with no line or shadow, its actions underlined words; the pile
25
+ * advances one square per toast, one square from the edge. Only `transform`
26
+ * and `opacity` animate (a toast stacked behind takes the front one's height at
27
+ * once instead of animating it). `toast()` also adds a `<ds-toast>` to the page
28
+ * when there is none, and moving the element keeps its toasts and their time.
29
+ * An error is announced assertively unless it says `important: false`.
30
+ *
31
+ * `toast()` and its queue are framework-free (`0-face/toast-queue.ts`). On a
32
+ * page without Lit, the page toaster (`0-face/toaster.ts`) draws the same stack
33
+ * with this component's stylesheet; where a `<ds-toast>` is in the page, it
34
+ * takes every toast, so a page never shows two stacks.
35
+ */
36
+ import { LitElement, html, nothing, unsafeCSS } from "lit";
37
+ import { repeat } from "lit/directives/repeat.js";
38
+ import { define } from "../0-face/define";
39
+ import { SWIPE_THRESHOLD, SWIPE_VELOCITY, TIME_BEFORE_UNMOUNT, TOAST_DURATION as DURATION, TOAST_ICONS as ICONS, VISIBLE_TOASTS, listenForToasts, } from "../0-face/toast-queue";
40
+ import "./ds-icon";
41
+ import styles from "./styles/ds-toast.css?inline";
42
+ /* Sonner's calls and their queue are framework-free (`0-face/toast-queue.ts`), shared with the page toaster. */
43
+ export { toast } from "../0-face/toast-queue";
44
+ /** The region that shows the toasts, Sonner's `<Toaster />`. Put one in the page. */
45
+ export class Toaster extends LitElement {
46
+ constructor() {
47
+ super();
48
+ this.heights = new Map();
49
+ this.timers = new Map();
50
+ this.interacting = false;
51
+ this.resizes = typeof ResizeObserver === "undefined" ? undefined : new ResizeObserver(() => this.measure());
52
+ this.receive = (signal) => {
53
+ if ("dismiss" in signal) {
54
+ for (const item of this.live)
55
+ if (signal.dismiss === undefined || item.data.id === signal.dismiss)
56
+ this.removeToast(item.data.id);
57
+ return;
58
+ }
59
+ const data = signal.toast;
60
+ const current = this.live.find(item => item.data.id === data.id);
61
+ if (current) {
62
+ // An update keeps what it does not change and starts its time again, as in Sonner.
63
+ this._items = this._items.map(item => item === current ? { ...item, data: { ...item.data, ...data } } : item);
64
+ this.clearTimer(data.id);
65
+ return;
66
+ }
67
+ this._items = [{ data, mounted: false, removed: false, swipeOut: false, index: 0, offset: 0 }, ...this._items.filter(item => item.data.id !== data.id)];
68
+ };
69
+ /** Sonner's timers: each toast keeps its remaining time while the stack is paused. */
70
+ this.syncTimers = () => {
71
+ const now = Date.now();
72
+ for (const item of this.live) {
73
+ const { id, type } = item.data;
74
+ const duration = item.data.duration ?? this.duration;
75
+ if (type === "loading" || duration === Infinity) {
76
+ this.clearTimer(id);
77
+ continue;
78
+ }
79
+ let timer = this.timers.get(id);
80
+ if (!timer) {
81
+ timer = { remaining: duration, started: now };
82
+ this.timers.set(id, timer);
83
+ }
84
+ if (this.paused && timer.handle !== undefined) {
85
+ clearTimeout(timer.handle);
86
+ timer.handle = undefined;
87
+ timer.remaining -= now - timer.started;
88
+ }
89
+ else if (!this.paused && timer.handle === undefined) {
90
+ timer.started = now;
91
+ timer.handle = setTimeout(() => this.removeToast(id, "auto"), Math.max(0, timer.remaining));
92
+ }
93
+ }
94
+ };
95
+ this.hotkey = (event) => {
96
+ const list = this.renderRoot.querySelector("ol");
97
+ if (event.altKey && event.code === "KeyT" && this.live.length) {
98
+ this._focused = true;
99
+ list?.focus();
100
+ }
101
+ else if (event.key === "Escape" && this._focused) {
102
+ this._focused = false;
103
+ }
104
+ };
105
+ this.onFocusOut = (event) => {
106
+ if (!(event.relatedTarget instanceof Node && this.renderRoot.contains(event.relatedTarget)))
107
+ this._focused = false;
108
+ };
109
+ this.onPointerMove = (event) => {
110
+ if (!this.swipe)
111
+ return;
112
+ const toward = this.position.startsWith("top") ? -1 : 1;
113
+ // Only towards the edge the toast came from.
114
+ this.swipe.amount = Math.max(0, (event.clientY - this.swipe.start) * toward);
115
+ const element = event.currentTarget;
116
+ element.dataset.swiping = "true";
117
+ element.style.setProperty("--swipe", `${this.swipe.amount * toward}px`);
118
+ };
119
+ this.onPointerUp = (event) => {
120
+ const swipe = this.swipe;
121
+ if (!swipe)
122
+ return;
123
+ this.swipe = undefined;
124
+ this.interacting = false;
125
+ const element = event.currentTarget;
126
+ delete element.dataset.swiping;
127
+ const velocity = swipe.amount / Math.max(1, Date.now() - swipe.time);
128
+ if (swipe.amount >= SWIPE_THRESHOLD || velocity > SWIPE_VELOCITY)
129
+ this.removeToast(swipe.id, "swipe");
130
+ else
131
+ element.style.setProperty("--swipe", "0px");
132
+ this.syncTimers();
133
+ };
134
+ this.position = "bottom-right";
135
+ this.expand = false;
136
+ this.visibleToasts = VISIBLE_TOASTS;
137
+ this.duration = DURATION;
138
+ this.closeButton = true;
139
+ this.richColors = false;
140
+ this.contained = false;
141
+ this.label = "Notifications";
142
+ this.closeLabel = "Close toast";
143
+ this._items = [];
144
+ this._hovered = false;
145
+ this._focused = false;
146
+ }
147
+ connectedCallback() {
148
+ super.connectedCallback();
149
+ this.stopListening?.();
150
+ this.stopListening = listenForToasts(this.receive);
151
+ document.addEventListener("keydown", this.hotkey);
152
+ document.addEventListener("visibilitychange", this.syncTimers);
153
+ // Moved to another parent: carry on with the time each toast had left.
154
+ this.requestUpdate();
155
+ }
156
+ disconnectedCallback() {
157
+ super.disconnectedCallback();
158
+ this.stopListening?.();
159
+ this.stopListening = undefined;
160
+ document.removeEventListener("keydown", this.hotkey);
161
+ document.removeEventListener("visibilitychange", this.syncTimers);
162
+ const now = Date.now();
163
+ for (const timer of this.timers.values()) {
164
+ if (timer.handle === undefined)
165
+ continue;
166
+ clearTimeout(timer.handle);
167
+ timer.handle = undefined;
168
+ timer.remaining -= now - timer.started;
169
+ }
170
+ this.resizes?.disconnect();
171
+ }
172
+ get live() { return this._items.filter(item => !item.removed); }
173
+ get expanded() { return this.expand || ((this._hovered || this._focused) && this.live.length > 0); }
174
+ get paused() { return this._hovered || this._focused || this.interacting || document.hidden; }
175
+ removeToast(id, how = "dismiss") {
176
+ const item = this.live.find(entry => entry.data.id === id);
177
+ if (!item)
178
+ return;
179
+ this.clearTimer(id);
180
+ this.heights.delete(id);
181
+ (how === "auto" ? item.data.onAutoClose : item.data.onDismiss)?.(item.data);
182
+ const removed = { ...item, removed: true, swipeOut: how === "swipe" };
183
+ this._items = this._items.map(entry => entry === item ? removed : entry);
184
+ setTimeout(() => { this._items = this._items.filter(entry => entry !== removed); }, TIME_BEFORE_UNMOUNT);
185
+ }
186
+ clearTimer(id) {
187
+ clearTimeout(this.timers.get(id)?.handle);
188
+ this.timers.delete(id);
189
+ }
190
+ measure() {
191
+ let changed = false;
192
+ for (const body of this.renderRoot.querySelectorAll(".body")) {
193
+ const id = this._items.find(item => String(item.data.id) === body.dataset.id && !item.removed)?.data.id;
194
+ if (id === undefined)
195
+ continue;
196
+ const toast = body.parentElement;
197
+ const height = body.offsetHeight + toast.offsetHeight - toast.clientHeight;
198
+ if (this.heights.get(id) !== height) {
199
+ this.heights.set(id, height);
200
+ changed = true;
201
+ }
202
+ }
203
+ if (changed)
204
+ this.requestUpdate();
205
+ }
206
+ updated() {
207
+ for (const body of this.renderRoot.querySelectorAll(".body"))
208
+ this.resizes?.observe(body);
209
+ this.measure();
210
+ if (!this.live.length) {
211
+ this._hovered = false;
212
+ this._focused = false;
213
+ }
214
+ this.syncTimers();
215
+ if (this._items.some(item => !item.mounted)) {
216
+ // Mount on the next frame so the toast slides in from its edge.
217
+ const frame = typeof requestAnimationFrame === "function" ? requestAnimationFrame : (callback) => setTimeout(callback, 16);
218
+ frame(() => { this._items = this._items.map(item => item.mounted ? item : { ...item, mounted: true }); });
219
+ }
220
+ }
221
+ onPointerDown(event, item) {
222
+ if (item.data.dismissible === false || item.data.type === "loading")
223
+ return;
224
+ if (event.composedPath()[0]?.closest?.("button, a"))
225
+ return;
226
+ event.currentTarget.setPointerCapture?.(event.pointerId);
227
+ this.swipe = { id: item.data.id, start: event.clientY, time: Date.now(), amount: 0 };
228
+ this.interacting = true;
229
+ this.syncTimers();
230
+ }
231
+ press(event, item, button) {
232
+ button.onClick?.(event);
233
+ if (button.href)
234
+ this.removeToast(item.data.id);
235
+ else if (!event.defaultPrevented)
236
+ this.removeToast(item.data.id);
237
+ }
238
+ renderButton(item, button, kind) {
239
+ const press = (event) => this.press(event, item, button);
240
+ return button.href
241
+ ? html `<a class=${`button ${kind}`} href=${button.href} @click=${press}>${button.label}</a>`
242
+ : html `<button class=${`button ${kind}`} type="button" @click=${press}>${button.label}</button>`;
243
+ }
244
+ renderIcon(data) {
245
+ if (data.type === "loading")
246
+ return html `<span class="icon" aria-hidden="true"><span class="spinner"></span></span>`;
247
+ const icon = data.icon ?? ICONS[data.type];
248
+ return icon ? html `<span class="icon" aria-hidden="true"><ds-icon .type=${icon}></ds-icon></span>` : nothing;
249
+ }
250
+ renderToast(item, count, frontHeight) {
251
+ const { data } = item;
252
+ const dismissible = data.dismissible !== false;
253
+ const closeButton = (data.closeButton ?? this.closeButton) && dismissible;
254
+ return html `<li
255
+ class="toast"
256
+ role="status"
257
+ tabindex="0"
258
+ aria-live=${data.important ? "assertive" : "polite"}
259
+ aria-atomic="true"
260
+ data-type=${data.type}
261
+ data-front=${String(item.index === 0)}
262
+ data-mounted=${String(item.mounted)}
263
+ data-removed=${String(item.removed)}
264
+ data-swipe-out=${String(item.swipeOut)}
265
+ data-visible=${String(item.index < this.visibleToasts)}
266
+ style=${`--index: ${item.index}; --offset: ${item.offset}px; --front-height: ${frontHeight}px; z-index: ${count - item.index}`}
267
+ @pointerdown=${(event) => this.onPointerDown(event, item)}
268
+ @pointermove=${this.onPointerMove}
269
+ @pointerup=${this.onPointerUp}
270
+ @pointercancel=${this.onPointerUp}
271
+ >
272
+ <div class="body" data-id=${String(data.id)}>
273
+ ${this.renderIcon(data)}
274
+ <div class="content">
275
+ <div class="title">${data.title}</div>
276
+ ${data.description ? html `<div class="description">${data.description}</div>` : nothing}
277
+ </div>
278
+ ${data.cancel ? this.renderButton(item, data.cancel, "cancel") : nothing}
279
+ ${data.action ? this.renderButton(item, data.action, "action") : nothing}
280
+ ${closeButton ? html `<button class="close" type="button" aria-label=${this.closeLabel} @click=${() => this.removeToast(data.id)}><ds-icon type="close"></ds-icon></button>` : nothing}
281
+ </div>
282
+ </li>`;
283
+ }
284
+ render() {
285
+ // Index and offset count live toasts only; one leaving keeps where it was.
286
+ let offset = 0;
287
+ this.live.forEach((item, index) => {
288
+ item.index = index;
289
+ item.offset = offset;
290
+ offset += this.heights.get(item.data.id) ?? 0;
291
+ });
292
+ const live = this.live;
293
+ const frontHeight = live.length ? this.heights.get(live[0].data.id) ?? 0 : 0;
294
+ const gaps = Math.max(0, live.length - 1);
295
+ const [y, x] = this.position.split("-");
296
+ return html `<section aria-label=${`${this.label} alt+T`} aria-live="polite" aria-relevant="additions text" aria-atomic="false">
297
+ <ol
298
+ tabindex="-1"
299
+ data-y=${y}
300
+ data-x=${x}
301
+ data-expanded=${String(this.expanded)}
302
+ style=${`--height: ${this.expanded ? offset : frontHeight}px; --gaps: ${this.expanded ? gaps : 0}`}
303
+ @pointerenter=${() => { this._hovered = true; }}
304
+ @pointerleave=${() => { if (!this.interacting)
305
+ this._hovered = false; }}
306
+ @focusin=${() => { this._focused = true; }}
307
+ @focusout=${this.onFocusOut}
308
+ >
309
+ ${repeat(this._items, item => item.data.id, item => this.renderToast(item, this._items.length, frontHeight))}
310
+ </ol>
311
+ </section>`;
312
+ }
313
+ }
314
+ Toaster.properties = {
315
+ position: { type: String, reflect: true },
316
+ expand: { type: Boolean, reflect: true },
317
+ visibleToasts: { type: Number, attribute: "visible-toasts" },
318
+ duration: { type: Number },
319
+ closeButton: { type: Boolean, attribute: "close-button" },
320
+ richColors: { type: Boolean, attribute: "rich-colors", reflect: true },
321
+ contained: { type: Boolean, reflect: true },
322
+ label: { type: String },
323
+ closeLabel: { type: String, attribute: "close-label" },
324
+ _items: { state: true },
325
+ _hovered: { state: true },
326
+ _focused: { state: true },
327
+ };
328
+ Toaster.styles = unsafeCSS(styles);
329
+ define("ds-toast", Toaster);
@@ -0,0 +1,56 @@
1
+ /** How a figure's value is written: a number, a short number (12K), a fraction as a percentage, or money. */
2
+ export type FigureFormat = "number" | "compact" | "percent" | "money";
3
+ export interface FigureOptions {
4
+ /** `number` by default. `money` needs `currency`; without one it writes a number. */
5
+ format?: FigureFormat;
6
+ /** An ISO 4217 code for `money`: `USD`, `DKK`, `JPY`. */
7
+ currency?: string;
8
+ /** For money: the amount is in the currency's minor unit (cents, øre). */
9
+ minor?: boolean;
10
+ /** For money: whole units only, rounded. */
11
+ whole?: boolean;
12
+ /** Decimals, at least and at most. Unset, the format's own (none for a percentage, the currency's for money). */
13
+ digits?: number;
14
+ /** Write a sign before a value that is not zero: `+12%`, `−3`. */
15
+ signed?: boolean;
16
+ /** Format in this language rather than the current one. */
17
+ language?: string;
18
+ }
19
+ /** A format name as given, or `number` for one this does not know. */
20
+ export declare function figureFormat(value: string | null | undefined): FigureFormat;
21
+ /** A value written as `options` say, in the current language: `1,234`, `12K`, `25%`, `$1,234.50`, `+12%`. */
22
+ export declare function formatFigure(value: number, options?: FigureOptions): string;
23
+ /** A run of a figure's text: a digit, which takes a cell of its own, or the signs and letters between. */
24
+ export interface FigureCell {
25
+ text: string;
26
+ digit: boolean;
27
+ }
28
+ /**
29
+ * A figure's text cut into its digits and the runs between them, for a face
30
+ * whose digits are not all one width: each digit is drawn in a cell of one
31
+ * width (`ds-stat__digit`), the rest at its own. The text is read whole.
32
+ */
33
+ export declare function figureCells(text: string): FigureCell[];
34
+ /** What a meter says to assistive technology. */
35
+ export interface MeterAria {
36
+ /** The value, kept inside the range as ARIA requires. */
37
+ now: number;
38
+ min: number;
39
+ max: number;
40
+ /** "7 of 10", or "12 of 10, over by 2", in the current language. */
41
+ text: string;
42
+ /** How much of the range is filled, 0 to 1. */
43
+ fraction: number;
44
+ /** The value is past the end of the range. */
45
+ over: boolean;
46
+ }
47
+ /**
48
+ * A meter's values: the value kept inside `min` and `max`, how much of the
49
+ * range it fills, whether it is past the end, and the words that say so, the
50
+ * figures written as `options` say. A range that is empty or backwards reads
51
+ * as 0 to 1.
52
+ */
53
+ export declare function meterAria(value: number, min?: number, max?: number, options?: FigureOptions & {
54
+ over?: boolean;
55
+ }): MeterAria;
56
+ //# sourceMappingURL=figures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"figures.d.ts","sourceRoot":"","sources":["../../DS1/2-core/figures.ts"],"names":[],"mappings":"AASA,6GAA6G;AAC7G,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAGtE,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iHAAiH;IACjH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAE3E;AAED,6GAA6G;AAC7G,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAc/E;AAED,0GAA0G;AAC1G,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE;AAE5D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,EAAE,CAStD;AAED,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,yDAAyD;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAI,EAAE,GAAG,SAAI,EAAE,OAAO,GAAE,aAAa,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,SAAS,CAatH"}
@@ -0,0 +1,70 @@
1
+ // figures.ts
2
+ // The words of a figure, shared by ds-stat, ds-progress and their React
3
+ // adapters: a value written through 0-face/format.ts in the current language,
4
+ // the digits cut into cells of one width, and a meter's ARIA values. No
5
+ // browser code, so the adapters write the same words on the server.
6
+ import { formatCompact, formatMoney, formatNumber, formatPercent } from "../0-face/format";
7
+ import { translate } from "../0-face/i18n";
8
+ const FORMATS = ["number", "compact", "percent", "money"];
9
+ /** A format name as given, or `number` for one this does not know. */
10
+ export function figureFormat(value) {
11
+ return FORMATS.includes(value) ? value : "number";
12
+ }
13
+ /** A value written as `options` say, in the current language: `1,234`, `12K`, `25%`, `$1,234.50`, `+12%`. */
14
+ export function formatFigure(value, options = {}) {
15
+ if (!Number.isFinite(value))
16
+ return "";
17
+ const { currency, minor, whole, digits, signed, language } = options;
18
+ const format = figureFormat(options.format);
19
+ const numeric = { language };
20
+ if (signed)
21
+ numeric.signDisplay = "exceptZero";
22
+ if (digits !== undefined && Number.isFinite(digits) && digits >= 0) {
23
+ numeric.minimumFractionDigits = Math.min(20, Math.floor(digits));
24
+ numeric.maximumFractionDigits = Math.min(20, Math.floor(digits));
25
+ }
26
+ if (format === "money" && currency)
27
+ return formatMoney(value, currency, { ...numeric, minor, whole });
28
+ if (format === "percent")
29
+ return formatPercent(value, numeric);
30
+ if (format === "compact")
31
+ return formatCompact(value, numeric);
32
+ return formatNumber(value, numeric);
33
+ }
34
+ /**
35
+ * A figure's text cut into its digits and the runs between them, for a face
36
+ * whose digits are not all one width: each digit is drawn in a cell of one
37
+ * width (`ds-stat__digit`), the rest at its own. The text is read whole.
38
+ */
39
+ export function figureCells(text) {
40
+ const cells = [];
41
+ for (const character of text) {
42
+ const digit = /\p{Nd}/u.test(character);
43
+ const last = cells[cells.length - 1];
44
+ if (!digit && last && !last.digit)
45
+ last.text += character;
46
+ else
47
+ cells.push({ text: character, digit });
48
+ }
49
+ return cells;
50
+ }
51
+ /**
52
+ * A meter's values: the value kept inside `min` and `max`, how much of the
53
+ * range it fills, whether it is past the end, and the words that say so, the
54
+ * figures written as `options` say. A range that is empty or backwards reads
55
+ * as 0 to 1.
56
+ */
57
+ export function meterAria(value, min = 0, max = 1, options = {}) {
58
+ const low = Number.isFinite(min) ? min : 0;
59
+ const high = Number.isFinite(max) && max > low ? max : low + 1;
60
+ const raw = Number.isFinite(value) ? value : low;
61
+ const over = Boolean(options.over) || raw > high;
62
+ const now = Math.min(high, Math.max(low, raw));
63
+ const fraction = over ? 1 : (now - low) / (high - low);
64
+ const write = (n) => formatFigure(n, { ...options, signed: false });
65
+ const params = { value: write(raw), max: write(high), over: write(Math.max(0, raw - high)) };
66
+ const text = over && raw > high
67
+ ? translate("{value} of {max}, over by {over}", params)
68
+ : translate("{value} of {max}", params);
69
+ return { now, min: low, max: high, text, fraction, over };
70
+ }