picocrank 1.25.2 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/eslint.config.js +75 -0
  2. package/package.json +17 -4
  3. package/router.js +74 -0
  4. package/styles/dark-theme.css +20 -11
  5. package/styles/picocrank-extensions.css +123 -30
  6. package/supplemental-themes/catppuccin-latte-frappe/theme.css +10 -24
  7. package/supplemental-themes/dracula-alucard/theme.css +10 -24
  8. package/supplemental-themes/gruvbox-dark-light/theme.css +10 -24
  9. package/supplemental-themes/waffles/theme.css +2 -16
  10. package/vite.config.js +5 -0
  11. package/vue/components/Breadcrumbs.vue +192 -45
  12. package/vue/components/Calendar.vue +162 -145
  13. package/vue/components/DangerZone.vue +186 -0
  14. package/vue/components/FormField.spec.js +350 -0
  15. package/vue/components/FormField.vue +236 -32
  16. package/vue/components/FormLayout.spec.js +56 -0
  17. package/vue/components/Header.vue +22 -6
  18. package/vue/components/Login.vue +152 -41
  19. package/vue/components/NavigationGrid.vue +26 -180
  20. package/vue/components/NotificationBlock.vue +120 -0
  21. package/vue/components/NotificationPopup.vue +44 -41
  22. package/vue/components/Pagination.vue +5 -4
  23. package/vue/components/ReadOnlyTextArea.vue +1 -1
  24. package/vue/components/SidebarNavLink.vue +3 -3
  25. package/vue/components/Table.vue +107 -79
  26. package/vue/components/TableColumnOptionsPopover.vue +9 -0
  27. package/vue/components/Tabs.spec.js +101 -0
  28. package/vue/components/Tabs.vue +455 -81
  29. package/vue/components/TopBar.vue +2 -2
  30. package/vue/components/form-validation.spec.js +126 -0
  31. package/vue/composables/tableColumnPriorities.js +33 -0
  32. package/vue/composables/tableFilters.js +1 -1
  33. package/vue/data/navSectionHubs.js +196 -0
  34. package/vue/data/routeBreadcrumbs.js +90 -0
  35. package/vue/examples/Admin.vue +12 -12
  36. package/vue/examples/App.vue +27 -36
  37. package/vue/examples/CalendarExample.vue +32 -22
  38. package/vue/examples/ExampleHeaderThemeSwitcher.vue +1 -1
  39. package/vue/examples/FormExample.vue +76 -48
  40. package/vue/examples/Login.vue +5 -3
  41. package/vue/examples/LoginExample.vue +99 -15
  42. package/vue/examples/NavSectionHub.vue +36 -0
  43. package/vue/examples/PageStructure.vue +15 -12
  44. package/vue/examples/StatusExample.vue +248 -129
  45. package/vue/examples/TableExample.vue +72 -71
  46. package/vue/examples/TabsExample.vue +236 -257
  47. package/vue/examples/ThemePreview.vue +21 -23
  48. package/vue/examples/ViewItem.vue +32 -5
  49. package/vue/examples/Welcome.vue +3 -40
  50. package/vue/test/formTestUtils.js +279 -0
  51. package/vue/test/setup.js +5 -0
@@ -32,7 +32,7 @@ html[data-theme="dark"] {
32
32
  --dt-warning-fg: var(--dt-surface);
33
33
 
34
34
  --body-bg-color: var(--dt-background);
35
- --surface-bg-color: var(--dt-surface);
35
+ --section-bg-color: var(--dt-surface);
36
36
  --standout-bg-color: var(--dt-surface);
37
37
  --section-header-bg-color: var(--dt-surface);
38
38
  --shadow-color: var(--dt-shadow-strong);
@@ -41,8 +41,6 @@ html[data-theme="dark"] {
41
41
  --muted-text-color: var(--dt-muted);
42
42
  --annotation-key-color: var(--dt-muted);
43
43
  --link-color: var(--dt-accent);
44
- --nav-grid-accent-fg: var(--link-color);
45
- --nav-grid-accent-bg: var(--link-color);
46
44
  --border-color: var(--dt-border);
47
45
 
48
46
  --hover-background-color: var(--dt-selection);
@@ -65,6 +63,9 @@ html[data-theme="dark"] {
65
63
  --input-fg-color: var(--dt-foreground);
66
64
  --control-option-bg-color: var(--dt-background);
67
65
  --control-hover-bg-color: var(--dt-overlay);
66
+ --control-checked-bg: color-mix(in srgb, var(--dt-green) 35%, var(--standout-bg-color));
67
+ --control-checked-hover-bg: color-mix(in srgb, var(--dt-green) 45%, var(--standout-bg-color));
68
+ --control-checked-fg: var(--dt-foreground);
68
69
  --menu-hover-bg-color: var(--dt-selection);
69
70
 
70
71
  --table-row-hover-bg: var(--dt-selection);
@@ -87,19 +88,11 @@ html[data-theme="dark"] {
87
88
  --karma-bad: var(--dt-red);
88
89
  --karma-warning: var(--dt-yellow);
89
90
  --karma-severe: var(--dt-orange);
90
- --karma-important: var(--dt-purple);
91
91
  --karma-note: var(--dt-cyan);
92
92
  --karma-info: var(--dt-overlay);
93
93
  --karma-old: var(--dt-muted);
94
94
 
95
- --karma-good-fg: var(--dt-green);
96
- --karma-bad-fg: var(--dt-red);
97
- --karma-warning-fg: var(--dt-yellow);
98
- --karma-severe-fg: var(--dt-orange);
99
- --karma-important-fg: var(--dt-purple);
100
- --karma-note-fg: var(--dt-cyan);
101
- --karma-info-fg: var(--dt-muted);
102
- --karma-old-fg: var(--dt-muted);
95
+ --karma-on-bg-fg: var(--dt-good-fg);
103
96
  }
104
97
 
105
98
  html[data-theme="light"] {
@@ -126,7 +119,7 @@ html[data-theme="light"] {
126
119
  --dt-warning-fg: var(--dt-background);
127
120
 
128
121
  --body-bg-color: var(--dt-background);
129
- --surface-bg-color: var(--dt-surface);
122
+ --section-bg-color: var(--dt-surface);
130
123
  --standout-bg-color: var(--dt-surface);
131
124
  --section-header-bg-color: var(--dt-surface);
132
125
  --shadow-color: var(--dt-shadow-strong);
@@ -135,8 +128,6 @@ html[data-theme="light"] {
135
128
  --muted-text-color: var(--dt-muted);
136
129
  --annotation-key-color: var(--dt-muted);
137
130
  --link-color: var(--dt-accent);
138
- --nav-grid-accent-fg: var(--link-color);
139
- --nav-grid-accent-bg: var(--link-color);
140
131
  --border-color: var(--dt-border);
141
132
 
142
133
  --hover-background-color: var(--dt-selection);
@@ -159,6 +150,9 @@ html[data-theme="light"] {
159
150
  --input-fg-color: var(--dt-foreground);
160
151
  --control-option-bg-color: var(--dt-overlay);
161
152
  --control-hover-bg-color: var(--dt-selection);
153
+ --control-checked-bg: color-mix(in srgb, var(--dt-green) 20%, var(--standout-bg-color));
154
+ --control-checked-hover-bg: color-mix(in srgb, var(--dt-green) 28%, var(--standout-bg-color));
155
+ --control-checked-fg: var(--dt-foreground);
162
156
  --menu-hover-bg-color: var(--dt-selection);
163
157
 
164
158
  --table-row-hover-bg: var(--dt-selection);
@@ -181,17 +175,9 @@ html[data-theme="light"] {
181
175
  --karma-bad: var(--dt-red);
182
176
  --karma-warning: var(--dt-yellow);
183
177
  --karma-severe: var(--dt-orange);
184
- --karma-important: var(--dt-purple);
185
178
  --karma-note: var(--dt-cyan);
186
179
  --karma-info: var(--dt-overlay);
187
180
  --karma-old: var(--dt-muted);
188
181
 
189
- --karma-good-fg: var(--dt-green);
190
- --karma-bad-fg: var(--dt-red);
191
- --karma-warning-fg: var(--dt-yellow);
192
- --karma-severe-fg: var(--dt-orange);
193
- --karma-important-fg: var(--dt-purple);
194
- --karma-note-fg: var(--dt-cyan);
195
- --karma-info-fg: var(--dt-muted);
196
- --karma-old-fg: var(--dt-muted);
182
+ --karma-on-bg-fg: var(--dt-good-fg);
197
183
  }
@@ -35,7 +35,7 @@ html[data-theme="dark"] {
35
35
  --gb-good-fg: var(--gb-bg0-hard);
36
36
 
37
37
  --body-bg-color: var(--gb-bg0);
38
- --surface-bg-color: var(--gb-bg1);
38
+ --section-bg-color: var(--gb-bg1);
39
39
  --standout-bg-color: var(--gb-bg1);
40
40
  --section-header-bg-color: var(--gb-bg1);
41
41
  --shadow-color: var(--gb-shadow-strong);
@@ -44,8 +44,6 @@ html[data-theme="dark"] {
44
44
  --muted-text-color: var(--gb-fg3);
45
45
  --annotation-key-color: var(--gb-fg3);
46
46
  --link-color: var(--gb-accent);
47
- --nav-grid-accent-fg: var(--link-color);
48
- --nav-grid-accent-bg: var(--link-color);
49
47
  --border-color: var(--gb-bg3);
50
48
 
51
49
  --hover-background-color: var(--gb-bg2);
@@ -68,6 +66,9 @@ html[data-theme="dark"] {
68
66
  --input-fg-color: var(--gb-fg0);
69
67
  --control-option-bg-color: var(--gb-bg2);
70
68
  --control-hover-bg-color: var(--gb-bg3);
69
+ --control-checked-bg: color-mix(in srgb, var(--gb-green) 35%, var(--standout-bg-color));
70
+ --control-checked-hover-bg: color-mix(in srgb, var(--gb-green) 45%, var(--standout-bg-color));
71
+ --control-checked-fg: var(--gb-fg0);
71
72
  --menu-hover-bg-color: var(--gb-bg2);
72
73
 
73
74
  --table-row-hover-bg: var(--gb-bg2);
@@ -90,19 +91,11 @@ html[data-theme="dark"] {
90
91
  --karma-bad: var(--gb-red);
91
92
  --karma-warning: var(--gb-yellow);
92
93
  --karma-severe: var(--gb-orange);
93
- --karma-important: var(--gb-purple);
94
94
  --karma-note: var(--gb-aqua);
95
95
  --karma-info: var(--gb-bg2);
96
96
  --karma-old: var(--gb-gray);
97
97
 
98
- --karma-good-fg: var(--gb-green);
99
- --karma-bad-fg: var(--gb-red);
100
- --karma-warning-fg: var(--gb-yellow);
101
- --karma-severe-fg: var(--gb-orange);
102
- --karma-important-fg: var(--gb-purple);
103
- --karma-note-fg: var(--gb-aqua);
104
- --karma-info-fg: var(--gb-fg3);
105
- --karma-old-fg: var(--gb-fg4);
98
+ --karma-on-bg-fg: var(--gb-good-fg);
106
99
  }
107
100
 
108
101
  html[data-theme="light"] {
@@ -132,7 +125,7 @@ html[data-theme="light"] {
132
125
  --gb-good-fg: var(--gb-bg0);
133
126
 
134
127
  --body-bg-color: var(--gb-bg0);
135
- --surface-bg-color: var(--gb-bg1);
128
+ --section-bg-color: var(--gb-bg1);
136
129
  --standout-bg-color: var(--gb-bg1);
137
130
  --section-header-bg-color: var(--gb-bg1);
138
131
  --shadow-color: var(--gb-shadow-strong);
@@ -141,8 +134,6 @@ html[data-theme="light"] {
141
134
  --muted-text-color: var(--gb-fg3);
142
135
  --annotation-key-color: var(--gb-fg3);
143
136
  --link-color: var(--gb-accent);
144
- --nav-grid-accent-fg: var(--link-color);
145
- --nav-grid-accent-bg: var(--link-color);
146
137
  --border-color: var(--gb-bg3);
147
138
 
148
139
  --hover-background-color: var(--gb-bg2);
@@ -165,6 +156,9 @@ html[data-theme="light"] {
165
156
  --input-fg-color: var(--gb-fg0);
166
157
  --control-option-bg-color: var(--gb-bg2);
167
158
  --control-hover-bg-color: var(--gb-bg3);
159
+ --control-checked-bg: color-mix(in srgb, var(--gb-green) 20%, var(--standout-bg-color));
160
+ --control-checked-hover-bg: color-mix(in srgb, var(--gb-green) 28%, var(--standout-bg-color));
161
+ --control-checked-fg: var(--gb-fg0);
168
162
  --menu-hover-bg-color: var(--gb-bg2);
169
163
 
170
164
  --table-row-hover-bg: var(--gb-bg2);
@@ -187,17 +181,9 @@ html[data-theme="light"] {
187
181
  --karma-bad: var(--gb-red);
188
182
  --karma-warning: var(--gb-yellow);
189
183
  --karma-severe: var(--gb-orange);
190
- --karma-important: var(--gb-purple);
191
184
  --karma-note: var(--gb-aqua);
192
185
  --karma-info: var(--gb-bg2);
193
186
  --karma-old: var(--gb-gray);
194
187
 
195
- --karma-good-fg: var(--gb-green);
196
- --karma-bad-fg: var(--gb-red);
197
- --karma-warning-fg: var(--gb-yellow);
198
- --karma-severe-fg: var(--gb-orange);
199
- --karma-important-fg: var(--gb-purple);
200
- --karma-note-fg: var(--gb-aqua);
201
- --karma-info-fg: var(--gb-fg3);
202
- --karma-old-fg: var(--gb-fg4);
188
+ --karma-on-bg-fg: var(--gb-good-fg);
203
189
  }
@@ -18,7 +18,7 @@ html {
18
18
  --waffle-accent: #a05020;
19
19
 
20
20
  --body-bg-color: var(--waffle-cream);
21
- --surface-bg-color: #fffdf6;
21
+ --section-bg-color: #fffdf6;
22
22
  --standout-bg-color: var(--waffle-batter);
23
23
  --section-header-bg-color: var(--waffle-batter);
24
24
  --shadow-color: rgba(139, 69, 19, 0.12);
@@ -26,8 +26,6 @@ html {
26
26
  --text-color: var(--waffle-syrup);
27
27
  --muted-text-color: #a88860;
28
28
  --link-color: var(--waffle-accent);
29
- --nav-grid-accent-fg: var(--link-color);
30
- --nav-grid-accent-bg: var(--link-color);
31
29
  --border-color: #e0c896;
32
30
 
33
31
  --hover-background-color: #f0d9a8;
@@ -61,19 +59,9 @@ html {
61
59
  --karma-bad: #f0a0a8;
62
60
  --karma-warning: var(--waffle-butter);
63
61
  --karma-severe: #e08a6a;
64
- --karma-important: #ffe8a3;
65
62
  --karma-note: #a8d4e8;
66
63
  --karma-info: var(--waffle-batter);
67
64
  --karma-old: #d4c4a0;
68
-
69
- --karma-good-fg: #4a7a28;
70
- --karma-bad-fg: var(--waffle-berry);
71
- --karma-warning-fg: #9a6b00;
72
- --karma-severe-fg: #a04020;
73
- --karma-important-fg: #8a6800;
74
- --karma-note-fg: #2a6a88;
75
- --karma-info-fg: #7a6540;
76
- --karma-old-fg: #6a5840;
77
65
  }
78
66
 
79
67
  body {
@@ -140,8 +128,6 @@ html[data-theme="dark"] {
140
128
  --text-color: var(--waffle-foreground);
141
129
  --muted-text-color: var(--waffle-foreground-muted);
142
130
  --link-color: var(--waffle-accent-dark);
143
- --nav-grid-accent-fg: var(--link-color);
144
- --nav-grid-accent-bg: var(--link-color);
145
131
  --border-color: #c9a66a;
146
132
  --standout-bg-color: var(--waffle-batter);
147
133
  --hover-background-color: #f0d9a8;
@@ -149,7 +135,7 @@ html[data-theme="dark"] {
149
135
  --disabled-text-color: #7a6548;
150
136
 
151
137
  --body-bg-color: var(--waffle-cream);
152
- --surface-bg-color: var(--waffle-batter);
138
+ --section-bg-color: var(--waffle-batter);
153
139
  --section-header-bg-color: var(--waffle-section);
154
140
  --sidebar-bg-color: var(--waffle-sidebar);
155
141
  --sidebar-link-color: var(--waffle-foreground);
package/vite.config.js CHANGED
@@ -192,4 +192,9 @@ export default defineConfig({
192
192
  }),
193
193
  vue(),
194
194
  ],
195
+ test: {
196
+ environment: 'happy-dom',
197
+ include: ['vue/**/*.spec.js'],
198
+ setupFiles: ['./vue/test/setup.js'],
199
+ },
195
200
  })
@@ -1,58 +1,205 @@
1
1
  <template>
2
- <div id = "breadcrumbs">
3
- <template v-for="(link, index) in links" :key="link.name">
4
- <router-link :to="link.href">{{ link.name }}</router-link>
5
- <span v-if="index < links.length - 1" class="separator">
6
- &raquo;
7
- </span>
8
- </template>
9
- </div>
2
+ <nav id="breadcrumbs" class="breadcrumbs" aria-label="Breadcrumb">
3
+ <div class="breadcrumbs-links flex-row">
4
+ <template v-for="(link, index) in links" :key="`${link.name}-${index}`">
5
+ <HugeiconsIcon
6
+ v-if="index > 0"
7
+ :icon="ArrowRight01Icon"
8
+ class="separator"
9
+ width="0.85em"
10
+ height="0.85em"
11
+ aria-hidden="true"
12
+ />
13
+
14
+ <nav
15
+ v-if="hasMenu(link)"
16
+ class="menu breadcrumb-menu"
17
+ :aria-label="`${link.name} sections`"
18
+ >
19
+ <ul>
20
+ <li>
21
+ <span class="submenu">
22
+ <router-link
23
+ v-if="link.to"
24
+ :to="link.to"
25
+ class="button breadcrumb-link"
26
+ :aria-current="isLast(index) ? 'page' : undefined"
27
+ >
28
+ <span>{{ link.name }}</span>
29
+ </router-link>
30
+ <span
31
+ v-else
32
+ class="button breadcrumb-link"
33
+ :aria-current="isLast(index) ? 'page' : undefined"
34
+ >
35
+ {{ link.name }}
36
+ </span>
37
+ </span>
38
+ <div>
39
+ <ul>
40
+ <li v-for="menuItem in link.menu" :key="menuItem.name">
41
+ <router-link
42
+ :to="menuItem.to"
43
+ :class="{ active: isMenuItemActive(link, menuItem) }"
44
+ >
45
+ {{ menuItem.name }}
46
+ </router-link>
47
+ </li>
48
+ </ul>
49
+ </div>
50
+ </li>
51
+ </ul>
52
+ </nav>
53
+
54
+ <router-link
55
+ v-else-if="!isLast(index)"
56
+ :to="link.to ?? link.href"
57
+ class="button breadcrumb-link"
58
+ >
59
+ <span>{{ link.name }}</span>
60
+ </router-link>
61
+
62
+ <span
63
+ v-else
64
+ class="button breadcrumb-link active"
65
+ aria-current="page"
66
+ >
67
+ <span>{{ link.name }}</span>
68
+ </span>
69
+ </template>
70
+ </div>
71
+ </nav>
10
72
  </template>
11
73
 
74
+ <script setup>
75
+ import { ref, watch } from 'vue'
76
+ import { useRoute } from 'vue-router'
77
+ import { HugeiconsIcon } from '@hugeicons/vue'
78
+ import { ArrowRight01Icon } from '@hugeicons/core-free-icons'
79
+
80
+ const route = useRoute()
81
+ const links = ref([])
82
+
83
+ function hasMenu(link) {
84
+ return Array.isArray(link.menu) && link.menu.length > 0
85
+ }
86
+
87
+ function isLast(index) {
88
+ return index === links.value.length - 1
89
+ }
90
+
91
+ function isMenuItemActive(link, menuItem) {
92
+ const activeRoute = link.to?.name
93
+ const itemRoute = menuItem.to?.name
94
+ return activeRoute != null && activeRoute === itemRoute
95
+ }
96
+
97
+ watch(() => route.matched, (matched) => {
98
+ links.value = []
99
+ matched.forEach((record) => {
100
+ if (record.meta && record.meta.breadcrumbs) {
101
+ record.meta.breadcrumbs(route).forEach((item) => {
102
+ links.value.push({
103
+ name: item.name,
104
+ to: item.to,
105
+ href: item.href || record.path || '/',
106
+ menu: item.menu,
107
+ })
108
+ })
109
+ } else if (record.name) {
110
+ links.value.push({
111
+ name: record.meta?.title || record.name,
112
+ to: { name: record.name, params: route.params, query: route.query },
113
+ href: route.fullPath || record.path || '/',
114
+ })
115
+ }
116
+ })
117
+ }, { immediate: true })
118
+ </script>
119
+
12
120
  <style scoped>
13
- .separator {
14
- color: var(--breadcrumbs-separator-fg);
121
+ .breadcrumbs {
122
+ flex: 1 1 auto;
123
+ min-width: 0;
124
+ }
125
+
126
+ .breadcrumbs-links {
127
+ display: flex;
128
+ align-items: center;
129
+ gap: 0.0625rem;
130
+ flex-wrap: wrap;
131
+ }
132
+
133
+ .breadcrumb-menu {
134
+ display: inline-flex;
135
+ flex-shrink: 0;
136
+ }
137
+
138
+ .breadcrumb-menu > ul {
139
+ list-style: none;
140
+ padding: 0;
141
+ margin: 0;
142
+ }
143
+
144
+ .breadcrumb-link {
145
+ display: inline-flex;
146
+ align-items: center;
147
+ gap: 0.375rem;
148
+ padding: 0.5em 0.375em;
149
+ border-radius: 0.25em;
150
+ text-decoration: none;
151
+ color: var(--header-fg-color);
152
+ transition: background-color 0.15s ease, color 0.15s ease;
153
+ white-space: nowrap;
154
+ border: 0;
155
+ font-weight: normal;
156
+ background-color: transparent;
157
+ cursor: default;
15
158
  }
16
159
 
17
- a {
18
- text-decoration: none;
19
- padding: 0.4em;
20
- border-radius: 0.2em;
160
+ a.breadcrumb-link {
161
+ cursor: pointer;
21
162
  }
22
163
 
23
- a:hover {
24
- text-decoration: underline;
25
- background-color: var(--breadcrumbs-link-hover-bg);
164
+ .breadcrumb-link.active {
165
+ text-decoration: underline;
166
+ font-weight: 500;
26
167
  }
27
168
 
169
+ .separator {
170
+ flex-shrink: 0;
171
+ color: var(--header-fg-color);
172
+ opacity: 0.4;
173
+ }
28
174
  </style>
29
175
 
176
+ <style>
177
+ header .breadcrumbs a.breadcrumb-link:hover,
178
+ header .breadcrumbs a.breadcrumb-link:focus-visible,
179
+ header .breadcrumbs .breadcrumb-menu.menu > ul > li:hover,
180
+ header .breadcrumbs .breadcrumb-menu.menu > ul > li:focus-within,
181
+ header .breadcrumbs .breadcrumb-menu.menu > ul > li:hover > span > a,
182
+ header .breadcrumbs .breadcrumb-menu.menu > ul > li:focus-within > span > a,
183
+ header .breadcrumbs .breadcrumb-menu.menu > ul div ul a:hover,
184
+ header .breadcrumbs .breadcrumb-menu.menu > ul div ul a:focus-visible {
185
+ background-color: var(--header-hover-background-color);
186
+ color: var(--header-hover-text-color);
187
+ }
30
188
 
31
- <script setup>
32
- import { ref } from 'vue';
33
- import { watch } from 'vue';
34
- import { useRoute } from 'vue-router';
35
-
36
- const route = useRoute();
37
- const links = ref([]);
38
-
39
- watch(() => route.matched, (matched) => {
40
-
41
- links.value = [];
42
- matched.forEach((record) => {
43
- if (record.meta && record.meta.breadcrumbs) {
44
- record.meta.breadcrumbs(route).forEach((item) => {
45
- links.value.push({
46
- name: item.name,
47
- href: item.href || record.path || '/'
48
- });
49
- });
50
- } else if (record.name) {
51
- links.value.push({
52
- name: record.name,
53
- href: record.path || '/'
54
- });
55
- }
56
- });
57
- }, { immediate: true });
58
- </script>
189
+ header .breadcrumbs a.breadcrumb-link:focus-visible {
190
+ outline-color: var(--header-focus-outline-color);
191
+ }
192
+
193
+ header .breadcrumb-menu.menu > ul > li {
194
+ border-radius: 0.25em;
195
+ }
196
+
197
+ header .breadcrumb-menu.menu > ul li span.submenu .breadcrumb-link {
198
+ text-decoration: inherit;
199
+ }
200
+
201
+ header .breadcrumb-menu.menu > ul li span.submenu .breadcrumb-link[aria-current="page"] {
202
+ text-decoration: underline;
203
+ font-weight: 500;
204
+ }
205
+ </style>