@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.
- package/DS1/0-face/button-label.ts +28 -0
- package/DS1/0-face/calendar.ts +6 -4
- package/DS1/0-face/carousel.ts +70 -0
- package/DS1/0-face/constraint-panel.ts +422 -0
- package/DS1/0-face/constraint-site.ts +200 -0
- package/DS1/0-face/constraints.ts +281 -0
- package/DS1/0-face/copy-text.ts +1 -1
- package/DS1/0-face/cut-fade.ts +312 -0
- package/DS1/0-face/define.ts +30 -2
- package/DS1/0-face/face-correction.ts +96 -0
- package/DS1/0-face/failures.ts +32 -0
- package/DS1/0-face/feedback-overlays.ts +5 -3
- package/DS1/0-face/feedback.ts +3 -0
- package/DS1/0-face/focus-vision.swift +31 -0
- package/DS1/0-face/focus.ts +181 -0
- package/DS1/0-face/google-face-metrics.json +102 -0
- package/DS1/0-face/grid.ts +61 -4
- package/DS1/0-face/i18n.ts +36 -18
- package/DS1/0-face/layout-inspector.ts +124 -98
- package/DS1/0-face/preference-options.ts +4 -0
- package/DS1/0-face/scaling.ts +21 -3
- package/DS1/0-face/shape.ts +43 -0
- package/DS1/0-face/text-contrast.ts +164 -0
- package/DS1/0-face/theme-bootstrap.js +43 -0
- package/DS1/0-face/toast-queue.ts +7 -1
- package/DS1/0-face/translations/da.json +10 -1
- package/DS1/0-face/translations/de.json +10 -1
- package/DS1/0-face/translations/en.json +10 -1
- package/DS1/0-face/translations/es.json +10 -1
- package/DS1/0-face/translations/fi.json +10 -1
- package/DS1/0-face/translations/fr.json +10 -1
- package/DS1/0-face/translations/is.json +10 -1
- package/DS1/0-face/translations/it.json +10 -1
- package/DS1/0-face/translations/ja.json +10 -1
- package/DS1/0-face/translations/ko.json +10 -1
- package/DS1/0-face/translations/nb.json +10 -1
- package/DS1/0-face/translations/pt-BR.json +10 -1
- package/DS1/0-face/translations/pt.json +10 -1
- package/DS1/0-face/translations/sv.json +10 -1
- package/DS1/0-face/translations/zh.json +10 -1
- package/DS1/0-face/word-wrap.ts +113 -0
- package/DS1/1-root/card.css +47 -20
- package/DS1/1-root/carousel.css +7 -0
- package/DS1/1-root/cjk.css +1 -1
- package/DS1/1-root/component-tokens.css +3 -2
- package/DS1/1-root/context.css +44 -6
- package/DS1/1-root/controls.css +99 -8
- package/DS1/1-root/document.css +9 -1
- package/DS1/1-root/empty.css +46 -5
- package/DS1/1-root/figures.css +50 -3
- package/DS1/1-root/fonts.css +1 -1
- package/DS1/1-root/footer.css +147 -16
- package/DS1/1-root/foundation.ts +60 -0
- package/DS1/1-root/guide.css +35 -0
- package/DS1/1-root/header.css +30 -9
- package/DS1/1-root/material.css +67 -0
- package/DS1/1-root/notice.css +10 -2
- package/DS1/1-root/one.css +14 -7
- package/DS1/1-root/progress.css +9 -1
- package/DS1/1-root/row.css +68 -2
- package/DS1/1-root/table.css +47 -4
- package/DS1/1-root/text.css +26 -0
- package/DS1/2-core/button-split.ts +10 -5
- package/DS1/2-core/chart/chart.css +71 -2
- package/DS1/2-core/chart/grid-chart.ts +2 -1
- package/DS1/2-core/ds-activity.ts +32 -0
- package/DS1/2-core/ds-app-chrome.ts +1 -0
- package/DS1/2-core/ds-avatar.ts +35 -6
- package/DS1/2-core/ds-badge.ts +8 -1
- package/DS1/2-core/ds-button.ts +7 -1
- package/DS1/2-core/ds-chart.ts +184 -49
- package/DS1/2-core/ds-cycle.ts +27 -186
- package/DS1/2-core/ds-device-bezel.ts +1 -0
- package/DS1/2-core/ds-empty.ts +6 -4
- package/DS1/2-core/ds-input.ts +23 -3
- package/DS1/2-core/ds-message.ts +22 -0
- package/DS1/2-core/ds-number.ts +349 -0
- package/DS1/2-core/ds-progress.ts +3 -0
- package/DS1/2-core/ds-radio.ts +3 -0
- package/DS1/2-core/ds-stat.ts +3 -0
- package/DS1/2-core/ds-switch.ts +5 -1
- package/DS1/2-core/ds-tag.ts +9 -2
- package/DS1/2-core/ds-text.ts +7 -0
- package/DS1/2-core/ds-token.ts +3 -0
- package/DS1/2-core/ds-tooltip.ts +17 -2
- package/DS1/2-core/ds-window.ts +1 -0
- package/DS1/2-core/generated/ds-icon-map.ts +47 -5
- package/DS1/2-core/generated/icons-extra.ts +24 -3
- package/DS1/2-core/generated/icons-immediate.ts +3 -3
- package/DS1/2-core/number-expression.ts +64 -0
- package/DS1/2-core/styles/ds-activity.css +16 -0
- package/DS1/2-core/styles/ds-badge.css +4 -1
- package/DS1/2-core/styles/ds-button-host.css +45 -12
- package/DS1/2-core/styles/ds-button-split.css +8 -0
- package/DS1/2-core/styles/ds-button.css +92 -19
- package/DS1/2-core/styles/ds-card.css +6 -0
- package/DS1/2-core/styles/ds-checkbox.css +20 -8
- package/DS1/2-core/styles/ds-image.css +2 -1
- package/DS1/2-core/styles/ds-input.css +37 -4
- package/DS1/2-core/styles/ds-number.css +127 -0
- package/DS1/2-core/styles/ds-radio.css +4 -1
- package/DS1/2-core/styles/ds-switch.css +34 -4
- package/DS1/2-core/styles/ds-tag.css +32 -5
- package/DS1/2-core/styles/ds-text.css +13 -4
- package/DS1/2-core/styles/ds-token.css +4 -1
- package/DS1/2-core/styles/ds-tooltip.css +13 -7
- package/DS1/3-unit/calendar-base.ts +5 -2
- package/DS1/3-unit/ds-calendar.ts +711 -37
- package/DS1/3-unit/ds-carousel.ts +13 -1
- package/DS1/3-unit/ds-context.ts +40 -2
- package/DS1/3-unit/ds-form.ts +45 -10
- package/DS1/3-unit/ds-list.ts +31 -3
- package/DS1/3-unit/ds-matrix.ts +3 -0
- package/DS1/3-unit/ds-menu.ts +9 -5
- package/DS1/3-unit/ds-row.ts +17 -2
- package/DS1/3-unit/ds-select.ts +1 -1
- package/DS1/3-unit/ds-sidebar.ts +18 -3
- package/DS1/3-unit/ds-table-of-contents.ts +166 -0
- package/DS1/3-unit/ds-tabs.ts +40 -2
- package/DS1/3-unit/styles/ds-calendar.css +356 -42
- package/DS1/3-unit/styles/ds-context.css +38 -0
- package/DS1/3-unit/styles/ds-list.css +26 -1
- package/DS1/3-unit/styles/ds-matrix.css +4 -1
- package/DS1/3-unit/styles/ds-row.css +39 -0
- package/DS1/3-unit/styles/ds-select.css +22 -12
- package/DS1/3-unit/styles/ds-sidebar.css +16 -2
- package/DS1/3-unit/styles/ds-table-of-contents.css +40 -0
- package/DS1/3-unit/styles/ds-tabs.css +95 -0
- package/DS1/4-page/ds-document.ts +3 -0
- package/DS1/4-page/ds-footer.ts +93 -18
- package/DS1/4-page/ds-header.ts +5 -1
- package/DS1/4-page/ds-overlay.ts +8 -3
- package/DS1/4-page/ds-page.ts +22 -1
- package/DS1/4-page/email.ts +7 -4
- package/DS1/4-page/styles/ds-container.css +0 -1
- package/DS1/4-page/styles/ds-overlay.css +7 -0
- package/DS1/4-page/styles/ds-page.css +10 -0
- package/DS1/5-visual-kit/app-chrome.ts +129 -0
- package/DS1/5-visual-kit/bezels.ts +394 -0
- package/DS1/5-visual-kit/browser-icons.LICENSE +53 -0
- package/DS1/5-visual-kit/browser-icons.ts +47 -0
- package/DS1/5-visual-kit/browser-styles.ts +53 -0
- package/DS1/5-visual-kit/device-bezel.ts +55 -0
- package/DS1/5-visual-kit/instagram-frame.ts +15 -0
- package/DS1/5-visual-kit/instagram.ts +41 -0
- package/DS1/5-visual-kit/mobile-chrome.ts +25 -0
- package/DS1/5-visual-kit/native-icon-paths.ts +145 -0
- package/DS1/5-visual-kit/window.ts +22 -0
- package/DS1/components.ts +1 -0
- package/DS1/index.ts +14 -1
- package/DS1/react/choice.ts +4 -2
- package/DS1/react/context.ts +11 -6
- package/DS1/react/empty.ts +2 -2
- package/DS1/react/footer.ts +5 -5
- package/DS1/react/header.ts +1 -1
- package/DS1/react/message.ts +4 -2
- package/DS1/react/number.ts +53 -0
- package/DS1/react/sidebar.ts +4 -2
- package/DS1/react/table-of-contents.ts +28 -0
- package/DS1/x-flag/LICENSE.md +26 -0
- package/DS1/x-flag/ac.svg +1 -0
- package/DS1/x-flag/ad.svg +1 -0
- package/DS1/x-flag/ae.svg +1 -0
- package/DS1/x-flag/af.svg +1 -0
- package/DS1/x-flag/ag.svg +1 -0
- package/DS1/x-flag/ai.svg +1 -0
- package/DS1/x-flag/al.svg +1 -0
- package/DS1/x-flag/am.svg +1 -0
- package/DS1/x-flag/ao.svg +1 -0
- package/DS1/x-flag/aq.svg +1 -0
- package/DS1/x-flag/ar.svg +1 -0
- package/DS1/x-flag/as.svg +1 -0
- package/DS1/x-flag/at.svg +1 -0
- package/DS1/x-flag/au.svg +1 -0
- package/DS1/x-flag/aw.svg +1 -0
- package/DS1/x-flag/ax.svg +1 -0
- package/DS1/x-flag/az.svg +1 -0
- package/DS1/x-flag/ba.svg +1 -0
- package/DS1/x-flag/bb.svg +1 -0
- package/DS1/x-flag/bd.svg +1 -0
- package/DS1/x-flag/be.svg +1 -0
- package/DS1/x-flag/bf.svg +1 -0
- package/DS1/x-flag/bg.svg +1 -0
- package/DS1/x-flag/bh.svg +1 -0
- package/DS1/x-flag/bi.svg +1 -0
- package/DS1/x-flag/bj.svg +1 -0
- package/DS1/x-flag/bl.svg +1 -0
- package/DS1/x-flag/bm.svg +1 -0
- package/DS1/x-flag/bn.svg +1 -0
- package/DS1/x-flag/bo.svg +1 -0
- package/DS1/x-flag/bq-bo.svg +1 -0
- package/DS1/x-flag/bq-sa.svg +1 -0
- package/DS1/x-flag/bq-se.svg +1 -0
- package/DS1/x-flag/bq.svg +1 -0
- package/DS1/x-flag/br.svg +1 -0
- package/DS1/x-flag/bs.svg +1 -0
- package/DS1/x-flag/bt.svg +1 -0
- package/DS1/x-flag/bv.svg +1 -0
- package/DS1/x-flag/bw.svg +1 -0
- package/DS1/x-flag/by.svg +1 -0
- package/DS1/x-flag/bz.svg +1 -0
- package/DS1/x-flag/ca.svg +1 -0
- package/DS1/x-flag/cc.svg +1 -0
- package/DS1/x-flag/cd.svg +1 -0
- package/DS1/x-flag/cf.svg +1 -0
- package/DS1/x-flag/cg.svg +1 -0
- package/DS1/x-flag/ch.svg +1 -0
- package/DS1/x-flag/ci.svg +1 -0
- package/DS1/x-flag/ck.svg +1 -0
- package/DS1/x-flag/cl.svg +1 -0
- package/DS1/x-flag/cm.svg +1 -0
- package/DS1/x-flag/cn.svg +1 -0
- package/DS1/x-flag/co.svg +1 -0
- package/DS1/x-flag/cr.svg +1 -0
- package/DS1/x-flag/cu.svg +1 -0
- package/DS1/x-flag/cv.svg +1 -0
- package/DS1/x-flag/cw.svg +1 -0
- package/DS1/x-flag/cx.svg +1 -0
- package/DS1/x-flag/cy.svg +1 -0
- package/DS1/x-flag/cz.svg +1 -0
- package/DS1/x-flag/de.svg +1 -0
- package/DS1/x-flag/dj.svg +1 -0
- package/DS1/x-flag/dk.svg +1 -0
- package/DS1/x-flag/dm.svg +1 -0
- package/DS1/x-flag/do.svg +1 -0
- package/DS1/x-flag/dz.svg +1 -0
- package/DS1/x-flag/ec.svg +1 -0
- package/DS1/x-flag/ee.svg +1 -0
- package/DS1/x-flag/eg.svg +1 -0
- package/DS1/x-flag/eh.svg +1 -0
- package/DS1/x-flag/er.svg +1 -0
- package/DS1/x-flag/es-ct.svg +1 -0
- package/DS1/x-flag/es.svg +1 -0
- package/DS1/x-flag/et.svg +1 -0
- package/DS1/x-flag/eu.svg +1 -0
- package/DS1/x-flag/fi.svg +1 -0
- package/DS1/x-flag/fj.svg +1 -0
- package/DS1/x-flag/fk.svg +1 -0
- package/DS1/x-flag/fm.svg +1 -0
- package/DS1/x-flag/fo.svg +1 -0
- package/DS1/x-flag/fr.svg +1 -0
- package/DS1/x-flag/ga.svg +1 -0
- package/DS1/x-flag/gb-eng.svg +1 -0
- package/DS1/x-flag/gb-nir.svg +1 -0
- package/DS1/x-flag/gb-sct.svg +1 -0
- package/DS1/x-flag/gb-wls.svg +1 -0
- package/DS1/x-flag/gb.svg +1 -0
- package/DS1/x-flag/gd.svg +1 -0
- package/DS1/x-flag/ge.svg +1 -0
- package/DS1/x-flag/gf.svg +1 -0
- package/DS1/x-flag/gg.svg +1 -0
- package/DS1/x-flag/gh.svg +1 -0
- package/DS1/x-flag/gi.svg +1 -0
- package/DS1/x-flag/gl.svg +1 -0
- package/DS1/x-flag/gm.svg +1 -0
- package/DS1/x-flag/gn.svg +1 -0
- package/DS1/x-flag/gp.svg +1 -0
- package/DS1/x-flag/gq.svg +1 -0
- package/DS1/x-flag/gr.svg +1 -0
- package/DS1/x-flag/gs.svg +1 -0
- package/DS1/x-flag/gt.svg +1 -0
- package/DS1/x-flag/gu.svg +1 -0
- package/DS1/x-flag/gw.svg +1 -0
- package/DS1/x-flag/gy.svg +1 -0
- package/DS1/x-flag/hk.svg +1 -0
- package/DS1/x-flag/hm.svg +1 -0
- package/DS1/x-flag/hn.svg +1 -0
- package/DS1/x-flag/hr.svg +1 -0
- package/DS1/x-flag/ht.svg +1 -0
- package/DS1/x-flag/hu.svg +1 -0
- package/DS1/x-flag/ic.svg +1 -0
- package/DS1/x-flag/id.svg +1 -0
- package/DS1/x-flag/ie.svg +1 -0
- package/DS1/x-flag/il.svg +1 -0
- package/DS1/x-flag/im.svg +1 -0
- package/DS1/x-flag/in.svg +1 -0
- package/DS1/x-flag/io.svg +1 -0
- package/DS1/x-flag/iq.svg +1 -0
- package/DS1/x-flag/ir.svg +1 -0
- package/DS1/x-flag/is.svg +1 -0
- package/DS1/x-flag/it.svg +1 -0
- package/DS1/x-flag/je.svg +1 -0
- package/DS1/x-flag/jm.svg +1 -0
- package/DS1/x-flag/jo.svg +1 -0
- package/DS1/x-flag/jp.svg +1 -0
- package/DS1/x-flag/ke.svg +1 -0
- package/DS1/x-flag/kg.svg +1 -0
- package/DS1/x-flag/kh.svg +1 -0
- package/DS1/x-flag/ki.svg +1 -0
- package/DS1/x-flag/km.svg +1 -0
- package/DS1/x-flag/kn.svg +1 -0
- package/DS1/x-flag/kp.svg +1 -0
- package/DS1/x-flag/kr.svg +1 -0
- package/DS1/x-flag/kw.svg +1 -0
- package/DS1/x-flag/ky.svg +1 -0
- package/DS1/x-flag/kz.svg +1 -0
- package/DS1/x-flag/la.svg +1 -0
- package/DS1/x-flag/lb.svg +1 -0
- package/DS1/x-flag/lc.svg +1 -0
- package/DS1/x-flag/li.svg +1 -0
- package/DS1/x-flag/lk.svg +1 -0
- package/DS1/x-flag/lr.svg +1 -0
- package/DS1/x-flag/ls.svg +1 -0
- package/DS1/x-flag/lt.svg +1 -0
- package/DS1/x-flag/lu.svg +1 -0
- package/DS1/x-flag/lv.svg +1 -0
- package/DS1/x-flag/ly.svg +1 -0
- package/DS1/x-flag/ma.svg +1 -0
- package/DS1/x-flag/mc.svg +1 -0
- package/DS1/x-flag/md.svg +1 -0
- package/DS1/x-flag/me.svg +1 -0
- package/DS1/x-flag/mf.svg +1 -0
- package/DS1/x-flag/mg.svg +1 -0
- package/DS1/x-flag/mh.svg +1 -0
- package/DS1/x-flag/mk.svg +1 -0
- package/DS1/x-flag/ml.svg +1 -0
- package/DS1/x-flag/mm.svg +1 -0
- package/DS1/x-flag/mn.svg +1 -0
- package/DS1/x-flag/mo.svg +1 -0
- package/DS1/x-flag/mp.svg +1 -0
- package/DS1/x-flag/mq.svg +1 -0
- package/DS1/x-flag/mr.svg +1 -0
- package/DS1/x-flag/ms.svg +1 -0
- package/DS1/x-flag/mt.svg +1 -0
- package/DS1/x-flag/mu.svg +1 -0
- package/DS1/x-flag/mv.svg +1 -0
- package/DS1/x-flag/mw.svg +1 -0
- package/DS1/x-flag/mx.svg +1 -0
- package/DS1/x-flag/my.svg +1 -0
- package/DS1/x-flag/mz.svg +1 -0
- package/DS1/x-flag/na.svg +1 -0
- package/DS1/x-flag/nc.svg +1 -0
- package/DS1/x-flag/ne.svg +1 -0
- package/DS1/x-flag/nf.svg +1 -0
- package/DS1/x-flag/ng.svg +1 -0
- package/DS1/x-flag/ni.svg +1 -0
- package/DS1/x-flag/nl.svg +1 -0
- package/DS1/x-flag/no.svg +1 -0
- package/DS1/x-flag/np.svg +1 -0
- package/DS1/x-flag/nr.svg +1 -0
- package/DS1/x-flag/nu.svg +1 -0
- package/DS1/x-flag/nz.svg +1 -0
- package/DS1/x-flag/om.svg +1 -0
- package/DS1/x-flag/pa.svg +1 -0
- package/DS1/x-flag/pe.svg +1 -0
- package/DS1/x-flag/pf.svg +1 -0
- package/DS1/x-flag/pg.svg +1 -0
- package/DS1/x-flag/ph.svg +1 -0
- package/DS1/x-flag/pk.svg +1 -0
- package/DS1/x-flag/pl.svg +1 -0
- package/DS1/x-flag/pm.svg +1 -0
- package/DS1/x-flag/pn.svg +1 -0
- package/DS1/x-flag/pr.svg +1 -0
- package/DS1/x-flag/ps.svg +1 -0
- package/DS1/x-flag/pt.svg +1 -0
- package/DS1/x-flag/pw.svg +1 -0
- package/DS1/x-flag/py.svg +1 -0
- package/DS1/x-flag/qa.svg +1 -0
- package/DS1/x-flag/re.svg +1 -0
- package/DS1/x-flag/ro.svg +1 -0
- package/DS1/x-flag/rs.svg +1 -0
- package/DS1/x-flag/ru.svg +1 -0
- package/DS1/x-flag/rw.svg +1 -0
- package/DS1/x-flag/sa.svg +1 -0
- package/DS1/x-flag/sb.svg +1 -0
- package/DS1/x-flag/sc.svg +1 -0
- package/DS1/x-flag/sd.svg +1 -0
- package/DS1/x-flag/se.svg +1 -0
- package/DS1/x-flag/sg.svg +1 -0
- package/DS1/x-flag/sh.svg +1 -0
- package/DS1/x-flag/si.svg +1 -0
- package/DS1/x-flag/sj.svg +1 -0
- package/DS1/x-flag/sk.svg +1 -0
- package/DS1/x-flag/sl.svg +1 -0
- package/DS1/x-flag/sm.svg +1 -0
- package/DS1/x-flag/sn.svg +1 -0
- package/DS1/x-flag/so.svg +1 -0
- package/DS1/x-flag/sr.svg +1 -0
- package/DS1/x-flag/ss.svg +1 -0
- package/DS1/x-flag/st.svg +1 -0
- package/DS1/x-flag/sv.svg +1 -0
- package/DS1/x-flag/sx.svg +1 -0
- package/DS1/x-flag/sy.svg +1 -0
- package/DS1/x-flag/sz.svg +1 -0
- package/DS1/x-flag/ta.svg +1 -0
- package/DS1/x-flag/tc.svg +1 -0
- package/DS1/x-flag/td.svg +1 -0
- package/DS1/x-flag/tf.svg +1 -0
- package/DS1/x-flag/tg.svg +1 -0
- package/DS1/x-flag/th.svg +1 -0
- package/DS1/x-flag/tj.svg +1 -0
- package/DS1/x-flag/tk.svg +1 -0
- package/DS1/x-flag/tl.svg +1 -0
- package/DS1/x-flag/tm.svg +1 -0
- package/DS1/x-flag/tn.svg +1 -0
- package/DS1/x-flag/to.svg +1 -0
- package/DS1/x-flag/tr.svg +1 -0
- package/DS1/x-flag/tt.svg +1 -0
- package/DS1/x-flag/tv.svg +1 -0
- package/DS1/x-flag/tw.svg +1 -0
- package/DS1/x-flag/tz.svg +1 -0
- package/DS1/x-flag/ua.svg +1 -0
- package/DS1/x-flag/ug.svg +1 -0
- package/DS1/x-flag/um.svg +1 -0
- package/DS1/x-flag/us.svg +1 -0
- package/DS1/x-flag/uy.svg +1 -0
- package/DS1/x-flag/uz.svg +1 -0
- package/DS1/x-flag/va.svg +1 -0
- package/DS1/x-flag/vc.svg +1 -0
- package/DS1/x-flag/ve.svg +1 -0
- package/DS1/x-flag/vg.svg +1 -0
- package/DS1/x-flag/vi.svg +1 -0
- package/DS1/x-flag/vn.svg +1 -0
- package/DS1/x-flag/vu.svg +1 -0
- package/DS1/x-flag/wf.svg +1 -0
- package/DS1/x-flag/ws.svg +1 -0
- package/DS1/x-flag/xk.svg +1 -0
- package/DS1/x-flag/ye.svg +1 -0
- package/DS1/x-flag/yt.svg +1 -0
- package/DS1/x-flag/za.svg +1 -0
- package/DS1/x-flag/zm.svg +1 -0
- package/DS1/x-flag/zw.svg +1 -0
- package/DS1/x-icon/android.svg +9 -0
- package/DS1/x-icon/arrange-check.svg +1 -1
- package/DS1/x-icon/arrange-page.svg +1 -1
- package/DS1/x-icon/chrome.svg +7 -0
- package/DS1/x-icon/edge-brand.svg +6 -0
- package/DS1/x-icon/firefox.svg +4 -0
- package/DS1/x-icon/health.svg +3 -0
- package/DS1/x-icon/left.svg +2 -3
- package/DS1/x-icon/linux.svg +1 -0
- package/DS1/x-icon/material.svg +1 -0
- package/DS1/x-icon/milestone-planned.svg +3 -0
- package/DS1/x-icon/milestone.svg +3 -0
- package/DS1/x-icon/more.svg +1 -5
- package/DS1/x-icon/network.svg +3 -0
- package/DS1/x-icon/opera.svg +4 -0
- package/DS1/x-icon/prediction.svg +3 -0
- package/DS1/x-icon/priority-high.svg +3 -0
- package/DS1/x-icon/priority-low.svg +3 -0
- package/DS1/x-icon/priority-medium.svg +3 -0
- package/DS1/x-icon/project.svg +3 -0
- package/DS1/x-icon/redo.svg +2 -2
- package/DS1/x-icon/repeat-small.svg +3 -0
- package/DS1/x-icon/safari.svg +4 -0
- package/DS1/x-icon/scaling.svg +3 -0
- package/DS1/x-icon/tabs.svg +4 -0
- package/DS1/x-icon/windows.svg +5 -0
- package/README.md +3 -3
- package/dist/0-face/button-label.d.ts +5 -0
- package/dist/0-face/button-label.d.ts.map +1 -0
- package/dist/0-face/button-label.js +31 -0
- package/dist/0-face/calendar.d.ts +1 -1
- package/dist/0-face/calendar.d.ts.map +1 -1
- package/dist/0-face/calendar.js +6 -3
- package/dist/0-face/carousel.d.ts +9 -0
- package/dist/0-face/carousel.d.ts.map +1 -1
- package/dist/0-face/carousel.js +80 -0
- package/dist/0-face/constraint-panel.d.ts +43 -0
- package/dist/0-face/constraint-panel.d.ts.map +1 -0
- package/dist/0-face/constraint-panel.js +429 -0
- package/dist/0-face/constraint-site.d.ts +72 -0
- package/dist/0-face/constraint-site.d.ts.map +1 -0
- package/dist/0-face/constraint-site.js +185 -0
- package/dist/0-face/constraints.d.ts +47 -0
- package/dist/0-face/constraints.d.ts.map +1 -0
- package/dist/0-face/constraints.js +247 -0
- package/dist/0-face/copy-text.js +1 -1
- package/dist/0-face/cut-fade.d.ts +112 -0
- package/dist/0-face/cut-fade.d.ts.map +1 -0
- package/dist/0-face/cut-fade.js +274 -0
- package/dist/0-face/define.d.ts.map +1 -1
- package/dist/0-face/define.js +24 -3
- package/dist/0-face/face-correction.d.ts +51 -0
- package/dist/0-face/face-correction.d.ts.map +1 -0
- package/dist/0-face/face-correction.js +80 -0
- package/dist/0-face/failures.d.ts +16 -0
- package/dist/0-face/failures.d.ts.map +1 -0
- package/dist/0-face/failures.js +21 -0
- package/dist/0-face/feedback-overlays.d.ts.map +1 -1
- package/dist/0-face/feedback-overlays.js +5 -3
- package/dist/0-face/feedback.d.ts +2 -0
- package/dist/0-face/feedback.d.ts.map +1 -1
- package/dist/0-face/feedback.js +1 -0
- package/dist/0-face/focus.d.ts +71 -0
- package/dist/0-face/focus.d.ts.map +1 -0
- package/dist/0-face/focus.js +196 -0
- package/dist/0-face/grid.d.ts +11 -1
- package/dist/0-face/grid.d.ts.map +1 -1
- package/dist/0-face/grid.js +90 -4
- package/dist/0-face/i18n.d.ts.map +1 -1
- package/dist/0-face/i18n.js +38 -16
- package/dist/0-face/layout-inspector.d.ts +5 -1
- package/dist/0-face/layout-inspector.d.ts.map +1 -1
- package/dist/0-face/layout-inspector.js +130 -104
- package/dist/0-face/preference-options.d.ts +4 -0
- package/dist/0-face/preference-options.d.ts.map +1 -1
- package/dist/0-face/scaling.d.ts +8 -1
- package/dist/0-face/scaling.d.ts.map +1 -1
- package/dist/0-face/scaling.js +19 -2
- package/dist/0-face/shape.d.ts +35 -0
- package/dist/0-face/shape.d.ts.map +1 -0
- package/dist/0-face/shape.js +23 -0
- package/dist/0-face/text-contrast.d.ts +22 -0
- package/dist/0-face/text-contrast.d.ts.map +1 -0
- package/dist/0-face/text-contrast.js +178 -0
- package/dist/0-face/theme-bootstrap.js +56 -0
- package/dist/0-face/toast-queue.d.ts +4 -0
- package/dist/0-face/toast-queue.d.ts.map +1 -1
- package/dist/0-face/toast-queue.js +4 -1
- package/dist/0-face/translations/da.json +10 -1
- package/dist/0-face/translations/de.json +10 -1
- package/dist/0-face/translations/en.json +10 -1
- package/dist/0-face/translations/es.json +10 -1
- package/dist/0-face/translations/fi.json +10 -1
- package/dist/0-face/translations/fr.json +10 -1
- package/dist/0-face/translations/is.json +10 -1
- package/dist/0-face/translations/it.json +10 -1
- package/dist/0-face/translations/ja.json +10 -1
- package/dist/0-face/translations/ko.json +10 -1
- package/dist/0-face/translations/nb.json +10 -1
- package/dist/0-face/translations/pt-BR.json +10 -1
- package/dist/0-face/translations/pt.json +10 -1
- package/dist/0-face/translations/sv.json +10 -1
- package/dist/0-face/translations/zh.json +10 -1
- package/dist/0-face/word-wrap.d.ts +6 -0
- package/dist/0-face/word-wrap.d.ts.map +1 -0
- package/dist/0-face/word-wrap.js +119 -0
- package/dist/1-root/foundation.d.ts +12 -0
- package/dist/1-root/foundation.d.ts.map +1 -0
- package/dist/1-root/foundation.js +59 -0
- package/dist/2-core/button-split.d.ts +1 -0
- package/dist/2-core/button-split.d.ts.map +1 -1
- package/dist/2-core/button-split.js +9 -4
- package/dist/2-core/chart/grid-chart.d.ts +2 -0
- package/dist/2-core/chart/grid-chart.d.ts.map +1 -1
- package/dist/2-core/chart/grid-chart.js +2 -1
- package/dist/2-core/ds-activity.d.ts +25 -0
- package/dist/2-core/ds-activity.d.ts.map +1 -0
- package/dist/2-core/ds-activity.js +28 -0
- package/dist/2-core/ds-app-chrome.d.ts +2 -0
- package/dist/2-core/ds-app-chrome.d.ts.map +1 -0
- package/dist/2-core/ds-app-chrome.js +1 -0
- package/dist/2-core/ds-avatar.d.ts +7 -0
- package/dist/2-core/ds-avatar.d.ts.map +1 -1
- package/dist/2-core/ds-avatar.js +41 -6
- package/dist/2-core/ds-badge.d.ts +7 -1
- package/dist/2-core/ds-badge.d.ts.map +1 -1
- package/dist/2-core/ds-badge.js +8 -1
- package/dist/2-core/ds-button.d.ts +12 -0
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +4 -0
- package/dist/2-core/ds-chart.d.ts +28 -3
- package/dist/2-core/ds-chart.d.ts.map +1 -1
- package/dist/2-core/ds-chart.js +110 -130
- package/dist/2-core/ds-cycle.d.ts +2 -2
- package/dist/2-core/ds-cycle.d.ts.map +1 -1
- package/dist/2-core/ds-cycle.js +36 -171
- package/dist/2-core/ds-device-bezel.d.ts +2 -0
- package/dist/2-core/ds-device-bezel.d.ts.map +1 -0
- package/dist/2-core/ds-device-bezel.js +1 -0
- package/dist/2-core/ds-empty.d.ts +2 -2
- package/dist/2-core/ds-empty.d.ts.map +1 -1
- package/dist/2-core/ds-empty.js +6 -4
- package/dist/2-core/ds-input.d.ts +7 -0
- package/dist/2-core/ds-input.d.ts.map +1 -1
- package/dist/2-core/ds-input.js +23 -3
- package/dist/2-core/ds-message.d.ts +11 -0
- package/dist/2-core/ds-message.d.ts.map +1 -1
- package/dist/2-core/ds-message.js +18 -0
- package/dist/2-core/ds-number.d.ts +86 -0
- package/dist/2-core/ds-number.d.ts.map +1 -0
- package/dist/2-core/ds-number.js +326 -0
- package/dist/2-core/ds-progress.d.ts +3 -0
- package/dist/2-core/ds-progress.d.ts.map +1 -1
- package/dist/2-core/ds-progress.js +3 -0
- package/dist/2-core/ds-radio.d.ts +3 -0
- package/dist/2-core/ds-radio.d.ts.map +1 -1
- package/dist/2-core/ds-radio.js +10 -1
- package/dist/2-core/ds-stat.d.ts +3 -0
- package/dist/2-core/ds-stat.d.ts.map +1 -1
- package/dist/2-core/ds-stat.js +3 -0
- package/dist/2-core/ds-switch.d.ts +14 -1
- package/dist/2-core/ds-switch.d.ts.map +1 -1
- package/dist/2-core/ds-switch.js +3 -1
- package/dist/2-core/ds-tag.d.ts +8 -1
- package/dist/2-core/ds-tag.d.ts.map +1 -1
- package/dist/2-core/ds-tag.js +12 -2
- package/dist/2-core/ds-text.d.ts +7 -0
- package/dist/2-core/ds-text.d.ts.map +1 -1
- package/dist/2-core/ds-text.js +7 -0
- package/dist/2-core/ds-token.d.ts +3 -0
- package/dist/2-core/ds-token.d.ts.map +1 -1
- package/dist/2-core/ds-token.js +3 -0
- package/dist/2-core/ds-tooltip.d.ts.map +1 -1
- package/dist/2-core/ds-tooltip.js +23 -2
- package/dist/2-core/ds-window.d.ts +2 -0
- package/dist/2-core/ds-window.d.ts.map +1 -0
- package/dist/2-core/ds-window.js +1 -0
- package/dist/2-core/generated/ds-icon-map.d.ts +27 -6
- package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
- package/dist/2-core/generated/ds-icon-map.js +47 -5
- package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
- package/dist/2-core/generated/icons-extra.js +24 -3
- package/dist/2-core/generated/icons-immediate.d.ts +1 -1
- package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
- package/dist/2-core/generated/icons-immediate.js +3 -3
- package/dist/2-core/number-expression.d.ts +12 -0
- package/dist/2-core/number-expression.d.ts.map +1 -0
- package/dist/2-core/number-expression.js +82 -0
- package/dist/3-unit/calendar-base.d.ts +5 -0
- package/dist/3-unit/calendar-base.d.ts.map +1 -1
- package/dist/3-unit/calendar-base.js +3 -2
- package/dist/3-unit/ds-calendar.d.ts +197 -4
- package/dist/3-unit/ds-calendar.d.ts.map +1 -1
- package/dist/3-unit/ds-calendar.js +687 -45
- package/dist/3-unit/ds-carousel.d.ts +3 -0
- package/dist/3-unit/ds-carousel.d.ts.map +1 -1
- package/dist/3-unit/ds-carousel.js +13 -1
- package/dist/3-unit/ds-context.d.ts +18 -1
- package/dist/3-unit/ds-context.d.ts.map +1 -1
- package/dist/3-unit/ds-context.js +37 -1
- package/dist/3-unit/ds-form.d.ts +9 -0
- package/dist/3-unit/ds-form.d.ts.map +1 -1
- package/dist/3-unit/ds-form.js +50 -10
- package/dist/3-unit/ds-list.d.ts +20 -1
- package/dist/3-unit/ds-list.d.ts.map +1 -1
- package/dist/3-unit/ds-list.js +31 -3
- package/dist/3-unit/ds-matrix.d.ts +3 -0
- package/dist/3-unit/ds-matrix.d.ts.map +1 -1
- package/dist/3-unit/ds-matrix.js +3 -0
- package/dist/3-unit/ds-menu.d.ts.map +1 -1
- package/dist/3-unit/ds-menu.js +17 -1
- package/dist/3-unit/ds-row.d.ts +13 -0
- package/dist/3-unit/ds-row.d.ts.map +1 -1
- package/dist/3-unit/ds-row.js +15 -2
- package/dist/3-unit/ds-select.js +1 -1
- package/dist/3-unit/ds-sidebar.d.ts +17 -0
- package/dist/3-unit/ds-sidebar.d.ts.map +1 -1
- package/dist/3-unit/ds-sidebar.js +14 -3
- package/dist/3-unit/ds-table-of-contents.d.ts +68 -0
- package/dist/3-unit/ds-table-of-contents.d.ts.map +1 -0
- package/dist/3-unit/ds-table-of-contents.js +190 -0
- package/dist/3-unit/ds-tabs.d.ts +32 -1
- package/dist/3-unit/ds-tabs.d.ts.map +1 -1
- package/dist/3-unit/ds-tabs.js +39 -1
- package/dist/4-page/ds-document.d.ts +3 -0
- package/dist/4-page/ds-document.d.ts.map +1 -1
- package/dist/4-page/ds-document.js +3 -0
- package/dist/4-page/ds-footer.d.ts +47 -7
- package/dist/4-page/ds-footer.d.ts.map +1 -1
- package/dist/4-page/ds-footer.js +58 -14
- package/dist/4-page/ds-header.d.ts +6 -0
- package/dist/4-page/ds-header.d.ts.map +1 -1
- package/dist/4-page/ds-header.js +4 -1
- package/dist/4-page/ds-overlay.d.ts +2 -2
- package/dist/4-page/ds-overlay.d.ts.map +1 -1
- package/dist/4-page/ds-overlay.js +8 -3
- package/dist/4-page/ds-page.d.ts +12 -0
- package/dist/4-page/ds-page.d.ts.map +1 -1
- package/dist/4-page/ds-page.js +19 -1
- package/dist/4-page/email.d.ts +2 -0
- package/dist/4-page/email.d.ts.map +1 -1
- package/dist/4-page/email.js +5 -4
- package/dist/5-visual-kit/app-chrome.d.ts +98 -0
- package/dist/5-visual-kit/app-chrome.d.ts.map +1 -0
- package/dist/5-visual-kit/app-chrome.js +119 -0
- package/dist/5-visual-kit/bezels.d.ts +30 -0
- package/dist/5-visual-kit/bezels.d.ts.map +1 -0
- package/dist/5-visual-kit/bezels.js +388 -0
- package/dist/5-visual-kit/browser-icons.d.ts +5 -0
- package/dist/5-visual-kit/browser-icons.d.ts.map +1 -0
- package/dist/5-visual-kit/browser-icons.js +51 -0
- package/dist/5-visual-kit/browser-styles.d.ts +3 -0
- package/dist/5-visual-kit/browser-styles.d.ts.map +1 -0
- package/dist/5-visual-kit/browser-styles.js +52 -0
- package/dist/5-visual-kit/device-bezel.d.ts +84 -0
- package/dist/5-visual-kit/device-bezel.d.ts.map +1 -0
- package/dist/5-visual-kit/device-bezel.js +56 -0
- package/dist/5-visual-kit/instagram-frame.d.ts +8 -0
- package/dist/5-visual-kit/instagram-frame.d.ts.map +1 -0
- package/dist/5-visual-kit/instagram-frame.js +13 -0
- package/dist/5-visual-kit/instagram.d.ts +18 -0
- package/dist/5-visual-kit/instagram.d.ts.map +1 -0
- package/dist/5-visual-kit/instagram.js +39 -0
- package/dist/5-visual-kit/mobile-chrome.d.ts +4 -0
- package/dist/5-visual-kit/mobile-chrome.d.ts.map +1 -0
- package/dist/5-visual-kit/mobile-chrome.js +24 -0
- package/dist/5-visual-kit/native-icon-paths.d.ts +146 -0
- package/dist/5-visual-kit/native-icon-paths.d.ts.map +1 -0
- package/dist/5-visual-kit/native-icon-paths.js +145 -0
- package/dist/5-visual-kit/window.d.ts +51 -0
- package/dist/5-visual-kit/window.d.ts.map +1 -0
- package/dist/5-visual-kit/window.js +20 -0
- package/dist/browser-icons-BFbS1tIx.js +56 -0
- package/dist/browser-icons-BFbS1tIx.js.map +1 -0
- package/dist/browser-icons-CT8qU77Z.js +48 -0
- package/dist/browser-icons-CT8qU77Z.js.map +1 -0
- package/dist/components.d.ts +1 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +1 -0
- package/dist/design-system-1.bundle.js +5514 -2077
- package/dist/design-system-1.bundle.js.map +1 -1
- package/dist/design-system-1.bundle.min.js +7026 -4628
- package/dist/design-system-1.bundle.min.js.map +1 -1
- package/dist/design-system-1.css +1 -1
- package/dist/feedback.js +197 -167
- package/dist/feedback.js.map +1 -1
- package/dist/{icons-extra-CRxxWFjX.js → icons-extra-BMPvmQPI.js} +25 -4
- package/dist/icons-extra-BMPvmQPI.js.map +1 -0
- package/dist/{icons-extra-H5pqCM_R.js → icons-extra-BfYOw-cR.js} +83 -5
- package/dist/icons-extra-BfYOw-cR.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/instagram-CKofs55A.js +50 -0
- package/dist/instagram-CKofs55A.js.map +1 -0
- package/dist/instagram-CcYf5oiM.js +48 -0
- package/dist/instagram-CcYf5oiM.js.map +1 -0
- package/dist/lit-Ce_uWYM4.js +612 -0
- package/dist/lit-Ce_uWYM4.js.map +1 -0
- package/dist/lit-DGUVm1Ce.js +557 -0
- package/dist/lit-DGUVm1Ce.js.map +1 -0
- package/dist/native-icon-paths-CB9evXBM.js +93 -0
- package/dist/native-icon-paths-CB9evXBM.js.map +1 -0
- package/dist/native-icon-paths-zay-3g_n.js +150 -0
- package/dist/native-icon-paths-zay-3g_n.js.map +1 -0
- package/dist/react/avatar.d.ts +1 -1
- package/dist/react/choice.d.ts +4 -0
- package/dist/react/choice.d.ts.map +1 -1
- package/dist/react/choice.js +2 -2
- package/dist/react/context.d.ts +19 -4
- package/dist/react/context.d.ts.map +1 -1
- package/dist/react/context.js +4 -4
- package/dist/react/empty.d.ts +2 -2
- package/dist/react/empty.d.ts.map +1 -1
- package/dist/react/empty.js +1 -1
- package/dist/react/footer.d.ts +5 -5
- package/dist/react/footer.d.ts.map +1 -1
- package/dist/react/footer.js +2 -2
- package/dist/react/header.d.ts +2 -2
- package/dist/react/header.d.ts.map +1 -1
- package/dist/react/message.d.ts +4 -0
- package/dist/react/message.d.ts.map +1 -1
- package/dist/react/message.js +2 -2
- package/dist/react/number.d.ts +53 -0
- package/dist/react/number.d.ts.map +1 -0
- package/dist/react/number.js +25 -0
- package/dist/react/page.d.ts +1 -1
- package/dist/react/sidebar.d.ts +4 -0
- package/dist/react/sidebar.d.ts.map +1 -1
- package/dist/react/sidebar.js +2 -2
- package/dist/react/table-of-contents.d.ts +19 -0
- package/dist/react/table-of-contents.d.ts.map +1 -0
- package/dist/react/table-of-contents.js +28 -0
- package/dist/{shared-words-CdMDVtXx.js → shared-words-C5cjxMjZ.js} +151 -16
- package/dist/shared-words-C5cjxMjZ.js.map +1 -0
- package/dist/{shared-words-BtRee8xR.js → shared-words-Cdm7xd-_.js} +163 -28
- package/dist/shared-words-Cdm7xd-_.js.map +1 -0
- package/package.json +23 -12
- package/DS1/3-unit/ds-calendar-large.ts +0 -353
- package/DS1/3-unit/styles/ds-calendar-large.css +0 -178
- package/dist/3-unit/ds-calendar-large.d.ts +0 -142
- package/dist/3-unit/ds-calendar-large.d.ts.map +0 -1
- package/dist/3-unit/ds-calendar-large.js +0 -308
- package/dist/icons-extra-CRxxWFjX.js.map +0 -1
- package/dist/icons-extra-H5pqCM_R.js.map +0 -1
- package/dist/shared-words-BtRee8xR.js.map +0 -1
- package/dist/shared-words-CdMDVtXx.js.map +0 -1
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/** Measured screen slots from the supplied community file. Artwork is separately licensed. */
|
|
2
|
+
export interface Bezel {
|
|
3
|
+
id: string; label: string; width: number; height: number;
|
|
4
|
+
screen: { x: number; y: number; width: number; height: number; radius: number };
|
|
5
|
+
kind: 'phone' | 'tablet'; asset: string; source: { file: string; node: string };
|
|
6
|
+
}
|
|
7
|
+
export const BEZELS: readonly Bezel[] = [
|
|
8
|
+
{
|
|
9
|
+
"id": "iphone-17-pro-max-deep-blue",
|
|
10
|
+
"label": "iPhone 17 Pro Max \u00b7 Deep Blue",
|
|
11
|
+
"width": 490,
|
|
12
|
+
"height": 1000,
|
|
13
|
+
"screen": {
|
|
14
|
+
"x": 25,
|
|
15
|
+
"y": 22,
|
|
16
|
+
"width": 440,
|
|
17
|
+
"height": 956,
|
|
18
|
+
"radius": 58
|
|
19
|
+
},
|
|
20
|
+
"kind": "phone",
|
|
21
|
+
"asset": "assets/iphone-17-pro-max-deep-blue.png",
|
|
22
|
+
"source": {
|
|
23
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
24
|
+
"node": "6316:14156"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "iphone-17-pro-max-cosmic-orange",
|
|
29
|
+
"label": "iPhone 17 Pro Max \u00b7 Cosmic Orange",
|
|
30
|
+
"width": 490,
|
|
31
|
+
"height": 1000,
|
|
32
|
+
"screen": {
|
|
33
|
+
"x": 25,
|
|
34
|
+
"y": 22,
|
|
35
|
+
"width": 440,
|
|
36
|
+
"height": 956,
|
|
37
|
+
"radius": 58
|
|
38
|
+
},
|
|
39
|
+
"kind": "phone",
|
|
40
|
+
"asset": "assets/iphone-17-pro-max-cosmic-orange.png",
|
|
41
|
+
"source": {
|
|
42
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
43
|
+
"node": "6316:14158"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "iphone-17-pro-max-silver",
|
|
48
|
+
"label": "iPhone 17 Pro Max \u00b7 Silver",
|
|
49
|
+
"width": 490,
|
|
50
|
+
"height": 1000,
|
|
51
|
+
"screen": {
|
|
52
|
+
"x": 25,
|
|
53
|
+
"y": 22,
|
|
54
|
+
"width": 440,
|
|
55
|
+
"height": 956,
|
|
56
|
+
"radius": 58
|
|
57
|
+
},
|
|
58
|
+
"kind": "phone",
|
|
59
|
+
"asset": "assets/iphone-17-pro-max-silver.png",
|
|
60
|
+
"source": {
|
|
61
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
62
|
+
"node": "6316:14160"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "iphone-17-pro-deep-blue",
|
|
67
|
+
"label": "iPhone 17 Pro \u00b7 Deep Blue",
|
|
68
|
+
"width": 450,
|
|
69
|
+
"height": 920,
|
|
70
|
+
"screen": {
|
|
71
|
+
"x": 24,
|
|
72
|
+
"y": 23,
|
|
73
|
+
"width": 402,
|
|
74
|
+
"height": 874,
|
|
75
|
+
"radius": 58
|
|
76
|
+
},
|
|
77
|
+
"kind": "phone",
|
|
78
|
+
"asset": "assets/iphone-17-pro-deep-blue.png",
|
|
79
|
+
"source": {
|
|
80
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
81
|
+
"node": "6316:14139"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "iphone-17-pro-cosmic-orange",
|
|
86
|
+
"label": "iPhone 17 Pro \u00b7 Cosmic Orange",
|
|
87
|
+
"width": 450,
|
|
88
|
+
"height": 920,
|
|
89
|
+
"screen": {
|
|
90
|
+
"x": 24,
|
|
91
|
+
"y": 23,
|
|
92
|
+
"width": 402,
|
|
93
|
+
"height": 874,
|
|
94
|
+
"radius": 58
|
|
95
|
+
},
|
|
96
|
+
"kind": "phone",
|
|
97
|
+
"asset": "assets/iphone-17-pro-cosmic-orange.png",
|
|
98
|
+
"source": {
|
|
99
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
100
|
+
"node": "6316:14141"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "iphone-17-pro-silver",
|
|
105
|
+
"label": "iPhone 17 Pro \u00b7 Silver",
|
|
106
|
+
"width": 450,
|
|
107
|
+
"height": 920,
|
|
108
|
+
"screen": {
|
|
109
|
+
"x": 24,
|
|
110
|
+
"y": 23,
|
|
111
|
+
"width": 402,
|
|
112
|
+
"height": 874,
|
|
113
|
+
"radius": 58
|
|
114
|
+
},
|
|
115
|
+
"kind": "phone",
|
|
116
|
+
"asset": "assets/iphone-17-pro-silver.png",
|
|
117
|
+
"source": {
|
|
118
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
119
|
+
"node": "6316:14148"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "iphone-17-black",
|
|
124
|
+
"label": "iPhone 17 \u00b7 Black",
|
|
125
|
+
"width": 450,
|
|
126
|
+
"height": 920,
|
|
127
|
+
"screen": {
|
|
128
|
+
"x": 24,
|
|
129
|
+
"y": 23,
|
|
130
|
+
"width": 402,
|
|
131
|
+
"height": 874,
|
|
132
|
+
"radius": 58
|
|
133
|
+
},
|
|
134
|
+
"kind": "phone",
|
|
135
|
+
"asset": "assets/iphone-17-black.png",
|
|
136
|
+
"source": {
|
|
137
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
138
|
+
"node": "6316:14214"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"id": "iphone-17-lavender",
|
|
143
|
+
"label": "iPhone 17 \u00b7 Lavender",
|
|
144
|
+
"width": 450,
|
|
145
|
+
"height": 920,
|
|
146
|
+
"screen": {
|
|
147
|
+
"x": 24,
|
|
148
|
+
"y": 23,
|
|
149
|
+
"width": 402,
|
|
150
|
+
"height": 874,
|
|
151
|
+
"radius": 58
|
|
152
|
+
},
|
|
153
|
+
"kind": "phone",
|
|
154
|
+
"asset": "assets/iphone-17-lavender.png",
|
|
155
|
+
"source": {
|
|
156
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
157
|
+
"node": "6316:14201"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"id": "iphone-17-mist-blue",
|
|
162
|
+
"label": "iPhone 17 \u00b7 Mist Blue",
|
|
163
|
+
"width": 450,
|
|
164
|
+
"height": 920,
|
|
165
|
+
"screen": {
|
|
166
|
+
"x": 24,
|
|
167
|
+
"y": 23,
|
|
168
|
+
"width": 402,
|
|
169
|
+
"height": 874,
|
|
170
|
+
"radius": 58
|
|
171
|
+
},
|
|
172
|
+
"kind": "phone",
|
|
173
|
+
"asset": "assets/iphone-17-mist-blue.png",
|
|
174
|
+
"source": {
|
|
175
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
176
|
+
"node": "6316:14203"
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"id": "iphone-17-sage",
|
|
181
|
+
"label": "iPhone 17 \u00b7 Sage",
|
|
182
|
+
"width": 450,
|
|
183
|
+
"height": 920,
|
|
184
|
+
"screen": {
|
|
185
|
+
"x": 24,
|
|
186
|
+
"y": 23,
|
|
187
|
+
"width": 402,
|
|
188
|
+
"height": 874,
|
|
189
|
+
"radius": 58
|
|
190
|
+
},
|
|
191
|
+
"kind": "phone",
|
|
192
|
+
"asset": "assets/iphone-17-sage.png",
|
|
193
|
+
"source": {
|
|
194
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
195
|
+
"node": "6316:14210"
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": "iphone-17-white",
|
|
200
|
+
"label": "iPhone 17 \u00b7 White",
|
|
201
|
+
"width": 450,
|
|
202
|
+
"height": 920,
|
|
203
|
+
"screen": {
|
|
204
|
+
"x": 24,
|
|
205
|
+
"y": 23,
|
|
206
|
+
"width": 402,
|
|
207
|
+
"height": 874,
|
|
208
|
+
"radius": 58
|
|
209
|
+
},
|
|
210
|
+
"kind": "phone",
|
|
211
|
+
"asset": "assets/iphone-17-white.png",
|
|
212
|
+
"source": {
|
|
213
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
214
|
+
"node": "6316:14212"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"id": "iphone-air-space-black",
|
|
219
|
+
"label": "iPhone Air \u00b7 Space Black",
|
|
220
|
+
"width": 460,
|
|
221
|
+
"height": 960,
|
|
222
|
+
"screen": {
|
|
223
|
+
"x": 20,
|
|
224
|
+
"y": 24,
|
|
225
|
+
"width": 420,
|
|
226
|
+
"height": 912,
|
|
227
|
+
"radius": 58
|
|
228
|
+
},
|
|
229
|
+
"kind": "phone",
|
|
230
|
+
"asset": "assets/iphone-air-space-black.png",
|
|
231
|
+
"source": {
|
|
232
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
233
|
+
"node": "6316:14177"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "iphone-air-cloud-white",
|
|
238
|
+
"label": "iPhone Air \u00b7 Cloud White",
|
|
239
|
+
"width": 460,
|
|
240
|
+
"height": 960,
|
|
241
|
+
"screen": {
|
|
242
|
+
"x": 20,
|
|
243
|
+
"y": 24,
|
|
244
|
+
"width": 420,
|
|
245
|
+
"height": 912,
|
|
246
|
+
"radius": 58
|
|
247
|
+
},
|
|
248
|
+
"kind": "phone",
|
|
249
|
+
"asset": "assets/iphone-air-cloud-white.png",
|
|
250
|
+
"source": {
|
|
251
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
252
|
+
"node": "6316:14173"
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"id": "iphone-air-light-gold",
|
|
257
|
+
"label": "iPhone Air \u00b7 Light Gold",
|
|
258
|
+
"width": 460,
|
|
259
|
+
"height": 960,
|
|
260
|
+
"screen": {
|
|
261
|
+
"x": 20,
|
|
262
|
+
"y": 24,
|
|
263
|
+
"width": 420,
|
|
264
|
+
"height": 912,
|
|
265
|
+
"radius": 58
|
|
266
|
+
},
|
|
267
|
+
"kind": "phone",
|
|
268
|
+
"asset": "assets/iphone-air-light-gold.png",
|
|
269
|
+
"source": {
|
|
270
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
271
|
+
"node": "6316:14179"
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"id": "iphone-air-sky-blue",
|
|
276
|
+
"label": "iPhone Air \u00b7 Sky Blue",
|
|
277
|
+
"width": 460,
|
|
278
|
+
"height": 960,
|
|
279
|
+
"screen": {
|
|
280
|
+
"x": 20,
|
|
281
|
+
"y": 24,
|
|
282
|
+
"width": 420,
|
|
283
|
+
"height": 912,
|
|
284
|
+
"radius": 58
|
|
285
|
+
},
|
|
286
|
+
"kind": "phone",
|
|
287
|
+
"asset": "assets/iphone-air-sky-blue.png",
|
|
288
|
+
"source": {
|
|
289
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
290
|
+
"node": "6316:14175"
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"id": "ipad-pro-13-silver",
|
|
295
|
+
"label": "iPad Pro 13 M4 \u00b7 Silver",
|
|
296
|
+
"width": 1500,
|
|
297
|
+
"height": 1150,
|
|
298
|
+
"screen": {
|
|
299
|
+
"x": 62,
|
|
300
|
+
"y": 58,
|
|
301
|
+
"width": 1376,
|
|
302
|
+
"height": 1034,
|
|
303
|
+
"radius": 28
|
|
304
|
+
},
|
|
305
|
+
"kind": "tablet",
|
|
306
|
+
"asset": "assets/ipad-pro-13-silver.png",
|
|
307
|
+
"source": {
|
|
308
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
309
|
+
"node": "5456:18569"
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"id": "ipad-pro-13-space-gray",
|
|
314
|
+
"label": "iPad Pro 13 M4 \u00b7 Space Gray",
|
|
315
|
+
"width": 1500,
|
|
316
|
+
"height": 1150,
|
|
317
|
+
"screen": {
|
|
318
|
+
"x": 62,
|
|
319
|
+
"y": 58,
|
|
320
|
+
"width": 1376,
|
|
321
|
+
"height": 1034,
|
|
322
|
+
"radius": 28
|
|
323
|
+
},
|
|
324
|
+
"kind": "tablet",
|
|
325
|
+
"asset": "assets/ipad-pro-13-space-gray.png",
|
|
326
|
+
"source": {
|
|
327
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
328
|
+
"node": "6316:14233"
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"id": "ipad-pro-11-silver",
|
|
333
|
+
"label": "iPad Pro 11 M4 \u00b7 Silver",
|
|
334
|
+
"width": 1320,
|
|
335
|
+
"height": 940,
|
|
336
|
+
"screen": {
|
|
337
|
+
"x": 55,
|
|
338
|
+
"y": 53,
|
|
339
|
+
"width": 1210,
|
|
340
|
+
"height": 834,
|
|
341
|
+
"radius": 28
|
|
342
|
+
},
|
|
343
|
+
"kind": "tablet",
|
|
344
|
+
"asset": "assets/ipad-pro-11-silver.png",
|
|
345
|
+
"source": {
|
|
346
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
347
|
+
"node": "6318:14240"
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"id": "ipad-pro-11-space-gray",
|
|
352
|
+
"label": "iPad Pro 11 M4 \u00b7 Space Gray",
|
|
353
|
+
"width": 1320,
|
|
354
|
+
"height": 940,
|
|
355
|
+
"screen": {
|
|
356
|
+
"x": 55,
|
|
357
|
+
"y": 53,
|
|
358
|
+
"width": 1210,
|
|
359
|
+
"height": 834,
|
|
360
|
+
"radius": 28
|
|
361
|
+
},
|
|
362
|
+
"kind": "tablet",
|
|
363
|
+
"asset": "assets/ipad-pro-11-space-gray.png",
|
|
364
|
+
"source": {
|
|
365
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
366
|
+
"node": "6316:14230"
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"id": "ipad-mini-starlight",
|
|
371
|
+
"label": "iPad mini \u00b7 Starlight",
|
|
372
|
+
"width": 1275,
|
|
373
|
+
"height": 890,
|
|
374
|
+
"screen": {
|
|
375
|
+
"x": 71,
|
|
376
|
+
"y": 73,
|
|
377
|
+
"width": 1133,
|
|
378
|
+
"height": 744,
|
|
379
|
+
"radius": 28
|
|
380
|
+
},
|
|
381
|
+
"kind": "tablet",
|
|
382
|
+
"asset": "assets/ipad-mini-starlight.png",
|
|
383
|
+
"source": {
|
|
384
|
+
"file": "8azymSnKt4pnYTZqdzQ7tF",
|
|
385
|
+
"node": "5456:18828"
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
];
|
|
389
|
+
export function bezelById(id: string): Bezel | undefined { return BEZELS.find(bezel => bezel.id === id); }
|
|
390
|
+
export function screenGeometry(bezel: Bezel, width: number) {
|
|
391
|
+
const scale = width / bezel.width;
|
|
392
|
+
return { scale, width: bezel.screen.width, height: bezel.screen.height,
|
|
393
|
+
left: bezel.screen.x * scale, top: bezel.screen.y * scale };
|
|
394
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Chromium source: https://chromium.googlesource.com/chromium/src/+/refs/tags/155.0.8059.86/components/vector_icons/
|
|
2
|
+
|
|
3
|
+
// Copyright 2015 The Chromium Authors
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google LLC nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
Microsoft Fluent system icons: https://github.com/microsoft/fluentui-system-icons
|
|
32
|
+
|
|
33
|
+
MIT License
|
|
34
|
+
|
|
35
|
+
Copyright (c) 2020 Microsoft Corporation
|
|
36
|
+
|
|
37
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
38
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
39
|
+
in the Software without restriction, including without limitation the rights
|
|
40
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
41
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
42
|
+
furnished to do so, subject to the following conditions:
|
|
43
|
+
|
|
44
|
+
The above copyright notice and this permission notice shall be included in all
|
|
45
|
+
copies or substantial portions of the Software.
|
|
46
|
+
|
|
47
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
48
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
49
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
50
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
51
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
52
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
53
|
+
SOFTWARE.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
type NativeGlyphs = Record<string, { size: number; path: string }>;
|
|
3
|
+
let chromiumIcons: NativeGlyphs = {};
|
|
4
|
+
let edgeIcons: NativeGlyphs = {};
|
|
5
|
+
let loading: Promise<void> | undefined;
|
|
6
|
+
|
|
7
|
+
/** Native browser glyphs are unnecessary for Apple windows and device status bars. */
|
|
8
|
+
export function loadBrowserIcons(kind: string): Promise<void> {
|
|
9
|
+
if (kind !== 'chrome' && kind !== 'edge') return Promise.resolve();
|
|
10
|
+
return loading ??= import('./native-icon-paths').then((icons) => {
|
|
11
|
+
chromiumIcons = icons.chromiumIcons;
|
|
12
|
+
edgeIcons = icons.edgeIcons;
|
|
13
|
+
}).catch((error) => { loading = undefined; throw error; });
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Presentation glyphs drawn in each browser's native icon vocabulary, not DS1 UI icons. */
|
|
17
|
+
export function browserIcon(name: string, kind: string) {
|
|
18
|
+
if (kind === 'safari-ios' && name === 'tabs') return svg`<svg viewBox="0 0 20 20" aria-hidden="true"><rect x="2" y="2" width="12" height="12" rx="2"/><rect x="6" y="6" width="12" height="12" rx="2"/></svg>`;
|
|
19
|
+
if (kind === 'safari-ios' && name === 'back') return svg`<svg viewBox="0 0 20 20" aria-hidden="true"><path d="m13 3-7 7 7 7"/></svg>`;
|
|
20
|
+
const native = (kind === 'chrome' ? chromiumIcons : kind === 'edge' ? edgeIcons : {}) as Record<string, {size:number;path:string}>;
|
|
21
|
+
if (native[name]) { const glyph=native[name]; return svg`<svg viewBox=${`0 0 ${glyph.size} ${glyph.size}`} aria-hidden="true" style="fill:currentColor;stroke:none"><path d=${glyph.path}/></svg>`; }
|
|
22
|
+
const apple = kind === 'safari' || kind === 'safari-ios' || kind === 'macos';
|
|
23
|
+
const paths: Record<string, string> = {
|
|
24
|
+
back: apple ? 'M12 4 6 10l6 6' : 'M16 10H4m6-6-6 6 6 6',
|
|
25
|
+
forward: apple ? 'm8 4 6 6-6 6' : 'M4 10h12m-6-6 6 6-6 6',
|
|
26
|
+
reload: 'M16 7a6.5 6.5 0 1 0 .4 5M16 3v4h-4',
|
|
27
|
+
share: 'M7 6H4v11h12V6h-3M10 12V1m-3 3 3-3 3 3',
|
|
28
|
+
tabs: 'M6 6H2v12h12v-4M6 2h12v12H6Z',
|
|
29
|
+
sidebar: 'M3 3h14v14H3ZM8 3v14M5 6h1m-1 3h1m-1 3h1',
|
|
30
|
+
plus: 'M10 4v12M4 10h12',
|
|
31
|
+
close: 'm5 5 10 10M15 5 5 15',
|
|
32
|
+
'close-tab': 'm6 6 8 8m0-8-8 8',
|
|
33
|
+
minimize: 'M4 10h12', zoom: 'M4 8V4h4m4 12h4v-4M4 4l12 12',
|
|
34
|
+
'chevron-down': 'm6 8 4 4 4-4',
|
|
35
|
+
'page-menu': 'M3 5h14M3 10h10M3 15h6',
|
|
36
|
+
lock: 'M6 9V6a4 4 0 0 1 8 0v3M5 9h10v8H5Z',
|
|
37
|
+
tune: 'M3 6h7m4 0h3M3 14h3m4 0h7M10 4h4v4h-4ZM6 12h4v4H6Z',
|
|
38
|
+
star: 'm10 2 2.4 5 5.6.8-4 3.9.9 5.6-4.9-2.6-4.9 2.6.9-5.6-4-3.9L7.6 7Z',
|
|
39
|
+
extensions: 'M4 4h4V2a2 2 0 0 1 4 0v2h4v5h2a2 2 0 0 1 0 4h-2v5h-5v-2a2 2 0 0 0-4 0v2H2V4Z',
|
|
40
|
+
reading: 'M10 5Q6 2 2 4v12q4-2 8 1 4-3 8-1V4q-4-2-8 1v12',
|
|
41
|
+
favorites: 'm7 2 1.6 3.3 3.7.5-2.7 2.6.6 3.6L7 10.3 3.8 12l.6-3.6L1.7 5.8l3.7-.5ZM14 5h4m-4 5h4M3 16h15',
|
|
42
|
+
globe: 'M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0ZM2 10h16M10 2c-5 4-5 12 0 16 5-4 5-12 0-16Z',
|
|
43
|
+
profile: 'M18 10a8 8 0 1 1-16 0 8 8 0 0 1 16 0ZM6 16v-1a4 4 0 0 1 8 0v1M12.5 7a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z',
|
|
44
|
+
};
|
|
45
|
+
if(name==='more'||name==='more-horizontal') return svg`<svg viewBox="0 0 20 20" aria-hidden="true" style="fill:currentColor;stroke:none">${name==='more'?svg`<circle cx="10" cy="4" r="1.5"/><circle cx="10" cy="10" r="1.5"/><circle cx="10" cy="16" r="1.5"/>`:svg`<circle cx="4" cy="10" r="1.2"/><circle cx="10" cy="10" r="1.2"/><circle cx="16" cy="10" r="1.2"/>`}</svg>`;
|
|
46
|
+
return svg`<svg viewBox="0 0 20 20" aria-hidden="true"><path d=${paths[name] || paths['globe']}/></svg>`;
|
|
47
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
|
|
3
|
+
/** macOS reference layouts: Safari 27 compact, Chrome 155, Edge 156. CSS pixels at 1×. */
|
|
4
|
+
export const browserStyles = css`
|
|
5
|
+
:host { --browser-strip:#dee1e6; --browser-toolbar:#fff; --browser-address:#f1f3f4; --browser-ink:#3c4043; }
|
|
6
|
+
:host([appearance=dark]) { --browser-strip:#202124; --browser-toolbar:#35363a; --browser-address:#202124; --browser-ink:#e8eaed; }
|
|
7
|
+
:host([kind=edge]) { --browser-strip:#f3f3f3; --browser-toolbar:#fff; --browser-address:#fff; --browser-ink:#242424; }
|
|
8
|
+
:host([kind=edge][appearance=dark]) { --browser-strip:#202020; --browser-toolbar:#2b2b2b; --browser-address:#2b2b2b; --browser-ink:#f5f5f5; }
|
|
9
|
+
.unavailable { opacity:.35 !important; }
|
|
10
|
+
.favicon { width:16px; height:16px; object-fit:contain; flex:none; }
|
|
11
|
+
.lights { width:80px; padding-left:12px; gap:8px; height:100%; }
|
|
12
|
+
.lights svg { width:8px; height:8px; }
|
|
13
|
+
.tabs { height:40px; gap:8px; padding:0 8px 0 0; background:var(--browser-strip); color:var(--browser-ink); }
|
|
14
|
+
.tabs > button { width:28px; height:28px; flex:none; border-radius:8px; }
|
|
15
|
+
.tab { position:relative; isolation:isolate; height:34px; width:232px; min-width:80px; border-radius:12px 12px 0 0; padding:0 10px; gap:8px; background:var(--browser-toolbar); font-size:13px; font-weight:400; }
|
|
16
|
+
.tab::before,.tab::after { content:''; position:absolute; bottom:0; width:12px; height:12px; background:transparent; z-index:-1; }
|
|
17
|
+
.tab::before { left:-12px; border-radius:0 0 12px 0; box-shadow:4px 4px 0 4px var(--browser-toolbar); }
|
|
18
|
+
.tab::after { right:-12px; border-radius:0 0 0 12px; box-shadow:-4px 4px 0 4px var(--browser-toolbar); }
|
|
19
|
+
.tab > svg { flex:none; width:16px; height:16px; color:#5f6368; }
|
|
20
|
+
:host([appearance=dark]) .tab > svg { color:#bdc1c6; }
|
|
21
|
+
.tab button { flex:none; width:20px; height:20px; border-radius:50%; }
|
|
22
|
+
.tab button svg { width:16px; height:16px; }
|
|
23
|
+
.browser-toolbar { height:46px; min-height:46px; padding:6px; gap:2px; background:var(--browser-toolbar); color:var(--browser-ink); border-bottom:1px solid #00000015; }
|
|
24
|
+
.browser-toolbar > button { width:34px; height:34px; flex:none; border-radius:50%; }
|
|
25
|
+
.browser-toolbar svg { width:20px; height:20px; stroke-width:1.65; }
|
|
26
|
+
.browser-toolbar .address { height:34px; padding:0 6px; gap:4px; margin:0 4px; border:0; border-radius:17px; background:var(--browser-address); justify-content:start; }
|
|
27
|
+
.address > span { flex:1; min-width:0; font-size:14px; }
|
|
28
|
+
.browser-toolbar .address button { flex:none; width:28px; height:28px; border-radius:50%; }
|
|
29
|
+
.browser-toolbar .address button svg { width:18px; height:18px; }
|
|
30
|
+
:host([kind=edge]) .tabs { background:var(--browser-strip); gap:6px; }
|
|
31
|
+
:host([kind=edge]) .tab { height:36px; width:240px; border-radius:10px 10px 0 0; }
|
|
32
|
+
:host([kind=edge]) .browser-toolbar { height:40px; min-height:40px; padding:4px; gap:0; }
|
|
33
|
+
:host([kind=edge]) .browser-toolbar > button { width:36px; height:32px; border-radius:6px; }
|
|
34
|
+
:host([kind=edge]) .browser-toolbar svg { stroke-width:1.3; }
|
|
35
|
+
:host([kind=edge]) .address { height:32px; border:1px solid #c7c7c7; margin:0 4px 0 0; padding:0 5px; }
|
|
36
|
+
:host([kind=edge][appearance=dark]) .address { border-color:#555; }
|
|
37
|
+
:host([kind=safari]) { background:#f8f8f8; color:#424242; }
|
|
38
|
+
:host([kind=safari][appearance=dark]) { background:#444448; color:#f4f4f4; }
|
|
39
|
+
:host([kind=safari]) .toolbar { height:52px; min-height:52px; padding:8px 12px 8px 0; gap:8px; border-bottom:1px solid #00000018; }
|
|
40
|
+
.safari-group { display:flex; align-items:center; height:36px; border-radius:18px; background:#eaeaea; flex:none; padding:0 4px; }
|
|
41
|
+
.safari-group button { width:32px; height:32px; border-radius:50%; }
|
|
42
|
+
.safari-group svg { width:18px; height:18px; stroke-width:1.5; }
|
|
43
|
+
.sidebar-group { gap:0; padding:0 8px; }
|
|
44
|
+
.sidebar-group button:last-child { width:16px; }
|
|
45
|
+
.sidebar-group button:last-child svg { width:12px; }
|
|
46
|
+
:host([kind=safari]) .safari-address { height:36px; max-width:none; margin:0; padding:0 10px 0 16px; border-radius:18px; background:#eaeaea; border:1px solid #00000008; box-shadow:0 1px 2px #00000008; gap:8px; }
|
|
47
|
+
.safari-address span { text-align:center; font-size:13px; }
|
|
48
|
+
.safari-address button { width:24px; height:28px; flex:none; }
|
|
49
|
+
.safari-actions { padding:0 8px; }
|
|
50
|
+
:host([kind=safari][appearance=dark]) .safari-group { background:#5b5b5f; }
|
|
51
|
+
:host([kind=safari][appearance=dark]) .safari-address { background:#505054; border-color:#ffffff10; }
|
|
52
|
+
@media(max-width:480px) { .tab { width:180px; } }
|
|
53
|
+
`;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { LitElement, css, html, nothing } from 'lit';
|
|
2
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
3
|
+
import { define } from '../0-face/define';
|
|
4
|
+
import { bezelById, screenGeometry } from './bezels';
|
|
5
|
+
import './app-chrome';
|
|
6
|
+
/** Artwork and a measured, native-size screen. The entire screen scales uniformly into the bezel. */
|
|
7
|
+
export class DsDeviceBezel extends LitElement {
|
|
8
|
+
static properties={ edgeToEdge:{type:Boolean,attribute:"edge-to-edge",reflect:true}, staticFrame:{type:Boolean,attribute:"static",reflect:true}, frameless:{type:Boolean,reflect:true}, responsive:{type:Boolean,reflect:true}, device:{}, assetBase:{attribute:'asset-base'}, chromeAssets:{attribute:'chrome-assets'}, network:{}, battery:{type:Number}, dualSim:{type:Boolean,attribute:'dual-sim'}, time:{}, address:{}, browser:{}, appearance:{reflect:true}, interactive:{type:Boolean}, status:{type:Boolean}, measuredWidth:{state:true} };
|
|
9
|
+
declare edgeToEdge:boolean; declare frameless: boolean; declare responsive: boolean;
|
|
10
|
+
declare staticFrame: boolean; declare device: string; declare assetBase: string; declare chromeAssets: string; declare network: string; declare battery: number; declare dualSim: boolean; declare time: string; declare address: string; declare browser: string; declare appearance: string; declare interactive: boolean; declare status: boolean;
|
|
11
|
+
declare private measuredWidth: number;
|
|
12
|
+
private observer?:ResizeObserver;
|
|
13
|
+
constructor(){super();this.edgeToEdge=false;this.staticFrame=false;this.frameless=false;this.responsive=false;this.device='iphone-17-pro-max-deep-blue';this.assetBase='';this.chromeAssets='';this.network='4G';this.battery=80;this.dualSim=false;this.time='00:01';this.address='';this.browser='';this.appearance='light';this.interactive=false;this.status=true;this.measuredWidth=0;}
|
|
14
|
+
static styles=css`
|
|
15
|
+
:host { display:block; width:var(--ds-device-width,280px); max-width:100%; }
|
|
16
|
+
:host([frameless]) { display:contents; }
|
|
17
|
+
.status-wrap { flex:none; }
|
|
18
|
+
:host([edge-to-edge]) .status-wrap { position:absolute; top:0; left:0; right:0; z-index:2; pointer-events:none; }
|
|
19
|
+
:host([edge-to-edge]) .home { display:none; }
|
|
20
|
+
/* Over the page, the status bar's ink follows appearance: black over a light page, white over a dark one. */
|
|
21
|
+
:host([edge-to-edge]) ds-app-chrome { --chrome-screen:transparent; background:transparent; }
|
|
22
|
+
.scaled-chrome { transform-origin:top left; }
|
|
23
|
+
.device.compact { box-shadow:inset 0 0 0 3px #202124; border-radius:32px; background:#202124; }
|
|
24
|
+
.compact .art { display:none; }
|
|
25
|
+
.device { position:relative; width:100%; }
|
|
26
|
+
.screen { position:absolute; transform-origin:top left; overflow:hidden; background:var(--ds-device-paper,#fff); display:flex; flex-direction:column; }
|
|
27
|
+
:host([appearance=dark]) .screen { --ds-device-paper:#111; }
|
|
28
|
+
.content { position:relative; flex:1; min-height:0; overflow:hidden; }
|
|
29
|
+
.art { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
|
|
30
|
+
.browser { position:absolute; left:0; right:0; bottom:34px; z-index:1; }
|
|
31
|
+
.screen.with-browser .home { position:absolute; bottom:0; left:0; right:0; background:transparent; pointer-events:none; }
|
|
32
|
+
.screen.with-browser .home::after { display:none; }
|
|
33
|
+
.home { height:34px; flex:none; display:flex; align-items:center; justify-content:center; background:var(--ds-device-paper,#fff); }
|
|
34
|
+
.home::after { content:''; width:134px; height:5px; border-radius:9px; background:#000; }
|
|
35
|
+
:host([appearance=dark]) .home::after { background:#fff; }
|
|
36
|
+
ds-app-chrome { flex:none; } ::slotted(iframe) { display:block; width:100%; height:100%; border:0; }
|
|
37
|
+
.missing { padding:20px; border:1px solid currentColor; font:14px/20px sans-serif; }
|
|
38
|
+
`;
|
|
39
|
+
connectedCallback(){super.connectedCallback();this.observer=new ResizeObserver(entries=>{this.measuredWidth=entries[0].contentRect.width;});this.observer.observe(this);}
|
|
40
|
+
disconnectedCallback(){this.observer?.disconnect();super.disconnectedCallback();}
|
|
41
|
+
render(){
|
|
42
|
+
if(this.frameless)return html`<slot></slot>`;
|
|
43
|
+
const b=bezelById(this.device);
|
|
44
|
+
if(!b||!this.assetBase)return html`<div class="missing" role="status">${b?'Set asset-base to your licensed bezel artwork.':'Unknown device bezel.'}</div>`;
|
|
45
|
+
const g=screenGeometry(b,this.measuredWidth||b.width);
|
|
46
|
+
const compact=this.responsive && this.measuredWidth>0 && this.measuredWidth<320;
|
|
47
|
+
if(compact){g.left=3;g.top=3;g.scale=(this.measuredWidth-6)/g.width;}
|
|
48
|
+
const screenStyle={left:g.left+'px',top:g.top+'px',width:g.width*(this.responsive?g.scale:1)+'px',height:g.height*(this.responsive?g.scale:1)+'px',borderRadius:(compact?29:b.screen.radius*(this.responsive?g.scale:1))+'px',transform:this.responsive?'none':`scale(${g.scale})`};
|
|
49
|
+
const chromeStyle=this.responsive?`width:${g.width}px;transform:scale(${g.scale});`:'';
|
|
50
|
+
const path=this.assetBase.replace(/\/?$/,'/')+b.asset.split('/').pop();
|
|
51
|
+
return html`<div class=${compact?'device compact':'device'} style=${styleMap({aspectRatio:`${b.width} / ${b.height}`})}><div class=${this.browser==='safari'?'screen with-browser':'screen'} part="screen" style=${styleMap(screenStyle)}>${this.status?html`<div class="status-wrap" style=${this.responsive?`height:${(b.kind==='phone'?59:32)*g.scale}px`:""}><ds-app-chrome class="scaled-chrome" style=${chromeStyle} .kind=${b.kind==='phone'?'ios':'ipados'} .time=${this.time} .network=${this.network} .battery=${this.battery} .dualSim=${this.dualSim} .appearance=${this.appearance} .assetBase=${this.chromeAssets}></ds-app-chrome></div>`:nothing}<div class="content" part="viewport" ?inert=${this.staticFrame}><slot></slot></div>${this.browser==='safari'?html`<div class="browser" style=${this.responsive?`height:${49*g.scale}px;bottom:${34*g.scale}px`:""}><ds-app-chrome class="scaled-chrome" style=${chromeStyle} kind="safari-ios" .address=${this.address} .appearance=${this.appearance} .interactive=${this.interactive&&!this.staticFrame}></ds-app-chrome></div>`:nothing}<div class="home" aria-hidden="true"></div></div><img class="art" src=${path} alt="" width=${b.width} height=${b.height} @error=${()=>this.dispatchEvent(new CustomEvent('bezel-error',{detail:{device:b.id},bubbles:true,composed:true}))}></div>`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
define('ds-device-bezel',DsDeviceBezel);
|
|
55
|
+
declare global { interface HTMLElementTagNameMap { 'ds-device-bezel': DsDeviceBezel; } }
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { css, html } from 'lit';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The Reels frame: its size, its transparent face and the slotted media. App chrome draws it from
|
|
5
|
+
* the start, so the picture shows and nothing moves while the overlay (`instagram.ts`) loads on demand.
|
|
6
|
+
*/
|
|
7
|
+
export const instagramFrameStyles = css`
|
|
8
|
+
:host([kind=instagram]) { height:100%; background:transparent; color:white; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; }
|
|
9
|
+
.reels { position:relative; height:100%; overflow:hidden; isolation:isolate; }
|
|
10
|
+
.reels-media { position:absolute; inset:0; z-index:-2; }
|
|
11
|
+
.reels ::slotted(*) { width:100%; height:100%; display:block; object-fit:cover; }
|
|
12
|
+
`;
|
|
13
|
+
|
|
14
|
+
/** The frame alone, until the overlay has loaded. */
|
|
15
|
+
export const instagramFrame = () => html`<div class="reels"><div class="reels-media"><slot></slot></div></div>`;
|