@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,200 @@
1
+ import { LitElement, type PropertyValues } from "lit";
2
+ import { type FigureFormat, type MeterAria } from "./figures";
3
+ import "./ds-icon";
4
+ /** Where a step stands: before the current one, the current one, after it, or stopped. */
5
+ export type StepState = "done" | "current" | "upcoming" | "failed";
6
+ /** A step: its name (a translation key, or literal words), and optionally its own state and where it goes. */
7
+ export type Step = string | {
8
+ label: string;
9
+ state?: StepState;
10
+ href?: string;
11
+ };
12
+ /** Each step's state: its own if it names one, else done before `current`, current at it and upcoming after. */
13
+ export declare function stepStates(steps: readonly Step[], current: number): StepState[];
14
+ /** Detail of `select`. Cancel the event to keep the current dot where it is. */
15
+ export interface ProgressSelectDetail {
16
+ /** The dot picked, from 0. */
17
+ index: number;
18
+ /** The dot that was current. */
19
+ previous: number;
20
+ }
21
+ /** What the element draws: a bar or squares, a sequence of steps, or dots. */
22
+ export type ProgressMode = "meter" | "steps" | "dots";
23
+ /**
24
+ * @element ds-progress
25
+ *
26
+ * A value against its range (the default):
27
+ * @prop {number} value - The value. Past `max`, it is over.
28
+ * @prop {number} min - The start of the range, 0 by default.
29
+ * @prop {number} max - The end of the range, 1 by default.
30
+ * @prop {number} squares - Draw the range in this many squares, one square each, instead of a bar.
31
+ * @prop {boolean} over - Show it as over whatever the value, where the page decides it.
32
+ * @prop {string} valuetext - What the value says (`aria-valuetext`), in place of "7 of 10".
33
+ * @prop {"number" | "compact" | "percent" | "money"} format - How the value and the range are written in the words.
34
+ * @prop {string} currency - The ISO 4217 code for money.
35
+ * @prop {boolean} minor - The money is counted in the currency's minor unit.
36
+ * @prop {boolean} whole - Money in whole units only.
37
+ * @prop {number} digits - Decimals in the words.
38
+ *
39
+ * A sequence of steps:
40
+ * @prop {Step[]} steps - The steps in order: names, or `{ label, state, href }`. As an attribute, a JSON array.
41
+ * @prop {number} current - The number of the current step, counted from 1. Past the last, every step is done; 0, none has started.
42
+ * @prop {boolean} vertical - One step to a row, with each step's `step-N` slot under it.
43
+ * @slot step-N - In a vertical sequence, what belongs under step N (counted from 1): a line of text, a form.
44
+ *
45
+ * Dots:
46
+ * @prop {number} dots - A dot for each of this many pages.
47
+ * @prop {number} active - The current dot, from 0.
48
+ * @prop {boolean} end - Draw the last dot as an end marker (a ring in the text colour) unless it is current.
49
+ * @prop {string} dotLabel - Each dot's name, with `{index}` for its number from 1: the shared words' "Slide {index}" by default.
50
+ * @fires select - A person picked a dot, by a click or a key. `detail` is `{ index, previous }`. Cancelable.
51
+ *
52
+ * @prop {string} label - The element's name for assistive technology: a translation key, or literal words
53
+ * (the dots' group is the shared word "Slides" by default).
54
+ * @prop {boolean} literal - Show `label`, `valuetext`, the step names and `dotLabel` as written, never looked up.
55
+ *
56
+ * A value is `role="meter"` on the element with `aria-valuenow` (kept inside
57
+ * the range, as ARIA requires), `-min`, `-max` and `-valuetext` ("12 of 10,
58
+ * over by 2"). Steps are an ordered list; the current one carries
59
+ * `aria-current="step"`, a done or failed one says so in hidden words, and a
60
+ * step with `href` is a link reached with Tab. Dots are a group of buttons,
61
+ * only the current one in the tab order; the arrow keys, Home and End move
62
+ * to the others and pick them.
63
+ *
64
+ * @example
65
+ * <ds-progress label="Spent" value="7400" max="10000" format="money" currency="DKK"></ds-progress>
66
+ * <ds-progress label="Seats" value="7" max="10" squares="10"></ds-progress>
67
+ * <ds-progress current="2" steps='["Apply", "Approval", "Connect payouts"]' label="Getting started" literal></ds-progress>
68
+ * <ds-progress dots="5" active="1"></ds-progress>
69
+ */
70
+ export declare class Progress extends LitElement {
71
+ static properties: {
72
+ value: {
73
+ type: NumberConstructor;
74
+ };
75
+ min: {
76
+ type: NumberConstructor;
77
+ };
78
+ max: {
79
+ type: NumberConstructor;
80
+ };
81
+ squares: {
82
+ type: NumberConstructor;
83
+ };
84
+ over: {
85
+ type: BooleanConstructor;
86
+ reflect: boolean;
87
+ };
88
+ valuetext: {
89
+ type: StringConstructor;
90
+ };
91
+ format: {
92
+ type: StringConstructor;
93
+ };
94
+ currency: {
95
+ type: StringConstructor;
96
+ };
97
+ minor: {
98
+ type: BooleanConstructor;
99
+ };
100
+ whole: {
101
+ type: BooleanConstructor;
102
+ };
103
+ digits: {
104
+ type: NumberConstructor;
105
+ };
106
+ steps: {
107
+ type: ArrayConstructor;
108
+ };
109
+ current: {
110
+ type: NumberConstructor;
111
+ };
112
+ vertical: {
113
+ type: BooleanConstructor;
114
+ reflect: boolean;
115
+ };
116
+ dots: {
117
+ type: NumberConstructor;
118
+ reflect: boolean;
119
+ };
120
+ active: {
121
+ type: NumberConstructor;
122
+ reflect: boolean;
123
+ };
124
+ end: {
125
+ type: BooleanConstructor;
126
+ reflect: boolean;
127
+ };
128
+ dotLabel: {
129
+ type: StringConstructor;
130
+ attribute: string;
131
+ };
132
+ label: {
133
+ type: StringConstructor;
134
+ };
135
+ literal: {
136
+ type: BooleanConstructor;
137
+ reflect: boolean;
138
+ };
139
+ };
140
+ static styles: import("lit").CSSResult[];
141
+ value: number;
142
+ min: number;
143
+ max: number;
144
+ squares: number | undefined;
145
+ over: boolean;
146
+ valuetext: string | undefined;
147
+ format: FigureFormat;
148
+ currency: string | undefined;
149
+ minor: boolean;
150
+ whole: boolean;
151
+ digits: number | undefined;
152
+ steps: Step[] | undefined;
153
+ current: number;
154
+ vertical: boolean;
155
+ dots: number | undefined;
156
+ active: number;
157
+ end: boolean;
158
+ dotLabel: string | undefined;
159
+ label: string | undefined;
160
+ literal: boolean;
161
+ /** The role this element last set, so a role the page wrote is left alone. */
162
+ private ownRole;
163
+ private focusAfterUpdate;
164
+ private readonly relabel;
165
+ constructor();
166
+ /** What the element draws, from what it was given: steps, dots, or a value against its range. */
167
+ get mode(): ProgressMode;
168
+ connectedCallback(): void;
169
+ disconnectedCallback(): void;
170
+ private words;
171
+ private wordsWith;
172
+ /** Sets a role of this element's own; a role the page wrote stays. */
173
+ private setRole;
174
+ /** The values the element says and draws, in the current language. */
175
+ get aria(): MeterAria;
176
+ /** How many squares the range is drawn in, or 0 for a bar. */
177
+ get squareCount(): number;
178
+ /** Each step's state, as drawn. */
179
+ get states(): StepState[];
180
+ private slotted;
181
+ /** The number of dots drawn: a whole number, never below zero. */
182
+ get dotCount(): number;
183
+ /** The current dot, inside the count. */
184
+ get currentDot(): number;
185
+ /** Pick a dot as a person would: fires `select` and, unless it is cancelled, makes it current. */
186
+ select(index: number): boolean;
187
+ private dotKeydown;
188
+ protected willUpdate(changed: PropertyValues<this>): void;
189
+ protected updated(changed: PropertyValues<this>): void;
190
+ private renderMeter;
191
+ private renderSteps;
192
+ private renderDots;
193
+ render(): import("lit").TemplateResult<1>;
194
+ }
195
+ declare global {
196
+ interface HTMLElementTagNameMap {
197
+ "ds-progress": Progress;
198
+ }
199
+ }
200
+ //# sourceMappingURL=ds-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-progress.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-progress.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAA4B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAKhF,OAAO,EAA2B,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AACvF,OAAO,WAAW,CAAC;AAQnB,0FAA0F;AAC1F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAGnE,8GAA8G;AAC9G,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAKhF,gHAAgH;AAChH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAO/E;AAED,gFAAgF;AAChF,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqBf;IAEF,MAAM,CAAC,MAAM,4BAAgE;IAErE,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IAEzB,8EAA8E;IAC9E,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;;IAkBtD,iGAAiG;IACjG,IAAI,IAAI,IAAI,YAAY,CAIvB;IAED,iBAAiB;IAOjB,oBAAoB;IAOpB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,SAAS;IAKjB,sEAAsE;IACtE,OAAO,CAAC,OAAO;IAUf,sEAAsE;IACtE,IAAI,IAAI,IAAI,SAAS,CAKpB;IAED,8DAA8D;IAC9D,IAAI,WAAW,IAAI,MAAM,CAGxB;IAID,mCAAmC;IACnC,IAAI,MAAM,IAAI,SAAS,EAAE,CAExB;IAED,OAAO,CAAC,OAAO;IAMf,kEAAkE;IAClE,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,yCAAyC;IACzC,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,kGAAkG;IAClG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAW9B,OAAO,CAAC,UAAU;IAYlB,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IA2BlD,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAO/C,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,UAAU;IAoBlB,MAAM;CAIP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,QAAQ,CAAC;KACzB;CACF"}
@@ -0,0 +1,319 @@
1
+ // ds-progress.ts
2
+ // Progress, as HTML's <progress> names it: how much of a range a value fills,
3
+ // one square high, as a bar half a square high or the range in squares (past
4
+ // the end it is "over", filled whole in the danger colour); or, with `steps`,
5
+ // a numbered sequence of steps one square high, those before the current one
6
+ // done; or, with `dots`, a dot for each slide or page, one square each.
7
+ // Drawn by 1-root/progress.css, the same classes a page without scripts
8
+ // writes.
9
+ import { LitElement, html, nothing, unsafeCSS } from "lit";
10
+ import { getText } from "../0-face/i18n";
11
+ import { define } from "../0-face/define";
12
+ import { formatNumber } from "../0-face/format";
13
+ import { dotForKey, dotState } from "../0-face/carousel";
14
+ import { figureFormat, meterAria } from "./figures";
15
+ import "./ds-icon";
16
+ import metrics from "../1-root/component-metrics.css?inline";
17
+ import progress from "../1-root/progress.css?inline";
18
+ import styles from "./styles/ds-progress.css?inline";
19
+ /** The most squares a range is drawn in. */
20
+ const MOST_SQUARES = 100;
21
+ const STATES = ["done", "current", "upcoming", "failed"];
22
+ /** The words assistive technology reads after a step's name for its state; aria-current says the current one. */
23
+ const STATE_WORDS = { done: "Done", failed: "Failed" };
24
+ /** Each step's state: its own if it names one, else done before `current`, current at it and upcoming after. */
25
+ export function stepStates(steps, current) {
26
+ return steps.map((step, index) => {
27
+ const own = typeof step === "object" && step ? step.state : undefined;
28
+ if (own && STATES.includes(own))
29
+ return own;
30
+ const number = index + 1;
31
+ return number < current ? "done" : number === current ? "current" : "upcoming";
32
+ });
33
+ }
34
+ /**
35
+ * @element ds-progress
36
+ *
37
+ * A value against its range (the default):
38
+ * @prop {number} value - The value. Past `max`, it is over.
39
+ * @prop {number} min - The start of the range, 0 by default.
40
+ * @prop {number} max - The end of the range, 1 by default.
41
+ * @prop {number} squares - Draw the range in this many squares, one square each, instead of a bar.
42
+ * @prop {boolean} over - Show it as over whatever the value, where the page decides it.
43
+ * @prop {string} valuetext - What the value says (`aria-valuetext`), in place of "7 of 10".
44
+ * @prop {"number" | "compact" | "percent" | "money"} format - How the value and the range are written in the words.
45
+ * @prop {string} currency - The ISO 4217 code for money.
46
+ * @prop {boolean} minor - The money is counted in the currency's minor unit.
47
+ * @prop {boolean} whole - Money in whole units only.
48
+ * @prop {number} digits - Decimals in the words.
49
+ *
50
+ * A sequence of steps:
51
+ * @prop {Step[]} steps - The steps in order: names, or `{ label, state, href }`. As an attribute, a JSON array.
52
+ * @prop {number} current - The number of the current step, counted from 1. Past the last, every step is done; 0, none has started.
53
+ * @prop {boolean} vertical - One step to a row, with each step's `step-N` slot under it.
54
+ * @slot step-N - In a vertical sequence, what belongs under step N (counted from 1): a line of text, a form.
55
+ *
56
+ * Dots:
57
+ * @prop {number} dots - A dot for each of this many pages.
58
+ * @prop {number} active - The current dot, from 0.
59
+ * @prop {boolean} end - Draw the last dot as an end marker (a ring in the text colour) unless it is current.
60
+ * @prop {string} dotLabel - Each dot's name, with `{index}` for its number from 1: the shared words' "Slide {index}" by default.
61
+ * @fires select - A person picked a dot, by a click or a key. `detail` is `{ index, previous }`. Cancelable.
62
+ *
63
+ * @prop {string} label - The element's name for assistive technology: a translation key, or literal words
64
+ * (the dots' group is the shared word "Slides" by default).
65
+ * @prop {boolean} literal - Show `label`, `valuetext`, the step names and `dotLabel` as written, never looked up.
66
+ *
67
+ * A value is `role="meter"` on the element with `aria-valuenow` (kept inside
68
+ * the range, as ARIA requires), `-min`, `-max` and `-valuetext` ("12 of 10,
69
+ * over by 2"). Steps are an ordered list; the current one carries
70
+ * `aria-current="step"`, a done or failed one says so in hidden words, and a
71
+ * step with `href` is a link reached with Tab. Dots are a group of buttons,
72
+ * only the current one in the tab order; the arrow keys, Home and End move
73
+ * to the others and pick them.
74
+ *
75
+ * @example
76
+ * <ds-progress label="Spent" value="7400" max="10000" format="money" currency="DKK"></ds-progress>
77
+ * <ds-progress label="Seats" value="7" max="10" squares="10"></ds-progress>
78
+ * <ds-progress current="2" steps='["Apply", "Approval", "Connect payouts"]' label="Getting started" literal></ds-progress>
79
+ * <ds-progress dots="5" active="1"></ds-progress>
80
+ */
81
+ export class Progress extends LitElement {
82
+ constructor() {
83
+ super();
84
+ /** The role this element last set, so a role the page wrote is left alone. */
85
+ this.ownRole = null;
86
+ this.focusAfterUpdate = false;
87
+ this.relabel = () => this.requestUpdate();
88
+ this.value = 0;
89
+ this.min = 0;
90
+ this.max = 1;
91
+ this.over = false;
92
+ this.format = "number";
93
+ this.minor = false;
94
+ this.whole = false;
95
+ this.current = 1;
96
+ this.vertical = false;
97
+ this.active = 0;
98
+ this.end = false;
99
+ this.literal = false;
100
+ }
101
+ /** What the element draws, from what it was given: steps, dots, or a value against its range. */
102
+ get mode() {
103
+ if (Array.isArray(this.steps))
104
+ return "steps";
105
+ if (this.dots !== undefined && this.dots !== null)
106
+ return "dots";
107
+ return "meter";
108
+ }
109
+ connectedCallback() {
110
+ super.connectedCallback();
111
+ window.addEventListener("language-changed", this.relabel);
112
+ window.addEventListener("translations-loaded", this.relabel);
113
+ window.addEventListener("translations-ready", this.relabel);
114
+ }
115
+ disconnectedCallback() {
116
+ window.removeEventListener("language-changed", this.relabel);
117
+ window.removeEventListener("translations-loaded", this.relabel);
118
+ window.removeEventListener("translations-ready", this.relabel);
119
+ super.disconnectedCallback();
120
+ }
121
+ words(value) {
122
+ if (!value)
123
+ return "";
124
+ return this.literal ? value : getText(value) || value;
125
+ }
126
+ wordsWith(value, fallback, params) {
127
+ const text = value && this.literal ? value : getText(value || fallback, params) || value || fallback;
128
+ return params ? text.replace(/\{\{?(\w+)\}?\}/g, (whole, name) => (name in params ? String(params[name]) : whole)) : text;
129
+ }
130
+ /** Sets a role of this element's own; a role the page wrote stays. */
131
+ setRole(role) {
132
+ const written = this.getAttribute("role");
133
+ if (written !== null && written !== this.ownRole)
134
+ return;
135
+ this.ownRole = role;
136
+ if (role === null)
137
+ this.removeAttribute("role");
138
+ else if (written !== role)
139
+ this.setAttribute("role", role);
140
+ }
141
+ // ---- A value against its range ----
142
+ /** The values the element says and draws, in the current language. */
143
+ get aria() {
144
+ return meterAria(this.value, this.min, this.max, {
145
+ over: this.over, format: figureFormat(this.format), currency: this.currency,
146
+ minor: this.minor, whole: this.whole, digits: this.digits,
147
+ });
148
+ }
149
+ /** How many squares the range is drawn in, or 0 for a bar. */
150
+ get squareCount() {
151
+ const count = Math.floor(Number(this.squares));
152
+ return Number.isFinite(count) && count > 0 ? Math.min(MOST_SQUARES, count) : 0;
153
+ }
154
+ // ---- A sequence ----
155
+ /** Each step's state, as drawn. */
156
+ get states() {
157
+ return stepStates(Array.isArray(this.steps) ? this.steps : [], Number(this.current));
158
+ }
159
+ slotted(name) {
160
+ return [...this.children].some(node => node.getAttribute("slot") === name);
161
+ }
162
+ // ---- Dots ----
163
+ /** The number of dots drawn: a whole number, never below zero. */
164
+ get dotCount() {
165
+ return Number.isFinite(this.dots) ? Math.max(0, Math.floor(this.dots)) : 0;
166
+ }
167
+ /** The current dot, inside the count. */
168
+ get currentDot() {
169
+ const active = Number.isFinite(this.active) ? Math.floor(this.active) : 0;
170
+ return Math.max(0, Math.min(this.dotCount - 1, active));
171
+ }
172
+ /** Pick a dot as a person would: fires `select` and, unless it is cancelled, makes it current. */
173
+ select(index) {
174
+ if (this.dotCount === 0)
175
+ return false;
176
+ const target = Math.max(0, Math.min(this.dotCount - 1, Math.floor(index)));
177
+ const event = new CustomEvent("select", {
178
+ bubbles: true, composed: true, cancelable: true, detail: { index: target, previous: this.currentDot },
179
+ });
180
+ if (!this.dispatchEvent(event))
181
+ return false;
182
+ this.active = target;
183
+ return true;
184
+ }
185
+ dotKeydown(event, index) {
186
+ const to = dotForKey(event.key, index, this.dotCount, getComputedStyle(this).direction === "rtl");
187
+ if (to === undefined)
188
+ return;
189
+ event.preventDefault();
190
+ if (this.select(to)) {
191
+ this.focusAfterUpdate = true;
192
+ return;
193
+ }
194
+ // A cancelled pick leaves the current dot as it is; focus still follows the key.
195
+ this.renderRoot.querySelectorAll(".ds-progress__dot")[to]?.focus();
196
+ }
197
+ willUpdate(changed) {
198
+ super.willUpdate(changed);
199
+ const mode = this.mode;
200
+ if (mode === "meter") {
201
+ const aria = this.aria;
202
+ const label = this.words(this.label);
203
+ this.setRole("meter");
204
+ this.setAttribute("aria-valuenow", String(aria.now));
205
+ this.setAttribute("aria-valuemin", String(aria.min));
206
+ this.setAttribute("aria-valuemax", String(aria.max));
207
+ this.setAttribute("aria-valuetext", this.words(this.valuetext) || aria.text);
208
+ if (label)
209
+ this.setAttribute("aria-label", label);
210
+ else if (changed.has("label"))
211
+ this.removeAttribute("aria-label");
212
+ this.toggleAttribute("data-over", aria.over);
213
+ return;
214
+ }
215
+ for (const name of ["aria-valuenow", "aria-valuemin", "aria-valuemax", "aria-valuetext", "data-over"])
216
+ this.removeAttribute(name);
217
+ if (mode === "dots") {
218
+ this.setRole("group");
219
+ if (!this.hasAttribute("aria-labelledby"))
220
+ this.setAttribute("aria-label", this.wordsWith(this.label, "Slides"));
221
+ return;
222
+ }
223
+ // Steps name their list inside; the element itself has no role.
224
+ this.setRole(null);
225
+ if (changed.has("label") || changed.has("steps"))
226
+ this.removeAttribute("aria-label");
227
+ }
228
+ updated(changed) {
229
+ super.updated(changed);
230
+ if (!this.focusAfterUpdate)
231
+ return;
232
+ this.focusAfterUpdate = false;
233
+ this.renderRoot.querySelector('[aria-current="true"]')?.focus();
234
+ }
235
+ renderMeter() {
236
+ const aria = this.aria;
237
+ const count = this.squareCount;
238
+ const over = aria.over ? " ds-progress--over" : "";
239
+ if (count) {
240
+ const on = Math.round(aria.fraction * count);
241
+ return html `<div class="ds-progress ds-progress--squares${over}" part="progress">${Array.from({ length: count }, (_, index) => html `<span class="ds-progress__square${index < on ? " ds-progress__square--on" : ""}" part="square"></span>`)}</div>`;
242
+ }
243
+ return html `<div class="ds-progress${over}" part="progress" style="--ds-progress-value: ${aria.fraction}"><span class="ds-progress__fill" part="fill"></span></div>`;
244
+ }
245
+ renderSteps() {
246
+ const steps = Array.isArray(this.steps) ? this.steps : [];
247
+ const states = this.states;
248
+ const label = this.words(this.label);
249
+ const changed = () => this.requestUpdate();
250
+ return html `<ol class="ds-progress ds-progress--steps${this.vertical ? " ds-progress--vertical" : ""}" part="steps" aria-label=${label || nothing}>
251
+ ${steps.map((step, index) => {
252
+ const state = states[index];
253
+ const name = this.words(typeof step === "string" ? step : step?.label);
254
+ const href = typeof step === "object" && step ? step.href : undefined;
255
+ const number = index + 1;
256
+ const said = STATE_WORDS[state];
257
+ const mark = state === "done" || state === "failed"
258
+ ? html `<ds-icon size="small" type=${state === "done" ? "check" : "warning"}></ds-icon>`
259
+ : formatNumber(number);
260
+ const face = html `<span class="ds-progress__mark" part="mark" aria-hidden="true">${mark}</span><span class="ds-progress__label" part="label">${name}</span>${said
261
+ ? html `<span class="ds-progress__state"> ${getText(said) || said}</span>`
262
+ : nothing}`;
263
+ return html `<li class="ds-progress__step${state === "upcoming" ? "" : ` ds-progress__step--${state}`}" part="step" data-state=${state} aria-current=${state === "current" ? "step" : nothing}>
264
+ ${href ? html `<a class="ds-progress__link" part="link" href=${href}>${face}</a>` : face}
265
+ ${this.vertical
266
+ ? html `<div class="ds-progress__body" part="body" ?hidden=${!this.slotted(`step-${number}`)}><slot name=${`step-${number}`} @slotchange=${changed}></slot></div>`
267
+ : nothing}
268
+ </li>`;
269
+ })}
270
+ </ol>`;
271
+ }
272
+ renderDots() {
273
+ const current = this.currentDot;
274
+ return html `<div class="ds-progress ds-progress--dots" part="dots">
275
+ ${Array.from({ length: this.dotCount }, (_, index) => {
276
+ const state = dotState(index, current, this.dotCount, this.end);
277
+ return html `<button
278
+ class="ds-progress__dot"
279
+ part="dot"
280
+ type="button"
281
+ data-state=${state}
282
+ aria-label=${this.wordsWith(this.dotLabel, "Slide {index}", { index: index + 1 })}
283
+ aria-current=${state === "current" ? "true" : "false"}
284
+ tabindex=${state === "current" ? 0 : -1}
285
+ @click=${() => this.select(index)}
286
+ @keydown=${(event) => this.dotKeydown(event, index)}
287
+ ></button>`;
288
+ })}
289
+ </div>`;
290
+ }
291
+ render() {
292
+ const mode = this.mode;
293
+ return mode === "steps" ? this.renderSteps() : mode === "dots" ? this.renderDots() : this.renderMeter();
294
+ }
295
+ }
296
+ Progress.properties = {
297
+ value: { type: Number },
298
+ min: { type: Number },
299
+ max: { type: Number },
300
+ squares: { type: Number },
301
+ over: { type: Boolean, reflect: true },
302
+ valuetext: { type: String },
303
+ format: { type: String },
304
+ currency: { type: String },
305
+ minor: { type: Boolean },
306
+ whole: { type: Boolean },
307
+ digits: { type: Number },
308
+ steps: { type: Array },
309
+ current: { type: Number },
310
+ vertical: { type: Boolean, reflect: true },
311
+ dots: { type: Number, reflect: true },
312
+ active: { type: Number, reflect: true },
313
+ end: { type: Boolean, reflect: true },
314
+ dotLabel: { type: String, attribute: "dot-label" },
315
+ label: { type: String },
316
+ literal: { type: Boolean, reflect: true },
317
+ };
318
+ Progress.styles = [unsafeCSS(metrics), unsafeCSS(progress), unsafeCSS(styles)];
319
+ define("ds-progress", Progress);
@@ -0,0 +1,126 @@
1
+ import { LitElement } from "lit";
2
+ import { type FigureFormat } from "./figures";
3
+ import "./ds-icon";
4
+ export type StatTone = "danger" | "warning";
5
+ /**
6
+ * @element ds-stat
7
+ * @prop {string} label - What the figure is: a translation key, or literal words.
8
+ * @prop {number} value - The figure, written as `format` says in the current language.
9
+ * @prop {string} figure - Words in place of the value ("Incomplete"): a key, or literal words.
10
+ * @prop {"number" | "compact" | "percent" | "money"} format - How the value is written. Number by default.
11
+ * @prop {string} currency - The ISO 4217 code for money.
12
+ * @prop {boolean} minor - The money is counted in the currency's minor unit (cents).
13
+ * @prop {boolean} whole - Money in whole units only.
14
+ * @prop {number} digits - Decimals, at least and at most.
15
+ * @prop {number} change - A change, written with its sign and an up or down icon before the caption.
16
+ * @prop {"number" | "compact" | "percent" | "money"} changeFormat - How the change is written (`change-format`). The value's format by default; `percent` reads a fraction.
17
+ * @prop {"danger" | "warning"} changeTone - The change in that colour (`change-tone`), where the page knows which way is bad.
18
+ * @prop {string} caption - A line under the figure: a key, or literal words.
19
+ * @prop {string} icon - An icon from the library on its own square before the label.
20
+ * @prop {"danger" | "warning"} tone - The figure in that colour.
21
+ * @prop {boolean} cells - Draw each digit in a cell of one width, for a face whose digits differ in width.
22
+ * @prop {boolean} literal - Show `label`, `figure` and `caption` as written, never looked up.
23
+ *
24
+ * @slot label - The label, as inline content.
25
+ * @slot figure - The figure, when the page writes it itself.
26
+ * @slot - Anything that belongs between the figure and the caption, such as a `ds-meter`.
27
+ * @slot caption - The caption, as inline content.
28
+ *
29
+ * @example
30
+ * <ds-stat label="Revenue" value="1234.5" format="money" currency="EUR" change="0.12" change-format="percent" caption="Since last month"></ds-stat>
31
+ */
32
+ export declare class Stat extends LitElement {
33
+ static properties: {
34
+ label: {
35
+ type: StringConstructor;
36
+ };
37
+ value: {
38
+ type: NumberConstructor;
39
+ };
40
+ figure: {
41
+ type: StringConstructor;
42
+ };
43
+ format: {
44
+ type: StringConstructor;
45
+ reflect: boolean;
46
+ };
47
+ currency: {
48
+ type: StringConstructor;
49
+ };
50
+ minor: {
51
+ type: BooleanConstructor;
52
+ };
53
+ whole: {
54
+ type: BooleanConstructor;
55
+ };
56
+ digits: {
57
+ type: NumberConstructor;
58
+ };
59
+ change: {
60
+ type: NumberConstructor;
61
+ };
62
+ changeFormat: {
63
+ type: StringConstructor;
64
+ attribute: string;
65
+ };
66
+ changeTone: {
67
+ type: StringConstructor;
68
+ attribute: string;
69
+ reflect: boolean;
70
+ };
71
+ caption: {
72
+ type: StringConstructor;
73
+ };
74
+ icon: {
75
+ type: StringConstructor;
76
+ };
77
+ tone: {
78
+ type: StringConstructor;
79
+ reflect: boolean;
80
+ };
81
+ cells: {
82
+ type: BooleanConstructor;
83
+ reflect: boolean;
84
+ };
85
+ literal: {
86
+ type: BooleanConstructor;
87
+ reflect: boolean;
88
+ };
89
+ };
90
+ static styles: import("lit").CSSResult[];
91
+ label: string | undefined;
92
+ value: number | undefined;
93
+ figure: string | undefined;
94
+ format: FigureFormat;
95
+ currency: string | undefined;
96
+ minor: boolean;
97
+ whole: boolean;
98
+ digits: number | undefined;
99
+ change: number | undefined;
100
+ changeFormat: FigureFormat | undefined;
101
+ changeTone: StatTone | undefined;
102
+ caption: string | undefined;
103
+ icon: string | undefined;
104
+ tone: StatTone | undefined;
105
+ cells: boolean;
106
+ literal: boolean;
107
+ private readonly relabel;
108
+ constructor();
109
+ connectedCallback(): void;
110
+ disconnectedCallback(): void;
111
+ private words;
112
+ private options;
113
+ /** The figure's text as it is drawn: the words given, or the value written in the current language. */
114
+ get text(): string;
115
+ /** The change's text with its sign, or empty without a change. */
116
+ get changeText(): string;
117
+ private slotted;
118
+ private drawFigure;
119
+ render(): import("lit").TemplateResult<1>;
120
+ }
121
+ declare global {
122
+ interface HTMLElementTagNameMap {
123
+ "ds-stat": Stat;
124
+ }
125
+ }
126
+ //# sourceMappingURL=ds-stat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-stat.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-stat.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAA4B,MAAM,KAAK,CAAC;AAG3D,OAAO,EAA2C,KAAK,YAAY,EAAsB,MAAM,WAAW,CAAC;AAC3G,OAAO,WAAW,CAAC;AAKnB,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBf;IAEF,MAAM,CAAC,MAAM,4BAA+D;IAEpE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;;IAWtD,iBAAiB;IAOjB,oBAAoB;IAOpB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,OAAO;IAIf,uGAAuG;IACvG,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,kEAAkE;IAClE,IAAI,UAAU,IAAI,MAAM,CAIvB;IAED,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IAMlB,MAAM;CAyBP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,IAAI,CAAC;KACjB;CACF"}