mosaic-headless 1.6.0 → 1.7.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.
- package/README.ja.md +2 -2
- package/README.ko.md +2 -2
- package/README.md +2 -2
- package/README.zh-TW.md +2 -2
- package/SKILL.md +12 -6
- package/assets/templates/platforms/claude-ai.json +1 -1
- package/assets/templates/platforms/claude-code.json +1 -1
- package/assets/templates/platforms/codex-cli.json +1 -1
- package/assets/templates/platforms/copilot.json +1 -1
- package/assets/templates/platforms/gemini-cli.json +1 -1
- package/bin/check-release.mjs +2 -2
- package/data/browser-verification.csv +774 -0
- package/data/intro-verification.csv +7 -7
- package/data/rwd-verification.csv +56 -0
- package/package.json +1 -1
- package/sites/_moksa.py +152 -2
- package/sites/moksa.json +3029 -224
|
@@ -2,7 +2,7 @@ check,result,detail
|
|
|
2
2
|
PLAYS,PASS,43 of 43 intro elements changed state
|
|
3
3
|
COUNTS,PASS,--mk-n reached 100
|
|
4
4
|
ENDS,PASS,veil is out of hit-testing from 4200ms
|
|
5
|
-
NO_TRAP,PASS,"0 content elements still at opacity 0 in the viewport (
|
|
5
|
+
NO_TRAP,PASS,"0 content elements still at opacity 0 in the viewport (61 below the fold awaiting their own scroll timeline, 1 mid-blink)"
|
|
6
6
|
CLEARS,PASS,a real click landed on 'mk-caret-row'
|
|
7
7
|
DEGRADES,PASS,with reduced motion the veil is display:none throughout
|
|
8
8
|
READABLE,PASS,0 elements invisible at 120ms with reduced motion
|
|
@@ -10,13 +10,13 @@ READABLE,PASS,0 elements invisible at 120ms with reduced motion
|
|
|
10
10
|
t_ms,counter,veil_visibility,veil_clip,veil_covers_centre,hit_centre,invisible_content
|
|
11
11
|
120,,,,False,html.no-js,0
|
|
12
12
|
400,0,visible,none,True,mk-boot,7
|
|
13
|
-
800,
|
|
14
|
-
1300,
|
|
15
|
-
1800,
|
|
16
|
-
2300,
|
|
13
|
+
800,11,visible,none,True,mk-boot,7
|
|
14
|
+
1300,37,visible,none,True,mk-boot,7
|
|
15
|
+
1800,66,visible,none,True,p.M_EL56,3
|
|
16
|
+
2300,93,visible,none,True,p.M_EL56,3
|
|
17
17
|
2700,100,visible,none,True,p.M_EL56,3
|
|
18
|
-
3000,100,visible,inset(0px 0px
|
|
19
|
-
3300,100,visible,inset(0px 0px
|
|
18
|
+
3000,100,visible,inset(0px 0px 0.487303%),True,p.M_EL56,3
|
|
19
|
+
3300,100,visible,inset(0px 0px 84.1246%),False,mk-caret-row,2
|
|
20
20
|
3700,100,hidden,inset(0px 0px 100%),False,mk-caret-row,0
|
|
21
21
|
4200,100,hidden,inset(0px 0px 100%),False,mk-caret-row,0
|
|
22
22
|
5200,100,hidden,inset(0px 0px 100%),False,mk-caret-row,0
|
|
@@ -87,6 +87,46 @@ https://mosaic.moksaweb.com/moksa/,mk-svc-3,_m,grid-template-columns,"repeat(1,
|
|
|
87
87
|
https://mosaic.moksaweb.com/moksa/,mk-svc-3,_m,row-gap,10px,10px,verified
|
|
88
88
|
https://mosaic.moksaweb.com/moksa/,mk-svc-3,_m,padding-top,20px,20px,verified
|
|
89
89
|
https://mosaic.moksaweb.com/moksa/,mk-svc-3,_m,padding-bottom,20px,20px,verified
|
|
90
|
+
https://mosaic.moksaweb.com/moksa/,matrix,_t,padding-left,28px,28px,verified
|
|
91
|
+
https://mosaic.moksaweb.com/moksa/,matrix,_t,padding-right,28px,28px,verified
|
|
92
|
+
https://mosaic.moksaweb.com/moksa/,matrix,_m,padding-left,18px,18px,verified
|
|
93
|
+
https://mosaic.moksaweb.com/moksa/,matrix,_m,padding-right,18px,18px,verified
|
|
94
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-pad,_m,padding-top,52px,52px,verified
|
|
95
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-pad,_m,padding-bottom,52px,52px,verified
|
|
96
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-cols,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
97
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-cols,_m,column-gap,6px,6px,verified
|
|
98
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-0,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
99
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-0,_m,column-gap,6px,6px,verified
|
|
100
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-0,_m,padding-top,11px,11px,verified
|
|
101
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-0,_m,padding-bottom,11px,11px,verified
|
|
102
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-1,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
103
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-1,_m,column-gap,6px,6px,verified
|
|
104
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-1,_m,padding-top,11px,11px,verified
|
|
105
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-1,_m,padding-bottom,11px,11px,verified
|
|
106
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-2,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
107
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-2,_m,column-gap,6px,6px,verified
|
|
108
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-2,_m,padding-top,11px,11px,verified
|
|
109
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-2,_m,padding-bottom,11px,11px,verified
|
|
110
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-3,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
111
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-3,_m,column-gap,6px,6px,verified
|
|
112
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-3,_m,padding-top,11px,11px,verified
|
|
113
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-3,_m,padding-bottom,11px,11px,verified
|
|
114
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-4,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
115
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-4,_m,column-gap,6px,6px,verified
|
|
116
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-4,_m,padding-top,11px,11px,verified
|
|
117
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-4,_m,padding-bottom,11px,11px,verified
|
|
118
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-5,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
119
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-5,_m,column-gap,6px,6px,verified
|
|
120
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-5,_m,padding-top,11px,11px,verified
|
|
121
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-5,_m,padding-bottom,11px,11px,verified
|
|
122
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-6,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
123
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-6,_m,column-gap,6px,6px,verified
|
|
124
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-6,_m,padding-top,11px,11px,verified
|
|
125
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-6,_m,padding-bottom,11px,11px,verified
|
|
126
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-7,_m,grid-template-columns,"1fr repeat(3, 46px)","1fr repeat(3, 46px)",verified
|
|
127
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-7,_m,column-gap,6px,6px,verified
|
|
128
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-7,_m,padding-top,11px,11px,verified
|
|
129
|
+
https://mosaic.moksaweb.com/moksa/,mk-mx-r-7,_m,padding-bottom,11px,11px,verified
|
|
90
130
|
https://mosaic.moksaweb.com/moksa/,process,_t,padding-left,28px,28px,verified
|
|
91
131
|
https://mosaic.moksaweb.com/moksa/,process,_t,padding-right,28px,28px,verified
|
|
92
132
|
https://mosaic.moksaweb.com/moksa/,process,_m,padding-left,18px,18px,verified
|
|
@@ -104,6 +144,22 @@ https://mosaic.moksaweb.com/moksa/,mk-proc-2,_m,padding-top,20px,20px,verified
|
|
|
104
144
|
https://mosaic.moksaweb.com/moksa/,mk-proc-2,_m,padding-right,0px,0px,verified
|
|
105
145
|
https://mosaic.moksaweb.com/moksa/,mk-proc-3,_m,padding-top,20px,20px,verified
|
|
106
146
|
https://mosaic.moksaweb.com/moksa/,mk-proc-3,_m,padding-right,0px,0px,verified
|
|
147
|
+
https://mosaic.moksaweb.com/moksa/,figure,_t,padding-left,28px,28px,verified
|
|
148
|
+
https://mosaic.moksaweb.com/moksa/,figure,_t,padding-right,28px,28px,verified
|
|
149
|
+
https://mosaic.moksaweb.com/moksa/,figure,_m,padding-left,18px,18px,verified
|
|
150
|
+
https://mosaic.moksaweb.com/moksa/,figure,_m,padding-right,18px,18px,verified
|
|
151
|
+
https://mosaic.moksaweb.com/moksa/,mk-fig2-pad,_m,padding-top,54px,54px,verified
|
|
152
|
+
https://mosaic.moksaweb.com/moksa/,mk-fig2-pad,_m,padding-bottom,54px,54px,verified
|
|
153
|
+
https://mosaic.moksaweb.com/moksa/,mk-fig2-grid,_t,grid-template-columns,1fr 34px 1fr 34px 1fr,1fr 34px 1fr 34px 1fr,verified
|
|
154
|
+
https://mosaic.moksaweb.com/moksa/,mk-fig2-grid,_m,grid-template-columns,"repeat(1, 1fr)","repeat(1, 1fr)",verified
|
|
155
|
+
https://mosaic.moksaweb.com/moksa/,mk-fig2-grid,_m,row-gap,8px,8px,verified
|
|
156
|
+
https://mosaic.moksaweb.com/moksa/,mk-fig2-grid,_m,margin-top,24px,24px,verified
|
|
157
|
+
https://mosaic.moksaweb.com/moksa/,mk-ar-a-0,_m,transform,rotate(90deg),rotate(90deg),verified
|
|
158
|
+
https://mosaic.moksaweb.com/moksa/,mk-ar-b-0,_m,transform,rotate(90deg),rotate(90deg),verified
|
|
159
|
+
https://mosaic.moksaweb.com/moksa/,mk-ar-a-1,_m,transform,rotate(90deg),rotate(90deg),verified
|
|
160
|
+
https://mosaic.moksaweb.com/moksa/,mk-ar-b-1,_m,transform,rotate(90deg),rotate(90deg),verified
|
|
161
|
+
https://mosaic.moksaweb.com/moksa/,mk-ar-a-2,_m,transform,rotate(90deg),rotate(90deg),verified
|
|
162
|
+
https://mosaic.moksaweb.com/moksa/,mk-ar-b-2,_m,transform,rotate(90deg),rotate(90deg),verified
|
|
107
163
|
https://mosaic.moksaweb.com/moksa/,works,_t,padding-left,28px,28px,verified
|
|
108
164
|
https://mosaic.moksaweb.com/moksa/,works,_t,padding-right,28px,28px,verified
|
|
109
165
|
https://mosaic.moksaweb.com/moksa/,works,_m,padding-left,18px,18px,verified
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mosaic-headless",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "AI-agent skill: build Mosaic Pro (Nextend) WordPress sites by writing the underlying data model directly - 23 custom tables, no visual editor, no DOM. Every node type, style property and node property swept against a live install and asserted on the delivered HTML and compiled CSS. Installs into Claude Code, Cursor, Codex CLI, Gemini CLI, Copilot, Continue, Windsurf and Claude.ai.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wordpress",
|
package/sites/_moksa.py
CHANGED
|
@@ -358,6 +358,12 @@ REVEALS = [
|
|
|
358
358
|
("mk-work-4", 3), ("mk-work-5", 3), ("mk-work-6", 4), ("mk-work-7", 4),
|
|
359
359
|
("mk-work-8", 5),
|
|
360
360
|
("mk-plate-num", 0), ("mk-plate-t", 1),
|
|
361
|
+
("mk-mx-head", 0), ("mk-mx-cols", 1),
|
|
362
|
+
("mk-mx-r-0", 1), ("mk-mx-r-1", 2), ("mk-mx-r-2", 2), ("mk-mx-r-3", 3),
|
|
363
|
+
("mk-mx-r-4", 3), ("mk-mx-r-5", 4), ("mk-mx-r-6", 4), ("mk-mx-r-7", 5),
|
|
364
|
+
("mk-fig2-head", 0), ("mk-fl-a-0", 1), ("mk-fl-b-0", 2), ("mk-fl-c-0", 3),
|
|
365
|
+
("mk-fl-a-1", 2), ("mk-fl-b-1", 3), ("mk-fl-c-1", 4),
|
|
366
|
+
("mk-fl-a-2", 3), ("mk-fl-b-2", 4), ("mk-fl-c-2", 5),
|
|
361
367
|
("mk-spec2-head", 0), ("mk-spec2-r-0", 1), ("mk-spec2-r-1", 2),
|
|
362
368
|
("mk-spec2-r-2", 3), ("mk-spec2-r-3", 4),
|
|
363
369
|
("mk-stack-head", 0), ("mk-stack-0", 1), ("mk-stack-1", 2), ("mk-stack-2", 3),
|
|
@@ -1337,6 +1343,149 @@ CONTACT = section("contact", [wrap("mk-contact-in", [
|
|
|
1337
1343
|
]),
|
|
1338
1344
|
])])
|
|
1339
1345
|
|
|
1346
|
+
# ── the capability matrix ─────────────────────────────────────────────────────
|
|
1347
|
+
# The page could tell you what the studio does; a specification SHOWS you, in a form
|
|
1348
|
+
# you can read across. Filled, half and hollow marks carry the whole answer without
|
|
1349
|
+
# a sentence, and the density is the point - this is the one block on the page that
|
|
1350
|
+
# rewards being read as a grid rather than as a line.
|
|
1351
|
+
MATRIX_COLS = ["網站", "電商", "自動化"]
|
|
1352
|
+
MATRIX = [
|
|
1353
|
+
("客製化設計", "BESPOKE DESIGN", "●", "●", "◐"),
|
|
1354
|
+
("RWD 三段點", "RESPONSIVE", "●", "●", "○"),
|
|
1355
|
+
("SEO 結構化資料", "STRUCTURED DATA", "●", "●", "○"),
|
|
1356
|
+
("金流/物流串接", "PAYMENT / LOGISTICS", "○", "●", "◐"),
|
|
1357
|
+
("會員與訂單系統", "ACCOUNTS / ORDERS", "○", "●", "◐"),
|
|
1358
|
+
("n8n 流程自動化", "WORKFLOW AUTOMATION", "◐", "◐", "●"),
|
|
1359
|
+
("AI 內容與判讀", "AI CONTENT / REASONING", "◐", "◐", "●"),
|
|
1360
|
+
("上線後維運", "MAINTENANCE", "●", "●", "●"),
|
|
1361
|
+
]
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
def mark(sym, i, j):
|
|
1365
|
+
"""One cell of the matrix. The symbol carries the meaning; the colour only
|
|
1366
|
+
reinforces it, so it still reads if the colour is gone."""
|
|
1367
|
+
colour = "--mk-ink" if sym == "●" else (
|
|
1368
|
+
"--mk-accent-ink" if sym == "◐" else "--mk-faint")
|
|
1369
|
+
return box("mk-mx-c-%d-%d" % (i, j),
|
|
1370
|
+
{"display": "flex", "justifyContent": "center"},
|
|
1371
|
+
[T("p", sym, color={"token": colour}, fontSize="13px",
|
|
1372
|
+
fontFamily=MONO, lineHeight="1")])
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
MATRIX_SEC = section("matrix", [wrap("mk-mx-in", [
|
|
1376
|
+
box("mk-mx-pad", {"paddingTop": "78px", "paddingBottom": "78px"},
|
|
1377
|
+
_m={"paddingTop": "52px", "paddingBottom": "52px"},
|
|
1378
|
+
children=[
|
|
1379
|
+
box("mk-mx-head",
|
|
1380
|
+
{"display": "flex", "justifyContent": "space-between",
|
|
1381
|
+
"columnGap": "20px", "rowGap": "8px", "alignItems": "baseline",
|
|
1382
|
+
"customStyles": "flex-wrap:wrap;"},
|
|
1383
|
+
[mono("TABLE 01 — CAPABILITY", size="10px",
|
|
1384
|
+
color="--mk-accent-ink", track="0.22em"),
|
|
1385
|
+
mono("● 標準 ◐ 選配 ○ 不含", size="10px",
|
|
1386
|
+
color="--mk-faint", track="0.12em")]),
|
|
1387
|
+
# the column header, then one row per capability
|
|
1388
|
+
box("mk-mx-cols",
|
|
1389
|
+
{"display": "grid", "gridCols": "1fr repeat(3, 78px)",
|
|
1390
|
+
"columnGap": "10px", "alignItems": "end", "marginTop": "26px",
|
|
1391
|
+
"paddingBottom": "10px",
|
|
1392
|
+
"customStyles": "border-bottom:1px solid " + RULE_INK + ";"},
|
|
1393
|
+
_m={"gridCols": "1fr repeat(3, 46px)", "columnGap": "6px"},
|
|
1394
|
+
children=[mono("CAPABILITY", size="10px", color="--mk-faint",
|
|
1395
|
+
track="0.18em")]
|
|
1396
|
+
+ [box("mk-mx-h-%d" % j,
|
|
1397
|
+
{"display": "flex", "justifyContent": "center"},
|
|
1398
|
+
[mono(c, size="11px", color="--mk-ink", track="0.06em")])
|
|
1399
|
+
for j, c in enumerate(MATRIX_COLS)]),
|
|
1400
|
+
box("mk-mx-rows", {}, [
|
|
1401
|
+
box("mk-mx-r-%d" % i,
|
|
1402
|
+
{"display": "grid", "gridCols": "1fr repeat(3, 78px)",
|
|
1403
|
+
"columnGap": "10px", "alignItems": "center",
|
|
1404
|
+
"paddingTop": "13px", "paddingBottom": "13px",
|
|
1405
|
+
"customStyles": "border-bottom:1px solid " + RULE + ";"},
|
|
1406
|
+
_m={"gridCols": "1fr repeat(3, 46px)", "columnGap": "6px",
|
|
1407
|
+
"paddingTop": "11px", "paddingBottom": "11px"},
|
|
1408
|
+
children=[
|
|
1409
|
+
box("mk-mx-n-%d" % i,
|
|
1410
|
+
{"display": "flex", "columnGap": "12px",
|
|
1411
|
+
"alignItems": "baseline", "rowGap": "2px",
|
|
1412
|
+
"customStyles": "flex-wrap:wrap;"},
|
|
1413
|
+
[T("p", zh, color={"token": "--mk-ink"},
|
|
1414
|
+
fontSize="14px", _m={"fontSize": "12.5px"}),
|
|
1415
|
+
mono(en, size="9px", color="--mk-faint",
|
|
1416
|
+
track="0.16em", _m={"display": "none"})]),
|
|
1417
|
+
] + [mark(sym, i, j) for j, sym in enumerate(marks)])
|
|
1418
|
+
for i, (zh, en, *marks) in enumerate(MATRIX)
|
|
1419
|
+
]),
|
|
1420
|
+
]),
|
|
1421
|
+
])], bg="--mk-panel")
|
|
1422
|
+
|
|
1423
|
+
|
|
1424
|
+
# ── FIGURE 01: what a workflow actually looks like ────────────────────────────
|
|
1425
|
+
# The page had no graphic on it at all - every section was type and rules, which is
|
|
1426
|
+
# austere for eleven screens. A diagram is the one element that says something no
|
|
1427
|
+
# sentence here can, and drawn in hairline boxes it belongs to the same document
|
|
1428
|
+
# rather than arriving from a different one.
|
|
1429
|
+
FLOW = [
|
|
1430
|
+
("網站表單", "FORM", "n8n 節點", "WORKFLOW", "ERP 建單", "ERP"),
|
|
1431
|
+
("電商訂單", "ORDER", "Claude 判讀", "REASONING", "通知/報表", "NOTIFY"),
|
|
1432
|
+
("客服訊息", "INBOX", "分類與派工", "TRIAGE", "CRM 紀錄", "CRM"),
|
|
1433
|
+
]
|
|
1434
|
+
|
|
1435
|
+
|
|
1436
|
+
def flow_cell(attr, zh, en):
|
|
1437
|
+
return box(attr,
|
|
1438
|
+
{"paddingTop": "14px", "paddingBottom": "14px",
|
|
1439
|
+
"paddingLeft": "16px", "paddingRight": "16px",
|
|
1440
|
+
"customStyles": "border:1px solid " + RULE + ";"},
|
|
1441
|
+
[mono(en, size="9px", color="--mk-faint", track="0.18em"),
|
|
1442
|
+
T("p", zh, color={"token": "--mk-ink"}, fontSize="14px",
|
|
1443
|
+
marginTop="6px", _m={"fontSize": "13px"})])
|
|
1444
|
+
|
|
1445
|
+
|
|
1446
|
+
def arrow(attr):
|
|
1447
|
+
return box(attr, {"display": "flex", "justifyContent": "center",
|
|
1448
|
+
"alignItems": "center"},
|
|
1449
|
+
[T("p", "→", color={"token": "--mk-accent-ink"}, fontSize="15px",
|
|
1450
|
+
fontFamily=MONO)],
|
|
1451
|
+
_m={"customStyles": "transform:rotate(90deg);"})
|
|
1452
|
+
|
|
1453
|
+
|
|
1454
|
+
FIGURE_SEC = section("figure", [wrap("mk-fig2-in", [
|
|
1455
|
+
box("mk-fig2-pad", {"paddingTop": "82px", "paddingBottom": "82px"},
|
|
1456
|
+
_m={"paddingTop": "54px", "paddingBottom": "54px"},
|
|
1457
|
+
children=[
|
|
1458
|
+
box("mk-fig2-head",
|
|
1459
|
+
{"display": "flex", "justifyContent": "space-between",
|
|
1460
|
+
"columnGap": "20px", "rowGap": "8px",
|
|
1461
|
+
"customStyles": "flex-wrap:wrap;"},
|
|
1462
|
+
[mono("FIGURE 01 — A WORKFLOW", size="10px",
|
|
1463
|
+
color="--mk-accent-ink", track="0.22em"),
|
|
1464
|
+
mono("INPUT → PROCESS → OUTPUT", size="10px",
|
|
1465
|
+
color="--mk-faint", track="0.18em")]),
|
|
1466
|
+
box("mk-fig2-grid",
|
|
1467
|
+
{"display": "grid", "gridCols": "1fr 44px 1fr 44px 1fr",
|
|
1468
|
+
"columnGap": "0px", "rowGap": "16px", "marginTop": "34px"},
|
|
1469
|
+
_t={"gridCols": "1fr 34px 1fr 34px 1fr"},
|
|
1470
|
+
_m={"gridCols": "repeat(1, 1fr)", "rowGap": "8px",
|
|
1471
|
+
"marginTop": "24px"},
|
|
1472
|
+
children=[
|
|
1473
|
+
node for i, row in enumerate(FLOW) for node in (
|
|
1474
|
+
flow_cell("mk-fl-a-%d" % i, row[0], row[1]),
|
|
1475
|
+
arrow("mk-ar-a-%d" % i),
|
|
1476
|
+
flow_cell("mk-fl-b-%d" % i, row[2], row[3]),
|
|
1477
|
+
arrow("mk-ar-b-%d" % i),
|
|
1478
|
+
flow_cell("mk-fl-c-%d" % i, row[4], row[5]),
|
|
1479
|
+
)
|
|
1480
|
+
]),
|
|
1481
|
+
T("p", "同一條線可以接任何一端:表單、訂單、訊息進來,"
|
|
1482
|
+
"判斷與轉換在中間,結果送到你本來就在用的系統裡。",
|
|
1483
|
+
color={"token": "--mk-muted"}, fontSize="13px", lineHeight="1.95",
|
|
1484
|
+
marginTop="26px", maxWidth="42em", _m={"fontSize": "12.5px"}),
|
|
1485
|
+
]),
|
|
1486
|
+
])])
|
|
1487
|
+
|
|
1488
|
+
|
|
1340
1489
|
# ── PLATE 01: a statement ─────────────────────────────────────────────────────
|
|
1341
1490
|
# Every clause on this page has the same rhythm - a numbered head, then hairline
|
|
1342
1491
|
# rows. That is correct for a specification and monotonous for a page. A document
|
|
@@ -1511,8 +1660,9 @@ HOME_TREE = {"type": "div", "data": {"attrID": "mk-home"},
|
|
|
1511
1660
|
MARKS, INDEX, CUE,
|
|
1512
1661
|
# paper, panel, paper, ink, paper, ink, paper - the page
|
|
1513
1662
|
# changes ground five times so it reads as chapters
|
|
1514
|
-
MASTHEAD, TICKER_BAND, PLATE, SERVICE_SEC,
|
|
1515
|
-
|
|
1663
|
+
MASTHEAD, TICKER_BAND, PLATE, SERVICE_SEC, MATRIX_SEC,
|
|
1664
|
+
PROCESS_SEC, FIGURE_SEC, WORK_SEC, SPECIMEN, STACK_SEC,
|
|
1665
|
+
PRODUCT_SEC, VOICE_SEC, CONTACT,
|
|
1516
1666
|
])]}
|
|
1517
1667
|
|
|
1518
1668
|
SITE = {
|