eidotter 0.40.2 → 0.41.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.md +13 -5
- package/dist/components/Accordion/components/AccordionFill.js +1 -1
- package/dist/components/Accordion/components/Section.js +1 -1
- package/dist/components/Alert/components/Alert.js +3 -2
- package/dist/components/Brand/components/Logo.d.ts +7 -7
- package/dist/components/Brand/components/Logo.js +10 -15
- package/dist/components/Brand/components/LogoGeometry.d.ts +28 -0
- package/dist/components/Brand/components/LogoGeometry.js +78 -0
- package/dist/components/Brand/components/Mark.d.ts +13 -6
- package/dist/components/Brand/components/Mark.js +14 -10
- package/dist/components/Brand/components/Wordmark.js +1 -1
- package/dist/components/Brand/components/markGeometry.d.ts +15 -0
- package/dist/components/Brand/components/markGeometry.js +20 -7
- package/dist/components/Breadcrumb/components/Breadcrumb.js +2 -2
- package/dist/components/Button/components/Button.js +1 -1
- package/dist/components/Card/components/Card.d.ts +5 -0
- package/dist/components/Card/components/Card.js +8 -2
- package/dist/components/CmdPalette/components/CmdPalette.d.ts +4 -3
- package/dist/components/CmdPalette/components/CmdPalette.js +17 -12
- package/dist/components/DecayStrip/components/DecayStrip.js +6 -1
- package/dist/components/DosDialog/components/DosDialog.d.ts +77 -0
- package/dist/components/DosDialog/components/DosDialog.js +59 -0
- package/dist/components/DosDialog/components/index.d.ts +2 -0
- package/dist/components/DosDialog/components/index.js +1 -0
- package/dist/components/DosDialog/index.d.ts +2 -0
- package/dist/components/DosDialog/index.js +1 -0
- package/dist/components/DosFigure/components/DosFigure.d.ts +2 -2
- package/dist/components/DosFigure/components/DosFigure.js +14 -7
- package/dist/components/DosWindow/components/DosWindow.d.ts +39 -0
- package/dist/components/DosWindow/components/DosWindow.js +23 -0
- package/dist/components/DosWindow/components/index.d.ts +2 -0
- package/dist/components/DosWindow/components/index.js +1 -0
- package/dist/components/DosWindow/index.d.ts +2 -0
- package/dist/components/DosWindow/index.js +1 -0
- package/dist/components/FilterBar/components/FilterBar.d.ts +7 -4
- package/dist/components/Footer/components/Footer.js +1 -1
- package/dist/components/Gauge/components/Gauge.js +19 -2
- package/dist/components/Header/components/Header.d.ts +29 -1
- package/dist/components/Header/components/Header.js +20 -5
- package/dist/components/Icon/components/Icon.d.ts +2 -0
- package/dist/components/Icon/components/Icon.js +5 -1
- package/dist/components/IconButton/components/IconButton.d.ts +44 -0
- package/dist/components/IconButton/components/IconButton.js +19 -0
- package/dist/components/IconButton/components/index.d.ts +2 -0
- package/dist/components/IconButton/components/index.js +1 -0
- package/dist/components/IconButton/index.d.ts +2 -0
- package/dist/components/IconButton/index.js +1 -0
- package/dist/components/Input/components/Input.js +1 -1
- package/dist/components/Lightbox/components/Lightbox.d.ts +10 -4
- package/dist/components/Lightbox/components/Lightbox.js +19 -11
- package/dist/components/Meter/components/Meter.js +7 -3
- package/dist/components/Meter/components/MeterGroup.js +3 -3
- package/dist/components/Modal/components/Modal.d.ts +18 -6
- package/dist/components/Modal/components/Modal.js +18 -9
- package/dist/components/Nav/components/Nav.js +5 -4
- package/dist/components/Notification/components/Notification.js +3 -2
- package/dist/components/Progress/components/Progress.js +8 -6
- package/dist/components/SeriesBars/components/SeriesBars.js +9 -8
- package/dist/components/Tag/components/Tag.d.ts +8 -1
- package/dist/components/Tag/components/Tag.js +5 -5
- package/dist/components/VitalsStrip/components/VitalsStrip.js +10 -7
- package/dist/components/registry.js +221 -19
- package/dist/eidotter.css +1 -1
- package/dist/hooks/useAnimatedDismiss.js +5 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.es.js +2174 -1600
- package/dist/index.umd.js +1 -1
- package/llms.txt +15 -7
- package/migrations/0.41.0.md +881 -0
- package/migrations/README.md +46 -0
- package/package.json +10 -2
- package/public/favicon.svg +1 -1
- package/src/styles/dos-utilities.css +6 -1
- package/src/styles/shadcn.css +52 -17
- package/src/styles/theme.amber-mono.css +4 -2
- package/src/styles/theme.amber-paper.css +106 -0
- package/src/styles/theme.cga-amber.css +3 -1
- package/src/styles/theme.cga-mode4-p0.css +3 -1
- package/src/styles/theme.cga-mode4-p1.css +3 -1
- package/src/styles/theme.cga-mode5.css +3 -1
- package/src/styles/theme.light.css +3 -1
- package/src/styles/tokens.css +5 -1
- package/tailwind.preset.cjs +23 -1
- package/dist/components/Brand/components/markGeometry.test.d.ts +0 -1
- package/dist/components/Connector/components/connectorGeometry.test.d.ts +0 -1
- package/dist/components/DecayStrip/components/resample.test.d.ts +0 -1
- package/dist/components/TimelineContainer/components/timelineUtils.test.d.ts +0 -1
- package/dist/components/TimelineContainer/components/useDrillDown.test.d.ts +0 -1
- package/dist/components/TimelineContainer/components/useSelection.test.d.ts +0 -1
- package/dist/components/TimelineContainer/components/useZoom.test.d.ts +0 -1
- package/dist/hooks/useTextScramble.test.d.ts +0 -1
- package/dist/hooks/useThemePortal.test.d.ts +0 -1
- package/dist/utils/health/formatValue.test.d.ts +0 -1
- package/dist/utils/health/healthPatterns.test.d.ts +0 -1
- package/dist/utils/health/resolveBand.test.d.ts +0 -1
- package/dist/utils/isSafeHref.test.d.ts +0 -1
- package/dist/utils/isSafeUrl.test.d.ts +0 -1
|
@@ -22,18 +22,32 @@ export const componentRegistry = {
|
|
|
22
22
|
consumers: ['rizomorf', 'steuerdash'],
|
|
23
23
|
since: '0.2.0',
|
|
24
24
|
variants: {
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
28
|
-
'
|
|
29
|
-
'
|
|
30
|
-
'
|
|
25
|
+
'color:brand': { description: 'Brand-accent message' },
|
|
26
|
+
'color:gray': { description: 'Neutral gray message' },
|
|
27
|
+
'color:default': { description: 'Default informational message' },
|
|
28
|
+
'color:error': { description: 'Error message' },
|
|
29
|
+
'color:warning': { description: 'Warning notice' },
|
|
30
|
+
'color:success': { description: 'Success confirmation' },
|
|
31
|
+
'type:info': { description: 'Informational message', deprecated: '0.16.0', since: '0.2.0', usedBy: ['rizomorf'] },
|
|
32
|
+
'type:success': { description: 'Success confirmation', deprecated: '0.16.0', since: '0.2.0', usedBy: ['steuerdash'] },
|
|
33
|
+
'type:warning': { description: 'Warning notice', deprecated: '0.16.0', since: '0.2.0', usedBy: ['rizomorf', 'steuerdash'] },
|
|
34
|
+
'type:error': { description: 'Error message', deprecated: '0.16.0', since: '0.2.0', usedBy: ['steuerdash'] },
|
|
35
|
+
'type:default': { description: 'Deprecated: neutral message (use color)', deprecated: '0.16.0' },
|
|
36
|
+
'type:brand': { description: 'Deprecated: brand message (use color)', deprecated: '0.16.0' },
|
|
37
|
+
'size:floating': { description: 'Card-style floating alert (default)' },
|
|
38
|
+
'size:full-width': { description: 'Banner-style full-width alert' },
|
|
39
|
+
'size:sm': { description: 'Compact alert (maps to floating)' },
|
|
40
|
+
'size:lg': { description: 'Large alert (maps to floating)' },
|
|
41
|
+
'size:small': { description: 'Compact alert for inline contexts', deprecated: '0.16.0', since: '0.2.0' },
|
|
42
|
+
'size:large': { description: 'Large alert (maps to floating)', deprecated: '0.16.0', since: '0.2.0' },
|
|
31
43
|
},
|
|
32
44
|
platforms: {
|
|
33
45
|
react: { path: 'src/components/Alert', status: 'canonical' },
|
|
34
46
|
swiftui: { status: 'planned' },
|
|
35
47
|
},
|
|
36
48
|
changelog: [
|
|
49
|
+
{ version: '0.41.0', type: 'changed', description: 'Dismiss control is the shared IconButton (md 36x36, pixel X, outline at rest, hover invert); hand-rolled .eidotter-alert__close styles reduced to placement (DMNC-1592)' },
|
|
50
|
+
{ version: '0.41.0', type: 'changed', description: 'Square corners (4px radius removed); enter/exit use the shared compositor-only eidotter-pop-in/out instead of filter-based alert-enter/exit (DMNC-1592)' },
|
|
37
51
|
{ version: '0.8.0', type: 'changed', description: 'Design-craft animation polish with phosphor enter effects' },
|
|
38
52
|
{ version: '0.7.0', type: 'changed', description: 'Replace text-primary with cga-amber for theme consistency' },
|
|
39
53
|
{ version: '0.6.0', type: 'changed', description: 'Fix icon alignment and add prefers-contrast support' },
|
|
@@ -51,6 +65,7 @@ export const componentRegistry = {
|
|
|
51
65
|
swiftui: { status: 'planned' },
|
|
52
66
|
},
|
|
53
67
|
changelog: [
|
|
68
|
+
{ version: '0.41.0', type: 'changed', description: 'Keyboard focus ring is a 2px amber outline at 2px offset (was a flush box-shadow invisible on the amber expanded header in amber-mono); title uses the text-dos-text-base token (DMNC-1436, DMNC-1579)' },
|
|
54
69
|
{ version: '0.30.0', type: 'changed', description: 'A11y keyboard focus fixes for accordion trigger' },
|
|
55
70
|
{ version: '0.19.0', type: 'changed', description: 'Remove 500px expand cap — animate grid-template-rows to natural height' },
|
|
56
71
|
{ version: '0.16.0', type: 'changed', description: 'Migrate to Tailwind-first (Wave 3 — Accordion, Footer, Tabs, FilterBar)' },
|
|
@@ -69,6 +84,7 @@ export const componentRegistry = {
|
|
|
69
84
|
swiftui: { status: 'planned' },
|
|
70
85
|
},
|
|
71
86
|
changelog: [
|
|
87
|
+
{ version: '0.41.0', type: 'changed', description: 'Root size uses the text-dos-text-base token instead of a stock Tailwind size (DMNC-1579)' },
|
|
72
88
|
{ version: '0.16.0', type: 'changed', description: 'Tailwind-first pass alongside Accordion migration' },
|
|
73
89
|
{ version: '0.4.0', type: 'added', description: 'Initial AccordionFill — array-driven Section list' },
|
|
74
90
|
],
|
|
@@ -84,14 +100,25 @@ export const componentRegistry = {
|
|
|
84
100
|
'variant:error': { description: 'Red error/critical indicator', since: '0.3.0', usedBy: ['steuerdash'] },
|
|
85
101
|
'variant:info': { description: 'Blue informational indicator', since: '0.3.0' },
|
|
86
102
|
'variant:accent': { description: 'Theme accent color badge', since: '0.3.0', usedBy: ['rizomorf'] },
|
|
87
|
-
'
|
|
88
|
-
'
|
|
103
|
+
'variant:brand': { description: 'Alias of accent' },
|
|
104
|
+
'variant:gray': { description: 'Alias of default' },
|
|
105
|
+
'variant:blue': { description: 'Alias of info' },
|
|
106
|
+
'variant:indigo': { description: 'Alias of info' },
|
|
107
|
+
'variant:purple': { description: 'Alias of info' },
|
|
108
|
+
'variant:pink': { description: 'Alias of error' },
|
|
109
|
+
'variant:orange': { description: 'Alias of warning' },
|
|
110
|
+
'size:sm': { description: 'Compact inline badge' },
|
|
111
|
+
'size:md': { description: 'Standard badge size' },
|
|
112
|
+
'size:lg': { description: 'Large badge' },
|
|
113
|
+
'size:small': { description: 'Compact inline badge', deprecated: '0.16.0', since: '0.3.0' },
|
|
114
|
+
'size:medium': { description: 'Standard badge size', deprecated: '0.16.0', since: '0.3.0' },
|
|
89
115
|
},
|
|
90
116
|
platforms: {
|
|
91
117
|
react: { path: 'src/components/Badge', status: 'canonical' },
|
|
92
118
|
swiftui: { status: 'planned' },
|
|
93
119
|
},
|
|
94
120
|
changelog: [
|
|
121
|
+
{ version: '0.41.0', type: 'changed', description: 'Enter animation uses the shared eidotter-pop-in keyframe (badge-enter removed, DMNC-1592)' },
|
|
95
122
|
{ version: '0.8.0', type: 'changed', description: 'Design-craft animation polish with phosphor enter keyframes' },
|
|
96
123
|
{ version: '0.7.0', type: 'changed', description: 'Replace text-primary with cga-amber' },
|
|
97
124
|
{ version: '0.5.0', type: 'changed', description: 'Fix text vertical alignment for pixel fonts' },
|
|
@@ -108,6 +135,7 @@ export const componentRegistry = {
|
|
|
108
135
|
swiftui: { status: 'planned' },
|
|
109
136
|
},
|
|
110
137
|
changelog: [
|
|
138
|
+
{ version: '0.41.0', type: 'changed', description: '16px body floor (text-dos-text-base), tracking 0.1em, no wide-container size override; current page item uses text-dos-text-primary so it is distinguishable from links (DMNC-1579)' },
|
|
111
139
|
{ version: '0.39.0', type: 'changed', description: 'Sanitize href via shared isSafeHref — unsafe schemes (javascript:, data:, …) render the label without an anchor' },
|
|
112
140
|
{ version: '0.16.0', type: 'changed', description: 'Migrate to Tailwind-first (Wave 2 — Separator, Stat, Breadcrumb, Progress)' },
|
|
113
141
|
{ version: '0.9.0', type: 'changed', description: 'Fix trail links invisible on dark backgrounds' },
|
|
@@ -121,11 +149,18 @@ export const componentRegistry = {
|
|
|
121
149
|
variants: {
|
|
122
150
|
'variant:primary': { description: 'Primary CTA with amber background', since: '0.2.0', usedBy: ['spacewar', 'rizomorf', 'pomodoke-calendar', 'steuerdash'] },
|
|
123
151
|
'variant:secondary': { description: 'Secondary action with border only', since: '0.2.0', usedBy: ['rizomorf', 'steuerdash'] },
|
|
152
|
+
'variant:tertiary': { description: 'Lower-emphasis action between secondary and ghost' },
|
|
153
|
+
'variant:destructive': { description: 'Destructive action; honest red under colour themes, amber-mono by default' },
|
|
124
154
|
'variant:ghost': { description: 'Minimal button with hover reveal', since: '0.2.0', usedBy: ['rizomorf'] },
|
|
125
155
|
'variant:link': { description: 'Inline link-style button', since: '0.2.0', usedBy: ['rizomorf'] },
|
|
126
|
-
'size:
|
|
127
|
-
'size:
|
|
128
|
-
'size:
|
|
156
|
+
'size:xs': { description: 'Extra-compact 1.5rem min-height (24px)' },
|
|
157
|
+
'size:sm': { description: 'Compact 28px min-height' },
|
|
158
|
+
'size:md': { description: 'Standard 32px min-height' },
|
|
159
|
+
'size:lg': { description: 'Prominent 40px min-height' },
|
|
160
|
+
'size:xl': { description: 'Extra-large 44px min-height' },
|
|
161
|
+
'size:small': { description: 'Compact 1.5rem min-height', deprecated: '0.16.0', since: '0.2.0' },
|
|
162
|
+
'size:medium': { description: 'Standard 2rem min-height', deprecated: '0.16.0', since: '0.2.0' },
|
|
163
|
+
'size:large': { description: 'Prominent 2.5rem min-height', deprecated: '0.16.0', since: '0.2.0' },
|
|
129
164
|
},
|
|
130
165
|
platforms: {
|
|
131
166
|
react: { path: 'src/components/Button', status: 'canonical' },
|
|
@@ -133,6 +168,7 @@ export const componentRegistry = {
|
|
|
133
168
|
spritekit: { status: 'token-only', note: 'Spacewar uses tokens only, no UIKit/SwiftUI button' },
|
|
134
169
|
},
|
|
135
170
|
changelog: [
|
|
171
|
+
{ version: '0.41.0', type: 'changed', description: 'Loading indicator uses the shared stepped blink keyframe (blink-loading removed, DMNC-1592)' },
|
|
136
172
|
{ version: '0.11.0', type: 'changed', description: 'Convert font-size to rem tokens for WCAG SC 1.4.4' },
|
|
137
173
|
{ version: '0.8.0', type: 'changed', description: 'Design-craft animation polish across all variants' },
|
|
138
174
|
{ version: '0.7.0', type: 'changed', description: 'Increase font size and weight for readability' },
|
|
@@ -140,6 +176,7 @@ export const componentRegistry = {
|
|
|
140
176
|
{ version: '0.5.0', type: 'changed', description: 'Fix secondary label visibility in pressed state' },
|
|
141
177
|
{ version: '0.4.0', type: 'changed', description: 'Add CRT phosphor interaction states for primary variant' },
|
|
142
178
|
{ version: '0.2.0', type: 'added', description: 'Initial Button with primary/secondary/ghost/link variants' },
|
|
179
|
+
{ version: '0.41.0', type: 'changed', description: 'Fix: keyboard focus-visible ring now renders (explicit outline-solid; outline-none had cancelled it under Tailwind v4) (DMNC-1436)' },
|
|
143
180
|
],
|
|
144
181
|
},
|
|
145
182
|
Card: {
|
|
@@ -160,6 +197,8 @@ export const componentRegistry = {
|
|
|
160
197
|
swiftui: { status: 'planned' },
|
|
161
198
|
},
|
|
162
199
|
changelog: [
|
|
200
|
+
{ version: '0.41.0', type: 'changed', description: 'Built on DosWindow: the title header becomes the window strip (dark, yellow xs uppercase title with ▸ marker, dim-amber rule; was a brand-dim bar with dark md text) and the footer the window footer (dim-amber rule, no secondary fill); elevated is the plain window frame (brand border + --shadow-drop) instead of the near-black border and 4px offset shadow; glow keeps its glow; props unchanged (DMNC-1592)' },
|
|
201
|
+
{ version: '0.41.0', type: 'changed', description: 'Enter animation uses the shared eidotter-fade-in keyframe (eidotter-card-enter removed, DMNC-1592)' },
|
|
163
202
|
{ version: '0.11.0', type: 'changed', description: 'Convert font-size to rem tokens for WCAG SC 1.4.4' },
|
|
164
203
|
{ version: '0.8.0', type: 'changed', description: 'Design-craft animation polish with phosphor enter effects' },
|
|
165
204
|
{ version: '0.7.0', type: 'changed', description: 'Replace text-primary with cga-amber' },
|
|
@@ -205,7 +244,7 @@ export const componentRegistry = {
|
|
|
205
244
|
origin: 'eidotter',
|
|
206
245
|
consumers: ['rizomorf'],
|
|
207
246
|
since: '0.13.0',
|
|
208
|
-
originNote: 'Thin wrapper around pixelarticons (MIT) + custom PixelX for Close —
|
|
247
|
+
originNote: 'Thin wrapper around pixelarticons (MIT) + custom PixelX for Close — 14 public names, ICON_MAP',
|
|
209
248
|
variants: {
|
|
210
249
|
'name:Info': { description: 'Informational circle-i', since: '0.13.0', usedBy: ['rizomorf'] },
|
|
211
250
|
'name:Warning': { description: 'Warning triangle', since: '0.13.0', usedBy: ['rizomorf'] },
|
|
@@ -215,6 +254,8 @@ export const componentRegistry = {
|
|
|
215
254
|
'name:Close': { description: 'Custom pixel-art X mark (no pixelarticons glyph)', since: '0.19.0', usedBy: ['rizomorf'] },
|
|
216
255
|
'name:Chevron Up': { description: 'Up caret', since: '0.13.0' },
|
|
217
256
|
'name:Chevron Down': { description: 'Down caret', since: '0.13.0' },
|
|
257
|
+
'name:Chevron Left': { description: 'Left caret (IconButton prev)', since: '0.41.0' },
|
|
258
|
+
'name:Chevron Right': { description: 'Right caret (IconButton next)', since: '0.41.0' },
|
|
218
259
|
'name:App': { description: 'Grid/app launcher', since: '0.13.0' },
|
|
219
260
|
'name:Cancel': { description: 'Minus glyph — window minimize control', since: '0.13.0' },
|
|
220
261
|
'name:Fullscreen': { description: 'Expand to fullscreen', since: '0.13.0' },
|
|
@@ -226,6 +267,7 @@ export const componentRegistry = {
|
|
|
226
267
|
react: { path: 'src/components/Icon', status: 'canonical' },
|
|
227
268
|
},
|
|
228
269
|
changelog: [
|
|
270
|
+
{ version: '0.41.0', type: 'added', description: 'Chevron Left and Chevron Right added (pixelarticons ChevronLeft/ChevronRight) for IconButton prev/next (DMNC-1592)' },
|
|
229
271
|
{ version: '0.30.0', type: 'changed', description: 'A11y: fix aria-prohibited-attr on Icon (Phase 1 audit defect)' },
|
|
230
272
|
{ version: '0.30.0', type: 'changed', description: 'Icon inherits color from context instead of hardcoding amber' },
|
|
231
273
|
{ version: '0.19.0', type: 'added', description: 'Custom pixel-art X mark for Close (pixelarticons v2 has no standalone X glyph)' },
|
|
@@ -246,13 +288,24 @@ export const componentRegistry = {
|
|
|
246
288
|
swiftui: { status: 'planned' },
|
|
247
289
|
},
|
|
248
290
|
changelog: [
|
|
291
|
+
{ version: '0.41.0', type: 'changed', description: 'Keyboard focus ring: 2px amber outline at 2px offset on focus-visible; amber-mono border.focus equals border.default so the border swap alone was invisible (DMNC-1436)' },
|
|
292
|
+
{ version: '0.41.0', type: 'changed', description: 'Label, field, description and error text use text-dos-text-base (16px body floor) instead of 12px/text-base (DMNC-1579)' },
|
|
249
293
|
{ version: '0.17.0', type: 'changed', description: 'Migrate to React Aria TextField (Wave 5)' },
|
|
250
294
|
{ version: '0.16.0', type: 'changed', description: 'Migrate to Tailwind-first (Wave 4 — Input, Modal, Nav)' },
|
|
251
295
|
{ version: '0.9.0', type: 'changed', description: 'Replace text-primary with cga-amber' },
|
|
252
296
|
{ version: '0.3.0', type: 'added', description: 'Initial Input — label, description, errorMessage, isRequired' },
|
|
253
297
|
],
|
|
254
298
|
},
|
|
255
|
-
Lightbox: {
|
|
299
|
+
Lightbox: {
|
|
300
|
+
origin: 'eidotter',
|
|
301
|
+
consumers: ['dmnctech'],
|
|
302
|
+
since: '0.22.0',
|
|
303
|
+
originNote: 'Fullscreen image viewer on the DosDialog shell. Keyboard nav, prev/next, counter, swipe.',
|
|
304
|
+
changelog: [
|
|
305
|
+
{ version: '0.41.0', type: 'changed', description: 'Close and prev/next (md 36px; pixel chevrons replacing the text arrows) are IconButtons; disabled nav opacity 0.5 (was 0.3); keyboard and swipe unchanged (DMNC-1592)' },
|
|
306
|
+
{ version: '0.41.0', type: 'changed', description: 'Rebuilt on DosDialog (size full): gains the title strip (dark, yellow title, dim-amber rule) with the [ n / N ] counter as its title and the Close icon at its end; z-index now --z-index-modal (was 60); panel pops in/out (150ms) (DMNC-1592)' },
|
|
307
|
+
],
|
|
308
|
+
},
|
|
256
309
|
Modal: {
|
|
257
310
|
origin: 'eidotter',
|
|
258
311
|
consumers: ['pomodoke-calendar'],
|
|
@@ -263,6 +316,8 @@ export const componentRegistry = {
|
|
|
263
316
|
swiftui: { status: 'planned' },
|
|
264
317
|
},
|
|
265
318
|
changelog: [
|
|
319
|
+
{ version: '0.41.0', type: 'changed', description: 'Close control is the shared IconButton (md 36x36, outline at rest, hover invert) in the strip end slot, overhanging the strip padding so the strip height is unchanged; .eidotter-modal__close styles removed (DMNC-1592)' },
|
|
320
|
+
{ version: '0.41.0', type: 'changed', description: 'Rebuilt on DosDialog: CmdPalette chrome (brand border + amber glow), title in the dark strip (yellow, dim-amber rule) with the Close icon at its end, z-index --z-index-modal, panel pops in/out (150ms); additive size and isDismissable props (DMNC-1592)' },
|
|
266
321
|
{ version: '0.18.0', type: 'changed', description: 'Normalize event handlers; replace raw <button> with AriaButton for close control' },
|
|
267
322
|
{ version: '0.17.0', type: 'changed', description: 'Migrate to React Aria ModalOverlay/Modal/Dialog (Wave 5)' },
|
|
268
323
|
{ version: '0.16.0', type: 'changed', description: 'Migrate to Tailwind-first (Wave 4 — Input, Modal, Nav)' },
|
|
@@ -284,12 +339,16 @@ export const componentRegistry = {
|
|
|
284
339
|
'trackStyle:block': { description: 'Solid block fill (default)', since: '0.3.0', usedBy: ['steuerdash'] },
|
|
285
340
|
'trackStyle:bordered': { description: 'Outline bar with fill inside', since: '0.3.0' },
|
|
286
341
|
'trackStyle:gradient': { description: 'Gradient fill for smooth visual', since: '0.3.0' },
|
|
342
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
343
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
344
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
287
345
|
},
|
|
288
346
|
platforms: {
|
|
289
347
|
react: { path: 'src/components/Progress', status: 'canonical' },
|
|
290
348
|
swiftui: { status: 'planned' },
|
|
291
349
|
},
|
|
292
350
|
changelog: [
|
|
351
|
+
{ version: '0.41.0', type: 'changed', description: 'sm/md/lg render 16/20/22px via text-dos-text-base/-sm/-md tokens (were 16/16/18px from stock Tailwind sizes) (DMNC-1579)' },
|
|
293
352
|
{ version: '0.16.0', type: 'changed', description: 'Migrate to Tailwind-first (Wave 2); deprecate size aliases small/medium/large → sm/md/lg' },
|
|
294
353
|
{ version: '0.3.0', type: 'added', description: 'Initial Progress — blocks character cells, indeterminate, showLabel, glow prop' },
|
|
295
354
|
],
|
|
@@ -320,21 +379,35 @@ export const componentRegistry = {
|
|
|
320
379
|
'mode:default': { description: 'Single-select — React Aria Select (button + popover + listbox)', since: '0.38.0', usedBy: ['steuerdash'] },
|
|
321
380
|
'searchable:true': { description: 'Type-to-filter ComboBox single-select', since: '0.38.0' },
|
|
322
381
|
'multiple:true': { description: 'Multi-select listbox; value/onChange use string arrays', since: '0.38.0' },
|
|
382
|
+
'variant:default': { description: 'Standard (valid) state' },
|
|
323
383
|
'variant:error': { description: 'Invalid state — red border + errorMessage slot', since: '0.38.0' },
|
|
324
384
|
'size:sm': { description: 'Compact trigger (28px min-height)', since: '0.38.0' },
|
|
325
385
|
'size:md': { description: 'Standard trigger (32px min-height)', since: '0.38.0', usedBy: ['steuerdash'] },
|
|
326
386
|
'size:lg': { description: 'Tall trigger (40px min-height)', since: '0.38.0' },
|
|
387
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
388
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
389
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
327
390
|
},
|
|
328
391
|
platforms: {
|
|
329
392
|
react: { path: 'src/components/Select', status: 'canonical' },
|
|
330
393
|
swiftui: { status: 'planned' },
|
|
331
394
|
},
|
|
332
395
|
changelog: [
|
|
396
|
+
{ version: '0.41.0', type: 'changed', description: 'Popover enter/exit use the shared eidotter-pop-in/out at 150ms (select-pop-in/out removed, DMNC-1592)' },
|
|
397
|
+
{ version: '0.41.0', type: 'changed', description: 'Keyboard focus ring: 2px amber outline at 2px offset on the trigger (searchable: when its input has focus-visible) (DMNC-1436)' },
|
|
333
398
|
{ version: '0.38.0', type: 'changed', description: 'Rebuild on React Aria (Select/ComboBox/ListBox) with phosphor glow; add searchable + multiple modes, label/description/error chrome, sizes. Backward-compatible value/options/onChange API (DMNC-593)' },
|
|
334
399
|
{ version: '0.36.0', type: 'added', description: 'Initial Select — native <select> MVP ported from Steuerdash (DMNC-860)' },
|
|
335
400
|
],
|
|
336
401
|
},
|
|
337
|
-
Skeleton: {
|
|
402
|
+
Skeleton: {
|
|
403
|
+
origin: 'eidotter',
|
|
404
|
+
consumers: ['dmnctech'],
|
|
405
|
+
variants: { 'variant:text': { description: 'Text rows' }, 'variant:card': { description: 'Card placeholder' }, 'variant:figure': { description: 'Figure/media placeholder' }, 'variant:timeline': { description: 'Timeline placeholder' } },
|
|
406
|
+
originNote: 'DOS/CGA loading placeholder — shade-character rows (\u2591\u2592\u2593) with CRT hum-bar band rolling top\u2192bottom (DMNC-1018)',
|
|
407
|
+
changelog: [
|
|
408
|
+
{ version: '0.41.0', type: 'changed', description: 'Reduced-motion breathing uses the shared eidotter-breathe keyframe (eidotter-skeleton-breathe removed, DMNC-1592)' },
|
|
409
|
+
],
|
|
410
|
+
},
|
|
338
411
|
Stat: {
|
|
339
412
|
origin: 'steuerdash',
|
|
340
413
|
consumers: ['steuerdash'],
|
|
@@ -347,6 +420,9 @@ export const componentRegistry = {
|
|
|
347
420
|
'trend:up': { description: 'Upward trend indicator (green arrow)', since: '0.3.0', usedBy: ['steuerdash'] },
|
|
348
421
|
'trend:down': { description: 'Downward trend indicator (red arrow)', since: '0.3.0', usedBy: ['steuerdash'] },
|
|
349
422
|
'trend:neutral': { description: 'No change indicator (muted dash)', since: '0.3.0' },
|
|
423
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
424
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
425
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
350
426
|
},
|
|
351
427
|
platforms: {
|
|
352
428
|
react: { path: 'src/components/Stat', status: 'canonical' },
|
|
@@ -391,6 +467,9 @@ export const componentRegistry = {
|
|
|
391
467
|
'size:sm': { description: 'Compact filter chips', since: '0.16.0' },
|
|
392
468
|
'size:md': { description: 'Standard filter chips', since: '0.7.0', usedBy: ['lifelines', 'rizomorf'] },
|
|
393
469
|
'size:lg': { description: 'Large filter chips for touch targets', since: '0.16.0' },
|
|
470
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
471
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
472
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
394
473
|
},
|
|
395
474
|
platforms: {
|
|
396
475
|
react: { path: 'src/components/FilterBar', status: 'canonical' },
|
|
@@ -410,14 +489,19 @@ export const componentRegistry = {
|
|
|
410
489
|
'variant:default': { description: 'Standard tag with subtle background', since: '0.7.0', usedBy: ['rizomorf'] },
|
|
411
490
|
'variant:outlined': { description: 'Border-only tag', since: '0.7.0', usedBy: ['lifelines'] },
|
|
412
491
|
'variant:filled': { description: 'Solid background tag', since: '0.7.0', usedBy: ['rizomorf', 'lifelines'] },
|
|
413
|
-
'size:
|
|
414
|
-
'size:
|
|
492
|
+
'size:sm': { description: 'Compact tag for dense layouts' },
|
|
493
|
+
'size:md': { description: 'Standard tag size' },
|
|
494
|
+
'size:lg': { description: 'Large tag' },
|
|
495
|
+
'size:small': { description: 'Compact tag for dense layouts', deprecated: '0.16.0', since: '0.7.0' },
|
|
496
|
+
'size:medium': { description: 'Standard tag size', deprecated: '0.16.0', since: '0.7.0' },
|
|
415
497
|
},
|
|
416
498
|
platforms: {
|
|
417
499
|
react: { path: 'src/components/Tag', status: 'canonical' },
|
|
418
500
|
swiftui: { status: 'planned' },
|
|
419
501
|
},
|
|
420
502
|
changelog: [
|
|
503
|
+
{ version: '0.41.0', type: 'changed', description: 'Remove control is the shared IconButton (md 36px, bare, pixel X) instead of the [x] text button; accessible name Remove <label> and tab-order rules unchanged (DMNC-1592)' },
|
|
504
|
+
{ version: '0.41.0', type: 'changed', description: 'Enter/dismiss use the shared eidotter-pop-in/out keyframes (tag-enter/exit removed, DMNC-1592)' },
|
|
421
505
|
{ version: '0.11.0', type: 'changed', description: 'Convert font-size to rem tokens for WCAG SC 1.4.4' },
|
|
422
506
|
{ version: '0.8.0', type: 'changed', description: 'Design-craft animation polish' },
|
|
423
507
|
{ version: '0.7.0', type: 'added', description: 'Initial Tag and TagGroup components' },
|
|
@@ -433,6 +517,9 @@ export const componentRegistry = {
|
|
|
433
517
|
'size:sm': { description: 'Compact tabs for dense layouts', since: '0.16.0' },
|
|
434
518
|
'size:md': { description: 'Standard tab height', since: '0.3.0', usedBy: ['steuerdash'] },
|
|
435
519
|
'size:lg': { description: 'Large touch-friendly tabs', since: '0.16.0' },
|
|
520
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
521
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
522
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
436
523
|
},
|
|
437
524
|
platforms: {
|
|
438
525
|
react: { path: 'src/components/Tabs', status: 'canonical' },
|
|
@@ -458,6 +545,9 @@ export const componentRegistry = {
|
|
|
458
545
|
'state:active': { description: 'Focused window with amber title bar', since: '0.2.0', usedBy: ['rizomorf'] },
|
|
459
546
|
'state:inactive': { description: 'Unfocused window with dimmed title bar', since: '0.2.0' },
|
|
460
547
|
'state:minimized': { description: 'Collapsed to title bar only', since: '0.2.0' },
|
|
548
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
549
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
550
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
461
551
|
},
|
|
462
552
|
platforms: {
|
|
463
553
|
react: { path: 'src/components/Terminal', status: 'canonical' },
|
|
@@ -490,11 +580,15 @@ export const componentRegistry = {
|
|
|
490
580
|
'size:sm': { description: 'Compact 8px node', since: '0.16.0' },
|
|
491
581
|
'size:md': { description: 'Standard 12px node', since: '0.4.0', usedBy: ['lifelines', 'rizomorf'] },
|
|
492
582
|
'size:lg': { description: 'Large 16px node for emphasis', since: '0.16.0' },
|
|
583
|
+
'size:small': { description: 'Deprecated alias of size:sm', deprecated: '0.16.0' },
|
|
584
|
+
'size:medium': { description: 'Deprecated alias of size:md', deprecated: '0.16.0' },
|
|
585
|
+
'size:large': { description: 'Deprecated alias of size:lg', deprecated: '0.16.0' },
|
|
493
586
|
},
|
|
494
587
|
platforms: {
|
|
495
588
|
react: { path: 'src/components/TimelineNode', status: 'canonical' },
|
|
496
589
|
},
|
|
497
590
|
changelog: [
|
|
591
|
+
{ version: '0.41.0', type: 'changed', description: 'Marker enter uses the shared eidotter-pop-in keyframe (eidotter-timeline-node-enter removed, DMNC-1592)' },
|
|
498
592
|
{ version: '0.35.0', type: 'changed', description: 'Pin marker box-sizing to content-box so dots stay on the axis line (DMNC-1090)' },
|
|
499
593
|
{ version: '0.30.0', type: 'changed', description: 'A11y: high-contrast glow gap remediation' },
|
|
500
594
|
{ version: '0.18.0', type: 'changed', description: 'Migrate BEM to Tailwind-first; switch to Flexi IBM VGA font' },
|
|
@@ -510,6 +604,7 @@ export const componentRegistry = {
|
|
|
510
604
|
react: { path: 'src/components/InlineExpand', status: 'canonical' },
|
|
511
605
|
},
|
|
512
606
|
changelog: [
|
|
607
|
+
{ version: '0.41.0', type: 'changed', description: 'Reveal fade uses the shared eidotter-fade-in keyframe (eidotter-inline-expand-fade removed, DMNC-1592)' },
|
|
513
608
|
{ version: '0.40.0', type: 'changed', description: 'True inline-flow expanded state — marker-pen wrap, trailing collapse control, inline favicon-only sources; conditional render; data-ai-skip on content + legible trigger inside AI-marked prose (DMNC-1316)' },
|
|
514
609
|
{ version: '0.30.0', type: 'changed', description: 'Fix behavioral bugs — double-toggle edge case (DMNC-1063)' },
|
|
515
610
|
{ version: '0.18.0', type: 'changed', description: 'Migrate BEM to Tailwind-first' },
|
|
@@ -583,19 +678,34 @@ export const componentRegistry = {
|
|
|
583
678
|
consumers: [],
|
|
584
679
|
originNote: 'Sticky site header composing branding link + Nav — retro/modern variants; optional context row (category badge row + returnTo pill) for cross-site shells (DMNC-1326)',
|
|
585
680
|
variants: {
|
|
681
|
+
'variant:retro': { description: 'Retro header with amber phosphor glow on the bottom border' },
|
|
682
|
+
'variant:modern': { description: 'Modern header without phosphor glow' },
|
|
586
683
|
'context:categories': { description: 'Category badge row below the main row — measurable DOM target (stable eidotter-header__categories / __category classes + data-category-key) for the Mark arm-connector (DMNC-1325)', since: '0.39.0' },
|
|
587
684
|
'context:returnTo': { description: 'Breadcrumb return pill — same-tab via linkComponent by default; reuseTab navigates via window.open(href, "rizomorf-shell") named-tab reuse', since: '0.39.0' },
|
|
588
685
|
},
|
|
589
686
|
changelog: [
|
|
687
|
+
{ version: '0.41.0', type: 'changed', description: 'Mobile Nav panel close is the shared IconButton (md 36x36, outline, hover invert) (DMNC-1592)' },
|
|
688
|
+
{ version: '0.41.0', type: 'changed', description: 'One portfolio header (DMNC-1584): retro variant now has a 1px dim-amber bottom line with a soft glow under it, brand-amber text (branding + returnTo pill, hover to bright brand amber, no text-shadow), uppercase returnTo pill; brandName without children renders the lockup by default' },
|
|
689
|
+
{ version: '0.41.0', type: 'added', description: '`brand` prop (lockup | mark | text, default lockup), `end` trailing slot (rendered once; after the desktop nav / before MENU on mobile), `skipLinkTarget` skip link (WCAG 2.4.1, off by default) (DMNC-1584)' },
|
|
690
|
+
{ version: '0.41.0', type: 'changed', description: 'Brand link uses text-dos-text-base (16px body floor) (DMNC-1579)' },
|
|
590
691
|
{ version: '0.39.0', type: 'added', description: 'Optional `context` prop — category badge row + returnTo breadcrumb pill with reuseTab named-tab navigation (DMNC-1326)' },
|
|
591
692
|
{ version: '0.39.0', type: 'changed', description: 'Sanitize brandHref via shared isSafeHref — unsafe schemes fall back to "/" (nav-item links guarded in Nav)' },
|
|
592
693
|
],
|
|
593
694
|
},
|
|
695
|
+
Nav: {
|
|
696
|
+
origin: 'eidotter',
|
|
697
|
+
consumers: [],
|
|
698
|
+
originNote: 'DesktopNav + MobileNav (MENU trigger + slide-out panel) — retro/modern variants; composed by Header',
|
|
699
|
+
changelog: [
|
|
700
|
+
{ version: '0.41.0', type: 'changed', description: 'Retro variant: desktop links, mobile panel links and the MENU trigger in brand amber with bright-brand-amber hover (no glow on the trigger); desktop and panel link labels render uppercase DOS. Modern variant unchanged (DMNC-1584)' },
|
|
701
|
+
],
|
|
702
|
+
},
|
|
594
703
|
Footer: {
|
|
595
704
|
origin: 'eidotter',
|
|
596
705
|
consumers: [],
|
|
597
706
|
originNote: 'DOS-themed footer with default legal links (Impressum + Datenschutz) for German compliance',
|
|
598
707
|
changelog: [
|
|
708
|
+
{ version: '0.41.0', type: 'changed', description: 'Root text 14px (text-sm) to text-dos-text-base (16px body floor); copyright and legal links inherit (DMNC-1579)' },
|
|
599
709
|
{ version: '0.39.0', type: 'changed', description: 'Sanitize link hrefs via shared isSafeHref — unsafe schemes (javascript:, data:, …) render the label without an anchor' },
|
|
600
710
|
],
|
|
601
711
|
},
|
|
@@ -618,9 +728,69 @@ export const componentRegistry = {
|
|
|
618
728
|
originNote: 'Demoscene-style painted-screen placeholder (Sierra / LucasArts title-card aesthetic). Amber chrome, 6s scanline sweep, optional annotation pins. Closes rizomorf parity gap #02.',
|
|
619
729
|
platforms: { react: { path: 'src/components/DosFigure', status: 'canonical' } },
|
|
620
730
|
changelog: [
|
|
731
|
+
{ version: '0.41.0', type: 'changed', description: 'Built on DosWindow: the amber-filled title bar becomes the dark window strip (yellow title, ▸ marker, dim-amber rule); brand border and drop shadow move from the frame to the window; scanline, flicker, pins and resolution tag unchanged (DMNC-1592)' },
|
|
732
|
+
{ version: '0.41.0', type: 'changed', description: 'Pin pulse uses the shared eidotter-breathe keyframe with --eidotter-breathe-min: 0.5 (dos-figure-pin-pulse removed, DMNC-1592)' },
|
|
621
733
|
{ version: '0.20.0', type: 'added', description: 'Initial DosFigure — scanline sweep, phosphor flicker, pin pulse; all animations compositor-only and reduced-motion safe' },
|
|
622
734
|
],
|
|
623
735
|
},
|
|
736
|
+
DosDialog: {
|
|
737
|
+
origin: 'eidotter',
|
|
738
|
+
consumers: [],
|
|
739
|
+
since: '0.41.0',
|
|
740
|
+
originNote: 'The one overlay shell: CmdPalette chrome (brand border, amber glow, square corners, blurred scrim) plus a dark title strip (yellow title, dim-amber rule). React Aria ModalOverlay/Modal/Dialog. Modal, Lightbox and CmdPalette are built on it (DMNC-1592).',
|
|
741
|
+
variants: {
|
|
742
|
+
'placement:center': { description: 'Vertically centred (default)', since: '0.41.0' },
|
|
743
|
+
'placement:top': { description: 'About 18vh top anchor (CmdPalette)', since: '0.41.0' },
|
|
744
|
+
'size:sm': { description: '24rem', since: '0.41.0' },
|
|
745
|
+
'size:md': { description: '30rem, default (Modal historical 480px)', since: '0.41.0' },
|
|
746
|
+
'size:lg': { description: '40rem (CmdPalette historical 640px)', since: '0.41.0' },
|
|
747
|
+
'size:full': { description: 'Viewport width minus 2x spacing-4 (Lightbox)', since: '0.41.0' },
|
|
748
|
+
},
|
|
749
|
+
platforms: { react: { path: 'src/components/DosDialog', status: 'canonical' } },
|
|
750
|
+
changelog: [
|
|
751
|
+
{ version: '0.41.0', type: 'added', description: 'Initial DosDialog: open/onOpenChange, placement, size, head strip (title/end/marker/decorative or ReactNode), footer, isDismissable, pop-in/out panel (150ms) over a fading scrim, reduced-motion bypass' },
|
|
752
|
+
],
|
|
753
|
+
},
|
|
754
|
+
IconButton: {
|
|
755
|
+
origin: 'eidotter',
|
|
756
|
+
consumers: [],
|
|
757
|
+
since: '0.41.0',
|
|
758
|
+
originNote: 'The one icon-only control: a pixel Icon glyph in a thin square outline, hover inverts (amber fill, dark glyph), 2px border-focus outline. React Aria Button. Every close, prev/next and window control uses it (DMNC-1592).',
|
|
759
|
+
variants: {
|
|
760
|
+
'size:md': { description: '36x36 hit area, 20px glyph (default)', since: '0.41.0' },
|
|
761
|
+
'size:window': { description: '28x28, 16px glyph, for dense chrome (no built-in adopter)', since: '0.41.0' },
|
|
762
|
+
'variant:outline': { description: '1px border-default outline at rest (default)', since: '0.41.0' },
|
|
763
|
+
'variant:bare': { description: 'No resting outline (Tag remove)', since: '0.41.0' },
|
|
764
|
+
},
|
|
765
|
+
platforms: { react: { path: 'src/components/IconButton', status: 'canonical' } },
|
|
766
|
+
changelog: [
|
|
767
|
+
{ version: '0.41.0', type: 'added', description: 'Initial IconButton: icon, required label (aria-label), size md/window, variant outline/bare, isDisabled, onPress, excludeFromTabOrder; adopted by Modal, Lightbox, Notification, Alert, Tag and Nav (DMNC-1592)' },
|
|
768
|
+
],
|
|
769
|
+
},
|
|
770
|
+
DosWindow: {
|
|
771
|
+
origin: 'eidotter',
|
|
772
|
+
consumers: [],
|
|
773
|
+
since: '0.41.0',
|
|
774
|
+
originNote: 'In-page window chrome: the DosDialog strip (dark, uppercase xs title, ▸ marker, dim-amber rule) on a brand border with --shadow-drop, no glow or backdrop. Server-safe; consumer-supplied IconButton controls. DosFigure and Card are built on it (DMNC-1592).',
|
|
775
|
+
variants: {
|
|
776
|
+
'active:true': { description: 'Active window: strip title in the active colour (default)', since: '0.41.0' },
|
|
777
|
+
'active:false': { description: 'Inactive window: strip title text-muted', since: '0.41.0' },
|
|
778
|
+
},
|
|
779
|
+
platforms: { react: { path: 'src/components/DosWindow', status: 'canonical' } },
|
|
780
|
+
changelog: [
|
|
781
|
+
{ version: '0.41.0', type: 'added', description: 'Initial DosWindow: title, marker, active, controls, footer, className; stable classes eidotter-window, __strip, __title, __controls, __body, __footer (DMNC-1592)' },
|
|
782
|
+
],
|
|
783
|
+
},
|
|
784
|
+
Notification: {
|
|
785
|
+
origin: 'eidotter',
|
|
786
|
+
consumers: [],
|
|
787
|
+
since: '0.17.0',
|
|
788
|
+
originNote: 'Toast: five colour types, featured icon rings, layered amber glow, auto-dismiss. Purely presentational; consumers own positioning.',
|
|
789
|
+
changelog: [
|
|
790
|
+
{ version: '0.41.0', type: 'changed', description: 'Close control is the shared IconButton (md 36x36, pixel X, outline at rest, hover invert); .eidotter-notification__close reduced to placement (DMNC-1592)' },
|
|
791
|
+
{ version: '0.41.0', type: 'changed', description: 'Square corners (4px radius removed from container and image; close button unchanged); enter/exit use the shared eidotter-pop-in/out keyframes (DMNC-1592)' },
|
|
792
|
+
],
|
|
793
|
+
},
|
|
624
794
|
CmdPalette: {
|
|
625
795
|
origin: 'eidotter',
|
|
626
796
|
consumers: [],
|
|
@@ -628,7 +798,9 @@ export const componentRegistry = {
|
|
|
628
798
|
originNote: '⌘K / Ctrl+K command palette overlay. Built on React Aria ModalOverlay/Modal/Dialog (same primitives as Modal). Generic items + scored search + keyboard navigation.',
|
|
629
799
|
platforms: { react: { path: 'src/components/CmdPalette', status: 'canonical' } },
|
|
630
800
|
changelog: [
|
|
801
|
+
{ version: '0.41.0', type: 'changed', description: 'Rebuilt on DosDialog (top placement, lg width, decorative strip); the JUMP TO head loses its amber fill (dark strip, yellow text); placeholder and row hints use text-muted, the selected row label and hint text-brand; the panel pops in/out (150ms) instead of the 8px drop; own cmdpal-enter/exit and backdrop keyframes removed (DMNC-1592)' },
|
|
631
802
|
{ version: '0.20.0', type: 'added', description: 'Initial CmdPalette — generic items with keywords, mod+k global hotkey, custom renderItem, useId() per-instance DOM ids, selected-clamp on items mutation' },
|
|
803
|
+
{ version: '0.41.0', type: 'changed', description: 'Fix: search input shows the 2px focus-visible ring instead of only a faint background tint (DMNC-1436)' },
|
|
632
804
|
],
|
|
633
805
|
},
|
|
634
806
|
// Ported from the Tracker habit app (DMNC-1040)
|
|
@@ -648,6 +820,11 @@ export const componentRegistry = {
|
|
|
648
820
|
consumers: ['tracker'],
|
|
649
821
|
since: '0.37.0',
|
|
650
822
|
originNote: 'Block-character month calendar heatmap (█ ░ · ▒). Domain-agnostic — takes a date→status map, not a domain object.',
|
|
823
|
+
variants: {
|
|
824
|
+
'size:sm': { description: 'Compact heatmap cells' },
|
|
825
|
+
'size:md': { description: 'Standard heatmap cells' },
|
|
826
|
+
'size:lg': { description: 'Large heatmap cells' },
|
|
827
|
+
},
|
|
651
828
|
platforms: { react: { path: 'src/components/CalendarHeatmap', status: 'canonical' } },
|
|
652
829
|
changelog: [
|
|
653
830
|
{ version: '0.37.0', type: 'added', description: 'Initial CalendarHeatmap — UTC date maths, Monday/Sunday week start, legend, successColor override, glyph overrides' },
|
|
@@ -667,16 +844,35 @@ export const componentRegistry = {
|
|
|
667
844
|
origin: 'rizomorf',
|
|
668
845
|
consumers: ['rizomorf'],
|
|
669
846
|
since: '0.39.0',
|
|
670
|
-
originNote: '
|
|
847
|
+
originNote: 'Animated eiDotter mark (a.k.a. RizomorfAvatar): the Logo drawing (shared LogoGeometry, DMNC-1586) breathing, with runtime-measured quadratic-bezier arm connectors to Header nav badges (DMNC-1325; Header badge row: DMNC-1326).',
|
|
671
848
|
variants: {
|
|
672
|
-
'morph:true': { description: '
|
|
673
|
-
'morph:false': { description: '
|
|
849
|
+
'morph:true': { description: 'Breath loop (scale 1 to 1.045 + glow swell, 4.3s ease-in-out), disabled under prefers-reduced-motion. Was the border-radius morph until 0.41.0', since: '0.39.0' },
|
|
850
|
+
'morph:false': { description: 'Still mark, identical to <Logo>', since: '0.39.0' },
|
|
851
|
+
'glow:true': { description: '5px amber drop-shadow glow, removed under prefers-contrast: high', since: '0.41.0' },
|
|
852
|
+
'glow:false': { description: 'No glow', since: '0.41.0' },
|
|
674
853
|
},
|
|
675
854
|
platforms: { react: { path: 'src/components/Brand', status: 'canonical' } },
|
|
676
855
|
changelog: [
|
|
856
|
+
{ version: '0.41.0', type: 'changed', description: 'Renders the Logo SVG geometry (pixel ring + lit yolk) instead of the CSS border-radius blob (DMNC-1586). morph now drives the breath animation (alias kept); new glow prop (5px, default true). Root class eidotter-mark unchanged; arms now start on the ring\'s outer edge (computeArmPaths startRadius option, additive)' },
|
|
677
857
|
{ version: '0.39.0', type: 'added', description: 'Initial Mark — soft-radial egg-yolk fill + CSS border-radius morph + SVG arm connectors with alternating control-point offsets' },
|
|
678
858
|
],
|
|
679
859
|
},
|
|
860
|
+
Logo: {
|
|
861
|
+
origin: 'eidotter',
|
|
862
|
+
consumers: [],
|
|
863
|
+
since: '0.20.1',
|
|
864
|
+
originNote: 'Foundation Logomark (Figma node 16-610): pixel-dotted ring around a lit amber yolk with a radial phosphor halo. Static counterpart of Mark; both render the internal LogoGeometry, which is also the source of public/favicon.svg.',
|
|
865
|
+
variants: {
|
|
866
|
+
'glow:true': { description: '5px amber drop-shadow glow (was 6px until 0.41.0)', since: '0.20.1' },
|
|
867
|
+
'glow:false': { description: 'No glow (print, email)', since: '0.20.1' },
|
|
868
|
+
},
|
|
869
|
+
platforms: { react: { path: 'src/components/Brand', status: 'canonical' } },
|
|
870
|
+
changelog: [
|
|
871
|
+
{ version: '0.41.0', type: 'changed', description: 'Lit yolk (radial #FFD97A/#FFB000/#B87C00 gradient) replaces the flat amber yolk, two pixel highlights + white specular; glow 6px to 5px. Geometry extracted to the shared LogoGeometry so Logo, Mark and the favicon are one drawing (DMNC-1586)' },
|
|
872
|
+
{ version: '0.27.1', type: 'changed', description: 'Foundation Logomark: pixel-dotted ring + yolk + halo replaces the V2 yolk (DMNC-1031)' },
|
|
873
|
+
{ version: '0.20.1', type: 'added', description: 'Initial Logo (V2 yolk), with Wordmark and BrandLockup' },
|
|
874
|
+
],
|
|
875
|
+
},
|
|
680
876
|
Connector: {
|
|
681
877
|
origin: 'eidotter',
|
|
682
878
|
consumers: [],
|
|
@@ -737,6 +933,7 @@ export const componentRegistry = {
|
|
|
737
933
|
},
|
|
738
934
|
changelog: [
|
|
739
935
|
{ version: '0.40.0', type: 'added', description: 'Initial Gauge (health metabolism family)' },
|
|
936
|
+
{ version: '0.41.0', type: 'changed', description: 'Centre text inset by the ring thickness so it stays in the hole; md secondary drops its unit onto a second line, sm secondary sits under the ring; full label stays when no shortLabel (data-has-short); value keeps its accent colour (DMNC-1573)' },
|
|
740
937
|
],
|
|
741
938
|
},
|
|
742
939
|
Meter: {
|
|
@@ -766,6 +963,7 @@ export const componentRegistry = {
|
|
|
766
963
|
},
|
|
767
964
|
changelog: [
|
|
768
965
|
{ version: '0.40.0', type: 'added', description: 'Initial Meter (health metabolism family)' },
|
|
966
|
+
{ version: '0.41.0', type: 'changed', description: 'Vertical meters size to their reading in a MeterGroup row (container moved to the caption), readout no longer wraps, the unit stacks under the number in a narrow group; full label stays when no shortLabel (data-has-short) (DMNC-1573)' },
|
|
769
967
|
],
|
|
770
968
|
},
|
|
771
969
|
MeterGroup: {
|
|
@@ -783,6 +981,7 @@ export const componentRegistry = {
|
|
|
783
981
|
},
|
|
784
982
|
changelog: [
|
|
785
983
|
{ version: '0.40.0', type: 'added', description: 'Initial MeterGroup (health metabolism family)' },
|
|
984
|
+
{ version: '0.41.0', type: 'changed', description: 'Row layout wraps instead of overflowing (the old 30rem wrap rule targeted its own container and never applied) (DMNC-1573)' },
|
|
786
985
|
],
|
|
787
986
|
},
|
|
788
987
|
RangeBar: {
|
|
@@ -836,6 +1035,7 @@ export const componentRegistry = {
|
|
|
836
1035
|
},
|
|
837
1036
|
changelog: [
|
|
838
1037
|
{ version: '0.40.0', type: 'added', description: 'Initial SeriesBars (health metabolism family)' },
|
|
1038
|
+
{ version: '0.41.0', type: 'changed', description: 'Goal label moved into a reserved band above the plot so it never paints over a bar (DMNC-1573)' },
|
|
839
1039
|
],
|
|
840
1040
|
},
|
|
841
1041
|
DecayStrip: {
|
|
@@ -859,6 +1059,7 @@ export const componentRegistry = {
|
|
|
859
1059
|
},
|
|
860
1060
|
changelog: [
|
|
861
1061
|
{ version: '0.40.0', type: 'added', description: 'Initial DecayStrip (health metabolism family)' },
|
|
1062
|
+
{ version: '0.41.0', type: 'changed', description: 'Cells shrink evenly and the from/to labels move under the cells in a narrow container, so the whole window fits at phone width; brand colour no longer dropped by the size class (DMNC-1573)' },
|
|
862
1063
|
],
|
|
863
1064
|
},
|
|
864
1065
|
VitalsStrip: {
|
|
@@ -887,6 +1088,7 @@ export const componentRegistry = {
|
|
|
887
1088
|
},
|
|
888
1089
|
changelog: [
|
|
889
1090
|
{ version: '0.40.0', type: 'added', description: 'Initial VitalsStrip (health metabolism family)' },
|
|
1091
|
+
{ version: '0.41.0', type: 'changed', description: 'No value overflow at phone width: two columns and a one-step-smaller value under 30rem, value never wraps or widens its tile, state words at body size; value keeps its accent colour (DMNC-1573)' },
|
|
890
1092
|
],
|
|
891
1093
|
},
|
|
892
1094
|
};
|