@zolomedia/bifrost-client 1.7.74 → 1.7.76
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.
|
@@ -14,12 +14,8 @@
|
|
|
14
14
|
* Philosophy:
|
|
15
15
|
* - Semantic hierarchy (h0-h6 for document structure)
|
|
16
16
|
* - Block-level text (paragraphs)
|
|
17
|
-
* - NO styling, NO classes
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* zReboot Defaults (from zTheme):
|
|
21
|
-
* - Headings: margin-top: 0, margin-bottom: 0.5rem, font-weight: 500, line-height: 1.2
|
|
22
|
-
* - Paragraph: margin-top: 0, margin-bottom: 1rem
|
|
17
|
+
* - NO styling, NO classes here — zbase.css owns the heading/paragraph baseline
|
|
18
|
+
* (sizes, weights, margins). These factories emit bare elements only.
|
|
23
19
|
*
|
|
24
20
|
* Dependencies:
|
|
25
21
|
* - utils/dom_utils.js (createElement, setAttributes)
|
|
@@ -68,14 +64,9 @@ import { createElement, setAttributes } from '../../../zSys/dom/dom_utils.js';
|
|
|
68
64
|
* - h3: Subsections
|
|
69
65
|
* - h4-h6: Further nested subsections
|
|
70
66
|
*
|
|
71
|
-
*
|
|
72
|
-
* - h0:
|
|
73
|
-
* - h1: 2.5rem
|
|
74
|
-
* - h2: 2rem (32px)
|
|
75
|
-
* - h3: 1.75rem (28px)
|
|
76
|
-
* - h4: 1.5rem (24px)
|
|
77
|
-
* - h5: 1.25rem (20px)
|
|
78
|
-
* - h6: 1rem (16px)
|
|
67
|
+
* Sizes (owned by zbase.css, not here):
|
|
68
|
+
* - h0: clamp(2.5rem, 5vw, 4rem) — zOS hero
|
|
69
|
+
* - h1: 2.5rem h2: 2rem h3: 1.75rem h4: 1.5rem h5: 1.25rem h6: 1rem
|
|
79
70
|
*
|
|
80
71
|
* @param {number} [level=1] - Heading level (0-6), enforced and capped
|
|
81
72
|
* @param {Object} [attributes={}] - HTML attributes (id, class, data-*, etc.)
|
|
@@ -135,10 +126,7 @@ export function createHeading(level = 1, attributes = {}) {
|
|
|
135
126
|
*
|
|
136
127
|
* Used for blocks of text content (body copy, descriptions, etc.).
|
|
137
128
|
* The most common text container in web documents.
|
|
138
|
-
*
|
|
139
|
-
* zReboot Defaults:
|
|
140
|
-
* - margin-top: 0
|
|
141
|
-
* - margin-bottom: 1rem
|
|
129
|
+
* Spacing/baseline owned by zbase.css; this factory emits a bare <p>.
|
|
142
130
|
*
|
|
143
131
|
* @param {Object} [attributes={}] - HTML attributes (id, class, data-*, etc.)
|
|
144
132
|
* @returns {HTMLParagraphElement} The created paragraph element
|
package/bifrost_client.js
CHANGED
|
@@ -45,6 +45,15 @@
|
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
// ─── core-import origin allowlist (SSOT) ────────────────────────────────────
|
|
49
|
+
// bifrost_core_url arrives over the WebSocket (attacker-influenceable), and the
|
|
50
|
+
// bootstrap import()s it — so the core may only load from a blessed origin.
|
|
51
|
+
// The page origin is always allowed (added at load time). Add new blessed CDNs
|
|
52
|
+
// HERE (this is the one place to edit). Outside self-hosters extend per-instance
|
|
53
|
+
// via opts.coreOriginAllowlist instead of forking.
|
|
54
|
+
// ⚠ Phase 2: when the client serves from js.zolo.media, add it to this list.
|
|
55
|
+
const DEFAULT_CORE_ORIGINS = ['https://cdn.jsdelivr.net'];
|
|
56
|
+
|
|
48
57
|
// ─── BifrostClient (bootstrap) ──────────────────────────────────────────────
|
|
49
58
|
|
|
50
59
|
class BifrostClient {
|
|
@@ -122,7 +131,7 @@
|
|
|
122
131
|
// would load attacker code into the page context.
|
|
123
132
|
const allowedOrigins = [
|
|
124
133
|
window.location.origin,
|
|
125
|
-
|
|
134
|
+
...DEFAULT_CORE_ORIGINS,
|
|
126
135
|
...(this._opts.coreOriginAllowlist || []),
|
|
127
136
|
];
|
|
128
137
|
const coreOrigin = new URL(coreUrl).origin;
|
|
@@ -145,7 +154,6 @@
|
|
|
145
154
|
// Instantiate BifrostCore — it reads zui-config itself, connects, sends execute_walker
|
|
146
155
|
const core = new mod.BifrostCore(this._url, {
|
|
147
156
|
autoConnect: true,
|
|
148
|
-
zTheme: false, // ztheme.js already loaded by zVaF.html
|
|
149
157
|
...this._opts,
|
|
150
158
|
});
|
|
151
159
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zolomedia/bifrost-client",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.76",
|
|
4
4
|
"description": "Browser client for zBifrost — the WebSocket bridge that turns JSON events from a zOS server into live DOM. Thin bootstrap + server-controlled core.",
|
|
5
5
|
"homepage": "https://github.com/ZoloAi/zbifrost-client#readme",
|
|
6
6
|
"repository": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* Philosophy:
|
|
14
14
|
* - "Spacing first" - Rhythm and breathing room for all layouts
|
|
15
15
|
* - Pure functions (input → output, no side effects)
|
|
16
|
-
* - Uses zTheme spacing scale exclusively (0-5, auto
|
|
16
|
+
* - Uses zTheme spacing scale exclusively (0-5, plus zmx-auto for centering)
|
|
17
17
|
* - Generates class names programmatically (no hardcoded strings)
|
|
18
18
|
*
|
|
19
19
|
* zTheme Spacing Scale:
|
|
@@ -23,8 +23,7 @@
|
|
|
23
23
|
* - 3: 1rem (16px) Base unit
|
|
24
24
|
* - 4: 1.5rem (24px)
|
|
25
25
|
* - 5: 3rem (48px)
|
|
26
|
-
* - auto:
|
|
27
|
-
* - n1-n5: Negative margins (pull elements closer)
|
|
26
|
+
* - auto: horizontal centering only (zmx-auto)
|
|
28
27
|
*
|
|
29
28
|
* Dependencies:
|
|
30
29
|
* - None (pure utility, no imports needed)
|
|
@@ -54,26 +53,26 @@
|
|
|
54
53
|
/**
|
|
55
54
|
* Generate margin class name (zTheme: zm-, zmt-, zmb-, zms-, zme-, zmx-, zmy-)
|
|
56
55
|
*
|
|
57
|
-
* Supports
|
|
58
|
-
* - All sides: zm-{0-5
|
|
59
|
-
* - Top: zmt-{0-5
|
|
60
|
-
* - Bottom: zmb-{0-5}
|
|
61
|
-
* - Start (left in LTR): zms-{0-5}
|
|
62
|
-
* - End (right in LTR): zme-{0-5
|
|
63
|
-
* - X-axis (left + right): zmx-{0-5|auto
|
|
64
|
-
* - Y-axis (top + bottom): zmy-{0-5
|
|
65
|
-
* - Negative: zm-n{1-5}, zmt-n{1-5}, zmb-n{1-5}, zms-n{1-5}, zme-n{1-5}, zmx-n{1-5}, zmy-n{1-5}
|
|
56
|
+
* Supports the zTheme margin patterns defined in zbase.css:
|
|
57
|
+
* - All sides: zm-{0-5}
|
|
58
|
+
* - Top: zmt-{0-5}
|
|
59
|
+
* - Bottom: zmb-{0-5}
|
|
60
|
+
* - Start (left in LTR): zms-{0-5}
|
|
61
|
+
* - End (right in LTR): zme-{0-5}
|
|
62
|
+
* - X-axis (left + right): zmx-{0-5} | zmx-auto
|
|
63
|
+
* - Y-axis (top + bottom): zmy-{0-5}
|
|
66
64
|
*
|
|
67
|
-
*
|
|
65
|
+
* Note: 'auto' is supported only on the x-axis (zmx-auto, horizontal centering).
|
|
66
|
+
* Negative margins are not part of zbase and return null.
|
|
67
|
+
*
|
|
68
|
+
* @param {number|string|null} size - Size (0-5) or 'auto' (x-axis only)
|
|
68
69
|
* @param {string} [side=''] - Side ('top', 'bottom', 'start', 'end', 'x', 'y', or '' for all)
|
|
69
70
|
* @returns {string|null} Class name or null if invalid
|
|
70
71
|
*
|
|
71
72
|
* @example
|
|
72
73
|
* getMarginClass(3); // 'zm-3' (all sides)
|
|
73
74
|
* getMarginClass(4, 'top'); // 'zmt-4'
|
|
74
|
-
* getMarginClass('auto'); // 'zm-auto'
|
|
75
75
|
* getMarginClass('auto', 'x'); // 'zmx-auto' (horizontal centering)
|
|
76
|
-
* getMarginClass(-2, 'top'); // 'zmt-n2' (negative margin, pull up)
|
|
77
76
|
*/
|
|
78
77
|
export function getMarginClass(size, side = '') {
|
|
79
78
|
// Handle null/undefined
|
|
@@ -93,22 +92,11 @@ export function getMarginClass(size, side = '') {
|
|
|
93
92
|
};
|
|
94
93
|
const sideSuffix = sideMap[side] || '';
|
|
95
94
|
|
|
96
|
-
// Handle auto
|
|
95
|
+
// Handle auto — only zmx-auto exists in zbase (horizontal centering).
|
|
96
|
+
// Negative margins and other -auto sides were removed: nothing emitted them and
|
|
97
|
+
// zbase never defined the classes (they'd be silent no-ops).
|
|
97
98
|
if (size === 'auto') {
|
|
98
|
-
|
|
99
|
-
if (sideSuffix === '' || sideSuffix === 't' || sideSuffix === 'e' || sideSuffix === 'x' || sideSuffix === 'y') {
|
|
100
|
-
return `zm${sideSuffix}-auto`;
|
|
101
|
-
}
|
|
102
|
-
return null; // zmb-auto and zms-auto don't exist
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// Handle negative margins
|
|
106
|
-
if (typeof size === 'number' && size < 0) {
|
|
107
|
-
const absSize = Math.abs(size);
|
|
108
|
-
if (absSize >= 1 && absSize <= 5) {
|
|
109
|
-
return `zm${sideSuffix}-n${absSize}`;
|
|
110
|
-
}
|
|
111
|
-
return null;
|
|
99
|
+
return sideSuffix === 'x' ? 'zmx-auto' : null;
|
|
112
100
|
}
|
|
113
101
|
|
|
114
102
|
// Handle positive sizes (0-5)
|
package/zSys/theme/zbase.css
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* Sections:
|
|
10
10
|
* 0. Base color tokens (SSOT — --color-*)
|
|
11
11
|
* 1. Reset
|
|
12
|
-
* 2. Grid (zRow / zCol
|
|
13
|
-
* 3. Gutters (zG-0
|
|
12
|
+
* 2. Grid (zRow / zCol / zCol-auto — minimal, used by zDash)
|
|
13
|
+
* 3. Gutters (zG-0 only)
|
|
14
14
|
* 4. Flex utilities
|
|
15
15
|
* 5. Display helpers (.zD-flex, .zD-block, etc.)
|
|
16
16
|
* 6. Spacing helpers (.zm-*, .zp-*, .zme-*, .zms-*)
|
|
@@ -69,8 +69,17 @@ zvaf,
|
|
|
69
69
|
zNavBar,
|
|
70
70
|
zBifrostBadge { display: block; }
|
|
71
71
|
|
|
72
|
-
/* ─── zOS heading
|
|
73
|
-
/*
|
|
72
|
+
/* ─── zOS heading scale (zH0–zH6) ──────────────────────────────────────────── */
|
|
73
|
+
/* Bifrost owns the heading baseline so a bare <h1>…<h6> renders deliberately,
|
|
74
|
+
* identical to zCLI, with no app CSS. Apps re-skin via _zClass — they never
|
|
75
|
+
* SUPPLY the scale. h0 is the zOS system/hero heading (not in HTML5). */
|
|
76
|
+
|
|
77
|
+
h0, h1, h2, h3, h4, h5, h6 {
|
|
78
|
+
margin-top: 0;
|
|
79
|
+
margin-bottom: 0.5rem;
|
|
80
|
+
font-weight: 600;
|
|
81
|
+
line-height: 1.2;
|
|
82
|
+
}
|
|
74
83
|
|
|
75
84
|
h0 {
|
|
76
85
|
display: block;
|
|
@@ -78,10 +87,15 @@ h0 {
|
|
|
78
87
|
font-weight: 800;
|
|
79
88
|
line-height: 1.1;
|
|
80
89
|
letter-spacing: -0.02em;
|
|
81
|
-
margin-top: 0;
|
|
82
|
-
margin-bottom: 0.5rem;
|
|
83
90
|
}
|
|
84
91
|
|
|
92
|
+
h1 { font-size: 2.5rem; font-weight: 700; line-height: 1.15; letter-spacing: -0.02em; }
|
|
93
|
+
h2 { font-size: 2rem; font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; }
|
|
94
|
+
h3 { font-size: 1.75rem; }
|
|
95
|
+
h4 { font-size: 1.5rem; }
|
|
96
|
+
h5 { font-size: 1.25rem; }
|
|
97
|
+
h6 { font-size: 1rem; }
|
|
98
|
+
|
|
85
99
|
/* ─── zTheme semantic text colors — zCLI parity ───────────────────────────── */
|
|
86
100
|
/* The client maps a header/text `color:` token → `.zText-<token>`. These are
|
|
87
101
|
* the zOS defaults so `color: PRIMARY` paints in Bifrost without any _zClass,
|
|
@@ -720,107 +734,20 @@ zNavBar .zNav-link.active {
|
|
|
720
734
|
.zCol { flex: 1 0 0%; }
|
|
721
735
|
.zCol-auto { flex: 0 0 auto; width: auto; }
|
|
722
736
|
|
|
723
|
-
|
|
724
|
-
.
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
.zCol-6 { flex: 0 0 auto; width: 50%; }
|
|
729
|
-
.zCol-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
730
|
-
.zCol-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
731
|
-
.zCol-9 { flex: 0 0 auto; width: 75%; }
|
|
732
|
-
.zCol-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
733
|
-
.zCol-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
734
|
-
.zCol-12 { flex: 0 0 auto; width: 100%; }
|
|
735
|
-
|
|
736
|
-
@media (min-width: 576px) {
|
|
737
|
-
.zCol-sm { flex: 1 0 0%; }
|
|
738
|
-
.zCol-sm-auto { flex: 0 0 auto; width: auto; }
|
|
739
|
-
.zCol-sm-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
740
|
-
.zCol-sm-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
741
|
-
.zCol-sm-3 { flex: 0 0 auto; width: 25%; }
|
|
742
|
-
.zCol-sm-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
743
|
-
.zCol-sm-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
744
|
-
.zCol-sm-6 { flex: 0 0 auto; width: 50%; }
|
|
745
|
-
.zCol-sm-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
746
|
-
.zCol-sm-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
747
|
-
.zCol-sm-9 { flex: 0 0 auto; width: 75%; }
|
|
748
|
-
.zCol-sm-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
749
|
-
.zCol-sm-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
750
|
-
.zCol-sm-12 { flex: 0 0 auto; width: 100%; }
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
@media (min-width: 768px) {
|
|
754
|
-
.zCol-md { flex: 1 0 0%; }
|
|
755
|
-
.zCol-md-auto { flex: 0 0 auto; width: auto; }
|
|
756
|
-
.zCol-md-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
757
|
-
.zCol-md-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
758
|
-
.zCol-md-3 { flex: 0 0 auto; width: 25%; }
|
|
759
|
-
.zCol-md-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
760
|
-
.zCol-md-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
761
|
-
.zCol-md-6 { flex: 0 0 auto; width: 50%; }
|
|
762
|
-
.zCol-md-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
763
|
-
.zCol-md-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
764
|
-
.zCol-md-9 { flex: 0 0 auto; width: 75%; }
|
|
765
|
-
.zCol-md-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
766
|
-
.zCol-md-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
767
|
-
.zCol-md-12 { flex: 0 0 auto; width: 100%; }
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
@media (min-width: 992px) {
|
|
771
|
-
.zCol-lg { flex: 1 0 0%; }
|
|
772
|
-
.zCol-lg-auto { flex: 0 0 auto; width: auto; }
|
|
773
|
-
.zCol-lg-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
774
|
-
.zCol-lg-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
775
|
-
.zCol-lg-3 { flex: 0 0 auto; width: 25%; }
|
|
776
|
-
.zCol-lg-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
777
|
-
.zCol-lg-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
778
|
-
.zCol-lg-6 { flex: 0 0 auto; width: 50%; }
|
|
779
|
-
.zCol-lg-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
780
|
-
.zCol-lg-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
781
|
-
.zCol-lg-9 { flex: 0 0 auto; width: 75%; }
|
|
782
|
-
.zCol-lg-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
783
|
-
.zCol-lg-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
784
|
-
.zCol-lg-12 { flex: 0 0 auto; width: 100%; }
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
@media (min-width: 1200px) {
|
|
788
|
-
.zCol-xl { flex: 1 0 0%; }
|
|
789
|
-
.zCol-xl-auto { flex: 0 0 auto; width: auto; }
|
|
790
|
-
.zCol-xl-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
791
|
-
.zCol-xl-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
792
|
-
.zCol-xl-3 { flex: 0 0 auto; width: 25%; }
|
|
793
|
-
.zCol-xl-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
794
|
-
.zCol-xl-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
795
|
-
.zCol-xl-6 { flex: 0 0 auto; width: 50%; }
|
|
796
|
-
.zCol-xl-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
797
|
-
.zCol-xl-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
798
|
-
.zCol-xl-9 { flex: 0 0 auto; width: 75%; }
|
|
799
|
-
.zCol-xl-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
800
|
-
.zCol-xl-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
801
|
-
.zCol-xl-12 { flex: 0 0 auto; width: 100%; }
|
|
802
|
-
}
|
|
737
|
+
/* zbase ships ONLY the minimal grid the renderer emits (zRow / zCol / zCol-auto —
|
|
738
|
+
* used by zDash). The full 12-column matrix and responsive breakpoint variants
|
|
739
|
+
* (zCol-1..12, zCol-{sm,md,lg,xl}-*) were evicted: zOS is not a CSS framework.
|
|
740
|
+
* An app that wants a column grid brings its own stylesheet. Strip, don't compile —
|
|
741
|
+
* it's CSS, trivially re-added if a real zOS event ever needs it. */
|
|
803
742
|
|
|
804
743
|
/* ─── 3. Gutters ───────────────────────────────────────────────────────────── */
|
|
805
744
|
|
|
745
|
+
/* Only zG-0 is kept — zDash builds its sidebar/content row with `.zRow.zG-0`
|
|
746
|
+
* (zero gutters). The zG-1..5 gutter scale was a framework convenience nothing
|
|
747
|
+
* emits; evicted with the 12-col grid above. */
|
|
806
748
|
.zRow.zG-0 { margin-right: 0; margin-left: 0; }
|
|
807
749
|
.zRow.zG-0 > [class*="zCol"] { padding-right: 0; padding-left: 0; }
|
|
808
750
|
|
|
809
|
-
.zRow.zG-1 { margin-right: -0.25rem; margin-left: -0.25rem; }
|
|
810
|
-
.zRow.zG-1 > [class*="zCol"] { padding-right: 0.25rem; padding-left: 0.25rem; }
|
|
811
|
-
|
|
812
|
-
.zRow.zG-2 { margin-right: -0.5rem; margin-left: -0.5rem; }
|
|
813
|
-
.zRow.zG-2 > [class*="zCol"] { padding-right: 0.5rem; padding-left: 0.5rem; }
|
|
814
|
-
|
|
815
|
-
.zRow.zG-3 { margin-right: -0.75rem; margin-left: -0.75rem; }
|
|
816
|
-
.zRow.zG-3 > [class*="zCol"] { padding-right: 0.75rem; padding-left: 0.75rem; }
|
|
817
|
-
|
|
818
|
-
.zRow.zG-4 { margin-right: -1rem; margin-left: -1rem; }
|
|
819
|
-
.zRow.zG-4 > [class*="zCol"] { padding-right: 1rem; padding-left: 1rem; }
|
|
820
|
-
|
|
821
|
-
.zRow.zG-5 { margin-right: -1.5rem; margin-left: -1.5rem; }
|
|
822
|
-
.zRow.zG-5 > [class*="zCol"] { padding-right: 1.5rem; padding-left: 1.5rem; }
|
|
823
|
-
|
|
824
751
|
/* ─── 4. Flex utilities ────────────────────────────────────────────────────── */
|
|
825
752
|
|
|
826
753
|
.zFlex-row { flex-direction: row !important; }
|
|
@@ -844,13 +771,9 @@ zNavBar .zNav-link.active {
|
|
|
844
771
|
.zFlex-items-stretch { align-items: stretch !important; }
|
|
845
772
|
.zFlex-items-baseline { align-items: baseline !important; }
|
|
846
773
|
|
|
847
|
-
|
|
848
|
-
.
|
|
849
|
-
|
|
850
|
-
.zFlex-grow-1 { flex-grow: 1 !important; }
|
|
851
|
-
.zFlex-shrink-0 { flex-shrink: 0 !important; }
|
|
852
|
-
.zFlex-shrink-1 { flex-shrink: 1 !important; }
|
|
853
|
-
|
|
774
|
+
/* grow/shrink/fill helpers evicted — not in the _GUI container mapper
|
|
775
|
+
* (container_utils.js) and never emitted. Re-add only if a real zOS event needs
|
|
776
|
+
* flex grow/shrink. */
|
|
854
777
|
.zGap-0 { gap: 0 !important; }
|
|
855
778
|
.zGap-1 { gap: 0.25rem !important; }
|
|
856
779
|
.zGap-2 { gap: 0.5rem !important; }
|
|
@@ -904,6 +827,22 @@ zNavBar .zNav-link.active {
|
|
|
904
827
|
.zme-4 { margin-right: 1rem !important; }
|
|
905
828
|
.zme-5 { margin-right: 1.5rem !important; }
|
|
906
829
|
|
|
830
|
+
/* axis margins — emitted by spacing_utils (getMarginClass side 'x'/'y'). zmx-auto
|
|
831
|
+
* (centering) lives in the misc helpers section. */
|
|
832
|
+
.zmx-0 { margin-left: 0 !important; margin-right: 0 !important; }
|
|
833
|
+
.zmx-1 { margin-left: 0.25rem !important; margin-right: 0.25rem !important; }
|
|
834
|
+
.zmx-2 { margin-left: 0.5rem !important; margin-right: 0.5rem !important; }
|
|
835
|
+
.zmx-3 { margin-left: 0.75rem !important; margin-right: 0.75rem !important; }
|
|
836
|
+
.zmx-4 { margin-left: 1rem !important; margin-right: 1rem !important; }
|
|
837
|
+
.zmx-5 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
|
|
838
|
+
|
|
839
|
+
.zmy-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
|
|
840
|
+
.zmy-1 { margin-top: 0.25rem !important; margin-bottom: 0.25rem !important; }
|
|
841
|
+
.zmy-2 { margin-top: 0.5rem !important; margin-bottom: 0.5rem !important; }
|
|
842
|
+
.zmy-3 { margin-top: 0.75rem !important; margin-bottom: 0.75rem !important; }
|
|
843
|
+
.zmy-4 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
|
|
844
|
+
.zmy-5 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
|
|
845
|
+
|
|
907
846
|
.zp-0 { padding: 0 !important; }
|
|
908
847
|
.zp-1 { padding: 0.25rem !important; }
|
|
909
848
|
.zp-2 { padding: 0.5rem !important; }
|
|
@@ -939,6 +878,21 @@ zNavBar .zNav-link.active {
|
|
|
939
878
|
.zpe-4 { padding-right: 1rem !important; }
|
|
940
879
|
.zpe-5 { padding-right: 1.5rem !important; }
|
|
941
880
|
|
|
881
|
+
/* axis padding — emitted by spacing_utils (getPaddingClass side 'x'/'y'). */
|
|
882
|
+
.zpx-0 { padding-left: 0 !important; padding-right: 0 !important; }
|
|
883
|
+
.zpx-1 { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
|
|
884
|
+
.zpx-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
|
|
885
|
+
.zpx-3 { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
|
|
886
|
+
.zpx-4 { padding-left: 1rem !important; padding-right: 1rem !important; }
|
|
887
|
+
.zpx-5 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
|
|
888
|
+
|
|
889
|
+
.zpy-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
|
|
890
|
+
.zpy-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
|
|
891
|
+
.zpy-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
|
|
892
|
+
.zpy-3 { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
|
|
893
|
+
.zpy-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
|
|
894
|
+
.zpy-5 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
|
|
895
|
+
|
|
942
896
|
/* ─── 7. Tabs ──────────────────────────────────────────────────────────────── */
|
|
943
897
|
|
|
944
898
|
.zTab-content > .zTab-pane { display: none; }
|