@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
@@ -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":"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"}
@@ -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"}
@@ -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 function createLayoutInspector() {
3
7
  const root = document.documentElement;
4
8
  const overlay = document.createElement('div');
@@ -17,145 +21,167 @@ export function createLayoutInspector() {
17
21
  color-scheme: inherit !important;
18
22
  }
19
23
  :host([hidden]) { display: none !important; }
20
- .veil, .areas { position: absolute; inset: 0; overflow: hidden; }
21
- .veil { background: color-mix(in srgb, var(--page-background, Canvas) 78%, transparent); }
22
- .area {
24
+ .boxes { position: absolute; inset: 0; overflow: hidden; }
25
+ .box {
23
26
  position: absolute;
24
27
  box-sizing: border-box;
25
- display: grid;
26
- place-items: center;
27
- background: color-mix(in srgb, var(--pastel) 40%, transparent);
28
- border: 1px solid color-mix(in srgb, var(--pastel) 65%, #82718d);
28
+ border: 1px solid var(--tint);
29
29
  }
30
- .name {
31
- box-sizing: border-box;
32
- max-width: 100%;
33
- padding: 3px 8px;
34
- background: var(--page-background, Canvas);
35
- color: var(--base-slate, CanvasText);
36
- font: 400 14px/20px var(--font-regular, var(--typeface-regular, sans-serif));
37
- text-align: center;
38
- overflow-wrap: anywhere;
39
- }
40
- .area[data-container] {
41
- background: transparent;
42
- }
43
- .area[data-container] > .name {
30
+ .area { --tint: #efc9dc; border-style: dashed; }
31
+ .text { --tint: #bfe0cd; background: color-mix(in srgb, var(--tint) 18%, transparent); }
32
+ .field { --tint: #bfe0cd; background: color-mix(in srgb, var(--tint) 45%, transparent); }
33
+ .component { --tint: #d5c9ef; }
34
+ .tag {
44
35
  position: absolute;
45
- top: 0;
46
- left: 0;
47
- }
48
- .area[data-compact] .name {
49
- position: absolute;
50
- bottom: 100%;
51
- left: 50%;
52
- transform: translateX(-50%);
53
- width: max-content;
54
- max-width: none;
55
- padding: 2px 4px;
56
- font-size: 12px;
57
- line-height: 16px;
58
- white-space: nowrap;
59
- }
60
- .dimensions {
61
- display: block;
62
- font-size: 12px;
63
- line-height: 16px;
36
+ box-sizing: border-box;
37
+ display: flex;
38
+ gap: 6px;
39
+ padding: 0 4px;
40
+ background: var(--tint);
41
+ color: #2a2530;
42
+ font: 400 12px/16px var(--font-regular, var(--typeface-regular, sans-serif));
64
43
  font-variant-numeric: tabular-nums;
65
44
  white-space: nowrap;
66
45
  }
46
+ .area > .tag { top: -1px; right: -1px; }
47
+ .component > .tag { bottom: 100%; left: -1px; }
48
+ .component[data-inside] > .tag { bottom: auto; top: -1px; }
49
+ .measure { opacity: 0.7; }
67
50
  @media print { :host { display: none !important; } }
68
- </style><div class="veil"></div><div class="areas"></div>`;
51
+ </style><div class="boxes"></div>`;
69
52
  document.body.appendChild(overlay);
70
- const layer = shadow.querySelector('.areas');
71
- const colors = ['#efc9dc', '#d5c9ef', '#c2d9eb', '#bfe0cd', '#eee3b7', '#efcfb8'];
53
+ const layer = shadow.querySelector('.boxes');
54
+ // A page of thousands of words draws its first boxes and stops.
55
+ const limit = 2000;
56
+ const fields = new Set(['input', 'textarea', 'select', 'img', 'picture', 'svg', 'video', 'canvas', 'iframe']);
57
+ const skipped = new Set(['script', 'style', 'template', 'noscript', 'link', 'meta', 'slot']);
58
+ // Primitives drawn as what they show rather than named: words, an icon,
59
+ // and a gap with nothing to see.
60
+ const primitives = { 'ds-text': 'text', 'ds-icon': 'field', 'ds-gap': 'none' };
72
61
  let frame = 0;
73
62
  let visible = false;
74
63
  const observed = new Set();
75
64
  const observedRoots = new Set();
76
- const getAreas = () => {
77
- const named = [];
78
- const collect = (scope) => {
79
- named.push(...scope.querySelectorAll('[data-ds-area]'));
80
- scope.querySelectorAll('[data-ds-layout-root]').forEach((host) => {
81
- if (!host.shadowRoot)
82
- return;
83
- if (!observedRoots.has(host.shadowRoot)) {
84
- mutations.observe(host.shadowRoot, { subtree: true, childList: true, characterData: true });
85
- observedRoots.add(host.shadowRoot);
65
+ const collect = () => {
66
+ const areas = [];
67
+ const words = [];
68
+ const components = [];
69
+ const visit = (parent, inText) => {
70
+ for (const element of Array.from(parent.children)) {
71
+ const name = element.localName;
72
+ if (skipped.has(name) || element.hasAttribute('data-ds-layout-overlay') || element.hasAttribute('data-ds-grid-overlay'))
73
+ continue;
74
+ if (element.hasAttribute('data-ds-area'))
75
+ areas.push(element);
76
+ const primitive = primitives[name];
77
+ if (primitive === 'none')
78
+ continue;
79
+ const component = !primitive && name.includes('-');
80
+ if (component)
81
+ components.push(element);
82
+ if (fields.has(name) || primitive === 'field') {
83
+ if (!inText)
84
+ words.push([element, 'field']);
85
+ continue;
86
+ }
87
+ const text = !inText && !component && (primitive === 'text' || Array.from(element.childNodes).some((node) => node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== ''));
88
+ if (text)
89
+ words.push([element, 'text']);
90
+ // A design system component is drawn whole; an app's own component is
91
+ // opened, so what it holds is drawn too.
92
+ const content = element.shadowRoot;
93
+ if (content && !primitive && (!name.startsWith('ds-') || element.hasAttribute('data-ds-layout-root'))) {
94
+ if (!observedRoots.has(content)) {
95
+ mutations.observe(content, { subtree: true, childList: true, characterData: true });
96
+ observedRoots.add(content);
97
+ }
98
+ visit(content, inText || text);
86
99
  }
87
- collect(host.shadowRoot);
88
- });
100
+ visit(element, inText || text);
101
+ }
89
102
  };
90
- collect(document.querySelector('[data-ds-inspect-active]') ?? document);
91
- if (named.length)
92
- return named;
103
+ visit(document.querySelector('[data-ds-inspect-active]') ?? document.body, false);
93
104
  // Semantic fallback for pages that have not supplied their own area names.
94
- return Array.from(document.querySelectorAll('header, main, section, footer, one-footer'))
105
+ const named = areas.length ? areas : Array.from(document.querySelectorAll('header, main, section, footer, one-footer'))
95
106
  .filter((element) => !element.querySelector('section, header, footer, one-footer'));
107
+ return { areas: named, words, components };
108
+ };
109
+ const tag = (name, ...measures) => {
110
+ const label = document.createElement('span');
111
+ label.className = 'tag';
112
+ label.textContent = name;
113
+ for (const measure of measures) {
114
+ const part = document.createElement('span');
115
+ part.className = 'measure';
116
+ part.textContent = measure;
117
+ label.appendChild(part);
118
+ }
119
+ return label;
120
+ };
121
+ const box = (element, kind, rect) => {
122
+ const panel = document.createElement('div');
123
+ panel.className = `box ${kind}`;
124
+ panel.style.left = `${rect.left}px`;
125
+ panel.style.top = `${rect.top}px`;
126
+ panel.style.width = `${rect.width}px`;
127
+ panel.style.height = `${rect.height}px`;
128
+ if (kind === 'area') {
129
+ const areaName = element.dataset.dsArea || element.getAttribute('aria-label') ||
130
+ (element.localName === 'one-footer' ? 'footer' : element.localName);
131
+ // Reduce dimensions measured to a tenth of a CSS pixel; use a decimal
132
+ // for fluid shapes whose exact fraction would be too long to read.
133
+ const width = Math.max(1, Math.round(rect.width * 10));
134
+ const height = Math.max(1, Math.round(rect.height * 10));
135
+ let divisor = width;
136
+ let remainder = height;
137
+ while (remainder) {
138
+ [divisor, remainder] = [remainder, divisor % remainder];
139
+ }
140
+ const horizontal = width / divisor;
141
+ const vertical = height / divisor;
142
+ panel.appendChild(tag(areaName.replace(/[-_]/g, ' ').replace(/^./, (letter) => letter.toUpperCase()), `${Number(rect.width.toFixed(1))} × ${Number(rect.height.toFixed(1))}`, horizontal <= 100 && vertical <= 100 ? `${horizontal}:${vertical}` : `≈ ${Number((rect.width / rect.height).toFixed(2))}:1`));
143
+ }
144
+ else if (kind === 'component') {
145
+ // A name with no room above the component stands inside it.
146
+ panel.toggleAttribute('data-inside', rect.top < 16);
147
+ panel.appendChild(tag(element.localName));
148
+ }
149
+ return panel;
96
150
  };
97
151
  const render = () => {
98
152
  frame = 0;
99
153
  if (!visible)
100
154
  return;
101
- const areas = getAreas();
102
- const current = new Set(areas);
155
+ const { areas, words, components } = collect();
156
+ const watched = new Set([...areas, ...components]);
103
157
  for (const element of observed) {
104
- if (!current.has(element)) {
158
+ if (!watched.has(element)) {
105
159
  resize.unobserve(element);
106
160
  observed.delete(element);
107
161
  }
108
162
  }
109
- const fragments = document.createDocumentFragment();
110
- areas.forEach((element, index) => {
163
+ for (const element of watched) {
111
164
  if (!observed.has(element)) {
112
165
  resize.observe(element);
113
166
  observed.add(element);
114
167
  }
168
+ }
169
+ // Areas first, then words, then components, so component names lie on top.
170
+ const drawn = [];
171
+ const draw = (element, kind) => {
172
+ if (drawn.length >= limit)
173
+ return;
115
174
  const rect = element.getBoundingClientRect();
116
175
  if (!rect.width || !rect.height || rect.bottom <= 0 || rect.top >= innerHeight || rect.right <= 0 || rect.left >= innerWidth)
117
176
  return;
118
177
  if (getComputedStyle(element).visibility === 'hidden')
119
178
  return;
120
- const panel = document.createElement('div');
121
- panel.className = 'area';
122
- panel.toggleAttribute('data-container', !!element.shadowRoot?.querySelector('[data-ds-area]'));
123
- panel.toggleAttribute('data-compact', rect.width < 80 || rect.height < 24);
124
- panel.style.left = `${rect.left}px`;
125
- panel.style.top = `${rect.top}px`;
126
- panel.style.width = `${rect.width}px`;
127
- panel.style.height = `${rect.height}px`;
128
- panel.style.setProperty('--pastel', colors[index % colors.length] ?? null);
129
- const label = document.createElement('span');
130
- label.className = 'name';
131
- const areaName = element.dataset.dsArea || element.getAttribute('aria-label') ||
132
- (element.localName === 'one-footer' ? 'footer' : element.localName);
133
- label.textContent = areaName.replace(/[-_]/g, ' ').replace(/^./, (letter) => letter.toUpperCase());
134
- const dimensions = document.createElement('span');
135
- dimensions.className = 'dimensions';
136
- dimensions.textContent = `${Number(rect.width.toFixed(1))} × ${Number(rect.height.toFixed(1))} px`;
137
- label.appendChild(dimensions);
138
- const ratio = document.createElement('span');
139
- ratio.className = 'dimensions';
140
- // Reduce dimensions measured to a tenth of a CSS pixel; use a decimal
141
- // for fluid shapes whose exact fraction would be too long to read.
142
- const width = Math.max(1, Math.round(rect.width * 10));
143
- const height = Math.max(1, Math.round(rect.height * 10));
144
- let divisor = width;
145
- let remainder = height;
146
- while (remainder) {
147
- [divisor, remainder] = [remainder, divisor % remainder];
148
- }
149
- const horizontal = width / divisor;
150
- const vertical = height / divisor;
151
- ratio.textContent = horizontal <= 100 && vertical <= 100
152
- ? `${horizontal}:${vertical}`
153
- : `≈ ${Number((rect.width / rect.height).toFixed(2))}:1`;
154
- label.appendChild(ratio);
155
- panel.appendChild(label);
156
- fragments.appendChild(panel);
157
- });
158
- layer.replaceChildren(fragments);
179
+ drawn.push(box(element, kind, rect));
180
+ };
181
+ areas.forEach((element) => draw(element, 'area'));
182
+ words.forEach(([element, kind]) => draw(element, kind));
183
+ components.forEach((element) => draw(element, 'component'));
184
+ layer.replaceChildren(...drawn);
159
185
  };
160
186
  const schedule = () => { if (visible && !frame)
161
187
  frame = requestAnimationFrame(render); };
@@ -25,6 +25,10 @@ export interface PreferenceOptions {
25
25
  light: string;
26
26
  dark: string;
27
27
  } | false;
28
+ /** Where the shape is stored: `"ds-one:shape"` by default. */
29
+ shapeStorageKey?: string;
30
+ /** The shape for a visitor who has chosen none; without it the components keep their own corners. */
31
+ shapeDefault?: "square" | "rounded" | "circular";
28
32
  }
29
33
  declare global {
30
34
  interface Window {
@@ -1 +1 @@
1
- {"version":3,"file":"preference-options.d.ts","sourceRoot":"","sources":["../../DS1/0-face/preference-options.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;CACtD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QAAG,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;KAAE;CAC7D"}
1
+ {"version":3,"file":"preference-options.d.ts","sourceRoot":"","sources":["../../DS1/0-face/preference-options.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;IACrD,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qGAAqG;IACrG,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;CAClD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QAAG,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;KAAE;CAC7D"}
@@ -5,7 +5,8 @@
5
5
  * mobile browser, or a touch screen whose shorter side is at most 820px) is
6
6
  * drawn as if the screen were 280 units wide: the scale is the page's width
7
7
  * over 280, never under 0.75 or over 2, so a 375px phone draws everything a
8
- * third larger.
8
+ * third larger. The page's width is never taken as more than the screen's, so
9
+ * a page that a phone has widened and zoomed out never scales itself larger.
9
10
  *
10
11
  * `startScaling()` puts the scale on the page and keeps it there through
11
12
  * resizes and turns; `applyScaling()` does it once. Both set `--sf` and, on a
@@ -71,6 +72,12 @@ export declare function detectMobileDevice(): boolean;
71
72
  * the factor (the first surface's, or 1 when there is none).
72
73
  */
73
74
  export declare function applyScaling(options?: ScalingOptions): number;
75
+ /**
76
+ * The screen's own width as it is held, in CSS pixels: the widest a page on it
77
+ * is laid out at, or 0 when the browser does not say. iOS gives the screen's
78
+ * upright width whichever way it is turned, so the side is taken by the turn.
79
+ */
80
+ export declare function screenWidth(): number;
74
81
  /**
75
82
  * Puts the scale on the page now and again on every resize and turn; a
76
83
  * surface is followed as its own size changes. Returns a function that stops
@@ -1 +1 @@
1
- {"version":3,"file":"scaling.d.ts","sourceRoot":"","sources":["../../DS1/0-face/scaling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC5D;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;CACjC;AAMD,eAAO,MAAM,oBAAoB,EAAE,aAKlC,CAAC;AAOF,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,MAAM,CAGpE;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,aAAoC,EAAE,UAAU,SAAI,GAAG,MAAM,CAMlI;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C;AAsBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CAQjE;AAYD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,IAAI,CAkBrE"}
1
+ {"version":3,"file":"scaling.d.ts","sourceRoot":"","sources":["../../DS1/0-face/scaling.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC5D;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;CACjC;AAMD,eAAO,MAAM,oBAAoB,EAAE,aAKlC,CAAC;AAOF,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,MAAM,CAGpE;AAED,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,aAAoC,EAAE,UAAU,SAAI,GAAG,MAAM,CAMlI;AAMD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C;AAsBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CAQjE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAMpC;AAgBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,IAAI,CAkBrE"}
@@ -81,10 +81,27 @@ export function applyScaling(options = {}) {
81
81
  }
82
82
  return applyPage(root ?? document.documentElement, config);
83
83
  }
84
+ /**
85
+ * The screen's own width as it is held, in CSS pixels: the widest a page on it
86
+ * is laid out at, or 0 when the browser does not say. iOS gives the screen's
87
+ * upright width whichever way it is turned, so the side is taken by the turn.
88
+ */
89
+ export function screenWidth() {
90
+ const { width = 0, height = 0 } = window.screen ?? {};
91
+ if (!width || !height)
92
+ return 0;
93
+ const turn = window.screen.orientation?.type;
94
+ const landscape = turn ? turn.startsWith("landscape") : window.matchMedia?.("(orientation: landscape)").matches ?? width > height;
95
+ return landscape ? Math.max(width, height) : Math.min(width, height);
96
+ }
84
97
  function applyPage(root, config) {
85
98
  const mobile = detectMobileDevice();
86
- // The page's width without its scroll bar.
87
- const width = document.documentElement.clientWidth || window.innerWidth || 0;
99
+ // The page's width without its scroll bar, never more than the screen's: when something reaches
100
+ // past the edge, a phone's browser widens the page and zooms out, and a scale read from that
101
+ // width would draw everything larger, which keeps the page too wide and zoomed out.
102
+ const page = document.documentElement.clientWidth || window.innerWidth || 0;
103
+ const held = mobile ? screenWidth() : 0;
104
+ const width = held ? Math.min(page, held) : page;
88
105
  const factor = mobile ? calculateScalingFactor(width, { ...defaultScalingConfig, ...config }, window.devicePixelRatio || 1) : 1;
89
106
  root.style.setProperty("--sf", String(factor));
90
107
  root.toggleAttribute("data-mobile", mobile);
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Square, rounded or circular: the corners every component draws, chosen once
3
+ * and remembered (Ezo's Shape setting, for every product).
4
+ *
5
+ * The runtime is the second part of `theme-bootstrap.js`, which a page inlines
6
+ * in its <head> so the first paint already has the shape; imported here, it
7
+ * installs itself when the page did not. It marks the root with
8
+ * `data-ds-shape`, which `1-root/component-appearance.css` reads: square
9
+ * corners, rounded ones (squircles where the browser draws them) or pills. A
10
+ * visitor who has chosen nothing sees `shapeDefault` from
11
+ * `window.DS_ONE_PREFERENCES`, or the components' own corners. Offer the
12
+ * choice with `<ds-cycle type="shape">`.
13
+ */
14
+ import "./theme-bootstrap.js";
15
+ export type Shape = "square" | "rounded" | "circular";
16
+ export declare const SHAPES: readonly Shape[];
17
+ /** `window.DS_ONE_SHAPE`, installed by `theme-bootstrap.js`. */
18
+ export interface ShapeRuntime {
19
+ /** The shape in effect, or null when none is chosen. */
20
+ shape(): Shape | null;
21
+ /** Choose and remember a shape, and put it on the page. */
22
+ set(shape: Shape): void;
23
+ /** Read the stored choice and the options again, and put them on the page. */
24
+ apply(): Shape | null;
25
+ }
26
+ declare global {
27
+ interface Window {
28
+ DS_ONE_SHAPE?: ShapeRuntime;
29
+ }
30
+ }
31
+ /** The shape in effect: the stored choice, else `shapeDefault`, else rounded (the components' own corners). */
32
+ export declare function getShape(): Shape;
33
+ /** Choose and remember a shape. */
34
+ export declare function setShape(shape: Shape): void;
35
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../DS1/0-face/shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,sBAAsB,CAAC;AAE9B,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AACtD,eAAO,MAAM,MAAM,EAAE,SAAS,KAAK,EAAsC,CAAC;AAE1E,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;IACtB,2DAA2D;IAC3D,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,8EAA8E;IAC9E,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;CACvB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;CACF;AAED,+GAA+G;AAC/G,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED,mCAAmC;AACnC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE3C"}