@echelon-foundry/design-system 0.2.0 → 0.3.0-main.216.1
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/LICENSE +21 -0
- package/README.md +46 -0
- package/dist/all.css +5537 -841
- package/dist/assessment.css +55 -12
- package/dist/build-metrics.json +181 -5
- package/dist/components.css +2965 -36
- package/dist/foundations.css +90 -0
- package/dist/marketing/forma-all.css +8162 -0
- package/dist/marketing/forma-echelon-marketing.css +2109 -0
- package/dist/marketing/forma-marketing-theme-echelon.css +163 -0
- package/dist/marketing/forma-marketing.css +1947 -0
- package/dist/marketing/forma-marketing.manifest.json +52 -0
- package/dist/marketing/forma-marketing.sha256 +4 -0
- package/dist/marketing.css +1198 -0
- package/dist/patterns/active-filter-summary.html +10 -0
- package/dist/patterns/attention-path.html +29 -0
- package/dist/patterns/badge.html +9 -0
- package/dist/patterns/callout.html +23 -0
- package/dist/patterns/card-grid.html +25 -0
- package/dist/patterns/character-grid-3270.html +39 -0
- package/dist/patterns/character-grid-field.html +21 -0
- package/dist/patterns/character-grid-keys.html +20 -0
- package/dist/patterns/character-grid-reveal.html +16 -0
- package/dist/patterns/character-grid-selection.html +30 -0
- package/dist/patterns/character-grid-status.html +11 -0
- package/dist/patterns/character-grid-workflow.html +147 -0
- package/dist/patterns/character-grid.html +16 -0
- package/dist/patterns/cluster.html +5 -0
- package/dist/patterns/code-sample.html +9 -0
- package/dist/patterns/command-group.html +6 -0
- package/dist/patterns/comparison-grid.html +7 -0
- package/dist/patterns/comparison-pairs.html +13 -0
- package/dist/patterns/cta.html +12 -0
- package/dist/patterns/dense-ledger.html +7 -0
- package/dist/patterns/diagnostic-status.html +7 -0
- package/dist/patterns/diagram.html +49 -0
- package/dist/patterns/documentation-layout.html +18 -0
- package/dist/patterns/emphasis-budget.html +21 -0
- package/dist/patterns/entry-index.html +16 -0
- package/dist/patterns/evidence-relationship.html +1 -0
- package/dist/patterns/facts.html +7 -0
- package/dist/patterns/fault-banner.html +19 -0
- package/dist/patterns/fault-blocking.html +25 -0
- package/dist/patterns/fault-details.html +11 -0
- package/dist/patterns/fault-inline.html +17 -0
- package/dist/patterns/fault-notification.html +20 -0
- package/dist/patterns/fault-reference.html +5 -0
- package/dist/patterns/fault-summary.html +20 -0
- package/dist/patterns/fault.html +17 -0
- package/dist/patterns/feed-item.html +12 -0
- package/dist/patterns/focus-stage.html +4 -0
- package/dist/patterns/frame.html +4 -0
- package/dist/patterns/freshness.html +1 -0
- package/dist/patterns/handoff-summary.html +1 -0
- package/dist/patterns/hero.html +17 -0
- package/dist/patterns/hierarchy-tree.html +11 -0
- package/dist/patterns/identifier.html +9 -0
- package/dist/patterns/landmark-region.html +4 -0
- package/dist/patterns/lane-board.html +10 -0
- package/dist/patterns/marketing-shell.html +40 -0
- package/dist/patterns/measure.html +4 -0
- package/dist/patterns/metric-value-change.html +9 -0
- package/dist/patterns/mosaic.html +6 -0
- package/dist/patterns/navigation-shell.html +8 -0
- package/dist/patterns/overflow-command-disclosure.html +6 -0
- package/dist/patterns/overview-disclosure.html +12 -0
- package/dist/patterns/path-summary.html +8 -0
- package/dist/patterns/priority-stack.html +4 -0
- package/dist/patterns/progress-bar.html +15 -0
- package/dist/patterns/prose.html +9 -0
- package/dist/patterns/rail.html +4 -0
- package/dist/patterns/recovery-actions.html +5 -0
- package/dist/patterns/relationship-index.html +8 -0
- package/dist/patterns/reorder-states.html +31 -0
- package/dist/patterns/resizable-split-pane.html +11 -0
- package/dist/patterns/responsive-grid.html +5 -0
- package/dist/patterns/scope-trail.html +1 -0
- package/dist/patterns/scroll-progress.html +6 -0
- package/dist/patterns/section-heading.html +12 -0
- package/dist/patterns/security-blockers.html +3 -0
- package/dist/patterns/security-evidence-age.html +1 -0
- package/dist/patterns/security-evidence-chain.html +2 -0
- package/dist/patterns/security-exception.html +2 -0
- package/dist/patterns/security-invariant-result.html +1 -0
- package/dist/patterns/security-posture.html +22 -0
- package/dist/patterns/security-state-matrix.html +5 -0
- package/dist/patterns/security-trend.html +1 -0
- package/dist/patterns/security-unknown.html +2 -0
- package/dist/patterns/sidebar.html +4 -0
- package/dist/patterns/site-footer.html +12 -0
- package/dist/patterns/site-header.html +18 -0
- package/dist/patterns/spatial-canvas.html +13 -0
- package/dist/patterns/spinner.html +4 -0
- package/dist/patterns/split-pane.html +4 -0
- package/dist/patterns/stack.html +5 -0
- package/dist/patterns/state-survivability.html +19 -0
- package/dist/patterns/steps.html +8 -0
- package/dist/patterns/switcher.html +4 -0
- package/dist/patterns/tooltip.html +48 -0
- package/dist/patterns/verification-frame.html +22 -0
- package/dist/patterns/workspace-shell.html +6 -0
- package/dist/tokens.css +436 -1
- package/docs/BRANDING.md +6 -1
- package/docs/MARKETING-SITES.md +321 -0
- package/figma/component-contracts.json +1544 -0
- package/package.json +34 -8
- package/patterns/active-filter-summary.html +10 -0
- package/patterns/aegis-faults.manifest.md +81 -0
- package/patterns/attention-path.html +29 -0
- package/patterns/badge.html +9 -0
- package/patterns/callout.html +23 -0
- package/patterns/card-grid.html +25 -0
- package/patterns/character-grid-3270.html +39 -0
- package/patterns/character-grid-field.html +21 -0
- package/patterns/character-grid-keys.html +20 -0
- package/patterns/character-grid-reveal.html +16 -0
- package/patterns/character-grid-selection.html +30 -0
- package/patterns/character-grid-status.html +11 -0
- package/patterns/character-grid-workflow.html +147 -0
- package/patterns/character-grid.html +16 -0
- package/patterns/cluster.html +5 -0
- package/patterns/code-sample.html +9 -0
- package/patterns/command-group.html +6 -0
- package/patterns/comparison-grid.html +7 -0
- package/patterns/comparison-pairs.html +13 -0
- package/patterns/cta.html +12 -0
- package/patterns/dense-ledger.html +7 -0
- package/patterns/diagnostic-status.html +7 -0
- package/patterns/diagram.html +49 -0
- package/patterns/documentation-layout.html +18 -0
- package/patterns/emphasis-budget.html +21 -0
- package/patterns/entry-index.html +16 -0
- package/patterns/evidence-relationship.html +1 -0
- package/patterns/facts.html +7 -0
- package/patterns/fault-banner.html +19 -0
- package/patterns/fault-blocking.html +25 -0
- package/patterns/fault-details.html +11 -0
- package/patterns/fault-inline.html +17 -0
- package/patterns/fault-notification.html +20 -0
- package/patterns/fault-reference.html +5 -0
- package/patterns/fault-summary.html +20 -0
- package/patterns/fault.html +17 -0
- package/patterns/feed-item.html +12 -0
- package/patterns/focus-stage.html +4 -0
- package/patterns/frame.html +4 -0
- package/patterns/freshness.html +1 -0
- package/patterns/handoff-summary.html +1 -0
- package/patterns/hero.html +17 -0
- package/patterns/hierarchy-tree.html +11 -0
- package/patterns/identifier.html +9 -0
- package/patterns/landmark-region.html +4 -0
- package/patterns/lane-board.html +10 -0
- package/patterns/manifest.md +2 -0
- package/patterns/marketing-shell.html +40 -0
- package/patterns/measure.html +4 -0
- package/patterns/metric-value-change.html +9 -0
- package/patterns/mosaic.html +6 -0
- package/patterns/navigation-shell.html +8 -0
- package/patterns/overflow-command-disclosure.html +6 -0
- package/patterns/overview-disclosure.html +12 -0
- package/patterns/path-summary.html +8 -0
- package/patterns/priority-stack.html +4 -0
- package/patterns/progress-bar.html +15 -0
- package/patterns/prose.html +9 -0
- package/patterns/rail.html +4 -0
- package/patterns/recovery-actions.html +5 -0
- package/patterns/relationship-index.html +8 -0
- package/patterns/reorder-states.html +31 -0
- package/patterns/resizable-split-pane.html +11 -0
- package/patterns/responsive-grid.html +5 -0
- package/patterns/scope-trail.html +1 -0
- package/patterns/scroll-progress.html +6 -0
- package/patterns/section-heading.html +12 -0
- package/patterns/security-blockers.html +3 -0
- package/patterns/security-evidence-age.html +1 -0
- package/patterns/security-evidence-chain.html +2 -0
- package/patterns/security-exception.html +2 -0
- package/patterns/security-invariant-result.html +1 -0
- package/patterns/security-posture.html +22 -0
- package/patterns/security-posture.manifest.md +20 -0
- package/patterns/security-state-matrix.html +5 -0
- package/patterns/security-trend.html +1 -0
- package/patterns/security-unknown.html +2 -0
- package/patterns/sidebar.html +4 -0
- package/patterns/site-footer.html +12 -0
- package/patterns/site-header.html +18 -0
- package/patterns/spatial-canvas.html +13 -0
- package/patterns/spinner.html +4 -0
- package/patterns/split-pane.html +4 -0
- package/patterns/stack.html +5 -0
- package/patterns/state-survivability.html +19 -0
- package/patterns/steps.html +8 -0
- package/patterns/switcher.html +4 -0
- package/patterns/tooltip.html +48 -0
- package/patterns/verification-frame.html +22 -0
- package/patterns/workspace-shell.html +6 -0
- package/schemas/brand-manifest.schema.json +17 -3
- package/tokens/echelon.tokens.json +2801 -0
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@echelon-foundry/design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-main.216.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Zero-runtime HTML and CSS design system for Echelon Foundry applications.",
|
|
7
7
|
"sideEffects": [
|
|
8
8
|
"./dist/*.css",
|
|
9
|
-
"./dist/brands/*.css"
|
|
9
|
+
"./dist/brands/*.css",
|
|
10
|
+
"./dist/marketing.css",
|
|
11
|
+
"./dist/marketing/*.css"
|
|
10
12
|
],
|
|
11
13
|
"exports": {
|
|
12
14
|
"./tokens.css": "./dist/tokens.css",
|
|
@@ -17,32 +19,50 @@
|
|
|
17
19
|
"./assessment.css": "./dist/assessment.css",
|
|
18
20
|
"./skins.css": "./dist/skins.css",
|
|
19
21
|
"./brands/*": "./dist/brands/*",
|
|
20
|
-
"./brand-manifest.schema.json": "./schemas/brand-manifest.schema.json"
|
|
22
|
+
"./brand-manifest.schema.json": "./schemas/brand-manifest.schema.json",
|
|
23
|
+
"./marketing.css": "./dist/marketing.css",
|
|
24
|
+
"./marketing/*": "./dist/marketing/*",
|
|
25
|
+
"./tokens.json": "./tokens/echelon.tokens.json",
|
|
26
|
+
"./figma/components.json": "./figma/component-contracts.json"
|
|
21
27
|
},
|
|
22
28
|
"files": [
|
|
23
29
|
"dist",
|
|
24
30
|
"patterns",
|
|
25
31
|
"schemas/brand-manifest.schema.json",
|
|
26
|
-
"docs/BRANDING.md"
|
|
32
|
+
"docs/BRANDING.md",
|
|
33
|
+
"docs/MARKETING-SITES.md",
|
|
34
|
+
"tokens/echelon.tokens.json",
|
|
35
|
+
"figma/component-contracts.json"
|
|
27
36
|
],
|
|
28
37
|
"scripts": {
|
|
29
38
|
"clean": "node tools/clean.mjs",
|
|
30
39
|
"tokens:build": "dotnet run --project tools/TokenCompiler/TokenCompiler.fsproj -- tokens/echelon.tokens.json dist/tokens.css",
|
|
31
40
|
"assets:build": "node tools/build-assets.mjs",
|
|
32
|
-
"build": "npm run clean && npm run tokens:build && npm run brands:build && npm run assets:build",
|
|
41
|
+
"build": "npm run clean && npm run tokens:build && npm run brands:build && npm run marketing:theme && npm run assets:build && npm run marketing:build && npm run example:install",
|
|
33
42
|
"test:tokens": "node --test tests/token-compiler.test.mjs",
|
|
34
43
|
"test:browser": "playwright test",
|
|
35
44
|
"test:a11y": "playwright test tests/browser/accessibility.spec.mjs",
|
|
36
45
|
"test:runtime": "node --test tests/zero-runtime.test.mjs",
|
|
37
|
-
"
|
|
46
|
+
"motion:audit": "node tools/motion-audit.mjs",
|
|
47
|
+
"test:motion": "node --test tests/motion-audit.test.mjs tests/motion-gate.test.mjs && node tools/motion-audit.mjs --strict",
|
|
48
|
+
"check": "npm run build && npm run test:tokens && npm run test:brands && npm run test:runtime && npm run test:motion && npm run test:marketing && npm run test:character-grid && npm run test:figma && npm run test:css && npm run test:package && npm run test:browser",
|
|
38
49
|
"site:build": "npm run build && node tools/build-site.mjs",
|
|
39
50
|
"site:test": "node --test tests/site-build.test.mjs",
|
|
40
51
|
"site:check": "npm run site:build && npm run site:test && npm run site:mobile",
|
|
41
52
|
"site:mobile": "playwright test --config=playwright.site.config.mjs",
|
|
42
53
|
"pack:verify": "npm run build && npm pack --dry-run",
|
|
43
54
|
"test:package": "node --test tests/package-contract.test.mjs",
|
|
55
|
+
"test:css": "node --test tests/css-source.test.mjs",
|
|
44
56
|
"brands:build": "dotnet run --project tools/BrandCompiler/BrandCompiler.fsproj -- brands dist/brands",
|
|
45
|
-
"test:brands": "node --test tests/brand-compiler.test.mjs"
|
|
57
|
+
"test:brands": "node --test tests/brand-compiler.test.mjs",
|
|
58
|
+
"test:character-grid": "node --test tests/character-grid.test.mjs",
|
|
59
|
+
"marketing:theme": "dotnet run --project tools/TokenCompiler/TokenCompiler.fsproj -- themes/echelon/marketing.tokens.json build/marketing/echelon-marketing.tokens.css --reference tokens/echelon.tokens.json",
|
|
60
|
+
"marketing:build": "dotnet run --project tools/PresentationBundler/PresentationBundler.fsproj -- bundles/echelon-marketing.bundle.json package.json",
|
|
61
|
+
"test:marketing": "node --test tests/marketing-tokens.test.mjs tests/marketing-distribution.test.mjs tests/marketing-structure.test.mjs tests/site-css-policy.test.mjs",
|
|
62
|
+
"example:install": "mkdir -p build/example && cp examples/echelon-marketing-site/forma.lock build/example/forma.lock && bash actions/install-presentation/install.sh --lock build/example/forma.lock --source dist/marketing --update --output examples/echelon-marketing-site/assets/forma",
|
|
63
|
+
"policy:check": "dotnet run --project tools/SiteCssPolicy/SiteCssPolicy.fsproj --",
|
|
64
|
+
"release:check": "npm run build && npm run test:tokens && npm run test:brands && npm run test:runtime && npm run test:motion && npm run test:marketing && npm run test:character-grid && npm run test:css && npm run test:package && playwright test tests/browser/marketing.spec.mjs && npm run site:check",
|
|
65
|
+
"test:figma": "node --test tests/figma-contract.test.mjs"
|
|
46
66
|
},
|
|
47
67
|
"devDependencies": {
|
|
48
68
|
"@axe-core/playwright": "4.13.0",
|
|
@@ -56,5 +76,11 @@
|
|
|
56
76
|
"type": "git",
|
|
57
77
|
"url": "git+https://github.com/kemiller2002/forma.git"
|
|
58
78
|
},
|
|
59
|
-
"homepage": "https://forma.echelonfoundry.com/"
|
|
79
|
+
"homepage": "https://forma.echelonfoundry.com/",
|
|
80
|
+
"keywords": [
|
|
81
|
+
"design-system",
|
|
82
|
+
"zero-runtime",
|
|
83
|
+
"marketing-presentation",
|
|
84
|
+
"accessibility"
|
|
85
|
+
]
|
|
60
86
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<section class="ef-active-filter-summary" aria-labelledby="active-filters-title">
|
|
2
|
+
<div class="ef-active-filter-summary__heading">
|
|
3
|
+
<h2 id="active-filters-title">Active filters</h2>
|
|
4
|
+
<button type="button">Clear all</button>
|
|
5
|
+
</div>
|
|
6
|
+
<ul class="ef-active-filter-summary__items">
|
|
7
|
+
<li><span>Status: Open</span><button type="button" aria-label="Remove Status: Open filter">Remove</button></li>
|
|
8
|
+
<li><span>Owner: Me</span><button type="button" aria-label="Remove Owner: Me filter">Remove</button></li>
|
|
9
|
+
</ul>
|
|
10
|
+
</section>
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Feature Manifest — Aegis fault presentation
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Provide the canonical Forma presentation vocabulary for user-facing Aegis faults without making Forma understand, store, classify, recover, or authorize a raw Aegis `Fault`.
|
|
6
|
+
|
|
7
|
+
## Upstream contract
|
|
8
|
+
|
|
9
|
+
The default integration input is the safe Aegis `Presentation.T` model:
|
|
10
|
+
|
|
11
|
+
- `Title`
|
|
12
|
+
- `Message`
|
|
13
|
+
- `Severity`
|
|
14
|
+
- `Intent`
|
|
15
|
+
- `Actions`
|
|
16
|
+
- `Reference`
|
|
17
|
+
|
|
18
|
+
The full Aegis `Fault` record is not a Forma input contract.
|
|
19
|
+
|
|
20
|
+
## Intent mapping
|
|
21
|
+
|
|
22
|
+
- `Silent`: render no visible fault surface.
|
|
23
|
+
- `Inline`: `.ef-fault--inline` / `<ef-fault-inline>`.
|
|
24
|
+
- `Notification`: `.ef-fault-notification` / `<ef-fault-notification>`.
|
|
25
|
+
- `Banner`: `.ef-fault-banner` / `<ef-fault-banner>`.
|
|
26
|
+
- `Blocking`: `.ef-fault-blocking` / `<ef-fault-blocking>`.
|
|
27
|
+
|
|
28
|
+
`<ef-fault>` is the common visual shell. The intent-specific patterns are preferred when the Aegis intent is already known.
|
|
29
|
+
|
|
30
|
+
## Ownership
|
|
31
|
+
|
|
32
|
+
- Aegis owns fault classification, presentation intent, severity, recovery policy, safe user message, reference, lifecycle, throttling, and recovery capability derivation.
|
|
33
|
+
- Ordo/application state owns whether a recovery transition is currently legal.
|
|
34
|
+
- Limen/application behavior maps Aegis data into DOM, handles clicks, focus, notification lifecycle, blocking-dialog policy, copy behavior, and revalidates capabilities before executing them.
|
|
35
|
+
- Forma owns semantic markup, CSS, non-color cues, responsive composition, focus styling, reduced-motion behavior, and forced-colors behavior.
|
|
36
|
+
|
|
37
|
+
## Security boundary
|
|
38
|
+
|
|
39
|
+
Do not pass the raw Aegis `Fault`, `TechnicalDetails`, `ExceptionDetail`, stack trace, raw context values, breadcrumbs, snapshot locations, secrets, or unredacted diagnostics into these patterns.
|
|
40
|
+
|
|
41
|
+
`fault-details` is not an escape hatch. It accepts only data that the application has explicitly approved and sanitized for the current audience.
|
|
42
|
+
|
|
43
|
+
## Recovery action contract
|
|
44
|
+
|
|
45
|
+
Buttons use `data-ef-aegis-capability` with the exact Aegis capability name. The attribute is descriptive, not authoritative. The consuming application must re-check current capability/state at activation time.
|
|
46
|
+
|
|
47
|
+
Canonical labels mirror Aegis:
|
|
48
|
+
|
|
49
|
+
- `CanRetry` → Try again
|
|
50
|
+
- `CanReauthenticate` → Sign in
|
|
51
|
+
- `CanReload` → Reload
|
|
52
|
+
- `CanQuarantine` → Set aside
|
|
53
|
+
- `CanReprocess` → Process again
|
|
54
|
+
- `CanOpenReadOnly` → Open read-only
|
|
55
|
+
- `CanRestoreSink` → Reconnect diagnostics
|
|
56
|
+
|
|
57
|
+
Never synthesize `Continue anyway` or another action that Aegis/application state did not supply.
|
|
58
|
+
|
|
59
|
+
## Notification policy
|
|
60
|
+
|
|
61
|
+
Forma does not run timers. Fault notifications with recovery actions are persistent until the application dismisses/resolves them. An application that chooses timed dismissal for non-actionable information must preserve an accessible durable history or equivalent recovery path and pause/extend timing when required by accessibility policy.
|
|
62
|
+
|
|
63
|
+
## Summary and repeat policy
|
|
64
|
+
|
|
65
|
+
Forma does not fingerprint or deduplicate faults. Aegis/application code performs lifecycle/fingerprint logic and supplies already-grouped entries plus occurrence counts. The summary pattern only presents that result.
|
|
66
|
+
|
|
67
|
+
## Blocking policy
|
|
68
|
+
|
|
69
|
+
The blocking pattern uses native `dialog` as the semantic surface. Limen/application code is responsible for opening it modally, handling browser close/cancel requests according to current Aegis/Ordo state, keeping legal recovery actions reachable, and restoring focus after resolution.
|
|
70
|
+
|
|
71
|
+
## Verification
|
|
72
|
+
|
|
73
|
+
The feature is covered by:
|
|
74
|
+
|
|
75
|
+
- zero-runtime package checks;
|
|
76
|
+
- generated-site coverage and 320px mobile examples;
|
|
77
|
+
- Axe WCAG A/AA checks;
|
|
78
|
+
- accessible-name/role tests;
|
|
79
|
+
- recovery capability attribute tests;
|
|
80
|
+
- mobile overflow tests;
|
|
81
|
+
- pull-request CI across the repository validation workflows.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<main class="ef-attention-path" aria-labelledby="attention-title">
|
|
2
|
+
<header>
|
|
3
|
+
<p class="ef-component-kicker">Release verification</p>
|
|
4
|
+
<h2 id="attention-title">Human review required</h2>
|
|
5
|
+
</header>
|
|
6
|
+
<section class="ef-attention-path__primary" data-attention-step="1" aria-labelledby="attention-primary">
|
|
7
|
+
<span class="ef-status-lozenge" data-state="unknown">Unknown consumer outcome</span>
|
|
8
|
+
<h3 id="attention-primary">Reconcile the consumer smoke test before publishing</h3>
|
|
9
|
+
<p>The package build passed, but the consuming application has not reported a current verification result.</p>
|
|
10
|
+
<div class="ef-cluster">
|
|
11
|
+
<button type="button">Reconcile consumer</button>
|
|
12
|
+
<button type="button">Inspect evidence</button>
|
|
13
|
+
</div>
|
|
14
|
+
</section>
|
|
15
|
+
<div class="ef-attention-path__support">
|
|
16
|
+
<section data-attention-step="2" aria-labelledby="attention-evidence">
|
|
17
|
+
<h3 id="attention-evidence">Evidence</h3>
|
|
18
|
+
<p>CI run 1042 passed 148 checks. Package contents were generated successfully.</p>
|
|
19
|
+
</section>
|
|
20
|
+
<section data-attention-step="3" aria-labelledby="attention-context">
|
|
21
|
+
<h3 id="attention-context">Context</h3>
|
|
22
|
+
<p>Release 1.4.0 changes comparison and verification presentation contracts.</p>
|
|
23
|
+
</section>
|
|
24
|
+
<section data-attention-step="4" aria-labelledby="attention-history">
|
|
25
|
+
<h3 id="attention-history">Recent history</h3>
|
|
26
|
+
<p>Two previous releases completed without reconciliation work.</p>
|
|
27
|
+
</section>
|
|
28
|
+
</div>
|
|
29
|
+
</main>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<div class="ef-site">
|
|
2
|
+
<ul class="ef-badge-list" aria-label="Product facts">
|
|
3
|
+
<li><span class="ef-badge">F#</span></li>
|
|
4
|
+
<li><span class="ef-badge">Zero runtime</span></li>
|
|
5
|
+
<li><span class="ef-badge" data-ef-status="success">Stable</span></li>
|
|
6
|
+
<li><span class="ef-badge" data-ef-status="warning">Preview</span></li>
|
|
7
|
+
<li><a class="ef-badge" href="#changelog">Changelog</a></li>
|
|
8
|
+
</ul>
|
|
9
|
+
</div>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<div class="ef-site">
|
|
2
|
+
<article class="ef-prose">
|
|
3
|
+
<h2>Callouts mark supporting material, not ordinary emphasis</h2>
|
|
4
|
+
<p>Most prose needs no callout. Use one only when a reader must notice a note, a caution, cited evidence, or a recorded decision.</p>
|
|
5
|
+
<aside class="ef-callout" data-ef-callout="note" aria-labelledby="callout-note">
|
|
6
|
+
<p class="ef-callout__label" id="callout-note">Note</p>
|
|
7
|
+
<p>Supporting context that a reader can skip without losing the argument.</p>
|
|
8
|
+
</aside>
|
|
9
|
+
<aside class="ef-callout" data-ef-callout="caution" aria-labelledby="callout-caution">
|
|
10
|
+
<p class="ef-callout__label" id="callout-caution">Caution</p>
|
|
11
|
+
<p>A consequence the reader must weigh before acting on the surrounding text.</p>
|
|
12
|
+
</aside>
|
|
13
|
+
<figure class="ef-callout" data-ef-callout="evidence" aria-labelledby="callout-evidence">
|
|
14
|
+
<p class="ef-callout__label" id="callout-evidence">Evidence</p>
|
|
15
|
+
<blockquote><p>Quoted or cited source material stays a quotation in the document outline.</p></blockquote>
|
|
16
|
+
<figcaption>Source: the measurement it came from</figcaption>
|
|
17
|
+
</figure>
|
|
18
|
+
<aside class="ef-callout" data-ef-callout="decision" aria-labelledby="callout-decision">
|
|
19
|
+
<p class="ef-callout__label" id="callout-decision">Decision</p>
|
|
20
|
+
<p>The outcome that was settled, stated once so later sections can refer to it.</p>
|
|
21
|
+
</aside>
|
|
22
|
+
</article>
|
|
23
|
+
</div>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<div class="ef-site">
|
|
2
|
+
<ul class="ef-card-grid" data-ef-columns="3" aria-label="Capabilities">
|
|
3
|
+
<li>
|
|
4
|
+
<article class="ef-card">
|
|
5
|
+
<p class="ef-eyebrow">Diagnose</p>
|
|
6
|
+
<h3 class="ef-card__title"><a class="ef-card__link" href="#diagnose">Prove what is wrong before changing it</a></h3>
|
|
7
|
+
<p>Observations stay separate from explanations until evidence removes the alternatives.</p>
|
|
8
|
+
<p class="ef-card__footer">Outcome: a defensible root cause</p>
|
|
9
|
+
</article>
|
|
10
|
+
</li>
|
|
11
|
+
<li>
|
|
12
|
+
<article class="ef-card">
|
|
13
|
+
<p class="ef-eyebrow">Constrain</p>
|
|
14
|
+
<h3 class="ef-card__title">Make valid work explicit</h3>
|
|
15
|
+
<p>Domain state and legal transitions are modeled instead of implied.</p>
|
|
16
|
+
</article>
|
|
17
|
+
</li>
|
|
18
|
+
<li>
|
|
19
|
+
<article class="ef-card" data-ef-tone="inverse">
|
|
20
|
+
<h3 class="ef-card__title">Verify what people receive</h3>
|
|
21
|
+
<p>Accessibility, responsiveness, and meaning are checked as executable contracts.</p>
|
|
22
|
+
</article>
|
|
23
|
+
</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</div>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<div class="ef-character-grid" data-ef-profile="ibm-3270" data-ef-rows="24" data-ef-status-rows="1" data-ef-columns="80" data-ef-narrow="contained">
|
|
2
|
+
<div class="ef-character-grid__viewport" role="region" aria-labelledby="character-grid-3270-title" tabindex="0">
|
|
3
|
+
<form class="ef-character-grid__surface">
|
|
4
|
+
<span class="ef-character-grid__text" data-ef-row="1" data-ef-col="2" data-ef-len="4">OPSM</span>
|
|
5
|
+
<h2 class="ef-character-grid__text" id="character-grid-3270-title" data-ef-row="1" data-ef-col="33" data-ef-len="15" data-ef-emphasis="intensified">OPERATIONS MENU</h2>
|
|
6
|
+
<span class="ef-character-grid__text" data-ef-row="1" data-ef-col="64" data-ef-len="5">Date:</span>
|
|
7
|
+
<span class="ef-character-grid__value" data-ef-row="1" data-ef-col="70" data-ef-len="10">2026-09-27</span>
|
|
8
|
+
<span class="ef-character-grid__text" data-ef-row="2" data-ef-col="2" data-ef-len="7">System:</span>
|
|
9
|
+
<span class="ef-character-grid__value" data-ef-row="2" data-ef-col="10" data-ef-len="8">ECHT01</span>
|
|
10
|
+
<span class="ef-character-grid__text" data-ef-row="2" data-ef-col="60" data-ef-len="9">Operator:</span>
|
|
11
|
+
<span class="ef-character-grid__value" data-ef-row="2" data-ef-col="70" data-ef-len="8">OP0142</span>
|
|
12
|
+
<p class="ef-character-grid__text" data-ef-row="4" data-ef-col="2" data-ef-len="33">Select an option and press Enter.</p>
|
|
13
|
+
<dl class="ef-character-grid__group" aria-label="Options">
|
|
14
|
+
<dt class="ef-character-grid__value" data-ef-row="6" data-ef-col="6" data-ef-len="1">1</dt>
|
|
15
|
+
<dd class="ef-character-grid__text" data-ef-row="6" data-ef-col="10" data-ef-len="16">Customer inquiry</dd>
|
|
16
|
+
<dt class="ef-character-grid__value" data-ef-row="7" data-ef-col="6" data-ef-len="1">2</dt>
|
|
17
|
+
<dd class="ef-character-grid__text" data-ef-row="7" data-ef-col="10" data-ef-len="19">Account maintenance</dd>
|
|
18
|
+
<dt class="ef-character-grid__value" data-ef-row="8" data-ef-col="6" data-ef-len="1">3</dt>
|
|
19
|
+
<dd class="ef-character-grid__text" data-ef-row="8" data-ef-col="10" data-ef-len="19">Transaction history</dd>
|
|
20
|
+
<dt class="ef-character-grid__value" data-ef-row="9" data-ef-col="6" data-ef-len="1">4</dt>
|
|
21
|
+
<dd class="ef-character-grid__text" data-ef-row="9" data-ef-col="10" data-ef-len="7">Reports</dd>
|
|
22
|
+
<dt class="ef-character-grid__value" data-ef-row="10" data-ef-col="6" data-ef-len="1">X</dt>
|
|
23
|
+
<dd class="ef-character-grid__text" data-ef-row="10" data-ef-col="10" data-ef-len="4">Exit</dd>
|
|
24
|
+
</dl>
|
|
25
|
+
<label class="ef-character-grid__label" for="character-grid-3270-option" data-ef-row="13" data-ef-col="2" data-ef-len="11">Option<span class="ef-character-grid__leader" aria-hidden="true"> ===></span></label>
|
|
26
|
+
<input class="ef-character-grid__field" id="character-grid-3270-option" name="option" type="text" maxlength="2" required aria-describedby="character-grid-3270-option-hint" autocomplete="off" data-ef-row="13" data-ef-col="15" data-ef-len="2">
|
|
27
|
+
<span class="ef-character-grid__text" id="character-grid-3270-option-hint" data-ef-row="13" data-ef-col="20" data-ef-len="18" data-ef-emphasis="muted">(1-4 or X to exit)</span>
|
|
28
|
+
<p class="ef-character-grid__message" role="status" data-ef-severity="information" data-ef-row="21" data-ef-col="2" data-ef-len="78"><span class="ef-character-grid__severity"><span>INFO</span></span> OPSM000I Session started 2026-09-27 08:15.</p>
|
|
29
|
+
<div class="ef-character-grid__group" role="group" aria-label="Function keys">
|
|
30
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="enter" data-ef-action="enter" data-ef-row="22" data-ef-col="2" data-ef-len="12"><kbd>Enter</kbd>=Select</button>
|
|
31
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf1" formnovalidate data-ef-action="pf1" data-ef-row="22" data-ef-col="16" data-ef-len="8"><kbd>PF1</kbd>=Help</button>
|
|
32
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf3" formnovalidate data-ef-action="pf3" data-ef-row="22" data-ef-col="26" data-ef-len="8"><kbd>PF3</kbd>=Exit</button>
|
|
33
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf12" formnovalidate data-ef-action="pf12" data-ef-row="22" data-ef-col="36" data-ef-len="11"><kbd>PF12</kbd>=Cancel</button>
|
|
34
|
+
<button class="ef-character-grid__key" type="button" data-ef-action="reset" data-ef-row="23" data-ef-col="2" data-ef-len="12"><kbd>Reset</kbd>=Unlock</button>
|
|
35
|
+
</div>
|
|
36
|
+
<p class="ef-character-grid__status" role="status" data-ef-row="25" data-ef-col="2" data-ef-len="78"><span class="ef-character-grid__indicator"><span>READY</span></span></p>
|
|
37
|
+
</form>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<div class="ef-character-grid" data-ef-rows="10" data-ef-columns="60" data-ef-narrow="contained">
|
|
2
|
+
<div class="ef-character-grid__viewport" role="region" aria-labelledby="character-grid-field-title" tabindex="0">
|
|
3
|
+
<form class="ef-character-grid__surface">
|
|
4
|
+
<h2 class="ef-character-grid__text" id="character-grid-field-title" data-ef-row="1" data-ef-col="23" data-ef-len="14" data-ef-emphasis="intensified">PAYMENT ENTRY</h2>
|
|
5
|
+
<label class="ef-character-grid__label" for="character-grid-field-account" data-ef-row="3" data-ef-col="2" data-ef-len="16">Account<span class="ef-character-grid__leader" aria-hidden="true"> . . . :</span></label>
|
|
6
|
+
<input class="ef-character-grid__field" id="character-grid-field-account" name="account" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="12" required aria-describedby="character-grid-field-account-hint" autocomplete="off" data-ef-row="3" data-ef-col="20" data-ef-len="12">
|
|
7
|
+
<span class="ef-character-grid__text" id="character-grid-field-account-hint" data-ef-row="3" data-ef-col="34" data-ef-len="21" data-ef-emphasis="muted">(required, 12 digits)</span>
|
|
8
|
+
<label class="ef-character-grid__label" for="character-grid-field-reference" data-ef-row="4" data-ef-col="2" data-ef-len="16">Reference<span class="ef-character-grid__leader" aria-hidden="true"> . . :</span></label>
|
|
9
|
+
<input class="ef-character-grid__field" id="character-grid-field-reference" name="reference" type="text" maxlength="20" value="INV-1042" autocomplete="off" data-ef-row="4" data-ef-col="20" data-ef-len="20">
|
|
10
|
+
<label class="ef-character-grid__label" for="character-grid-field-amount" data-ef-row="5" data-ef-col="2" data-ef-len="16">Amount<span class="ef-character-grid__leader" aria-hidden="true"> . . . . :</span></label>
|
|
11
|
+
<input class="ef-character-grid__field" id="character-grid-field-amount" name="amount" type="text" inputmode="decimal" maxlength="12" value="12,48O.55" aria-invalid="true" aria-describedby="character-grid-field-error" autocomplete="off" data-ef-row="5" data-ef-col="20" data-ef-len="12">
|
|
12
|
+
<label class="ef-character-grid__label" for="character-grid-field-branch" data-ef-row="6" data-ef-col="2" data-ef-len="16">Branch<span class="ef-character-grid__leader" aria-hidden="true"> . . . . :</span></label>
|
|
13
|
+
<input class="ef-character-grid__field" id="character-grid-field-branch" name="branch" type="text" maxlength="8" value="NORTH" disabled data-ef-row="6" data-ef-col="20" data-ef-len="8">
|
|
14
|
+
<span class="ef-character-grid__text" data-ef-row="7" data-ef-col="2" data-ef-len="16">Opened<span class="ef-character-grid__leader" aria-hidden="true"> . . . . :</span></span>
|
|
15
|
+
<span class="ef-character-grid__value" data-ef-row="7" data-ef-col="20" data-ef-len="10">2014-03-11</span>
|
|
16
|
+
<label class="ef-character-grid__label" for="character-grid-field-session" data-ef-row="8" data-ef-col="2" data-ef-len="16">Session<span class="ef-character-grid__leader" aria-hidden="true"> . . . :</span></label>
|
|
17
|
+
<input class="ef-character-grid__field" id="character-grid-field-session" name="session" type="text" maxlength="16" value="S-20260927-01" readonly data-ef-row="8" data-ef-col="20" data-ef-len="16">
|
|
18
|
+
<p class="ef-character-grid__text" id="character-grid-field-error" data-ef-row="10" data-ef-col="2" data-ef-len="54">Error: Amount must contain digits only, e.g. 12480.55</p>
|
|
19
|
+
</form>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<div class="ef-character-grid" data-ef-rows="6" data-ef-columns="80" data-ef-narrow="contained">
|
|
2
|
+
<div class="ef-character-grid__viewport" role="region" aria-labelledby="character-grid-keys-title" tabindex="0">
|
|
3
|
+
<form class="ef-character-grid__surface">
|
|
4
|
+
<h2 class="ef-character-grid__text" id="character-grid-keys-title" data-ef-row="1" data-ef-col="33" data-ef-len="14" data-ef-emphasis="intensified">RECORD LOOKUP</h2>
|
|
5
|
+
<label class="ef-character-grid__label" for="character-grid-keys-record" data-ef-row="2" data-ef-col="2" data-ef-len="16">Record<span class="ef-character-grid__leader" aria-hidden="true"> . . . . :</span></label>
|
|
6
|
+
<input class="ef-character-grid__field" id="character-grid-keys-record" name="record" type="text" maxlength="10" required autocomplete="off" data-ef-row="2" data-ef-col="20" data-ef-len="10">
|
|
7
|
+
<div class="ef-character-grid__group" role="group" aria-label="Function keys">
|
|
8
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="enter" data-ef-action="enter" data-ef-row="5" data-ef-col="2" data-ef-len="12"><kbd>Enter</kbd>=Search</button>
|
|
9
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="clear" formnovalidate data-ef-action="clear" data-ef-row="5" data-ef-col="16" data-ef-len="11"><kbd>Clear</kbd>=Erase</button>
|
|
10
|
+
<button class="ef-character-grid__key" type="button" data-ef-action="reset" data-ef-row="5" data-ef-col="29" data-ef-len="12"><kbd>Reset</kbd>=Unlock</button>
|
|
11
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf1" formnovalidate data-ef-action="pf1" data-ef-row="5" data-ef-col="43" data-ef-len="8"><kbd>PF1</kbd>=Help</button>
|
|
12
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf3" formnovalidate data-ef-action="pf3" data-ef-row="5" data-ef-col="53" data-ef-len="8"><kbd>PF3</kbd>=Exit</button>
|
|
13
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf12" formnovalidate data-ef-action="pf12" data-ef-row="5" data-ef-col="63" data-ef-len="11"><kbd>PF12</kbd>=Cancel</button>
|
|
14
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf7" formnovalidate data-ef-action="pf7" disabled data-ef-row="6" data-ef-col="2" data-ef-len="8"><kbd>PF7</kbd>=Back</button>
|
|
15
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf8" formnovalidate data-ef-action="pf8" data-ef-row="6" data-ef-col="12" data-ef-len="11"><kbd>PF8</kbd>=Forward</button>
|
|
16
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="export" data-ef-action="export" data-ef-row="6" data-ef-col="25" data-ef-len="15"><kbd>F10</kbd>=Export CSV</button>
|
|
17
|
+
</div>
|
|
18
|
+
</form>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div class="ef-character-grid" data-ef-rows="8" data-ef-columns="60" data-ef-narrow="contained" data-ef-reveal="sequential" data-ef-reveal-rows="3">
|
|
2
|
+
<div class="ef-character-grid__viewport" role="region" aria-labelledby="character-grid-reveal-title" tabindex="0">
|
|
3
|
+
<form class="ef-character-grid__surface">
|
|
4
|
+
<h2 class="ef-character-grid__text" id="character-grid-reveal-title" data-ef-reveal-run data-ef-row="1" data-ef-col="23" data-ef-len="15" data-ef-emphasis="intensified">ECHELON FOUNDRY</h2>
|
|
5
|
+
<p class="ef-character-grid__text" data-ef-reveal-run data-ef-row="2" data-ef-col="21" data-ef-len="18">OPERATIONS NETWORK</p>
|
|
6
|
+
<p class="ef-character-grid__text" data-ef-reveal-run data-ef-row="3" data-ef-col="20" data-ef-len="20" data-ef-emphasis="muted">Authorized use only.</p>
|
|
7
|
+
<label class="ef-character-grid__label" for="character-grid-reveal-operator" data-ef-row="5" data-ef-col="2" data-ef-len="16">Operator<span class="ef-character-grid__leader" aria-hidden="true"> . . . :</span></label>
|
|
8
|
+
<input class="ef-character-grid__field" id="character-grid-reveal-operator" name="operator" type="text" maxlength="8" required autocomplete="username" data-ef-row="5" data-ef-col="20" data-ef-len="8">
|
|
9
|
+
<p class="ef-character-grid__message" role="status" data-ef-severity="information" data-ef-row="7" data-ef-col="2" data-ef-len="58"><span class="ef-character-grid__severity"><span>INFO</span></span> Enter your operator ID and press Enter.</p>
|
|
10
|
+
<div class="ef-character-grid__group" role="group" aria-label="Function keys">
|
|
11
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="enter" data-ef-action="enter" data-ef-row="8" data-ef-col="2" data-ef-len="13"><kbd>Enter</kbd>=Sign on</button>
|
|
12
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf3" formnovalidate data-ef-action="pf3" data-ef-row="8" data-ef-col="17" data-ef-len="8"><kbd>PF3</kbd>=Exit</button>
|
|
13
|
+
</div>
|
|
14
|
+
</form>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<div class="ef-character-grid" data-ef-rows="14" data-ef-columns="80" data-ef-narrow="contained">
|
|
2
|
+
<div class="ef-character-grid__viewport" role="region" aria-labelledby="character-grid-selection-title" tabindex="0">
|
|
3
|
+
<form class="ef-character-grid__surface">
|
|
4
|
+
<h2 class="ef-character-grid__text" id="character-grid-selection-title" data-ef-row="1" data-ef-col="31" data-ef-len="18" data-ef-emphasis="intensified">WORK WITH ACCOUNTS</h2>
|
|
5
|
+
<p class="ef-character-grid__text" data-ef-row="3" data-ef-col="2" data-ef-len="26">Type options, press Enter.</p>
|
|
6
|
+
<p class="ef-character-grid__text" id="character-grid-selection-legend" data-ef-row="4" data-ef-col="4" data-ef-len="28">2=Change 4=Close 5=Display</p>
|
|
7
|
+
<div class="ef-character-grid__table" data-ef-row="6" data-ef-col="2" data-ef-len="77" data-ef-height="6">
|
|
8
|
+
<table data-ef-gutter="2">
|
|
9
|
+
<caption>Accounts, with a selection option per row</caption>
|
|
10
|
+
<thead><tr><th scope="col" id="character-grid-selection-opt" data-ef-len="3">Opt</th><th scope="col" data-ef-len="14">Account</th><th scope="col" data-ef-len="24">Name</th><th scope="col" data-ef-len="10">Type</th><th scope="col" data-ef-len="12" data-ef-align="end">Balance</th></tr></thead>
|
|
11
|
+
<tbody>
|
|
12
|
+
<tr><td><input class="ef-character-grid__field" id="character-grid-selection-opt-1" name="opt-00417-2231-09" type="text" inputmode="numeric" pattern="[245]" maxlength="1" autocomplete="off" aria-labelledby="character-grid-selection-opt character-grid-selection-row-1" aria-describedby="character-grid-selection-legend" data-ef-len="1"></td><th scope="row" id="character-grid-selection-row-1">00417-2231-09</th><td>RIVERA, ALEX</td><td>CHECKING</td><td data-ef-align="end">12,480.55</td></tr>
|
|
13
|
+
<tr><td><input class="ef-character-grid__field" id="character-grid-selection-opt-2" name="opt-00417-5518-02" type="text" inputmode="numeric" pattern="[245]" maxlength="1" autocomplete="off" value="5" aria-labelledby="character-grid-selection-opt character-grid-selection-row-2" aria-describedby="character-grid-selection-legend" data-ef-len="1"></td><th scope="row" id="character-grid-selection-row-2">00417-5518-02</th><td>RIVERA, ALEX</td><td>SAVINGS</td><td data-ef-align="end">8,215.00</td></tr>
|
|
14
|
+
<tr><td><input class="ef-character-grid__field" id="character-grid-selection-opt-3" name="opt-00902-1177-40" type="text" inputmode="numeric" pattern="[245]" maxlength="1" autocomplete="off" value="9" aria-invalid="true" aria-labelledby="character-grid-selection-opt character-grid-selection-row-3" aria-describedby="character-grid-selection-legend character-grid-selection-message" data-ef-len="1"></td><th scope="row" id="character-grid-selection-row-3">00902-1177-40</th><td>OKAFOR, CHIDI</td><td>LOAN</td><td data-ef-align="end">-4,100.00</td></tr>
|
|
15
|
+
<tr><td><input class="ef-character-grid__field" id="character-grid-selection-opt-4" name="opt-01233-0040-11" type="text" inputmode="numeric" pattern="[245]" maxlength="1" autocomplete="off" aria-labelledby="character-grid-selection-opt character-grid-selection-row-4" aria-describedby="character-grid-selection-legend" data-ef-len="1"></td><th scope="row" id="character-grid-selection-row-4">01233-0040-11</th><td>NAKAMURA, YUKI</td><td>CHECKING</td><td data-ef-align="end">310.72</td></tr>
|
|
16
|
+
<tr><td><input class="ef-character-grid__field" id="character-grid-selection-opt-5" name="opt-01233-0040-12" type="text" inputmode="numeric" pattern="[245]" maxlength="1" autocomplete="off" disabled aria-labelledby="character-grid-selection-opt character-grid-selection-row-5" aria-describedby="character-grid-selection-legend" data-ef-len="1"></td><th scope="row" id="character-grid-selection-row-5">01233-0040-12</th><td>NAKAMURA, YUKI</td><td>CLOSED</td><td data-ef-align="end">0.00</td></tr>
|
|
17
|
+
</tbody>
|
|
18
|
+
</table>
|
|
19
|
+
</div>
|
|
20
|
+
<p class="ef-character-grid__text" data-ef-row="12" data-ef-col="72" data-ef-len="6">Bottom</p>
|
|
21
|
+
<p class="ef-character-grid__message" id="character-grid-selection-message" role="status" data-ef-severity="validation" data-ef-row="13" data-ef-col="2" data-ef-len="78"><span class="ef-character-grid__severity"><span>CHECK</span></span> Option 9 is not valid for 00902-1177-40. Type 2, 4, or 5.</p>
|
|
22
|
+
<div class="ef-character-grid__group" role="group" aria-label="Function keys">
|
|
23
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="enter" data-ef-action="enter" data-ef-row="14" data-ef-col="2" data-ef-len="13"><kbd>Enter</kbd>=Process</button>
|
|
24
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf3" formnovalidate data-ef-action="pf3" data-ef-row="14" data-ef-col="17" data-ef-len="8"><kbd>PF3</kbd>=Exit</button>
|
|
25
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf5" formnovalidate data-ef-action="pf5" data-ef-row="14" data-ef-col="27" data-ef-len="11"><kbd>PF5</kbd>=Refresh</button>
|
|
26
|
+
<button class="ef-character-grid__key" type="submit" name="action" value="pf12" formnovalidate data-ef-action="pf12" data-ef-row="14" data-ef-col="40" data-ef-len="11"><kbd>PF12</kbd>=Cancel</button>
|
|
27
|
+
</div>
|
|
28
|
+
</form>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<div class="ef-character-grid" data-ef-rows="6" data-ef-columns="80" data-ef-narrow="contained">
|
|
2
|
+
<div class="ef-character-grid__viewport" role="region" aria-labelledby="character-grid-status-title" tabindex="0">
|
|
3
|
+
<div class="ef-character-grid__surface">
|
|
4
|
+
<h2 class="ef-character-grid__text" id="character-grid-status-title" data-ef-row="1" data-ef-col="33" data-ef-len="14" data-ef-emphasis="intensified">BATCH TRANSFER</h2>
|
|
5
|
+
<span class="ef-character-grid__text" data-ef-row="3" data-ef-col="2" data-ef-len="16">Records<span class="ef-character-grid__leader" aria-hidden="true"> . . . :</span></span>
|
|
6
|
+
<span class="ef-character-grid__value" data-ef-row="3" data-ef-col="20" data-ef-len="6" data-ef-align="end">1,204</span>
|
|
7
|
+
<p class="ef-character-grid__message" role="alert" data-ef-severity="error" data-ef-row="5" data-ef-col="2" data-ef-len="78"><span class="ef-character-grid__severity"><span>ERROR</span></span> BTX009E Transfer service did not respond. Press Reset, then Enter.</p>
|
|
8
|
+
<p class="ef-character-grid__status" role="status" data-ef-row="6" data-ef-col="2" data-ef-len="78"><span class="ef-character-grid__indicator" data-ef-state="inhibited"><span>X SYSTEM</span></span> Input inhibited</p>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|