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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (777) 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 +422 -0
  5. package/DS1/0-face/constraint-site.ts +200 -0
  6. package/DS1/0-face/constraints.ts +281 -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/feedback-overlays.ts +5 -3
  13. package/DS1/0-face/feedback.ts +3 -0
  14. package/DS1/0-face/focus-vision.swift +31 -0
  15. package/DS1/0-face/focus.ts +181 -0
  16. package/DS1/0-face/google-face-metrics.json +102 -0
  17. package/DS1/0-face/grid.ts +61 -4
  18. package/DS1/0-face/i18n.ts +36 -18
  19. package/DS1/0-face/layout-inspector.ts +124 -98
  20. package/DS1/0-face/preference-options.ts +4 -0
  21. package/DS1/0-face/scaling.ts +21 -3
  22. package/DS1/0-face/shape.ts +43 -0
  23. package/DS1/0-face/text-contrast.ts +164 -0
  24. package/DS1/0-face/theme-bootstrap.js +43 -0
  25. package/DS1/0-face/toast-queue.ts +7 -1
  26. package/DS1/0-face/translations/da.json +10 -1
  27. package/DS1/0-face/translations/de.json +10 -1
  28. package/DS1/0-face/translations/en.json +10 -1
  29. package/DS1/0-face/translations/es.json +10 -1
  30. package/DS1/0-face/translations/fi.json +10 -1
  31. package/DS1/0-face/translations/fr.json +10 -1
  32. package/DS1/0-face/translations/is.json +10 -1
  33. package/DS1/0-face/translations/it.json +10 -1
  34. package/DS1/0-face/translations/ja.json +10 -1
  35. package/DS1/0-face/translations/ko.json +10 -1
  36. package/DS1/0-face/translations/nb.json +10 -1
  37. package/DS1/0-face/translations/pt-BR.json +10 -1
  38. package/DS1/0-face/translations/pt.json +10 -1
  39. package/DS1/0-face/translations/sv.json +10 -1
  40. package/DS1/0-face/translations/zh.json +10 -1
  41. package/DS1/0-face/word-wrap.ts +113 -0
  42. package/DS1/1-root/card.css +47 -20
  43. package/DS1/1-root/carousel.css +7 -0
  44. package/DS1/1-root/cjk.css +1 -1
  45. package/DS1/1-root/component-tokens.css +3 -2
  46. package/DS1/1-root/context.css +44 -6
  47. package/DS1/1-root/controls.css +99 -8
  48. package/DS1/1-root/document.css +9 -1
  49. package/DS1/1-root/empty.css +46 -5
  50. package/DS1/1-root/figures.css +50 -3
  51. package/DS1/1-root/fonts.css +1 -1
  52. package/DS1/1-root/footer.css +147 -16
  53. package/DS1/1-root/foundation.ts +60 -0
  54. package/DS1/1-root/guide.css +35 -0
  55. package/DS1/1-root/header.css +30 -9
  56. package/DS1/1-root/library-tokens.ts +1 -2
  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 +14 -7
  60. package/DS1/1-root/palette.ts +3 -3
  61. package/DS1/1-root/progress.css +9 -1
  62. package/DS1/1-root/row.css +68 -2
  63. package/DS1/1-root/table.css +47 -4
  64. package/DS1/1-root/text.css +26 -0
  65. package/DS1/2-core/button-split.ts +10 -5
  66. package/DS1/2-core/chart/chart.css +71 -2
  67. package/DS1/2-core/chart/grid-chart.ts +2 -1
  68. package/DS1/2-core/ds-activity.ts +32 -0
  69. package/DS1/2-core/ds-app-chrome.ts +1 -0
  70. package/DS1/2-core/ds-avatar.ts +35 -6
  71. package/DS1/2-core/ds-badge.ts +8 -1
  72. package/DS1/2-core/ds-button.ts +7 -1
  73. package/DS1/2-core/ds-chart.ts +184 -49
  74. package/DS1/2-core/ds-cycle.ts +27 -186
  75. package/DS1/2-core/ds-device-bezel.ts +1 -0
  76. package/DS1/2-core/ds-empty.ts +6 -4
  77. package/DS1/2-core/ds-input.ts +23 -3
  78. package/DS1/2-core/ds-message.ts +22 -0
  79. package/DS1/2-core/ds-number.ts +349 -0
  80. package/DS1/2-core/ds-progress.ts +3 -0
  81. package/DS1/2-core/ds-radio.ts +3 -0
  82. package/DS1/2-core/ds-stat.ts +3 -0
  83. package/DS1/2-core/ds-switch.ts +5 -1
  84. package/DS1/2-core/ds-tag.ts +9 -2
  85. package/DS1/2-core/ds-text.ts +7 -0
  86. package/DS1/2-core/ds-token.ts +3 -0
  87. package/DS1/2-core/ds-tooltip.ts +17 -2
  88. package/DS1/2-core/ds-window.ts +1 -0
  89. package/DS1/2-core/generated/ds-icon-map.ts +47 -5
  90. package/DS1/2-core/generated/icons-extra.ts +24 -3
  91. package/DS1/2-core/generated/icons-immediate.ts +3 -3
  92. package/DS1/2-core/number-expression.ts +64 -0
  93. package/DS1/2-core/styles/ds-activity.css +16 -0
  94. package/DS1/2-core/styles/ds-badge.css +4 -1
  95. package/DS1/2-core/styles/ds-button-host.css +45 -12
  96. package/DS1/2-core/styles/ds-button-split.css +8 -0
  97. package/DS1/2-core/styles/ds-button.css +92 -19
  98. package/DS1/2-core/styles/ds-card.css +6 -0
  99. package/DS1/2-core/styles/ds-checkbox.css +20 -8
  100. package/DS1/2-core/styles/ds-image.css +2 -1
  101. package/DS1/2-core/styles/ds-input.css +37 -4
  102. package/DS1/2-core/styles/ds-number.css +127 -0
  103. package/DS1/2-core/styles/ds-radio.css +4 -1
  104. package/DS1/2-core/styles/ds-switch.css +34 -4
  105. package/DS1/2-core/styles/ds-tag.css +32 -5
  106. package/DS1/2-core/styles/ds-text.css +13 -4
  107. package/DS1/2-core/styles/ds-token.css +4 -1
  108. package/DS1/2-core/styles/ds-tooltip.css +13 -7
  109. package/DS1/3-unit/calendar-base.ts +5 -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 +45 -10
  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-tabs.ts +40 -2
  122. package/DS1/3-unit/styles/ds-calendar.css +356 -42
  123. package/DS1/3-unit/styles/ds-context.css +38 -0
  124. package/DS1/3-unit/styles/ds-list.css +26 -1
  125. package/DS1/3-unit/styles/ds-matrix.css +4 -1
  126. package/DS1/3-unit/styles/ds-row.css +39 -0
  127. package/DS1/3-unit/styles/ds-select.css +22 -12
  128. package/DS1/3-unit/styles/ds-sidebar.css +16 -2
  129. package/DS1/3-unit/styles/ds-table-of-contents.css +40 -0
  130. package/DS1/3-unit/styles/ds-tabs.css +95 -0
  131. package/DS1/4-page/ds-document.ts +3 -0
  132. package/DS1/4-page/ds-footer.ts +93 -18
  133. package/DS1/4-page/ds-header.ts +5 -1
  134. package/DS1/4-page/ds-overlay.ts +8 -3
  135. package/DS1/4-page/ds-page.ts +22 -1
  136. package/DS1/4-page/email.ts +7 -4
  137. package/DS1/4-page/styles/ds-container.css +0 -1
  138. package/DS1/4-page/styles/ds-overlay.css +7 -0
  139. package/DS1/4-page/styles/ds-page.css +10 -0
  140. package/DS1/5-visual-kit/app-chrome.ts +129 -0
  141. package/DS1/5-visual-kit/bezels.ts +394 -0
  142. package/DS1/5-visual-kit/browser-icons.LICENSE +53 -0
  143. package/DS1/5-visual-kit/browser-icons.ts +47 -0
  144. package/DS1/5-visual-kit/browser-styles.ts +53 -0
  145. package/DS1/5-visual-kit/device-bezel.ts +55 -0
  146. package/DS1/5-visual-kit/instagram-frame.ts +15 -0
  147. package/DS1/5-visual-kit/instagram.ts +41 -0
  148. package/DS1/5-visual-kit/mobile-chrome.ts +25 -0
  149. package/DS1/5-visual-kit/native-icon-paths.ts +145 -0
  150. package/DS1/5-visual-kit/window.ts +22 -0
  151. package/DS1/components.ts +1 -0
  152. package/DS1/index.ts +14 -1
  153. package/DS1/react/choice.ts +4 -2
  154. package/DS1/react/context.ts +11 -6
  155. package/DS1/react/empty.ts +2 -2
  156. package/DS1/react/footer.ts +5 -5
  157. package/DS1/react/header.ts +1 -1
  158. package/DS1/react/message.ts +4 -2
  159. package/DS1/react/number.ts +53 -0
  160. package/DS1/react/sidebar.ts +4 -2
  161. package/DS1/react/table-of-contents.ts +28 -0
  162. package/DS1/x-flag/LICENSE.md +26 -0
  163. package/DS1/x-flag/ac.svg +1 -0
  164. package/DS1/x-flag/ad.svg +1 -0
  165. package/DS1/x-flag/ae.svg +1 -0
  166. package/DS1/x-flag/af.svg +1 -0
  167. package/DS1/x-flag/ag.svg +1 -0
  168. package/DS1/x-flag/ai.svg +1 -0
  169. package/DS1/x-flag/al.svg +1 -0
  170. package/DS1/x-flag/am.svg +1 -0
  171. package/DS1/x-flag/ao.svg +1 -0
  172. package/DS1/x-flag/aq.svg +1 -0
  173. package/DS1/x-flag/ar.svg +1 -0
  174. package/DS1/x-flag/as.svg +1 -0
  175. package/DS1/x-flag/at.svg +1 -0
  176. package/DS1/x-flag/au.svg +1 -0
  177. package/DS1/x-flag/aw.svg +1 -0
  178. package/DS1/x-flag/ax.svg +1 -0
  179. package/DS1/x-flag/az.svg +1 -0
  180. package/DS1/x-flag/ba.svg +1 -0
  181. package/DS1/x-flag/bb.svg +1 -0
  182. package/DS1/x-flag/bd.svg +1 -0
  183. package/DS1/x-flag/be.svg +1 -0
  184. package/DS1/x-flag/bf.svg +1 -0
  185. package/DS1/x-flag/bg.svg +1 -0
  186. package/DS1/x-flag/bh.svg +1 -0
  187. package/DS1/x-flag/bi.svg +1 -0
  188. package/DS1/x-flag/bj.svg +1 -0
  189. package/DS1/x-flag/bl.svg +1 -0
  190. package/DS1/x-flag/bm.svg +1 -0
  191. package/DS1/x-flag/bn.svg +1 -0
  192. package/DS1/x-flag/bo.svg +1 -0
  193. package/DS1/x-flag/bq-bo.svg +1 -0
  194. package/DS1/x-flag/bq-sa.svg +1 -0
  195. package/DS1/x-flag/bq-se.svg +1 -0
  196. package/DS1/x-flag/bq.svg +1 -0
  197. package/DS1/x-flag/br.svg +1 -0
  198. package/DS1/x-flag/bs.svg +1 -0
  199. package/DS1/x-flag/bt.svg +1 -0
  200. package/DS1/x-flag/bv.svg +1 -0
  201. package/DS1/x-flag/bw.svg +1 -0
  202. package/DS1/x-flag/by.svg +1 -0
  203. package/DS1/x-flag/bz.svg +1 -0
  204. package/DS1/x-flag/ca.svg +1 -0
  205. package/DS1/x-flag/cc.svg +1 -0
  206. package/DS1/x-flag/cd.svg +1 -0
  207. package/DS1/x-flag/cf.svg +1 -0
  208. package/DS1/x-flag/cg.svg +1 -0
  209. package/DS1/x-flag/ch.svg +1 -0
  210. package/DS1/x-flag/ci.svg +1 -0
  211. package/DS1/x-flag/ck.svg +1 -0
  212. package/DS1/x-flag/cl.svg +1 -0
  213. package/DS1/x-flag/cm.svg +1 -0
  214. package/DS1/x-flag/cn.svg +1 -0
  215. package/DS1/x-flag/co.svg +1 -0
  216. package/DS1/x-flag/cr.svg +1 -0
  217. package/DS1/x-flag/cu.svg +1 -0
  218. package/DS1/x-flag/cv.svg +1 -0
  219. package/DS1/x-flag/cw.svg +1 -0
  220. package/DS1/x-flag/cx.svg +1 -0
  221. package/DS1/x-flag/cy.svg +1 -0
  222. package/DS1/x-flag/cz.svg +1 -0
  223. package/DS1/x-flag/de.svg +1 -0
  224. package/DS1/x-flag/dj.svg +1 -0
  225. package/DS1/x-flag/dk.svg +1 -0
  226. package/DS1/x-flag/dm.svg +1 -0
  227. package/DS1/x-flag/do.svg +1 -0
  228. package/DS1/x-flag/dz.svg +1 -0
  229. package/DS1/x-flag/ec.svg +1 -0
  230. package/DS1/x-flag/ee.svg +1 -0
  231. package/DS1/x-flag/eg.svg +1 -0
  232. package/DS1/x-flag/eh.svg +1 -0
  233. package/DS1/x-flag/er.svg +1 -0
  234. package/DS1/x-flag/es-ct.svg +1 -0
  235. package/DS1/x-flag/es.svg +1 -0
  236. package/DS1/x-flag/et.svg +1 -0
  237. package/DS1/x-flag/eu.svg +1 -0
  238. package/DS1/x-flag/fi.svg +1 -0
  239. package/DS1/x-flag/fj.svg +1 -0
  240. package/DS1/x-flag/fk.svg +1 -0
  241. package/DS1/x-flag/fm.svg +1 -0
  242. package/DS1/x-flag/fo.svg +1 -0
  243. package/DS1/x-flag/fr.svg +1 -0
  244. package/DS1/x-flag/ga.svg +1 -0
  245. package/DS1/x-flag/gb-eng.svg +1 -0
  246. package/DS1/x-flag/gb-nir.svg +1 -0
  247. package/DS1/x-flag/gb-sct.svg +1 -0
  248. package/DS1/x-flag/gb-wls.svg +1 -0
  249. package/DS1/x-flag/gb.svg +1 -0
  250. package/DS1/x-flag/gd.svg +1 -0
  251. package/DS1/x-flag/ge.svg +1 -0
  252. package/DS1/x-flag/gf.svg +1 -0
  253. package/DS1/x-flag/gg.svg +1 -0
  254. package/DS1/x-flag/gh.svg +1 -0
  255. package/DS1/x-flag/gi.svg +1 -0
  256. package/DS1/x-flag/gl.svg +1 -0
  257. package/DS1/x-flag/gm.svg +1 -0
  258. package/DS1/x-flag/gn.svg +1 -0
  259. package/DS1/x-flag/gp.svg +1 -0
  260. package/DS1/x-flag/gq.svg +1 -0
  261. package/DS1/x-flag/gr.svg +1 -0
  262. package/DS1/x-flag/gs.svg +1 -0
  263. package/DS1/x-flag/gt.svg +1 -0
  264. package/DS1/x-flag/gu.svg +1 -0
  265. package/DS1/x-flag/gw.svg +1 -0
  266. package/DS1/x-flag/gy.svg +1 -0
  267. package/DS1/x-flag/hk.svg +1 -0
  268. package/DS1/x-flag/hm.svg +1 -0
  269. package/DS1/x-flag/hn.svg +1 -0
  270. package/DS1/x-flag/hr.svg +1 -0
  271. package/DS1/x-flag/ht.svg +1 -0
  272. package/DS1/x-flag/hu.svg +1 -0
  273. package/DS1/x-flag/ic.svg +1 -0
  274. package/DS1/x-flag/id.svg +1 -0
  275. package/DS1/x-flag/ie.svg +1 -0
  276. package/DS1/x-flag/il.svg +1 -0
  277. package/DS1/x-flag/im.svg +1 -0
  278. package/DS1/x-flag/in.svg +1 -0
  279. package/DS1/x-flag/io.svg +1 -0
  280. package/DS1/x-flag/iq.svg +1 -0
  281. package/DS1/x-flag/ir.svg +1 -0
  282. package/DS1/x-flag/is.svg +1 -0
  283. package/DS1/x-flag/it.svg +1 -0
  284. package/DS1/x-flag/je.svg +1 -0
  285. package/DS1/x-flag/jm.svg +1 -0
  286. package/DS1/x-flag/jo.svg +1 -0
  287. package/DS1/x-flag/jp.svg +1 -0
  288. package/DS1/x-flag/ke.svg +1 -0
  289. package/DS1/x-flag/kg.svg +1 -0
  290. package/DS1/x-flag/kh.svg +1 -0
  291. package/DS1/x-flag/ki.svg +1 -0
  292. package/DS1/x-flag/km.svg +1 -0
  293. package/DS1/x-flag/kn.svg +1 -0
  294. package/DS1/x-flag/kp.svg +1 -0
  295. package/DS1/x-flag/kr.svg +1 -0
  296. package/DS1/x-flag/kw.svg +1 -0
  297. package/DS1/x-flag/ky.svg +1 -0
  298. package/DS1/x-flag/kz.svg +1 -0
  299. package/DS1/x-flag/la.svg +1 -0
  300. package/DS1/x-flag/lb.svg +1 -0
  301. package/DS1/x-flag/lc.svg +1 -0
  302. package/DS1/x-flag/li.svg +1 -0
  303. package/DS1/x-flag/lk.svg +1 -0
  304. package/DS1/x-flag/lr.svg +1 -0
  305. package/DS1/x-flag/ls.svg +1 -0
  306. package/DS1/x-flag/lt.svg +1 -0
  307. package/DS1/x-flag/lu.svg +1 -0
  308. package/DS1/x-flag/lv.svg +1 -0
  309. package/DS1/x-flag/ly.svg +1 -0
  310. package/DS1/x-flag/ma.svg +1 -0
  311. package/DS1/x-flag/mc.svg +1 -0
  312. package/DS1/x-flag/md.svg +1 -0
  313. package/DS1/x-flag/me.svg +1 -0
  314. package/DS1/x-flag/mf.svg +1 -0
  315. package/DS1/x-flag/mg.svg +1 -0
  316. package/DS1/x-flag/mh.svg +1 -0
  317. package/DS1/x-flag/mk.svg +1 -0
  318. package/DS1/x-flag/ml.svg +1 -0
  319. package/DS1/x-flag/mm.svg +1 -0
  320. package/DS1/x-flag/mn.svg +1 -0
  321. package/DS1/x-flag/mo.svg +1 -0
  322. package/DS1/x-flag/mp.svg +1 -0
  323. package/DS1/x-flag/mq.svg +1 -0
  324. package/DS1/x-flag/mr.svg +1 -0
  325. package/DS1/x-flag/ms.svg +1 -0
  326. package/DS1/x-flag/mt.svg +1 -0
  327. package/DS1/x-flag/mu.svg +1 -0
  328. package/DS1/x-flag/mv.svg +1 -0
  329. package/DS1/x-flag/mw.svg +1 -0
  330. package/DS1/x-flag/mx.svg +1 -0
  331. package/DS1/x-flag/my.svg +1 -0
  332. package/DS1/x-flag/mz.svg +1 -0
  333. package/DS1/x-flag/na.svg +1 -0
  334. package/DS1/x-flag/nc.svg +1 -0
  335. package/DS1/x-flag/ne.svg +1 -0
  336. package/DS1/x-flag/nf.svg +1 -0
  337. package/DS1/x-flag/ng.svg +1 -0
  338. package/DS1/x-flag/ni.svg +1 -0
  339. package/DS1/x-flag/nl.svg +1 -0
  340. package/DS1/x-flag/no.svg +1 -0
  341. package/DS1/x-flag/np.svg +1 -0
  342. package/DS1/x-flag/nr.svg +1 -0
  343. package/DS1/x-flag/nu.svg +1 -0
  344. package/DS1/x-flag/nz.svg +1 -0
  345. package/DS1/x-flag/om.svg +1 -0
  346. package/DS1/x-flag/pa.svg +1 -0
  347. package/DS1/x-flag/pe.svg +1 -0
  348. package/DS1/x-flag/pf.svg +1 -0
  349. package/DS1/x-flag/pg.svg +1 -0
  350. package/DS1/x-flag/ph.svg +1 -0
  351. package/DS1/x-flag/pk.svg +1 -0
  352. package/DS1/x-flag/pl.svg +1 -0
  353. package/DS1/x-flag/pm.svg +1 -0
  354. package/DS1/x-flag/pn.svg +1 -0
  355. package/DS1/x-flag/pr.svg +1 -0
  356. package/DS1/x-flag/ps.svg +1 -0
  357. package/DS1/x-flag/pt.svg +1 -0
  358. package/DS1/x-flag/pw.svg +1 -0
  359. package/DS1/x-flag/py.svg +1 -0
  360. package/DS1/x-flag/qa.svg +1 -0
  361. package/DS1/x-flag/re.svg +1 -0
  362. package/DS1/x-flag/ro.svg +1 -0
  363. package/DS1/x-flag/rs.svg +1 -0
  364. package/DS1/x-flag/ru.svg +1 -0
  365. package/DS1/x-flag/rw.svg +1 -0
  366. package/DS1/x-flag/sa.svg +1 -0
  367. package/DS1/x-flag/sb.svg +1 -0
  368. package/DS1/x-flag/sc.svg +1 -0
  369. package/DS1/x-flag/sd.svg +1 -0
  370. package/DS1/x-flag/se.svg +1 -0
  371. package/DS1/x-flag/sg.svg +1 -0
  372. package/DS1/x-flag/sh.svg +1 -0
  373. package/DS1/x-flag/si.svg +1 -0
  374. package/DS1/x-flag/sj.svg +1 -0
  375. package/DS1/x-flag/sk.svg +1 -0
  376. package/DS1/x-flag/sl.svg +1 -0
  377. package/DS1/x-flag/sm.svg +1 -0
  378. package/DS1/x-flag/sn.svg +1 -0
  379. package/DS1/x-flag/so.svg +1 -0
  380. package/DS1/x-flag/sr.svg +1 -0
  381. package/DS1/x-flag/ss.svg +1 -0
  382. package/DS1/x-flag/st.svg +1 -0
  383. package/DS1/x-flag/sv.svg +1 -0
  384. package/DS1/x-flag/sx.svg +1 -0
  385. package/DS1/x-flag/sy.svg +1 -0
  386. package/DS1/x-flag/sz.svg +1 -0
  387. package/DS1/x-flag/ta.svg +1 -0
  388. package/DS1/x-flag/tc.svg +1 -0
  389. package/DS1/x-flag/td.svg +1 -0
  390. package/DS1/x-flag/tf.svg +1 -0
  391. package/DS1/x-flag/tg.svg +1 -0
  392. package/DS1/x-flag/th.svg +1 -0
  393. package/DS1/x-flag/tj.svg +1 -0
  394. package/DS1/x-flag/tk.svg +1 -0
  395. package/DS1/x-flag/tl.svg +1 -0
  396. package/DS1/x-flag/tm.svg +1 -0
  397. package/DS1/x-flag/tn.svg +1 -0
  398. package/DS1/x-flag/to.svg +1 -0
  399. package/DS1/x-flag/tr.svg +1 -0
  400. package/DS1/x-flag/tt.svg +1 -0
  401. package/DS1/x-flag/tv.svg +1 -0
  402. package/DS1/x-flag/tw.svg +1 -0
  403. package/DS1/x-flag/tz.svg +1 -0
  404. package/DS1/x-flag/ua.svg +1 -0
  405. package/DS1/x-flag/ug.svg +1 -0
  406. package/DS1/x-flag/um.svg +1 -0
  407. package/DS1/x-flag/us.svg +1 -0
  408. package/DS1/x-flag/uy.svg +1 -0
  409. package/DS1/x-flag/uz.svg +1 -0
  410. package/DS1/x-flag/va.svg +1 -0
  411. package/DS1/x-flag/vc.svg +1 -0
  412. package/DS1/x-flag/ve.svg +1 -0
  413. package/DS1/x-flag/vg.svg +1 -0
  414. package/DS1/x-flag/vi.svg +1 -0
  415. package/DS1/x-flag/vn.svg +1 -0
  416. package/DS1/x-flag/vu.svg +1 -0
  417. package/DS1/x-flag/wf.svg +1 -0
  418. package/DS1/x-flag/ws.svg +1 -0
  419. package/DS1/x-flag/xk.svg +1 -0
  420. package/DS1/x-flag/ye.svg +1 -0
  421. package/DS1/x-flag/yt.svg +1 -0
  422. package/DS1/x-flag/za.svg +1 -0
  423. package/DS1/x-flag/zm.svg +1 -0
  424. package/DS1/x-flag/zw.svg +1 -0
  425. package/DS1/x-icon/android.svg +9 -0
  426. package/DS1/x-icon/arrange-check.svg +1 -1
  427. package/DS1/x-icon/arrange-page.svg +1 -1
  428. package/DS1/x-icon/chrome.svg +7 -0
  429. package/DS1/x-icon/edge-brand.svg +6 -0
  430. package/DS1/x-icon/firefox.svg +4 -0
  431. package/DS1/x-icon/health.svg +3 -0
  432. package/DS1/x-icon/left.svg +2 -3
  433. package/DS1/x-icon/linux.svg +1 -0
  434. package/DS1/x-icon/material.svg +1 -0
  435. package/DS1/x-icon/milestone-planned.svg +3 -0
  436. package/DS1/x-icon/milestone.svg +3 -0
  437. package/DS1/x-icon/more.svg +1 -5
  438. package/DS1/x-icon/network.svg +3 -0
  439. package/DS1/x-icon/opera.svg +4 -0
  440. package/DS1/x-icon/prediction.svg +3 -0
  441. package/DS1/x-icon/priority-high.svg +3 -0
  442. package/DS1/x-icon/priority-low.svg +3 -0
  443. package/DS1/x-icon/priority-medium.svg +3 -0
  444. package/DS1/x-icon/project.svg +3 -0
  445. package/DS1/x-icon/redo.svg +2 -2
  446. package/DS1/x-icon/repeat-small.svg +3 -0
  447. package/DS1/x-icon/safari.svg +4 -0
  448. package/DS1/x-icon/scaling.svg +3 -0
  449. package/DS1/x-icon/tabs.svg +4 -0
  450. package/DS1/x-icon/windows.svg +5 -0
  451. package/README.md +10 -6
  452. package/dist/0-face/button-label.d.ts +5 -0
  453. package/dist/0-face/button-label.d.ts.map +1 -0
  454. package/dist/0-face/button-label.js +31 -0
  455. package/dist/0-face/calendar.d.ts +1 -1
  456. package/dist/0-face/calendar.d.ts.map +1 -1
  457. package/dist/0-face/calendar.js +6 -3
  458. package/dist/0-face/carousel.d.ts +9 -0
  459. package/dist/0-face/carousel.d.ts.map +1 -1
  460. package/dist/0-face/carousel.js +80 -0
  461. package/dist/0-face/constraint-panel.d.ts +43 -0
  462. package/dist/0-face/constraint-panel.d.ts.map +1 -0
  463. package/dist/0-face/constraint-panel.js +429 -0
  464. package/dist/0-face/constraint-site.d.ts +72 -0
  465. package/dist/0-face/constraint-site.d.ts.map +1 -0
  466. package/dist/0-face/constraint-site.js +185 -0
  467. package/dist/0-face/constraints.d.ts +47 -0
  468. package/dist/0-face/constraints.d.ts.map +1 -0
  469. package/dist/0-face/constraints.js +247 -0
  470. package/dist/0-face/copy-text.js +1 -1
  471. package/dist/0-face/cut-fade.d.ts +112 -0
  472. package/dist/0-face/cut-fade.d.ts.map +1 -0
  473. package/dist/0-face/cut-fade.js +274 -0
  474. package/dist/0-face/define.d.ts.map +1 -1
  475. package/dist/0-face/define.js +24 -3
  476. package/dist/0-face/face-correction.d.ts +51 -0
  477. package/dist/0-face/face-correction.d.ts.map +1 -0
  478. package/dist/0-face/face-correction.js +80 -0
  479. package/dist/0-face/failures.d.ts +16 -0
  480. package/dist/0-face/failures.d.ts.map +1 -0
  481. package/dist/0-face/failures.js +21 -0
  482. package/dist/0-face/feedback-overlays.d.ts.map +1 -1
  483. package/dist/0-face/feedback-overlays.js +5 -3
  484. package/dist/0-face/feedback.d.ts +2 -0
  485. package/dist/0-face/feedback.d.ts.map +1 -1
  486. package/dist/0-face/feedback.js +1 -0
  487. package/dist/0-face/focus.d.ts +71 -0
  488. package/dist/0-face/focus.d.ts.map +1 -0
  489. package/dist/0-face/focus.js +196 -0
  490. package/dist/0-face/grid.d.ts +11 -1
  491. package/dist/0-face/grid.d.ts.map +1 -1
  492. package/dist/0-face/grid.js +90 -4
  493. package/dist/0-face/i18n.d.ts.map +1 -1
  494. package/dist/0-face/i18n.js +38 -16
  495. package/dist/0-face/layout-inspector.d.ts +5 -1
  496. package/dist/0-face/layout-inspector.d.ts.map +1 -1
  497. package/dist/0-face/layout-inspector.js +130 -104
  498. package/dist/0-face/preference-options.d.ts +4 -0
  499. package/dist/0-face/preference-options.d.ts.map +1 -1
  500. package/dist/0-face/scaling.d.ts +8 -1
  501. package/dist/0-face/scaling.d.ts.map +1 -1
  502. package/dist/0-face/scaling.js +19 -2
  503. package/dist/0-face/shape.d.ts +35 -0
  504. package/dist/0-face/shape.d.ts.map +1 -0
  505. package/dist/0-face/shape.js +23 -0
  506. package/dist/0-face/text-contrast.d.ts +22 -0
  507. package/dist/0-face/text-contrast.d.ts.map +1 -0
  508. package/dist/0-face/text-contrast.js +178 -0
  509. package/dist/0-face/theme-bootstrap.js +56 -0
  510. package/dist/0-face/toast-queue.d.ts +4 -0
  511. package/dist/0-face/toast-queue.d.ts.map +1 -1
  512. package/dist/0-face/toast-queue.js +4 -1
  513. package/dist/0-face/translations/da.json +10 -1
  514. package/dist/0-face/translations/de.json +10 -1
  515. package/dist/0-face/translations/en.json +10 -1
  516. package/dist/0-face/translations/es.json +10 -1
  517. package/dist/0-face/translations/fi.json +10 -1
  518. package/dist/0-face/translations/fr.json +10 -1
  519. package/dist/0-face/translations/is.json +10 -1
  520. package/dist/0-face/translations/it.json +10 -1
  521. package/dist/0-face/translations/ja.json +10 -1
  522. package/dist/0-face/translations/ko.json +10 -1
  523. package/dist/0-face/translations/nb.json +10 -1
  524. package/dist/0-face/translations/pt-BR.json +10 -1
  525. package/dist/0-face/translations/pt.json +10 -1
  526. package/dist/0-face/translations/sv.json +10 -1
  527. package/dist/0-face/translations/zh.json +10 -1
  528. package/dist/0-face/word-wrap.d.ts +6 -0
  529. package/dist/0-face/word-wrap.d.ts.map +1 -0
  530. package/dist/0-face/word-wrap.js +119 -0
  531. package/dist/1-root/foundation.d.ts +12 -0
  532. package/dist/1-root/foundation.d.ts.map +1 -0
  533. package/dist/1-root/foundation.js +59 -0
  534. package/dist/1-root/library-tokens.d.ts.map +1 -1
  535. package/dist/1-root/library-tokens.js +1 -2
  536. package/dist/1-root/palette.d.ts +2 -2
  537. package/dist/1-root/palette.d.ts.map +1 -1
  538. package/dist/1-root/palette.js +3 -3
  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 +7 -0
  552. package/dist/2-core/ds-avatar.d.ts.map +1 -1
  553. package/dist/2-core/ds-avatar.js +41 -6
  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/ds-calendar.d.ts +197 -4
  622. package/dist/3-unit/ds-calendar.d.ts.map +1 -1
  623. package/dist/3-unit/ds-calendar.js +687 -45
  624. package/dist/3-unit/ds-carousel.d.ts +3 -0
  625. package/dist/3-unit/ds-carousel.d.ts.map +1 -1
  626. package/dist/3-unit/ds-carousel.js +13 -1
  627. package/dist/3-unit/ds-context.d.ts +18 -1
  628. package/dist/3-unit/ds-context.d.ts.map +1 -1
  629. package/dist/3-unit/ds-context.js +37 -1
  630. package/dist/3-unit/ds-form.d.ts +9 -0
  631. package/dist/3-unit/ds-form.d.ts.map +1 -1
  632. package/dist/3-unit/ds-form.js +50 -10
  633. package/dist/3-unit/ds-list.d.ts +20 -1
  634. package/dist/3-unit/ds-list.d.ts.map +1 -1
  635. package/dist/3-unit/ds-list.js +31 -3
  636. package/dist/3-unit/ds-matrix.d.ts +3 -0
  637. package/dist/3-unit/ds-matrix.d.ts.map +1 -1
  638. package/dist/3-unit/ds-matrix.js +3 -0
  639. package/dist/3-unit/ds-menu.d.ts.map +1 -1
  640. package/dist/3-unit/ds-menu.js +17 -1
  641. package/dist/3-unit/ds-row.d.ts +13 -0
  642. package/dist/3-unit/ds-row.d.ts.map +1 -1
  643. package/dist/3-unit/ds-row.js +15 -2
  644. package/dist/3-unit/ds-select.js +1 -1
  645. package/dist/3-unit/ds-sidebar.d.ts +17 -0
  646. package/dist/3-unit/ds-sidebar.d.ts.map +1 -1
  647. package/dist/3-unit/ds-sidebar.js +14 -3
  648. package/dist/3-unit/ds-table-of-contents.d.ts +68 -0
  649. package/dist/3-unit/ds-table-of-contents.d.ts.map +1 -0
  650. package/dist/3-unit/ds-table-of-contents.js +190 -0
  651. package/dist/3-unit/ds-tabs.d.ts +32 -1
  652. package/dist/3-unit/ds-tabs.d.ts.map +1 -1
  653. package/dist/3-unit/ds-tabs.js +39 -1
  654. package/dist/4-page/ds-document.d.ts +3 -0
  655. package/dist/4-page/ds-document.d.ts.map +1 -1
  656. package/dist/4-page/ds-document.js +3 -0
  657. package/dist/4-page/ds-footer.d.ts +47 -7
  658. package/dist/4-page/ds-footer.d.ts.map +1 -1
  659. package/dist/4-page/ds-footer.js +58 -14
  660. package/dist/4-page/ds-header.d.ts +6 -0
  661. package/dist/4-page/ds-header.d.ts.map +1 -1
  662. package/dist/4-page/ds-header.js +4 -1
  663. package/dist/4-page/ds-overlay.d.ts +2 -2
  664. package/dist/4-page/ds-overlay.d.ts.map +1 -1
  665. package/dist/4-page/ds-overlay.js +8 -3
  666. package/dist/4-page/ds-page.d.ts +12 -0
  667. package/dist/4-page/ds-page.d.ts.map +1 -1
  668. package/dist/4-page/ds-page.js +19 -1
  669. package/dist/4-page/email.d.ts +2 -0
  670. package/dist/4-page/email.d.ts.map +1 -1
  671. package/dist/4-page/email.js +5 -4
  672. package/dist/5-visual-kit/app-chrome.d.ts +98 -0
  673. package/dist/5-visual-kit/app-chrome.d.ts.map +1 -0
  674. package/dist/5-visual-kit/app-chrome.js +119 -0
  675. package/dist/5-visual-kit/bezels.d.ts +30 -0
  676. package/dist/5-visual-kit/bezels.d.ts.map +1 -0
  677. package/dist/5-visual-kit/bezels.js +388 -0
  678. package/dist/5-visual-kit/browser-icons.d.ts +5 -0
  679. package/dist/5-visual-kit/browser-icons.d.ts.map +1 -0
  680. package/dist/5-visual-kit/browser-icons.js +51 -0
  681. package/dist/5-visual-kit/browser-styles.d.ts +3 -0
  682. package/dist/5-visual-kit/browser-styles.d.ts.map +1 -0
  683. package/dist/5-visual-kit/browser-styles.js +52 -0
  684. package/dist/5-visual-kit/device-bezel.d.ts +84 -0
  685. package/dist/5-visual-kit/device-bezel.d.ts.map +1 -0
  686. package/dist/5-visual-kit/device-bezel.js +56 -0
  687. package/dist/5-visual-kit/instagram-frame.d.ts +8 -0
  688. package/dist/5-visual-kit/instagram-frame.d.ts.map +1 -0
  689. package/dist/5-visual-kit/instagram-frame.js +13 -0
  690. package/dist/5-visual-kit/instagram.d.ts +18 -0
  691. package/dist/5-visual-kit/instagram.d.ts.map +1 -0
  692. package/dist/5-visual-kit/instagram.js +39 -0
  693. package/dist/5-visual-kit/mobile-chrome.d.ts +4 -0
  694. package/dist/5-visual-kit/mobile-chrome.d.ts.map +1 -0
  695. package/dist/5-visual-kit/mobile-chrome.js +24 -0
  696. package/dist/5-visual-kit/native-icon-paths.d.ts +146 -0
  697. package/dist/5-visual-kit/native-icon-paths.d.ts.map +1 -0
  698. package/dist/5-visual-kit/native-icon-paths.js +145 -0
  699. package/dist/5-visual-kit/window.d.ts +51 -0
  700. package/dist/5-visual-kit/window.d.ts.map +1 -0
  701. package/dist/5-visual-kit/window.js +20 -0
  702. package/dist/browser-icons-BFbS1tIx.js +56 -0
  703. package/dist/browser-icons-BFbS1tIx.js.map +1 -0
  704. package/dist/browser-icons-CT8qU77Z.js +48 -0
  705. package/dist/browser-icons-CT8qU77Z.js.map +1 -0
  706. package/dist/components.d.ts +1 -0
  707. package/dist/components.d.ts.map +1 -1
  708. package/dist/components.js +1 -0
  709. package/dist/design-system-1.bundle.js +5505 -2068
  710. package/dist/design-system-1.bundle.js.map +1 -1
  711. package/dist/design-system-1.bundle.min.js +7026 -4628
  712. package/dist/design-system-1.bundle.min.js.map +1 -1
  713. package/dist/design-system-1.css +1 -1
  714. package/dist/feedback.js +197 -167
  715. package/dist/feedback.js.map +1 -1
  716. package/dist/{icons-extra-CRxxWFjX.js → icons-extra-BMPvmQPI.js} +25 -4
  717. package/dist/icons-extra-BMPvmQPI.js.map +1 -0
  718. package/dist/{icons-extra-H5pqCM_R.js → icons-extra-BfYOw-cR.js} +83 -5
  719. package/dist/icons-extra-BfYOw-cR.js.map +1 -0
  720. package/dist/index.d.ts +12 -1
  721. package/dist/index.d.ts.map +1 -1
  722. package/dist/index.js +11 -1
  723. package/dist/instagram-CKofs55A.js +50 -0
  724. package/dist/instagram-CKofs55A.js.map +1 -0
  725. package/dist/instagram-CcYf5oiM.js +48 -0
  726. package/dist/instagram-CcYf5oiM.js.map +1 -0
  727. package/dist/lit-Ce_uWYM4.js +612 -0
  728. package/dist/lit-Ce_uWYM4.js.map +1 -0
  729. package/dist/lit-DGUVm1Ce.js +557 -0
  730. package/dist/lit-DGUVm1Ce.js.map +1 -0
  731. package/dist/native-icon-paths-CB9evXBM.js +93 -0
  732. package/dist/native-icon-paths-CB9evXBM.js.map +1 -0
  733. package/dist/native-icon-paths-zay-3g_n.js +150 -0
  734. package/dist/native-icon-paths-zay-3g_n.js.map +1 -0
  735. package/dist/react/avatar.d.ts +1 -1
  736. package/dist/react/choice.d.ts +4 -0
  737. package/dist/react/choice.d.ts.map +1 -1
  738. package/dist/react/choice.js +2 -2
  739. package/dist/react/context.d.ts +19 -4
  740. package/dist/react/context.d.ts.map +1 -1
  741. package/dist/react/context.js +4 -4
  742. package/dist/react/empty.d.ts +2 -2
  743. package/dist/react/empty.d.ts.map +1 -1
  744. package/dist/react/empty.js +1 -1
  745. package/dist/react/footer.d.ts +5 -5
  746. package/dist/react/footer.d.ts.map +1 -1
  747. package/dist/react/footer.js +2 -2
  748. package/dist/react/header.d.ts +2 -2
  749. package/dist/react/header.d.ts.map +1 -1
  750. package/dist/react/message.d.ts +4 -0
  751. package/dist/react/message.d.ts.map +1 -1
  752. package/dist/react/message.js +2 -2
  753. package/dist/react/number.d.ts +53 -0
  754. package/dist/react/number.d.ts.map +1 -0
  755. package/dist/react/number.js +25 -0
  756. package/dist/react/page.d.ts +1 -1
  757. package/dist/react/sidebar.d.ts +4 -0
  758. package/dist/react/sidebar.d.ts.map +1 -1
  759. package/dist/react/sidebar.js +2 -2
  760. package/dist/react/table-of-contents.d.ts +19 -0
  761. package/dist/react/table-of-contents.d.ts.map +1 -0
  762. package/dist/react/table-of-contents.js +28 -0
  763. package/dist/{shared-words-CdMDVtXx.js → shared-words-C5cjxMjZ.js} +151 -16
  764. package/dist/shared-words-C5cjxMjZ.js.map +1 -0
  765. package/dist/{shared-words-BtRee8xR.js → shared-words-Cdm7xd-_.js} +163 -28
  766. package/dist/shared-words-Cdm7xd-_.js.map +1 -0
  767. package/package.json +24 -13
  768. package/DS1/1-root/one.semantic.css +0 -735
  769. package/DS1/3-unit/ds-calendar-large.ts +0 -353
  770. package/DS1/3-unit/styles/ds-calendar-large.css +0 -178
  771. package/dist/3-unit/ds-calendar-large.d.ts +0 -142
  772. package/dist/3-unit/ds-calendar-large.d.ts.map +0 -1
  773. package/dist/3-unit/ds-calendar-large.js +0 -308
  774. package/dist/icons-extra-CRxxWFjX.js.map +0 -1
  775. package/dist/icons-extra-H5pqCM_R.js.map +0 -1
  776. package/dist/shared-words-BtRee8xR.js.map +0 -1
  777. package/dist/shared-words-CdMDVtXx.js.map +0 -1
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Image focus: where a photo's subject is, so a picture cut to its box
3
+ * (`object-fit: cover`) keeps it in view instead of its middle. A person's
4
+ * face first, then whatever in the picture holds the most detail. Plain
5
+ * TypeScript with no imports, for the browser and for a build script alike.
6
+ *
7
+ * The focus is a point of the picture, across and down from 0 to 1, and it is
8
+ * written as the picture's `object-position` (`objectPosition()`), so a
9
+ * cover crop of any shape keeps that point in view. Work it out once, where
10
+ * the page is built, and write it into the markup, so the first paint is
11
+ * already cut right. On a Mac, `focus-vision.swift` finds the faces and the
12
+ * salient part with Apple's Vision framework, and `focusFromRegions()` turns
13
+ * them into the focus; elsewhere, or where it finds nothing, `focusOf()`
14
+ * reads the pixels:
15
+ *
16
+ * ```ts
17
+ * // swift 0-face/focus-vision.swift *.jpg > regions.json
18
+ * import { focusFromRegions, focusOf, objectPosition } from "./0-face/focus.ts";
19
+ * const focus = focusFromRegions(regions[name]) ?? focusOf(data, info.width, info.height, info.channels);
20
+ * // <img src="…" style="object-position: 50% 18%">
21
+ * ```
22
+ *
23
+ * A page with no build step marks a picture `data-ds-focus="auto"` and calls
24
+ * `startFocus()`: once the picture has loaded, its focus is found and kept in
25
+ * the browser, so it is right from the first paint on the next visit. A
26
+ * picture whose focus a person chose says so, `data-ds-focus="40% 20%"`, and
27
+ * is never measured. A picture from another host without CORS cannot be read
28
+ * and keeps its middle.
29
+ */
30
+ export const CENTRE = { x: 0.5, y: 0.5 };
31
+ /** The width a picture is measured at; enough to find a face, and cheap. */
32
+ export const FOCUS_SAMPLE = 64;
33
+ /** Whether a pixel's colour is skin, in YCbCr, for any skin tone. */
34
+ function isSkin(r, g, b) {
35
+ const y = 0.299 * r + 0.587 * g + 0.114 * b;
36
+ const cb = 128 - 0.168736 * r - 0.331264 * g + 0.5 * b;
37
+ const cr = 128 + 0.5 * r - 0.418688 * g - 0.081312 * b;
38
+ return y > 40 && cb >= 77 && cb <= 127 && cr >= 137 && cr <= 173 && r > g && r > b;
39
+ }
40
+ const clamp = (value) => Math.min(1, Math.max(0, value));
41
+ /**
42
+ * The focus of a picture from its pixels (RGB or RGBA, row by row), measured
43
+ * small (about `FOCUS_SAMPLE` across). Skin that gathers into a face wins:
44
+ * the highest band of rows dense with skin, since a face stands above hands
45
+ * and arms. Without one, the centre of the picture's detail (where neighbouring
46
+ * pixels differ most), drawn a little towards the middle so a busy edge does
47
+ * not take the crop.
48
+ */
49
+ export function focusOf(pixels, width, height, channels = 4) {
50
+ if (width < 2 || height < 2)
51
+ return CENTRE;
52
+ const at = (x, y) => (y * width + x) * channels;
53
+ const luma = new Float32Array(width * height);
54
+ const skin = new Uint8Array(width * height);
55
+ let skinCount = 0;
56
+ for (let y = 0; y < height; y++) {
57
+ for (let x = 0; x < width; x++) {
58
+ const i = at(x, y);
59
+ const r = pixels[i], g = pixels[i + 1], b = pixels[i + 2];
60
+ luma[y * width + x] = 0.299 * r + 0.587 * g + 0.114 * b;
61
+ if (isSkin(r, g, b)) {
62
+ skin[y * width + x] = 1;
63
+ skinCount++;
64
+ }
65
+ }
66
+ }
67
+ // A face: skin over at least half a percent of the picture, in a band of rows.
68
+ if (skinCount >= width * height * 0.005) {
69
+ const band = Math.max(2, Math.round(height / 10));
70
+ const rows = new Float32Array(height);
71
+ for (let y = 0; y < height; y++)
72
+ for (let x = 0; x < width; x++)
73
+ rows[y] += skin[y * width + x];
74
+ let densest = 0;
75
+ const bands = [];
76
+ for (let y = 0; y + band <= height; y++) {
77
+ let sum = 0;
78
+ for (let k = 0; k < band; k++)
79
+ sum += rows[y + k];
80
+ bands.push(sum);
81
+ densest = Math.max(densest, sum);
82
+ }
83
+ const top = bands.findIndex(sum => sum >= densest * 0.45);
84
+ if (top >= 0) {
85
+ let sx = 0, sy = 0, n = 0;
86
+ for (let y = top; y < Math.min(height, top + band * 2); y++) {
87
+ for (let x = 0; x < width; x++)
88
+ if (skin[y * width + x]) {
89
+ sx += x;
90
+ sy += y;
91
+ n++;
92
+ }
93
+ }
94
+ if (n)
95
+ return { x: clamp((sx / n + 0.5) / width), y: clamp((sy / n + 0.5) / height) };
96
+ }
97
+ }
98
+ // Otherwise the picture's detail.
99
+ let sx = 0, sy = 0, total = 0;
100
+ for (let y = 1; y < height - 1; y++) {
101
+ for (let x = 1; x < width - 1; x++) {
102
+ const i = y * width + x;
103
+ const energy = Math.abs(luma[i + 1] - luma[i - 1]) + Math.abs(luma[i + width] - luma[i - width]);
104
+ sx += x * energy;
105
+ sy += y * energy;
106
+ total += energy;
107
+ }
108
+ }
109
+ if (!total)
110
+ return CENTRE;
111
+ const pull = 0.35;
112
+ return {
113
+ x: clamp(((sx / total + 0.5) / width) * (1 - pull) + 0.5 * pull),
114
+ y: clamp(((sy / total + 0.5) / height) * (1 - pull) + 0.5 * pull),
115
+ };
116
+ }
117
+ /**
118
+ * The focus from what a detector found (`focus-vision.swift`: Apple's face
119
+ * detection and attention-based saliency), or `undefined` when it found
120
+ * nothing. Faces win: the point between them across, and down a little above
121
+ * the top of the highest, so a crop keeps the heads whole with room above
122
+ * them. Otherwise the middle of everything salient.
123
+ */
124
+ export function focusFromRegions(found) {
125
+ const faces = (found.faces ?? []).filter(face => face.w * face.h > 0.0005);
126
+ if (faces.length) {
127
+ const biggest = Math.max(...faces.map(face => face.w * face.h));
128
+ const kept = faces.filter(face => face.w * face.h >= biggest * 0.25);
129
+ const left = Math.min(...kept.map(face => face.x));
130
+ const right = Math.max(...kept.map(face => face.x + face.w));
131
+ const top = Math.min(...kept.map(face => face.y));
132
+ const height = Math.max(...kept.map(face => face.h));
133
+ return { x: clamp((left + right) / 2), y: clamp(top - height * 0.35) };
134
+ }
135
+ const salient = found.salient ?? [];
136
+ if (!salient.length)
137
+ return undefined;
138
+ const left = Math.min(...salient.map(r => r.x));
139
+ const right = Math.max(...salient.map(r => r.x + r.w));
140
+ const top = Math.min(...salient.map(r => r.y));
141
+ const bottom = Math.max(...salient.map(r => r.y + r.h));
142
+ return { x: clamp((left + right) / 2), y: clamp((top + bottom) / 2) };
143
+ }
144
+ /** The focus as CSS `object-position`, in whole percents. */
145
+ export function objectPosition(focus) {
146
+ return `${Math.round(focus.x * 100)}% ${Math.round(focus.y * 100)}%`;
147
+ }
148
+ const KEY = "ds-focus:";
149
+ /** Finds and sets the focus of one picture marked `data-ds-focus="auto"`, once it has loaded. */
150
+ export function focusImage(image) {
151
+ const chosen = image.dataset.dsFocus;
152
+ if (chosen && chosen !== "auto") {
153
+ image.style.objectPosition = chosen;
154
+ return;
155
+ }
156
+ const source = image.currentSrc || image.src;
157
+ try {
158
+ const kept = localStorage.getItem(KEY + source);
159
+ if (kept) {
160
+ image.style.objectPosition = kept;
161
+ return;
162
+ }
163
+ }
164
+ catch { /* Storage can be blocked. */ }
165
+ const measure = () => {
166
+ if (!image.naturalWidth)
167
+ return;
168
+ const width = FOCUS_SAMPLE;
169
+ const height = Math.max(2, Math.round((image.naturalHeight / image.naturalWidth) * width));
170
+ const canvas = document.createElement("canvas");
171
+ canvas.width = width;
172
+ canvas.height = height;
173
+ const context = canvas.getContext("2d", { willReadFrequently: true });
174
+ if (!context)
175
+ return;
176
+ try {
177
+ context.drawImage(image, 0, 0, width, height);
178
+ const position = objectPosition(focusOf(context.getImageData(0, 0, width, height).data, width, height, 4));
179
+ image.style.objectPosition = position;
180
+ try {
181
+ localStorage.setItem(KEY + source, position);
182
+ }
183
+ catch { /* Storage can be blocked. */ }
184
+ }
185
+ catch { /* A picture from another host without CORS cannot be read; it keeps its middle. */ }
186
+ };
187
+ if (image.complete)
188
+ measure();
189
+ else
190
+ image.addEventListener("load", measure, { once: true });
191
+ }
192
+ /** Sets the focus of every picture marked `data-ds-focus` in `root`. */
193
+ export function startFocus(root = document) {
194
+ for (const image of root.querySelectorAll("img[data-ds-focus]"))
195
+ focusImage(image);
196
+ }
@@ -1,3 +1,13 @@
1
- /** Triple G toggles the grid; triple L inspects named layout areas. */
1
+ /** The presses of one key, each within 800ms of the last, that toggle an overlay. */
2
+ export declare const GRID_PRESSES = 5;
3
+ /**
4
+ * Five presses of G toggle the grid and five of L inspect the layout, on every
5
+ * page that loads this module and for everyone who reads it: never put them
6
+ * behind a user, an owner or a development check. Escape hides both. Presses
7
+ * typed into a field, with a modifier or held down never count, and any other
8
+ * key starts the count again.
9
+ * A nested scrolling viewport opts in with data-ds-grid-scroll: its grid follows
10
+ * its content while the page grid remains aligned outside the viewport.
11
+ */
2
12
  export declare function initGridShortcut(): void;
3
13
  //# sourceMappingURL=grid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../DS1/0-face/grid.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,CAoIvC"}
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../DS1/0-face/grid.ts"],"names":[],"mappings":"AAIA,qFAAqF;AACrF,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAiLvC"}
@@ -1,6 +1,17 @@
1
1
  import { createLayoutInspector } from './layout-inspector';
2
2
  import { initGridFit } from './grid-fit';
3
- /** Triple G toggles the grid; triple L inspects named layout areas. */
3
+ import { initConstraintShortcut } from './constraint-panel';
4
+ /** The presses of one key, each within 800ms of the last, that toggle an overlay. */
5
+ export const GRID_PRESSES = 5;
6
+ /**
7
+ * Five presses of G toggle the grid and five of L inspect the layout, on every
8
+ * page that loads this module and for everyone who reads it: never put them
9
+ * behind a user, an owner or a development check. Escape hides both. Presses
10
+ * typed into a field, with a modifier or held down never count, and any other
11
+ * key starts the count again.
12
+ * A nested scrolling viewport opts in with data-ds-grid-scroll: its grid follows
13
+ * its content while the page grid remains aligned outside the viewport.
14
+ */
4
15
  export function initGridShortcut() {
5
16
  if (typeof document === "undefined")
6
17
  return;
@@ -10,6 +21,8 @@ export function initGridShortcut() {
10
21
  root.setAttribute("data-ds-grid-ready", "");
11
22
  root.setAttribute("data-design-system", "1");
12
23
  initGridFit();
24
+ // Five presses of C, for the page's owner alone (constraint-panel.ts).
25
+ initConstraintShortcut();
13
26
  const overlay = document.createElement("div");
14
27
  overlay.setAttribute("data-ds-grid-overlay", "");
15
28
  overlay.setAttribute("aria-hidden", "true");
@@ -43,19 +56,92 @@ export function initGridShortcut() {
43
56
  </style><div class="grid"></div>`;
44
57
  document.body.appendChild(overlay);
45
58
  const layout = createLayoutInspector();
59
+ const pageGrid = shadow.querySelector('.grid');
60
+ const scopedGrids = new Map();
61
+ let tracking = false;
62
+ const resize = new ResizeObserver(() => { if (tracking)
63
+ updatePosition(); });
64
+ const regionsChanged = new MutationObserver(() => { if (tracking)
65
+ updatePosition(); });
46
66
  const updatePosition = () => {
47
67
  overlay.style.setProperty("--ds-grid-scroll-x", `${window.scrollX}px`);
48
68
  overlay.style.setProperty("--ds-grid-scroll-y", `${window.scrollY}px`);
69
+ const present = new Set();
70
+ const holes = [];
71
+ document.querySelectorAll('[data-ds-grid-scroll]').forEach(element => {
72
+ const rect = element.getBoundingClientRect();
73
+ let left = rect.left + element.clientLeft, top = rect.top + element.clientTop;
74
+ let right = left + element.clientWidth, bottom = top + element.clientHeight;
75
+ // The overlay must respect enclosing scroll viewports as the content does.
76
+ for (let parent = element.parentElement; parent; parent = parent.parentElement) {
77
+ const style = getComputedStyle(parent), box = parent.getBoundingClientRect();
78
+ if (/(auto|scroll|hidden|clip)/.test(style.overflowX)) {
79
+ left = Math.max(left, box.left + parent.clientLeft);
80
+ right = Math.min(right, box.left + parent.clientLeft + parent.clientWidth);
81
+ }
82
+ if (/(auto|scroll|hidden|clip)/.test(style.overflowY)) {
83
+ top = Math.max(top, box.top + parent.clientTop);
84
+ bottom = Math.min(bottom, box.top + parent.clientTop + parent.clientHeight);
85
+ }
86
+ }
87
+ left = Math.max(0, left);
88
+ top = Math.max(0, top);
89
+ right = Math.min(innerWidth, right);
90
+ bottom = Math.min(innerHeight, bottom);
91
+ if (right <= left || bottom <= top || !element.getClientRects().length)
92
+ return;
93
+ present.add(element);
94
+ let grid = scopedGrids.get(element);
95
+ if (!grid) {
96
+ grid = document.createElement('div');
97
+ grid.className = 'grid';
98
+ grid.setAttribute('data-ds-grid-region', '');
99
+ shadow.append(grid);
100
+ scopedGrids.set(element, grid);
101
+ resize.observe(element);
102
+ }
103
+ const style = getComputedStyle(element);
104
+ for (const property of ['--ds-grid-unit', '--unit', '--sf', '--ds-grid-color', '--ds-grid-origin-x', '--ds-grid-origin-y', '--ds-grid-line-offset']) {
105
+ const value = style.getPropertyValue(property);
106
+ if (value)
107
+ grid.style.setProperty(property, value);
108
+ else
109
+ grid.style.removeProperty(property);
110
+ }
111
+ Object.assign(grid.style, { inset: 'auto', left: `${left}px`, top: `${top}px`, width: `${right - left}px`, height: `${bottom - top}px` });
112
+ grid.style.setProperty('--ds-grid-scroll-x', `${window.scrollX + left + element.scrollLeft}px`);
113
+ grid.style.setProperty('--ds-grid-scroll-y', `${window.scrollY + top + element.scrollTop}px`);
114
+ // Opposite winding makes each viewport a hole in the page grid.
115
+ holes.push(`M${left},${top}V${bottom}H${right}V${top}Z`);
116
+ });
117
+ scopedGrids.forEach((grid, element) => { if (!present.has(element)) {
118
+ resize.unobserve(element);
119
+ grid.remove();
120
+ scopedGrids.delete(element);
121
+ } });
122
+ pageGrid.style.clipPath = holes.length ? `path("M0,0H${innerWidth}V${innerHeight}H0Z ${holes.join(' ')}")` : '';
49
123
  };
50
124
  const setVisible = (visible) => {
51
125
  overlay.hidden = !visible;
52
126
  root.toggleAttribute("data-ds-grid-visible", visible);
53
127
  if (visible) {
128
+ tracking = true;
54
129
  updatePosition();
55
- window.addEventListener("scroll", updatePosition, { passive: true });
130
+ document.addEventListener('scroll', updatePosition, { passive: true, capture: true });
131
+ window.addEventListener('scroll', updatePosition, { passive: true });
132
+ window.addEventListener('resize', updatePosition, { passive: true });
133
+ regionsChanged.observe(document.body, { childList: true, subtree: true });
56
134
  }
57
135
  else {
58
- window.removeEventListener("scroll", updatePosition);
136
+ tracking = false;
137
+ document.removeEventListener('scroll', updatePosition, true);
138
+ window.removeEventListener('scroll', updatePosition);
139
+ window.removeEventListener('resize', updatePosition);
140
+ regionsChanged.disconnect();
141
+ resize.disconnect();
142
+ scopedGrids.forEach(grid => grid.remove());
143
+ scopedGrids.clear();
144
+ pageGrid.style.clipPath = '';
59
145
  }
60
146
  window.dispatchEvent(new CustomEvent("design-system-grid-changed", { detail: { visible } }));
61
147
  };
@@ -126,7 +212,7 @@ export function initGridShortcut() {
126
212
  presses = key === lastKey && now - lastPress <= 800 ? presses + 1 : 1;
127
213
  lastKey = key;
128
214
  lastPress = now;
129
- if (presses === 3) {
215
+ if (presses === GRID_PRESSES) {
130
216
  reset();
131
217
  if (key === 'g')
132
218
  setVisible(overlay.hidden !== false);
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../DS1/0-face/i18n.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../DS1/0-face/i18n.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;IACpE;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAC9C;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAClC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,EAAc,CAAC;AAMlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B;CACF;AAyVD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BlE;AAiFD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,MAAM,CA6CR;AAqCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAqBjD;AA0CD,eAAO,MAAM,eAAe;;gBAEL,YAAY,YAAW,kBAAkB;CAc/D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAsCrD;AAmBD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AA8HD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEzE;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,iBAAiB,GACzB,MAAM,CAmBR;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,YAAoC,GAC7C,OAAO,CAkBT;AAGD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEvE;AAGD,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAE/D;AAGD,wBAAgB,yBAAyB,IAAI,YAAY,EAAE,CAW1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,gBAAgB,GAC7B,IAAI,CAAC;AACR,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAmCvE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAGtF"}
@@ -577,17 +577,47 @@ export function loadSharedWords() {
577
577
  }
578
578
  return sharedWordsLoad;
579
579
  }
580
+ /**
581
+ * The words a page loads as it starts (the shared words, the translations file), announced once
582
+ * between them: each announcement redraws every translated word on the page, so three arrivals in
583
+ * the first half second used to redraw it three times. A load that never ends holds the
584
+ * announcement back no longer than `STARTUP_WAIT`.
585
+ */
586
+ const startupLoads = [];
587
+ const STARTUP_WAIT = 1000;
588
+ let announcement = null;
589
+ let announced = false;
590
+ /** The window this module loaded into, which hears its announcements. */
591
+ const page = typeof window !== "undefined" ? window : undefined;
592
+ function announceTranslations() {
593
+ if (announcement)
594
+ return;
595
+ const wait = new Promise((resolve) => setTimeout(resolve, STARTUP_WAIT));
596
+ announcement = Promise.race([Promise.allSettled(startupLoads.splice(0)), wait]).then(() => {
597
+ announcement = null;
598
+ announced = true;
599
+ if (!eventful() || !page)
600
+ return;
601
+ page.dispatchEvent(new CustomEvent("translations-loaded"));
602
+ // Dispatch language-changed to update all components
603
+ dispatchLanguageChanged(currentLanguage.value);
604
+ });
605
+ }
580
606
  applyRouting();
581
607
  if (i18nOptions.sharedWords) {
582
- void loadSharedWords();
608
+ startupLoads.push(loadSharedWords());
583
609
  }
584
610
  // Auto-load translations when this module is imported (for CDN bundle).
585
611
  // Waits a task, so a product can configure the module first, even after a
586
612
  // dynamic import.
587
613
  if (typeof window !== "undefined" && typeof document !== "undefined") {
614
+ let started = () => { };
615
+ startupLoads.push(new Promise((resolve) => (started = resolve)));
588
616
  const start = () => {
589
617
  if (i18nOptions.autoLoad !== false)
590
- void loadExternalTranslations();
618
+ void loadExternalTranslations().finally(started);
619
+ else
620
+ started();
591
621
  };
592
622
  if (document.readyState === "loading") {
593
623
  document.addEventListener("DOMContentLoaded", start);
@@ -602,21 +632,13 @@ if (typeof window !== "undefined" && typeof document !== "undefined") {
602
632
  // below would otherwise throw after the code that imported this has finished.
603
633
  const eventful = () => typeof window !== "undefined" && typeof window.addEventListener === "function" && typeof window.dispatchEvent === "function";
604
634
  if (eventful()) {
605
- window.addEventListener("translations-ready", () => {
606
- // Dispatch that translations are loaded
607
- window.dispatchEvent(new CustomEvent("translations-loaded"));
608
- // Dispatch language-changed to update all components
609
- dispatchLanguageChanged(currentLanguage.value);
610
- });
611
- // Initialize translations on module load
612
- // Use setTimeout to give other parts of the app time to set up event listeners first
635
+ // New words: translations-loaded and language-changed, once for everything still arriving.
636
+ window.addEventListener("translations-ready", announceTranslations);
637
+ // A page whose words were all there at once still hears translations-loaded once, after its
638
+ // listeners have had a moment to attach; one already announced or on its way is enough.
613
639
  setTimeout(() => {
614
- if (!eventful()) {
615
- return;
616
- }
617
- window.dispatchEvent(new CustomEvent("translations-loaded"));
618
- // Also dispatch language-changed with the current language
619
- dispatchLanguageChanged(currentLanguage.value);
640
+ if (eventful() && !announced && window === page)
641
+ announceTranslations();
620
642
  }, 100);
621
643
  }
622
644
  // ============================================================================
@@ -1,4 +1,8 @@
1
- /** Inspect named page areas without changing their size, opacity, or interaction. */
1
+ /**
2
+ * Inspect a page's layout without changing its size, opacity, or interaction:
3
+ * named areas in dashed outlines with their name and size, text and fields in
4
+ * green boxes, and every component (a custom element) outlined with its tag name.
5
+ */
2
6
  export declare function createLayoutInspector(): {
3
7
  toggle: () => void;
4
8
  hide: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"layout-inspector.d.ts","sourceRoot":"","sources":["../../DS1/0-face/layout-inspector.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,wBAAgB,qBAAqB;;;EAsLpC"}
1
+ {"version":3,"file":"layout-inspector.d.ts","sourceRoot":"","sources":["../../DS1/0-face/layout-inspector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,qBAAqB;;;EA4MpC"}