@livenetworks/ashlar 2.2.0 → 2.2.2
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/assets/brand/android-chrome-192x192.png +0 -0
- package/assets/brand/android-chrome-512x512.png +0 -0
- package/assets/brand/apple-touch-icon.png +0 -0
- package/assets/brand/favicon-16x16.png +0 -0
- package/assets/brand/favicon-32x32.png +0 -0
- package/assets/brand/favicon-48x48.png +0 -0
- package/assets/brand/favicon-dark-128x128.png +0 -0
- package/assets/brand/favicon-dark-16x16.png +0 -0
- package/assets/brand/favicon-dark-180x180.png +0 -0
- package/assets/brand/favicon-dark-192x192.png +0 -0
- package/assets/brand/favicon-dark-256x256.png +0 -0
- package/assets/brand/favicon-dark-32x32.png +0 -0
- package/assets/brand/favicon-dark-48x48.png +0 -0
- package/assets/brand/favicon-dark-512x512.png +0 -0
- package/assets/brand/favicon-dark-64x64.png +0 -0
- package/assets/brand/favicon-dark.ico +0 -0
- package/assets/brand/favicon-dark.png +0 -0
- package/assets/brand/favicon-light-128x128.png +0 -0
- package/assets/brand/favicon-light-16x16.png +0 -0
- package/assets/brand/favicon-light-180x180.png +0 -0
- package/assets/brand/favicon-light-192x192.png +0 -0
- package/assets/brand/favicon-light-256x256.png +0 -0
- package/assets/brand/favicon-light-32x32.png +0 -0
- package/assets/brand/favicon-light-48x48.png +0 -0
- package/assets/brand/favicon-light-512x512.png +0 -0
- package/assets/brand/favicon-light-64x64.png +0 -0
- package/assets/brand/favicon-light.ico +0 -0
- package/assets/brand/favicon-light.png +0 -0
- package/assets/brand/favicon.ico +0 -0
- package/assets/brand/favicon.png +0 -0
- package/assets/brand/favicon.svg +12 -0
- package/assets/brand/ln-ashlar-emblem-dark-128.png +0 -0
- package/assets/brand/ln-ashlar-emblem-dark-16.png +0 -0
- package/assets/brand/ln-ashlar-emblem-dark-256.png +0 -0
- package/assets/brand/ln-ashlar-emblem-dark-32.png +0 -0
- package/assets/brand/ln-ashlar-emblem-dark-64.png +0 -0
- package/assets/brand/ln-ashlar-emblem-dark.png +0 -0
- package/assets/brand/ln-ashlar-emblem-light-128.png +0 -0
- package/assets/brand/ln-ashlar-emblem-light-16.png +0 -0
- package/assets/brand/ln-ashlar-emblem-light-256.png +0 -0
- package/assets/brand/ln-ashlar-emblem-light-32.png +0 -0
- package/assets/brand/ln-ashlar-emblem-light-64.png +0 -0
- package/assets/brand/ln-ashlar-emblem-light.png +0 -0
- package/assets/brand/ln-ashlar-logo-dark-128.png +0 -0
- package/assets/brand/ln-ashlar-logo-dark-256.png +0 -0
- package/assets/brand/ln-ashlar-logo-dark-512.png +0 -0
- package/assets/brand/ln-ashlar-logo-dark.png +0 -0
- package/assets/brand/ln-ashlar-logo-light-128.png +0 -0
- package/assets/brand/ln-ashlar-logo-light-256.png +0 -0
- package/assets/brand/ln-ashlar-logo-light-512.png +0 -0
- package/assets/brand/ln-ashlar-logo-light.png +0 -0
- package/assets/brand/site.webmanifest +41 -0
- package/assets/brand/source/ln-ashlar-icon-dark-1024.png +0 -0
- package/assets/brand/source/ln-ashlar-icon-dark-uncropped-1024.png +0 -0
- package/assets/brand/source/ln-ashlar-icon-light-1024.png +0 -0
- package/assets/brand/source/ln-ashlar-icon-light-uncropped-1024.png +0 -0
- package/assets/flags/ad.svg +150 -0
- package/assets/flags/ae.svg +6 -0
- package/assets/flags/af.svg +81 -0
- package/assets/flags/ag.svg +14 -0
- package/assets/flags/ai.svg +29 -0
- package/assets/flags/al.svg +5 -0
- package/assets/flags/am.svg +5 -0
- package/assets/flags/ao.svg +13 -0
- package/assets/flags/aq.svg +5 -0
- package/assets/flags/ar.svg +32 -0
- package/assets/flags/arab.svg +109 -0
- package/assets/flags/as.svg +72 -0
- package/assets/flags/asean.svg +13 -0
- package/assets/flags/at.svg +4 -0
- package/assets/flags/au.svg +8 -0
- package/assets/flags/aw.svg +186 -0
- package/assets/flags/ax.svg +18 -0
- package/assets/flags/az.svg +8 -0
- package/assets/flags/ba.svg +12 -0
- package/assets/flags/bb.svg +6 -0
- package/assets/flags/bd.svg +4 -0
- package/assets/flags/be.svg +7 -0
- package/assets/flags/bf.svg +7 -0
- package/assets/flags/bg.svg +5 -0
- package/assets/flags/bh.svg +4 -0
- package/assets/flags/bi.svg +15 -0
- package/assets/flags/bj.svg +14 -0
- package/assets/flags/bl.svg +5 -0
- package/assets/flags/bm.svg +97 -0
- package/assets/flags/bn.svg +36 -0
- package/assets/flags/bo.svg +673 -0
- package/assets/flags/bq.svg +5 -0
- package/assets/flags/br.svg +45 -0
- package/assets/flags/bs.svg +13 -0
- package/assets/flags/bt.svg +89 -0
- package/assets/flags/bv.svg +13 -0
- package/assets/flags/bw.svg +7 -0
- package/assets/flags/by.svg +18 -0
- package/assets/flags/bz.svg +145 -0
- package/assets/flags/ca.svg +4 -0
- package/assets/flags/cc.svg +19 -0
- package/assets/flags/cd.svg +5 -0
- package/assets/flags/cefta.svg +13 -0
- package/assets/flags/cf.svg +15 -0
- package/assets/flags/cg.svg +12 -0
- package/assets/flags/ch.svg +9 -0
- package/assets/flags/ci.svg +7 -0
- package/assets/flags/ck.svg +9 -0
- package/assets/flags/cl.svg +13 -0
- package/assets/flags/cm.svg +15 -0
- package/assets/flags/cn.svg +11 -0
- package/assets/flags/co.svg +7 -0
- package/assets/flags/cp.svg +7 -0
- package/assets/flags/cr.svg +7 -0
- package/assets/flags/cu.svg +13 -0
- package/assets/flags/cv.svg +13 -0
- package/assets/flags/cw.svg +14 -0
- package/assets/flags/cx.svg +15 -0
- package/assets/flags/cy.svg +6 -0
- package/assets/flags/cz.svg +5 -0
- package/assets/flags/de.svg +5 -0
- package/assets/flags/dg.svg +130 -0
- package/assets/flags/dj.svg +13 -0
- package/assets/flags/dk.svg +5 -0
- package/assets/flags/dm.svg +152 -0
- package/assets/flags/do.svg +121 -0
- package/assets/flags/dz.svg +5 -0
- package/assets/flags/eac.svg +48 -0
- package/assets/flags/ec.svg +138 -0
- package/assets/flags/ee.svg +5 -0
- package/assets/flags/eg.svg +38 -0
- package/assets/flags/eh.svg +16 -0
- package/assets/flags/er.svg +8 -0
- package/assets/flags/es-ct.svg +4 -0
- package/assets/flags/es-ga.svg +187 -0
- package/assets/flags/es-pv.svg +5 -0
- package/assets/flags/es.svg +544 -0
- package/assets/flags/et.svg +14 -0
- package/assets/flags/eu.svg +28 -0
- package/assets/flags/fi.svg +5 -0
- package/assets/flags/fj.svg +120 -0
- package/assets/flags/fk.svg +90 -0
- package/assets/flags/fm.svg +11 -0
- package/assets/flags/fo.svg +12 -0
- package/assets/flags/fr.svg +5 -0
- package/assets/flags/ga.svg +7 -0
- package/assets/flags/gb-eng.svg +5 -0
- package/assets/flags/gb-nir.svg +132 -0
- package/assets/flags/gb-sct.svg +4 -0
- package/assets/flags/gb-wls.svg +9 -0
- package/assets/flags/gb.svg +7 -0
- package/assets/flags/gd.svg +27 -0
- package/assets/flags/ge.svg +6 -0
- package/assets/flags/gf.svg +5 -0
- package/assets/flags/gg.svg +9 -0
- package/assets/flags/gh.svg +6 -0
- package/assets/flags/gi.svg +32 -0
- package/assets/flags/gl.svg +4 -0
- package/assets/flags/gm.svg +14 -0
- package/assets/flags/gn.svg +7 -0
- package/assets/flags/gp.svg +5 -0
- package/assets/flags/gq.svg +23 -0
- package/assets/flags/gr.svg +16 -0
- package/assets/flags/gs.svg +133 -0
- package/assets/flags/gt.svg +204 -0
- package/assets/flags/gu.svg +19 -0
- package/assets/flags/gw.svg +13 -0
- package/assets/flags/gy.svg +9 -0
- package/assets/flags/hk.svg +8 -0
- package/assets/flags/hm.svg +8 -0
- package/assets/flags/hn.svg +18 -0
- package/assets/flags/hr.svg +58 -0
- package/assets/flags/ht.svg +116 -0
- package/assets/flags/hu.svg +7 -0
- package/assets/flags/ic.svg +7 -0
- package/assets/flags/id.svg +4 -0
- package/assets/flags/ie.svg +7 -0
- package/assets/flags/il.svg +14 -0
- package/assets/flags/im.svg +36 -0
- package/assets/flags/in.svg +25 -0
- package/assets/flags/io.svg +130 -0
- package/assets/flags/iq.svg +10 -0
- package/assets/flags/ir.svg +219 -0
- package/assets/flags/is.svg +12 -0
- package/assets/flags/it.svg +7 -0
- package/assets/flags/je.svg +62 -0
- package/assets/flags/jm.svg +8 -0
- package/assets/flags/jo.svg +16 -0
- package/assets/flags/jp.svg +11 -0
- package/assets/flags/ke.svg +23 -0
- package/assets/flags/kg.svg +4 -0
- package/assets/flags/kh.svg +61 -0
- package/assets/flags/ki.svg +36 -0
- package/assets/flags/km.svg +16 -0
- package/assets/flags/kn.svg +14 -0
- package/assets/flags/kp.svg +15 -0
- package/assets/flags/kr.svg +24 -0
- package/assets/flags/kw.svg +13 -0
- package/assets/flags/ky.svg +103 -0
- package/assets/flags/kz.svg +36 -0
- package/assets/flags/la.svg +12 -0
- package/assets/flags/lb.svg +15 -0
- package/assets/flags/lc.svg +8 -0
- package/assets/flags/li.svg +43 -0
- package/assets/flags/lk.svg +22 -0
- package/assets/flags/lr.svg +14 -0
- package/assets/flags/ls.svg +8 -0
- package/assets/flags/lt.svg +7 -0
- package/assets/flags/lu.svg +5 -0
- package/assets/flags/lv.svg +6 -0
- package/assets/flags/ly.svg +13 -0
- package/assets/flags/ma.svg +4 -0
- package/assets/flags/mc.svg +6 -0
- package/assets/flags/md.svg +70 -0
- package/assets/flags/me.svg +116 -0
- package/assets/flags/mf.svg +5 -0
- package/assets/flags/mg.svg +7 -0
- package/assets/flags/mh.svg +7 -0
- package/assets/flags/mk.svg +5 -0
- package/assets/flags/ml.svg +7 -0
- package/assets/flags/mm.svg +12 -0
- package/assets/flags/mn.svg +14 -0
- package/assets/flags/mo.svg +9 -0
- package/assets/flags/mp.svg +86 -0
- package/assets/flags/mq.svg +5 -0
- package/assets/flags/mr.svg +6 -0
- package/assets/flags/ms.svg +29 -0
- package/assets/flags/mt.svg +58 -0
- package/assets/flags/mu.svg +8 -0
- package/assets/flags/mv.svg +6 -0
- package/assets/flags/mw.svg +10 -0
- package/assets/flags/mx.svg +382 -0
- package/assets/flags/my.svg +26 -0
- package/assets/flags/mz.svg +21 -0
- package/assets/flags/na.svg +16 -0
- package/assets/flags/nc.svg +13 -0
- package/assets/flags/ne.svg +6 -0
- package/assets/flags/nf.svg +9 -0
- package/assets/flags/ng.svg +6 -0
- package/assets/flags/ni.svg +129 -0
- package/assets/flags/nl.svg +5 -0
- package/assets/flags/no.svg +7 -0
- package/assets/flags/np.svg +13 -0
- package/assets/flags/nr.svg +12 -0
- package/assets/flags/nu.svg +10 -0
- package/assets/flags/nz.svg +36 -0
- package/assets/flags/om.svg +115 -0
- package/assets/flags/pa.svg +14 -0
- package/assets/flags/pc.svg +33 -0
- package/assets/flags/pe.svg +4 -0
- package/assets/flags/pf.svg +19 -0
- package/assets/flags/pg.svg +9 -0
- package/assets/flags/ph.svg +6 -0
- package/assets/flags/pk.svg +15 -0
- package/assets/flags/pl.svg +6 -0
- package/assets/flags/pm.svg +5 -0
- package/assets/flags/pn.svg +53 -0
- package/assets/flags/pr.svg +13 -0
- package/assets/flags/ps.svg +6 -0
- package/assets/flags/pt.svg +57 -0
- package/assets/flags/pw.svg +11 -0
- package/assets/flags/py.svg +157 -0
- package/assets/flags/qa.svg +4 -0
- package/assets/flags/re.svg +5 -0
- package/assets/flags/ro.svg +7 -0
- package/assets/flags/rs.svg +292 -0
- package/assets/flags/ru.svg +5 -0
- package/assets/flags/rw.svg +13 -0
- package/assets/flags/sa.svg +25 -0
- package/assets/flags/sb.svg +13 -0
- package/assets/flags/sc.svg +7 -0
- package/assets/flags/sd.svg +13 -0
- package/assets/flags/se.svg +4 -0
- package/assets/flags/sg.svg +13 -0
- package/assets/flags/sh-ac.svg +689 -0
- package/assets/flags/sh-hl.svg +164 -0
- package/assets/flags/sh-ta.svg +76 -0
- package/assets/flags/sh.svg +7 -0
- package/assets/flags/si.svg +18 -0
- package/assets/flags/sj.svg +7 -0
- package/assets/flags/sk.svg +9 -0
- package/assets/flags/sl.svg +7 -0
- package/assets/flags/sm.svg +75 -0
- package/assets/flags/sn.svg +8 -0
- package/assets/flags/so.svg +11 -0
- package/assets/flags/sr.svg +6 -0
- package/assets/flags/ss.svg +8 -0
- package/assets/flags/st.svg +16 -0
- package/assets/flags/sv.svg +593 -0
- package/assets/flags/sx.svg +56 -0
- package/assets/flags/sy.svg +6 -0
- package/assets/flags/sz.svg +34 -0
- package/assets/flags/tc.svg +50 -0
- package/assets/flags/td.svg +7 -0
- package/assets/flags/tf.svg +15 -0
- package/assets/flags/tg.svg +14 -0
- package/assets/flags/th.svg +7 -0
- package/assets/flags/tj.svg +22 -0
- package/assets/flags/tk.svg +5 -0
- package/assets/flags/tl.svg +13 -0
- package/assets/flags/tm.svg +204 -0
- package/assets/flags/tn.svg +4 -0
- package/assets/flags/to.svg +10 -0
- package/assets/flags/tr.svg +8 -0
- package/assets/flags/tt.svg +5 -0
- package/assets/flags/tv.svg +9 -0
- package/assets/flags/tw.svg +34 -0
- package/assets/flags/tz.svg +13 -0
- package/assets/flags/ua.svg +6 -0
- package/assets/flags/ug.svg +30 -0
- package/assets/flags/um.svg +9 -0
- package/assets/flags/un.svg +16 -0
- package/assets/flags/us.svg +9 -0
- package/assets/flags/uy.svg +28 -0
- package/assets/flags/uz.svg +30 -0
- package/assets/flags/va.svg +190 -0
- package/assets/flags/vc.svg +8 -0
- package/assets/flags/ve.svg +26 -0
- package/assets/flags/vg.svg +59 -0
- package/assets/flags/vi.svg +28 -0
- package/assets/flags/vn.svg +11 -0
- package/assets/flags/vu.svg +21 -0
- package/assets/flags/wf.svg +5 -0
- package/assets/flags/ws.svg +7 -0
- package/assets/flags/xk.svg +5 -0
- package/assets/flags/xx.svg +4 -0
- package/assets/flags/ye.svg +7 -0
- package/assets/flags/yt.svg +5 -0
- package/assets/flags/za.svg +17 -0
- package/assets/flags/zm.svg +27 -0
- package/assets/flags/zw.svg +21 -0
- package/components/ln-data-coordinator/ln-data-coordinator.js +1 -1
- package/components/ln-date/ln-date.js +1 -1
- package/components/ln-debug/ln-debug.js +1 -1
- package/components/ln-debug/src/generated-attributes.js +306 -304
- package/components/ln-external-links/ln-external-links.js +1 -1
- package/components/ln-filter/ln-filter.js +1 -1
- package/components/ln-obfuscator/ln-obfuscator.js +1 -1
- package/components/ln-sort/ln-sort.js +1 -1
- package/components/ln-table/ln-table.js +1 -1
- package/components/ln-table-coordinator/ln-table-coordinator.js +1 -1
- package/components/ln-toast/ln-toast.js +1 -1
- package/components/ln-translations/README.md +202 -120
- package/components/ln-translations/ln-translations.js +1 -1
- package/components/ln-translations/ln-translations.schema.json +136 -120
- package/components/ln-translations/src/ln-translations.js +354 -295
- package/components/ln-translations/src/translations-model.js +221 -0
- package/components/ln-validate/ln-validate.js +1 -1
- package/ln-ashlar.html-data.json +1832 -1824
- package/package.json +2 -1
- package/theme/components/_translations.scss +118 -111
- package/theme/config/_breakpoints.scss +8 -0
- package/theme/config/mixins/_app-shell.scss +14 -0
- package/theme/config/mixins/_card.scss +7 -4
- package/theme/config/mixins/_count.scss +48 -0
- package/theme/config/mixins/_dropdown.scss +5 -1
- package/theme/config/mixins/_index.scss +1 -0
- package/theme/config/mixins/_nav.scss +3 -11
- package/theme/config/mixins/_popover.scss +12 -1
- package/theme/config/mixins/_translations.scss +126 -124
- package/theme/presentation/_effects.scss +68 -0
- package/theme/presentation/_navbar.scss +72 -1
- package/theme/presentation/_typography.scss +13 -0
- package/web-types.json +2365 -2351
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livenetworks/ashlar",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "LiveNetworks unified frontend library - CSS framework and vanilla JS components",
|
|
5
5
|
"license": "GPL-3.0-or-later",
|
|
6
6
|
"author": "Live Networks",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"dist/",
|
|
30
30
|
"theme/",
|
|
31
31
|
"components/",
|
|
32
|
+
"assets/",
|
|
32
33
|
"ln-ashlar.html-data.json",
|
|
33
34
|
"web-types.json"
|
|
34
35
|
],
|
|
@@ -1,111 +1,118 @@
|
|
|
1
|
-
@use '../config/mixins' as *;
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
[data-ln-
|
|
76
|
-
[data-ln-translations-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
1
|
+
@use '../config/mixins' as *;
|
|
2
|
+
|
|
3
|
+
// Configurable base path for flags (resolves relative to compiled CSS)
|
|
4
|
+
$flag-base-path: '../../assets/flags' !default;
|
|
5
|
+
|
|
6
|
+
[data-ln-translatable-lang] {
|
|
7
|
+
@include translations-flag-input;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
textarea[data-ln-translatable-lang] {
|
|
11
|
+
background-position: var(--size-sm-up) calc(var(--size-sm) + (var(--size-lg) - var(--size-md-up) * 3 / 4) / 2);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
button[data-ln-translations-lang] {
|
|
15
|
+
@include translations-dropdown-flag;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// ─── Flag icons per language ─────────────────────────────────────
|
|
19
|
+
// Lang code (ISO 639-1) -> country flag (ISO 3166-1 alpha-2).
|
|
20
|
+
|
|
21
|
+
$lang-flag-overrides: (
|
|
22
|
+
en: 'gb',
|
|
23
|
+
sq: 'al',
|
|
24
|
+
sr: 'rs',
|
|
25
|
+
ja: 'jp',
|
|
26
|
+
ko: 'kr',
|
|
27
|
+
zh: 'cn',
|
|
28
|
+
cs: 'cz',
|
|
29
|
+
da: 'dk',
|
|
30
|
+
el: 'gr',
|
|
31
|
+
he: 'il',
|
|
32
|
+
hi: 'in',
|
|
33
|
+
uk: 'ua',
|
|
34
|
+
vi: 'vn',
|
|
35
|
+
sv: 'se',
|
|
36
|
+
nb: 'no',
|
|
37
|
+
nn: 'no',
|
|
38
|
+
ca: 'es',
|
|
39
|
+
eu: 'es',
|
|
40
|
+
gl: 'es',
|
|
41
|
+
fa: 'ir',
|
|
42
|
+
ar: 'sa',
|
|
43
|
+
ms: 'my',
|
|
44
|
+
sl: 'si',
|
|
45
|
+
et: 'ee',
|
|
46
|
+
ka: 'ge',
|
|
47
|
+
hy: 'am',
|
|
48
|
+
be: 'by',
|
|
49
|
+
bs: 'ba',
|
|
50
|
+
hr: 'hr',
|
|
51
|
+
ga: 'ie',
|
|
52
|
+
cy: 'gb',
|
|
53
|
+
sw: 'ke',
|
|
54
|
+
bn: 'bd',
|
|
55
|
+
ur: 'pk',
|
|
56
|
+
ta: 'lk',
|
|
57
|
+
te: 'in',
|
|
58
|
+
ml: 'in',
|
|
59
|
+
kn: 'in',
|
|
60
|
+
mr: 'in',
|
|
61
|
+
gu: 'in',
|
|
62
|
+
pa: 'in',
|
|
63
|
+
ne: 'np',
|
|
64
|
+
km: 'kh',
|
|
65
|
+
lo: 'la',
|
|
66
|
+
my: 'mm',
|
|
67
|
+
af: 'za',
|
|
68
|
+
zu: 'za',
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
$lang-auto: mk, de, fr, it, bg, pt, ro, nl, pl, fi, hu, lt, lv, tr, az, is, mt, lb, no, ru, th, id;
|
|
72
|
+
|
|
73
|
+
@each $lang, $country in $lang-flag-overrides {
|
|
74
|
+
[data-ln-translatable-lang="#{$lang}"],
|
|
75
|
+
[data-ln-translations-active] [data-ln-translations-lang="#{$lang}"],
|
|
76
|
+
button[data-ln-translations-lang="#{$lang}"]::before {
|
|
77
|
+
background-image: var(--ln-flag-#{$lang}, url('#{$flag-base-path}/#{$country}.svg'));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@each $lang in $lang-auto {
|
|
82
|
+
[data-ln-translatable-lang="#{$lang}"],
|
|
83
|
+
[data-ln-translations-active] [data-ln-translations-lang="#{$lang}"],
|
|
84
|
+
button[data-ln-translations-lang="#{$lang}"]::before {
|
|
85
|
+
background-image: var(--ln-flag-#{$lang}, url('#{$flag-base-path}/#{$lang}.svg'));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// ─── Header actions ──────────────────────────────────────────────
|
|
90
|
+
|
|
91
|
+
.ln-translations__actions {
|
|
92
|
+
@include translations-actions;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
[data-ln-translations-active] {
|
|
96
|
+
@include translations-active-list;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
[data-ln-translations-active] p {
|
|
100
|
+
@include translations-badge;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
[data-ln-translations-active] button {
|
|
104
|
+
@include translations-badge-remove;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
[data-ln-translations-add] {
|
|
108
|
+
@include translations-add-button;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// ─── Reduced motion ─────────────────────────────────────────────
|
|
112
|
+
|
|
113
|
+
@media (prefers-reduced-motion: reduce) {
|
|
114
|
+
[data-ln-translations-add],
|
|
115
|
+
[data-ln-translations-active] button {
|
|
116
|
+
transition: none;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -28,6 +28,12 @@ $bp-xl: 1280px;
|
|
|
28
28
|
$bp-2xl: 1536px;
|
|
29
29
|
$bp-3xl: 1920px;
|
|
30
30
|
|
|
31
|
+
// -----------------------------------------------------------------------
|
|
32
|
+
// Presentation navbar collapse (for @media — presentation/_navbar.scss)
|
|
33
|
+
// -----------------------------------------------------------------------
|
|
34
|
+
// Below this width .site-header hides .nav-menu and shows .menu-toggle.
|
|
35
|
+
$bp-nav: 820px;
|
|
36
|
+
|
|
31
37
|
// -----------------------------------------------------------------------
|
|
32
38
|
// Container-query breakpoints (for @container — components)
|
|
33
39
|
// -----------------------------------------------------------------------
|
|
@@ -46,6 +52,7 @@ $cq-wide: 1120px;
|
|
|
46
52
|
--bp-xl: #{$bp-xl};
|
|
47
53
|
--bp-2xl: #{$bp-2xl};
|
|
48
54
|
--bp-3xl: #{$bp-3xl};
|
|
55
|
+
--bp-nav: #{$bp-nav};
|
|
49
56
|
|
|
50
57
|
--cq-narrow: #{$cq-narrow};
|
|
51
58
|
--cq-compact: #{$cq-compact};
|
|
@@ -65,6 +72,7 @@ $breakpoints: (
|
|
|
65
72
|
xl: $bp-xl,
|
|
66
73
|
2xl: $bp-2xl,
|
|
67
74
|
3xl: $bp-3xl,
|
|
75
|
+
nav: $bp-nav,
|
|
68
76
|
narrow: $cq-narrow,
|
|
69
77
|
compact: $cq-compact,
|
|
70
78
|
medium: $cq-medium,
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
@use 'interaction' as *;
|
|
13
13
|
@use 'sidebar' as *;
|
|
14
14
|
@use 'card' as *;
|
|
15
|
+
@use 'count' as *;
|
|
15
16
|
|
|
16
17
|
// ─── App Shell ──────────────────────────────────────────────────────────────
|
|
17
18
|
// Mobile-ready application shell: fixed header, sidebar drawer, scrim overlay.
|
|
@@ -159,6 +160,19 @@
|
|
|
159
160
|
border: 0;
|
|
160
161
|
}
|
|
161
162
|
}
|
|
163
|
+
|
|
164
|
+
// Unread counter — <data value="3">3</data> as a direct child,
|
|
165
|
+
// pinned over the corner. Solid accent; tone via status class
|
|
166
|
+
// (<data value="3" class="error">3</data>).
|
|
167
|
+
&:has(> data) {
|
|
168
|
+
@include relative;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
> data {
|
|
172
|
+
@include count;
|
|
173
|
+
@include count-solid;
|
|
174
|
+
@include count-overlay;
|
|
175
|
+
}
|
|
162
176
|
}
|
|
163
177
|
}
|
|
164
178
|
|
|
@@ -30,13 +30,16 @@
|
|
|
30
30
|
|
|
31
31
|
// Only whole-card links/buttons signal interaction. Passive containers
|
|
32
32
|
// must not respond merely because the pointer crosses their content.
|
|
33
|
+
// A whole-card link is the card's ONLY child (`> a:only-child`); a link
|
|
34
|
+
// that sits next to other content (a "Read more" under a paragraph) is
|
|
35
|
+
// an ordinary link and leaves the card alone.
|
|
33
36
|
&:is(a, button):hover:not(:disabled),
|
|
34
|
-
&:has(> a:hover) {
|
|
37
|
+
&:has(> a:only-child:hover) {
|
|
35
38
|
--color-border: color-mix(in srgb, var(--color-accent) 35%, transparent);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
&:is(a, button):focus-visible,
|
|
39
|
-
&:has(> a:focus-visible) {
|
|
42
|
+
&:has(> a:only-child:focus-visible) {
|
|
40
43
|
@include focus-ring;
|
|
41
44
|
}
|
|
42
45
|
|
|
@@ -56,7 +59,7 @@
|
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
// Whole-card-as-link: <a> wraps card content and fills the card.
|
|
59
|
-
> a {
|
|
62
|
+
> a:only-child {
|
|
60
63
|
@include flex-col;
|
|
61
64
|
@include flex-1;
|
|
62
65
|
text-decoration: none;
|
|
@@ -263,7 +266,7 @@
|
|
|
263
266
|
|
|
264
267
|
@mixin _card-accent-base {
|
|
265
268
|
&:is(a, button):hover:not(:disabled),
|
|
266
|
-
&:has(> a:hover) {
|
|
269
|
+
&:has(> a:only-child:hover) {
|
|
267
270
|
background-color: color-mix(in srgb, var(--color-accent) var(--tint-hover), transparent);
|
|
268
271
|
}
|
|
269
272
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
@use 'display' as *;
|
|
2
|
+
@use 'typography' as *;
|
|
3
|
+
@use 'position' as *;
|
|
4
|
+
|
|
5
|
+
// ─── Count ──────────────────────────────────────────────────────────────────
|
|
6
|
+
// Numeric counter pill — unread items, queue sizes, list totals. The
|
|
7
|
+
// element is <data value="24">24</data>: the value attribute carries the
|
|
8
|
+
// machine-readable number, the text the formatted one.
|
|
9
|
+
//
|
|
10
|
+
// @include count; ← neutral pill, tinted from --color-fg
|
|
11
|
+
// @include count-solid; ← delta: solid accent fill. Tone follows the
|
|
12
|
+
// semantic-color cascade — <data class="error">
|
|
13
|
+
// @include count-overlay; ← delta: pinned over the top-end corner of the
|
|
14
|
+
// nearest positioned ancestor (icon buttons).
|
|
15
|
+
// The host must be positioned.
|
|
16
|
+
//
|
|
17
|
+
// Bound structurally by @mixin nav (a > data) and @mixin app-header-actions
|
|
18
|
+
// (button > data).
|
|
19
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
20
|
+
|
|
21
|
+
@mixin count {
|
|
22
|
+
@include flex-shrink-0;
|
|
23
|
+
padding: 0 var(--size-xs-up);
|
|
24
|
+
min-width: 1.5rem;
|
|
25
|
+
text-align: center;
|
|
26
|
+
border-radius: var(--radius-full);
|
|
27
|
+
@include text-xs;
|
|
28
|
+
@include font-semibold;
|
|
29
|
+
font-variant-numeric: tabular-nums;
|
|
30
|
+
background: color-mix(in srgb, var(--color-fg) 12%, transparent);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@mixin count-solid {
|
|
34
|
+
background: var(--color-accent);
|
|
35
|
+
color: var(--color-accent-fg);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@mixin count-overlay {
|
|
39
|
+
@include absolute;
|
|
40
|
+
// em, not rem — the offsets and the circle track the counter's own
|
|
41
|
+
// font-size, so a rebound size keeps the same geometry.
|
|
42
|
+
inset-block-start: -0.5em;
|
|
43
|
+
inset-inline-end: -0.5em;
|
|
44
|
+
min-width: 1.5em;
|
|
45
|
+
padding-inline: var(--size-2xs);
|
|
46
|
+
line-height: 1.5em;
|
|
47
|
+
pointer-events: none;
|
|
48
|
+
}
|
|
@@ -141,7 +141,6 @@
|
|
|
141
141
|
@include fixed;
|
|
142
142
|
inset: auto;
|
|
143
143
|
margin: 0;
|
|
144
|
-
padding: var(--padding-y);
|
|
145
144
|
min-width: var(--dropdown-min-width, 14rem);
|
|
146
145
|
@include enter-scale-fade;
|
|
147
146
|
|
|
@@ -167,4 +166,9 @@
|
|
|
167
166
|
}
|
|
168
167
|
|
|
169
168
|
@include menu-items;
|
|
169
|
+
|
|
170
|
+
// Panel inset — after menu-items on purpose: the panel IS the <ul>,
|
|
171
|
+
// and menu-items' list reset (padding: 0) would otherwise zero it,
|
|
172
|
+
// leaving the item highlight flush against the panel border.
|
|
173
|
+
padding: var(--padding-y);
|
|
170
174
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
@use 'motion' as *;
|
|
9
9
|
@use 'interaction' as *;
|
|
10
10
|
@use 'position' as *;
|
|
11
|
+
@use 'count' as *;
|
|
11
12
|
|
|
12
13
|
// ─── Nav ────────────────────────────────────────────────────────────────────
|
|
13
14
|
// Navigation structure reset. Layout (flex-col, h-full) and background come
|
|
@@ -64,21 +65,12 @@
|
|
|
64
65
|
|
|
65
66
|
// Trailing counter — <data value="24">24</data> as the last child of a.
|
|
66
67
|
a > data {
|
|
67
|
-
@include
|
|
68
|
+
@include count;
|
|
68
69
|
margin-inline-start: auto;
|
|
69
|
-
padding: 0 var(--size-xs-up);
|
|
70
|
-
min-width: 1.5rem;
|
|
71
|
-
text-align: center;
|
|
72
|
-
border-radius: var(--radius-full);
|
|
73
|
-
@include text-xs;
|
|
74
|
-
@include font-semibold;
|
|
75
|
-
font-variant-numeric: tabular-nums;
|
|
76
|
-
background: color-mix(in srgb, var(--color-fg) 12%, transparent);
|
|
77
70
|
}
|
|
78
71
|
|
|
79
72
|
a[aria-current="page"] > data {
|
|
80
|
-
|
|
81
|
-
color: var(--color-accent-fg);
|
|
73
|
+
@include count-solid;
|
|
82
74
|
}
|
|
83
75
|
|
|
84
76
|
// Section heading — small uppercase eyebrow, clearly not a link.
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
@use 'form' as *;
|
|
6
6
|
@use 'focus' as *;
|
|
7
7
|
@use 'dropdown' as *;
|
|
8
|
+
@use 'typography' as *;
|
|
8
9
|
|
|
9
10
|
@mixin popover {
|
|
10
11
|
@include floating-panel;
|
|
@@ -37,7 +38,17 @@
|
|
|
37
38
|
margin: var(--size-xs) 0;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
> ul
|
|
41
|
+
// Menu popover caption (profile menu: <p> + <hr> + <nav><ul>) — sits on
|
|
42
|
+
// the item labels' inline grid instead of the bare panel inset.
|
|
43
|
+
&:has(> ul > li > :is(a, button), > nav > ul > li > :is(a, button)) > p {
|
|
44
|
+
margin: 0;
|
|
45
|
+
padding: var(--padding-y) var(--padding-x);
|
|
46
|
+
@include typography(body-sm);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// `nav > ul` is the canonical profile-menu shape (see ln-popover markup).
|
|
50
|
+
> ul,
|
|
51
|
+
> nav > ul {
|
|
41
52
|
list-style: none;
|
|
42
53
|
padding: 0;
|
|
43
54
|
margin: 0;
|