@revikornmann/muka-ui 0.2.3 → 0.2.4
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/dist/cjs/components/BottomBar/BottomBar.css +9 -0
- package/dist/cjs/components/TopBar/TopBar.css +46 -19
- package/dist/cjs/components/TopBar/TopBar.js +1 -1
- package/dist/cjs/components/TopBar/TopBar.js.map +1 -1
- package/dist/cjs/components/View/View.css +11 -0
- package/dist/cjs/components/View/View.js +1 -1
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/esm/components/BottomBar/BottomBar.css +9 -0
- package/dist/esm/components/TopBar/TopBar.css +46 -19
- package/dist/esm/components/TopBar/TopBar.js +1 -1
- package/dist/esm/components/TopBar/TopBar.js.map +1 -1
- package/dist/esm/components/View/View.css +11 -0
- package/dist/esm/components/View/View.js +1 -1
- package/dist/esm/components/View/View.js.map +1 -1
- package/dist/styles/components/BottomBar.css +9 -0
- package/dist/styles/components/View.css +11 -0
- package/dist/styles/index.css +269 -249
- package/dist/styles/muka-dark.css +269 -249
- package/dist/styles/muka-light.css +269 -249
- package/dist/styles/wireframe-dark.css +269 -249
- package/dist/styles/wireframe-light.css +269 -249
- package/dist/types/components/TopBar/TopBar.d.ts.map +1 -1
- package/docs/consumers/setup-instructions.md +11 -0
- package/package.json +1 -1
- package/skills/setup-muka/SKILL.md +9 -1
|
@@ -121,6 +121,15 @@
|
|
|
121
121
|
backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
|
|
122
122
|
-webkit-backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
|
|
123
123
|
padding: var(--bottombar-floating-padding-top) var(--bottombar-floating-margin-x) var(--bottombar-floating-margin-bottom);
|
|
124
|
+
|
|
125
|
+
/* The transparent frosted margin around the pill overlays scrolling content;
|
|
126
|
+
let scroll/taps fall through to that content, keeping only the pill itself
|
|
127
|
+
interactive (re-enabled on __content below). */
|
|
128
|
+
pointer-events: none;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.muka-bottombar--floating .muka-bottombar__content {
|
|
132
|
+
pointer-events: auto;
|
|
124
133
|
}
|
|
125
134
|
|
|
126
135
|
.muka-bottombar--floating .muka-bottombar__content {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
--tb-title-line-height: var(--text-heading-xs-lineHeight);
|
|
29
29
|
--tb-title-letter-spacing: var(--text-heading-xs-letterSpacing);
|
|
30
30
|
--tb-breadcrumb-display: none;
|
|
31
|
+
--tb-pad-y: 0;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/* ─── Medium tier ─── */
|
|
@@ -58,16 +59,17 @@
|
|
|
58
59
|
.muka-topbar:not([data-size]) {
|
|
59
60
|
--tb-height: var(--topbar-height-lg);
|
|
60
61
|
--tb-pad: var(--topbar-padding-x-lg);
|
|
62
|
+
--tb-pad-y: var(--spacing-4);
|
|
61
63
|
--tb-title-position: static;
|
|
62
64
|
--tb-title-left: auto;
|
|
63
65
|
--tb-title-transform: none;
|
|
64
66
|
--tb-title-align: left;
|
|
65
67
|
--tb-title-max-width: none;
|
|
66
|
-
--tb-title-font-family: var(--text-heading-
|
|
67
|
-
--tb-title-font-weight: var(--text-heading-
|
|
68
|
-
--tb-title-font-size: var(--text-heading-
|
|
69
|
-
--tb-title-line-height: var(--text-heading-
|
|
70
|
-
--tb-title-letter-spacing: var(--text-heading-
|
|
68
|
+
--tb-title-font-family: var(--text-heading-md-fontFamily);
|
|
69
|
+
--tb-title-font-weight: var(--text-heading-md-fontWeight);
|
|
70
|
+
--tb-title-font-size: var(--text-heading-md-fontSize);
|
|
71
|
+
--tb-title-line-height: var(--text-heading-md-lineHeight);
|
|
72
|
+
--tb-title-letter-spacing: var(--text-heading-md-letterSpacing);
|
|
71
73
|
--tb-breadcrumb-display: flex;
|
|
72
74
|
}
|
|
73
75
|
}
|
|
@@ -75,16 +77,17 @@
|
|
|
75
77
|
.muka-topbar[data-size='lg'] {
|
|
76
78
|
--tb-height: var(--topbar-height-lg);
|
|
77
79
|
--tb-pad: var(--topbar-padding-x-lg);
|
|
80
|
+
--tb-pad-y: var(--spacing-4);
|
|
78
81
|
--tb-title-position: static;
|
|
79
82
|
--tb-title-left: auto;
|
|
80
83
|
--tb-title-transform: none;
|
|
81
84
|
--tb-title-align: left;
|
|
82
85
|
--tb-title-max-width: none;
|
|
83
|
-
--tb-title-font-family: var(--text-heading-
|
|
84
|
-
--tb-title-font-weight: var(--text-heading-
|
|
85
|
-
--tb-title-font-size: var(--text-heading-
|
|
86
|
-
--tb-title-line-height: var(--text-heading-
|
|
87
|
-
--tb-title-letter-spacing: var(--text-heading-
|
|
86
|
+
--tb-title-font-family: var(--text-heading-md-fontFamily);
|
|
87
|
+
--tb-title-font-weight: var(--text-heading-md-fontWeight);
|
|
88
|
+
--tb-title-font-size: var(--text-heading-md-fontSize);
|
|
89
|
+
--tb-title-line-height: var(--text-heading-md-lineHeight);
|
|
90
|
+
--tb-title-letter-spacing: var(--text-heading-md-letterSpacing);
|
|
88
91
|
--tb-breadcrumb-display: flex;
|
|
89
92
|
}
|
|
90
93
|
|
|
@@ -109,17 +112,11 @@
|
|
|
109
112
|
border-radius: var(--topbar-drag-handle-radius);
|
|
110
113
|
}
|
|
111
114
|
|
|
112
|
-
/* ─── Breadcrumb
|
|
115
|
+
/* ─── Breadcrumb (large tier, stacked above the title) ── */
|
|
113
116
|
|
|
114
117
|
.muka-topbar__breadcrumb {
|
|
115
118
|
display: var(--tb-breadcrumb-display);
|
|
116
119
|
align-items: center;
|
|
117
|
-
padding: var(--spacing-3) var(--tb-pad) 0;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.muka-topbar:not(.muka-topbar--no-safe-area) .muka-topbar__breadcrumb {
|
|
121
|
-
padding-left: max(var(--tb-pad), env(safe-area-inset-left));
|
|
122
|
-
padding-right: max(var(--tb-pad), env(safe-area-inset-right));
|
|
123
120
|
}
|
|
124
121
|
|
|
125
122
|
/* ─── Container (the bar itself) ──────────────────────── */
|
|
@@ -128,8 +125,8 @@
|
|
|
128
125
|
position: relative;
|
|
129
126
|
display: flex;
|
|
130
127
|
align-items: center;
|
|
131
|
-
height: var(--tb-height);
|
|
132
|
-
padding:
|
|
128
|
+
min-height: var(--tb-height);
|
|
129
|
+
padding: var(--tb-pad-y) var(--tb-pad);
|
|
133
130
|
}
|
|
134
131
|
|
|
135
132
|
/* Inset content on iPhone landscape with notch / iPad with curved corners. */
|
|
@@ -156,6 +153,36 @@
|
|
|
156
153
|
display: none;
|
|
157
154
|
}
|
|
158
155
|
|
|
156
|
+
/* ─── Heading (breadcrumb + title) ────────────────────── */
|
|
157
|
+
|
|
158
|
+
/* Base/sm/md: transparent wrapper so the title keeps its absolute-centered
|
|
159
|
+
layout (containing block stays the positioned container) and the breadcrumb
|
|
160
|
+
stays hidden — identical to the pre-refinement mobile bar. */
|
|
161
|
+
.muka-topbar__heading {
|
|
162
|
+
display: contents;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Large tier: a tight column with the breadcrumb stacked above the title. */
|
|
166
|
+
@media (min-width: 1024px) {
|
|
167
|
+
.muka-topbar:not([data-size]) .muka-topbar__heading {
|
|
168
|
+
display: flex;
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
gap: var(--spacing-1);
|
|
172
|
+
flex: 1 1 0%;
|
|
173
|
+
min-width: 0;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.muka-topbar[data-size='lg'] .muka-topbar__heading {
|
|
178
|
+
display: flex;
|
|
179
|
+
flex-direction: column;
|
|
180
|
+
justify-content: center;
|
|
181
|
+
gap: var(--spacing-1);
|
|
182
|
+
flex: 1 1 0%;
|
|
183
|
+
min-width: 0;
|
|
184
|
+
}
|
|
185
|
+
|
|
159
186
|
/* ─── Title ───────────────────────────────────────────── */
|
|
160
187
|
|
|
161
188
|
.muka-topbar__title {
|
|
@@ -29,7 +29,7 @@ const TopBar = ({ title, leading, trailing, trailingSecondary, variant = 'defaul
|
|
|
29
29
|
disableSafeArea && 'muka-topbar--no-safe-area',
|
|
30
30
|
className,
|
|
31
31
|
].filter(Boolean).join(' ');
|
|
32
|
-
return ((0, jsx_runtime_1.jsxs)("header", { className: topBarClasses, "data-size": size, children: [variant === 'draggable' && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__drag-handle-container", children: (0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__drag-handle" }) })),
|
|
32
|
+
return ((0, jsx_runtime_1.jsxs)("header", { className: topBarClasses, "data-size": size, children: [variant === 'draggable' && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__drag-handle-container", children: (0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__drag-handle" }) })), (0, jsx_runtime_1.jsxs)("div", { className: "muka-topbar__container", children: [leading && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__leading", children: leading })), (0, jsx_runtime_1.jsxs)("div", { className: "muka-topbar__heading", children: [breadcrumb && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__breadcrumb", children: breadcrumb })), title && ((0, jsx_runtime_1.jsx)("p", { className: "muka-topbar__title", "aria-live": "polite", children: title }))] }), (0, jsx_runtime_1.jsxs)("div", { className: "muka-topbar__trailing", children: [trailingSecondary && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__trailing-action", children: trailingSecondary })), trailing && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__trailing-action", children: trailing }))] })] }), controlBar && ((0, jsx_runtime_1.jsx)("div", { className: "muka-topbar__controlbar", children: controlBar }))] }));
|
|
33
33
|
};
|
|
34
34
|
exports.TopBar = TopBar;
|
|
35
35
|
exports.default = exports.TopBar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopBar.js","sourceRoot":"","sources":["../../../../components/TopBar/TopBar.tsx"],"names":[],"mappings":";;;;AACA,wBAAsB;AA8CtB;;;;;;;;;;;;;;;;;;GAkBG;AACI,MAAM,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,eAAe,GAAG,KAAK,EACvB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,aAAa,GAAG;QACpB,aAAa;QACb,OAAO,KAAK,WAAW,IAAI,wBAAwB;QACnD,eAAe,IAAI,2BAA2B;QAC9C,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,oCAAQ,SAAS,EAAE,aAAa,eAAa,IAAI,aAC9C,OAAO,KAAK,WAAW,IAAI,CAC1B,gCAAK,SAAS,EAAC,oCAAoC,YACjD,gCAAK,SAAS,EAAC,0BAA0B,GAAG,GACxC,CACP,
|
|
1
|
+
{"version":3,"file":"TopBar.js","sourceRoot":"","sources":["../../../../components/TopBar/TopBar.tsx"],"names":[],"mappings":";;;;AACA,wBAAsB;AA8CtB;;;;;;;;;;;;;;;;;;GAkBG;AACI,MAAM,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,eAAe,GAAG,KAAK,EACvB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,aAAa,GAAG;QACpB,aAAa;QACb,OAAO,KAAK,WAAW,IAAI,wBAAwB;QACnD,eAAe,IAAI,2BAA2B;QAC9C,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,oCAAQ,SAAS,EAAE,aAAa,eAAa,IAAI,aAC9C,OAAO,KAAK,WAAW,IAAI,CAC1B,gCAAK,SAAS,EAAC,oCAAoC,YACjD,gCAAK,SAAS,EAAC,0BAA0B,GAAG,GACxC,CACP,EAED,iCAAK,SAAS,EAAC,wBAAwB,aACpC,OAAO,IAAI,CACV,gCAAK,SAAS,EAAC,sBAAsB,YAClC,OAAO,GACJ,CACP,EAED,iCAAK,SAAS,EAAC,sBAAsB,aAClC,UAAU,IAAI,CACb,gCAAK,SAAS,EAAC,yBAAyB,YACrC,UAAU,GACP,CACP,EAEA,KAAK,IAAI,CACR,8BAAG,SAAS,EAAC,oBAAoB,eAAW,QAAQ,YACjD,KAAK,GACJ,CACL,IACG,EAEN,iCAAK,SAAS,EAAC,uBAAuB,aACnC,iBAAiB,IAAI,CACpB,gCAAK,SAAS,EAAC,8BAA8B,YAC1C,iBAAiB,GACd,CACP,EACA,QAAQ,IAAI,CACX,gCAAK,SAAS,EAAC,8BAA8B,YAC1C,QAAQ,GACL,CACP,IACG,IACF,EAEL,UAAU,IAAI,CACb,gCAAK,SAAS,EAAC,yBAAyB,YACrC,UAAU,GACP,CACP,IACM,CACV,CAAC;AACJ,CAAC,CAAC;AArEW,QAAA,MAAM,UAqEjB;AAEF,kBAAe,cAAM,CAAC"}
|
|
@@ -50,6 +50,12 @@
|
|
|
50
50
|
overflow-y: auto;
|
|
51
51
|
overflow-x: clip;
|
|
52
52
|
z-index: 1;
|
|
53
|
+
|
|
54
|
+
/* Column flow so the footer (now a scroll-area child) can pin to the bottom and
|
|
55
|
+
content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
|
|
56
|
+
reveal the content underneath. */
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: column;
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
/* Inner wrapper constrains content width at the large tier (enterprise desktop)
|
|
@@ -57,6 +63,9 @@
|
|
|
57
63
|
width. Full-bleed below large. */
|
|
58
64
|
.muka-view__body-inner {
|
|
59
65
|
width: 100%;
|
|
66
|
+
/* Grow on short content so the sticky footer is pushed to the bottom rather
|
|
67
|
+
than floating mid-screen. */
|
|
68
|
+
flex: 1 0 auto;
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
@media (min-width: 1024px) {
|
|
@@ -76,6 +85,8 @@
|
|
|
76
85
|
/* ─── Footer (e.g. BottomBar) ─────────────────────────── */
|
|
77
86
|
|
|
78
87
|
.muka-view__footer {
|
|
88
|
+
position: sticky;
|
|
89
|
+
bottom: 0;
|
|
79
90
|
flex-shrink: 0;
|
|
80
91
|
z-index: 2;
|
|
81
92
|
}
|
|
@@ -24,7 +24,7 @@ const View = ({ level, title, leading, trailing, trailingSecondary, controlBar,
|
|
|
24
24
|
`muka-view--surface-${surfaceLevel}`,
|
|
25
25
|
className,
|
|
26
26
|
].filter(Boolean).join(' ');
|
|
27
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: viewClasses, "data-size": size, children: [(0, jsx_runtime_1.jsx)(TopBar_1.TopBar, { title: title, leading: leading, trailing: trailing, trailingSecondary: trailingSecondary, controlBar: controlBar, breadcrumb: breadcrumb, size: size }), (0, jsx_runtime_1.
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: viewClasses, "data-size": size, children: [(0, jsx_runtime_1.jsx)(TopBar_1.TopBar, { title: title, leading: leading, trailing: trailing, trailingSecondary: trailingSecondary, controlBar: controlBar, breadcrumb: breadcrumb, size: size }), (0, jsx_runtime_1.jsxs)("main", { className: "muka-view__body", children: [(0, jsx_runtime_1.jsx)("div", { className: "muka-view__body-inner", children: children }), footer && ((0, jsx_runtime_1.jsx)("div", { className: "muka-view__footer", children: footer }))] })] }));
|
|
28
28
|
};
|
|
29
29
|
exports.View = View;
|
|
30
30
|
exports.default = exports.View;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../components/View/View.tsx"],"names":[],"mappings":";;;;AACA,sCAAmC;AACnC,sBAAoB;AAiDpB;;;;;;;;;;;;GAYG;AACI,MAAM,IAAI,GAAwB,CAAC,EACxC,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,YAAY,GAAG,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,cAAc,KAAK,EAAE;QACrB,sBAAsB,YAAY,EAAE;QACpC,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,iCAAK,SAAS,EAAE,WAAW,eAAa,IAAI,aAC1C,uBAAC,eAAM,IACL,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,GACV,EAEF,
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../components/View/View.tsx"],"names":[],"mappings":";;;;AACA,sCAAmC;AACnC,sBAAoB;AAiDpB;;;;;;;;;;;;GAYG;AACI,MAAM,IAAI,GAAwB,CAAC,EACxC,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,YAAY,GAAG,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,cAAc,KAAK,EAAE;QACrB,sBAAsB,YAAY,EAAE;QACpC,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,iCAAK,SAAS,EAAE,WAAW,eAAa,IAAI,aAC1C,uBAAC,eAAM,IACL,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,GACV,EAEF,kCAAM,SAAS,EAAC,iBAAiB,aAC/B,gCAAK,SAAS,EAAC,uBAAuB,YACnC,QAAQ,GACL,EAEL,MAAM,IAAI,CACT,gCAAK,SAAS,EAAC,mBAAmB,YAC/B,MAAM,GACH,CACP,IACI,IACH,CACP,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,IAAI,QA8Cf;AAEF,kBAAe,YAAI,CAAC"}
|
|
@@ -121,6 +121,15 @@
|
|
|
121
121
|
backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
|
|
122
122
|
-webkit-backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
|
|
123
123
|
padding: var(--bottombar-floating-padding-top) var(--bottombar-floating-margin-x) var(--bottombar-floating-margin-bottom);
|
|
124
|
+
|
|
125
|
+
/* The transparent frosted margin around the pill overlays scrolling content;
|
|
126
|
+
let scroll/taps fall through to that content, keeping only the pill itself
|
|
127
|
+
interactive (re-enabled on __content below). */
|
|
128
|
+
pointer-events: none;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.muka-bottombar--floating .muka-bottombar__content {
|
|
132
|
+
pointer-events: auto;
|
|
124
133
|
}
|
|
125
134
|
|
|
126
135
|
.muka-bottombar--floating .muka-bottombar__content {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
--tb-title-line-height: var(--text-heading-xs-lineHeight);
|
|
29
29
|
--tb-title-letter-spacing: var(--text-heading-xs-letterSpacing);
|
|
30
30
|
--tb-breadcrumb-display: none;
|
|
31
|
+
--tb-pad-y: 0;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
/* ─── Medium tier ─── */
|
|
@@ -58,16 +59,17 @@
|
|
|
58
59
|
.muka-topbar:not([data-size]) {
|
|
59
60
|
--tb-height: var(--topbar-height-lg);
|
|
60
61
|
--tb-pad: var(--topbar-padding-x-lg);
|
|
62
|
+
--tb-pad-y: var(--spacing-4);
|
|
61
63
|
--tb-title-position: static;
|
|
62
64
|
--tb-title-left: auto;
|
|
63
65
|
--tb-title-transform: none;
|
|
64
66
|
--tb-title-align: left;
|
|
65
67
|
--tb-title-max-width: none;
|
|
66
|
-
--tb-title-font-family: var(--text-heading-
|
|
67
|
-
--tb-title-font-weight: var(--text-heading-
|
|
68
|
-
--tb-title-font-size: var(--text-heading-
|
|
69
|
-
--tb-title-line-height: var(--text-heading-
|
|
70
|
-
--tb-title-letter-spacing: var(--text-heading-
|
|
68
|
+
--tb-title-font-family: var(--text-heading-md-fontFamily);
|
|
69
|
+
--tb-title-font-weight: var(--text-heading-md-fontWeight);
|
|
70
|
+
--tb-title-font-size: var(--text-heading-md-fontSize);
|
|
71
|
+
--tb-title-line-height: var(--text-heading-md-lineHeight);
|
|
72
|
+
--tb-title-letter-spacing: var(--text-heading-md-letterSpacing);
|
|
71
73
|
--tb-breadcrumb-display: flex;
|
|
72
74
|
}
|
|
73
75
|
}
|
|
@@ -75,16 +77,17 @@
|
|
|
75
77
|
.muka-topbar[data-size='lg'] {
|
|
76
78
|
--tb-height: var(--topbar-height-lg);
|
|
77
79
|
--tb-pad: var(--topbar-padding-x-lg);
|
|
80
|
+
--tb-pad-y: var(--spacing-4);
|
|
78
81
|
--tb-title-position: static;
|
|
79
82
|
--tb-title-left: auto;
|
|
80
83
|
--tb-title-transform: none;
|
|
81
84
|
--tb-title-align: left;
|
|
82
85
|
--tb-title-max-width: none;
|
|
83
|
-
--tb-title-font-family: var(--text-heading-
|
|
84
|
-
--tb-title-font-weight: var(--text-heading-
|
|
85
|
-
--tb-title-font-size: var(--text-heading-
|
|
86
|
-
--tb-title-line-height: var(--text-heading-
|
|
87
|
-
--tb-title-letter-spacing: var(--text-heading-
|
|
86
|
+
--tb-title-font-family: var(--text-heading-md-fontFamily);
|
|
87
|
+
--tb-title-font-weight: var(--text-heading-md-fontWeight);
|
|
88
|
+
--tb-title-font-size: var(--text-heading-md-fontSize);
|
|
89
|
+
--tb-title-line-height: var(--text-heading-md-lineHeight);
|
|
90
|
+
--tb-title-letter-spacing: var(--text-heading-md-letterSpacing);
|
|
88
91
|
--tb-breadcrumb-display: flex;
|
|
89
92
|
}
|
|
90
93
|
|
|
@@ -109,17 +112,11 @@
|
|
|
109
112
|
border-radius: var(--topbar-drag-handle-radius);
|
|
110
113
|
}
|
|
111
114
|
|
|
112
|
-
/* ─── Breadcrumb
|
|
115
|
+
/* ─── Breadcrumb (large tier, stacked above the title) ── */
|
|
113
116
|
|
|
114
117
|
.muka-topbar__breadcrumb {
|
|
115
118
|
display: var(--tb-breadcrumb-display);
|
|
116
119
|
align-items: center;
|
|
117
|
-
padding: var(--spacing-3) var(--tb-pad) 0;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.muka-topbar:not(.muka-topbar--no-safe-area) .muka-topbar__breadcrumb {
|
|
121
|
-
padding-left: max(var(--tb-pad), env(safe-area-inset-left));
|
|
122
|
-
padding-right: max(var(--tb-pad), env(safe-area-inset-right));
|
|
123
120
|
}
|
|
124
121
|
|
|
125
122
|
/* ─── Container (the bar itself) ──────────────────────── */
|
|
@@ -128,8 +125,8 @@
|
|
|
128
125
|
position: relative;
|
|
129
126
|
display: flex;
|
|
130
127
|
align-items: center;
|
|
131
|
-
height: var(--tb-height);
|
|
132
|
-
padding:
|
|
128
|
+
min-height: var(--tb-height);
|
|
129
|
+
padding: var(--tb-pad-y) var(--tb-pad);
|
|
133
130
|
}
|
|
134
131
|
|
|
135
132
|
/* Inset content on iPhone landscape with notch / iPad with curved corners. */
|
|
@@ -156,6 +153,36 @@
|
|
|
156
153
|
display: none;
|
|
157
154
|
}
|
|
158
155
|
|
|
156
|
+
/* ─── Heading (breadcrumb + title) ────────────────────── */
|
|
157
|
+
|
|
158
|
+
/* Base/sm/md: transparent wrapper so the title keeps its absolute-centered
|
|
159
|
+
layout (containing block stays the positioned container) and the breadcrumb
|
|
160
|
+
stays hidden — identical to the pre-refinement mobile bar. */
|
|
161
|
+
.muka-topbar__heading {
|
|
162
|
+
display: contents;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/* Large tier: a tight column with the breadcrumb stacked above the title. */
|
|
166
|
+
@media (min-width: 1024px) {
|
|
167
|
+
.muka-topbar:not([data-size]) .muka-topbar__heading {
|
|
168
|
+
display: flex;
|
|
169
|
+
flex-direction: column;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
gap: var(--spacing-1);
|
|
172
|
+
flex: 1 1 0%;
|
|
173
|
+
min-width: 0;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.muka-topbar[data-size='lg'] .muka-topbar__heading {
|
|
178
|
+
display: flex;
|
|
179
|
+
flex-direction: column;
|
|
180
|
+
justify-content: center;
|
|
181
|
+
gap: var(--spacing-1);
|
|
182
|
+
flex: 1 1 0%;
|
|
183
|
+
min-width: 0;
|
|
184
|
+
}
|
|
185
|
+
|
|
159
186
|
/* ─── Title ───────────────────────────────────────────── */
|
|
160
187
|
|
|
161
188
|
.muka-topbar__title {
|
|
@@ -26,7 +26,7 @@ export const TopBar = ({ title, leading, trailing, trailingSecondary, variant =
|
|
|
26
26
|
disableSafeArea && 'muka-topbar--no-safe-area',
|
|
27
27
|
className,
|
|
28
28
|
].filter(Boolean).join(' ');
|
|
29
|
-
return (_jsxs("header", { className: topBarClasses, "data-size": size, children: [variant === 'draggable' && (_jsx("div", { className: "muka-topbar__drag-handle-container", children: _jsx("div", { className: "muka-topbar__drag-handle" }) })),
|
|
29
|
+
return (_jsxs("header", { className: topBarClasses, "data-size": size, children: [variant === 'draggable' && (_jsx("div", { className: "muka-topbar__drag-handle-container", children: _jsx("div", { className: "muka-topbar__drag-handle" }) })), _jsxs("div", { className: "muka-topbar__container", children: [leading && (_jsx("div", { className: "muka-topbar__leading", children: leading })), _jsxs("div", { className: "muka-topbar__heading", children: [breadcrumb && (_jsx("div", { className: "muka-topbar__breadcrumb", children: breadcrumb })), title && (_jsx("p", { className: "muka-topbar__title", "aria-live": "polite", children: title }))] }), _jsxs("div", { className: "muka-topbar__trailing", children: [trailingSecondary && (_jsx("div", { className: "muka-topbar__trailing-action", children: trailingSecondary })), trailing && (_jsx("div", { className: "muka-topbar__trailing-action", children: trailing }))] })] }), controlBar && (_jsx("div", { className: "muka-topbar__controlbar", children: controlBar }))] }));
|
|
30
30
|
};
|
|
31
31
|
export default TopBar;
|
|
32
32
|
//# sourceMappingURL=TopBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopBar.js","sourceRoot":"","sources":["../../../../components/TopBar/TopBar.tsx"],"names":[],"mappings":";AACA,OAAO,cAAc,CAAC;AA8CtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,eAAe,GAAG,KAAK,EACvB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,aAAa,GAAG;QACpB,aAAa;QACb,OAAO,KAAK,WAAW,IAAI,wBAAwB;QACnD,eAAe,IAAI,2BAA2B;QAC9C,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,kBAAQ,SAAS,EAAE,aAAa,eAAa,IAAI,aAC9C,OAAO,KAAK,WAAW,IAAI,CAC1B,cAAK,SAAS,EAAC,oCAAoC,YACjD,cAAK,SAAS,EAAC,0BAA0B,GAAG,GACxC,CACP,
|
|
1
|
+
{"version":3,"file":"TopBar.js","sourceRoot":"","sources":["../../../../components/TopBar/TopBar.tsx"],"names":[],"mappings":";AACA,OAAO,cAAc,CAAC;AA8CtB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,UAAU,EACV,UAAU,EACV,eAAe,GAAG,KAAK,EACvB,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,aAAa,GAAG;QACpB,aAAa;QACb,OAAO,KAAK,WAAW,IAAI,wBAAwB;QACnD,eAAe,IAAI,2BAA2B;QAC9C,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,kBAAQ,SAAS,EAAE,aAAa,eAAa,IAAI,aAC9C,OAAO,KAAK,WAAW,IAAI,CAC1B,cAAK,SAAS,EAAC,oCAAoC,YACjD,cAAK,SAAS,EAAC,0BAA0B,GAAG,GACxC,CACP,EAED,eAAK,SAAS,EAAC,wBAAwB,aACpC,OAAO,IAAI,CACV,cAAK,SAAS,EAAC,sBAAsB,YAClC,OAAO,GACJ,CACP,EAED,eAAK,SAAS,EAAC,sBAAsB,aAClC,UAAU,IAAI,CACb,cAAK,SAAS,EAAC,yBAAyB,YACrC,UAAU,GACP,CACP,EAEA,KAAK,IAAI,CACR,YAAG,SAAS,EAAC,oBAAoB,eAAW,QAAQ,YACjD,KAAK,GACJ,CACL,IACG,EAEN,eAAK,SAAS,EAAC,uBAAuB,aACnC,iBAAiB,IAAI,CACpB,cAAK,SAAS,EAAC,8BAA8B,YAC1C,iBAAiB,GACd,CACP,EACA,QAAQ,IAAI,CACX,cAAK,SAAS,EAAC,8BAA8B,YAC1C,QAAQ,GACL,CACP,IACG,IACF,EAEL,UAAU,IAAI,CACb,cAAK,SAAS,EAAC,yBAAyB,YACrC,UAAU,GACP,CACP,IACM,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -50,6 +50,12 @@
|
|
|
50
50
|
overflow-y: auto;
|
|
51
51
|
overflow-x: clip;
|
|
52
52
|
z-index: 1;
|
|
53
|
+
|
|
54
|
+
/* Column flow so the footer (now a scroll-area child) can pin to the bottom and
|
|
55
|
+
content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
|
|
56
|
+
reveal the content underneath. */
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: column;
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
/* Inner wrapper constrains content width at the large tier (enterprise desktop)
|
|
@@ -57,6 +63,9 @@
|
|
|
57
63
|
width. Full-bleed below large. */
|
|
58
64
|
.muka-view__body-inner {
|
|
59
65
|
width: 100%;
|
|
66
|
+
/* Grow on short content so the sticky footer is pushed to the bottom rather
|
|
67
|
+
than floating mid-screen. */
|
|
68
|
+
flex: 1 0 auto;
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
@media (min-width: 1024px) {
|
|
@@ -76,6 +85,8 @@
|
|
|
76
85
|
/* ─── Footer (e.g. BottomBar) ─────────────────────────── */
|
|
77
86
|
|
|
78
87
|
.muka-view__footer {
|
|
88
|
+
position: sticky;
|
|
89
|
+
bottom: 0;
|
|
79
90
|
flex-shrink: 0;
|
|
80
91
|
z-index: 2;
|
|
81
92
|
}
|
|
@@ -21,7 +21,7 @@ export const View = ({ level, title, leading, trailing, trailingSecondary, contr
|
|
|
21
21
|
`muka-view--surface-${surfaceLevel}`,
|
|
22
22
|
className,
|
|
23
23
|
].filter(Boolean).join(' ');
|
|
24
|
-
return (_jsxs("div", { className: viewClasses, "data-size": size, children: [_jsx(TopBar, { title: title, leading: leading, trailing: trailing, trailingSecondary: trailingSecondary, controlBar: controlBar, breadcrumb: breadcrumb, size: size }),
|
|
24
|
+
return (_jsxs("div", { className: viewClasses, "data-size": size, children: [_jsx(TopBar, { title: title, leading: leading, trailing: trailing, trailingSecondary: trailingSecondary, controlBar: controlBar, breadcrumb: breadcrumb, size: size }), _jsxs("main", { className: "muka-view__body", children: [_jsx("div", { className: "muka-view__body-inner", children: children }), footer && (_jsx("div", { className: "muka-view__footer", children: footer }))] })] }));
|
|
25
25
|
};
|
|
26
26
|
export default View;
|
|
27
27
|
//# sourceMappingURL=View.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../components/View/View.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,YAAY,CAAC;AAiDpB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,IAAI,GAAwB,CAAC,EACxC,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,YAAY,GAAG,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,cAAc,KAAK,EAAE;QACrB,sBAAsB,YAAY,EAAE;QACpC,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,eAAK,SAAS,EAAE,WAAW,eAAa,IAAI,aAC1C,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,GACV,EAEF,
|
|
1
|
+
{"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../components/View/View.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,YAAY,CAAC;AAiDpB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,IAAI,GAAwB,CAAC,EACxC,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,YAAY,GAAG,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,EAAE,GACf,EAAE,EAAE;IACH,MAAM,WAAW,GAAG;QAClB,WAAW;QACX,cAAc,KAAK,EAAE;QACrB,sBAAsB,YAAY,EAAE;QACpC,SAAS;KACV,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,OAAO,CACL,eAAK,SAAS,EAAE,WAAW,eAAa,IAAI,aAC1C,KAAC,MAAM,IACL,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,GACV,EAEF,gBAAM,SAAS,EAAC,iBAAiB,aAC/B,cAAK,SAAS,EAAC,uBAAuB,YACnC,QAAQ,GACL,EAEL,MAAM,IAAI,CACT,cAAK,SAAS,EAAC,mBAAmB,YAC/B,MAAM,GACH,CACP,IACI,IACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
|
@@ -121,6 +121,15 @@
|
|
|
121
121
|
backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
|
|
122
122
|
-webkit-backdrop-filter: blur(var(--bottombar-floating-backdrop-blur));
|
|
123
123
|
padding: var(--bottombar-floating-padding-top) var(--bottombar-floating-margin-x) var(--bottombar-floating-margin-bottom);
|
|
124
|
+
|
|
125
|
+
/* The transparent frosted margin around the pill overlays scrolling content;
|
|
126
|
+
let scroll/taps fall through to that content, keeping only the pill itself
|
|
127
|
+
interactive (re-enabled on __content below). */
|
|
128
|
+
pointer-events: none;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.muka-bottombar--floating .muka-bottombar__content {
|
|
132
|
+
pointer-events: auto;
|
|
124
133
|
}
|
|
125
134
|
|
|
126
135
|
.muka-bottombar--floating .muka-bottombar__content {
|
|
@@ -50,6 +50,12 @@
|
|
|
50
50
|
overflow-y: auto;
|
|
51
51
|
overflow-x: clip;
|
|
52
52
|
z-index: 1;
|
|
53
|
+
|
|
54
|
+
/* Column flow so the footer (now a scroll-area child) can pin to the bottom and
|
|
55
|
+
content scrolls *behind* it — letting a floating BottomBar's frosted backdrop
|
|
56
|
+
reveal the content underneath. */
|
|
57
|
+
display: flex;
|
|
58
|
+
flex-direction: column;
|
|
53
59
|
}
|
|
54
60
|
|
|
55
61
|
/* Inner wrapper constrains content width at the large tier (enterprise desktop)
|
|
@@ -57,6 +63,9 @@
|
|
|
57
63
|
width. Full-bleed below large. */
|
|
58
64
|
.muka-view__body-inner {
|
|
59
65
|
width: 100%;
|
|
66
|
+
/* Grow on short content so the sticky footer is pushed to the bottom rather
|
|
67
|
+
than floating mid-screen. */
|
|
68
|
+
flex: 1 0 auto;
|
|
60
69
|
}
|
|
61
70
|
|
|
62
71
|
@media (min-width: 1024px) {
|
|
@@ -76,6 +85,8 @@
|
|
|
76
85
|
/* ─── Footer (e.g. BottomBar) ─────────────────────────── */
|
|
77
86
|
|
|
78
87
|
.muka-view__footer {
|
|
88
|
+
position: sticky;
|
|
89
|
+
bottom: 0;
|
|
79
90
|
flex-shrink: 0;
|
|
80
91
|
z-index: 2;
|
|
81
92
|
}
|