morya-ui 0.2.5 → 0.2.6

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # morya-ui
2
2
 
3
+ ## 0.2.6
4
+
5
+ ### 新功能
6
+
7
+ - enhance SEO and documentation for Morya UI
8
+
9
+ ### 修复
10
+
11
+ - harden Layout fillViewport, Menu links, and ConfigProvider theme
12
+
13
+ ### 文档
14
+
15
+ - update component count to 90+ in README and related files
16
+
3
17
  ## 0.2.5
4
18
 
5
19
  ### 破坏性变更
package/README.md CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  ## Introduction
38
38
 
39
- **Morya UI** (`morya-ui`) is an open-source Vue 3 component library for building modern web applications. It ships **88 components**, a token-based theme system, built-in i18n, and a documentation site with live previews.
39
+ **Morya UI** (`morya-ui`) is an open-source Vue 3 component library for building modern web applications. It ships **90+ components**, a token-based theme system, built-in i18n, and a documentation site with live previews.
40
40
 
41
41
  Whether you are starting a new admin dashboard, SaaS product, or internal tool, you get consistent forms, overlays, data display, and feedback primitives out of the box.
42
42
 
@@ -44,7 +44,7 @@ Whether you are starting a new admin dashboard, SaaS product, or internal tool,
44
44
 
45
45
  ### Complete
46
46
 
47
- 88 components covering basics, forms, navigation, data display, layout, and feedback — all tree-shakeable via ESM subpath imports.
47
+ 90+ components covering basics, forms, navigation, data display, layout, and feedback — all tree-shakeable via ESM subpath imports.
48
48
 
49
49
  ### Theme-ready
50
50
 
package/README.zh-CN.md CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  ## 介绍
38
38
 
39
- **Morya UI**(`morya-ui`)是一套开源的 Vue 3 组件库,提供 **88 个组件**、基于令牌的主题系统、内置国际化,以及带实时预览的文档站。
39
+ **Morya UI**(`morya-ui`)是一套开源的 Vue 3 组件库,提供 **90+ 个组件**、基于令牌的主题系统、内置国际化,以及带实时预览的文档站。
40
40
 
41
41
  无论你是做管理后台、SaaS 产品还是内部工具,都可以直接使用统一的表单、浮层、数据展示与反馈能力。
42
42
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  ### 组件齐全
46
46
 
47
- 覆盖基础、表单、导航、数据展示、布局与反馈等 88 个组件,均支持 ESM 按需引入与 tree-shaking。
47
+ 覆盖基础、表单、导航、数据展示、布局与反馈等 90+ 个组件,均支持 ESM 按需引入与 tree-shaking。
48
48
 
49
49
  ### 主题开箱即用
50
50
 
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigProvider.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ConfigProvider/ConfigProvider.vue"],"names":[],"mappings":";AA2KA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAW/D,KAAK,WAAW,GAAG;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACpC,uCAAuC;IACvC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5B,wCAAwC;IACxC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5C,uCAAuC;IACvC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAChC,kCAAkC;IAClC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9B,oCAAoC;IACpC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAChC,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IACtD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAA;IAC5D;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,EAAE,CAAC,EAAE,eAAe,CAAA;CACrB,CAAC;AAkJF,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ConfigProvider.vue.d.ts","sourceRoot":"","sources":["../../../src/components/ConfigProvider/ConfigProvider.vue"],"names":[],"mappings":";AAiMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAW/D,KAAK,WAAW,GAAG;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACpC,uCAAuC;IACvC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC5B,wCAAwC;IACxC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IAC5C,uCAAuC;IACvC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAChC,kCAAkC;IAClC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IAClC,4DAA4D;IAC5D,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9B,oCAAoC;IACpC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;IAChC,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IACtD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAA;IAC5D;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,EAAE,CAAC,EAAE,eAAe,CAAA;CACrB,CAAC;AAoKF,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -28,7 +28,12 @@
28
28
  }
29
29
 
30
30
  .m-layout--fill-viewport {
31
+ /* Definite height so has-sider children with min-height:100% / flex stretch fill the viewport.
32
+ min-height alone leaves height:auto and percentage children collapse to content height. */
33
+ height: 100vh;
34
+ height: 100dvh;
31
35
  min-height: 100vh;
36
+ min-height: 100dvh;
32
37
  }
33
38
 
34
39
  .m-layout--absolute-positioned {
@@ -23,7 +23,7 @@ export interface LayoutProps {
23
23
  contentClass?: string;
24
24
  /** Extra style on the scroll / content wrapper. */
25
25
  contentStyle?: string | CSSProperties;
26
- /** Stretch the layout to at least the viewport height. */
26
+ /** Stretch the layout to the viewport height (`100dvh`) so sider/content fill the screen. */
27
27
  fillViewport?: boolean;
28
28
  }
29
29
  export interface LayoutHeaderProps {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/types.ts"],"names":[],"mappings":"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"}
@@ -272,6 +272,7 @@
272
272
  align-items: center;
273
273
  border-radius: var(--m-menu-item-radius);
274
274
  box-sizing: border-box;
275
+ color: var(--m-menu-item-text);
275
276
  cursor: pointer;
276
277
  display: grid;
277
278
  grid-template-areas: "icon label arrow";
@@ -280,12 +281,23 @@
280
281
  line-height: 1.75;
281
282
  padding-inline-end: 0.75rem;
282
283
  position: relative;
284
+ text-decoration: none;
283
285
  transition:
284
286
  color var(--m-motion-fast) var(--m-motion-ease),
285
287
  background-color var(--m-motion-fast) var(--m-motion-ease),
286
288
  padding-inline-start var(--m-motion-fast) var(--m-motion-ease);
287
289
  }
288
290
 
291
+ /* RouterLink / <a> must not keep browser link chrome (blue + underline). */
292
+ a.m-menu__item-content,
293
+ a.m-menu__item-content:link,
294
+ a.m-menu__item-content:visited,
295
+ a.m-menu__item-content:hover,
296
+ a.m-menu__item-content:active {
297
+ color: var(--m-menu-item-text);
298
+ text-decoration: none;
299
+ }
300
+
289
301
  .m-menu__item-content--no-icon {
290
302
  grid-template-areas: "label arrow";
291
303
  grid-template-columns: minmax(0, 1fr) auto;
@@ -317,6 +329,13 @@
317
329
  background: var(--m-menu-item-color-active) !important;
318
330
  }
319
331
 
332
+ .m-menu__item-content--selected,
333
+ a.m-menu__item-content--selected,
334
+ a.m-menu__item-content--selected:link,
335
+ a.m-menu__item-content--selected:visited {
336
+ color: var(--m-menu-item-text-active);
337
+ }
338
+
320
339
  .m-menu__item-content--selected .m-menu__label,
321
340
  .m-menu__item-content--selected .m-menu__icon,
322
341
  .m-menu__item-content--selected .m-menu__arrow {
@@ -72,7 +72,7 @@ function P(e, t) {
72
72
  }
73
73
  //#endregion
74
74
  //#region src/components/ConfigProvider/ConfigProvider.vue?vue&type=script&setup=true&lang.ts
75
- var F = ["data-m-density"], I = /* @__PURE__ */ o({
75
+ var F = ["data-m-density", "data-theme"], I = /* @__PURE__ */ o({
76
76
  inheritAttrs: !1,
77
77
  __name: "ConfigProvider",
78
78
  props: {
@@ -106,32 +106,45 @@ var F = ["data-m-density"], I = /* @__PURE__ */ o({
106
106
  return t(e, b.value);
107
107
  });
108
108
  n(x);
109
- let S = i(() => x.value.density ?? "comfortable"), w = i(() => d.globalDensity !== !1), T = i(() => {
109
+ let S = i(() => x.value.density ?? "comfortable"), w = i(() => {
110
+ let e = x.value.theme;
111
+ if (e !== void 0) return e === "system" ? N() : e;
112
+ }), T = i(() => d.globalDensity !== !1), E = i(() => {
110
113
  let e = x.value.zIndex;
111
114
  if (e != null) return { "--m-z-base": String(e) };
112
- }), E, D, O, k, j = null;
113
- function M() {
114
- x.value.theme === "system" && P(N());
115
- }
115
+ }), D, O, k, j, M = null;
116
116
  function I() {
117
- typeof document > "u" || (k = document.documentElement.dataset.mIgnoreReducedMotion, A(x.value.respectReducedMotion));
117
+ M?.removeEventListener("change", L), M = null;
118
118
  }
119
119
  function L() {
120
- if (!w.value || typeof document > "u") return;
120
+ x.value.theme === "system" && P(N());
121
+ }
122
+ function R() {
123
+ typeof document > "u" || (j = document.documentElement.dataset.mIgnoreReducedMotion, A(x.value.respectReducedMotion));
124
+ }
125
+ function z() {
126
+ if (!T.value || typeof document > "u") return;
121
127
  let { density: e, zIndex: t, theme: n } = x.value;
122
- e && (E = document.documentElement.dataset.mDensity, C(e)), t != null && (D = document.documentElement.style.getPropertyValue("--m-z-base"), document.documentElement.style.setProperty("--m-z-base", String(t))), n !== void 0 && (O = document.documentElement.dataset.theme, P(n === "system" ? N() : n)), n === "system" && typeof window < "u" && (j?.removeEventListener("change", M), j = window.matchMedia("(prefers-color-scheme: dark)"), j.addEventListener("change", M));
128
+ e && (D = document.documentElement.dataset.mDensity, C(e)), t != null && (O = document.documentElement.style.getPropertyValue("--m-z-base"), document.documentElement.style.setProperty("--m-z-base", String(t))), n !== void 0 && (k = document.documentElement.dataset.theme, P(n === "system" ? N() : n)), n === "system" && typeof window < "u" ? (I(), M = window.matchMedia("(prefers-color-scheme: dark)"), M.addEventListener("change", L)) : I();
123
129
  }
124
- return g(() => x.value.respectReducedMotion, I, { immediate: !0 }), g(() => [
125
- w.value,
130
+ return g(() => x.value.respectReducedMotion, R, { immediate: !0 }), g(() => [
131
+ T.value,
126
132
  x.value.density,
127
133
  x.value.zIndex,
128
134
  x.value.theme
129
- ], L, { immediate: !0 }), l(() => {
130
- typeof document > "u" || (k !== void 0 && (k ? document.documentElement.dataset.mIgnoreReducedMotion = k : delete document.documentElement.dataset.mIgnoreReducedMotion), w.value && (E !== void 0 && (E ? document.documentElement.dataset.mDensity = E : delete document.documentElement.dataset.mDensity), D !== void 0 && (D ? document.documentElement.style.setProperty("--m-z-base", D) : document.documentElement.style.removeProperty("--m-z-base")), O !== void 0 && (O ? document.documentElement.dataset.theme = O : delete document.documentElement.dataset.theme), j?.removeEventListener("change", M), j = null));
135
+ ], z, { immediate: !0 }), l(() => {
136
+ if (!(typeof document > "u")) {
137
+ if (j !== void 0 && (j ? document.documentElement.dataset.mIgnoreReducedMotion = j : delete document.documentElement.dataset.mIgnoreReducedMotion), !T.value) {
138
+ I();
139
+ return;
140
+ }
141
+ D !== void 0 && (D ? document.documentElement.dataset.mDensity = D : delete document.documentElement.dataset.mDensity), O !== void 0 && (O ? document.documentElement.style.setProperty("--m-z-base", O) : document.documentElement.style.removeProperty("--m-z-base")), k !== void 0 && (k ? document.documentElement.dataset.theme = k : delete document.documentElement.dataset.theme), I();
142
+ }
131
143
  }), (e, t) => (u(), a("div", c(m(v), {
132
144
  class: "m-config-provider",
133
145
  "data-m-density": S.value,
134
- style: T.value
146
+ "data-theme": w.value,
147
+ style: E.value
135
148
  }), [f(e.$slots, "default")], 16, F));
136
149
  }
137
150
  });
package/dist/index.js CHANGED
@@ -3530,7 +3530,7 @@ var Rr = ["aria-label"], zr = ["placeholder", "aria-label"], Br = [
3530
3530
  _: 1
3531
3531
  })], 8, ["to", "disabled"]));
3532
3532
  }
3533
- }), Kr = ["data-m-density"], qr = /* @__PURE__ */ h({
3533
+ }), Kr = ["data-m-density", "data-theme"], qr = /* @__PURE__ */ h({
3534
3534
  inheritAttrs: !1,
3535
3535
  __name: "ConfigProvider",
3536
3536
  props: {
@@ -3561,32 +3561,45 @@ var Rr = ["aria-label"], zr = ["placeholder", "aria-label"], Br = [
3561
3561
  ...t.respectReducedMotion === void 0 ? {} : { respectReducedMotion: t.respectReducedMotion }
3562
3562
  })), a = s(() => ut(r ? W(r) : {}, i.value));
3563
3563
  lt(a);
3564
- let o = s(() => a.value.density ?? "comfortable"), c = s(() => t.globalDensity !== !1), l = s(() => {
3564
+ let o = s(() => a.value.density ?? "comfortable"), c = s(() => {
3565
+ let e = a.value.theme;
3566
+ if (e !== void 0) return e === "system" ? Ge() : e;
3567
+ }), l = s(() => t.globalDensity !== !1), d = s(() => {
3565
3568
  let e = a.value.zIndex;
3566
3569
  if (e != null) return { "--m-z-base": String(e) };
3567
- }), d, f, p, m, h = null;
3568
- function g() {
3569
- a.value.theme === "system" && Ke(Ge());
3570
- }
3570
+ }), f, p, m, h, g = null;
3571
3571
  function _() {
3572
- typeof document > "u" || (m = document.documentElement.dataset.mIgnoreReducedMotion, Pe(a.value.respectReducedMotion));
3572
+ g?.removeEventListener("change", v), g = null;
3573
3573
  }
3574
3574
  function v() {
3575
- if (!c.value || typeof document > "u") return;
3575
+ a.value.theme === "system" && Ke(Ge());
3576
+ }
3577
+ function b() {
3578
+ typeof document > "u" || (h = document.documentElement.dataset.mIgnoreReducedMotion, Pe(a.value.respectReducedMotion));
3579
+ }
3580
+ function x() {
3581
+ if (!l.value || typeof document > "u") return;
3576
3582
  let { density: e, zIndex: t, theme: n } = a.value;
3577
- e && (d = document.documentElement.dataset.mDensity, Ee(e)), t != null && (f = document.documentElement.style.getPropertyValue("--m-z-base"), document.documentElement.style.setProperty("--m-z-base", String(t))), n !== void 0 && (p = document.documentElement.dataset.theme, Ke(n === "system" ? Ge() : n)), n === "system" && typeof window < "u" && (h?.removeEventListener("change", g), h = window.matchMedia("(prefers-color-scheme: dark)"), h.addEventListener("change", g));
3583
+ e && (f = document.documentElement.dataset.mDensity, Ee(e)), t != null && (p = document.documentElement.style.getPropertyValue("--m-z-base"), document.documentElement.style.setProperty("--m-z-base", String(t))), n !== void 0 && (m = document.documentElement.dataset.theme, Ke(n === "system" ? Ge() : n)), n === "system" && typeof window < "u" ? (_(), g = window.matchMedia("(prefers-color-scheme: dark)"), g.addEventListener("change", v)) : _();
3578
3584
  }
3579
- return J(() => a.value.respectReducedMotion, _, { immediate: !0 }), J(() => [
3580
- c.value,
3585
+ return J(() => a.value.respectReducedMotion, b, { immediate: !0 }), J(() => [
3586
+ l.value,
3581
3587
  a.value.density,
3582
3588
  a.value.zIndex,
3583
3589
  a.value.theme
3584
- ], v, { immediate: !0 }), O(() => {
3585
- typeof document > "u" || (m !== void 0 && (m ? document.documentElement.dataset.mIgnoreReducedMotion = m : delete document.documentElement.dataset.mIgnoreReducedMotion), c.value && (d !== void 0 && (d ? document.documentElement.dataset.mDensity = d : delete document.documentElement.dataset.mDensity), f !== void 0 && (f ? document.documentElement.style.setProperty("--m-z-base", f) : document.documentElement.style.removeProperty("--m-z-base")), p !== void 0 && (p ? document.documentElement.dataset.theme = p : delete document.documentElement.dataset.theme), h?.removeEventListener("change", g), h = null));
3590
+ ], x, { immediate: !0 }), O(() => {
3591
+ if (!(typeof document > "u")) {
3592
+ if (h !== void 0 && (h ? document.documentElement.dataset.mIgnoreReducedMotion = h : delete document.documentElement.dataset.mIgnoreReducedMotion), !l.value) {
3593
+ _();
3594
+ return;
3595
+ }
3596
+ f !== void 0 && (f ? document.documentElement.dataset.mDensity = f : delete document.documentElement.dataset.mDensity), p !== void 0 && (p ? document.documentElement.style.setProperty("--m-z-base", p) : document.documentElement.style.removeProperty("--m-z-base")), m !== void 0 && (m ? document.documentElement.dataset.theme = m : delete document.documentElement.dataset.theme), _();
3597
+ }
3586
3598
  }), (e, t) => (M(), u("div", S(G(n), {
3587
3599
  class: "m-config-provider",
3588
3600
  "data-m-density": o.value,
3589
- style: l.value
3601
+ "data-theme": c.value,
3602
+ style: d.value
3590
3603
  }), [R(e.$slots, "default")], 16, Kr));
3591
3604
  }
3592
3605
  });
@@ -1214,7 +1214,12 @@
1214
1214
  }
1215
1215
 
1216
1216
  .m-layout--fill-viewport {
1217
+ /* Definite height so has-sider children with min-height:100% / flex stretch fill the viewport.
1218
+ min-height alone leaves height:auto and percentage children collapse to content height. */
1219
+ height: 100vh;
1220
+ height: 100dvh;
1217
1221
  min-height: 100vh;
1222
+ min-height: 100dvh;
1218
1223
  }
1219
1224
 
1220
1225
  .m-layout--absolute-positioned {
@@ -1662,6 +1662,7 @@
1662
1662
  align-items: center;
1663
1663
  border-radius: var(--m-menu-item-radius);
1664
1664
  box-sizing: border-box;
1665
+ color: var(--m-menu-item-text);
1665
1666
  cursor: pointer;
1666
1667
  display: grid;
1667
1668
  grid-template-areas: "icon label arrow";
@@ -1670,12 +1671,23 @@
1670
1671
  line-height: 1.75;
1671
1672
  padding-inline-end: 0.75rem;
1672
1673
  position: relative;
1674
+ text-decoration: none;
1673
1675
  transition:
1674
1676
  color var(--m-motion-fast) var(--m-motion-ease),
1675
1677
  background-color var(--m-motion-fast) var(--m-motion-ease),
1676
1678
  padding-inline-start var(--m-motion-fast) var(--m-motion-ease);
1677
1679
  }
1678
1680
 
1681
+ /* RouterLink / <a> must not keep browser link chrome (blue + underline). */
1682
+ a.m-menu__item-content,
1683
+ a.m-menu__item-content:link,
1684
+ a.m-menu__item-content:visited,
1685
+ a.m-menu__item-content:hover,
1686
+ a.m-menu__item-content:active {
1687
+ color: var(--m-menu-item-text);
1688
+ text-decoration: none;
1689
+ }
1690
+
1679
1691
  .m-menu__item-content--no-icon {
1680
1692
  grid-template-areas: "label arrow";
1681
1693
  grid-template-columns: minmax(0, 1fr) auto;
@@ -1707,6 +1719,13 @@
1707
1719
  background: var(--m-menu-item-color-active) !important;
1708
1720
  }
1709
1721
 
1722
+ .m-menu__item-content--selected,
1723
+ a.m-menu__item-content--selected,
1724
+ a.m-menu__item-content--selected:link,
1725
+ a.m-menu__item-content--selected:visited {
1726
+ color: var(--m-menu-item-text-active);
1727
+ }
1728
+
1710
1729
  .m-menu__item-content--selected .m-menu__label,
1711
1730
  .m-menu__item-content--selected .m-menu__icon,
1712
1731
  .m-menu__item-content--selected .m-menu__arrow {