@0001-labs/design-system-1 0.3.0-alpha.28 → 0.3.1

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 (782) hide show
  1. package/DS1/0-face/button-label.ts +28 -0
  2. package/DS1/0-face/calendar.ts +6 -4
  3. package/DS1/0-face/carousel.ts +70 -0
  4. package/DS1/0-face/constraint-panel.ts +443 -0
  5. package/DS1/0-face/constraint-site.ts +201 -0
  6. package/DS1/0-face/constraints.ts +308 -0
  7. package/DS1/0-face/copy-text.ts +1 -1
  8. package/DS1/0-face/cut-fade.ts +312 -0
  9. package/DS1/0-face/define.ts +30 -2
  10. package/DS1/0-face/face-correction.ts +96 -0
  11. package/DS1/0-face/failures.ts +32 -0
  12. package/DS1/0-face/fault-lines.ts +159 -0
  13. package/DS1/0-face/feedback-overlays.ts +5 -3
  14. package/DS1/0-face/feedback.ts +3 -0
  15. package/DS1/0-face/focus-vision.swift +31 -0
  16. package/DS1/0-face/focus.ts +181 -0
  17. package/DS1/0-face/google-face-metrics.json +102 -0
  18. package/DS1/0-face/grid.ts +61 -4
  19. package/DS1/0-face/i18n.ts +36 -18
  20. package/DS1/0-face/layout-inspector.ts +124 -98
  21. package/DS1/0-face/preference-options.ts +4 -0
  22. package/DS1/0-face/scaling.ts +21 -3
  23. package/DS1/0-face/shape.ts +43 -0
  24. package/DS1/0-face/text-contrast.ts +164 -0
  25. package/DS1/0-face/theme-bootstrap.js +43 -0
  26. package/DS1/0-face/toast-queue.ts +7 -1
  27. package/DS1/0-face/translations/da.json +10 -1
  28. package/DS1/0-face/translations/de.json +10 -1
  29. package/DS1/0-face/translations/en.json +10 -1
  30. package/DS1/0-face/translations/es.json +10 -1
  31. package/DS1/0-face/translations/fi.json +10 -1
  32. package/DS1/0-face/translations/fr.json +10 -1
  33. package/DS1/0-face/translations/is.json +10 -1
  34. package/DS1/0-face/translations/it.json +10 -1
  35. package/DS1/0-face/translations/ja.json +10 -1
  36. package/DS1/0-face/translations/ko.json +10 -1
  37. package/DS1/0-face/translations/nb.json +10 -1
  38. package/DS1/0-face/translations/pt-BR.json +10 -1
  39. package/DS1/0-face/translations/pt.json +10 -1
  40. package/DS1/0-face/translations/sv.json +10 -1
  41. package/DS1/0-face/translations/zh.json +10 -1
  42. package/DS1/0-face/word-wrap.ts +113 -0
  43. package/DS1/1-root/card.css +47 -20
  44. package/DS1/1-root/carousel.css +7 -0
  45. package/DS1/1-root/cjk.css +1 -1
  46. package/DS1/1-root/component-tokens.css +3 -2
  47. package/DS1/1-root/context.css +44 -6
  48. package/DS1/1-root/controls.css +99 -8
  49. package/DS1/1-root/document.css +9 -1
  50. package/DS1/1-root/empty.css +46 -5
  51. package/DS1/1-root/figures.css +50 -3
  52. package/DS1/1-root/fonts.css +1 -1
  53. package/DS1/1-root/footer.css +147 -16
  54. package/DS1/1-root/foundation.ts +60 -0
  55. package/DS1/1-root/guide.css +35 -0
  56. package/DS1/1-root/header.css +30 -9
  57. package/DS1/1-root/material.css +67 -0
  58. package/DS1/1-root/notice.css +10 -2
  59. package/DS1/1-root/one.css +15 -7
  60. package/DS1/1-root/progress.css +9 -1
  61. package/DS1/1-root/row.css +68 -2
  62. package/DS1/1-root/table.css +47 -4
  63. package/DS1/1-root/text.css +26 -0
  64. package/DS1/2-core/button-split.ts +10 -5
  65. package/DS1/2-core/chart/chart.css +71 -2
  66. package/DS1/2-core/chart/grid-chart.ts +2 -1
  67. package/DS1/2-core/ds-activity.ts +32 -0
  68. package/DS1/2-core/ds-app-chrome.ts +1 -0
  69. package/DS1/2-core/ds-avatar.ts +75 -7
  70. package/DS1/2-core/ds-badge.ts +8 -1
  71. package/DS1/2-core/ds-button.ts +7 -1
  72. package/DS1/2-core/ds-chart.ts +184 -49
  73. package/DS1/2-core/ds-cycle.ts +27 -186
  74. package/DS1/2-core/ds-device-bezel.ts +1 -0
  75. package/DS1/2-core/ds-empty.ts +6 -4
  76. package/DS1/2-core/ds-input.ts +23 -3
  77. package/DS1/2-core/ds-message.ts +22 -0
  78. package/DS1/2-core/ds-number.ts +349 -0
  79. package/DS1/2-core/ds-progress.ts +3 -0
  80. package/DS1/2-core/ds-radio.ts +3 -0
  81. package/DS1/2-core/ds-stat.ts +3 -0
  82. package/DS1/2-core/ds-switch.ts +5 -1
  83. package/DS1/2-core/ds-tag.ts +9 -2
  84. package/DS1/2-core/ds-text.ts +7 -0
  85. package/DS1/2-core/ds-token.ts +3 -0
  86. package/DS1/2-core/ds-tooltip.ts +17 -2
  87. package/DS1/2-core/ds-window.ts +1 -0
  88. package/DS1/2-core/generated/ds-icon-map.ts +47 -5
  89. package/DS1/2-core/generated/icons-extra.ts +24 -3
  90. package/DS1/2-core/generated/icons-immediate.ts +3 -3
  91. package/DS1/2-core/number-expression.ts +64 -0
  92. package/DS1/2-core/styles/ds-activity.css +16 -0
  93. package/DS1/2-core/styles/ds-badge.css +4 -1
  94. package/DS1/2-core/styles/ds-button-host.css +47 -13
  95. package/DS1/2-core/styles/ds-button-split.css +8 -0
  96. package/DS1/2-core/styles/ds-button.css +94 -20
  97. package/DS1/2-core/styles/ds-card.css +6 -0
  98. package/DS1/2-core/styles/ds-checkbox.css +20 -8
  99. package/DS1/2-core/styles/ds-image.css +2 -1
  100. package/DS1/2-core/styles/ds-input.css +37 -4
  101. package/DS1/2-core/styles/ds-number.css +127 -0
  102. package/DS1/2-core/styles/ds-radio.css +4 -1
  103. package/DS1/2-core/styles/ds-switch.css +34 -4
  104. package/DS1/2-core/styles/ds-tag.css +34 -6
  105. package/DS1/2-core/styles/ds-text.css +13 -4
  106. package/DS1/2-core/styles/ds-token.css +4 -1
  107. package/DS1/2-core/styles/ds-tooltip.css +13 -7
  108. package/DS1/3-unit/calendar-base.ts +5 -2
  109. package/DS1/3-unit/context-trigger.ts +29 -2
  110. package/DS1/3-unit/ds-calendar.ts +711 -37
  111. package/DS1/3-unit/ds-carousel.ts +13 -1
  112. package/DS1/3-unit/ds-context.ts +40 -2
  113. package/DS1/3-unit/ds-form.ts +47 -11
  114. package/DS1/3-unit/ds-list.ts +31 -3
  115. package/DS1/3-unit/ds-matrix.ts +3 -0
  116. package/DS1/3-unit/ds-menu.ts +9 -5
  117. package/DS1/3-unit/ds-row.ts +17 -2
  118. package/DS1/3-unit/ds-select.ts +1 -1
  119. package/DS1/3-unit/ds-sidebar.ts +18 -3
  120. package/DS1/3-unit/ds-table-of-contents.ts +166 -0
  121. package/DS1/3-unit/ds-table.ts +2 -1
  122. package/DS1/3-unit/ds-tabs.ts +40 -2
  123. package/DS1/3-unit/styles/ds-calendar.css +356 -42
  124. package/DS1/3-unit/styles/ds-context.css +38 -0
  125. package/DS1/3-unit/styles/ds-list.css +26 -1
  126. package/DS1/3-unit/styles/ds-matrix.css +4 -1
  127. package/DS1/3-unit/styles/ds-row.css +39 -0
  128. package/DS1/3-unit/styles/ds-select.css +22 -12
  129. package/DS1/3-unit/styles/ds-sidebar.css +16 -2
  130. package/DS1/3-unit/styles/ds-table-of-contents.css +40 -0
  131. package/DS1/3-unit/styles/ds-tabs.css +95 -0
  132. package/DS1/4-page/ds-container.ts +2 -1
  133. package/DS1/4-page/ds-document.ts +3 -0
  134. package/DS1/4-page/ds-footer.ts +93 -18
  135. package/DS1/4-page/ds-header.ts +5 -1
  136. package/DS1/4-page/ds-overlay.ts +8 -3
  137. package/DS1/4-page/ds-page.ts +22 -1
  138. package/DS1/4-page/email.ts +7 -4
  139. package/DS1/4-page/styles/ds-container.css +0 -1
  140. package/DS1/4-page/styles/ds-overlay.css +7 -0
  141. package/DS1/4-page/styles/ds-page.css +10 -0
  142. package/DS1/5-visual-kit/app-chrome.ts +129 -0
  143. package/DS1/5-visual-kit/bezels.ts +394 -0
  144. package/DS1/5-visual-kit/browser-icons.LICENSE +53 -0
  145. package/DS1/5-visual-kit/browser-icons.ts +47 -0
  146. package/DS1/5-visual-kit/browser-styles.ts +53 -0
  147. package/DS1/5-visual-kit/device-bezel.ts +55 -0
  148. package/DS1/5-visual-kit/instagram-frame.ts +15 -0
  149. package/DS1/5-visual-kit/instagram.ts +41 -0
  150. package/DS1/5-visual-kit/mobile-chrome.ts +25 -0
  151. package/DS1/5-visual-kit/native-icon-paths.ts +145 -0
  152. package/DS1/5-visual-kit/window.ts +22 -0
  153. package/DS1/components.ts +1 -0
  154. package/DS1/index.ts +14 -1
  155. package/DS1/react/choice.ts +4 -2
  156. package/DS1/react/context.ts +11 -6
  157. package/DS1/react/empty.ts +2 -2
  158. package/DS1/react/footer.ts +5 -5
  159. package/DS1/react/header.ts +1 -1
  160. package/DS1/react/message.ts +4 -2
  161. package/DS1/react/number.ts +53 -0
  162. package/DS1/react/sidebar.ts +4 -2
  163. package/DS1/react/table-of-contents.ts +28 -0
  164. package/DS1/x-flag/LICENSE.md +26 -0
  165. package/DS1/x-flag/ac.svg +1 -0
  166. package/DS1/x-flag/ad.svg +1 -0
  167. package/DS1/x-flag/ae.svg +1 -0
  168. package/DS1/x-flag/af.svg +1 -0
  169. package/DS1/x-flag/ag.svg +1 -0
  170. package/DS1/x-flag/ai.svg +1 -0
  171. package/DS1/x-flag/al.svg +1 -0
  172. package/DS1/x-flag/am.svg +1 -0
  173. package/DS1/x-flag/ao.svg +1 -0
  174. package/DS1/x-flag/aq.svg +1 -0
  175. package/DS1/x-flag/ar.svg +1 -0
  176. package/DS1/x-flag/as.svg +1 -0
  177. package/DS1/x-flag/at.svg +1 -0
  178. package/DS1/x-flag/au.svg +1 -0
  179. package/DS1/x-flag/aw.svg +1 -0
  180. package/DS1/x-flag/ax.svg +1 -0
  181. package/DS1/x-flag/az.svg +1 -0
  182. package/DS1/x-flag/ba.svg +1 -0
  183. package/DS1/x-flag/bb.svg +1 -0
  184. package/DS1/x-flag/bd.svg +1 -0
  185. package/DS1/x-flag/be.svg +1 -0
  186. package/DS1/x-flag/bf.svg +1 -0
  187. package/DS1/x-flag/bg.svg +1 -0
  188. package/DS1/x-flag/bh.svg +1 -0
  189. package/DS1/x-flag/bi.svg +1 -0
  190. package/DS1/x-flag/bj.svg +1 -0
  191. package/DS1/x-flag/bl.svg +1 -0
  192. package/DS1/x-flag/bm.svg +1 -0
  193. package/DS1/x-flag/bn.svg +1 -0
  194. package/DS1/x-flag/bo.svg +1 -0
  195. package/DS1/x-flag/bq-bo.svg +1 -0
  196. package/DS1/x-flag/bq-sa.svg +1 -0
  197. package/DS1/x-flag/bq-se.svg +1 -0
  198. package/DS1/x-flag/bq.svg +1 -0
  199. package/DS1/x-flag/br.svg +1 -0
  200. package/DS1/x-flag/bs.svg +1 -0
  201. package/DS1/x-flag/bt.svg +1 -0
  202. package/DS1/x-flag/bv.svg +1 -0
  203. package/DS1/x-flag/bw.svg +1 -0
  204. package/DS1/x-flag/by.svg +1 -0
  205. package/DS1/x-flag/bz.svg +1 -0
  206. package/DS1/x-flag/ca.svg +1 -0
  207. package/DS1/x-flag/cc.svg +1 -0
  208. package/DS1/x-flag/cd.svg +1 -0
  209. package/DS1/x-flag/cf.svg +1 -0
  210. package/DS1/x-flag/cg.svg +1 -0
  211. package/DS1/x-flag/ch.svg +1 -0
  212. package/DS1/x-flag/ci.svg +1 -0
  213. package/DS1/x-flag/ck.svg +1 -0
  214. package/DS1/x-flag/cl.svg +1 -0
  215. package/DS1/x-flag/cm.svg +1 -0
  216. package/DS1/x-flag/cn.svg +1 -0
  217. package/DS1/x-flag/co.svg +1 -0
  218. package/DS1/x-flag/cr.svg +1 -0
  219. package/DS1/x-flag/cu.svg +1 -0
  220. package/DS1/x-flag/cv.svg +1 -0
  221. package/DS1/x-flag/cw.svg +1 -0
  222. package/DS1/x-flag/cx.svg +1 -0
  223. package/DS1/x-flag/cy.svg +1 -0
  224. package/DS1/x-flag/cz.svg +1 -0
  225. package/DS1/x-flag/de.svg +1 -0
  226. package/DS1/x-flag/dj.svg +1 -0
  227. package/DS1/x-flag/dk.svg +1 -0
  228. package/DS1/x-flag/dm.svg +1 -0
  229. package/DS1/x-flag/do.svg +1 -0
  230. package/DS1/x-flag/dz.svg +1 -0
  231. package/DS1/x-flag/ec.svg +1 -0
  232. package/DS1/x-flag/ee.svg +1 -0
  233. package/DS1/x-flag/eg.svg +1 -0
  234. package/DS1/x-flag/eh.svg +1 -0
  235. package/DS1/x-flag/er.svg +1 -0
  236. package/DS1/x-flag/es-ct.svg +1 -0
  237. package/DS1/x-flag/es.svg +1 -0
  238. package/DS1/x-flag/et.svg +1 -0
  239. package/DS1/x-flag/eu.svg +1 -0
  240. package/DS1/x-flag/fi.svg +1 -0
  241. package/DS1/x-flag/fj.svg +1 -0
  242. package/DS1/x-flag/fk.svg +1 -0
  243. package/DS1/x-flag/fm.svg +1 -0
  244. package/DS1/x-flag/fo.svg +1 -0
  245. package/DS1/x-flag/fr.svg +1 -0
  246. package/DS1/x-flag/ga.svg +1 -0
  247. package/DS1/x-flag/gb-eng.svg +1 -0
  248. package/DS1/x-flag/gb-nir.svg +1 -0
  249. package/DS1/x-flag/gb-sct.svg +1 -0
  250. package/DS1/x-flag/gb-wls.svg +1 -0
  251. package/DS1/x-flag/gb.svg +1 -0
  252. package/DS1/x-flag/gd.svg +1 -0
  253. package/DS1/x-flag/ge.svg +1 -0
  254. package/DS1/x-flag/gf.svg +1 -0
  255. package/DS1/x-flag/gg.svg +1 -0
  256. package/DS1/x-flag/gh.svg +1 -0
  257. package/DS1/x-flag/gi.svg +1 -0
  258. package/DS1/x-flag/gl.svg +1 -0
  259. package/DS1/x-flag/gm.svg +1 -0
  260. package/DS1/x-flag/gn.svg +1 -0
  261. package/DS1/x-flag/gp.svg +1 -0
  262. package/DS1/x-flag/gq.svg +1 -0
  263. package/DS1/x-flag/gr.svg +1 -0
  264. package/DS1/x-flag/gs.svg +1 -0
  265. package/DS1/x-flag/gt.svg +1 -0
  266. package/DS1/x-flag/gu.svg +1 -0
  267. package/DS1/x-flag/gw.svg +1 -0
  268. package/DS1/x-flag/gy.svg +1 -0
  269. package/DS1/x-flag/hk.svg +1 -0
  270. package/DS1/x-flag/hm.svg +1 -0
  271. package/DS1/x-flag/hn.svg +1 -0
  272. package/DS1/x-flag/hr.svg +1 -0
  273. package/DS1/x-flag/ht.svg +1 -0
  274. package/DS1/x-flag/hu.svg +1 -0
  275. package/DS1/x-flag/ic.svg +1 -0
  276. package/DS1/x-flag/id.svg +1 -0
  277. package/DS1/x-flag/ie.svg +1 -0
  278. package/DS1/x-flag/il.svg +1 -0
  279. package/DS1/x-flag/im.svg +1 -0
  280. package/DS1/x-flag/in.svg +1 -0
  281. package/DS1/x-flag/io.svg +1 -0
  282. package/DS1/x-flag/iq.svg +1 -0
  283. package/DS1/x-flag/ir.svg +1 -0
  284. package/DS1/x-flag/is.svg +1 -0
  285. package/DS1/x-flag/it.svg +1 -0
  286. package/DS1/x-flag/je.svg +1 -0
  287. package/DS1/x-flag/jm.svg +1 -0
  288. package/DS1/x-flag/jo.svg +1 -0
  289. package/DS1/x-flag/jp.svg +1 -0
  290. package/DS1/x-flag/ke.svg +1 -0
  291. package/DS1/x-flag/kg.svg +1 -0
  292. package/DS1/x-flag/kh.svg +1 -0
  293. package/DS1/x-flag/ki.svg +1 -0
  294. package/DS1/x-flag/km.svg +1 -0
  295. package/DS1/x-flag/kn.svg +1 -0
  296. package/DS1/x-flag/kp.svg +1 -0
  297. package/DS1/x-flag/kr.svg +1 -0
  298. package/DS1/x-flag/kw.svg +1 -0
  299. package/DS1/x-flag/ky.svg +1 -0
  300. package/DS1/x-flag/kz.svg +1 -0
  301. package/DS1/x-flag/la.svg +1 -0
  302. package/DS1/x-flag/lb.svg +1 -0
  303. package/DS1/x-flag/lc.svg +1 -0
  304. package/DS1/x-flag/li.svg +1 -0
  305. package/DS1/x-flag/lk.svg +1 -0
  306. package/DS1/x-flag/lr.svg +1 -0
  307. package/DS1/x-flag/ls.svg +1 -0
  308. package/DS1/x-flag/lt.svg +1 -0
  309. package/DS1/x-flag/lu.svg +1 -0
  310. package/DS1/x-flag/lv.svg +1 -0
  311. package/DS1/x-flag/ly.svg +1 -0
  312. package/DS1/x-flag/ma.svg +1 -0
  313. package/DS1/x-flag/mc.svg +1 -0
  314. package/DS1/x-flag/md.svg +1 -0
  315. package/DS1/x-flag/me.svg +1 -0
  316. package/DS1/x-flag/mf.svg +1 -0
  317. package/DS1/x-flag/mg.svg +1 -0
  318. package/DS1/x-flag/mh.svg +1 -0
  319. package/DS1/x-flag/mk.svg +1 -0
  320. package/DS1/x-flag/ml.svg +1 -0
  321. package/DS1/x-flag/mm.svg +1 -0
  322. package/DS1/x-flag/mn.svg +1 -0
  323. package/DS1/x-flag/mo.svg +1 -0
  324. package/DS1/x-flag/mp.svg +1 -0
  325. package/DS1/x-flag/mq.svg +1 -0
  326. package/DS1/x-flag/mr.svg +1 -0
  327. package/DS1/x-flag/ms.svg +1 -0
  328. package/DS1/x-flag/mt.svg +1 -0
  329. package/DS1/x-flag/mu.svg +1 -0
  330. package/DS1/x-flag/mv.svg +1 -0
  331. package/DS1/x-flag/mw.svg +1 -0
  332. package/DS1/x-flag/mx.svg +1 -0
  333. package/DS1/x-flag/my.svg +1 -0
  334. package/DS1/x-flag/mz.svg +1 -0
  335. package/DS1/x-flag/na.svg +1 -0
  336. package/DS1/x-flag/nc.svg +1 -0
  337. package/DS1/x-flag/ne.svg +1 -0
  338. package/DS1/x-flag/nf.svg +1 -0
  339. package/DS1/x-flag/ng.svg +1 -0
  340. package/DS1/x-flag/ni.svg +1 -0
  341. package/DS1/x-flag/nl.svg +1 -0
  342. package/DS1/x-flag/no.svg +1 -0
  343. package/DS1/x-flag/np.svg +1 -0
  344. package/DS1/x-flag/nr.svg +1 -0
  345. package/DS1/x-flag/nu.svg +1 -0
  346. package/DS1/x-flag/nz.svg +1 -0
  347. package/DS1/x-flag/om.svg +1 -0
  348. package/DS1/x-flag/pa.svg +1 -0
  349. package/DS1/x-flag/pe.svg +1 -0
  350. package/DS1/x-flag/pf.svg +1 -0
  351. package/DS1/x-flag/pg.svg +1 -0
  352. package/DS1/x-flag/ph.svg +1 -0
  353. package/DS1/x-flag/pk.svg +1 -0
  354. package/DS1/x-flag/pl.svg +1 -0
  355. package/DS1/x-flag/pm.svg +1 -0
  356. package/DS1/x-flag/pn.svg +1 -0
  357. package/DS1/x-flag/pr.svg +1 -0
  358. package/DS1/x-flag/ps.svg +1 -0
  359. package/DS1/x-flag/pt.svg +1 -0
  360. package/DS1/x-flag/pw.svg +1 -0
  361. package/DS1/x-flag/py.svg +1 -0
  362. package/DS1/x-flag/qa.svg +1 -0
  363. package/DS1/x-flag/re.svg +1 -0
  364. package/DS1/x-flag/ro.svg +1 -0
  365. package/DS1/x-flag/rs.svg +1 -0
  366. package/DS1/x-flag/ru.svg +1 -0
  367. package/DS1/x-flag/rw.svg +1 -0
  368. package/DS1/x-flag/sa.svg +1 -0
  369. package/DS1/x-flag/sb.svg +1 -0
  370. package/DS1/x-flag/sc.svg +1 -0
  371. package/DS1/x-flag/sd.svg +1 -0
  372. package/DS1/x-flag/se.svg +1 -0
  373. package/DS1/x-flag/sg.svg +1 -0
  374. package/DS1/x-flag/sh.svg +1 -0
  375. package/DS1/x-flag/si.svg +1 -0
  376. package/DS1/x-flag/sj.svg +1 -0
  377. package/DS1/x-flag/sk.svg +1 -0
  378. package/DS1/x-flag/sl.svg +1 -0
  379. package/DS1/x-flag/sm.svg +1 -0
  380. package/DS1/x-flag/sn.svg +1 -0
  381. package/DS1/x-flag/so.svg +1 -0
  382. package/DS1/x-flag/sr.svg +1 -0
  383. package/DS1/x-flag/ss.svg +1 -0
  384. package/DS1/x-flag/st.svg +1 -0
  385. package/DS1/x-flag/sv.svg +1 -0
  386. package/DS1/x-flag/sx.svg +1 -0
  387. package/DS1/x-flag/sy.svg +1 -0
  388. package/DS1/x-flag/sz.svg +1 -0
  389. package/DS1/x-flag/ta.svg +1 -0
  390. package/DS1/x-flag/tc.svg +1 -0
  391. package/DS1/x-flag/td.svg +1 -0
  392. package/DS1/x-flag/tf.svg +1 -0
  393. package/DS1/x-flag/tg.svg +1 -0
  394. package/DS1/x-flag/th.svg +1 -0
  395. package/DS1/x-flag/tj.svg +1 -0
  396. package/DS1/x-flag/tk.svg +1 -0
  397. package/DS1/x-flag/tl.svg +1 -0
  398. package/DS1/x-flag/tm.svg +1 -0
  399. package/DS1/x-flag/tn.svg +1 -0
  400. package/DS1/x-flag/to.svg +1 -0
  401. package/DS1/x-flag/tr.svg +1 -0
  402. package/DS1/x-flag/tt.svg +1 -0
  403. package/DS1/x-flag/tv.svg +1 -0
  404. package/DS1/x-flag/tw.svg +1 -0
  405. package/DS1/x-flag/tz.svg +1 -0
  406. package/DS1/x-flag/ua.svg +1 -0
  407. package/DS1/x-flag/ug.svg +1 -0
  408. package/DS1/x-flag/um.svg +1 -0
  409. package/DS1/x-flag/us.svg +1 -0
  410. package/DS1/x-flag/uy.svg +1 -0
  411. package/DS1/x-flag/uz.svg +1 -0
  412. package/DS1/x-flag/va.svg +1 -0
  413. package/DS1/x-flag/vc.svg +1 -0
  414. package/DS1/x-flag/ve.svg +1 -0
  415. package/DS1/x-flag/vg.svg +1 -0
  416. package/DS1/x-flag/vi.svg +1 -0
  417. package/DS1/x-flag/vn.svg +1 -0
  418. package/DS1/x-flag/vu.svg +1 -0
  419. package/DS1/x-flag/wf.svg +1 -0
  420. package/DS1/x-flag/ws.svg +1 -0
  421. package/DS1/x-flag/xk.svg +1 -0
  422. package/DS1/x-flag/ye.svg +1 -0
  423. package/DS1/x-flag/yt.svg +1 -0
  424. package/DS1/x-flag/za.svg +1 -0
  425. package/DS1/x-flag/zm.svg +1 -0
  426. package/DS1/x-flag/zw.svg +1 -0
  427. package/DS1/x-icon/android.svg +9 -0
  428. package/DS1/x-icon/arrange-check.svg +1 -1
  429. package/DS1/x-icon/arrange-page.svg +1 -1
  430. package/DS1/x-icon/chrome.svg +7 -0
  431. package/DS1/x-icon/edge-brand.svg +6 -0
  432. package/DS1/x-icon/firefox.svg +4 -0
  433. package/DS1/x-icon/health.svg +3 -0
  434. package/DS1/x-icon/left.svg +2 -3
  435. package/DS1/x-icon/linux.svg +1 -0
  436. package/DS1/x-icon/material.svg +1 -0
  437. package/DS1/x-icon/milestone-planned.svg +3 -0
  438. package/DS1/x-icon/milestone.svg +3 -0
  439. package/DS1/x-icon/more.svg +1 -5
  440. package/DS1/x-icon/network.svg +3 -0
  441. package/DS1/x-icon/opera.svg +4 -0
  442. package/DS1/x-icon/prediction.svg +3 -0
  443. package/DS1/x-icon/priority-high.svg +3 -0
  444. package/DS1/x-icon/priority-low.svg +3 -0
  445. package/DS1/x-icon/priority-medium.svg +3 -0
  446. package/DS1/x-icon/project.svg +3 -0
  447. package/DS1/x-icon/redo.svg +2 -2
  448. package/DS1/x-icon/repeat-small.svg +3 -0
  449. package/DS1/x-icon/safari.svg +4 -0
  450. package/DS1/x-icon/scaling.svg +3 -0
  451. package/DS1/x-icon/tabs.svg +4 -0
  452. package/DS1/x-icon/windows.svg +5 -0
  453. package/README.md +3 -3
  454. package/dist/0-face/button-label.d.ts +5 -0
  455. package/dist/0-face/button-label.d.ts.map +1 -0
  456. package/dist/0-face/button-label.js +31 -0
  457. package/dist/0-face/calendar.d.ts +1 -1
  458. package/dist/0-face/calendar.d.ts.map +1 -1
  459. package/dist/0-face/calendar.js +6 -3
  460. package/dist/0-face/carousel.d.ts +9 -0
  461. package/dist/0-face/carousel.d.ts.map +1 -1
  462. package/dist/0-face/carousel.js +80 -0
  463. package/dist/0-face/constraint-panel.d.ts +43 -0
  464. package/dist/0-face/constraint-panel.d.ts.map +1 -0
  465. package/dist/0-face/constraint-panel.js +451 -0
  466. package/dist/0-face/constraint-site.d.ts +73 -0
  467. package/dist/0-face/constraint-site.d.ts.map +1 -0
  468. package/dist/0-face/constraint-site.js +186 -0
  469. package/dist/0-face/constraints.d.ts +47 -0
  470. package/dist/0-face/constraints.d.ts.map +1 -0
  471. package/dist/0-face/constraints.js +274 -0
  472. package/dist/0-face/copy-text.js +1 -1
  473. package/dist/0-face/cut-fade.d.ts +112 -0
  474. package/dist/0-face/cut-fade.d.ts.map +1 -0
  475. package/dist/0-face/cut-fade.js +274 -0
  476. package/dist/0-face/define.d.ts.map +1 -1
  477. package/dist/0-face/define.js +24 -3
  478. package/dist/0-face/face-correction.d.ts +51 -0
  479. package/dist/0-face/face-correction.d.ts.map +1 -0
  480. package/dist/0-face/face-correction.js +80 -0
  481. package/dist/0-face/failures.d.ts +16 -0
  482. package/dist/0-face/failures.d.ts.map +1 -0
  483. package/dist/0-face/failures.js +21 -0
  484. package/dist/0-face/fault-lines.d.ts +20 -0
  485. package/dist/0-face/fault-lines.d.ts.map +1 -0
  486. package/dist/0-face/fault-lines.js +172 -0
  487. package/dist/0-face/feedback-overlays.d.ts.map +1 -1
  488. package/dist/0-face/feedback-overlays.js +5 -3
  489. package/dist/0-face/feedback.d.ts +2 -0
  490. package/dist/0-face/feedback.d.ts.map +1 -1
  491. package/dist/0-face/feedback.js +1 -0
  492. package/dist/0-face/focus.d.ts +71 -0
  493. package/dist/0-face/focus.d.ts.map +1 -0
  494. package/dist/0-face/focus.js +196 -0
  495. package/dist/0-face/grid.d.ts +11 -1
  496. package/dist/0-face/grid.d.ts.map +1 -1
  497. package/dist/0-face/grid.js +90 -4
  498. package/dist/0-face/i18n.d.ts.map +1 -1
  499. package/dist/0-face/i18n.js +38 -16
  500. package/dist/0-face/layout-inspector.d.ts +5 -1
  501. package/dist/0-face/layout-inspector.d.ts.map +1 -1
  502. package/dist/0-face/layout-inspector.js +130 -104
  503. package/dist/0-face/preference-options.d.ts +4 -0
  504. package/dist/0-face/preference-options.d.ts.map +1 -1
  505. package/dist/0-face/scaling.d.ts +8 -1
  506. package/dist/0-face/scaling.d.ts.map +1 -1
  507. package/dist/0-face/scaling.js +19 -2
  508. package/dist/0-face/shape.d.ts +35 -0
  509. package/dist/0-face/shape.d.ts.map +1 -0
  510. package/dist/0-face/shape.js +23 -0
  511. package/dist/0-face/text-contrast.d.ts +22 -0
  512. package/dist/0-face/text-contrast.d.ts.map +1 -0
  513. package/dist/0-face/text-contrast.js +178 -0
  514. package/dist/0-face/theme-bootstrap.js +56 -0
  515. package/dist/0-face/toast-queue.d.ts +4 -0
  516. package/dist/0-face/toast-queue.d.ts.map +1 -1
  517. package/dist/0-face/toast-queue.js +4 -1
  518. package/dist/0-face/translations/da.json +10 -1
  519. package/dist/0-face/translations/de.json +10 -1
  520. package/dist/0-face/translations/en.json +10 -1
  521. package/dist/0-face/translations/es.json +10 -1
  522. package/dist/0-face/translations/fi.json +10 -1
  523. package/dist/0-face/translations/fr.json +10 -1
  524. package/dist/0-face/translations/is.json +10 -1
  525. package/dist/0-face/translations/it.json +10 -1
  526. package/dist/0-face/translations/ja.json +10 -1
  527. package/dist/0-face/translations/ko.json +10 -1
  528. package/dist/0-face/translations/nb.json +10 -1
  529. package/dist/0-face/translations/pt-BR.json +10 -1
  530. package/dist/0-face/translations/pt.json +10 -1
  531. package/dist/0-face/translations/sv.json +10 -1
  532. package/dist/0-face/translations/zh.json +10 -1
  533. package/dist/0-face/word-wrap.d.ts +6 -0
  534. package/dist/0-face/word-wrap.d.ts.map +1 -0
  535. package/dist/0-face/word-wrap.js +119 -0
  536. package/dist/1-root/foundation.d.ts +12 -0
  537. package/dist/1-root/foundation.d.ts.map +1 -0
  538. package/dist/1-root/foundation.js +59 -0
  539. package/dist/2-core/button-split.d.ts +1 -0
  540. package/dist/2-core/button-split.d.ts.map +1 -1
  541. package/dist/2-core/button-split.js +9 -4
  542. package/dist/2-core/chart/grid-chart.d.ts +2 -0
  543. package/dist/2-core/chart/grid-chart.d.ts.map +1 -1
  544. package/dist/2-core/chart/grid-chart.js +2 -1
  545. package/dist/2-core/ds-activity.d.ts +25 -0
  546. package/dist/2-core/ds-activity.d.ts.map +1 -0
  547. package/dist/2-core/ds-activity.js +28 -0
  548. package/dist/2-core/ds-app-chrome.d.ts +2 -0
  549. package/dist/2-core/ds-app-chrome.d.ts.map +1 -0
  550. package/dist/2-core/ds-app-chrome.js +1 -0
  551. package/dist/2-core/ds-avatar.d.ts +12 -0
  552. package/dist/2-core/ds-avatar.d.ts.map +1 -1
  553. package/dist/2-core/ds-avatar.js +86 -7
  554. package/dist/2-core/ds-badge.d.ts +7 -1
  555. package/dist/2-core/ds-badge.d.ts.map +1 -1
  556. package/dist/2-core/ds-badge.js +8 -1
  557. package/dist/2-core/ds-button.d.ts +12 -0
  558. package/dist/2-core/ds-button.d.ts.map +1 -1
  559. package/dist/2-core/ds-button.js +4 -0
  560. package/dist/2-core/ds-chart.d.ts +28 -3
  561. package/dist/2-core/ds-chart.d.ts.map +1 -1
  562. package/dist/2-core/ds-chart.js +110 -130
  563. package/dist/2-core/ds-cycle.d.ts +2 -2
  564. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  565. package/dist/2-core/ds-cycle.js +36 -171
  566. package/dist/2-core/ds-device-bezel.d.ts +2 -0
  567. package/dist/2-core/ds-device-bezel.d.ts.map +1 -0
  568. package/dist/2-core/ds-device-bezel.js +1 -0
  569. package/dist/2-core/ds-empty.d.ts +2 -2
  570. package/dist/2-core/ds-empty.d.ts.map +1 -1
  571. package/dist/2-core/ds-empty.js +6 -4
  572. package/dist/2-core/ds-input.d.ts +7 -0
  573. package/dist/2-core/ds-input.d.ts.map +1 -1
  574. package/dist/2-core/ds-input.js +23 -3
  575. package/dist/2-core/ds-message.d.ts +11 -0
  576. package/dist/2-core/ds-message.d.ts.map +1 -1
  577. package/dist/2-core/ds-message.js +18 -0
  578. package/dist/2-core/ds-number.d.ts +86 -0
  579. package/dist/2-core/ds-number.d.ts.map +1 -0
  580. package/dist/2-core/ds-number.js +326 -0
  581. package/dist/2-core/ds-progress.d.ts +3 -0
  582. package/dist/2-core/ds-progress.d.ts.map +1 -1
  583. package/dist/2-core/ds-progress.js +3 -0
  584. package/dist/2-core/ds-radio.d.ts +3 -0
  585. package/dist/2-core/ds-radio.d.ts.map +1 -1
  586. package/dist/2-core/ds-radio.js +10 -1
  587. package/dist/2-core/ds-stat.d.ts +3 -0
  588. package/dist/2-core/ds-stat.d.ts.map +1 -1
  589. package/dist/2-core/ds-stat.js +3 -0
  590. package/dist/2-core/ds-switch.d.ts +14 -1
  591. package/dist/2-core/ds-switch.d.ts.map +1 -1
  592. package/dist/2-core/ds-switch.js +3 -1
  593. package/dist/2-core/ds-tag.d.ts +8 -1
  594. package/dist/2-core/ds-tag.d.ts.map +1 -1
  595. package/dist/2-core/ds-tag.js +12 -2
  596. package/dist/2-core/ds-text.d.ts +7 -0
  597. package/dist/2-core/ds-text.d.ts.map +1 -1
  598. package/dist/2-core/ds-text.js +7 -0
  599. package/dist/2-core/ds-token.d.ts +3 -0
  600. package/dist/2-core/ds-token.d.ts.map +1 -1
  601. package/dist/2-core/ds-token.js +3 -0
  602. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  603. package/dist/2-core/ds-tooltip.js +23 -2
  604. package/dist/2-core/ds-window.d.ts +2 -0
  605. package/dist/2-core/ds-window.d.ts.map +1 -0
  606. package/dist/2-core/ds-window.js +1 -0
  607. package/dist/2-core/generated/ds-icon-map.d.ts +27 -6
  608. package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
  609. package/dist/2-core/generated/ds-icon-map.js +47 -5
  610. package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
  611. package/dist/2-core/generated/icons-extra.js +24 -3
  612. package/dist/2-core/generated/icons-immediate.d.ts +1 -1
  613. package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
  614. package/dist/2-core/generated/icons-immediate.js +3 -3
  615. package/dist/2-core/number-expression.d.ts +12 -0
  616. package/dist/2-core/number-expression.d.ts.map +1 -0
  617. package/dist/2-core/number-expression.js +82 -0
  618. package/dist/3-unit/calendar-base.d.ts +5 -0
  619. package/dist/3-unit/calendar-base.d.ts.map +1 -1
  620. package/dist/3-unit/calendar-base.js +3 -2
  621. package/dist/3-unit/context-trigger.d.ts.map +1 -1
  622. package/dist/3-unit/context-trigger.js +32 -2
  623. package/dist/3-unit/ds-calendar.d.ts +197 -4
  624. package/dist/3-unit/ds-calendar.d.ts.map +1 -1
  625. package/dist/3-unit/ds-calendar.js +687 -45
  626. package/dist/3-unit/ds-carousel.d.ts +3 -0
  627. package/dist/3-unit/ds-carousel.d.ts.map +1 -1
  628. package/dist/3-unit/ds-carousel.js +13 -1
  629. package/dist/3-unit/ds-context.d.ts +18 -1
  630. package/dist/3-unit/ds-context.d.ts.map +1 -1
  631. package/dist/3-unit/ds-context.js +37 -1
  632. package/dist/3-unit/ds-form.d.ts +9 -0
  633. package/dist/3-unit/ds-form.d.ts.map +1 -1
  634. package/dist/3-unit/ds-form.js +52 -11
  635. package/dist/3-unit/ds-list.d.ts +20 -1
  636. package/dist/3-unit/ds-list.d.ts.map +1 -1
  637. package/dist/3-unit/ds-list.js +31 -3
  638. package/dist/3-unit/ds-matrix.d.ts +3 -0
  639. package/dist/3-unit/ds-matrix.d.ts.map +1 -1
  640. package/dist/3-unit/ds-matrix.js +3 -0
  641. package/dist/3-unit/ds-menu.d.ts.map +1 -1
  642. package/dist/3-unit/ds-menu.js +17 -1
  643. package/dist/3-unit/ds-row.d.ts +13 -0
  644. package/dist/3-unit/ds-row.d.ts.map +1 -1
  645. package/dist/3-unit/ds-row.js +15 -2
  646. package/dist/3-unit/ds-select.js +1 -1
  647. package/dist/3-unit/ds-sidebar.d.ts +17 -0
  648. package/dist/3-unit/ds-sidebar.d.ts.map +1 -1
  649. package/dist/3-unit/ds-sidebar.js +14 -3
  650. package/dist/3-unit/ds-table-of-contents.d.ts +68 -0
  651. package/dist/3-unit/ds-table-of-contents.d.ts.map +1 -0
  652. package/dist/3-unit/ds-table-of-contents.js +190 -0
  653. package/dist/3-unit/ds-table.d.ts.map +1 -1
  654. package/dist/3-unit/ds-table.js +2 -1
  655. package/dist/3-unit/ds-tabs.d.ts +32 -1
  656. package/dist/3-unit/ds-tabs.d.ts.map +1 -1
  657. package/dist/3-unit/ds-tabs.js +39 -1
  658. package/dist/4-page/ds-container.d.ts.map +1 -1
  659. package/dist/4-page/ds-container.js +2 -1
  660. package/dist/4-page/ds-document.d.ts +3 -0
  661. package/dist/4-page/ds-document.d.ts.map +1 -1
  662. package/dist/4-page/ds-document.js +3 -0
  663. package/dist/4-page/ds-footer.d.ts +47 -7
  664. package/dist/4-page/ds-footer.d.ts.map +1 -1
  665. package/dist/4-page/ds-footer.js +58 -14
  666. package/dist/4-page/ds-header.d.ts +6 -0
  667. package/dist/4-page/ds-header.d.ts.map +1 -1
  668. package/dist/4-page/ds-header.js +4 -1
  669. package/dist/4-page/ds-overlay.d.ts +2 -2
  670. package/dist/4-page/ds-overlay.d.ts.map +1 -1
  671. package/dist/4-page/ds-overlay.js +8 -3
  672. package/dist/4-page/ds-page.d.ts +12 -0
  673. package/dist/4-page/ds-page.d.ts.map +1 -1
  674. package/dist/4-page/ds-page.js +19 -1
  675. package/dist/4-page/email.d.ts +2 -0
  676. package/dist/4-page/email.d.ts.map +1 -1
  677. package/dist/4-page/email.js +5 -4
  678. package/dist/5-visual-kit/app-chrome.d.ts +98 -0
  679. package/dist/5-visual-kit/app-chrome.d.ts.map +1 -0
  680. package/dist/5-visual-kit/app-chrome.js +119 -0
  681. package/dist/5-visual-kit/bezels.d.ts +30 -0
  682. package/dist/5-visual-kit/bezels.d.ts.map +1 -0
  683. package/dist/5-visual-kit/bezels.js +388 -0
  684. package/dist/5-visual-kit/browser-icons.d.ts +5 -0
  685. package/dist/5-visual-kit/browser-icons.d.ts.map +1 -0
  686. package/dist/5-visual-kit/browser-icons.js +51 -0
  687. package/dist/5-visual-kit/browser-styles.d.ts +3 -0
  688. package/dist/5-visual-kit/browser-styles.d.ts.map +1 -0
  689. package/dist/5-visual-kit/browser-styles.js +52 -0
  690. package/dist/5-visual-kit/device-bezel.d.ts +84 -0
  691. package/dist/5-visual-kit/device-bezel.d.ts.map +1 -0
  692. package/dist/5-visual-kit/device-bezel.js +56 -0
  693. package/dist/5-visual-kit/instagram-frame.d.ts +8 -0
  694. package/dist/5-visual-kit/instagram-frame.d.ts.map +1 -0
  695. package/dist/5-visual-kit/instagram-frame.js +13 -0
  696. package/dist/5-visual-kit/instagram.d.ts +18 -0
  697. package/dist/5-visual-kit/instagram.d.ts.map +1 -0
  698. package/dist/5-visual-kit/instagram.js +39 -0
  699. package/dist/5-visual-kit/mobile-chrome.d.ts +4 -0
  700. package/dist/5-visual-kit/mobile-chrome.d.ts.map +1 -0
  701. package/dist/5-visual-kit/mobile-chrome.js +24 -0
  702. package/dist/5-visual-kit/native-icon-paths.d.ts +146 -0
  703. package/dist/5-visual-kit/native-icon-paths.d.ts.map +1 -0
  704. package/dist/5-visual-kit/native-icon-paths.js +145 -0
  705. package/dist/5-visual-kit/window.d.ts +51 -0
  706. package/dist/5-visual-kit/window.d.ts.map +1 -0
  707. package/dist/5-visual-kit/window.js +20 -0
  708. package/dist/browser-icons-BFbS1tIx.js +56 -0
  709. package/dist/browser-icons-BFbS1tIx.js.map +1 -0
  710. package/dist/browser-icons-CT8qU77Z.js +48 -0
  711. package/dist/browser-icons-CT8qU77Z.js.map +1 -0
  712. package/dist/components.d.ts +1 -0
  713. package/dist/components.d.ts.map +1 -1
  714. package/dist/components.js +1 -0
  715. package/dist/design-system-1.bundle.js +5874 -2097
  716. package/dist/design-system-1.bundle.js.map +1 -1
  717. package/dist/design-system-1.bundle.min.js +7332 -4682
  718. package/dist/design-system-1.bundle.min.js.map +1 -1
  719. package/dist/design-system-1.css +1 -1
  720. package/dist/feedback.js +197 -167
  721. package/dist/feedback.js.map +1 -1
  722. package/dist/{icons-extra-CRxxWFjX.js → icons-extra-BMPvmQPI.js} +25 -4
  723. package/dist/icons-extra-BMPvmQPI.js.map +1 -0
  724. package/dist/{icons-extra-H5pqCM_R.js → icons-extra-BfYOw-cR.js} +83 -5
  725. package/dist/icons-extra-BfYOw-cR.js.map +1 -0
  726. package/dist/index.d.ts +12 -1
  727. package/dist/index.d.ts.map +1 -1
  728. package/dist/index.js +11 -1
  729. package/dist/instagram-CKofs55A.js +50 -0
  730. package/dist/instagram-CKofs55A.js.map +1 -0
  731. package/dist/instagram-CcYf5oiM.js +48 -0
  732. package/dist/instagram-CcYf5oiM.js.map +1 -0
  733. package/dist/lit-Ce_uWYM4.js +612 -0
  734. package/dist/lit-Ce_uWYM4.js.map +1 -0
  735. package/dist/lit-DGUVm1Ce.js +557 -0
  736. package/dist/lit-DGUVm1Ce.js.map +1 -0
  737. package/dist/native-icon-paths-CB9evXBM.js +93 -0
  738. package/dist/native-icon-paths-CB9evXBM.js.map +1 -0
  739. package/dist/native-icon-paths-zay-3g_n.js +150 -0
  740. package/dist/native-icon-paths-zay-3g_n.js.map +1 -0
  741. package/dist/react/avatar.d.ts +1 -1
  742. package/dist/react/choice.d.ts +4 -0
  743. package/dist/react/choice.d.ts.map +1 -1
  744. package/dist/react/choice.js +2 -2
  745. package/dist/react/context.d.ts +19 -4
  746. package/dist/react/context.d.ts.map +1 -1
  747. package/dist/react/context.js +4 -4
  748. package/dist/react/empty.d.ts +2 -2
  749. package/dist/react/empty.d.ts.map +1 -1
  750. package/dist/react/empty.js +1 -1
  751. package/dist/react/footer.d.ts +5 -5
  752. package/dist/react/footer.d.ts.map +1 -1
  753. package/dist/react/footer.js +2 -2
  754. package/dist/react/header.d.ts +2 -2
  755. package/dist/react/header.d.ts.map +1 -1
  756. package/dist/react/message.d.ts +4 -0
  757. package/dist/react/message.d.ts.map +1 -1
  758. package/dist/react/message.js +2 -2
  759. package/dist/react/number.d.ts +53 -0
  760. package/dist/react/number.d.ts.map +1 -0
  761. package/dist/react/number.js +25 -0
  762. package/dist/react/page.d.ts +1 -1
  763. package/dist/react/sidebar.d.ts +4 -0
  764. package/dist/react/sidebar.d.ts.map +1 -1
  765. package/dist/react/sidebar.js +2 -2
  766. package/dist/react/table-of-contents.d.ts +19 -0
  767. package/dist/react/table-of-contents.d.ts.map +1 -0
  768. package/dist/react/table-of-contents.js +28 -0
  769. package/dist/{shared-words-CdMDVtXx.js → shared-words-C5cjxMjZ.js} +151 -16
  770. package/dist/shared-words-C5cjxMjZ.js.map +1 -0
  771. package/dist/{shared-words-BtRee8xR.js → shared-words-Cdm7xd-_.js} +163 -28
  772. package/dist/shared-words-Cdm7xd-_.js.map +1 -0
  773. package/package.json +25 -12
  774. package/DS1/3-unit/ds-calendar-large.ts +0 -353
  775. package/DS1/3-unit/styles/ds-calendar-large.css +0 -178
  776. package/dist/3-unit/ds-calendar-large.d.ts +0 -142
  777. package/dist/3-unit/ds-calendar-large.d.ts.map +0 -1
  778. package/dist/3-unit/ds-calendar-large.js +0 -308
  779. package/dist/icons-extra-CRxxWFjX.js.map +0 -1
  780. package/dist/icons-extra-H5pqCM_R.js.map +0 -1
  781. package/dist/shared-words-BtRee8xR.js.map +0 -1
  782. package/dist/shared-words-CdMDVtXx.js.map +0 -1
@@ -30,6 +30,10 @@
30
30
  "Light": "Claro",
31
31
  "Dark": "Escuro",
32
32
  "System": "Sistema",
33
+ "Shape": "Forma",
34
+ "Square": "Quadrada",
35
+ "Rounded": "Arredondada",
36
+ "Circular": "Circular",
33
37
  "Note": "Nota",
34
38
  "Page": "Página",
35
39
  "Red": "Vermelho",
@@ -124,6 +128,11 @@
124
128
  "Total": "Total",
125
129
  "End date": "Data de fim",
126
130
  "Include time": "Incluir hora",
127
- "Time": "Hora"
131
+ "Time": "Hora",
132
+ "Day": "Dia",
133
+ "Week": "Semana",
134
+ "Month": "Mês",
135
+ "Swimlane": "Raias",
136
+ "View": "Vista"
128
137
  }
129
138
  }
@@ -30,6 +30,10 @@
30
30
  "Light": "Ljust",
31
31
  "Dark": "Mörkt",
32
32
  "System": "System",
33
+ "Shape": "Form",
34
+ "Square": "Fyrkantig",
35
+ "Rounded": "Rundad",
36
+ "Circular": "Cirkulär",
33
37
  "Note": "Anteckning",
34
38
  "Page": "Sida",
35
39
  "Red": "Röd",
@@ -124,6 +128,11 @@
124
128
  "Total": "Totalt",
125
129
  "End date": "Slutdatum",
126
130
  "Include time": "Inkludera tid",
127
- "Time": "Tid"
131
+ "Time": "Tid",
132
+ "Day": "Dag",
133
+ "Week": "Vecka",
134
+ "Month": "Månad",
135
+ "Swimlane": "Banor",
136
+ "View": "Vy"
128
137
  }
129
138
  }
@@ -30,6 +30,10 @@
30
30
  "Light": "浅色",
31
31
  "Dark": "深色",
32
32
  "System": "跟随系统",
33
+ "Shape": "形状",
34
+ "Square": "方形",
35
+ "Rounded": "圆角",
36
+ "Circular": "圆形",
33
37
  "Note": "笔记",
34
38
  "Page": "页面",
35
39
  "Red": "红色",
@@ -124,6 +128,11 @@
124
128
  "Total": "合计",
125
129
  "End date": "结束日期",
126
130
  "Include time": "包含时间",
127
- "Time": "时间"
131
+ "Time": "时间",
132
+ "Day": "日",
133
+ "Week": "周",
134
+ "Month": "月",
135
+ "Swimlane": "泳道",
136
+ "View": "视图"
128
137
  }
129
138
  }
@@ -0,0 +1,6 @@
1
+ import type { Finding } from './constraints';
2
+ /** Headings in the rendered tree, including native table headers, slots and open shadow roots. */
3
+ export declare function wordHeaders(root: ParentNode): Element[];
4
+ /** Measure actual line breaks, not merely a CSS declaration that might never break a word. */
5
+ export declare function inspectWordWrap(root: ParentNode): Finding[];
6
+ //# sourceMappingURL=word-wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"word-wrap.d.ts","sourceRoot":"","sources":["../../DS1/0-face/word-wrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmB7C,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,CAgBvD;AAWD,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,EAAE,CAgE3D"}
@@ -0,0 +1,119 @@
1
+ const selector = 'h1,h2,h3,h4,h5,h6,th,[role="heading"],[role="columnheader"],[role="rowheader"],ds-text[size="heading"],ds-text[size="display"],.ds-text--heading,.ds-text--display';
2
+ const styleOf = (element) => element.ownerDocument.defaultView.getComputedStyle(element);
3
+ const parentOf = (node) => node.assignedSlot
4
+ ?? node.parentElement ?? (node.getRootNode().host || null);
5
+ function children(node) {
6
+ if (node.nodeType === 1) {
7
+ const element = node;
8
+ if (element.localName === 'slot') {
9
+ const assigned = element.assignedNodes({ flatten: true });
10
+ if (assigned.length)
11
+ return assigned;
12
+ }
13
+ if (element.shadowRoot)
14
+ return Array.from(element.shadowRoot.childNodes);
15
+ }
16
+ return Array.from(node.childNodes);
17
+ }
18
+ /** Headings in the rendered tree, including native table headers, slots and open shadow roots. */
19
+ export function wordHeaders(root) {
20
+ const headers = [];
21
+ function visit(node, inHeader = false) {
22
+ if (node.nodeType === 1) {
23
+ const element = node;
24
+ const style = styleOf(element);
25
+ if (style.display === 'none' || style.visibility === 'hidden' || Number(style.opacity) === 0)
26
+ return;
27
+ if (element.matches(selector) && !inHeader) {
28
+ headers.push(element);
29
+ inHeader = true;
30
+ }
31
+ }
32
+ for (const child of children(node))
33
+ visit(child, inHeader);
34
+ }
35
+ visit(root);
36
+ return headers;
37
+ }
38
+ function languageOf(element) {
39
+ for (let current = element; current; current = parentOf(current)) {
40
+ if (current.hasAttribute('lang'))
41
+ return current.getAttribute('lang') ?? '';
42
+ }
43
+ return '';
44
+ }
45
+ /** Measure actual line breaks, not merely a CSS declaration that might never break a word. */
46
+ export function inspectWordWrap(root) {
47
+ const findings = [];
48
+ for (const header of wordHeaders(root)) {
49
+ let text = '';
50
+ const letters = [];
51
+ function collect(node) {
52
+ if (node.nodeType === 3) {
53
+ const element = parentOf(node);
54
+ if (!element)
55
+ return;
56
+ for (let offset = 0; offset < (node.nodeValue?.length ?? 0); offset++) {
57
+ text += node.nodeValue[offset];
58
+ letters.push({ node: node, offset, element });
59
+ }
60
+ }
61
+ else {
62
+ if (node.nodeType === 1) {
63
+ const style = styleOf(node);
64
+ if (style.display === 'none' || style.visibility === 'hidden' || Number(style.opacity) === 0)
65
+ return;
66
+ }
67
+ for (const child of children(node))
68
+ collect(child);
69
+ }
70
+ }
71
+ collect(header);
72
+ // These alphabetic scripts break at words. CJK and scripts with dictionary-based line
73
+ // breaking retain their native typesetting rules instead of being treated as long words.
74
+ const words = text.matchAll(/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}\p{Script=Arabic}\p{Script=Hebrew}\p{M}\u00ad]+/gu);
75
+ for (const match of words) {
76
+ const word = match[0];
77
+ const start = match.index;
78
+ let previous;
79
+ let broken = false;
80
+ for (let index = start; index < start + word.length; index++) {
81
+ if (text[index] === '\u00ad')
82
+ continue;
83
+ const letter = letters[index];
84
+ const range = header.ownerDocument.createRange();
85
+ range.setStart(letter.node, letter.offset);
86
+ range.setEnd(letter.node, letter.offset + 1);
87
+ const box = Array.from(range.getClientRects()).filter(rect => rect.width > 0 && rect.height > 0).pop();
88
+ if (!box)
89
+ continue;
90
+ const style = styleOf(letter.element);
91
+ const vertical = style.writingMode.startsWith('vertical');
92
+ const overlap = previous && (vertical
93
+ ? Math.min(box.right, previous.box.right) - Math.max(box.left, previous.box.left)
94
+ : Math.min(box.bottom, previous.box.bottom) - Math.max(box.top, previous.box.top));
95
+ if (previous && overlap <= 1) {
96
+ const previousStyle = styleOf(previous.letter.element);
97
+ const hyphens = style.hyphens || style.getPropertyValue('-webkit-hyphens');
98
+ const manual = text.slice(previous.index + 1, index).includes('\u00ad') && hyphens !== 'none';
99
+ // Auto hyphenation is an engine/language decision. Never excuse emergency wrapping
100
+ // or an explicit line break just because hyphens:auto happens to be inherited.
101
+ const automatic = hyphens === 'auto' && languageOf(letter.element) !== ''
102
+ && letter.node === previous.letter.node
103
+ && [style, previousStyle].every(s => !['break-all', 'break-word'].includes(s.wordBreak)
104
+ && !['anywhere', 'break-word'].includes(s.overflowWrap));
105
+ if (!manual && !automatic) {
106
+ broken = true;
107
+ break;
108
+ }
109
+ }
110
+ previous = { box, letter, index };
111
+ }
112
+ if (broken) {
113
+ findings.push({ element: header, message: `“${word.replace(/\u00ad/g, '')}” breaks inside a word without a typesetting hyphen; give the header room, wrap between words, or hyphenate a long word at a valid language-specific point.` });
114
+ break;
115
+ }
116
+ }
117
+ }
118
+ return findings;
119
+ }
@@ -0,0 +1,12 @@
1
+ /** Shared geometry belongs to the foundation, not to a design library's appearance.
2
+ * These are unscaled inputs; device scaling and resolved component metrics stay shared.
3
+ * Rendered constraints still check layout, contrast, labels and font alignment.
4
+ */
5
+ export declare const FOUNDATION_TOKENS: Readonly<Record<string, string>>;
6
+ /** The squares a design may stand on: the default 20px, a finer 10px for tuning, or a coarser 30px. */
7
+ export declare const SUPPORTED_UNITS: readonly [10, 20, 30];
8
+ /** A foundation input a design may change within its supported scales, rather than one fixed. */
9
+ export declare const foundationScale: (name: string) => boolean;
10
+ /** A design can repeat a foundation default or choose a supported scale; anything else requires a foundation release. */
11
+ export declare function foundationTokenIssue(name: string, value: string): string | undefined;
12
+ //# sourceMappingURL=foundation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../../DS1/1-root/foundation.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY9D,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,eAAe,uBAAqC,CAAC;AAsBlE,iGAAiG;AACjG,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,YAAmB,CAAC;AAEhE,yHAAyH;AACzH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYpF"}
@@ -0,0 +1,59 @@
1
+ import { measures } from './measures';
2
+ /** Shared geometry belongs to the foundation, not to a design library's appearance.
3
+ * These are unscaled inputs; device scaling and resolved component metrics stay shared.
4
+ * Rendered constraints still check layout, contrast, labels and font alignment.
5
+ */
6
+ export const FOUNDATION_TOKENS = {
7
+ '--ds-1': `${measures.square}px`,
8
+ '--one-unit': `${measures.square}px`,
9
+ '--ds-control-size': `${measures.control}px`,
10
+ '--one-control-height': `${measures.control}px`,
11
+ '--ds-row-size': `${measures.row}px`,
12
+ '--ds-text-leading': `${measures.leading}px`,
13
+ '--ds-08': 'calc(var(--ds-1) * 0.8)',
14
+ '--ds-unit': 'calc(var(--ds-1, 20px) * var(--ds-sf, 1))',
15
+ '--ds-control-height': 'calc(var(--ds-control-size, var(--ds-08, 16px)) * var(--ds-sf, 1))',
16
+ '--ds-row-height': 'calc(var(--ds-row-size, var(--ds-1, 20px)) * var(--ds-sf, 1))',
17
+ '--ds-type-lineheight-default': 'calc(var(--ds-text-leading, 16px) * var(--ds-sf, 1))',
18
+ };
19
+ /** The squares a design may stand on: the default 20px, a finer 10px for tuning, or a coarser 30px. */
20
+ export const SUPPORTED_UNITS = [10, measures.square, 30];
21
+ /** The finest supported square: rows stand on whole multiples of it. */
22
+ const finest = Math.min(...SUPPORTED_UNITS);
23
+ /** A control is its row less the spare four, as the default 16px control sits in its 20px row. */
24
+ const spare = measures.square - measures.control;
25
+ const onTens = (px) => px > 0 && px % finest === 0;
26
+ /** A control fills whole squares, or stands in them less the spare four. */
27
+ const controlOnTens = (px) => px >= measures.control && (onTens(px) || onTens(px + spare));
28
+ /** A line of text's box keeps to the spare four, from the default 16px up. */
29
+ const leadingOnFours = (px) => px >= measures.leading && px % spare === 0;
30
+ /** The geometry inputs a design may set within the foundation, with the values they accept. */
31
+ const SCALES = {
32
+ '--ds-1': { allows: (px) => SUPPORTED_UNITS.includes(px), words: `one of ${SUPPORTED_UNITS.join(', ')}px` },
33
+ '--one-unit': { allows: (px) => SUPPORTED_UNITS.includes(px), words: `one of ${SUPPORTED_UNITS.join(', ')}px` },
34
+ '--ds-row-size': { allows: onTens, words: `a whole number of ${finest}px squares` },
35
+ '--ds-control-size': { allows: controlOnTens, words: `whole ${finest}px squares, or those less ${spare}px, ${measures.control}px or more` },
36
+ '--one-control-height': { allows: controlOnTens, words: `whole ${finest}px squares, or those less ${spare}px, ${measures.control}px or more` },
37
+ '--ds-text-leading': { allows: leadingOnFours, words: `a multiple of ${spare}px, ${measures.leading}px or more` },
38
+ };
39
+ /** A foundation input a design may change within its supported scales, rather than one fixed. */
40
+ export const foundationScale = (name) => name in SCALES;
41
+ /** A design can repeat a foundation default or choose a supported scale; anything else requires a foundation release. */
42
+ export function foundationTokenIssue(name, value) {
43
+ const expected = FOUNDATION_TOKENS[name];
44
+ if (!expected)
45
+ return;
46
+ if (value.replace(/\s/g, '') === expected.replace(/\s/g, ''))
47
+ return;
48
+ // The published compatibility bridge derives these inputs from protected library tokens.
49
+ if ((name === '--ds-1' && value.trim() === 'var(--one-unit)') ||
50
+ (name === '--ds-control-size' && value.trim() === 'var(--one-control-height)'))
51
+ return;
52
+ const literal = /^([0-9]+(?:\.[0-9]+)?)px$/i.exec(value.trim());
53
+ const scale = SCALES[name];
54
+ if (literal && (scale ? scale.allows(Number(literal[1])) : Number(literal[1]) === Number.parseFloat(expected)))
55
+ return;
56
+ if (scale)
57
+ return `${name} belongs to the shared foundation and must be ${scale.words}. Change colours, fonts and appearance within its constraints.`;
58
+ return `${name} belongs to the shared foundation and must stay ${expected}. Change colours, fonts and appearance within its constraints.`;
59
+ }
@@ -14,6 +14,7 @@ export interface SplitButtonState extends HTMLElement {
14
14
  splitDisabled: boolean;
15
15
  actions: boolean;
16
16
  literal: boolean;
17
+ labelled?: boolean;
17
18
  renderRoot: HTMLElement | DocumentFragment;
18
19
  }
19
20
  export declare function focusSplit(host: SplitButtonState, options?: FocusOptions): void;
@@ -1 +1 @@
1
- {"version":3,"file":"button-split.d.ts","sourceRoot":"","sources":["../../DS1/2-core/button-split.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACrD,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACnE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,WAAW,GAAG,gBAAgB,CAAC;CAChF;AAuBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,QAGxE;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,mCAYjD"}
1
+ {"version":3,"file":"button-split.d.ts","sourceRoot":"","sources":["../../DS1/2-core/button-split.ts"],"names":[],"mappings":"AAEA,OAAO,WAAW,CAAC;AACnB,OAAO,WAAW,CAAC;AACnB,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACrD,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACnE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,WAAW,GAAG,gBAAgB,CAAC;CACpG;AAuBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,QAGxE;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,mCAiBjD"}
@@ -34,15 +34,20 @@ export function focusSplit(host, options) {
34
34
  (buttons.find(button => button.getAttribute("aria-pressed") === "true") ?? buttons[0])?.focus(options);
35
35
  }
36
36
  export function renderSplit(host) {
37
+ // `labelled` writes a segment's words after its icon; otherwise an icon stands alone and names it.
38
+ const words = (segment) => html `<ds-text .text=${segment.label} .literal=${host.literal}></ds-text>`;
37
39
  return html `${choices(host).map(segment => html `<button
38
40
  type="button" part="segment" value=${segment.value}
39
41
  aria-pressed=${host.actions ? nothing : String(segment.value === host.value)}
40
- aria-label=${segment.icon ? (host.literal ? segment.label : getText(segment.label)) : nothing}
41
- ?data-icon=${!!segment.icon}
42
+ aria-label=${segment.icon && !host.labelled ? (host.literal ? segment.label : getText(segment.label)) : nothing}
43
+ ?data-icon=${!!segment.icon && !host.labelled}
44
+ ?data-icon-words=${!!segment.icon && !!host.labelled}
42
45
  ?data-short=${segment.label.length === 1}
43
46
  ?disabled=${host.splitDisabled || segment.disabled}
44
47
  @click=${() => press(host, segment)}
45
48
  >${segment.icon
46
- ? html `<ds-icon type=${segment.icon} aria-hidden="true"></ds-icon>`
47
- : html `<ds-text .text=${segment.label} .literal=${host.literal}></ds-text>`}</button>`)}`;
49
+ ? host.labelled
50
+ ? html `<ds-icon type=${segment.icon} aria-hidden="true"></ds-icon>${words(segment)}`
51
+ : html `<ds-icon type=${segment.icon} aria-hidden="true"></ds-icon>`
52
+ : words(segment)}</button>`)}`;
48
53
  }
@@ -43,6 +43,8 @@ export interface CrosshairEvent {
43
43
  x: number;
44
44
  y: number;
45
45
  }
46
+ /** The round sizes a square of a chart stands for: 1, 2, 2.5 and 5 times a power of ten. */
47
+ export declare const STEPS: number[];
46
48
  export declare class Series {
47
49
  private chart;
48
50
  options: SeriesOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"grid-chart.d.ts","sourceRoot":"","sources":["../../../DS1/2-core/chart/grid-chart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid-chart.d.ts","sourceRoot":"","sources":["../../../DS1/2-core/chart/grid-chart.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@
8
8
  * and a five-year series draw with the same one-pixel stroke and never blur;
9
9
  * - fills are one-pixel strokes at two-pixel intervals, for a patterned fill.
10
10
  */
11
- const STEPS = [];
11
+ /** The round sizes a square of a chart stands for: 1, 2, 2.5 and 5 times a power of ten. */
12
+ export const STEPS = [];
12
13
  for (let exp = -4; exp <= 9; exp++) {
13
14
  for (const base of [1, 2, 2.5, 5])
14
15
  STEPS.push(base * 10 ** exp);
@@ -0,0 +1,25 @@
1
+ import { LitElement } from "lit";
2
+ /**
3
+ * A working mark on the sixteen: four-pixel cells rearrange inside a control
4
+ * square. Set active only while work is running; the default slot names the
5
+ * actual operation. Reduced motion keeps the resting arrangement. Decorative
6
+ * marks use aria-hidden and put their status in a separate live region.
7
+ */
8
+ export declare class Activity extends LitElement {
9
+ static properties: {
10
+ active: {
11
+ type: BooleanConstructor;
12
+ reflect: boolean;
13
+ };
14
+ };
15
+ static styles: import("lit").CSSResult[];
16
+ active: boolean;
17
+ constructor();
18
+ render(): import("lit").TemplateResult<1>;
19
+ }
20
+ declare global {
21
+ interface HTMLElementTagNameMap {
22
+ "ds-activity": Activity;
23
+ }
24
+ }
25
+ //# sourceMappingURL=ds-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-activity.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAWlD;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,MAAM,CAAC,UAAU;;;;;MAAgD;IACjE,MAAM,CAAC,MAAM,4BAA2C;IAChD,MAAM,EAAE,OAAO,CAAC;;IAExB,MAAM;CAOP;AAED,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,aAAa,EAAE,QAAQ,CAAA;KAAE;CAAE"}
@@ -0,0 +1,28 @@
1
+ import { LitElement, html, unsafeCSS } from "lit";
2
+ import { define } from "../0-face/define";
3
+ import metrics from "../1-root/component-metrics.css?inline";
4
+ import styles from "./styles/ds-activity.css?inline";
5
+ // Each frame is a small arrangement of squares, not a measure of completion.
6
+ const patterns = [
7
+ [5, 6, 9, 10], [1, 5, 6, 9], [1, 2, 6, 10], [2, 6, 7, 10],
8
+ [5, 6, 9, 10], [6, 9, 10, 14], [5, 9, 13, 14], [5, 8, 9, 13],
9
+ ];
10
+ /**
11
+ * A working mark on the sixteen: four-pixel cells rearrange inside a control
12
+ * square. Set active only while work is running; the default slot names the
13
+ * actual operation. Reduced motion keeps the resting arrangement. Decorative
14
+ * marks use aria-hidden and put their status in a separate live region.
15
+ */
16
+ export class Activity extends LitElement {
17
+ constructor() { super(); this.active = false; }
18
+ render() {
19
+ return html `<span class="mark" aria-hidden="true">
20
+ ${patterns.map((cells, frame) => html `<span class="frame" style=${`animation-delay: -${frame * 200}ms`}>
21
+ ${Array.from({ length: 16 }, (_, cell) => html `<i class=${cells.includes(cell) ? "ink" : ""}></i>`)}
22
+ </span>`)}
23
+ </span><span class="words"><slot></slot></span>`;
24
+ }
25
+ }
26
+ Activity.properties = { active: { type: Boolean, reflect: true } };
27
+ Activity.styles = [unsafeCSS(metrics), unsafeCSS(styles)];
28
+ define("ds-activity", Activity);
@@ -0,0 +1,2 @@
1
+ export * from '../5-visual-kit/app-chrome';
2
+ //# sourceMappingURL=ds-app-chrome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ds-app-chrome.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-app-chrome.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1 @@
1
+ export * from '../5-visual-kit/app-chrome';
@@ -1,6 +1,8 @@
1
1
  import { LitElement, type PropertyValues } from "lit";
2
2
  /** Saved identity colours are hex; their ink must stay legible in either theme. */
3
3
  export declare function avatarInk(color: string): string | undefined;
4
+ /** The ink on a fill as the browser resolved it (`rgb(253, 187, 45)`), for a `color` given as a variable. */
5
+ export declare function inkOnResolved(fill: string): string | undefined;
4
6
  /**
5
7
  * A person's or workspace's mark, one control high and round by default;
6
8
  * `shape="square"` gives it a picture's corners (`--ds-avatar-radius`, the
@@ -88,7 +90,17 @@ export declare class Avatar extends LitElement {
88
90
  private failed;
89
91
  static styles: import("lit").CSSResult;
90
92
  constructor();
93
+ private inkObserver?;
94
+ private inkFrame;
95
+ private readonly queueInk;
96
+ connectedCallback(): void;
97
+ disconnectedCallback(): void;
91
98
  protected willUpdate(changed: PropertyValues<this>): void;
99
+ /** A fill named by a variable (`var(--brand-highlight)`) gets its ink once the browser has resolved it. */
100
+ protected updated(): void;
101
+ /** Reads the fill as drawn; while the variable is still undefined (its stylesheet on its way), looks again next
102
+ * frame, and once more when the page has loaded everything. */
103
+ private resolveInk;
92
104
  render(): import("lit").TemplateResult<1>;
93
105
  }
94
106
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"ds-avatar.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAYhF,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS3D;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBf;IACM,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAC1D,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,2EAA2E;IACnE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACvB,QAAgB,MAAM,CAAU;IAChC,QAAgB,MAAM,CAAU;IAChC,MAAM,CAAC,MAAM,0BAAqB;;IAclC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAOlD,MAAM;CAoDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
1
+ {"version":3,"file":"ds-avatar.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-avatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAsBhF,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK3D;AAED,6GAA6G;AAC7G,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM9D;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiBf;IACM,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAC1D,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,2EAA2E;IACnE,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IAC/C,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACvB,QAAgB,MAAM,CAAU;IAChC,QAAgB,MAAM,CAAU;IAChC,MAAM,CAAC,MAAM,0BAAqB;;IAclC,OAAO,CAAC,WAAW,CAAC,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGvB;IACF,iBAAiB;IAUjB,oBAAoB;IAMpB,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAOlD,2GAA2G;IAC3G,SAAS,CAAC,OAAO;IAIjB;oEACgE;IAChE,OAAO,CAAC,UAAU;IAwBlB,MAAM;CAoDP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { LitElement, html, nothing, unsafeCSS } from "lit";
2
2
  import { styleMap } from "lit/directives/style-map.js";
3
3
  import { keyed } from "lit/directives/keyed.js";
4
+ import { contrastRatio, colorReader, composite } from "../0-face/text-contrast";
4
5
  import { define } from "../0-face/define";
5
6
  import { provideIcons } from "./ds-icon";
6
7
  import { avatarIcon } from "./generated/icon-avatar";
@@ -8,17 +9,33 @@ import styles from "./styles/ds-avatar.css?inline";
8
9
  // The person drawing (`icon="avatar"`) comes with the avatar, so it draws in
9
10
  // the first frame instead of the initial while the deferred icons load.
10
11
  provideIcons({ avatar: avatarIcon });
12
+ /** The ink that reads on a fill: black on a light one, white on a dark one. */
13
+ const inkOn = (rgb) => {
14
+ const fill = [...rgb, 1];
15
+ const white = [1, 1, 1, 1], black = [42 / 255, 42 / 255, 42 / 255, 1];
16
+ if (contrastRatio(black, fill) >= 4.5)
17
+ return "var(--ds-black)";
18
+ if (contrastRatio(white, fill) >= 4.5)
19
+ return "var(--ds-white)";
20
+ return "black";
21
+ };
11
22
  /** Saved identity colours are hex; their ink must stay legible in either theme. */
12
23
  export function avatarInk(color) {
13
24
  const match = /^#([a-f\d]{6}|[a-f\d]{3})$/i.exec(color);
14
25
  if (!match)
15
26
  return undefined;
16
27
  const hex = match[1].length === 3 ? [...match[1]].map((c) => c + c).join("") : match[1];
17
- const rgb = [0, 2, 4]
18
- .map((i) => parseInt(hex.slice(i, i + 2), 16) / 255)
19
- .map((n) => (n <= 0.04045 ? n / 12.92 : ((n + 0.055) / 1.055) ** 2.4));
20
- const luminance = rgb[0] * 0.2126 + rgb[1] * 0.7152 + rgb[2] * 0.0722;
21
- return luminance > 0.22 ? "var(--ds-black)" : "var(--ds-white)";
28
+ return inkOn([0, 2, 4].map((i) => parseInt(hex.slice(i, i + 2), 16) / 255));
29
+ }
30
+ /** The ink on a fill as the browser resolved it (`rgb(253, 187, 45)`), for a `color` given as a variable. */
31
+ export function inkOnResolved(fill) {
32
+ const match = /^rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)(?:[,\s/]+([\d.]+%?))?\s*\)/.exec(fill);
33
+ if (!match)
34
+ return undefined;
35
+ // A fill with no colour yet (`rgba(0, 0, 0, 0)`) says nothing about the ink.
36
+ if (match[4] !== undefined && parseFloat(match[4]) === 0)
37
+ return undefined;
38
+ return inkOn([match[1], match[2], match[3]].map((n) => Number(n) / 255));
22
39
  }
23
40
  /**
24
41
  * A person's or workspace's mark, one control high and round by default;
@@ -31,6 +48,12 @@ export function avatarInk(color) {
31
48
  export class Avatar extends LitElement {
32
49
  constructor() {
33
50
  super();
51
+ this.inkFrame = 0;
52
+ this.queueInk = () => {
53
+ const view = this.ownerDocument.defaultView;
54
+ if (!this.inkFrame)
55
+ this.inkFrame = view.requestAnimationFrame(() => { this.inkFrame = 0; this.resolveInk(); });
56
+ };
34
57
  this.label = "";
35
58
  this.initial = "?";
36
59
  this.src = "";
@@ -42,6 +65,24 @@ export class Avatar extends LitElement {
42
65
  this.fit = "cover";
43
66
  this.logo = this.mask = this.outlined = this.pending = this.plain = this.loaded = this.failed = false;
44
67
  }
68
+ connectedCallback() {
69
+ super.connectedCallback();
70
+ const view = this.ownerDocument.defaultView;
71
+ this.inkObserver = new view.MutationObserver(this.queueInk);
72
+ // Observe only the painted ancestors, never our own shadow's ink writes.
73
+ for (let parent = this; parent; parent = parent.parentElement ?? parent.getRootNode().host ?? null) {
74
+ this.inkObserver.observe(parent, { attributes: true, attributeFilter: ['class', 'style', 'data-theme'] });
75
+ }
76
+ view.addEventListener('load', this.queueInk, true);
77
+ }
78
+ disconnectedCallback() {
79
+ super.disconnectedCallback();
80
+ this.inkObserver?.disconnect();
81
+ const view = this.ownerDocument.defaultView;
82
+ view.cancelAnimationFrame(this.inkFrame);
83
+ this.inkFrame = 0;
84
+ view.removeEventListener('load', this.queueInk, true);
85
+ }
45
86
  willUpdate(changed) {
46
87
  if (changed.has("src")) {
47
88
  this.loaded = false;
@@ -49,19 +90,57 @@ export class Avatar extends LitElement {
49
90
  this.style.removeProperty("--ds-avatar-intrinsic-ratio");
50
91
  }
51
92
  }
93
+ /** A fill named by a variable (`var(--brand-highlight)`) gets its ink once the browser has resolved it. */
94
+ updated() {
95
+ if (this.ink || this.pending || this.plain)
96
+ return;
97
+ this.resolveInk();
98
+ }
99
+ /** Reads the fill as drawn; while the variable is still undefined (its stylesheet on its way), looks again next
100
+ * frame, and once more when the page has loaded everything. */
101
+ resolveInk(tries = 0) {
102
+ const frame = this.renderRoot.querySelector(".frame");
103
+ if (!frame || !this.isConnected)
104
+ return;
105
+ if (this.ink || this.pending || this.plain)
106
+ return;
107
+ const view = this.ownerDocument.defaultView;
108
+ const read = colorReader(this.ownerDocument);
109
+ let fill = read(view.getComputedStyle(frame).backgroundColor);
110
+ if (fill && fill[3] > 0) {
111
+ for (let parent = this; parent && fill[3] < 1; parent = parent.parentElement ?? parent.getRootNode().host ?? null) {
112
+ const background = read(view.getComputedStyle(parent).backgroundColor);
113
+ if (background)
114
+ fill = composite(fill, background);
115
+ }
116
+ if (fill[3] < 1)
117
+ return;
118
+ const tokens = view.getComputedStyle(this);
119
+ const black = read(tokens.getPropertyValue('--ds-black').trim()), white = read(tokens.getPropertyValue('--ds-white').trim());
120
+ const ink = black && contrastRatio(black, fill) >= 4.5 ? 'var(--ds-black)' : white && contrastRatio(white, fill) >= 4.5 ? 'var(--ds-white)' : contrastRatio([0, 0, 0, 1], fill) >= 4.5 ? 'black' : 'white';
121
+ if (frame.style.color !== ink)
122
+ frame.style.color = ink;
123
+ return;
124
+ }
125
+ if (tries < 60)
126
+ this.ownerDocument.defaultView.requestAnimationFrame(() => this.resolveInk(tries + 1));
127
+ if (tries === 0 && this.ownerDocument.readyState !== "complete") {
128
+ this.ownerDocument.defaultView?.addEventListener("load", () => this.resolveInk(60), { once: true });
129
+ }
130
+ }
52
131
  render() {
53
132
  const src = this.src;
54
133
  const fallback = this.icon
55
134
  ? html `<ds-icon type=${this.icon} aria-hidden="true"></ds-icon>`
56
135
  : html `<span
57
136
  class="initial"
58
- ?data-pair=${[...this.initial].length > 1}
137
+ ?data-pair=${[...this.initial].length > 1 && !/^\d{1,2}$/.test(this.initial)}
59
138
  style=${styleMap({ "--initial-count": String([...this.initial].length || 1) })}
60
139
  >${this.initial}</span
61
140
  >`;
62
141
  return html `<span
63
142
  class="frame"
64
- style=${styleMap({ backgroundColor: !this.pending && !this.plain ? this.color || undefined : undefined, color: !this.pending ? this.ink || avatarInk(this.color) : undefined })}
143
+ style=${styleMap({ backgroundColor: !this.pending && !this.plain ? this.color || undefined : undefined, color: !this.pending ? this.ink || (!this.plain ? avatarInk(this.color) : undefined) : undefined })}
65
144
  role=${this.label ? "img" : nothing}
66
145
  aria-label=${this.label || nothing}
67
146
  aria-hidden=${this.label ? nothing : "true"}
@@ -1,6 +1,10 @@
1
1
  import { LitElement } from "lit";
2
+ import { CutFades } from "../0-face/cut-fade";
2
3
  import "./ds-icon";
3
- /** A noninteractive status label. Products own its words and status meaning. */
4
+ /**
5
+ * A noninteractive status label. Products own its words and status meaning.
6
+ * Words that do not fit fade out over their last square, never an ellipsis.
7
+ */
4
8
  export declare class Badge extends LitElement {
5
9
  static properties: {
6
10
  icon: {
@@ -18,6 +22,8 @@ export declare class Badge extends LitElement {
18
22
  private observer?;
19
23
  private contentObserver?;
20
24
  private measureFrame;
25
+ /** Marks the words `data-cut="end"` while they are wider than the badge. */
26
+ protected readonly cuts: CutFades;
21
27
  constructor();
22
28
  connectedCallback(): void;
23
29
  disconnectedCallback(): void;