@echelon-foundry/design-system 0.2.0-main.15.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/README.md +82 -0
- package/dist/all.css +3461 -0
- package/dist/assessment.css +1123 -0
- package/dist/brands/echelon.css +91 -0
- package/dist/brands/example-harbor.css +91 -0
- package/dist/brands/index.json +17 -0
- package/dist/build-metrics.json +152 -0
- package/dist/components.css +2123 -0
- package/dist/foundations.css +113 -0
- package/dist/patterns/alert.html +8 -0
- package/dist/patterns/allocation.html +24 -0
- package/dist/patterns/best-worst.html +21 -0
- package/dist/patterns/binary-choice.html +15 -0
- package/dist/patterns/checkbox.html +13 -0
- package/dist/patterns/choice-group.html +27 -0
- package/dist/patterns/collection-toolbar.html +22 -0
- package/dist/patterns/combobox.html +13 -0
- package/dist/patterns/command-palette.html +14 -0
- package/dist/patterns/composer.html +19 -0
- package/dist/patterns/conflict-review.html +17 -0
- package/dist/patterns/conversation.html +23 -0
- package/dist/patterns/dashboard-grid.html +5 -0
- package/dist/patterns/data-grid.html +30 -0
- package/dist/patterns/date-range.html +13 -0
- package/dist/patterns/dialog.html +15 -0
- package/dist/patterns/diff-viewer.html +22 -0
- package/dist/patterns/disclosure.html +6 -0
- package/dist/patterns/empty-state.html +6 -0
- package/dist/patterns/file-upload.html +19 -0
- package/dist/patterns/flyout.html +72 -0
- package/dist/patterns/hierarchical-choice.html +25 -0
- package/dist/patterns/hierarchical-multi-choice.html +27 -0
- package/dist/patterns/image-choice.html +25 -0
- package/dist/patterns/master-detail.html +16 -0
- package/dist/patterns/matrix-single.html +26 -0
- package/dist/patterns/menu.html +8 -0
- package/dist/patterns/metric-card.html +6 -0
- package/dist/patterns/mobile-action-bar.html +4 -0
- package/dist/patterns/multi-choice.html +23 -0
- package/dist/patterns/numeric-stepper.html +5 -0
- package/dist/patterns/obligation-panel.html +36 -0
- package/dist/patterns/operation-status.html +12 -0
- package/dist/patterns/ordinal-scale.html +42 -0
- package/dist/patterns/pagination.html +12 -0
- package/dist/patterns/pairwise-choice.html +21 -0
- package/dist/patterns/popover.html +6 -0
- package/dist/patterns/preview-surface.html +14 -0
- package/dist/patterns/provenance-trail.html +9 -0
- package/dist/patterns/question.html +13 -0
- package/dist/patterns/range-entry.html +18 -0
- package/dist/patterns/ranking.html +32 -0
- package/dist/patterns/readiness-checklist.html +12 -0
- package/dist/patterns/record-header.html +17 -0
- package/dist/patterns/rule-builder.html +37 -0
- package/dist/patterns/search.html +8 -0
- package/dist/patterns/segmented-control.html +13 -0
- package/dist/patterns/select.html +12 -0
- package/dist/patterns/semantic-differential.html +23 -0
- package/dist/patterns/skeleton.html +7 -0
- package/dist/patterns/slider.html +11 -0
- package/dist/patterns/special-choice.html +15 -0
- package/dist/patterns/status-lozenge.html +6 -0
- package/dist/patterns/survey-progress.html +8 -0
- package/dist/patterns/switch.html +14 -0
- package/dist/patterns/symbol-rating.html +31 -0
- package/dist/patterns/tabs.html +11 -0
- package/dist/patterns/timeline.html +19 -0
- package/dist/patterns/toast.html +10 -0
- package/dist/patterns/understanding.html +32 -0
- package/dist/patterns/validation-message.html +4 -0
- package/dist/patterns/validation-summary.html +10 -0
- package/dist/patterns/wizard.html +19 -0
- package/dist/patterns/work-queue.html +20 -0
- package/dist/skins.css +29 -0
- package/dist/tokens.css +99 -0
- package/docs/BRANDING.md +148 -0
- package/package.json +60 -0
- package/patterns/alert.html +8 -0
- package/patterns/allocation.html +24 -0
- package/patterns/assessment.manifest.md +93 -0
- package/patterns/best-worst.html +21 -0
- package/patterns/binary-choice.html +15 -0
- package/patterns/checkbox.html +13 -0
- package/patterns/choice-group.html +27 -0
- package/patterns/collection-toolbar.html +22 -0
- package/patterns/combobox.html +13 -0
- package/patterns/command-palette.html +14 -0
- package/patterns/composer.html +19 -0
- package/patterns/composer.manifest.md +27 -0
- package/patterns/conflict-review.html +17 -0
- package/patterns/conversation.html +23 -0
- package/patterns/conversation.manifest.md +21 -0
- package/patterns/dashboard-grid.html +5 -0
- package/patterns/data-grid.html +30 -0
- package/patterns/date-range.html +13 -0
- package/patterns/dialog.html +15 -0
- package/patterns/diff-viewer.html +22 -0
- package/patterns/disclosure.html +6 -0
- package/patterns/empty-state.html +6 -0
- package/patterns/file-upload.html +19 -0
- package/patterns/flyout.html +72 -0
- package/patterns/flyout.manifest.md +43 -0
- package/patterns/hierarchical-choice.html +25 -0
- package/patterns/hierarchical-multi-choice.html +27 -0
- package/patterns/image-choice.html +25 -0
- package/patterns/manifest.md +46 -0
- package/patterns/master-detail.html +16 -0
- package/patterns/matrix-single.html +26 -0
- package/patterns/menu.html +8 -0
- package/patterns/metric-card.html +6 -0
- package/patterns/mobile-action-bar.html +4 -0
- package/patterns/multi-choice.html +23 -0
- package/patterns/numeric-stepper.html +5 -0
- package/patterns/obligation-panel.html +36 -0
- package/patterns/operation-status.html +12 -0
- package/patterns/ordinal-scale.html +42 -0
- package/patterns/pagination.html +12 -0
- package/patterns/pairwise-choice.html +21 -0
- package/patterns/popover.html +6 -0
- package/patterns/preview-surface.html +14 -0
- package/patterns/provenance-trail.html +9 -0
- package/patterns/question.html +13 -0
- package/patterns/range-entry.html +18 -0
- package/patterns/ranking.html +32 -0
- package/patterns/readiness-checklist.html +12 -0
- package/patterns/record-header.html +17 -0
- package/patterns/rule-builder.html +37 -0
- package/patterns/search.html +8 -0
- package/patterns/segmented-control.html +13 -0
- package/patterns/select.html +12 -0
- package/patterns/semantic-differential.html +23 -0
- package/patterns/skeleton.html +7 -0
- package/patterns/slider.html +11 -0
- package/patterns/special-choice.html +15 -0
- package/patterns/status-lozenge.html +6 -0
- package/patterns/survey-progress.html +8 -0
- package/patterns/switch.html +14 -0
- package/patterns/symbol-rating.html +31 -0
- package/patterns/tabs.html +11 -0
- package/patterns/timeline.html +19 -0
- package/patterns/toast.html +10 -0
- package/patterns/understanding.html +32 -0
- package/patterns/understanding.manifest.md +26 -0
- package/patterns/validation-message.html +4 -0
- package/patterns/validation-summary.html +10 -0
- package/patterns/wizard.html +19 -0
- package/patterns/work-queue.html +20 -0
- package/schemas/brand-manifest.schema.json +152 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<fieldset class="ef-choice-group" aria-describedby="multi-choice-guidance">
|
|
2
|
+
<legend class="ef-choice-group__legend">Select exactly two priorities.</legend>
|
|
3
|
+
<p class="ef-selection-guidance" id="multi-choice-guidance">Choose exactly 2 options. “None of these” cannot be combined with another option.</p>
|
|
4
|
+
|
|
5
|
+
<label class="ef-choice">
|
|
6
|
+
<input type="checkbox" name="priorities" value="reliability">
|
|
7
|
+
<span class="ef-choice__content"><strong>Reliability</strong></span>
|
|
8
|
+
</label>
|
|
9
|
+
<label class="ef-choice">
|
|
10
|
+
<input type="checkbox" name="priorities" value="speed">
|
|
11
|
+
<span class="ef-choice__content"><strong>Delivery speed</strong></span>
|
|
12
|
+
</label>
|
|
13
|
+
<label class="ef-choice">
|
|
14
|
+
<input type="checkbox" name="priorities" value="cost">
|
|
15
|
+
<span class="ef-choice__content"><strong>Cost efficiency</strong></span>
|
|
16
|
+
</label>
|
|
17
|
+
<label class="ef-choice ef-choice--exclusive">
|
|
18
|
+
<input type="checkbox" name="priorities" value="none">
|
|
19
|
+
<span class="ef-choice__content"><strong>None of these</strong><span>Exclusive option</span></span>
|
|
20
|
+
</label>
|
|
21
|
+
|
|
22
|
+
<p class="ef-selection-status" data-ef-state="incomplete" aria-live="polite">0 of 2 selected</p>
|
|
23
|
+
</fieldset>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<label class="ef-numeric-stepper">
|
|
2
|
+
<span class="ef-numeric-stepper__label">Target deployments per week</span>
|
|
3
|
+
<input type="number" name="deployments-per-week" min="0" max="50" step="1" inputmode="numeric" required>
|
|
4
|
+
<span class="ef-field__description">Enter a whole number from 0 through 50.</span>
|
|
5
|
+
</label>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<aside class="ef-obligation-panel" aria-labelledby="obligation-panel-title">
|
|
2
|
+
<header class="ef-obligation-panel__header">
|
|
3
|
+
<div>
|
|
4
|
+
<h2 id="obligation-panel-title">3 obligations require attention</h2>
|
|
5
|
+
<p>These must be resolved before finalization.</p>
|
|
6
|
+
</div>
|
|
7
|
+
<span class="ef-obligation-panel__count" aria-hidden="true">3</span>
|
|
8
|
+
</header>
|
|
9
|
+
|
|
10
|
+
<ul class="ef-obligation-list">
|
|
11
|
+
<li class="ef-obligation" data-ef-severity="blocking">
|
|
12
|
+
<span class="ef-obligation__status">Blocking</span>
|
|
13
|
+
<div>
|
|
14
|
+
<strong>Reconcile unknown storage outcome</strong>
|
|
15
|
+
<p>Verify whether the report snapshot write completed before retrying.</p>
|
|
16
|
+
</div>
|
|
17
|
+
<a href="#reconcile-storage">Review</a>
|
|
18
|
+
</li>
|
|
19
|
+
<li class="ef-obligation" data-ef-severity="warning">
|
|
20
|
+
<span class="ef-obligation__status">Required</span>
|
|
21
|
+
<div>
|
|
22
|
+
<strong>Rebuild stale aggregate</strong>
|
|
23
|
+
<p>The current aggregate does not include every accepted contribution.</p>
|
|
24
|
+
</div>
|
|
25
|
+
<a href="#aggregate-health">Review</a>
|
|
26
|
+
</li>
|
|
27
|
+
<li class="ef-obligation" data-ef-severity="information">
|
|
28
|
+
<span class="ef-obligation__status">Evidence</span>
|
|
29
|
+
<div>
|
|
30
|
+
<strong>Supply publication evidence</strong>
|
|
31
|
+
<p>A required validation fixture has not yet been recorded.</p>
|
|
32
|
+
</div>
|
|
33
|
+
<a href="#publication-evidence">Review</a>
|
|
34
|
+
</li>
|
|
35
|
+
</ul>
|
|
36
|
+
</aside>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<section class="ef-operation-status" aria-labelledby="operation-title">
|
|
2
|
+
<div class="ef-operation-status__symbol" aria-hidden="true">↻</div>
|
|
3
|
+
<div>
|
|
4
|
+
<span class="ef-status-lozenge" data-state="unknown">Unknown outcome</span>
|
|
5
|
+
<h3 id="operation-title">We cannot confirm whether the save completed</h3>
|
|
6
|
+
<p>Reconcile the operation before retrying. Retrying immediately could create a duplicate effect.</p>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="ef-operation-status__actions">
|
|
9
|
+
<button type="button">Reconcile</button>
|
|
10
|
+
<button type="button">View details</button>
|
|
11
|
+
</div>
|
|
12
|
+
</section>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<fieldset class="ef-ordinal-scale ef-ordinal-scale--5">
|
|
2
|
+
<legend class="ef-ordinal-scale__legend">Our deployment process is predictable.</legend>
|
|
3
|
+
|
|
4
|
+
<div class="ef-ordinal-scale__options">
|
|
5
|
+
<label class="ef-ordinal-option">
|
|
6
|
+
<input type="radio" name="deployment-predictability" value="0" required>
|
|
7
|
+
<span class="ef-ordinal-option__marker" aria-hidden="true">1</span>
|
|
8
|
+
<span class="ef-ordinal-option__label">Strongly disagree</span>
|
|
9
|
+
</label>
|
|
10
|
+
<label class="ef-ordinal-option">
|
|
11
|
+
<input type="radio" name="deployment-predictability" value="1">
|
|
12
|
+
<span class="ef-ordinal-option__marker" aria-hidden="true">2</span>
|
|
13
|
+
<span class="ef-ordinal-option__label">Disagree</span>
|
|
14
|
+
</label>
|
|
15
|
+
<label class="ef-ordinal-option">
|
|
16
|
+
<input type="radio" name="deployment-predictability" value="2">
|
|
17
|
+
<span class="ef-ordinal-option__marker" aria-hidden="true">3</span>
|
|
18
|
+
<span class="ef-ordinal-option__label">Neither agree nor disagree</span>
|
|
19
|
+
</label>
|
|
20
|
+
<label class="ef-ordinal-option">
|
|
21
|
+
<input type="radio" name="deployment-predictability" value="3">
|
|
22
|
+
<span class="ef-ordinal-option__marker" aria-hidden="true">4</span>
|
|
23
|
+
<span class="ef-ordinal-option__label">Agree</span>
|
|
24
|
+
</label>
|
|
25
|
+
<label class="ef-ordinal-option">
|
|
26
|
+
<input type="radio" name="deployment-predictability" value="4">
|
|
27
|
+
<span class="ef-ordinal-option__marker" aria-hidden="true">5</span>
|
|
28
|
+
<span class="ef-ordinal-option__label">Strongly agree</span>
|
|
29
|
+
</label>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="ef-special-choices" aria-label="Other responses">
|
|
33
|
+
<label class="ef-special-choice">
|
|
34
|
+
<input type="radio" name="deployment-predictability" value="unknown">
|
|
35
|
+
<span>Don't know</span>
|
|
36
|
+
</label>
|
|
37
|
+
<label class="ef-special-choice">
|
|
38
|
+
<input type="radio" name="deployment-predictability" value="na">
|
|
39
|
+
<span>Not applicable</span>
|
|
40
|
+
</label>
|
|
41
|
+
</div>
|
|
42
|
+
</fieldset>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<nav class="ef-pagination" aria-label="Pagination">
|
|
2
|
+
<a class="ef-pagination__control" href="?page=2" rel="prev">Previous</a>
|
|
3
|
+
<ol class="ef-pagination__pages">
|
|
4
|
+
<li><a href="?page=1">1</a></li>
|
|
5
|
+
<li><a href="?page=2">2</a></li>
|
|
6
|
+
<li><a href="?page=3" aria-current="page">3</a></li>
|
|
7
|
+
<li><a href="?page=4">4</a></li>
|
|
8
|
+
<li><a href="?page=5">5</a></li>
|
|
9
|
+
</ol>
|
|
10
|
+
<a class="ef-pagination__control" href="?page=4" rel="next">Next</a>
|
|
11
|
+
<span class="ef-pagination__summary">Page 3 of 12</span>
|
|
12
|
+
</nav>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<fieldset class="ef-pairwise">
|
|
2
|
+
<legend class="ef-pairwise__legend">Which is more important for this decision?</legend>
|
|
3
|
+
|
|
4
|
+
<div class="ef-pairwise__options">
|
|
5
|
+
<label class="ef-pairwise__option">
|
|
6
|
+
<input type="radio" name="priority-comparison" value="reliability" required>
|
|
7
|
+
<span class="ef-pairwise__eyebrow">Option A</span>
|
|
8
|
+
<strong>Reliability</strong>
|
|
9
|
+
<span>Prefer predictable operation and recovery.</span>
|
|
10
|
+
</label>
|
|
11
|
+
|
|
12
|
+
<span class="ef-pairwise__versus" aria-hidden="true">or</span>
|
|
13
|
+
|
|
14
|
+
<label class="ef-pairwise__option">
|
|
15
|
+
<input type="radio" name="priority-comparison" value="speed">
|
|
16
|
+
<span class="ef-pairwise__eyebrow">Option B</span>
|
|
17
|
+
<strong>Delivery speed</strong>
|
|
18
|
+
<span>Prefer faster change and deployment.</span>
|
|
19
|
+
</label>
|
|
20
|
+
</div>
|
|
21
|
+
</fieldset>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<button type="button" popovertarget="example-popover">Show options</button>
|
|
2
|
+
<div class="ef-popover" id="example-popover" popover data-ef-motion-weight="light">
|
|
3
|
+
<strong>Options</strong>
|
|
4
|
+
<p>This surface is controlled entirely by declarative HTML.</p>
|
|
5
|
+
<button type="button" popovertarget="example-popover" popovertargetaction="hide">Close</button>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<section class="ef-preview-surface" aria-labelledby="preview-title">
|
|
2
|
+
<header class="ef-preview-surface__header">
|
|
3
|
+
<div><span class="ef-status-lozenge">Preview</span><h3 id="preview-title">Customer invoice</h3></div>
|
|
4
|
+
<div class="ef-preview-surface__controls"><button type="button">Desktop</button><button type="button">Mobile</button></div>
|
|
5
|
+
</header>
|
|
6
|
+
<div class="ef-preview-surface__canvas">
|
|
7
|
+
<article>
|
|
8
|
+
<p class="ef-record-header__type">Preview content</p>
|
|
9
|
+
<h2>Architecture assessment</h2>
|
|
10
|
+
<p>This surface shows the exact material the user is expected to review before a consequential operation.</p>
|
|
11
|
+
</article>
|
|
12
|
+
</div>
|
|
13
|
+
<footer class="ef-preview-surface__footer"><span>Not yet committed</span><button type="button">Continue review</button></footer>
|
|
14
|
+
</section>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<section class="ef-provenance-trail" aria-labelledby="provenance-title">
|
|
2
|
+
<h3 id="provenance-title">How this value was produced</h3>
|
|
3
|
+
<ol>
|
|
4
|
+
<li><span class="ef-provenance-trail__kind">Source</span><strong>42 accepted responses</strong><small>Result set hash 9D2…A7</small></li>
|
|
5
|
+
<li><span class="ef-provenance-trail__kind">Aggregate</span><strong>Governance section</strong><small>Scoring model v3</small></li>
|
|
6
|
+
<li><span class="ef-provenance-trail__kind">Analysis</span><strong>Weighted mean</strong><small>Analysis expression v1</small></li>
|
|
7
|
+
<li><span class="ef-provenance-trail__kind">Presentation</span><strong>Metric card</strong><small>Report definition v4</small></li>
|
|
8
|
+
</ol>
|
|
9
|
+
</section>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<section class="ef-question" aria-labelledby="question-example-title">
|
|
2
|
+
<header class="ef-question__header">
|
|
3
|
+
<span class="ef-question__number" aria-hidden="true">7</span>
|
|
4
|
+
<div>
|
|
5
|
+
<h2 class="ef-question__prompt" id="question-example-title">How consistently is this practice followed?</h2>
|
|
6
|
+
<p class="ef-question__help" id="question-example-help">Choose the response that best describes the current state.</p>
|
|
7
|
+
</div>
|
|
8
|
+
</header>
|
|
9
|
+
|
|
10
|
+
<div class="ef-question__body" aria-describedby="question-example-help">
|
|
11
|
+
<!-- Insert a selector pattern here. -->
|
|
12
|
+
</div>
|
|
13
|
+
</section>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<fieldset class="ef-range-entry">
|
|
2
|
+
<legend class="ef-range-entry__legend">Acceptable response-time range</legend>
|
|
3
|
+
<p class="ef-field__description">Enter both endpoints. A graphical range slider may be added by Limen as an enhancement, but direct entry remains available.</p>
|
|
4
|
+
|
|
5
|
+
<div class="ef-range-entry__inputs">
|
|
6
|
+
<label>
|
|
7
|
+
<span>Minimum</span>
|
|
8
|
+
<input type="number" name="response-time-min" min="0" max="5000" step="50" value="500" inputmode="decimal">
|
|
9
|
+
</label>
|
|
10
|
+
<span class="ef-range-entry__separator" aria-hidden="true">to</span>
|
|
11
|
+
<label>
|
|
12
|
+
<span>Maximum</span>
|
|
13
|
+
<input type="number" name="response-time-max" min="0" max="5000" step="50" value="1500" inputmode="decimal">
|
|
14
|
+
</label>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<p class="ef-range-entry__status" data-ef-state="valid" aria-live="polite">500 to 1500 milliseconds</p>
|
|
18
|
+
</fieldset>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<fieldset class="ef-ranking">
|
|
2
|
+
<legend class="ef-ranking__legend">Rank the priorities from most to least important.</legend>
|
|
3
|
+
<p class="ef-field__description">Use the move controls to change the order. Drag-and-drop may be added only as an optional Limen enhancement.</p>
|
|
4
|
+
|
|
5
|
+
<ol class="ef-ranking__list">
|
|
6
|
+
<li class="ef-ranking__item" data-ef-rank="1">
|
|
7
|
+
<span class="ef-ranking__position" aria-hidden="true">1</span>
|
|
8
|
+
<span class="ef-ranking__label">Reliability</span>
|
|
9
|
+
<span class="ef-ranking__actions">
|
|
10
|
+
<button type="button" disabled aria-label="Move Reliability up">↑</button>
|
|
11
|
+
<button type="button" aria-label="Move Reliability down">↓</button>
|
|
12
|
+
</span>
|
|
13
|
+
</li>
|
|
14
|
+
<li class="ef-ranking__item" data-ef-rank="2">
|
|
15
|
+
<span class="ef-ranking__position" aria-hidden="true">2</span>
|
|
16
|
+
<span class="ef-ranking__label">Delivery speed</span>
|
|
17
|
+
<span class="ef-ranking__actions">
|
|
18
|
+
<button type="button" aria-label="Move Delivery speed up">↑</button>
|
|
19
|
+
<button type="button" aria-label="Move Delivery speed down">↓</button>
|
|
20
|
+
</span>
|
|
21
|
+
</li>
|
|
22
|
+
<li class="ef-ranking__item" data-ef-rank="3">
|
|
23
|
+
<span class="ef-ranking__position" aria-hidden="true">3</span>
|
|
24
|
+
<span class="ef-ranking__label">Cost efficiency</span>
|
|
25
|
+
<span class="ef-ranking__actions">
|
|
26
|
+
<button type="button" aria-label="Move Cost efficiency up">↑</button>
|
|
27
|
+
<button type="button" disabled aria-label="Move Cost efficiency down">↓</button>
|
|
28
|
+
</span>
|
|
29
|
+
</li>
|
|
30
|
+
</ol>
|
|
31
|
+
<p class="ef-ranking__announcement" aria-live="polite" aria-atomic="true"></p>
|
|
32
|
+
</fieldset>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<section class="ef-readiness-checklist" aria-labelledby="readiness-title">
|
|
2
|
+
<header>
|
|
3
|
+
<span class="ef-status-lozenge" data-state="attention">5 of 7 complete</span>
|
|
4
|
+
<h3 id="readiness-title">Ready to close September</h3>
|
|
5
|
+
</header>
|
|
6
|
+
<ul class="ef-readiness-checklist__items">
|
|
7
|
+
<li data-state="complete"><span aria-hidden="true">✓</span><span>All invoices posted</span></li>
|
|
8
|
+
<li data-state="complete"><span aria-hidden="true">✓</span><span>Payments allocated</span></li>
|
|
9
|
+
<li data-state="incomplete"><span aria-hidden="true">○</span><span>Bank reconciliation</span><button type="button">Review</button></li>
|
|
10
|
+
<li data-state="blocked"><span aria-hidden="true">!</span><span>CPA adjustment review</span><span>Blocking</span></li>
|
|
11
|
+
</ul>
|
|
12
|
+
</section>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<header class="ef-record-header">
|
|
2
|
+
<div class="ef-record-header__main">
|
|
3
|
+
<nav aria-label="Breadcrumb"><a href="#home">Home</a> <span aria-hidden="true">/</span> <a href="#records">Records</a></nav>
|
|
4
|
+
<div class="ef-record-header__title">
|
|
5
|
+
<div><span class="ef-record-header__type">Invoice</span><h2>INV-1042</h2></div>
|
|
6
|
+
<span class="ef-status-lozenge" data-state="attention">Overdue</span>
|
|
7
|
+
</div>
|
|
8
|
+
<p>Acme Manufacturing · Due October 4, 2026</p>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="ef-record-header__actions">
|
|
11
|
+
<button type="button">Primary action</button>
|
|
12
|
+
<details>
|
|
13
|
+
<summary>More</summary>
|
|
14
|
+
<div class="ef-record-header__menu"><button type="button">Export</button><button type="button">View history</button></div>
|
|
15
|
+
</details>
|
|
16
|
+
</div>
|
|
17
|
+
</header>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<section class="ef-rule-builder" aria-labelledby="rule-builder-title">
|
|
2
|
+
<header class="ef-rule-builder__header">
|
|
3
|
+
<div>
|
|
4
|
+
<h2 id="rule-builder-title">Applicability rule</h2>
|
|
5
|
+
<p>Define when this section is shown.</p>
|
|
6
|
+
</div>
|
|
7
|
+
<button type="button">Add condition</button>
|
|
8
|
+
</header>
|
|
9
|
+
|
|
10
|
+
<div class="ef-rule-group" data-ef-operator="and">
|
|
11
|
+
<div class="ef-rule-group__operator" aria-label="All conditions must be true">AND</div>
|
|
12
|
+
|
|
13
|
+
<div class="ef-rule-clause">
|
|
14
|
+
<label>
|
|
15
|
+
<span>Field</span>
|
|
16
|
+
<select>
|
|
17
|
+
<option>Answer: Q1</option>
|
|
18
|
+
</select>
|
|
19
|
+
</label>
|
|
20
|
+
<label>
|
|
21
|
+
<span>Operator</span>
|
|
22
|
+
<select>
|
|
23
|
+
<option>is equal to</option>
|
|
24
|
+
</select>
|
|
25
|
+
</label>
|
|
26
|
+
<label>
|
|
27
|
+
<span>Value</span>
|
|
28
|
+
<select>
|
|
29
|
+
<option>Yes</option>
|
|
30
|
+
</select>
|
|
31
|
+
</label>
|
|
32
|
+
<button type="button" aria-label="Remove condition">Remove</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<p class="ef-rule-builder__summary"><strong>Meaning:</strong> Show this section when Answer(Q1) = Yes.</p>
|
|
37
|
+
</section>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<form class="ef-search" role="search">
|
|
2
|
+
<label class="ef-search__label" for="search-query">Search</label>
|
|
3
|
+
<div class="ef-search__control">
|
|
4
|
+
<input id="search-query" name="q" type="search" placeholder="Search records" autocomplete="off">
|
|
5
|
+
<button type="button" class="ef-search__clear">Clear</button>
|
|
6
|
+
</div>
|
|
7
|
+
<p class="ef-search__status" role="status">24 results</p>
|
|
8
|
+
</form>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<fieldset class="ef-field">
|
|
2
|
+
<legend class="ef-field__label">Density</legend>
|
|
3
|
+
<div class="ef-segmented">
|
|
4
|
+
<label class="ef-segment">
|
|
5
|
+
<input type="radio" name="density" value="comfortable" checked>
|
|
6
|
+
<span>Comfortable</span>
|
|
7
|
+
</label>
|
|
8
|
+
<label class="ef-segment">
|
|
9
|
+
<input type="radio" name="density" value="compact">
|
|
10
|
+
<span>Compact</span>
|
|
11
|
+
</label>
|
|
12
|
+
</div>
|
|
13
|
+
</fieldset>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<label class="ef-select-field">
|
|
2
|
+
<span class="ef-field__label">Deployment region</span>
|
|
3
|
+
<span class="ef-select" data-ef-motion-weight="standard">
|
|
4
|
+
<select class="ef-select__input" name="region" aria-describedby="region-description">
|
|
5
|
+
<option value="us-east">US East</option>
|
|
6
|
+
<option value="us-west">US West</option>
|
|
7
|
+
<option value="eu-west">Europe West</option>
|
|
8
|
+
</select>
|
|
9
|
+
<span class="ef-select__indicator" aria-hidden="true"></span>
|
|
10
|
+
</span>
|
|
11
|
+
<span class="ef-field__description" id="region-description">Choose where this workload will run.</span>
|
|
12
|
+
</label>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<fieldset class="ef-semantic-differential">
|
|
2
|
+
<legend class="ef-semantic-differential__legend">How would you characterize the current process?</legend>
|
|
3
|
+
|
|
4
|
+
<div class="ef-semantic-differential__endpoints" aria-hidden="true">
|
|
5
|
+
<span>Highly manual</span>
|
|
6
|
+
<span>Highly automated</span>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<div class="ef-semantic-differential__scale">
|
|
10
|
+
<label><input type="radio" name="automation-level" value="1" required><span aria-hidden="true">1</span><span class="ef-sr-only">Highly manual, position 1 of 7</span></label>
|
|
11
|
+
<label><input type="radio" name="automation-level" value="2"><span aria-hidden="true">2</span><span class="ef-sr-only">Position 2 of 7</span></label>
|
|
12
|
+
<label><input type="radio" name="automation-level" value="3"><span aria-hidden="true">3</span><span class="ef-sr-only">Position 3 of 7</span></label>
|
|
13
|
+
<label><input type="radio" name="automation-level" value="4"><span aria-hidden="true">4</span><span class="ef-sr-only">Position 4 of 7</span></label>
|
|
14
|
+
<label><input type="radio" name="automation-level" value="5"><span aria-hidden="true">5</span><span class="ef-sr-only">Position 5 of 7</span></label>
|
|
15
|
+
<label><input type="radio" name="automation-level" value="6"><span aria-hidden="true">6</span><span class="ef-sr-only">Position 6 of 7</span></label>
|
|
16
|
+
<label><input type="radio" name="automation-level" value="7"><span aria-hidden="true">7</span><span class="ef-sr-only">Highly automated, position 7 of 7</span></label>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="ef-semantic-differential__endpoints ef-semantic-differential__endpoints--mobile">
|
|
20
|
+
<span>1 = Highly manual</span>
|
|
21
|
+
<span>7 = Highly automated</span>
|
|
22
|
+
</div>
|
|
23
|
+
</fieldset>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<section class="ef-skeleton" aria-busy="true" aria-label="Loading content">
|
|
2
|
+
<span class="ef-visually-hidden">Loading content</span>
|
|
3
|
+
<div class="ef-skeleton__line ef-skeleton__line--title"></div>
|
|
4
|
+
<div class="ef-skeleton__line"></div>
|
|
5
|
+
<div class="ef-skeleton__line"></div>
|
|
6
|
+
<div class="ef-skeleton__line ef-skeleton__line--short"></div>
|
|
7
|
+
</section>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<label class="ef-slider">
|
|
2
|
+
<span class="ef-slider__header">
|
|
3
|
+
<span class="ef-slider__label">Volume</span>
|
|
4
|
+
</span>
|
|
5
|
+
<input class="ef-slider__input" type="range" name="volume" min="0" max="100" step="5" value="25">
|
|
6
|
+
<span class="ef-slider__bounds" aria-hidden="true">
|
|
7
|
+
<span>0</span>
|
|
8
|
+
<span>100</span>
|
|
9
|
+
</span>
|
|
10
|
+
<span class="ef-field__description">Adjust the output level.</span>
|
|
11
|
+
</label>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<fieldset class="ef-special-choice-group">
|
|
2
|
+
<legend class="ef-field__label">Response status</legend>
|
|
3
|
+
<p class="ef-field__description">Use these only when they are semantically different from the response scale.</p>
|
|
4
|
+
|
|
5
|
+
<div class="ef-special-choices">
|
|
6
|
+
<label class="ef-special-choice">
|
|
7
|
+
<input type="radio" name="response-status" value="unknown">
|
|
8
|
+
<span>Don't know</span>
|
|
9
|
+
</label>
|
|
10
|
+
<label class="ef-special-choice">
|
|
11
|
+
<input type="radio" name="response-status" value="na">
|
|
12
|
+
<span>Not applicable</span>
|
|
13
|
+
</label>
|
|
14
|
+
</div>
|
|
15
|
+
</fieldset>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<div class="ef-status-lozenge-set" aria-label="Status examples">
|
|
2
|
+
<span class="ef-status-lozenge" data-state="ok">Confirmed</span>
|
|
3
|
+
<span class="ef-status-lozenge" data-state="attention">Needs attention</span>
|
|
4
|
+
<span class="ef-status-lozenge" data-state="unknown">Unknown</span>
|
|
5
|
+
<span class="ef-status-lozenge" data-state="blocked">Blocked</span>
|
|
6
|
+
</div>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<div class="ef-survey-progress">
|
|
2
|
+
<div class="ef-survey-progress__header">
|
|
3
|
+
<span class="ef-survey-progress__label" id="survey-progress-label">Survey progress</span>
|
|
4
|
+
<span class="ef-survey-progress__value">Question 3 of 12</span>
|
|
5
|
+
</div>
|
|
6
|
+
<progress class="ef-survey-progress__bar" value="3" max="12" aria-labelledby="survey-progress-label">25%</progress>
|
|
7
|
+
<p class="ef-survey-progress__context">Section 1 of 4 · Governance</p>
|
|
8
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<label class="ef-switch" data-ef-motion-weight="standard">
|
|
2
|
+
<input
|
|
3
|
+
class="ef-switch__input"
|
|
4
|
+
type="checkbox"
|
|
5
|
+
role="switch"
|
|
6
|
+
name="notifications"
|
|
7
|
+
value="enabled"
|
|
8
|
+
aria-describedby="notifications-description">
|
|
9
|
+
<span class="ef-switch__track" aria-hidden="true"></span>
|
|
10
|
+
<span class="ef-switch__text">
|
|
11
|
+
<span class="ef-switch__label">Notifications</span>
|
|
12
|
+
<span class="ef-switch__description" id="notifications-description">Receive operational updates.</span>
|
|
13
|
+
</span>
|
|
14
|
+
</label>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<fieldset class="ef-symbol-rating">
|
|
2
|
+
<legend class="ef-symbol-rating__legend">How satisfied are you with the release process?</legend>
|
|
3
|
+
|
|
4
|
+
<div class="ef-symbol-rating__options">
|
|
5
|
+
<label class="ef-symbol-rating__option">
|
|
6
|
+
<input type="radio" name="release-satisfaction" value="1" required>
|
|
7
|
+
<span class="ef-symbol-rating__symbol" aria-hidden="true">★</span>
|
|
8
|
+
<span class="ef-sr-only">1 of 5, very dissatisfied</span>
|
|
9
|
+
</label>
|
|
10
|
+
<label class="ef-symbol-rating__option">
|
|
11
|
+
<input type="radio" name="release-satisfaction" value="2">
|
|
12
|
+
<span class="ef-symbol-rating__symbol" aria-hidden="true">★</span>
|
|
13
|
+
<span class="ef-sr-only">2 of 5, dissatisfied</span>
|
|
14
|
+
</label>
|
|
15
|
+
<label class="ef-symbol-rating__option">
|
|
16
|
+
<input type="radio" name="release-satisfaction" value="3">
|
|
17
|
+
<span class="ef-symbol-rating__symbol" aria-hidden="true">★</span>
|
|
18
|
+
<span class="ef-sr-only">3 of 5, neutral</span>
|
|
19
|
+
</label>
|
|
20
|
+
<label class="ef-symbol-rating__option">
|
|
21
|
+
<input type="radio" name="release-satisfaction" value="4">
|
|
22
|
+
<span class="ef-symbol-rating__symbol" aria-hidden="true">★</span>
|
|
23
|
+
<span class="ef-sr-only">4 of 5, satisfied</span>
|
|
24
|
+
</label>
|
|
25
|
+
<label class="ef-symbol-rating__option">
|
|
26
|
+
<input type="radio" name="release-satisfaction" value="5">
|
|
27
|
+
<span class="ef-symbol-rating__symbol" aria-hidden="true">★</span>
|
|
28
|
+
<span class="ef-sr-only">5 of 5, very satisfied</span>
|
|
29
|
+
</label>
|
|
30
|
+
</div>
|
|
31
|
+
</fieldset>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<section class="ef-tabs" data-ef-motion-weight="light">
|
|
2
|
+
<div class="ef-tabs__list" role="tablist" aria-label="Record sections">
|
|
3
|
+
<button type="button" role="tab" id="tab-overview" aria-selected="true" aria-controls="panel-overview">Overview</button>
|
|
4
|
+
<button type="button" role="tab" id="tab-history" aria-selected="false" aria-controls="panel-history">History</button>
|
|
5
|
+
<button type="button" role="tab" id="tab-evidence" aria-selected="false" aria-controls="panel-evidence">Evidence</button>
|
|
6
|
+
</div>
|
|
7
|
+
<section class="ef-tabs__panel" id="panel-overview" role="tabpanel" aria-labelledby="tab-overview">
|
|
8
|
+
<h3>Overview</h3>
|
|
9
|
+
<p>Current record summary and legal actions supplied by the application.</p>
|
|
10
|
+
</section>
|
|
11
|
+
</section>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<ol class="ef-timeline" aria-label="Activity history">
|
|
2
|
+
<li class="ef-timeline__item">
|
|
3
|
+
<div class="ef-timeline__marker" aria-hidden="true"></div>
|
|
4
|
+
<div class="ef-timeline__content">
|
|
5
|
+
<div class="ef-timeline__meta"><time datetime="2026-09-22T14:10:00Z">Sep 22 · 14:10</time><span class="ef-status-lozenge" data-state="ok">Confirmed</span></div>
|
|
6
|
+
<h3>Invoice issued</h3>
|
|
7
|
+
<p>Invoice INV-1042 was issued after review.</p>
|
|
8
|
+
<small>Source: billing workflow</small>
|
|
9
|
+
</div>
|
|
10
|
+
</li>
|
|
11
|
+
<li class="ef-timeline__item">
|
|
12
|
+
<div class="ef-timeline__marker" aria-hidden="true"></div>
|
|
13
|
+
<div class="ef-timeline__content">
|
|
14
|
+
<div class="ef-timeline__meta"><time datetime="2026-09-21T19:32:00Z">Sep 21 · 19:32</time><span class="ef-status-lozenge">Draft</span></div>
|
|
15
|
+
<h3>Draft updated</h3>
|
|
16
|
+
<p>Payment terms and line descriptions changed.</p>
|
|
17
|
+
</div>
|
|
18
|
+
</li>
|
|
19
|
+
</ol>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<button type="button" popovertarget="save-notification" popovertargetaction="show">Show notification</button>
|
|
2
|
+
<aside class="ef-toast" id="save-notification" popover="manual" role="status" data-ef-motion-weight="standard">
|
|
3
|
+
<div class="ef-toast__header">
|
|
4
|
+
<div>
|
|
5
|
+
<h3 class="ef-toast__title">Changes saved</h3>
|
|
6
|
+
<p>The current draft is stored.</p>
|
|
7
|
+
</div>
|
|
8
|
+
<button type="button" popovertarget="save-notification" popovertargetaction="hide" aria-label="Dismiss notification">Close</button>
|
|
9
|
+
</div>
|
|
10
|
+
</aside>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<section class="ef-understanding" aria-labelledby="understanding-title">
|
|
2
|
+
<header class="ef-understanding__header">
|
|
3
|
+
<div>
|
|
4
|
+
<span class="ef-component-kicker">Understanding</span>
|
|
5
|
+
<h2 id="understanding-title">I found 4 things</h2>
|
|
6
|
+
<p>Review what the application understood before any consequential transition.</p>
|
|
7
|
+
</div>
|
|
8
|
+
<span class="ef-status-lozenge" data-state="attention">1 question</span>
|
|
9
|
+
</header>
|
|
10
|
+
<ol class="ef-understanding__items">
|
|
11
|
+
<li class="ef-understanding__item" data-ef-state="accepted">
|
|
12
|
+
<span class="ef-understanding__state">Understood</span>
|
|
13
|
+
<div><strong>Medication change</strong><p>Medication increased to 40 mg.</p></div>
|
|
14
|
+
<button type="button">Source</button>
|
|
15
|
+
</li>
|
|
16
|
+
<li class="ef-understanding__item" data-ef-state="accepted">
|
|
17
|
+
<span class="ef-understanding__state">Understood</span>
|
|
18
|
+
<div><strong>Symptom</strong><p>Ankle swelling returned.</p></div>
|
|
19
|
+
<button type="button">Source</button>
|
|
20
|
+
</li>
|
|
21
|
+
<li class="ef-understanding__item" data-ef-state="unknown">
|
|
22
|
+
<span class="ef-understanding__state">Unknown</span>
|
|
23
|
+
<div><strong>Medication frequency</strong><p>The dose frequency was not supplied.</p></div>
|
|
24
|
+
<button type="button">Answer</button>
|
|
25
|
+
</li>
|
|
26
|
+
<li class="ef-understanding__item" data-ef-state="accepted">
|
|
27
|
+
<span class="ef-understanding__state">Understood</span>
|
|
28
|
+
<div><strong>Visit</strong><p>Dr. Smith visit occurred yesterday.</p></div>
|
|
29
|
+
<button type="button">Source</button>
|
|
30
|
+
</li>
|
|
31
|
+
</ol>
|
|
32
|
+
</section>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Feature Manifest — understanding review pattern
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Present an application's proposed understanding of user input before a consequential operation, including accepted, unknown, conflicting, or unresolved items.
|
|
6
|
+
|
|
7
|
+
## Ownership
|
|
8
|
+
|
|
9
|
+
- Item meaning/state: application/Ordo.
|
|
10
|
+
- Presentation and responsive layout: Forma.
|
|
11
|
+
- Actions: application/Limen.
|
|
12
|
+
- Capabilities / authority: none. Forma never decides that an item is accepted, blocking, or resolved.
|
|
13
|
+
|
|
14
|
+
## Interfaces
|
|
15
|
+
|
|
16
|
+
- Inbound: item label, summary, explicit textual state, optional source/review actions.
|
|
17
|
+
- Outbound: native button/link events.
|
|
18
|
+
|
|
19
|
+
## Modification boundaries
|
|
20
|
+
|
|
21
|
+
Every state must remain textual and non-color dependent. Source and correction paths must remain reachable on mobile.
|
|
22
|
+
|
|
23
|
+
## Maintenance
|
|
24
|
+
|
|
25
|
+
- Owner: Echelon Foundry design system
|
|
26
|
+
- Introduced: 2026-09-23
|