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

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 (771) 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 +13 -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 +887 -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/kbd.css +46 -0
  66. package/DS1/1-root/library-tokens.ts +91 -0
  67. package/DS1/1-root/measures.ts +53 -0
  68. package/DS1/1-root/notice.css +165 -0
  69. package/DS1/1-root/one.css +14 -84
  70. package/DS1/1-root/one.semantic.css +200 -148
  71. package/DS1/1-root/palette.css +58 -0
  72. package/DS1/1-root/palette.ts +19 -0
  73. package/DS1/1-root/progress.css +356 -0
  74. package/DS1/1-root/prose.css +202 -0
  75. package/DS1/1-root/row.css +297 -0
  76. package/DS1/1-root/table.css +111 -0
  77. package/DS1/1-root/text.css +70 -0
  78. package/DS1/2-core/button-split.ts +55 -0
  79. package/DS1/2-core/chart/chart.css +169 -0
  80. package/DS1/2-core/chart/grid-chart.ts +554 -0
  81. package/DS1/2-core/ds-avatar.ts +25 -6
  82. package/DS1/2-core/ds-badge.ts +10 -10
  83. package/DS1/2-core/ds-button.ts +111 -26
  84. package/DS1/2-core/ds-card.ts +135 -105
  85. package/DS1/2-core/ds-chart.ts +327 -0
  86. package/DS1/2-core/ds-composer.ts +8 -2
  87. package/DS1/2-core/ds-cycle.ts +97 -21
  88. package/DS1/2-core/ds-empty.ts +120 -0
  89. package/DS1/2-core/ds-icon.ts +11 -2
  90. package/DS1/2-core/ds-input.ts +165 -6
  91. package/DS1/2-core/ds-kbd.ts +78 -0
  92. package/DS1/2-core/ds-loading.ts +72 -0
  93. package/DS1/2-core/ds-notice.ts +180 -0
  94. package/DS1/2-core/ds-progress.ts +380 -0
  95. package/DS1/2-core/ds-spacing-handle.ts +22 -0
  96. package/DS1/2-core/ds-stat.ts +174 -0
  97. package/DS1/2-core/ds-switch.ts +1 -0
  98. package/DS1/2-core/ds-text.ts +15 -2
  99. package/DS1/2-core/ds-toast.ts +354 -0
  100. package/DS1/2-core/figures.ts +105 -0
  101. package/DS1/2-core/generated/ds-icon-map.ts +234 -128
  102. package/DS1/2-core/generated/icon-avatar.ts +2 -0
  103. package/DS1/2-core/generated/icons-extra.ts +118 -65
  104. package/DS1/2-core/generated/icons-immediate.ts +1 -1
  105. package/DS1/2-core/spacing-handle.ts +95 -0
  106. package/DS1/2-core/styles/ds-avatar.css +9 -8
  107. package/DS1/2-core/styles/ds-button-host.css +26 -3
  108. package/DS1/2-core/styles/ds-button-split.css +67 -0
  109. package/DS1/2-core/styles/ds-button.css +49 -15
  110. package/DS1/2-core/styles/ds-card.css +34 -0
  111. package/DS1/2-core/styles/ds-composer.css +13 -0
  112. package/DS1/2-core/styles/ds-cycle.css +69 -0
  113. package/DS1/2-core/styles/ds-empty.css +18 -0
  114. package/DS1/2-core/styles/ds-gap.css +1 -0
  115. package/DS1/2-core/styles/ds-icon.css +1 -0
  116. package/DS1/2-core/styles/ds-input.css +59 -6
  117. package/DS1/2-core/styles/ds-kbd.css +12 -0
  118. package/DS1/2-core/styles/ds-loading.css +13 -0
  119. package/DS1/2-core/styles/ds-notice.css +30 -0
  120. package/DS1/2-core/styles/ds-progress.css +25 -0
  121. package/DS1/2-core/styles/ds-select.css +2 -2
  122. package/DS1/2-core/styles/ds-spacing-handle.css +8 -0
  123. package/DS1/2-core/styles/ds-split.css +2 -62
  124. package/DS1/2-core/styles/ds-stat.css +34 -0
  125. package/DS1/2-core/styles/ds-switch.css +16 -1
  126. package/DS1/2-core/styles/ds-text.css +43 -12
  127. package/DS1/2-core/styles/ds-toast.css +182 -0
  128. package/DS1/2-core/styles/ds-tooltip.css +1 -0
  129. package/DS1/3-unit/calendar-base.ts +263 -0
  130. package/DS1/3-unit/ds-accordion.ts +9 -1
  131. package/DS1/3-unit/ds-avatar-group.ts +1 -0
  132. package/DS1/3-unit/ds-calendar-large.ts +349 -0
  133. package/DS1/3-unit/ds-calendar.ts +344 -0
  134. package/DS1/3-unit/ds-carousel.ts +368 -0
  135. package/DS1/3-unit/ds-date-picker.ts +540 -0
  136. package/DS1/3-unit/ds-form.ts +45 -37
  137. package/DS1/3-unit/ds-list.ts +48 -1
  138. package/DS1/3-unit/ds-matrix.ts +318 -0
  139. package/DS1/3-unit/ds-menu.ts +8 -4
  140. package/DS1/3-unit/ds-row.ts +84 -1
  141. package/DS1/3-unit/ds-sidebar.ts +280 -0
  142. package/DS1/3-unit/ds-table.ts +75 -34
  143. package/DS1/3-unit/styles/ds-accordion.css +1 -0
  144. package/DS1/3-unit/styles/ds-avatar-group.css +2 -4
  145. package/DS1/3-unit/styles/ds-calendar-large.css +165 -0
  146. package/DS1/3-unit/styles/ds-calendar.css +238 -0
  147. package/DS1/3-unit/styles/ds-carousel.css +30 -0
  148. package/DS1/3-unit/styles/ds-date-picker.css +124 -0
  149. package/DS1/3-unit/styles/ds-list.css +1 -0
  150. package/DS1/3-unit/styles/ds-matrix.css +203 -0
  151. package/DS1/3-unit/styles/ds-menu.css +31 -6
  152. package/DS1/3-unit/styles/ds-row.css +84 -2
  153. package/DS1/3-unit/styles/ds-sidebar.css +117 -0
  154. package/DS1/3-unit/styles/ds-table.css +3 -74
  155. package/DS1/4-page/ds-dialog.ts +40 -4
  156. package/DS1/4-page/ds-document.ts +240 -0
  157. package/DS1/4-page/ds-footer.ts +165 -0
  158. package/DS1/4-page/ds-grid.ts +39 -59
  159. package/DS1/4-page/ds-header.ts +171 -0
  160. package/DS1/4-page/ds-page.ts +184 -0
  161. package/DS1/4-page/email.ts +2 -3
  162. package/DS1/4-page/styles/ds-container.css +1 -0
  163. package/DS1/4-page/styles/ds-document.css +18 -0
  164. package/DS1/4-page/styles/ds-footer.css +29 -0
  165. package/DS1/4-page/styles/ds-grid.css +31 -85
  166. package/DS1/4-page/styles/ds-header.css +57 -0
  167. package/DS1/4-page/styles/ds-page.css +214 -0
  168. package/DS1/components.ts +7 -1
  169. package/DS1/index.ts +26 -6
  170. package/DS1/react/avatar.ts +4 -5
  171. package/DS1/react/button-split.ts +29 -0
  172. package/DS1/react/button.ts +32 -13
  173. package/DS1/react/carousel.ts +76 -0
  174. package/DS1/react/dialog.ts +36 -5
  175. package/DS1/react/document.ts +14 -0
  176. package/DS1/react/empty.ts +32 -0
  177. package/DS1/react/footer.ts +17 -0
  178. package/DS1/react/header.ts +15 -0
  179. package/DS1/react/input.ts +28 -17
  180. package/DS1/react/kbd.ts +21 -0
  181. package/DS1/react/loading.ts +18 -0
  182. package/DS1/react/notice.ts +59 -0
  183. package/DS1/react/page.ts +13 -0
  184. package/DS1/react/progress.ts +99 -0
  185. package/DS1/react/sidebar.ts +60 -0
  186. package/DS1/react/spacing-handle.ts +21 -0
  187. package/DS1/react/stat.ts +73 -0
  188. package/DS1/react/toast.ts +82 -0
  189. package/DS1/x-icon/Tabler-LICENSE.md +27 -0
  190. package/DS1/x-icon/airtable.svg +5 -0
  191. package/DS1/x-icon/attach.svg +3 -0
  192. package/DS1/x-icon/audio.svg +3 -0
  193. package/DS1/x-icon/bag-alt.svg +3 -0
  194. package/DS1/x-icon/bank.svg +3 -0
  195. package/DS1/x-icon/banknote.svg +3 -0
  196. package/DS1/x-icon/bolt.svg +3 -0
  197. package/DS1/x-icon/book-alt.svg +3 -0
  198. package/DS1/x-icon/book.svg +4 -0
  199. package/DS1/x-icon/box.svg +3 -0
  200. package/DS1/x-icon/briefcase.svg +3 -0
  201. package/DS1/x-icon/building.svg +4 -0
  202. package/DS1/x-icon/car.svg +3 -0
  203. package/DS1/x-icon/card.svg +3 -0
  204. package/DS1/x-icon/cart.svg +3 -0
  205. package/DS1/x-icon/{ezo-item-button-start.svg → chevron-left.svg} +1 -1
  206. package/DS1/x-icon/{ezo-android-screen-stats.svg → chevron-right.svg} +1 -1
  207. package/DS1/x-icon/cloud.svg +3 -0
  208. package/DS1/x-icon/coffee.svg +3 -0
  209. package/DS1/x-icon/coins.svg +3 -0
  210. package/DS1/x-icon/cursor.svg +3 -0
  211. package/DS1/x-icon/curve.svg +7 -0
  212. package/DS1/x-icon/dislike.svg +4 -0
  213. package/DS1/x-icon/dot-bank.svg +3 -0
  214. package/DS1/x-icon/dot-banknote.svg +3 -0
  215. package/DS1/x-icon/dot-banknotes.svg +3 -0
  216. package/DS1/x-icon/dot-card.svg +3 -0
  217. package/DS1/x-icon/dot-coin.svg +3 -0
  218. package/DS1/x-icon/dot-coins.svg +3 -0
  219. package/DS1/x-icon/dot-receipt.svg +3 -0
  220. package/DS1/x-icon/dot-safe.svg +3 -0
  221. package/DS1/x-icon/dot-transfer.svg +3 -0
  222. package/DS1/x-icon/dot-wallet.svg +3 -0
  223. package/DS1/x-icon/download.svg +4 -0
  224. package/DS1/x-icon/drive.svg +5 -0
  225. package/DS1/x-icon/drop.svg +3 -0
  226. package/DS1/x-icon/dropbox.svg +3 -0
  227. package/DS1/x-icon/dumbbell.svg +3 -0
  228. package/DS1/x-icon/eye-off.svg +3 -0
  229. package/DS1/x-icon/eye.svg +3 -0
  230. package/DS1/x-icon/facebook.svg +3 -0
  231. package/DS1/x-icon/figma.svg +5 -0
  232. package/DS1/x-icon/flame.svg +3 -0
  233. package/DS1/x-icon/flip.svg +5 -0
  234. package/DS1/x-icon/food.svg +3 -0
  235. package/DS1/x-icon/fuel.svg +3 -0
  236. package/DS1/x-icon/game.svg +3 -0
  237. package/DS1/x-icon/gift.svg +3 -0
  238. package/DS1/x-icon/github.svg +3 -0
  239. package/DS1/x-icon/heart.svg +3 -0
  240. package/DS1/x-icon/history.svg +3 -0
  241. package/DS1/x-icon/home-alt.svg +3 -0
  242. package/DS1/x-icon/income.svg +3 -0
  243. package/DS1/x-icon/info.svg +5 -0
  244. package/DS1/x-icon/instagram.svg +5 -0
  245. package/DS1/x-icon/jpbank.svg +3 -0
  246. package/DS1/x-icon/key.svg +4 -0
  247. package/DS1/x-icon/keyboard.svg +3 -0
  248. package/DS1/x-icon/like.svg +4 -0
  249. package/DS1/x-icon/linkedin.svg +7 -0
  250. package/DS1/x-icon/loom.svg +6 -0
  251. package/DS1/x-icon/map.svg +4 -0
  252. package/DS1/x-icon/medical.svg +3 -0
  253. package/DS1/x-icon/{ezo-android-screen-lists.svg → minus.svg} +1 -1
  254. package/DS1/x-icon/moon.svg +3 -0
  255. package/DS1/x-icon/move.svg +3 -0
  256. package/DS1/x-icon/music-alt.svg +3 -0
  257. package/DS1/x-icon/music.svg +5 -0
  258. package/DS1/x-icon/notion.svg +6 -0
  259. package/DS1/x-icon/offline.svg +3 -0
  260. package/DS1/x-icon/pause.svg +4 -0
  261. package/DS1/x-icon/paw.svg +3 -0
  262. package/DS1/x-icon/pdf.svg +3 -0
  263. package/DS1/x-icon/people.svg +5 -0
  264. package/DS1/x-icon/percent.svg +3 -0
  265. package/DS1/x-icon/phone.svg +3 -0
  266. package/DS1/x-icon/pill.svg +3 -0
  267. package/DS1/x-icon/plane.svg +3 -0
  268. package/DS1/x-icon/postal.svg +3 -0
  269. package/DS1/x-icon/present.svg +4 -0
  270. package/DS1/x-icon/reaction.svg +5 -0
  271. package/DS1/x-icon/receipt.svg +3 -0
  272. package/DS1/x-icon/refresh.svg +3 -0
  273. package/DS1/x-icon/refund.svg +3 -0
  274. package/DS1/x-icon/repeat.svg +3 -0
  275. package/DS1/x-icon/rotate.svg +4 -0
  276. package/DS1/x-icon/safe.svg +3 -0
  277. package/DS1/x-icon/school-alt.svg +3 -0
  278. package/DS1/x-icon/shield-alt.svg +3 -0
  279. package/DS1/x-icon/shield.svg +4 -0
  280. package/DS1/x-icon/shirt.svg +3 -0
  281. package/DS1/x-icon/shop.svg +3 -0
  282. package/DS1/x-icon/sign-in.svg +3 -0
  283. package/DS1/x-icon/sign-out.svg +3 -0
  284. package/DS1/x-icon/slack.svg +6 -0
  285. package/DS1/x-icon/sparkle.svg +3 -0
  286. package/DS1/x-icon/start.svg +4 -0
  287. package/DS1/x-icon/{ezo-item-button-reopen.svg → stop.svg} +1 -1
  288. package/DS1/x-icon/sun.svg +3 -0
  289. package/DS1/x-icon/system.svg +4 -0
  290. package/DS1/x-icon/tag.svg +3 -0
  291. package/DS1/x-icon/ticket.svg +3 -0
  292. package/DS1/x-icon/title-struck.svg +4 -0
  293. package/DS1/x-icon/train.svg +3 -0
  294. package/DS1/x-icon/transfer.svg +3 -0
  295. package/DS1/x-icon/tv.svg +3 -0
  296. package/DS1/x-icon/upload.svg +4 -0
  297. package/DS1/x-icon/video.svg +4 -0
  298. package/DS1/x-icon/vimeo.svg +3 -0
  299. package/DS1/x-icon/wallet.svg +3 -0
  300. package/DS1/x-icon/wifi.svg +3 -0
  301. package/DS1/x-icon/window.svg +4 -0
  302. package/DS1/x-icon/wrench.svg +3 -0
  303. package/DS1/x-icon/x-brand.svg +4 -0
  304. package/DS1/x-icon/youtube.svg +4 -0
  305. package/README.md +3 -3
  306. package/dist/0-face/calendar.d.ts +75 -0
  307. package/dist/0-face/calendar.d.ts.map +1 -0
  308. package/dist/0-face/calendar.js +149 -0
  309. package/dist/0-face/carousel.d.ts +174 -0
  310. package/dist/0-face/carousel.d.ts.map +1 -0
  311. package/dist/0-face/carousel.js +583 -0
  312. package/dist/0-face/component-visibility.d.ts +7 -0
  313. package/dist/0-face/component-visibility.d.ts.map +1 -0
  314. package/dist/0-face/component-visibility.js +10 -0
  315. package/dist/0-face/copy-text.d.ts +11 -0
  316. package/dist/0-face/copy-text.d.ts.map +1 -0
  317. package/dist/0-face/copy-text.js +97 -0
  318. package/dist/0-face/device.d.ts +3 -7
  319. package/dist/0-face/device.d.ts.map +1 -1
  320. package/dist/0-face/device.js +7 -41
  321. package/dist/0-face/dialog-swipe.d.ts +49 -0
  322. package/dist/0-face/dialog-swipe.d.ts.map +1 -0
  323. package/dist/0-face/dialog-swipe.js +239 -0
  324. package/dist/0-face/dialogs.d.ts +33 -0
  325. package/dist/0-face/dialogs.d.ts.map +1 -0
  326. package/dist/0-face/dialogs.js +173 -0
  327. package/dist/0-face/drawer.d.ts +64 -0
  328. package/dist/0-face/drawer.d.ts.map +1 -0
  329. package/dist/0-face/drawer.js +256 -0
  330. package/dist/0-face/feedback-words.d.ts +21 -0
  331. package/dist/0-face/feedback-words.d.ts.map +1 -0
  332. package/dist/0-face/feedback-words.js +30 -0
  333. package/dist/0-face/feedback.d.ts +41 -0
  334. package/dist/0-face/feedback.d.ts.map +1 -0
  335. package/dist/0-face/feedback.js +35 -0
  336. package/dist/0-face/format.d.ts +166 -0
  337. package/dist/0-face/format.d.ts.map +1 -0
  338. package/dist/0-face/format.js +445 -0
  339. package/dist/0-face/generated/toast-assets.d.ts +11 -0
  340. package/dist/0-face/generated/toast-assets.d.ts.map +1 -0
  341. package/dist/0-face/generated/toast-assets.js +14 -0
  342. package/dist/0-face/grid-fit.js +1 -1
  343. package/dist/0-face/grid.d.ts.map +1 -1
  344. package/dist/0-face/grid.js +2 -1
  345. package/dist/0-face/header.d.ts +38 -0
  346. package/dist/0-face/header.d.ts.map +1 -0
  347. package/dist/0-face/header.js +80 -0
  348. package/dist/0-face/i18n.d.ts +32 -2
  349. package/dist/0-face/i18n.d.ts.map +1 -1
  350. package/dist/0-face/i18n.js +65 -19
  351. package/dist/0-face/keys.d.ts +104 -0
  352. package/dist/0-face/keys.d.ts.map +1 -0
  353. package/dist/0-face/keys.js +253 -0
  354. package/dist/0-face/languages.d.ts +2 -2
  355. package/dist/0-face/languages.js +3 -3
  356. package/dist/0-face/layout-inspector.js +6 -6
  357. package/dist/0-face/library-styles.d.ts +7 -0
  358. package/dist/0-face/library-styles.d.ts.map +1 -0
  359. package/dist/0-face/library-styles.js +29 -0
  360. package/dist/0-face/load-toaster.d.ts +8 -0
  361. package/dist/0-face/load-toaster.d.ts.map +1 -0
  362. package/dist/0-face/load-toaster.js +7 -0
  363. package/dist/0-face/preference-options.d.ts +34 -0
  364. package/dist/0-face/preference-options.d.ts.map +1 -0
  365. package/dist/0-face/preference-options.js +1 -0
  366. package/dist/0-face/preferences.d.ts +3 -12
  367. package/dist/0-face/preferences.d.ts.map +1 -1
  368. package/dist/0-face/pricing.d.ts +19 -9
  369. package/dist/0-face/pricing.d.ts.map +1 -1
  370. package/dist/0-face/pricing.js +81 -40
  371. package/dist/0-face/scaling.d.ts +71 -1
  372. package/dist/0-face/scaling.d.ts.map +1 -1
  373. package/dist/0-face/scaling.js +108 -3
  374. package/dist/0-face/shared-words.d.ts +9 -4
  375. package/dist/0-face/shared-words.d.ts.map +1 -1
  376. package/dist/0-face/sidebar.d.ts +69 -0
  377. package/dist/0-face/sidebar.d.ts.map +1 -0
  378. package/dist/0-face/sidebar.js +191 -0
  379. package/dist/0-face/theme-bootstrap.d.ts +1 -0
  380. package/dist/0-face/theme-bootstrap.d.ts.map +1 -0
  381. package/dist/0-face/theme-bootstrap.js +214 -0
  382. package/dist/0-face/theme.d.ts +32 -0
  383. package/dist/0-face/theme.d.ts.map +1 -1
  384. package/dist/0-face/theme.js +69 -43
  385. package/dist/0-face/toast-queue.d.ts +110 -0
  386. package/dist/0-face/toast-queue.d.ts.map +1 -0
  387. package/dist/0-face/toast-queue.js +98 -0
  388. package/dist/0-face/toaster.d.ts +27 -0
  389. package/dist/0-face/toaster.d.ts.map +1 -0
  390. package/dist/0-face/toaster.js +373 -0
  391. package/dist/0-face/tooltips.d.ts +24 -1
  392. package/dist/0-face/tooltips.d.ts.map +1 -1
  393. package/dist/0-face/tooltips.js +155 -16
  394. package/dist/0-face/translations/da.json +60 -1
  395. package/dist/0-face/translations/de.json +60 -1
  396. package/dist/0-face/translations/en.json +60 -1
  397. package/dist/0-face/translations/es.json +60 -1
  398. package/dist/0-face/translations/fi.json +60 -1
  399. package/dist/0-face/translations/fr.json +60 -1
  400. package/dist/0-face/translations/is.json +60 -1
  401. package/dist/0-face/translations/it.json +60 -1
  402. package/dist/0-face/translations/ja.json +60 -1
  403. package/dist/0-face/translations/ko.json +60 -1
  404. package/dist/0-face/translations/nb.json +60 -1
  405. package/dist/0-face/translations/pt-BR.json +60 -1
  406. package/dist/0-face/translations/pt.json +60 -1
  407. package/dist/0-face/translations/sv.json +60 -1
  408. package/dist/0-face/translations/zh.json +60 -1
  409. package/dist/0-face/translations-format.d.ts.map +1 -1
  410. package/dist/0-face/translations-format.js +3 -4
  411. package/dist/0-face/tree.d.ts +69 -0
  412. package/dist/0-face/tree.d.ts.map +1 -0
  413. package/dist/0-face/tree.js +191 -0
  414. package/dist/1-root/library-tokens.d.ts +31 -0
  415. package/dist/1-root/library-tokens.d.ts.map +1 -0
  416. package/dist/1-root/library-tokens.js +84 -0
  417. package/dist/1-root/measures.d.ts +52 -0
  418. package/dist/1-root/measures.d.ts.map +1 -0
  419. package/dist/1-root/measures.js +49 -0
  420. package/dist/1-root/palette.d.ts +5 -0
  421. package/dist/1-root/palette.d.ts.map +1 -1
  422. package/dist/1-root/palette.js +18 -0
  423. package/dist/2-core/button-split.d.ts +21 -0
  424. package/dist/2-core/button-split.d.ts.map +1 -0
  425. package/dist/2-core/button-split.js +48 -0
  426. package/dist/2-core/chart/grid-chart.d.ts +113 -0
  427. package/dist/2-core/chart/grid-chart.d.ts.map +1 -0
  428. package/dist/2-core/chart/grid-chart.js +466 -0
  429. package/dist/2-core/ds-avatar.d.ts +20 -3
  430. package/dist/2-core/ds-avatar.d.ts.map +1 -1
  431. package/dist/2-core/ds-avatar.js +19 -5
  432. package/dist/2-core/ds-badge.js +10 -13
  433. package/dist/2-core/ds-banner.d.ts +23 -7
  434. package/dist/2-core/ds-banner.d.ts.map +1 -1
  435. package/dist/2-core/ds-banner.js +48 -12
  436. package/dist/2-core/ds-button.d.ts +76 -0
  437. package/dist/2-core/ds-button.d.ts.map +1 -1
  438. package/dist/2-core/ds-button.js +101 -26
  439. package/dist/2-core/ds-card.d.ts +76 -11
  440. package/dist/2-core/ds-card.d.ts.map +1 -1
  441. package/dist/2-core/ds-card.js +129 -105
  442. package/dist/2-core/ds-chart.d.ts +105 -0
  443. package/dist/2-core/ds-chart.d.ts.map +1 -0
  444. package/dist/2-core/ds-chart.js +390 -0
  445. package/dist/2-core/ds-composer.d.ts +7 -0
  446. package/dist/2-core/ds-composer.d.ts.map +1 -1
  447. package/dist/2-core/ds-composer.js +1 -1
  448. package/dist/2-core/ds-cycle.d.ts +36 -2
  449. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  450. package/dist/2-core/ds-cycle.js +95 -18
  451. package/dist/2-core/ds-empty.d.ts +74 -0
  452. package/dist/2-core/ds-empty.d.ts.map +1 -0
  453. package/dist/2-core/ds-empty.js +96 -0
  454. package/dist/2-core/ds-icon.d.ts +6 -0
  455. package/dist/2-core/ds-icon.d.ts.map +1 -1
  456. package/dist/2-core/ds-icon.js +12 -2
  457. package/dist/2-core/ds-input.d.ts +39 -1
  458. package/dist/2-core/ds-input.d.ts.map +1 -1
  459. package/dist/2-core/ds-input.js +150 -6
  460. package/dist/2-core/ds-kbd.d.ts +48 -0
  461. package/dist/2-core/ds-kbd.d.ts.map +1 -0
  462. package/dist/2-core/ds-kbd.js +65 -0
  463. package/dist/2-core/ds-language.d.ts +8 -1
  464. package/dist/2-core/ds-language.d.ts.map +1 -1
  465. package/dist/2-core/ds-language.js +2 -2
  466. package/dist/2-core/ds-loading.d.ts +40 -0
  467. package/dist/2-core/ds-loading.d.ts.map +1 -0
  468. package/dist/2-core/ds-loading.js +63 -0
  469. package/dist/2-core/ds-meter.d.ts +103 -0
  470. package/dist/2-core/ds-meter.d.ts.map +1 -0
  471. package/dist/2-core/ds-meter.js +124 -0
  472. package/dist/2-core/ds-notice.d.ts +103 -0
  473. package/dist/2-core/ds-notice.d.ts.map +1 -0
  474. package/dist/2-core/ds-notice.js +152 -0
  475. package/dist/2-core/ds-pagedots.d.ts +64 -7
  476. package/dist/2-core/ds-pagedots.d.ts.map +1 -1
  477. package/dist/2-core/ds-pagedots.js +124 -18
  478. package/dist/2-core/ds-progress.d.ts +200 -0
  479. package/dist/2-core/ds-progress.d.ts.map +1 -0
  480. package/dist/2-core/ds-progress.js +319 -0
  481. package/dist/2-core/ds-spacing-handle.d.ts +25 -0
  482. package/dist/2-core/ds-spacing-handle.d.ts.map +1 -0
  483. package/dist/2-core/ds-spacing-handle.js +25 -0
  484. package/dist/2-core/ds-split.d.ts +4 -67
  485. package/dist/2-core/ds-split.d.ts.map +1 -1
  486. package/dist/2-core/ds-split.js +4 -98
  487. package/dist/2-core/ds-stat.d.ts +126 -0
  488. package/dist/2-core/ds-stat.d.ts.map +1 -0
  489. package/dist/2-core/ds-stat.js +137 -0
  490. package/dist/2-core/ds-steps.d.ts +72 -0
  491. package/dist/2-core/ds-steps.d.ts.map +1 -0
  492. package/dist/2-core/ds-steps.js +114 -0
  493. package/dist/2-core/ds-switch.d.ts +1 -0
  494. package/dist/2-core/ds-switch.d.ts.map +1 -1
  495. package/dist/2-core/ds-switch.js +1 -0
  496. package/dist/2-core/ds-text.d.ts +15 -2
  497. package/dist/2-core/ds-text.d.ts.map +1 -1
  498. package/dist/2-core/ds-text.js +13 -0
  499. package/dist/2-core/ds-textarea.d.ts.map +1 -1
  500. package/dist/2-core/ds-textarea.js +1 -0
  501. package/dist/2-core/ds-toast.d.ts +139 -0
  502. package/dist/2-core/ds-toast.d.ts.map +1 -0
  503. package/dist/2-core/ds-toast.js +329 -0
  504. package/dist/2-core/ds-toggle.d.ts +11 -0
  505. package/dist/2-core/ds-toggle.d.ts.map +1 -0
  506. package/dist/2-core/ds-toggle.js +10 -0
  507. package/dist/2-core/figures.d.ts +56 -0
  508. package/dist/2-core/figures.d.ts.map +1 -0
  509. package/dist/2-core/figures.js +70 -0
  510. package/dist/2-core/generated/ds-icon-map.d.ts +118 -65
  511. package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
  512. package/dist/2-core/generated/ds-icon-map.js +234 -128
  513. package/dist/2-core/generated/icon-avatar.d.ts +2 -0
  514. package/dist/2-core/generated/icon-avatar.d.ts.map +1 -0
  515. package/dist/2-core/generated/icon-avatar.js +2 -0
  516. package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
  517. package/dist/2-core/generated/icons-extra.js +118 -65
  518. package/dist/2-core/generated/icons-immediate.d.ts +1 -1
  519. package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
  520. package/dist/2-core/generated/icons-immediate.js +1 -1
  521. package/dist/2-core/spacing-handle.d.ts +28 -0
  522. package/dist/2-core/spacing-handle.d.ts.map +1 -0
  523. package/dist/2-core/spacing-handle.js +146 -0
  524. package/dist/3-unit/calendar-base.d.ts +149 -0
  525. package/dist/3-unit/calendar-base.d.ts.map +1 -0
  526. package/dist/3-unit/calendar-base.js +172 -0
  527. package/dist/3-unit/ds-accordion.d.ts +9 -0
  528. package/dist/3-unit/ds-accordion.d.ts.map +1 -1
  529. package/dist/3-unit/ds-accordion.js +7 -1
  530. package/dist/3-unit/ds-avatar-group.d.ts +1 -0
  531. package/dist/3-unit/ds-avatar-group.d.ts.map +1 -1
  532. package/dist/3-unit/ds-calendar-large.d.ts +138 -0
  533. package/dist/3-unit/ds-calendar-large.d.ts.map +1 -0
  534. package/dist/3-unit/ds-calendar-large.js +305 -0
  535. package/dist/3-unit/ds-calendar.d.ts +175 -0
  536. package/dist/3-unit/ds-calendar.d.ts.map +1 -0
  537. package/dist/3-unit/ds-calendar.js +303 -0
  538. package/dist/3-unit/ds-carousel.d.ts +182 -0
  539. package/dist/3-unit/ds-carousel.d.ts.map +1 -0
  540. package/dist/3-unit/ds-carousel.js +327 -0
  541. package/dist/3-unit/ds-date-picker.d.ts +203 -0
  542. package/dist/3-unit/ds-date-picker.d.ts.map +1 -0
  543. package/dist/3-unit/ds-date-picker.js +499 -0
  544. package/dist/3-unit/ds-form.d.ts.map +1 -1
  545. package/dist/3-unit/ds-form.js +38 -28
  546. package/dist/3-unit/ds-list.d.ts +12 -0
  547. package/dist/3-unit/ds-list.d.ts.map +1 -1
  548. package/dist/3-unit/ds-list.js +52 -1
  549. package/dist/3-unit/ds-matrix.d.ts +146 -0
  550. package/dist/3-unit/ds-matrix.d.ts.map +1 -0
  551. package/dist/3-unit/ds-matrix.js +248 -0
  552. package/dist/3-unit/ds-menu.d.ts +1 -1
  553. package/dist/3-unit/ds-menu.d.ts.map +1 -1
  554. package/dist/3-unit/ds-menu.js +7 -4
  555. package/dist/3-unit/ds-row.d.ts +66 -0
  556. package/dist/3-unit/ds-row.d.ts.map +1 -1
  557. package/dist/3-unit/ds-row.js +80 -1
  558. package/dist/3-unit/ds-sidebar.d.ts +108 -0
  559. package/dist/3-unit/ds-sidebar.d.ts.map +1 -0
  560. package/dist/3-unit/ds-sidebar.js +268 -0
  561. package/dist/3-unit/ds-table.d.ts +28 -10
  562. package/dist/3-unit/ds-table.d.ts.map +1 -1
  563. package/dist/3-unit/ds-table.js +53 -25
  564. package/dist/3-unit/ds-tree.d.ts +69 -0
  565. package/dist/3-unit/ds-tree.d.ts.map +1 -0
  566. package/dist/3-unit/ds-tree.js +136 -0
  567. package/dist/4-page/ds-dialog.d.ts +16 -1
  568. package/dist/4-page/ds-dialog.d.ts.map +1 -1
  569. package/dist/4-page/ds-dialog.js +39 -3
  570. package/dist/4-page/ds-document.d.ts +98 -0
  571. package/dist/4-page/ds-document.d.ts.map +1 -0
  572. package/dist/4-page/ds-document.js +213 -0
  573. package/dist/4-page/ds-footer.d.ts +100 -0
  574. package/dist/4-page/ds-footer.d.ts.map +1 -0
  575. package/dist/4-page/ds-footer.js +119 -0
  576. package/dist/4-page/ds-grid.d.ts +32 -12
  577. package/dist/4-page/ds-grid.d.ts.map +1 -1
  578. package/dist/4-page/ds-grid.js +30 -39
  579. package/dist/4-page/ds-header.d.ts +84 -0
  580. package/dist/4-page/ds-header.d.ts.map +1 -0
  581. package/dist/4-page/ds-header.js +143 -0
  582. package/dist/4-page/ds-layout.d.ts +1 -0
  583. package/dist/4-page/ds-layout.d.ts.map +1 -1
  584. package/dist/4-page/ds-layout.js +1 -1
  585. package/dist/4-page/ds-page.d.ts +110 -0
  586. package/dist/4-page/ds-page.d.ts.map +1 -0
  587. package/dist/4-page/ds-page.js +155 -0
  588. package/dist/4-page/email.d.ts +2 -3
  589. package/dist/4-page/email.d.ts.map +1 -1
  590. package/dist/4-page/email.js +2 -3
  591. package/dist/components.d.ts +4 -1
  592. package/dist/components.d.ts.map +1 -1
  593. package/dist/components.js +4 -1
  594. package/dist/design-system-1.bundle.js +11304 -4322
  595. package/dist/design-system-1.bundle.js.map +1 -1
  596. package/dist/design-system-1.bundle.min.js +8867 -4132
  597. package/dist/design-system-1.bundle.min.js.map +1 -1
  598. package/dist/design-system-1.css +1 -1
  599. package/dist/feedback.js +541 -0
  600. package/dist/feedback.js.map +1 -0
  601. package/dist/icons-extra-B4Iotc7s.js +298 -0
  602. package/dist/icons-extra-B4Iotc7s.js.map +1 -0
  603. package/dist/icons-extra-C4sCgoUj.js +185 -0
  604. package/dist/icons-extra-C4sCgoUj.js.map +1 -0
  605. package/dist/icons-extra-DSav6uTU.js +300 -0
  606. package/dist/icons-extra-DSav6uTU.js.map +1 -0
  607. package/dist/icons-extra-Dc_yVWIz.js +1024 -0
  608. package/dist/icons-extra-Dc_yVWIz.js.map +1 -0
  609. package/dist/icons-extra-cfzoudMf.js +1030 -0
  610. package/dist/icons-extra-cfzoudMf.js.map +1 -0
  611. package/dist/icons-extra-g_xpwZhZ.js +631 -0
  612. package/dist/icons-extra-g_xpwZhZ.js.map +1 -0
  613. package/dist/index.d.ts +23 -6
  614. package/dist/index.d.ts.map +1 -1
  615. package/dist/index.js +23 -6
  616. package/dist/react/avatar.d.ts +5 -9
  617. package/dist/react/avatar.d.ts.map +1 -1
  618. package/dist/react/avatar.js +2 -2
  619. package/dist/react/button-split.d.ts +19 -0
  620. package/dist/react/button-split.d.ts.map +1 -0
  621. package/dist/react/button-split.js +35 -0
  622. package/dist/react/button.d.ts +18 -7
  623. package/dist/react/button.d.ts.map +1 -1
  624. package/dist/react/button.js +13 -4
  625. package/dist/react/carousel.d.ts +63 -0
  626. package/dist/react/carousel.d.ts.map +1 -0
  627. package/dist/react/carousel.js +47 -0
  628. package/dist/react/choice.d.ts +1 -1
  629. package/dist/react/context-menu.d.ts +337 -337
  630. package/dist/react/dialog.d.ts +684 -678
  631. package/dist/react/dialog.d.ts.map +1 -1
  632. package/dist/react/dialog.js +29 -3
  633. package/dist/react/document.d.ts +11 -0
  634. package/dist/react/document.d.ts.map +1 -0
  635. package/dist/react/document.js +10 -0
  636. package/dist/react/empty.d.ts +34 -0
  637. package/dist/react/empty.d.ts.map +1 -0
  638. package/dist/react/empty.js +8 -0
  639. package/dist/react/file-picker.d.ts +1 -1
  640. package/dist/react/footer.d.ts +13 -0
  641. package/dist/react/footer.d.ts.map +1 -0
  642. package/dist/react/footer.js +12 -0
  643. package/dist/react/header.d.ts +12 -0
  644. package/dist/react/header.d.ts.map +1 -0
  645. package/dist/react/header.js +11 -0
  646. package/dist/react/input.d.ts +31 -9
  647. package/dist/react/input.d.ts.map +1 -1
  648. package/dist/react/input.js +94 -94
  649. package/dist/react/kbd.d.ts +26 -0
  650. package/dist/react/kbd.d.ts.map +1 -0
  651. package/dist/react/kbd.js +8 -0
  652. package/dist/react/loading.d.ts +14 -0
  653. package/dist/react/loading.d.ts.map +1 -0
  654. package/dist/react/loading.js +14 -0
  655. package/dist/react/meter.d.ts +64 -0
  656. package/dist/react/meter.d.ts.map +1 -0
  657. package/dist/react/meter.js +15 -0
  658. package/dist/react/notice.d.ts +45 -0
  659. package/dist/react/notice.d.ts.map +1 -0
  660. package/dist/react/notice.js +34 -0
  661. package/dist/react/page.d.ts +10 -0
  662. package/dist/react/page.d.ts.map +1 -0
  663. package/dist/react/page.js +9 -0
  664. package/dist/react/progress.d.ts +107 -0
  665. package/dist/react/progress.d.ts.map +1 -0
  666. package/dist/react/progress.js +47 -0
  667. package/dist/react/sidebar.d.ts +44 -0
  668. package/dist/react/sidebar.d.ts.map +1 -0
  669. package/dist/react/sidebar.js +41 -0
  670. package/dist/react/spacing-handle.d.ts +13 -0
  671. package/dist/react/spacing-handle.d.ts.map +1 -0
  672. package/dist/react/spacing-handle.js +18 -0
  673. package/dist/react/split.d.ts +6 -14
  674. package/dist/react/split.d.ts.map +1 -1
  675. package/dist/react/split.js +5 -31
  676. package/dist/react/stat.d.ts +78 -0
  677. package/dist/react/stat.d.ts.map +1 -0
  678. package/dist/react/stat.js +25 -0
  679. package/dist/react/steps.d.ts +36 -0
  680. package/dist/react/steps.d.ts.map +1 -0
  681. package/dist/react/steps.js +10 -0
  682. package/dist/react/toast.d.ts +37 -0
  683. package/dist/react/toast.d.ts.map +1 -0
  684. package/dist/react/toast.js +55 -0
  685. package/dist/react/tree.d.ts +31 -0
  686. package/dist/react/tree.d.ts.map +1 -0
  687. package/dist/react/tree.js +37 -0
  688. package/dist/shared-words-BfnT24Fe.js +1635 -0
  689. package/dist/shared-words-BfnT24Fe.js.map +1 -0
  690. package/dist/shared-words-CyZYc_De.js +1818 -0
  691. package/dist/shared-words-CyZYc_De.js.map +1 -0
  692. package/dist/shared-words-DAVSET4Z.js +1800 -0
  693. package/dist/shared-words-DAVSET4Z.js.map +1 -0
  694. package/dist/shared-words-UCvnkctb.js +1653 -0
  695. package/dist/shared-words-UCvnkctb.js.map +1 -0
  696. package/package.json +16 -5
  697. package/DS1/2-core/ds-banner.ts +0 -122
  698. package/DS1/2-core/ds-date.ts +0 -24
  699. package/DS1/2-core/ds-language.ts +0 -94
  700. package/DS1/2-core/ds-pagedots.ts +0 -52
  701. package/DS1/2-core/ds-split.ts +0 -122
  702. package/DS1/2-core/ds-textarea.ts +0 -136
  703. package/DS1/2-core/styles/ds-banner.css +0 -77
  704. package/DS1/2-core/styles/ds-date.css +0 -9
  705. package/DS1/2-core/styles/ds-language.css +0 -78
  706. package/DS1/2-core/styles/ds-pagedots.css +0 -31
  707. package/DS1/2-core/styles/ds-textarea.css +0 -27
  708. package/DS1/4-page/ds-layout.ts +0 -949
  709. package/DS1/4-page/styles/ds-layout.css +0 -246
  710. package/DS1/react/split.ts +0 -42
  711. package/DS1/x-icon/ezo-accordion-chevron.svg +0 -11
  712. package/DS1/x-icon/ezo-account-close.svg +0 -1
  713. package/DS1/x-icon/ezo-android-screen-archive.svg +0 -4
  714. package/DS1/x-icon/ezo-android-screen-calendar.svg +0 -6
  715. package/DS1/x-icon/ezo-android-screen-camera.svg +0 -5
  716. package/DS1/x-icon/ezo-android-screen-check.svg +0 -3
  717. package/DS1/x-icon/ezo-android-screen-compose.svg +0 -4
  718. package/DS1/x-icon/ezo-android-screen-globe.svg +0 -1
  719. package/DS1/x-icon/ezo-android-screen-shared.svg +0 -5
  720. package/DS1/x-icon/ezo-android-screen-store.svg +0 -4
  721. package/DS1/x-icon/ezo-android-screen-views.svg +0 -4
  722. package/DS1/x-icon/ezo-android-screen-work.svg +0 -3
  723. package/DS1/x-icon/ezo-arrow-cursor.svg +0 -8
  724. package/DS1/x-icon/ezo-block-accordion.svg +0 -1
  725. package/DS1/x-icon/ezo-block-divider.svg +0 -1
  726. package/DS1/x-icon/ezo-block-group.svg +0 -1
  727. package/DS1/x-icon/ezo-block-image.svg +0 -1
  728. package/DS1/x-icon/ezo-block-section.svg +0 -1
  729. package/DS1/x-icon/ezo-block-table.svg +0 -1
  730. package/DS1/x-icon/ezo-code.svg +0 -14
  731. package/DS1/x-icon/ezo-down.svg +0 -3
  732. package/DS1/x-icon/ezo-figma-premium-star.svg +0 -5
  733. package/DS1/x-icon/ezo-item-button-complete.svg +0 -4
  734. package/DS1/x-icon/ezo-item-button-header.svg +0 -3
  735. package/DS1/x-icon/ezo-item-button-open.svg +0 -3
  736. package/DS1/x-icon/ezo-item-button-star.svg +0 -3
  737. package/DS1/x-icon/ezo-item-button-unheader.svg +0 -7
  738. package/DS1/x-icon/ezo-item-button-unstar.svg +0 -5
  739. package/DS1/x-icon/ezo-item-star.svg +0 -5
  740. package/DS1/x-icon/ezo-left.svg +0 -3
  741. package/DS1/x-icon/ezo-logo.svg +0 -1
  742. package/DS1/x-icon/ezo-mic.svg +0 -8
  743. package/DS1/x-icon/ezo-move-column.svg +0 -14
  744. package/DS1/x-icon/ezo-move-row.svg +0 -18
  745. package/DS1/x-icon/ezo-navigation-check.svg +0 -1
  746. package/DS1/x-icon/ezo-note-back.svg +0 -5
  747. package/DS1/x-icon/ezo-note-menu-complete.svg +0 -11
  748. package/DS1/x-icon/ezo-note-menu-delete.svg +0 -4
  749. package/DS1/x-icon/ezo-note-menu-duplicate.svg +0 -8
  750. package/DS1/x-icon/ezo-note-menu-note.svg +0 -5
  751. package/DS1/x-icon/ezo-note-menu-page.svg +0 -3
  752. package/DS1/x-icon/ezo-note-menu-star.svg +0 -5
  753. package/DS1/x-icon/ezo-note-menu-start.svg +0 -6
  754. package/DS1/x-icon/ezo-note-menu-stop.svg +0 -6
  755. package/DS1/x-icon/ezo-note-more.svg +0 -7
  756. package/DS1/x-icon/ezo-note-star.svg +0 -5
  757. package/DS1/x-icon/ezo-pattern-call-to-action.svg +0 -1
  758. package/DS1/x-icon/ezo-play.svg +0 -5
  759. package/DS1/x-icon/ezo-premium-star.svg +0 -5
  760. package/DS1/x-icon/ezo-setting-1xdots.svg +0 -13
  761. package/DS1/x-icon/ezo-setting-1xgrid.svg +0 -10
  762. package/DS1/x-icon/ezo-setting-1xlines.svg +0 -7
  763. package/DS1/x-icon/ezo-setting-2xdots.svg +0 -8
  764. package/DS1/x-icon/ezo-setting-2xgrid.svg +0 -8
  765. package/DS1/x-icon/ezo-setting-2xlines.svg +0 -6
  766. package/DS1/x-icon/ezo-setting-blank.svg +0 -5
  767. package/DS1/x-icon/ezo-store-chevron.svg +0 -1
  768. package/DS1/x-icon/ezo-upgrade-close.svg +0 -5
  769. package/DS1/x-icon/product-sources.json +0 -2557
  770. /package/DS1/x-icon/{ezo-password-visibility-see.svg → password-see.svg} +0 -0
  771. /package/DS1/x-icon/{ezo-password-visibility-unsee.svg → password-unsee.svg} +0 -0
@@ -0,0 +1,124 @@
1
+ // ds-meter.ts
2
+ // How much of a range a value fills, one square high: a bar half a square
3
+ // high, or the range in squares. Past the end it is "over", filled whole in
4
+ // the danger colour. Drawn by 1-root/figures.css, the same classes a page
5
+ // without scripts writes.
6
+ import { LitElement, html, unsafeCSS } from "lit";
7
+ import { getText } from "../0-face/i18n";
8
+ import { define } from "../0-face/define";
9
+ import { figureFormat, meterAria } from "./figures";
10
+ import metrics from "../1-root/component-metrics.css?inline";
11
+ import figures from "../1-root/figures.css?inline";
12
+ import styles from "./styles/ds-meter.css?inline";
13
+ /** The most squares a meter draws. */
14
+ const MOST_SQUARES = 100;
15
+ /**
16
+ * @element ds-meter
17
+ * @prop {number} value - The value. Past `max`, the meter is over.
18
+ * @prop {number} min - The start of the range, 0 by default.
19
+ * @prop {number} max - The end of the range, 1 by default.
20
+ * @prop {number} squares - Draw the range in this many squares, one square each, instead of a bar.
21
+ * @prop {boolean} over - Show the meter as over whatever its value, where the page decides it.
22
+ * @prop {string} label - The meter's name for assistive technology: a translation key, or literal words.
23
+ * @prop {string} valuetext - What the value says (`aria-valuetext`), in place of "7 of 10".
24
+ * @prop {"number" | "compact" | "percent" | "money"} format - How the value and the range are written in the words.
25
+ * @prop {string} currency - The ISO 4217 code for money.
26
+ * @prop {boolean} minor - The money is counted in the currency's minor unit.
27
+ * @prop {boolean} whole - Money in whole units only.
28
+ * @prop {number} digits - Decimals in the words.
29
+ * @prop {boolean} literal - Show `label` and `valuetext` as written, never looked up.
30
+ *
31
+ * The element is `role="meter"` with `aria-valuenow`, `aria-valuemin`,
32
+ * `aria-valuemax` and `aria-valuetext`. `aria-valuenow` stays inside the
33
+ * range, as ARIA requires; the words say when the value is past its end
34
+ * ("12 of 10, over by 2").
35
+ *
36
+ * @example
37
+ * <ds-meter label="Spent" value="7400" max="10000" format="money" currency="DKK"></ds-meter>
38
+ * <ds-meter label="Seats" value="7" max="10" squares="10"></ds-meter>
39
+ */
40
+ export class Meter extends LitElement {
41
+ constructor() {
42
+ super();
43
+ this.relabel = () => this.requestUpdate();
44
+ this.value = 0;
45
+ this.min = 0;
46
+ this.max = 1;
47
+ this.over = false;
48
+ this.format = "number";
49
+ this.minor = false;
50
+ this.whole = false;
51
+ this.literal = false;
52
+ }
53
+ connectedCallback() {
54
+ super.connectedCallback();
55
+ window.addEventListener("language-changed", this.relabel);
56
+ window.addEventListener("translations-loaded", this.relabel);
57
+ window.addEventListener("translations-ready", this.relabel);
58
+ }
59
+ disconnectedCallback() {
60
+ window.removeEventListener("language-changed", this.relabel);
61
+ window.removeEventListener("translations-loaded", this.relabel);
62
+ window.removeEventListener("translations-ready", this.relabel);
63
+ super.disconnectedCallback();
64
+ }
65
+ words(value) {
66
+ if (!value)
67
+ return "";
68
+ return this.literal ? value : getText(value) || value;
69
+ }
70
+ /** The values the meter says and draws, in the current language. */
71
+ get aria() {
72
+ return meterAria(this.value, this.min, this.max, {
73
+ over: this.over, format: figureFormat(this.format), currency: this.currency,
74
+ minor: this.minor, whole: this.whole, digits: this.digits,
75
+ });
76
+ }
77
+ /** How many squares the range is drawn in, or 0 for a bar. */
78
+ get squareCount() {
79
+ const count = Math.floor(Number(this.squares));
80
+ return Number.isFinite(count) && count > 0 ? Math.min(MOST_SQUARES, count) : 0;
81
+ }
82
+ willUpdate(changed) {
83
+ super.willUpdate(changed);
84
+ const aria = this.aria;
85
+ const label = this.words(this.label);
86
+ this.setAttribute("role", "meter");
87
+ this.setAttribute("aria-valuenow", String(aria.now));
88
+ this.setAttribute("aria-valuemin", String(aria.min));
89
+ this.setAttribute("aria-valuemax", String(aria.max));
90
+ this.setAttribute("aria-valuetext", this.words(this.valuetext) || aria.text);
91
+ if (label)
92
+ this.setAttribute("aria-label", label);
93
+ else if (changed.has("label"))
94
+ this.removeAttribute("aria-label");
95
+ this.toggleAttribute("data-over", aria.over);
96
+ }
97
+ render() {
98
+ const aria = this.aria;
99
+ const count = this.squareCount;
100
+ const over = aria.over ? " ds-meter--over" : "";
101
+ if (count) {
102
+ const on = Math.round(aria.fraction * count);
103
+ return html `<div class="ds-meter ds-meter--squares${over}" part="meter">${Array.from({ length: count }, (_, index) => html `<span class="ds-meter__square${index < on ? " ds-meter__square--on" : ""}" part="square"></span>`)}</div>`;
104
+ }
105
+ return html `<div class="ds-meter${over}" part="meter" style="--ds-meter-value: ${aria.fraction}"><span class="ds-meter__fill" part="fill"></span></div>`;
106
+ }
107
+ }
108
+ Meter.properties = {
109
+ value: { type: Number },
110
+ min: { type: Number },
111
+ max: { type: Number },
112
+ squares: { type: Number },
113
+ over: { type: Boolean, reflect: true },
114
+ label: { type: String },
115
+ valuetext: { type: String },
116
+ format: { type: String },
117
+ currency: { type: String },
118
+ minor: { type: Boolean },
119
+ whole: { type: Boolean },
120
+ digits: { type: Number },
121
+ literal: { type: Boolean, reflect: true },
122
+ };
123
+ Meter.styles = [unsafeCSS(metrics), unsafeCSS(figures), unsafeCSS(styles)];
124
+ define("ds-meter", Meter);
@@ -0,0 +1,103 @@
1
+ import { LitElement, type PropertyValues } from "lit";
2
+ import "./ds-icon";
3
+ export type NoticeTone = "neutral" | "success" | "warning" | "danger";
4
+ /** The icon each tone's mark carries unless `icon` names another. */
5
+ export declare const NOTICE_ICONS: Readonly<Record<NoticeTone, string>>;
6
+ /** Detail of `ds-notice-dismiss`. Cancel the event to keep the notice and remove it yourself. */
7
+ export interface NoticeDismissDetail {
8
+ tone: NoticeTone;
9
+ }
10
+ /**
11
+ * @element ds-notice
12
+ * @prop {"neutral" | "success" | "warning" | "danger"} tone - The mark's colour
13
+ * and icon; danger also turns the words into the danger colour. Neutral by default.
14
+ * @prop {string} heading - A title: a translation key, or literal words.
15
+ * @prop {string} text - The text: a translation key, or literal words.
16
+ * @prop {boolean} literal - Show `heading` and `text` as written, never looked up.
17
+ * @prop {string} icon - An icon from the library in place of the tone's own.
18
+ * @prop {boolean} dismissible - Show a close button at the end of the first line.
19
+ * @prop {boolean} banner - A strip one square high across the top of its
20
+ * positioning context, filled in the tone's colour, its words, actions and
21
+ * close button on one line; it reserves no room in the flow.
22
+ *
23
+ * @slot - The text, when it needs more than words: a link, a strong word.
24
+ * @slot heading - The title, as inline content.
25
+ * @slot icon - An icon of the page's own inside the mark.
26
+ * @slot actions - Buttons or links on the row under the words.
27
+ *
28
+ * @fires ds-notice-dismiss - The close button was pressed. Cancelable: unless
29
+ * it is cancelled, the notice hides itself.
30
+ *
31
+ * The element is a live region: `role="status"`, or `role="alert"` for danger,
32
+ * unless the page gives it a role of its own.
33
+ *
34
+ * @example
35
+ * <ds-notice tone="danger" heading="Couldn't save" dismissible>
36
+ * Your changes are kept on this device.
37
+ * <ds-button slot="actions" secondary>Try again</ds-button>
38
+ * </ds-notice>
39
+ */
40
+ export declare class Notice extends LitElement {
41
+ static properties: {
42
+ tone: {
43
+ type: StringConstructor;
44
+ reflect: boolean;
45
+ };
46
+ heading: {
47
+ type: StringConstructor;
48
+ };
49
+ text: {
50
+ type: StringConstructor;
51
+ };
52
+ literal: {
53
+ type: BooleanConstructor;
54
+ reflect: boolean;
55
+ };
56
+ icon: {
57
+ type: StringConstructor;
58
+ };
59
+ dismissible: {
60
+ type: BooleanConstructor;
61
+ reflect: boolean;
62
+ };
63
+ banner: {
64
+ type: BooleanConstructor;
65
+ reflect: boolean;
66
+ };
67
+ };
68
+ static styles: import("lit").CSSResult[];
69
+ tone: NoticeTone;
70
+ heading: string | undefined;
71
+ text: string | undefined;
72
+ literal: boolean;
73
+ icon: string | undefined;
74
+ dismissible: boolean;
75
+ banner: boolean;
76
+ /** The role this element last set, so a role the page wrote is left alone. */
77
+ private ownRole;
78
+ private readonly relabel;
79
+ constructor();
80
+ /** The tone in effect: an unknown value reads as neutral. */
81
+ get resolvedTone(): NoticeTone;
82
+ connectedCallback(): void;
83
+ disconnectedCallback(): void;
84
+ protected willUpdate(changed: PropertyValues<this>): void;
85
+ private syncRole;
86
+ private words;
87
+ /**
88
+ * Whether light-DOM content fills a slot: elements, or text that is not
89
+ * blank. The blank text between slotted children still counts as assigned
90
+ * to the default slot and hides its fallback, so `text` is drawn beside the
91
+ * slot rather than inside it.
92
+ */
93
+ private slotted;
94
+ /** Ask to close: hides the notice unless a listener cancels `ds-notice-dismiss`. */
95
+ dismiss(): boolean;
96
+ render(): import("lit").TemplateResult<1>;
97
+ }
98
+ declare global {
99
+ interface HTMLElementTagNameMap {
100
+ "ds-notice": Notice;
101
+ }
102
+ }
103
+ //# sourceMappingURL=ds-notice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-notice.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-notice.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAA4B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhF,OAAO,WAAW,CAAC;AAKnB,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtE,qEAAqE;AACrE,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAK7D,CAAC;AAEF,iGAAiG;AACjG,MAAM,WAAW,mBAAmB;IAAG,IAAI,EAAE,UAAU,CAAA;CAAE;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;MAQf;IAEF,MAAM,CAAC,MAAM,4BAAgE;IAErE,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAExB,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;;IAUtD,6DAA6D;IAC7D,IAAI,YAAY,IAAI,UAAU,CAE7B;IAED,iBAAiB;IAOjB,oBAAoB;IAMpB,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAKlD,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,KAAK;IAKb;;;;;OAKG;IACH,OAAO,CAAC,OAAO;IAMf,oFAAoF;IACpF,OAAO,IAAI,OAAO;IASlB,MAAM;CAuBP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
@@ -0,0 +1,152 @@
1
+ // ds-notice.ts
2
+ // An inline notice in the flow of the page: a tone, a title and/or text,
3
+ // actions and an optional dismiss; with `banner`, a strip across the top of
4
+ // its positioning context instead. Drawn by 1-root/notice.css, the same
5
+ // classes a page without scripts writes.
6
+ import { LitElement, html, nothing, unsafeCSS } from "lit";
7
+ import { getText } from "../0-face/i18n";
8
+ import { define } from "../0-face/define";
9
+ import "./ds-icon";
10
+ import metrics from "../1-root/component-metrics.css?inline";
11
+ import controls from "../1-root/controls.css?inline";
12
+ import styles from "./styles/ds-notice.css?inline";
13
+ const TONES = ["neutral", "success", "warning", "danger"];
14
+ /** The icon each tone's mark carries unless `icon` names another. */
15
+ export const NOTICE_ICONS = {
16
+ neutral: "info",
17
+ success: "check",
18
+ warning: "warning",
19
+ danger: "warning",
20
+ };
21
+ /**
22
+ * @element ds-notice
23
+ * @prop {"neutral" | "success" | "warning" | "danger"} tone - The mark's colour
24
+ * and icon; danger also turns the words into the danger colour. Neutral by default.
25
+ * @prop {string} heading - A title: a translation key, or literal words.
26
+ * @prop {string} text - The text: a translation key, or literal words.
27
+ * @prop {boolean} literal - Show `heading` and `text` as written, never looked up.
28
+ * @prop {string} icon - An icon from the library in place of the tone's own.
29
+ * @prop {boolean} dismissible - Show a close button at the end of the first line.
30
+ * @prop {boolean} banner - A strip one square high across the top of its
31
+ * positioning context, filled in the tone's colour, its words, actions and
32
+ * close button on one line; it reserves no room in the flow.
33
+ *
34
+ * @slot - The text, when it needs more than words: a link, a strong word.
35
+ * @slot heading - The title, as inline content.
36
+ * @slot icon - An icon of the page's own inside the mark.
37
+ * @slot actions - Buttons or links on the row under the words.
38
+ *
39
+ * @fires ds-notice-dismiss - The close button was pressed. Cancelable: unless
40
+ * it is cancelled, the notice hides itself.
41
+ *
42
+ * The element is a live region: `role="status"`, or `role="alert"` for danger,
43
+ * unless the page gives it a role of its own.
44
+ *
45
+ * @example
46
+ * <ds-notice tone="danger" heading="Couldn't save" dismissible>
47
+ * Your changes are kept on this device.
48
+ * <ds-button slot="actions" secondary>Try again</ds-button>
49
+ * </ds-notice>
50
+ */
51
+ export class Notice extends LitElement {
52
+ constructor() {
53
+ super();
54
+ /** The role this element last set, so a role the page wrote is left alone. */
55
+ this.ownRole = null;
56
+ this.relabel = () => this.requestUpdate();
57
+ this.tone = "neutral";
58
+ this.literal = false;
59
+ this.dismissible = false;
60
+ this.banner = false;
61
+ }
62
+ /** The tone in effect: an unknown value reads as neutral. */
63
+ get resolvedTone() {
64
+ return TONES.includes(this.tone) ? this.tone : "neutral";
65
+ }
66
+ connectedCallback() {
67
+ super.connectedCallback();
68
+ window.addEventListener("language-changed", this.relabel);
69
+ window.addEventListener("translations-loaded", this.relabel);
70
+ this.syncRole();
71
+ }
72
+ disconnectedCallback() {
73
+ window.removeEventListener("language-changed", this.relabel);
74
+ window.removeEventListener("translations-loaded", this.relabel);
75
+ super.disconnectedCallback();
76
+ }
77
+ willUpdate(changed) {
78
+ super.willUpdate(changed);
79
+ if (changed.has("tone"))
80
+ this.syncRole();
81
+ }
82
+ syncRole() {
83
+ if (!this.isConnected)
84
+ return;
85
+ const current = this.getAttribute("role");
86
+ if (current !== null && current !== this.ownRole)
87
+ return;
88
+ this.ownRole = this.resolvedTone === "danger" ? "alert" : "status";
89
+ if (current !== this.ownRole)
90
+ this.setAttribute("role", this.ownRole);
91
+ }
92
+ words(value) {
93
+ if (!value)
94
+ return "";
95
+ return this.literal ? value : getText(value) || value;
96
+ }
97
+ /**
98
+ * Whether light-DOM content fills a slot: elements, or text that is not
99
+ * blank. The blank text between slotted children still counts as assigned
100
+ * to the default slot and hides its fallback, so `text` is drawn beside the
101
+ * slot rather than inside it.
102
+ */
103
+ slotted(name) {
104
+ return [...this.childNodes].some(node => name
105
+ ? node instanceof Element && node.getAttribute("slot") === name
106
+ : node instanceof Element ? !node.hasAttribute("slot") : node.nodeType === Node.TEXT_NODE && Boolean(node.textContent?.trim()));
107
+ }
108
+ /** Ask to close: hides the notice unless a listener cancels `ds-notice-dismiss`. */
109
+ dismiss() {
110
+ const event = new CustomEvent("ds-notice-dismiss", {
111
+ bubbles: true, composed: true, cancelable: true, detail: { tone: this.resolvedTone },
112
+ });
113
+ if (!this.dispatchEvent(event))
114
+ return false;
115
+ this.hidden = true;
116
+ return true;
117
+ }
118
+ render() {
119
+ const tone = this.resolvedTone;
120
+ const heading = this.words(this.heading);
121
+ const text = this.words(this.text);
122
+ const hasHeading = Boolean(heading) || this.slotted("heading");
123
+ const slottedText = this.slotted("");
124
+ const hasText = Boolean(text) || slottedText;
125
+ const hasActions = this.slotted("actions");
126
+ const changed = () => this.requestUpdate();
127
+ return html `<div class="ds-notice${tone === "neutral" ? "" : ` ds-notice--${tone}`}${this.banner ? " ds-notice--banner" : ""}" part="notice">
128
+ <span class="ds-notice__mark" part="mark" aria-hidden="true">
129
+ <slot name="icon" @slotchange=${changed}><ds-icon size="large" .type=${this.icon || NOTICE_ICONS[tone]}></ds-icon></slot>
130
+ </span>
131
+ <div class="ds-notice__title" part="title" ?hidden=${!hasHeading}><slot name="heading" @slotchange=${changed}>${heading}</slot></div>
132
+ <div class="ds-notice__text" part="text" ?hidden=${!hasText}><slot @slotchange=${changed}></slot>${slottedText ? nothing : text}</div>
133
+ <div class="ds-notice__actions" part="actions" ?hidden=${!hasActions}><slot name="actions" @slotchange=${changed}></slot></div>
134
+ ${this.dismissible
135
+ ? html `<button class="ds-button ds-button--icon ds-notice__dismiss" part="dismiss" type="button" aria-label=${getText("Close") || "Close"} @click=${() => this.dismiss()}>
136
+ <ds-icon type="close" aria-hidden="true"></ds-icon>
137
+ </button>`
138
+ : nothing}
139
+ </div>`;
140
+ }
141
+ }
142
+ Notice.properties = {
143
+ tone: { type: String, reflect: true },
144
+ heading: { type: String },
145
+ text: { type: String },
146
+ literal: { type: Boolean, reflect: true },
147
+ icon: { type: String },
148
+ dismissible: { type: Boolean, reflect: true },
149
+ banner: { type: Boolean, reflect: true },
150
+ };
151
+ Notice.styles = [unsafeCSS(metrics), unsafeCSS(controls), unsafeCSS(styles)];
152
+ define("ds-notice", Notice);
@@ -1,27 +1,84 @@
1
- import { LitElement } from "lit";
1
+ import { LitElement, type PropertyValues } from "lit";
2
+ /** Detail of `select`. Cancel the event to keep the current dot where it is. */
3
+ export interface PagedotsSelectDetail {
4
+ /** The dot picked, from 0. */
5
+ index: number;
6
+ /** The dot that was current. */
7
+ previous: number;
8
+ }
2
9
  /**
3
- * Page dots indicator component for carousels and pagination.
10
+ * @element ds-pagedots
11
+ * @prop {number} count - How many dots. Three by default.
12
+ * @prop {number} active - The current dot, from 0.
13
+ * @prop {boolean} end - Draw the last dot as an end marker (a ring in the
14
+ * text colour) unless it is current: a way on to something else.
15
+ * @prop {string} label - The group's name: a translation key, or literal
16
+ * words. The shared word "Slides" by default.
17
+ * @prop {string} dotLabel - Each dot's name, with `{index}` for its number
18
+ * from 1: the shared words' "Slide {index}" by default.
19
+ * @prop {boolean} literal - Show `label` and `dotLabel` as written, never looked up.
20
+ *
21
+ * @fires select - A person picked a dot, by a click or a key. `detail` is
22
+ * `{ index, previous }`. Cancelable: unless it is cancelled, the dot becomes
23
+ * current.
24
+ *
25
+ * The element is a group of buttons. Only the current dot is in the tab
26
+ * order; the arrow keys (following the reading direction), Home and End move
27
+ * to the others and pick them.
4
28
  *
5
- * Usage:
6
- * - <ds-pagedots count="3" active="0"></ds-pagedots>
29
+ * @example
30
+ * <ds-pagedots count="5" active="1"></ds-pagedots>
7
31
  */
8
32
  export declare class Pagedots extends LitElement {
9
33
  static properties: {
10
- /** Number of dots to display */
11
34
  count: {
12
35
  type: NumberConstructor;
13
36
  reflect: boolean;
14
37
  };
15
- /** Index of the active dot (0-based) */
16
38
  active: {
17
39
  type: NumberConstructor;
18
40
  reflect: boolean;
19
41
  };
42
+ end: {
43
+ type: BooleanConstructor;
44
+ reflect: boolean;
45
+ };
46
+ label: {
47
+ type: StringConstructor;
48
+ };
49
+ dotLabel: {
50
+ type: StringConstructor;
51
+ attribute: string;
52
+ };
53
+ literal: {
54
+ type: BooleanConstructor;
55
+ reflect: boolean;
56
+ };
20
57
  };
58
+ static styles: import("lit").CSSResult[];
21
59
  count: number;
22
60
  active: number;
61
+ end: boolean;
62
+ label: string | undefined;
63
+ dotLabel: string | undefined;
64
+ literal: boolean;
65
+ /** The role this element last set, so a role the page wrote is left alone. */
66
+ private ownRole;
67
+ private focusAfterUpdate;
68
+ private readonly relabel;
23
69
  constructor();
24
- static styles: import("lit").CSSResult;
70
+ /** The number of dots drawn: a whole number, never below zero. */
71
+ get dots(): number;
72
+ /** The current dot, inside the count. */
73
+ get current(): number;
74
+ connectedCallback(): void;
75
+ disconnectedCallback(): void;
76
+ private words;
77
+ protected willUpdate(changed: PropertyValues<this>): void;
78
+ protected updated(changed: PropertyValues<this>): void;
79
+ /** Pick a dot as a person would: fires `select` and, unless it is cancelled, makes it current. */
80
+ select(index: number): boolean;
81
+ private keydown;
25
82
  render(): import("lit").TemplateResult<1>;
26
83
  }
27
84
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"ds-pagedots.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-pagedots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAGlD;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,UAAU;QACf,gCAAgC;;;;;QAEhC,wCAAwC;;;;;MAExC;IAEM,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;;IAQvB,MAAM,CAAC,MAAM,0BAAqB;IAElC,MAAM;CAeP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,QAAQ,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"ds-pagedots.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-pagedots.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAQvE,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;MAOf;IAEF,MAAM,CAAC,MAAM,4BAAgE;IAErE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEzB,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;;IAUtD,kEAAkE;IAClE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,yCAAyC;IACzC,IAAI,OAAO,IAAI,MAAM,CAGpB;IAED,iBAAiB;IAWjB,oBAAoB;IAMpB,OAAO,CAAC,KAAK;IAKb,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAKlD,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAO/C,kGAAkG;IAClG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW9B,OAAO,CAAC,OAAO;IAYf,MAAM;CAmBP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,QAAQ,CAAC;KACzB;CACF"}
@@ -1,36 +1,142 @@
1
+ // ds-pagedots.ts
2
+ // A dot for each slide or page, one square each: the ones passed, the current
3
+ // one, the next and the rest, and an optional end marker. Pressing a dot or
4
+ // moving with the arrow keys, Home and End fires `select`. Drawn by
5
+ // 1-root/carousel.css, the same classes a page without scripts writes.
1
6
  import { LitElement, html, unsafeCSS } from "lit";
7
+ import { getText } from "../0-face/i18n";
8
+ import { define } from "../0-face/define";
9
+ import { dotForKey, dotState } from "../0-face/carousel";
10
+ import metrics from "../1-root/component-metrics.css?inline";
11
+ import carousel from "../1-root/carousel.css?inline";
2
12
  import styles from "./styles/ds-pagedots.css?inline";
3
13
  /**
4
- * Page dots indicator component for carousels and pagination.
14
+ * @element ds-pagedots
15
+ * @prop {number} count - How many dots. Three by default.
16
+ * @prop {number} active - The current dot, from 0.
17
+ * @prop {boolean} end - Draw the last dot as an end marker (a ring in the
18
+ * text colour) unless it is current: a way on to something else.
19
+ * @prop {string} label - The group's name: a translation key, or literal
20
+ * words. The shared word "Slides" by default.
21
+ * @prop {string} dotLabel - Each dot's name, with `{index}` for its number
22
+ * from 1: the shared words' "Slide {index}" by default.
23
+ * @prop {boolean} literal - Show `label` and `dotLabel` as written, never looked up.
5
24
  *
6
- * Usage:
7
- * - <ds-pagedots count="3" active="0"></ds-pagedots>
25
+ * @fires select - A person picked a dot, by a click or a key. `detail` is
26
+ * `{ index, previous }`. Cancelable: unless it is cancelled, the dot becomes
27
+ * current.
28
+ *
29
+ * The element is a group of buttons. Only the current dot is in the tab
30
+ * order; the arrow keys (following the reading direction), Home and End move
31
+ * to the others and pick them.
32
+ *
33
+ * @example
34
+ * <ds-pagedots count="5" active="1"></ds-pagedots>
8
35
  */
9
36
  export class Pagedots extends LitElement {
10
37
  constructor() {
11
38
  super();
39
+ /** The role this element last set, so a role the page wrote is left alone. */
40
+ this.ownRole = null;
41
+ this.focusAfterUpdate = false;
42
+ this.relabel = () => this.requestUpdate();
12
43
  this.count = 3;
13
44
  this.active = 0;
45
+ this.end = false;
46
+ this.literal = false;
47
+ }
48
+ /** The number of dots drawn: a whole number, never below zero. */
49
+ get dots() {
50
+ return Number.isFinite(this.count) ? Math.max(0, Math.floor(this.count)) : 0;
51
+ }
52
+ /** The current dot, inside the count. */
53
+ get current() {
54
+ const active = Number.isFinite(this.active) ? Math.floor(this.active) : 0;
55
+ return Math.max(0, Math.min(this.dots - 1, active));
56
+ }
57
+ connectedCallback() {
58
+ super.connectedCallback();
59
+ window.addEventListener("language-changed", this.relabel);
60
+ window.addEventListener("translations-loaded", this.relabel);
61
+ const role = this.getAttribute("role");
62
+ if (role === null || role === this.ownRole) {
63
+ this.ownRole = "group";
64
+ this.setAttribute("role", "group");
65
+ }
66
+ }
67
+ disconnectedCallback() {
68
+ window.removeEventListener("language-changed", this.relabel);
69
+ window.removeEventListener("translations-loaded", this.relabel);
70
+ super.disconnectedCallback();
71
+ }
72
+ words(value, fallback, params) {
73
+ const text = value && this.literal ? value : getText(value || fallback, params) || value || fallback;
74
+ return params ? text.replace(/\{\{?(\w+)\}?\}/g, (whole, name) => (name in params ? String(params[name]) : whole)) : text;
75
+ }
76
+ willUpdate(changed) {
77
+ super.willUpdate(changed);
78
+ if (!this.hasAttribute("aria-labelledby"))
79
+ this.setAttribute("aria-label", this.words(this.label, "Slides"));
80
+ }
81
+ updated(changed) {
82
+ super.updated(changed);
83
+ if (!this.focusAfterUpdate)
84
+ return;
85
+ this.focusAfterUpdate = false;
86
+ this.renderRoot.querySelector('[aria-current="true"]')?.focus();
87
+ }
88
+ /** Pick a dot as a person would: fires `select` and, unless it is cancelled, makes it current. */
89
+ select(index) {
90
+ if (this.dots === 0)
91
+ return false;
92
+ const target = Math.max(0, Math.min(this.dots - 1, Math.floor(index)));
93
+ const event = new CustomEvent("select", {
94
+ bubbles: true, composed: true, cancelable: true, detail: { index: target, previous: this.current },
95
+ });
96
+ if (!this.dispatchEvent(event))
97
+ return false;
98
+ this.active = target;
99
+ return true;
100
+ }
101
+ keydown(event, index) {
102
+ const to = dotForKey(event.key, index, this.dots, getComputedStyle(this).direction === "rtl");
103
+ if (to === undefined)
104
+ return;
105
+ event.preventDefault();
106
+ if (this.select(to)) {
107
+ this.focusAfterUpdate = true;
108
+ return;
109
+ }
110
+ // A cancelled pick leaves the current dot as it is; focus still follows the key.
111
+ this.renderRoot.querySelectorAll(".ds-pagedots__dot")[to]?.focus();
14
112
  }
15
113
  render() {
16
- const dots = Array.from({ length: this.count }, (_, i) => i);
17
- return html `
18
- ${dots.map((index) => html `
19
- <span
20
- class="dot ${index === this.active ? "active" : ""}"
21
- role="button"
22
- aria-label="Slide ${index + 1}"
23
- aria-current="${index === this.active ? "true" : "false"}"
24
- ></span>
25
- `)}
26
- `;
114
+ const current = this.current;
115
+ return html `<div class="ds-pagedots" part="dots">
116
+ ${Array.from({ length: this.dots }, (_, index) => {
117
+ const state = dotState(index, current, this.dots, this.end);
118
+ return html `<button
119
+ class="ds-pagedots__dot"
120
+ part="dot"
121
+ type="button"
122
+ data-state=${state}
123
+ aria-label=${this.words(this.dotLabel, "Slide {index}", { index: index + 1 })}
124
+ aria-current=${state === "current" ? "true" : "false"}
125
+ tabindex=${state === "current" ? 0 : -1}
126
+ @click=${() => this.select(index)}
127
+ @keydown=${(event) => this.keydown(event, index)}
128
+ ></button>`;
129
+ })}
130
+ </div>`;
27
131
  }
28
132
  }
29
133
  Pagedots.properties = {
30
- /** Number of dots to display */
31
134
  count: { type: Number, reflect: true },
32
- /** Index of the active dot (0-based) */
33
135
  active: { type: Number, reflect: true },
136
+ end: { type: Boolean, reflect: true },
137
+ label: { type: String },
138
+ dotLabel: { type: String, attribute: "dot-label" },
139
+ literal: { type: Boolean, reflect: true },
34
140
  };
35
- Pagedots.styles = unsafeCSS(styles);
36
- customElements.define("ds-pagedots", Pagedots);
141
+ Pagedots.styles = [unsafeCSS(metrics), unsafeCSS(carousel), unsafeCSS(styles)];
142
+ define("ds-pagedots", Pagedots);