@0001-labs/design-system-1 0.3.0-alpha.28 → 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 (769) 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/material.css +67 -0
  57. package/DS1/1-root/notice.css +10 -2
  58. package/DS1/1-root/one.css +14 -7
  59. package/DS1/1-root/progress.css +9 -1
  60. package/DS1/1-root/row.css +68 -2
  61. package/DS1/1-root/table.css +47 -4
  62. package/DS1/1-root/text.css +26 -0
  63. package/DS1/2-core/button-split.ts +10 -5
  64. package/DS1/2-core/chart/chart.css +71 -2
  65. package/DS1/2-core/chart/grid-chart.ts +2 -1
  66. package/DS1/2-core/ds-activity.ts +32 -0
  67. package/DS1/2-core/ds-app-chrome.ts +1 -0
  68. package/DS1/2-core/ds-avatar.ts +35 -6
  69. package/DS1/2-core/ds-badge.ts +8 -1
  70. package/DS1/2-core/ds-button.ts +7 -1
  71. package/DS1/2-core/ds-chart.ts +184 -49
  72. package/DS1/2-core/ds-cycle.ts +27 -186
  73. package/DS1/2-core/ds-device-bezel.ts +1 -0
  74. package/DS1/2-core/ds-empty.ts +6 -4
  75. package/DS1/2-core/ds-input.ts +23 -3
  76. package/DS1/2-core/ds-message.ts +22 -0
  77. package/DS1/2-core/ds-number.ts +349 -0
  78. package/DS1/2-core/ds-progress.ts +3 -0
  79. package/DS1/2-core/ds-radio.ts +3 -0
  80. package/DS1/2-core/ds-stat.ts +3 -0
  81. package/DS1/2-core/ds-switch.ts +5 -1
  82. package/DS1/2-core/ds-tag.ts +9 -2
  83. package/DS1/2-core/ds-text.ts +7 -0
  84. package/DS1/2-core/ds-token.ts +3 -0
  85. package/DS1/2-core/ds-tooltip.ts +17 -2
  86. package/DS1/2-core/ds-window.ts +1 -0
  87. package/DS1/2-core/generated/ds-icon-map.ts +47 -5
  88. package/DS1/2-core/generated/icons-extra.ts +24 -3
  89. package/DS1/2-core/generated/icons-immediate.ts +3 -3
  90. package/DS1/2-core/number-expression.ts +64 -0
  91. package/DS1/2-core/styles/ds-activity.css +16 -0
  92. package/DS1/2-core/styles/ds-badge.css +4 -1
  93. package/DS1/2-core/styles/ds-button-host.css +45 -12
  94. package/DS1/2-core/styles/ds-button-split.css +8 -0
  95. package/DS1/2-core/styles/ds-button.css +92 -19
  96. package/DS1/2-core/styles/ds-card.css +6 -0
  97. package/DS1/2-core/styles/ds-checkbox.css +20 -8
  98. package/DS1/2-core/styles/ds-image.css +2 -1
  99. package/DS1/2-core/styles/ds-input.css +37 -4
  100. package/DS1/2-core/styles/ds-number.css +127 -0
  101. package/DS1/2-core/styles/ds-radio.css +4 -1
  102. package/DS1/2-core/styles/ds-switch.css +34 -4
  103. package/DS1/2-core/styles/ds-tag.css +32 -5
  104. package/DS1/2-core/styles/ds-text.css +13 -4
  105. package/DS1/2-core/styles/ds-token.css +4 -1
  106. package/DS1/2-core/styles/ds-tooltip.css +13 -7
  107. package/DS1/3-unit/calendar-base.ts +5 -2
  108. package/DS1/3-unit/ds-calendar.ts +711 -37
  109. package/DS1/3-unit/ds-carousel.ts +13 -1
  110. package/DS1/3-unit/ds-context.ts +40 -2
  111. package/DS1/3-unit/ds-form.ts +45 -10
  112. package/DS1/3-unit/ds-list.ts +31 -3
  113. package/DS1/3-unit/ds-matrix.ts +3 -0
  114. package/DS1/3-unit/ds-menu.ts +9 -5
  115. package/DS1/3-unit/ds-row.ts +17 -2
  116. package/DS1/3-unit/ds-select.ts +1 -1
  117. package/DS1/3-unit/ds-sidebar.ts +18 -3
  118. package/DS1/3-unit/ds-table-of-contents.ts +166 -0
  119. package/DS1/3-unit/ds-tabs.ts +40 -2
  120. package/DS1/3-unit/styles/ds-calendar.css +356 -42
  121. package/DS1/3-unit/styles/ds-context.css +38 -0
  122. package/DS1/3-unit/styles/ds-list.css +26 -1
  123. package/DS1/3-unit/styles/ds-matrix.css +4 -1
  124. package/DS1/3-unit/styles/ds-row.css +39 -0
  125. package/DS1/3-unit/styles/ds-select.css +22 -12
  126. package/DS1/3-unit/styles/ds-sidebar.css +16 -2
  127. package/DS1/3-unit/styles/ds-table-of-contents.css +40 -0
  128. package/DS1/3-unit/styles/ds-tabs.css +95 -0
  129. package/DS1/4-page/ds-document.ts +3 -0
  130. package/DS1/4-page/ds-footer.ts +93 -18
  131. package/DS1/4-page/ds-header.ts +5 -1
  132. package/DS1/4-page/ds-overlay.ts +8 -3
  133. package/DS1/4-page/ds-page.ts +22 -1
  134. package/DS1/4-page/email.ts +7 -4
  135. package/DS1/4-page/styles/ds-container.css +0 -1
  136. package/DS1/4-page/styles/ds-overlay.css +7 -0
  137. package/DS1/4-page/styles/ds-page.css +10 -0
  138. package/DS1/5-visual-kit/app-chrome.ts +129 -0
  139. package/DS1/5-visual-kit/bezels.ts +394 -0
  140. package/DS1/5-visual-kit/browser-icons.LICENSE +53 -0
  141. package/DS1/5-visual-kit/browser-icons.ts +47 -0
  142. package/DS1/5-visual-kit/browser-styles.ts +53 -0
  143. package/DS1/5-visual-kit/device-bezel.ts +55 -0
  144. package/DS1/5-visual-kit/instagram-frame.ts +15 -0
  145. package/DS1/5-visual-kit/instagram.ts +41 -0
  146. package/DS1/5-visual-kit/mobile-chrome.ts +25 -0
  147. package/DS1/5-visual-kit/native-icon-paths.ts +145 -0
  148. package/DS1/5-visual-kit/window.ts +22 -0
  149. package/DS1/components.ts +1 -0
  150. package/DS1/index.ts +14 -1
  151. package/DS1/react/choice.ts +4 -2
  152. package/DS1/react/context.ts +11 -6
  153. package/DS1/react/empty.ts +2 -2
  154. package/DS1/react/footer.ts +5 -5
  155. package/DS1/react/header.ts +1 -1
  156. package/DS1/react/message.ts +4 -2
  157. package/DS1/react/number.ts +53 -0
  158. package/DS1/react/sidebar.ts +4 -2
  159. package/DS1/react/table-of-contents.ts +28 -0
  160. package/DS1/x-flag/LICENSE.md +26 -0
  161. package/DS1/x-flag/ac.svg +1 -0
  162. package/DS1/x-flag/ad.svg +1 -0
  163. package/DS1/x-flag/ae.svg +1 -0
  164. package/DS1/x-flag/af.svg +1 -0
  165. package/DS1/x-flag/ag.svg +1 -0
  166. package/DS1/x-flag/ai.svg +1 -0
  167. package/DS1/x-flag/al.svg +1 -0
  168. package/DS1/x-flag/am.svg +1 -0
  169. package/DS1/x-flag/ao.svg +1 -0
  170. package/DS1/x-flag/aq.svg +1 -0
  171. package/DS1/x-flag/ar.svg +1 -0
  172. package/DS1/x-flag/as.svg +1 -0
  173. package/DS1/x-flag/at.svg +1 -0
  174. package/DS1/x-flag/au.svg +1 -0
  175. package/DS1/x-flag/aw.svg +1 -0
  176. package/DS1/x-flag/ax.svg +1 -0
  177. package/DS1/x-flag/az.svg +1 -0
  178. package/DS1/x-flag/ba.svg +1 -0
  179. package/DS1/x-flag/bb.svg +1 -0
  180. package/DS1/x-flag/bd.svg +1 -0
  181. package/DS1/x-flag/be.svg +1 -0
  182. package/DS1/x-flag/bf.svg +1 -0
  183. package/DS1/x-flag/bg.svg +1 -0
  184. package/DS1/x-flag/bh.svg +1 -0
  185. package/DS1/x-flag/bi.svg +1 -0
  186. package/DS1/x-flag/bj.svg +1 -0
  187. package/DS1/x-flag/bl.svg +1 -0
  188. package/DS1/x-flag/bm.svg +1 -0
  189. package/DS1/x-flag/bn.svg +1 -0
  190. package/DS1/x-flag/bo.svg +1 -0
  191. package/DS1/x-flag/bq-bo.svg +1 -0
  192. package/DS1/x-flag/bq-sa.svg +1 -0
  193. package/DS1/x-flag/bq-se.svg +1 -0
  194. package/DS1/x-flag/bq.svg +1 -0
  195. package/DS1/x-flag/br.svg +1 -0
  196. package/DS1/x-flag/bs.svg +1 -0
  197. package/DS1/x-flag/bt.svg +1 -0
  198. package/DS1/x-flag/bv.svg +1 -0
  199. package/DS1/x-flag/bw.svg +1 -0
  200. package/DS1/x-flag/by.svg +1 -0
  201. package/DS1/x-flag/bz.svg +1 -0
  202. package/DS1/x-flag/ca.svg +1 -0
  203. package/DS1/x-flag/cc.svg +1 -0
  204. package/DS1/x-flag/cd.svg +1 -0
  205. package/DS1/x-flag/cf.svg +1 -0
  206. package/DS1/x-flag/cg.svg +1 -0
  207. package/DS1/x-flag/ch.svg +1 -0
  208. package/DS1/x-flag/ci.svg +1 -0
  209. package/DS1/x-flag/ck.svg +1 -0
  210. package/DS1/x-flag/cl.svg +1 -0
  211. package/DS1/x-flag/cm.svg +1 -0
  212. package/DS1/x-flag/cn.svg +1 -0
  213. package/DS1/x-flag/co.svg +1 -0
  214. package/DS1/x-flag/cr.svg +1 -0
  215. package/DS1/x-flag/cu.svg +1 -0
  216. package/DS1/x-flag/cv.svg +1 -0
  217. package/DS1/x-flag/cw.svg +1 -0
  218. package/DS1/x-flag/cx.svg +1 -0
  219. package/DS1/x-flag/cy.svg +1 -0
  220. package/DS1/x-flag/cz.svg +1 -0
  221. package/DS1/x-flag/de.svg +1 -0
  222. package/DS1/x-flag/dj.svg +1 -0
  223. package/DS1/x-flag/dk.svg +1 -0
  224. package/DS1/x-flag/dm.svg +1 -0
  225. package/DS1/x-flag/do.svg +1 -0
  226. package/DS1/x-flag/dz.svg +1 -0
  227. package/DS1/x-flag/ec.svg +1 -0
  228. package/DS1/x-flag/ee.svg +1 -0
  229. package/DS1/x-flag/eg.svg +1 -0
  230. package/DS1/x-flag/eh.svg +1 -0
  231. package/DS1/x-flag/er.svg +1 -0
  232. package/DS1/x-flag/es-ct.svg +1 -0
  233. package/DS1/x-flag/es.svg +1 -0
  234. package/DS1/x-flag/et.svg +1 -0
  235. package/DS1/x-flag/eu.svg +1 -0
  236. package/DS1/x-flag/fi.svg +1 -0
  237. package/DS1/x-flag/fj.svg +1 -0
  238. package/DS1/x-flag/fk.svg +1 -0
  239. package/DS1/x-flag/fm.svg +1 -0
  240. package/DS1/x-flag/fo.svg +1 -0
  241. package/DS1/x-flag/fr.svg +1 -0
  242. package/DS1/x-flag/ga.svg +1 -0
  243. package/DS1/x-flag/gb-eng.svg +1 -0
  244. package/DS1/x-flag/gb-nir.svg +1 -0
  245. package/DS1/x-flag/gb-sct.svg +1 -0
  246. package/DS1/x-flag/gb-wls.svg +1 -0
  247. package/DS1/x-flag/gb.svg +1 -0
  248. package/DS1/x-flag/gd.svg +1 -0
  249. package/DS1/x-flag/ge.svg +1 -0
  250. package/DS1/x-flag/gf.svg +1 -0
  251. package/DS1/x-flag/gg.svg +1 -0
  252. package/DS1/x-flag/gh.svg +1 -0
  253. package/DS1/x-flag/gi.svg +1 -0
  254. package/DS1/x-flag/gl.svg +1 -0
  255. package/DS1/x-flag/gm.svg +1 -0
  256. package/DS1/x-flag/gn.svg +1 -0
  257. package/DS1/x-flag/gp.svg +1 -0
  258. package/DS1/x-flag/gq.svg +1 -0
  259. package/DS1/x-flag/gr.svg +1 -0
  260. package/DS1/x-flag/gs.svg +1 -0
  261. package/DS1/x-flag/gt.svg +1 -0
  262. package/DS1/x-flag/gu.svg +1 -0
  263. package/DS1/x-flag/gw.svg +1 -0
  264. package/DS1/x-flag/gy.svg +1 -0
  265. package/DS1/x-flag/hk.svg +1 -0
  266. package/DS1/x-flag/hm.svg +1 -0
  267. package/DS1/x-flag/hn.svg +1 -0
  268. package/DS1/x-flag/hr.svg +1 -0
  269. package/DS1/x-flag/ht.svg +1 -0
  270. package/DS1/x-flag/hu.svg +1 -0
  271. package/DS1/x-flag/ic.svg +1 -0
  272. package/DS1/x-flag/id.svg +1 -0
  273. package/DS1/x-flag/ie.svg +1 -0
  274. package/DS1/x-flag/il.svg +1 -0
  275. package/DS1/x-flag/im.svg +1 -0
  276. package/DS1/x-flag/in.svg +1 -0
  277. package/DS1/x-flag/io.svg +1 -0
  278. package/DS1/x-flag/iq.svg +1 -0
  279. package/DS1/x-flag/ir.svg +1 -0
  280. package/DS1/x-flag/is.svg +1 -0
  281. package/DS1/x-flag/it.svg +1 -0
  282. package/DS1/x-flag/je.svg +1 -0
  283. package/DS1/x-flag/jm.svg +1 -0
  284. package/DS1/x-flag/jo.svg +1 -0
  285. package/DS1/x-flag/jp.svg +1 -0
  286. package/DS1/x-flag/ke.svg +1 -0
  287. package/DS1/x-flag/kg.svg +1 -0
  288. package/DS1/x-flag/kh.svg +1 -0
  289. package/DS1/x-flag/ki.svg +1 -0
  290. package/DS1/x-flag/km.svg +1 -0
  291. package/DS1/x-flag/kn.svg +1 -0
  292. package/DS1/x-flag/kp.svg +1 -0
  293. package/DS1/x-flag/kr.svg +1 -0
  294. package/DS1/x-flag/kw.svg +1 -0
  295. package/DS1/x-flag/ky.svg +1 -0
  296. package/DS1/x-flag/kz.svg +1 -0
  297. package/DS1/x-flag/la.svg +1 -0
  298. package/DS1/x-flag/lb.svg +1 -0
  299. package/DS1/x-flag/lc.svg +1 -0
  300. package/DS1/x-flag/li.svg +1 -0
  301. package/DS1/x-flag/lk.svg +1 -0
  302. package/DS1/x-flag/lr.svg +1 -0
  303. package/DS1/x-flag/ls.svg +1 -0
  304. package/DS1/x-flag/lt.svg +1 -0
  305. package/DS1/x-flag/lu.svg +1 -0
  306. package/DS1/x-flag/lv.svg +1 -0
  307. package/DS1/x-flag/ly.svg +1 -0
  308. package/DS1/x-flag/ma.svg +1 -0
  309. package/DS1/x-flag/mc.svg +1 -0
  310. package/DS1/x-flag/md.svg +1 -0
  311. package/DS1/x-flag/me.svg +1 -0
  312. package/DS1/x-flag/mf.svg +1 -0
  313. package/DS1/x-flag/mg.svg +1 -0
  314. package/DS1/x-flag/mh.svg +1 -0
  315. package/DS1/x-flag/mk.svg +1 -0
  316. package/DS1/x-flag/ml.svg +1 -0
  317. package/DS1/x-flag/mm.svg +1 -0
  318. package/DS1/x-flag/mn.svg +1 -0
  319. package/DS1/x-flag/mo.svg +1 -0
  320. package/DS1/x-flag/mp.svg +1 -0
  321. package/DS1/x-flag/mq.svg +1 -0
  322. package/DS1/x-flag/mr.svg +1 -0
  323. package/DS1/x-flag/ms.svg +1 -0
  324. package/DS1/x-flag/mt.svg +1 -0
  325. package/DS1/x-flag/mu.svg +1 -0
  326. package/DS1/x-flag/mv.svg +1 -0
  327. package/DS1/x-flag/mw.svg +1 -0
  328. package/DS1/x-flag/mx.svg +1 -0
  329. package/DS1/x-flag/my.svg +1 -0
  330. package/DS1/x-flag/mz.svg +1 -0
  331. package/DS1/x-flag/na.svg +1 -0
  332. package/DS1/x-flag/nc.svg +1 -0
  333. package/DS1/x-flag/ne.svg +1 -0
  334. package/DS1/x-flag/nf.svg +1 -0
  335. package/DS1/x-flag/ng.svg +1 -0
  336. package/DS1/x-flag/ni.svg +1 -0
  337. package/DS1/x-flag/nl.svg +1 -0
  338. package/DS1/x-flag/no.svg +1 -0
  339. package/DS1/x-flag/np.svg +1 -0
  340. package/DS1/x-flag/nr.svg +1 -0
  341. package/DS1/x-flag/nu.svg +1 -0
  342. package/DS1/x-flag/nz.svg +1 -0
  343. package/DS1/x-flag/om.svg +1 -0
  344. package/DS1/x-flag/pa.svg +1 -0
  345. package/DS1/x-flag/pe.svg +1 -0
  346. package/DS1/x-flag/pf.svg +1 -0
  347. package/DS1/x-flag/pg.svg +1 -0
  348. package/DS1/x-flag/ph.svg +1 -0
  349. package/DS1/x-flag/pk.svg +1 -0
  350. package/DS1/x-flag/pl.svg +1 -0
  351. package/DS1/x-flag/pm.svg +1 -0
  352. package/DS1/x-flag/pn.svg +1 -0
  353. package/DS1/x-flag/pr.svg +1 -0
  354. package/DS1/x-flag/ps.svg +1 -0
  355. package/DS1/x-flag/pt.svg +1 -0
  356. package/DS1/x-flag/pw.svg +1 -0
  357. package/DS1/x-flag/py.svg +1 -0
  358. package/DS1/x-flag/qa.svg +1 -0
  359. package/DS1/x-flag/re.svg +1 -0
  360. package/DS1/x-flag/ro.svg +1 -0
  361. package/DS1/x-flag/rs.svg +1 -0
  362. package/DS1/x-flag/ru.svg +1 -0
  363. package/DS1/x-flag/rw.svg +1 -0
  364. package/DS1/x-flag/sa.svg +1 -0
  365. package/DS1/x-flag/sb.svg +1 -0
  366. package/DS1/x-flag/sc.svg +1 -0
  367. package/DS1/x-flag/sd.svg +1 -0
  368. package/DS1/x-flag/se.svg +1 -0
  369. package/DS1/x-flag/sg.svg +1 -0
  370. package/DS1/x-flag/sh.svg +1 -0
  371. package/DS1/x-flag/si.svg +1 -0
  372. package/DS1/x-flag/sj.svg +1 -0
  373. package/DS1/x-flag/sk.svg +1 -0
  374. package/DS1/x-flag/sl.svg +1 -0
  375. package/DS1/x-flag/sm.svg +1 -0
  376. package/DS1/x-flag/sn.svg +1 -0
  377. package/DS1/x-flag/so.svg +1 -0
  378. package/DS1/x-flag/sr.svg +1 -0
  379. package/DS1/x-flag/ss.svg +1 -0
  380. package/DS1/x-flag/st.svg +1 -0
  381. package/DS1/x-flag/sv.svg +1 -0
  382. package/DS1/x-flag/sx.svg +1 -0
  383. package/DS1/x-flag/sy.svg +1 -0
  384. package/DS1/x-flag/sz.svg +1 -0
  385. package/DS1/x-flag/ta.svg +1 -0
  386. package/DS1/x-flag/tc.svg +1 -0
  387. package/DS1/x-flag/td.svg +1 -0
  388. package/DS1/x-flag/tf.svg +1 -0
  389. package/DS1/x-flag/tg.svg +1 -0
  390. package/DS1/x-flag/th.svg +1 -0
  391. package/DS1/x-flag/tj.svg +1 -0
  392. package/DS1/x-flag/tk.svg +1 -0
  393. package/DS1/x-flag/tl.svg +1 -0
  394. package/DS1/x-flag/tm.svg +1 -0
  395. package/DS1/x-flag/tn.svg +1 -0
  396. package/DS1/x-flag/to.svg +1 -0
  397. package/DS1/x-flag/tr.svg +1 -0
  398. package/DS1/x-flag/tt.svg +1 -0
  399. package/DS1/x-flag/tv.svg +1 -0
  400. package/DS1/x-flag/tw.svg +1 -0
  401. package/DS1/x-flag/tz.svg +1 -0
  402. package/DS1/x-flag/ua.svg +1 -0
  403. package/DS1/x-flag/ug.svg +1 -0
  404. package/DS1/x-flag/um.svg +1 -0
  405. package/DS1/x-flag/us.svg +1 -0
  406. package/DS1/x-flag/uy.svg +1 -0
  407. package/DS1/x-flag/uz.svg +1 -0
  408. package/DS1/x-flag/va.svg +1 -0
  409. package/DS1/x-flag/vc.svg +1 -0
  410. package/DS1/x-flag/ve.svg +1 -0
  411. package/DS1/x-flag/vg.svg +1 -0
  412. package/DS1/x-flag/vi.svg +1 -0
  413. package/DS1/x-flag/vn.svg +1 -0
  414. package/DS1/x-flag/vu.svg +1 -0
  415. package/DS1/x-flag/wf.svg +1 -0
  416. package/DS1/x-flag/ws.svg +1 -0
  417. package/DS1/x-flag/xk.svg +1 -0
  418. package/DS1/x-flag/ye.svg +1 -0
  419. package/DS1/x-flag/yt.svg +1 -0
  420. package/DS1/x-flag/za.svg +1 -0
  421. package/DS1/x-flag/zm.svg +1 -0
  422. package/DS1/x-flag/zw.svg +1 -0
  423. package/DS1/x-icon/android.svg +9 -0
  424. package/DS1/x-icon/arrange-check.svg +1 -1
  425. package/DS1/x-icon/arrange-page.svg +1 -1
  426. package/DS1/x-icon/chrome.svg +7 -0
  427. package/DS1/x-icon/edge-brand.svg +6 -0
  428. package/DS1/x-icon/firefox.svg +4 -0
  429. package/DS1/x-icon/health.svg +3 -0
  430. package/DS1/x-icon/left.svg +2 -3
  431. package/DS1/x-icon/linux.svg +1 -0
  432. package/DS1/x-icon/material.svg +1 -0
  433. package/DS1/x-icon/milestone-planned.svg +3 -0
  434. package/DS1/x-icon/milestone.svg +3 -0
  435. package/DS1/x-icon/more.svg +1 -5
  436. package/DS1/x-icon/network.svg +3 -0
  437. package/DS1/x-icon/opera.svg +4 -0
  438. package/DS1/x-icon/prediction.svg +3 -0
  439. package/DS1/x-icon/priority-high.svg +3 -0
  440. package/DS1/x-icon/priority-low.svg +3 -0
  441. package/DS1/x-icon/priority-medium.svg +3 -0
  442. package/DS1/x-icon/project.svg +3 -0
  443. package/DS1/x-icon/redo.svg +2 -2
  444. package/DS1/x-icon/repeat-small.svg +3 -0
  445. package/DS1/x-icon/safari.svg +4 -0
  446. package/DS1/x-icon/scaling.svg +3 -0
  447. package/DS1/x-icon/tabs.svg +4 -0
  448. package/DS1/x-icon/windows.svg +5 -0
  449. package/README.md +3 -3
  450. package/dist/0-face/button-label.d.ts +5 -0
  451. package/dist/0-face/button-label.d.ts.map +1 -0
  452. package/dist/0-face/button-label.js +31 -0
  453. package/dist/0-face/calendar.d.ts +1 -1
  454. package/dist/0-face/calendar.d.ts.map +1 -1
  455. package/dist/0-face/calendar.js +6 -3
  456. package/dist/0-face/carousel.d.ts +9 -0
  457. package/dist/0-face/carousel.d.ts.map +1 -1
  458. package/dist/0-face/carousel.js +80 -0
  459. package/dist/0-face/constraint-panel.d.ts +43 -0
  460. package/dist/0-face/constraint-panel.d.ts.map +1 -0
  461. package/dist/0-face/constraint-panel.js +429 -0
  462. package/dist/0-face/constraint-site.d.ts +72 -0
  463. package/dist/0-face/constraint-site.d.ts.map +1 -0
  464. package/dist/0-face/constraint-site.js +185 -0
  465. package/dist/0-face/constraints.d.ts +47 -0
  466. package/dist/0-face/constraints.d.ts.map +1 -0
  467. package/dist/0-face/constraints.js +247 -0
  468. package/dist/0-face/copy-text.js +1 -1
  469. package/dist/0-face/cut-fade.d.ts +112 -0
  470. package/dist/0-face/cut-fade.d.ts.map +1 -0
  471. package/dist/0-face/cut-fade.js +274 -0
  472. package/dist/0-face/define.d.ts.map +1 -1
  473. package/dist/0-face/define.js +24 -3
  474. package/dist/0-face/face-correction.d.ts +51 -0
  475. package/dist/0-face/face-correction.d.ts.map +1 -0
  476. package/dist/0-face/face-correction.js +80 -0
  477. package/dist/0-face/failures.d.ts +16 -0
  478. package/dist/0-face/failures.d.ts.map +1 -0
  479. package/dist/0-face/failures.js +21 -0
  480. package/dist/0-face/feedback-overlays.d.ts.map +1 -1
  481. package/dist/0-face/feedback-overlays.js +5 -3
  482. package/dist/0-face/feedback.d.ts +2 -0
  483. package/dist/0-face/feedback.d.ts.map +1 -1
  484. package/dist/0-face/feedback.js +1 -0
  485. package/dist/0-face/focus.d.ts +71 -0
  486. package/dist/0-face/focus.d.ts.map +1 -0
  487. package/dist/0-face/focus.js +196 -0
  488. package/dist/0-face/grid.d.ts +11 -1
  489. package/dist/0-face/grid.d.ts.map +1 -1
  490. package/dist/0-face/grid.js +90 -4
  491. package/dist/0-face/i18n.d.ts.map +1 -1
  492. package/dist/0-face/i18n.js +38 -16
  493. package/dist/0-face/layout-inspector.d.ts +5 -1
  494. package/dist/0-face/layout-inspector.d.ts.map +1 -1
  495. package/dist/0-face/layout-inspector.js +130 -104
  496. package/dist/0-face/preference-options.d.ts +4 -0
  497. package/dist/0-face/preference-options.d.ts.map +1 -1
  498. package/dist/0-face/scaling.d.ts +8 -1
  499. package/dist/0-face/scaling.d.ts.map +1 -1
  500. package/dist/0-face/scaling.js +19 -2
  501. package/dist/0-face/shape.d.ts +35 -0
  502. package/dist/0-face/shape.d.ts.map +1 -0
  503. package/dist/0-face/shape.js +23 -0
  504. package/dist/0-face/text-contrast.d.ts +22 -0
  505. package/dist/0-face/text-contrast.d.ts.map +1 -0
  506. package/dist/0-face/text-contrast.js +178 -0
  507. package/dist/0-face/theme-bootstrap.js +56 -0
  508. package/dist/0-face/toast-queue.d.ts +4 -0
  509. package/dist/0-face/toast-queue.d.ts.map +1 -1
  510. package/dist/0-face/toast-queue.js +4 -1
  511. package/dist/0-face/translations/da.json +10 -1
  512. package/dist/0-face/translations/de.json +10 -1
  513. package/dist/0-face/translations/en.json +10 -1
  514. package/dist/0-face/translations/es.json +10 -1
  515. package/dist/0-face/translations/fi.json +10 -1
  516. package/dist/0-face/translations/fr.json +10 -1
  517. package/dist/0-face/translations/is.json +10 -1
  518. package/dist/0-face/translations/it.json +10 -1
  519. package/dist/0-face/translations/ja.json +10 -1
  520. package/dist/0-face/translations/ko.json +10 -1
  521. package/dist/0-face/translations/nb.json +10 -1
  522. package/dist/0-face/translations/pt-BR.json +10 -1
  523. package/dist/0-face/translations/pt.json +10 -1
  524. package/dist/0-face/translations/sv.json +10 -1
  525. package/dist/0-face/translations/zh.json +10 -1
  526. package/dist/0-face/word-wrap.d.ts +6 -0
  527. package/dist/0-face/word-wrap.d.ts.map +1 -0
  528. package/dist/0-face/word-wrap.js +119 -0
  529. package/dist/1-root/foundation.d.ts +12 -0
  530. package/dist/1-root/foundation.d.ts.map +1 -0
  531. package/dist/1-root/foundation.js +59 -0
  532. package/dist/2-core/button-split.d.ts +1 -0
  533. package/dist/2-core/button-split.d.ts.map +1 -1
  534. package/dist/2-core/button-split.js +9 -4
  535. package/dist/2-core/chart/grid-chart.d.ts +2 -0
  536. package/dist/2-core/chart/grid-chart.d.ts.map +1 -1
  537. package/dist/2-core/chart/grid-chart.js +2 -1
  538. package/dist/2-core/ds-activity.d.ts +25 -0
  539. package/dist/2-core/ds-activity.d.ts.map +1 -0
  540. package/dist/2-core/ds-activity.js +28 -0
  541. package/dist/2-core/ds-app-chrome.d.ts +2 -0
  542. package/dist/2-core/ds-app-chrome.d.ts.map +1 -0
  543. package/dist/2-core/ds-app-chrome.js +1 -0
  544. package/dist/2-core/ds-avatar.d.ts +7 -0
  545. package/dist/2-core/ds-avatar.d.ts.map +1 -1
  546. package/dist/2-core/ds-avatar.js +41 -6
  547. package/dist/2-core/ds-badge.d.ts +7 -1
  548. package/dist/2-core/ds-badge.d.ts.map +1 -1
  549. package/dist/2-core/ds-badge.js +8 -1
  550. package/dist/2-core/ds-button.d.ts +12 -0
  551. package/dist/2-core/ds-button.d.ts.map +1 -1
  552. package/dist/2-core/ds-button.js +4 -0
  553. package/dist/2-core/ds-chart.d.ts +28 -3
  554. package/dist/2-core/ds-chart.d.ts.map +1 -1
  555. package/dist/2-core/ds-chart.js +110 -130
  556. package/dist/2-core/ds-cycle.d.ts +2 -2
  557. package/dist/2-core/ds-cycle.d.ts.map +1 -1
  558. package/dist/2-core/ds-cycle.js +36 -171
  559. package/dist/2-core/ds-device-bezel.d.ts +2 -0
  560. package/dist/2-core/ds-device-bezel.d.ts.map +1 -0
  561. package/dist/2-core/ds-device-bezel.js +1 -0
  562. package/dist/2-core/ds-empty.d.ts +2 -2
  563. package/dist/2-core/ds-empty.d.ts.map +1 -1
  564. package/dist/2-core/ds-empty.js +6 -4
  565. package/dist/2-core/ds-input.d.ts +7 -0
  566. package/dist/2-core/ds-input.d.ts.map +1 -1
  567. package/dist/2-core/ds-input.js +23 -3
  568. package/dist/2-core/ds-message.d.ts +11 -0
  569. package/dist/2-core/ds-message.d.ts.map +1 -1
  570. package/dist/2-core/ds-message.js +18 -0
  571. package/dist/2-core/ds-number.d.ts +86 -0
  572. package/dist/2-core/ds-number.d.ts.map +1 -0
  573. package/dist/2-core/ds-number.js +326 -0
  574. package/dist/2-core/ds-progress.d.ts +3 -0
  575. package/dist/2-core/ds-progress.d.ts.map +1 -1
  576. package/dist/2-core/ds-progress.js +3 -0
  577. package/dist/2-core/ds-radio.d.ts +3 -0
  578. package/dist/2-core/ds-radio.d.ts.map +1 -1
  579. package/dist/2-core/ds-radio.js +10 -1
  580. package/dist/2-core/ds-stat.d.ts +3 -0
  581. package/dist/2-core/ds-stat.d.ts.map +1 -1
  582. package/dist/2-core/ds-stat.js +3 -0
  583. package/dist/2-core/ds-switch.d.ts +14 -1
  584. package/dist/2-core/ds-switch.d.ts.map +1 -1
  585. package/dist/2-core/ds-switch.js +3 -1
  586. package/dist/2-core/ds-tag.d.ts +8 -1
  587. package/dist/2-core/ds-tag.d.ts.map +1 -1
  588. package/dist/2-core/ds-tag.js +12 -2
  589. package/dist/2-core/ds-text.d.ts +7 -0
  590. package/dist/2-core/ds-text.d.ts.map +1 -1
  591. package/dist/2-core/ds-text.js +7 -0
  592. package/dist/2-core/ds-token.d.ts +3 -0
  593. package/dist/2-core/ds-token.d.ts.map +1 -1
  594. package/dist/2-core/ds-token.js +3 -0
  595. package/dist/2-core/ds-tooltip.d.ts.map +1 -1
  596. package/dist/2-core/ds-tooltip.js +23 -2
  597. package/dist/2-core/ds-window.d.ts +2 -0
  598. package/dist/2-core/ds-window.d.ts.map +1 -0
  599. package/dist/2-core/ds-window.js +1 -0
  600. package/dist/2-core/generated/ds-icon-map.d.ts +27 -6
  601. package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
  602. package/dist/2-core/generated/ds-icon-map.js +47 -5
  603. package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
  604. package/dist/2-core/generated/icons-extra.js +24 -3
  605. package/dist/2-core/generated/icons-immediate.d.ts +1 -1
  606. package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
  607. package/dist/2-core/generated/icons-immediate.js +3 -3
  608. package/dist/2-core/number-expression.d.ts +12 -0
  609. package/dist/2-core/number-expression.d.ts.map +1 -0
  610. package/dist/2-core/number-expression.js +82 -0
  611. package/dist/3-unit/calendar-base.d.ts +5 -0
  612. package/dist/3-unit/calendar-base.d.ts.map +1 -1
  613. package/dist/3-unit/calendar-base.js +3 -2
  614. package/dist/3-unit/ds-calendar.d.ts +197 -4
  615. package/dist/3-unit/ds-calendar.d.ts.map +1 -1
  616. package/dist/3-unit/ds-calendar.js +687 -45
  617. package/dist/3-unit/ds-carousel.d.ts +3 -0
  618. package/dist/3-unit/ds-carousel.d.ts.map +1 -1
  619. package/dist/3-unit/ds-carousel.js +13 -1
  620. package/dist/3-unit/ds-context.d.ts +18 -1
  621. package/dist/3-unit/ds-context.d.ts.map +1 -1
  622. package/dist/3-unit/ds-context.js +37 -1
  623. package/dist/3-unit/ds-form.d.ts +9 -0
  624. package/dist/3-unit/ds-form.d.ts.map +1 -1
  625. package/dist/3-unit/ds-form.js +50 -10
  626. package/dist/3-unit/ds-list.d.ts +20 -1
  627. package/dist/3-unit/ds-list.d.ts.map +1 -1
  628. package/dist/3-unit/ds-list.js +31 -3
  629. package/dist/3-unit/ds-matrix.d.ts +3 -0
  630. package/dist/3-unit/ds-matrix.d.ts.map +1 -1
  631. package/dist/3-unit/ds-matrix.js +3 -0
  632. package/dist/3-unit/ds-menu.d.ts.map +1 -1
  633. package/dist/3-unit/ds-menu.js +17 -1
  634. package/dist/3-unit/ds-row.d.ts +13 -0
  635. package/dist/3-unit/ds-row.d.ts.map +1 -1
  636. package/dist/3-unit/ds-row.js +15 -2
  637. package/dist/3-unit/ds-select.js +1 -1
  638. package/dist/3-unit/ds-sidebar.d.ts +17 -0
  639. package/dist/3-unit/ds-sidebar.d.ts.map +1 -1
  640. package/dist/3-unit/ds-sidebar.js +14 -3
  641. package/dist/3-unit/ds-table-of-contents.d.ts +68 -0
  642. package/dist/3-unit/ds-table-of-contents.d.ts.map +1 -0
  643. package/dist/3-unit/ds-table-of-contents.js +190 -0
  644. package/dist/3-unit/ds-tabs.d.ts +32 -1
  645. package/dist/3-unit/ds-tabs.d.ts.map +1 -1
  646. package/dist/3-unit/ds-tabs.js +39 -1
  647. package/dist/4-page/ds-document.d.ts +3 -0
  648. package/dist/4-page/ds-document.d.ts.map +1 -1
  649. package/dist/4-page/ds-document.js +3 -0
  650. package/dist/4-page/ds-footer.d.ts +47 -7
  651. package/dist/4-page/ds-footer.d.ts.map +1 -1
  652. package/dist/4-page/ds-footer.js +58 -14
  653. package/dist/4-page/ds-header.d.ts +6 -0
  654. package/dist/4-page/ds-header.d.ts.map +1 -1
  655. package/dist/4-page/ds-header.js +4 -1
  656. package/dist/4-page/ds-overlay.d.ts +2 -2
  657. package/dist/4-page/ds-overlay.d.ts.map +1 -1
  658. package/dist/4-page/ds-overlay.js +8 -3
  659. package/dist/4-page/ds-page.d.ts +12 -0
  660. package/dist/4-page/ds-page.d.ts.map +1 -1
  661. package/dist/4-page/ds-page.js +19 -1
  662. package/dist/4-page/email.d.ts +2 -0
  663. package/dist/4-page/email.d.ts.map +1 -1
  664. package/dist/4-page/email.js +5 -4
  665. package/dist/5-visual-kit/app-chrome.d.ts +98 -0
  666. package/dist/5-visual-kit/app-chrome.d.ts.map +1 -0
  667. package/dist/5-visual-kit/app-chrome.js +119 -0
  668. package/dist/5-visual-kit/bezels.d.ts +30 -0
  669. package/dist/5-visual-kit/bezels.d.ts.map +1 -0
  670. package/dist/5-visual-kit/bezels.js +388 -0
  671. package/dist/5-visual-kit/browser-icons.d.ts +5 -0
  672. package/dist/5-visual-kit/browser-icons.d.ts.map +1 -0
  673. package/dist/5-visual-kit/browser-icons.js +51 -0
  674. package/dist/5-visual-kit/browser-styles.d.ts +3 -0
  675. package/dist/5-visual-kit/browser-styles.d.ts.map +1 -0
  676. package/dist/5-visual-kit/browser-styles.js +52 -0
  677. package/dist/5-visual-kit/device-bezel.d.ts +84 -0
  678. package/dist/5-visual-kit/device-bezel.d.ts.map +1 -0
  679. package/dist/5-visual-kit/device-bezel.js +56 -0
  680. package/dist/5-visual-kit/instagram-frame.d.ts +8 -0
  681. package/dist/5-visual-kit/instagram-frame.d.ts.map +1 -0
  682. package/dist/5-visual-kit/instagram-frame.js +13 -0
  683. package/dist/5-visual-kit/instagram.d.ts +18 -0
  684. package/dist/5-visual-kit/instagram.d.ts.map +1 -0
  685. package/dist/5-visual-kit/instagram.js +39 -0
  686. package/dist/5-visual-kit/mobile-chrome.d.ts +4 -0
  687. package/dist/5-visual-kit/mobile-chrome.d.ts.map +1 -0
  688. package/dist/5-visual-kit/mobile-chrome.js +24 -0
  689. package/dist/5-visual-kit/native-icon-paths.d.ts +146 -0
  690. package/dist/5-visual-kit/native-icon-paths.d.ts.map +1 -0
  691. package/dist/5-visual-kit/native-icon-paths.js +145 -0
  692. package/dist/5-visual-kit/window.d.ts +51 -0
  693. package/dist/5-visual-kit/window.d.ts.map +1 -0
  694. package/dist/5-visual-kit/window.js +20 -0
  695. package/dist/browser-icons-BFbS1tIx.js +56 -0
  696. package/dist/browser-icons-BFbS1tIx.js.map +1 -0
  697. package/dist/browser-icons-CT8qU77Z.js +48 -0
  698. package/dist/browser-icons-CT8qU77Z.js.map +1 -0
  699. package/dist/components.d.ts +1 -0
  700. package/dist/components.d.ts.map +1 -1
  701. package/dist/components.js +1 -0
  702. package/dist/design-system-1.bundle.js +5514 -2077
  703. package/dist/design-system-1.bundle.js.map +1 -1
  704. package/dist/design-system-1.bundle.min.js +7026 -4628
  705. package/dist/design-system-1.bundle.min.js.map +1 -1
  706. package/dist/design-system-1.css +1 -1
  707. package/dist/feedback.js +197 -167
  708. package/dist/feedback.js.map +1 -1
  709. package/dist/{icons-extra-CRxxWFjX.js → icons-extra-BMPvmQPI.js} +25 -4
  710. package/dist/icons-extra-BMPvmQPI.js.map +1 -0
  711. package/dist/{icons-extra-H5pqCM_R.js → icons-extra-BfYOw-cR.js} +83 -5
  712. package/dist/icons-extra-BfYOw-cR.js.map +1 -0
  713. package/dist/index.d.ts +12 -1
  714. package/dist/index.d.ts.map +1 -1
  715. package/dist/index.js +11 -1
  716. package/dist/instagram-CKofs55A.js +50 -0
  717. package/dist/instagram-CKofs55A.js.map +1 -0
  718. package/dist/instagram-CcYf5oiM.js +48 -0
  719. package/dist/instagram-CcYf5oiM.js.map +1 -0
  720. package/dist/lit-Ce_uWYM4.js +612 -0
  721. package/dist/lit-Ce_uWYM4.js.map +1 -0
  722. package/dist/lit-DGUVm1Ce.js +557 -0
  723. package/dist/lit-DGUVm1Ce.js.map +1 -0
  724. package/dist/native-icon-paths-CB9evXBM.js +93 -0
  725. package/dist/native-icon-paths-CB9evXBM.js.map +1 -0
  726. package/dist/native-icon-paths-zay-3g_n.js +150 -0
  727. package/dist/native-icon-paths-zay-3g_n.js.map +1 -0
  728. package/dist/react/avatar.d.ts +1 -1
  729. package/dist/react/choice.d.ts +4 -0
  730. package/dist/react/choice.d.ts.map +1 -1
  731. package/dist/react/choice.js +2 -2
  732. package/dist/react/context.d.ts +19 -4
  733. package/dist/react/context.d.ts.map +1 -1
  734. package/dist/react/context.js +4 -4
  735. package/dist/react/empty.d.ts +2 -2
  736. package/dist/react/empty.d.ts.map +1 -1
  737. package/dist/react/empty.js +1 -1
  738. package/dist/react/footer.d.ts +5 -5
  739. package/dist/react/footer.d.ts.map +1 -1
  740. package/dist/react/footer.js +2 -2
  741. package/dist/react/header.d.ts +2 -2
  742. package/dist/react/header.d.ts.map +1 -1
  743. package/dist/react/message.d.ts +4 -0
  744. package/dist/react/message.d.ts.map +1 -1
  745. package/dist/react/message.js +2 -2
  746. package/dist/react/number.d.ts +53 -0
  747. package/dist/react/number.d.ts.map +1 -0
  748. package/dist/react/number.js +25 -0
  749. package/dist/react/page.d.ts +1 -1
  750. package/dist/react/sidebar.d.ts +4 -0
  751. package/dist/react/sidebar.d.ts.map +1 -1
  752. package/dist/react/sidebar.js +2 -2
  753. package/dist/react/table-of-contents.d.ts +19 -0
  754. package/dist/react/table-of-contents.d.ts.map +1 -0
  755. package/dist/react/table-of-contents.js +28 -0
  756. package/dist/{shared-words-CdMDVtXx.js → shared-words-C5cjxMjZ.js} +151 -16
  757. package/dist/shared-words-C5cjxMjZ.js.map +1 -0
  758. package/dist/{shared-words-BtRee8xR.js → shared-words-Cdm7xd-_.js} +163 -28
  759. package/dist/shared-words-Cdm7xd-_.js.map +1 -0
  760. package/package.json +23 -12
  761. package/DS1/3-unit/ds-calendar-large.ts +0 -353
  762. package/DS1/3-unit/styles/ds-calendar-large.css +0 -178
  763. package/dist/3-unit/ds-calendar-large.d.ts +0 -142
  764. package/dist/3-unit/ds-calendar-large.d.ts.map +0 -1
  765. package/dist/3-unit/ds-calendar-large.js +0 -308
  766. package/dist/icons-extra-CRxxWFjX.js.map +0 -1
  767. package/dist/icons-extra-H5pqCM_R.js.map +0 -1
  768. package/dist/shared-words-BtRee8xR.js.map +0 -1
  769. package/dist/shared-words-CdMDVtXx.js.map +0 -1
@@ -4,13 +4,19 @@
4
4
  * A site footer, as plain classes on native elements.
5
5
  *
6
6
  * The brand and its line at the start, twelve squares wide; the columns of
7
- * links beside it, eight squares each, two squares apart; then, two squares
8
- * below, the legal line at the start and the preferences (language and theme,
9
- * as `ds-cycle` or native buttons) at the end. Every line is one square, the
10
- * column headings in the title grey, the links in the text's ink with a faint
11
- * hairline under the pointer. A hairline runs along its top. Columns that do
12
- * not fit beside the brand go below it, and on a narrow screen everything
13
- * stands in one column. The `ds-footer` element draws the same parts from data.
7
+ * links beside it, eight squares each (or the whole squares a column names in
8
+ * `--ds-footer-column-width`), two squares apart; then, two squares below, the
9
+ * legal line at the start, the policies under it as secondary buttons, and the
10
+ * preferences (language and theme, as `ds-cycle` or native buttons) at the
11
+ * end. Every line is one square, the column headings in the title grey, the
12
+ * links in the text's ink with a faint hairline under the pointer. A column of
13
+ * contact lines mixes words alone (`<span>`) with links: its links, and a
14
+ * heading that is a link, are underlined as `.ds-link` is. A stacked column
15
+ * (`--stack`) draws its icon links as round marks one control high, one a
16
+ * line, one square wide at the end of the row. A hairline runs along its top.
17
+ * Columns that do not fit beside the brand go below it, and on a narrow screen
18
+ * everything stands in one column. The `ds-footer` element draws the same
19
+ * parts from data.
14
20
  *
15
21
  * ds-footer the block, a <footer>
16
22
  * ds-footer__brand the mark and its line
@@ -18,13 +24,19 @@
18
24
  * ds-footer__tagline a line about the site, muted
19
25
  * ds-footer__columns the columns, a <nav> or <div>
20
26
  * ds-footer__column one column: a heading and its links
21
- * ds-footer__heading the column's heading, one line in the title grey
22
- * ds-footer__links the links, a <ul> with one link per <li>
27
+ * ds-footer__column--stack a column of round marks, one square wide at the row's end
28
+ * ds-footer__heading the column's heading, one line in the title grey, or an <a> in it
29
+ * ds-footer__icons a column's icon links, a row of marks (a stack in --stack)
30
+ * ds-footer__links the lines, a <ul> with one <a> or <span> per <li>
23
31
  * ds-footer__base the last row, two squares below
24
32
  * ds-footer__legal in it, the copyright and legal line, muted
33
+ * ds-footer__policies under it, links as secondary buttons (a.ds-button.ds-button--secondary)
25
34
  * ds-footer__preferences in it, the language and theme controls, at its end
26
35
  *
27
- * Tokens: `--ds-footer-line` (the hairline along the top).
36
+ * Tokens: `--ds-footer-line` (the hairline along the top),
37
+ * `--ds-footer-column-width` (a column's width in squares, 8),
38
+ * `--ds-footer-mark-background` and `--ds-footer-mark-color` (a round mark's
39
+ * disc and glyph: the ink and the paper).
28
40
  */
29
41
 
30
42
  .ds-footer {
@@ -96,7 +108,7 @@
96
108
 
97
109
  .ds-footer__column {
98
110
  display: flex;
99
- flex: 0 0 calc(8 * var(--ds-unit));
111
+ flex: 0 0 calc(var(--ds-footer-column-width, 8) * var(--ds-unit));
100
112
  flex-direction: column;
101
113
  max-width: 100%;
102
114
  min-width: 0;
@@ -116,7 +128,8 @@
116
128
  padding: 0;
117
129
  }
118
130
 
119
- .ds-footer__links a {
131
+ .ds-footer__links > li > *,
132
+ .ds-footer__heading > a {
120
133
  display: inline-block;
121
134
  max-width: 100%;
122
135
  overflow: hidden;
@@ -124,36 +137,146 @@
124
137
  text-decoration-line: underline;
125
138
  text-decoration-thickness: 1px;
126
139
  text-decoration-color: transparent;
127
- text-overflow: ellipsis;
140
+ text-overflow: clip;
128
141
  text-underline-offset: calc(2px * var(--ds-sf));
129
142
  vertical-align: top;
130
143
  white-space: nowrap;
131
144
  }
132
145
 
146
+ /* A cut line fades over its last square, never an ellipsis (0-face/cut-fade.ts marks it). */
147
+ :is(.ds-footer__links > li > *, .ds-footer__heading > a)[data-cut="end"] {
148
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--ds-unit)), transparent);
149
+ }
150
+ :is(.ds-footer__links > li > *, .ds-footer__heading > a)[data-cut="end"]:dir(rtl) {
151
+ mask-image: linear-gradient(to left, #000 calc(100% - var(--ds-unit)), transparent);
152
+ }
153
+
133
154
  .ds-footer__links a:hover {
134
155
  text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
135
156
  }
136
157
 
158
+ /* Among words alone (a contact column) a link, and a heading that is a link, is
159
+ underlined as .ds-link is: the text's ink, a hairline 40% of it, full under the pointer. */
160
+ .ds-footer .ds-footer__heading > a,
161
+ .ds-footer__links:has(> li > :not(a)) a {
162
+ color: var(--ds-text-color);
163
+ text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
164
+ }
165
+
166
+ :is(.ds-footer__heading > a, .ds-footer__links:has(> li > :not(a)) a):hover {
167
+ text-decoration-color: currentColor;
168
+ }
169
+
170
+ /* A column's icon links (a brand's marks: Instagram, Facebook, LinkedIn) stand first, in a row of
171
+ their own one square high, each mark a whole square, half a square apart, named by its label. */
172
+ .ds-footer .ds-footer__icons {
173
+ display: flex;
174
+ flex-wrap: wrap;
175
+ gap: 0 calc(var(--ds-unit) / 2);
176
+ margin: 0;
177
+ padding: 0;
178
+ list-style: none;
179
+ }
180
+
181
+ .ds-footer__icons li {
182
+ margin: 0;
183
+ padding: 0;
184
+ }
185
+
186
+ .ds-footer__icons a {
187
+ display: flex;
188
+ align-items: flex-end;
189
+ height: var(--ds-unit);
190
+ color: inherit;
191
+ }
192
+
193
+ .ds-footer__icons .ds-icon {
194
+ --ds-icon-size: 20px;
195
+ }
196
+
197
+ .ds-footer__icons a:hover {
198
+ color: var(--ds-text-color-muted);
199
+ }
200
+
201
+ /* A stacked column: its marks one a line at the end of the row, each a round
202
+ disc one control high in the ink on the sixteen of its square, the glyph in
203
+ the paper's colour, flush with the square's start. */
204
+ .ds-footer .ds-footer__column--stack {
205
+ flex: 0 0 var(--ds-unit);
206
+ margin-inline-start: auto;
207
+ }
208
+
209
+ .ds-footer__column--stack .ds-footer__icons {
210
+ flex-direction: column;
211
+ flex-wrap: nowrap;
212
+ }
213
+
214
+ .ds-footer__column--stack .ds-footer__icons li {
215
+ display: flex;
216
+ align-items: flex-end;
217
+ height: var(--ds-unit);
218
+ }
219
+
220
+ .ds-footer__column--stack .ds-footer__icons a {
221
+ display: grid;
222
+ place-items: center;
223
+ width: var(--ds-control-height);
224
+ height: var(--ds-control-height);
225
+ border-radius: 50%;
226
+ corner-shape: round;
227
+ background: var(--ds-footer-mark-background, var(--ds-text-color));
228
+ color: var(--ds-footer-mark-color, light-dark(var(--ds-white), var(--ds-black)));
229
+ }
230
+
231
+ .ds-footer__column--stack .ds-footer__icons .ds-icon {
232
+ --ds-icon-size: 14px;
233
+ }
234
+
235
+ .ds-footer__column--stack .ds-footer__icons a:hover {
236
+ background: var(--ds-text-color-muted);
237
+ color: var(--ds-footer-mark-color, light-dark(var(--ds-white), var(--ds-black)));
238
+ }
239
+
137
240
  .ds-footer__links a[aria-current]:not([aria-current="false"]) {
138
241
  text-decoration-color: currentColor;
139
242
  }
140
243
 
141
- :is(.ds-footer__links a, .ds-footer__mark):focus-visible {
244
+ :is(.ds-footer__links a, .ds-footer__heading a, .ds-footer__icons a, .ds-footer__mark):focus-visible {
142
245
  outline: 2px solid var(--ds-focus-ring);
143
246
  outline-offset: 1px;
144
247
  }
145
248
 
146
249
  /* The last row, two squares below: the legal line at the start, the
147
- preferences at the end; on a narrow screen the preferences go first. */
250
+ policies on the square under it, the preferences at the end; on a narrow
251
+ screen the preferences go first, a square above the legal line. */
148
252
  .ds-footer__base {
149
253
  display: flex;
150
254
  flex: 0 0 100%;
151
255
  flex-wrap: wrap;
152
256
  align-items: flex-start;
153
- gap: var(--ds-unit) calc(2 * var(--ds-unit));
257
+ gap: 0 calc(2 * var(--ds-unit));
154
258
  min-width: 0;
155
259
  }
156
260
 
261
+ .ds-footer .ds-footer__policies {
262
+ display: flex;
263
+ flex: 0 0 100%;
264
+ flex-wrap: wrap;
265
+ order: 1;
266
+ gap: 0 calc(var(--ds-unit) / 2);
267
+ margin: 0;
268
+ padding: 0;
269
+ list-style: none;
270
+ }
271
+
272
+ .ds-footer__policies li {
273
+ display: flex;
274
+ align-items: flex-end;
275
+ height: var(--ds-unit);
276
+ margin: 0;
277
+ padding: 0;
278
+ }
279
+
157
280
  .ds-footer__legal {
158
281
  flex: 1 1 auto;
159
282
  min-width: 0;
@@ -183,4 +306,12 @@
183
306
  order: -1;
184
307
  margin-inline-start: 0;
185
308
  }
309
+
310
+ .ds-footer__preferences:not([hidden]) {
311
+ margin-block-end: var(--ds-unit);
312
+ }
313
+
314
+ .ds-footer .ds-footer__policies {
315
+ flex-basis: auto;
316
+ }
186
317
  }
@@ -0,0 +1,60 @@
1
+ import { measures } from './measures';
2
+
3
+ /** Shared geometry belongs to the foundation, not to a design library's appearance.
4
+ * These are unscaled inputs; device scaling and resolved component metrics stay shared.
5
+ * Rendered constraints still check layout, contrast, labels and font alignment.
6
+ */
7
+ export const FOUNDATION_TOKENS: Readonly<Record<string, string>> = {
8
+ '--ds-1': `${measures.square}px`,
9
+ '--one-unit': `${measures.square}px`,
10
+ '--ds-control-size': `${measures.control}px`,
11
+ '--one-control-height': `${measures.control}px`,
12
+ '--ds-row-size': `${measures.row}px`,
13
+ '--ds-text-leading': `${measures.leading}px`,
14
+ '--ds-08': 'calc(var(--ds-1) * 0.8)',
15
+ '--ds-unit': 'calc(var(--ds-1, 20px) * var(--ds-sf, 1))',
16
+ '--ds-control-height': 'calc(var(--ds-control-size, var(--ds-08, 16px)) * var(--ds-sf, 1))',
17
+ '--ds-row-height': 'calc(var(--ds-row-size, var(--ds-1, 20px)) * var(--ds-sf, 1))',
18
+ '--ds-type-lineheight-default': 'calc(var(--ds-text-leading, 16px) * var(--ds-sf, 1))',
19
+ };
20
+
21
+ /** The squares a design may stand on: the default 20px, a finer 10px for tuning, or a coarser 30px. */
22
+ export const SUPPORTED_UNITS = [10, measures.square, 30] as const;
23
+ /** The finest supported square: rows stand on whole multiples of it. */
24
+ const finest = Math.min(...SUPPORTED_UNITS);
25
+ /** A control is its row less the spare four, as the default 16px control sits in its 20px row. */
26
+ const spare = measures.square - measures.control;
27
+
28
+ const onTens = (px: number) => px > 0 && px % finest === 0;
29
+ /** A control fills whole squares, or stands in them less the spare four. */
30
+ const controlOnTens = (px: number) => px >= measures.control && (onTens(px) || onTens(px + spare));
31
+ /** A line of text's box keeps to the spare four, from the default 16px up. */
32
+ const leadingOnFours = (px: number) => px >= measures.leading && px % spare === 0;
33
+
34
+ /** The geometry inputs a design may set within the foundation, with the values they accept. */
35
+ const SCALES: Readonly<Record<string, { allows: (px: number) => boolean; words: string }>> = {
36
+ '--ds-1': { allows: (px) => (SUPPORTED_UNITS as readonly number[]).includes(px), words: `one of ${SUPPORTED_UNITS.join(', ')}px` },
37
+ '--one-unit': { allows: (px) => (SUPPORTED_UNITS as readonly number[]).includes(px), words: `one of ${SUPPORTED_UNITS.join(', ')}px` },
38
+ '--ds-row-size': { allows: onTens, words: `a whole number of ${finest}px squares` },
39
+ '--ds-control-size': { allows: controlOnTens, words: `whole ${finest}px squares, or those less ${spare}px, ${measures.control}px or more` },
40
+ '--one-control-height': { allows: controlOnTens, words: `whole ${finest}px squares, or those less ${spare}px, ${measures.control}px or more` },
41
+ '--ds-text-leading': { allows: leadingOnFours, words: `a multiple of ${spare}px, ${measures.leading}px or more` },
42
+ };
43
+
44
+ /** A foundation input a design may change within its supported scales, rather than one fixed. */
45
+ export const foundationScale = (name: string) => name in SCALES;
46
+
47
+ /** A design can repeat a foundation default or choose a supported scale; anything else requires a foundation release. */
48
+ export function foundationTokenIssue(name: string, value: string): string | undefined {
49
+ const expected = FOUNDATION_TOKENS[name];
50
+ if (!expected) return;
51
+ if (value.replace(/\s/g, '') === expected.replace(/\s/g, '')) return;
52
+ // The published compatibility bridge derives these inputs from protected library tokens.
53
+ if ((name === '--ds-1' && value.trim() === 'var(--one-unit)') ||
54
+ (name === '--ds-control-size' && value.trim() === 'var(--one-control-height)')) return;
55
+ const literal = /^([0-9]+(?:\.[0-9]+)?)px$/i.exec(value.trim());
56
+ const scale = SCALES[name];
57
+ if (literal && (scale ? scale.allows(Number(literal[1])) : Number(literal[1]) === Number.parseFloat(expected))) return;
58
+ if (scale) return `${name} belongs to the shared foundation and must be ${scale.words}. Change colours, fonts and appearance within its constraints.`;
59
+ return `${name} belongs to the shared foundation and must stay ${expected}. Change colours, fonts and appearance within its constraints.`;
60
+ }
@@ -0,0 +1,35 @@
1
+ /* Product guides: semantic prose beside real, captioned device examples.
2
+ Load after the foundation and before product styles. Device chrome stays
3
+ in ds-device-bezel and ds-window; screenshots and words belong to the app. */
4
+ .ds-guide { --ds-guide-read: calc(32 * var(--ds-unit)); --ds-title-color: var(--ds-text-color-muted); }
5
+ .ds-guide .ds-guide-footer { color: var(--ds-text-color-muted); }
6
+ .ds-guide-illustrated {
7
+ display: grid;
8
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
9
+ align-items: start;
10
+ gap: calc(2 * var(--ds-unit));
11
+ min-width: 0;
12
+ }
13
+ .ds-guide-illustrated--phone {
14
+ grid-template-columns: minmax(0, calc(14 * var(--ds-unit))) minmax(0, var(--ds-guide-read));
15
+ }
16
+ .ds-guide-words { min-width: 0; max-width: var(--ds-guide-read); }
17
+ .ds-guide-example { min-width: 0; margin: 0; }
18
+ .ds-guide-example img { display: block; width: 100%; height: auto; }
19
+ .ds-guide-example figcaption {
20
+ margin-top: var(--ds-unit);
21
+ font-size: calc(12px * var(--ds-sf, 1));
22
+ line-height: var(--ds-unit);
23
+ color: var(--ds-text-color-muted);
24
+ }
25
+ .ds-guide-example-note { display: block; margin-top: calc(var(--ds-unit) / 2); }
26
+ .ds-guide-example--phone { width: calc(14 * var(--ds-unit)); max-width: 100%; }
27
+ .ds-guide .aa-partial { display: inline-block; vertical-align: baseline; max-width: 100%; }
28
+ .ds-guide .aa-partial > ds-button { pointer-events: none; }
29
+ @media (max-width: 1199px) {
30
+ .ds-guide-illustrated:not(.ds-guide-illustrated--phone) { grid-template-columns: minmax(0, 1fr); }
31
+ }
32
+ @media (max-width: 680px) {
33
+ .ds-guide-illustrated--phone { grid-template-columns: minmax(0, 1fr); }
34
+ .ds-guide-example--phone { position: static; margin-inline: auto; }
35
+ }
@@ -5,8 +5,9 @@
5
5
  * A site header, as plain classes on native elements.
6
6
  *
7
7
  * One row of one square, a square of room around it: the brand at the start
8
- * in twelve squares (as a page's navigation column is, so the links stand
9
- * over the work), the navigation two squares after it, the actions at the end. Every link is
8
+ * (at least twelve squares), the navigation in the middle of the row, centred
9
+ * on the page whatever the brand and the actions hold, the actions at the end:
10
+ * three columns, the two outer ones sharing what the middle leaves. Every link is
10
11
  * one square high, a square apart, in the text's ink; the page you are on
11
12
  * (`aria-current="page"`) stands on a hairline of the full ink, the others
12
13
  * show a faint one under the pointer. Below thirty squares of width the
@@ -30,7 +31,8 @@
30
31
  .ds-header {
31
32
  box-sizing: border-box;
32
33
  container-type: inline-size;
33
- display: flex;
34
+ display: grid;
35
+ grid-template-columns: minmax(max-content, 1fr) auto minmax(max-content, 1fr);
34
36
  align-items: center;
35
37
  gap: calc(2 * var(--ds-unit));
36
38
  min-width: 0;
@@ -56,6 +58,8 @@
56
58
 
57
59
  .ds-header__brand {
58
60
  box-sizing: border-box;
61
+ grid-column: 1;
62
+ justify-self: start;
59
63
  display: inline-flex;
60
64
  flex: 0 0 auto;
61
65
  min-width: var(--ds-header-brand, calc(12 * var(--ds-unit)));
@@ -85,17 +89,18 @@
85
89
  padding: 0;
86
90
  }
87
91
 
88
- .ds-header__nav {
89
- flex: 1 1 auto;
92
+ .ds-header > .ds-header__nav {
93
+ grid-column: 2;
94
+ justify-content: center;
90
95
  flex-wrap: wrap;
91
96
  row-gap: 0;
92
97
  }
93
98
 
94
- .ds-header__actions {
95
- flex: 0 0 auto;
99
+ .ds-header > .ds-header__actions {
100
+ grid-column: 3;
101
+ justify-self: end;
96
102
  justify-content: flex-end;
97
103
  gap: calc(var(--ds-unit) / 2);
98
- margin-inline-start: auto;
99
104
  }
100
105
 
101
106
  /* A link in the navigation: the text's ink on a one-square line. */
@@ -128,7 +133,8 @@
128
133
  Two classes, so the button's own display and margin do not undo it. */
129
134
  .ds-header > .ds-header__toggle {
130
135
  display: none;
131
- margin-inline-start: auto;
136
+ grid-column: 3;
137
+ justify-self: end;
132
138
  /* Centred in the last square of the row, where the close button stands too. */
133
139
  margin-inline-end: calc((var(--ds-unit) - var(--ds-control-height)) / 2);
134
140
  }
@@ -163,3 +169,18 @@
163
169
  flex-wrap: wrap;
164
170
  gap: calc(var(--ds-unit) / 2);
165
171
  }
172
+
173
+ /* App title bar: two squares high, one square inset, regular title and a hairline. */
174
+ .ds-header--app {
175
+ height: calc(2 * var(--ds-unit));
176
+ min-height: calc(2 * var(--ds-unit));
177
+ padding: 0 var(--ds-unit);
178
+ gap: var(--ds-unit);
179
+ background: var(--ds-header-paper, var(--background, Canvas));
180
+ box-shadow: inset 0 -1px var(--ds-header-line, var(--ds-border-color));
181
+ }
182
+ .ds-header--app .ds-header__brand {
183
+ min-width: 0;
184
+ font-family: var(--ds-typeface-regular);
185
+ font-weight: var(--ds-type-weight-default);
186
+ }
@@ -0,0 +1,67 @@
1
+ /* Opt-in surface finishes. Load after one.css. Materials paint only their
2
+ * own background: no extra elements, text filters, layout or runtime. */
3
+ :where([data-ds-material="solid"], [data-ds-material="paper"], [data-ds-material="glass"], [data-ds-material="wash"]) {
4
+ color: var(--ds-material-ink, var(--ds-text-color));
5
+ background-color: var(--ds-material-base, var(--ds-paper));
6
+ background-image: none;
7
+ background-repeat: repeat;
8
+ background-size: auto;
9
+ -webkit-backdrop-filter: none;
10
+ backdrop-filter: none;
11
+ }
12
+
13
+ :where([data-ds-material="paper"]) {
14
+ background-color: color-mix(in srgb, var(--ds-material-base, var(--ds-paper)) 97%, var(--ds-orange));
15
+ /* paper-tile:start */
16
+ background-image: url("data:image/png;base64,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");
17
+ /* paper-tile:end */
18
+ background-size: calc(128px * var(--ds-sf, 1)) calc(128px * var(--ds-sf, 1));
19
+ }
20
+
21
+ :where([data-ds-material="wash"]) {
22
+ background-color: color-mix(in srgb, var(--ds-material-base, var(--ds-paper)) 92%, var(--ds-material-tint, var(--ds-sharp-blue)));
23
+ background-image: linear-gradient(180deg, color-mix(in srgb, var(--ds-material-tint, var(--ds-sharp-blue)) 6%, transparent), transparent);
24
+ }
25
+
26
+ /* Opaque unless blur is supported. Keep blur small and constant; never animate
27
+ * it or stack it. Tint leaves text legible over a changing backdrop. */
28
+ @supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
29
+ :where([data-ds-material="glass"]) {
30
+ background-color: color-mix(in srgb, var(--ds-material-base, var(--ds-paper)) 88%, transparent);
31
+ -webkit-backdrop-filter: blur(8px);
32
+ backdrop-filter: blur(8px);
33
+ }
34
+ }
35
+
36
+ /* An inner pane does not add another backdrop pass. */
37
+ :where([data-ds-material="glass"] [data-ds-material="glass"]) {
38
+ background-color: var(--ds-material-base, var(--ds-paper));
39
+ -webkit-backdrop-filter: none;
40
+ backdrop-filter: none;
41
+ }
42
+
43
+ /* A product may disable effects on one surface or on a whole subtree. */
44
+ :where([data-ds-material-effects="off"][data-ds-material], [data-ds-material-effects="off"] [data-ds-material]) {
45
+ background-color: var(--ds-material-base, var(--ds-paper));
46
+ background-image: none;
47
+ -webkit-backdrop-filter: none;
48
+ backdrop-filter: none;
49
+ }
50
+
51
+ @media (prefers-reduced-transparency: reduce), (prefers-contrast: more), print {
52
+ :where([data-ds-material]) {
53
+ background-color: var(--ds-material-base, var(--ds-paper));
54
+ background-image: none;
55
+ -webkit-backdrop-filter: none;
56
+ backdrop-filter: none;
57
+ }
58
+ }
59
+
60
+ @media (forced-colors: active) {
61
+ :where([data-ds-material]) {
62
+ color: CanvasText;
63
+ background: Canvas;
64
+ -webkit-backdrop-filter: none;
65
+ backdrop-filter: none;
66
+ }
67
+ }
@@ -158,7 +158,15 @@
158
158
  min-width: 0;
159
159
  white-space: nowrap;
160
160
  overflow: hidden;
161
- text-overflow: ellipsis;
161
+ text-overflow: clip;
162
+ }
163
+
164
+ /* Cut words fade over their last square, never an ellipsis (0-face/cut-fade.ts marks them). */
165
+ :is(.ds-notice--banner, .ds-notice--app) :is(.ds-notice__title, .ds-notice__text)[data-cut="end"] {
166
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--ds-unit)), transparent);
167
+ }
168
+ :is(.ds-notice--banner, .ds-notice--app) :is(.ds-notice__title, .ds-notice__text)[data-cut="end"]:dir(rtl) {
169
+ mask-image: linear-gradient(to left, #000 calc(100% - var(--ds-unit)), transparent);
162
170
  }
163
171
 
164
172
  .ds-notice--banner .ds-notice__text {
@@ -219,7 +227,7 @@
219
227
  grid-column: 2;
220
228
  white-space: nowrap;
221
229
  overflow: hidden;
222
- text-overflow: ellipsis;
230
+ text-overflow: clip;
223
231
  }
224
232
 
225
233
  .ds-notice--app .ds-notice__title { grid-row: 1; }
@@ -1,4 +1,4 @@
1
- /* version 0.3.0-alpha.28 */
1
+ /* version 0.3.0 */
2
2
 
3
3
  @import "./grid.css";
4
4
  @import "./component-tokens.css";
@@ -246,7 +246,7 @@ body {
246
246
  }
247
247
 
248
248
  .ds-input::placeholder {
249
- color: var(--base-darker-grey);
249
+ color: var(--ds-input-placeholder-color, var(--ds-text-color-muted));
250
250
  }
251
251
 
252
252
  .ds-card {
@@ -431,8 +431,7 @@ body {
431
431
  }
432
432
 
433
433
  .header.dragging {
434
- outline: calc(var(--outline-stroke) * var(--sf)) solid var(--black);
435
- outline-offset: calc(var(--outline-stroke-offset) * var(--sf));
434
+ outline: calc(1px * var(--sf)) solid var(--black);
436
435
  background-color: var(--white);
437
436
  }
438
437
 
@@ -448,7 +447,7 @@ body {
448
447
  margin-right: var(--margin-correction);
449
448
  outline: var(--outline-stroke);
450
449
  background-color: light-dark(var(--white), var(--slate-dark));
451
- color: var(--text-color-primary);
450
+ color: var(--text-color);
452
451
  }
453
452
 
454
453
  .mobile .card {
@@ -469,7 +468,7 @@ body {
469
468
  z-index: 99;
470
469
  margin-bottom: 2px;
471
470
  padding-left: calc(3px * var(--sf));
472
- color: var(--text-color-primary);
471
+ color: var(--text-color);
473
472
  outline: var(--outline-stroke);
474
473
  background-color: transparent;
475
474
  }
@@ -505,10 +504,18 @@ body {
505
504
  width: var(--item-width);
506
505
  padding-left: calc(5px * var(--sf));
507
506
  overflow: hidden;
508
- text-overflow: ellipsis;
507
+ text-overflow: clip;
509
508
  white-space: nowrap;
510
509
  }
511
510
 
511
+ /* Cut words fade over the last square, never an ellipsis (0-face/cut-fade.ts marks them). */
512
+ .item-text[data-cut="end"] {
513
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--ds-unit)), transparent);
514
+ }
515
+ .item-text[data-cut="end"]:dir(rtl) {
516
+ mask-image: linear-gradient(to left, #000 calc(100% - var(--ds-unit)), transparent);
517
+ }
518
+
512
519
  .grouped-item {
513
520
  width: var(--item-width);
514
521
  background-color: transparent;
@@ -238,7 +238,15 @@
238
238
  padding-inline-end: calc(4px * var(--ds-sf, 1));
239
239
  overflow: hidden;
240
240
  white-space: nowrap;
241
- text-overflow: ellipsis;
241
+ text-overflow: clip;
242
+ }
243
+
244
+ /* A cut step name fades over its last square, never an ellipsis (0-face/cut-fade.ts marks it). */
245
+ .ds-progress__label[data-cut="end"] {
246
+ mask-image: linear-gradient(to right, #000 calc(100% - var(--ds-unit)), transparent);
247
+ }
248
+ .ds-progress__label[data-cut="end"]:dir(rtl) {
249
+ mask-image: linear-gradient(to left, #000 calc(100% - var(--ds-unit)), transparent);
242
250
  }
243
251
 
244
252
  .ds-progress__step--current .ds-progress__label {