eidotter 0.40.2 → 0.41.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 +14 -6
- 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 +1 -1
- package/dist/components/DosDialog/components/DosDialog.d.ts +90 -0
- package/dist/components/DosDialog/components/DosDialog.js +68 -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 +13 -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 +9 -0
- package/dist/components/Icon/components/Icon.js +7 -3
- 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/RangeBar/components/RangeBar.js +8 -5
- package/dist/components/SeriesBars/components/SeriesBars.d.ts +9 -1
- package/dist/components/SeriesBars/components/SeriesBars.js +23 -11
- package/dist/components/Stat/components/Stat.js +1 -1
- 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 +9 -7
- package/dist/components/registry.js +230 -19
- package/dist/eidotter.css +3 -2
- package/dist/hooks/useAnimatedDismiss.js +5 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.es.js +2414 -1747
- package/dist/index.umd.js +1 -1
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.js +33 -1
- package/dist/utils/dosFontSizes.d.ts +2 -0
- package/dist/utils/dosFontSizes.js +17 -0
- package/llms.txt +15 -7
- package/migrations/0.41.0.md +883 -0
- package/migrations/README.md +46 -0
- package/package.json +11 -3
- package/public/favicon.svg +1 -1
- package/src/styles/dos-utilities.css +9 -1
- package/src/styles/shadcn.css +63 -27
- 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
|
@@ -6,7 +6,14 @@ export interface TagProps {
|
|
|
6
6
|
variant?: 'default' | 'outlined' | 'filled';
|
|
7
7
|
/** Size variant. Use sm/md/lg — small/medium are @deprecated aliases. */
|
|
8
8
|
size?: 'sm' | 'md' | 'lg' | 'small' | 'medium';
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* CGA color token for border and text (`default`, `outlined`), or the fill
|
|
11
|
+
* (`filled`, drawn with `text-on-brand` ink). For `filled`, pass a bright
|
|
12
|
+
* fill: a CGA primitive such as `--color-cga-bright-cyan`, `-bright-green`,
|
|
13
|
+
* `-yellow`, `-light-gray`, or `--color-semantic-background-brand`. Each
|
|
14
|
+
* clears 4.5:1 in every theme; text roles such as
|
|
15
|
+
* `--color-semantic-text-accent` drop to about 3:1 as a fill in the light theme.
|
|
16
|
+
*/
|
|
10
17
|
color?: string;
|
|
11
18
|
/** Whether the tag is selected/active */
|
|
12
19
|
selected?: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
3
|
+
import { IconButton } from '../../IconButton/components/IconButton.js';
|
|
4
4
|
import { cn } from '../../../utils/cn.js';
|
|
5
5
|
import { useAnimatedDismiss } from '../../../hooks/useAnimatedDismiss.js';
|
|
6
6
|
const sizeClasses = {
|
|
@@ -16,7 +16,7 @@ const sizeClasses = {
|
|
|
16
16
|
*/
|
|
17
17
|
export const Tag = ({ children, variant = 'default', size = 'md', color, selected = false, closeable = false, disabled = false, onClick, onClose, className, 'aria-label': ariaLabel, ...props }) => {
|
|
18
18
|
const isInteractive = !!onClick && !disabled;
|
|
19
|
-
const { isClosing, triggerClose, handleAnimationEnd } = useAnimatedDismiss('
|
|
19
|
+
const { isClosing, triggerClose, handleAnimationEnd } = useAnimatedDismiss('eidotter-pop-out', onClose);
|
|
20
20
|
const handleKeyDown = (event) => {
|
|
21
21
|
if (disabled)
|
|
22
22
|
return;
|
|
@@ -29,18 +29,18 @@ export const Tag = ({ children, variant = 'default', size = 'md', color, selecte
|
|
|
29
29
|
triggerClose();
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
|
-
//
|
|
32
|
+
// IconButton (React Aria Button) usePress isolates the press event — it calls stopPropagation
|
|
33
33
|
// internally, preventing the close from triggering the parent Tag's onClick.
|
|
34
34
|
const handleClosePress = () => {
|
|
35
35
|
if (!disabled)
|
|
36
36
|
triggerClose();
|
|
37
37
|
};
|
|
38
38
|
const style = color ? { '--tag-color': 'var(' + color + ')' } : undefined;
|
|
39
|
-
return (_jsxs("span", { className: cn('inline-flex items-center justify-center', 'font-dos leading-none whitespace-nowrap select-none', 'rounded-dos-sm uppercase tracking-wider', sizeClasses[size] || sizeClasses.md, 'eidotter-tag', 'eidotter-tag--' + variant, selected && 'eidotter-tag--selected', disabled && 'opacity-50 cursor-not-allowed', isClosing && 'eidotter-tag--closing', isInteractive && 'cursor-pointer', className), style: style, onClick: isInteractive ? (e) => !disabled && onClick?.(e) : undefined, onKeyDown: handleKeyDown, onAnimationEnd: handleAnimationEnd, "aria-label": ariaLabel, "aria-pressed": isInteractive ? (selected || false) : undefined, "aria-disabled": disabled || undefined, "data-variant": variant, ...(isInteractive ? { role: 'button', tabIndex: 0 } : {}), ...props, children: [_jsx("span", { className: "eidotter-tag__content", children: children }), closeable && (_jsx(
|
|
39
|
+
return (_jsxs("span", { className: cn('inline-flex items-center justify-center', 'font-dos leading-none whitespace-nowrap select-none', 'rounded-dos-sm uppercase tracking-wider', sizeClasses[size] || sizeClasses.md, 'eidotter-tag', 'eidotter-tag--' + variant, selected && 'eidotter-tag--selected', disabled && 'opacity-50 cursor-not-allowed', isClosing && 'eidotter-tag--closing', isInteractive && 'cursor-pointer', className), style: style, onClick: isInteractive ? (e) => !disabled && onClick?.(e) : undefined, onKeyDown: handleKeyDown, onAnimationEnd: handleAnimationEnd, "aria-label": ariaLabel, "aria-pressed": isInteractive ? (selected || false) : undefined, "aria-disabled": disabled || undefined, "data-variant": variant, ...(isInteractive ? { role: 'button', tabIndex: 0 } : {}), ...props, children: [_jsx("span", { className: "eidotter-tag__content", children: children }), closeable && (_jsx(IconButton, { icon: "Close", label: 'Remove ' + (typeof children === 'string' ? children : 'tag'), variant: "bare", className: "eidotter-tag__close",
|
|
40
40
|
// Keep the close button out of the tab order only when the body is
|
|
41
41
|
// itself focusable (interactive) and already offers Delete/Backspace
|
|
42
42
|
// dismissal. For a closeable, non-interactive tag the body is not
|
|
43
43
|
// focusable, so the close button must stay tabbable to give keyboard
|
|
44
44
|
// users any dismiss path at all.
|
|
45
|
-
excludeFromTabOrder: isInteractive, onPress: handleClosePress, isDisabled: disabled
|
|
45
|
+
excludeFromTabOrder: isInteractive, onPress: handleClosePress, isDisabled: disabled }))] }));
|
|
46
46
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
3
|
import { cn } from '../../../utils/cn.js';
|
|
4
4
|
import { Skeleton } from '../../Skeleton/index.js';
|
|
@@ -8,11 +8,6 @@ const sizeClasses = {
|
|
|
8
8
|
md: 'eidotter-vitals-strip--md gap-2 text-dos-text-sm',
|
|
9
9
|
lg: 'eidotter-vitals-strip--lg gap-2 text-dos-text-md',
|
|
10
10
|
};
|
|
11
|
-
const valueSizeClasses = {
|
|
12
|
-
sm: 'text-dos-display-xs',
|
|
13
|
-
md: 'text-dos-display-sm',
|
|
14
|
-
lg: 'text-dos-display-md',
|
|
15
|
-
};
|
|
16
11
|
const toneClasses = {
|
|
17
12
|
neutral: 'eidotter-tone--neutral',
|
|
18
13
|
info: 'eidotter-tone--info',
|
|
@@ -67,7 +62,14 @@ export const VitalsStrip = forwardRef(({ tiles, size = 'md', locale = 'en', labe
|
|
|
67
62
|
.filter(Boolean)
|
|
68
63
|
.join(', ');
|
|
69
64
|
return (_jsxs("div", { role: "group", "aria-label": name, "aria-busy": loading || undefined, className: cn('eidotter-vitals-strip__tile flex flex-col gap-0.5 border border-dos-border-default p-2', toneClasses[tone], statusClasses[status], tone === 'critical' &&
|
|
70
|
-
'eidotter-vitals-strip__marker border-l-4 border-dos-border-error'), children: [_jsxs("span", { className: "flex items-center gap-1 text-dos-text-brand uppercase tracking-wider leading-tight", children: [tone === 'critical' && (_jsx("span", { "aria-hidden": "true", className: "text-dos-text-error", children: "\u25B2" })), _jsx("span", { className: "truncate", title: t.label, children: t.label })] }), loading ? (_jsx("div", { "aria-hidden": "true", className: "w-full overflow-hidden", children: _jsx(Skeleton, { variant: "figure", lines: 1, animated: false }) })) : (
|
|
65
|
+
'eidotter-vitals-strip__marker border-l-4 border-dos-border-error'), children: [_jsxs("span", { className: "flex items-center gap-1 text-dos-text-brand uppercase tracking-wider leading-tight", children: [tone === 'critical' && (_jsx("span", { "aria-hidden": "true", className: "text-dos-text-error", children: "\u25B2" })), _jsx("span", { className: "truncate", title: t.label, children: t.label })] }), loading ? (_jsx("div", { "aria-hidden": "true", className: "w-full overflow-hidden", children: _jsx(Skeleton, { variant: "figure", lines: 1, animated: false }) })) : (
|
|
66
|
+
/* Display size comes from VitalsStrip.css (a per-size custom property that
|
|
67
|
+
steps down in narrow strips), not a Tailwind text-* utility, which
|
|
68
|
+
cannot follow the container width. The reading never wraps or widens the tile; the unit
|
|
69
|
+
moves under it when both do not fit on one line (DMNC-1573). */
|
|
70
|
+
_jsxs("span", { className: "eidotter-vitals-strip__value text-dos-text-accent leading-none tabular-nums flex flex-wrap items-baseline gap-x-1 min-w-0", children: [_jsx("span", { className: "eidotter-vitals-strip__reading min-w-0 max-w-full whitespace-nowrap overflow-hidden text-ellipsis", children: stale ? (_jsx("span", { className: "opacity-60", children: valueText })) : stateText !== null ? (
|
|
71
|
+
// State words are prose, not a reading: body size, not display size.
|
|
72
|
+
_jsx("span", { className: "eidotter-vitals-strip__state text-dos-text-sm", children: stateText })) : (valueText) }), valueText && t.unit && (_jsxs(_Fragment, { children: [' ', _jsx("span", { className: "eidotter-vitals-strip__unit whitespace-nowrap text-[0.5em] text-dos-text-brand", children: t.unit })] }))] })), stale && _jsx("span", { className: "eidotter-vitals-strip__stale", children: labels.stale }), t.secondary && !unknown && (_jsx("span", { className: "eidotter-vitals-strip__secondary text-dos-text-muted leading-tight", children: t.secondary })), resolved.label && (_jsx("span", { className: "eidotter-vitals-strip__band text-dos-text-brand leading-tight", children: resolved.label }))] }, t.id));
|
|
71
73
|
}) }));
|
|
72
74
|
});
|
|
73
75
|
VitalsStrip.displayName = 'VitalsStrip';
|