@robr0/design-system 0.12.0 → 0.14.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.
Files changed (56) hide show
  1. package/README.md +9 -3
  2. package/components/AvatarGroup/AvatarGroup.css +61 -0
  3. package/components/AvatarGroup/AvatarGroup.d.ts +32 -0
  4. package/components/AvatarGroup/AvatarGroup.js +31 -0
  5. package/components/Banner/Banner.css +110 -0
  6. package/components/Banner/Banner.d.ts +36 -0
  7. package/components/Banner/Banner.js +59 -0
  8. package/components/ContributionGraph/ContributionGraph.css +7 -1
  9. package/components/ContributionGraph/ContributionGraph.d.ts +9 -1
  10. package/components/ContributionGraph/ContributionGraph.js +59 -43
  11. package/components/EmptyState/EmptyState.css +5 -0
  12. package/components/FilterBar/FilterBar.css +202 -0
  13. package/components/FilterBar/FilterBar.d.ts +55 -0
  14. package/components/FilterBar/FilterBar.js +249 -0
  15. package/components/FunnelChart/FunnelChart.css +3 -2
  16. package/components/FunnelChart/FunnelChart.d.ts +12 -4
  17. package/components/FunnelChart/FunnelChart.js +48 -28
  18. package/components/Gauge/Gauge.css +110 -0
  19. package/components/Gauge/Gauge.d.ts +64 -0
  20. package/components/Gauge/Gauge.js +111 -0
  21. package/components/HoverCard/HoverCard.css +97 -0
  22. package/components/HoverCard/HoverCard.d.ts +29 -0
  23. package/components/HoverCard/HoverCard.js +83 -0
  24. package/components/ImageCompare/ImageCompare.css +112 -0
  25. package/components/ImageCompare/ImageCompare.d.ts +40 -0
  26. package/components/ImageCompare/ImageCompare.js +134 -0
  27. package/components/LinkList/LinkList.d.ts +3 -1
  28. package/components/LinkList/LinkList.js +4 -3
  29. package/components/Meter/Meter.css +89 -0
  30. package/components/Meter/Meter.d.ts +36 -0
  31. package/components/Meter/Meter.js +48 -0
  32. package/components/NotificationCenter/NotificationCenter.css +11 -3
  33. package/components/Rating/Rating.css +74 -0
  34. package/components/Rating/Rating.d.ts +41 -0
  35. package/components/Rating/Rating.js +124 -0
  36. package/components/Sparkline/Sparkline.d.ts +5 -3
  37. package/components/Sparkline/Sparkline.js +30 -1
  38. package/components/SplitButton/SplitButton.css +93 -0
  39. package/components/SplitButton/SplitButton.d.ts +43 -0
  40. package/components/SplitButton/SplitButton.js +66 -0
  41. package/components/SplitPane/SplitPane.css +106 -0
  42. package/components/SplitPane/SplitPane.d.ts +36 -0
  43. package/components/SplitPane/SplitPane.js +130 -0
  44. package/components/StreamingText/StreamingText.css +40 -0
  45. package/components/StreamingText/StreamingText.d.ts +62 -0
  46. package/components/StreamingText/StreamingText.js +49 -0
  47. package/components/StreamingText/useStreamReveal.d.ts +70 -0
  48. package/components/StreamingText/useStreamReveal.js +121 -0
  49. package/components/registry.json +88 -0
  50. package/components/registry.json.d.ts +88 -0
  51. package/components/registry.json.js +1 -1
  52. package/index.d.ts +11 -0
  53. package/index.js +25 -0
  54. package/package.json +5 -1
  55. package/tokens/motion.d.ts +12 -3
  56. package/tokens/motion.js +7 -1
package/index.d.ts CHANGED
@@ -14,7 +14,9 @@ export * from './components/AnchorNav/AnchorNav';
14
14
  export * from './components/AppLayout/AppLayout';
15
15
  export * from './components/AppSidebar/AppSidebar';
16
16
  export * from './components/Avatar/Avatar';
17
+ export * from './components/AvatarGroup/AvatarGroup';
17
18
  export * from './components/Badge/Badge';
19
+ export * from './components/Banner/Banner';
18
20
  export * from './components/Breadcrumb/Breadcrumb';
19
21
  export * from './components/Button/Button';
20
22
  export * from './components/ButtonGroup/ButtonGroup';
@@ -53,8 +55,12 @@ export * from './components/Field/Field';
53
55
  export * from './components/Field/FieldContext';
54
56
  export * from './components/Figure/Figure';
55
57
  export * from './components/FileInput/FileInput';
58
+ export * from './components/FilterBar/FilterBar';
56
59
  export * from './components/FunnelChart/FunnelChart';
60
+ export * from './components/Gauge/Gauge';
57
61
  export * from './components/Globe/Globe';
62
+ export * from './components/HoverCard/HoverCard';
63
+ export * from './components/ImageCompare/ImageCompare';
58
64
  export * from './components/Input/Input';
59
65
  export * from './components/Instructions/Instructions';
60
66
  export * from './components/InterruptCard/InterruptCard';
@@ -65,6 +71,7 @@ export * from './components/MapCallout/MapCallout';
65
71
  export * from './components/MapLegend/MapLegend';
66
72
  export * from './components/MessageActions/MessageActions';
67
73
  export * from './components/MessageCard/MessageCard';
74
+ export * from './components/Meter/Meter';
68
75
  export * from './components/ModelPicker/ModelPicker';
69
76
  export * from './components/Nav/Nav';
70
77
  export * from './components/NavList/NavList';
@@ -79,6 +86,7 @@ export * from './components/PromptSuggestions/PromptSuggestions';
79
86
  export * from './components/Prose/Prose';
80
87
  export * from './components/Quote/Quote';
81
88
  export * from './components/RadioButton/RadioButton';
89
+ export * from './components/Rating/Rating';
82
90
  export * from './components/Reasoning/Reasoning';
83
91
  export * from './components/SectionTitle/SectionTitle';
84
92
  export * from './components/SegmentedControl/SegmentedControl';
@@ -89,8 +97,11 @@ export * from './components/Slider/Slider';
89
97
  export * from './components/SourceChip/SourceChip';
90
98
  export * from './components/Sparkline/Sparkline';
91
99
  export * from './components/Spinner/Spinner';
100
+ export * from './components/SplitButton/SplitButton';
101
+ export * from './components/SplitPane/SplitPane';
92
102
  export * from './components/Stat/Stat';
93
103
  export * from './components/Stepper/Stepper';
104
+ export * from './components/StreamingText/StreamingText';
94
105
  export * from './components/Swatch/Swatch';
95
106
  export * from './components/Table/Table';
96
107
  export * from './components/Tabs/Tabs';
package/index.js CHANGED
@@ -9,7 +9,9 @@ import { AnchorNav } from "./components/AnchorNav/AnchorNav.js";
9
9
  import { AppLayout } from "./components/AppLayout/AppLayout.js";
10
10
  import { AppSidebar } from "./components/AppSidebar/AppSidebar.js";
11
11
  import { Avatar } from "./components/Avatar/Avatar.js";
12
+ import { AvatarGroup } from "./components/AvatarGroup/AvatarGroup.js";
12
13
  import { Badge } from "./components/Badge/Badge.js";
14
+ import { Banner } from "./components/Banner/Banner.js";
13
15
  import { Breadcrumb } from "./components/Breadcrumb/Breadcrumb.js";
14
16
  import { Button } from "./components/Button/Button.js";
15
17
  import { ButtonGroup } from "./components/ButtonGroup/ButtonGroup.js";
@@ -48,8 +50,12 @@ import { Field } from "./components/Field/Field.js";
48
50
  import { FieldContext, useField } from "./components/Field/FieldContext.js";
49
51
  import { Figure } from "./components/Figure/Figure.js";
50
52
  import { FileInput } from "./components/FileInput/FileInput.js";
53
+ import { FilterBar } from "./components/FilterBar/FilterBar.js";
51
54
  import { FunnelChart } from "./components/FunnelChart/FunnelChart.js";
55
+ import { Gauge } from "./components/Gauge/Gauge.js";
52
56
  import { Globe } from "./components/Globe/Globe.js";
57
+ import { HoverCard } from "./components/HoverCard/HoverCard.js";
58
+ import { ImageCompare } from "./components/ImageCompare/ImageCompare.js";
53
59
  import { Input } from "./components/Input/Input.js";
54
60
  import { Instructions } from "./components/Instructions/Instructions.js";
55
61
  import { InterruptCard } from "./components/InterruptCard/InterruptCard.js";
@@ -60,6 +66,7 @@ import { MapCallout } from "./components/MapCallout/MapCallout.js";
60
66
  import { MapLegend } from "./components/MapLegend/MapLegend.js";
61
67
  import { MessageActions } from "./components/MessageActions/MessageActions.js";
62
68
  import { MessageCard } from "./components/MessageCard/MessageCard.js";
69
+ import { Meter } from "./components/Meter/Meter.js";
63
70
  import { ModelPicker } from "./components/ModelPicker/ModelPicker.js";
64
71
  import { Nav } from "./components/Nav/Nav.js";
65
72
  import { NavList } from "./components/NavList/NavList.js";
@@ -74,6 +81,7 @@ import { PromptSuggestions } from "./components/PromptSuggestions/PromptSuggesti
74
81
  import { Prose } from "./components/Prose/Prose.js";
75
82
  import { Quote } from "./components/Quote/Quote.js";
76
83
  import { RadioButton, RadioGroup } from "./components/RadioButton/RadioButton.js";
84
+ import { Rating } from "./components/Rating/Rating.js";
77
85
  import { Reasoning } from "./components/Reasoning/Reasoning.js";
78
86
  import { SectionTitle } from "./components/SectionTitle/SectionTitle.js";
79
87
  import { SegmentedControl } from "./components/SegmentedControl/SegmentedControl.js";
@@ -84,8 +92,11 @@ import { Slider } from "./components/Slider/Slider.js";
84
92
  import { SourceChip } from "./components/SourceChip/SourceChip.js";
85
93
  import { Sparkline } from "./components/Sparkline/Sparkline.js";
86
94
  import { Spinner } from "./components/Spinner/Spinner.js";
95
+ import { SplitButton } from "./components/SplitButton/SplitButton.js";
96
+ import { SplitPane } from "./components/SplitPane/SplitPane.js";
87
97
  import { Stat } from "./components/Stat/Stat.js";
88
98
  import { Stepper } from "./components/Stepper/Stepper.js";
99
+ import { StreamingText } from "./components/StreamingText/StreamingText.js";
89
100
  import { Swatch } from "./components/Swatch/Swatch.js";
90
101
  import { Table } from "./components/Table/Table.js";
91
102
  import { Tabs } from "./components/Tabs/Tabs.js";
@@ -103,6 +114,7 @@ import { COMPONENT_COUNT, componentCategories, componentCategoryMetadata, compon
103
114
  import { TOKEN_COUNT, TOKEN_COUNTS, tokenRegistry } from "./tokens/registry.js";
104
115
  import { BLOB_COUNT } from "./components/ShaderField/field.glsl.js";
105
116
  import { DEFAULT_SHADER_BLOBS, DEFAULT_SHADER_PARAMS, useShaderField } from "./components/ShaderField/useShaderField.js";
117
+ import { createStreamReveal, useStreamReveal } from "./components/StreamingText/useStreamReveal.js";
106
118
  export {
107
119
  Accordion,
108
120
  AgentPlan,
@@ -114,8 +126,10 @@ export {
114
126
  AppLayout,
115
127
  AppSidebar,
116
128
  Avatar,
129
+ AvatarGroup,
117
130
  BLOB_COUNT,
118
131
  Badge,
132
+ Banner,
119
133
  Breadcrumb,
120
134
  Button,
121
135
  ButtonGroup,
@@ -158,8 +172,12 @@ export {
158
172
  FieldContext,
159
173
  Figure,
160
174
  FileInput,
175
+ FilterBar,
161
176
  FunnelChart,
177
+ Gauge,
162
178
  Globe,
179
+ HoverCard,
180
+ ImageCompare,
163
181
  Input,
164
182
  Instructions,
165
183
  InterruptCard,
@@ -170,6 +188,7 @@ export {
170
188
  MapLegend,
171
189
  MessageActions,
172
190
  MessageCard,
191
+ Meter,
173
192
  ModelPicker,
174
193
  Nav,
175
194
  NavList,
@@ -186,6 +205,7 @@ export {
186
205
  Quote,
187
206
  RadioButton,
188
207
  RadioGroup,
208
+ Rating,
189
209
  Reasoning,
190
210
  SectionTitle,
191
211
  SegmentedControl,
@@ -196,8 +216,11 @@ export {
196
216
  SourceChip,
197
217
  Sparkline,
198
218
  Spinner,
219
+ SplitButton,
220
+ SplitPane,
199
221
  Stat,
200
222
  Stepper,
223
+ StreamingText,
201
224
  Swatch,
202
225
  TOKEN_COUNT,
203
226
  TOKEN_COUNTS,
@@ -219,9 +242,11 @@ export {
219
242
  componentCategoryMetadata,
220
243
  componentMetadata,
221
244
  componentRegistry,
245
+ createStreamReveal,
222
246
  parseUnifiedDiff,
223
247
  tokenRegistry,
224
248
  useField,
225
249
  useShaderField,
250
+ useStreamReveal,
226
251
  useToast
227
252
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robr0/design-system",
3
- "version": "0.12.0",
3
+ "version": "0.14.0",
4
4
  "description": "An AI-ready React design system: accessible components on composable tokens, light/dark theming, and CSS-variable overrides.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -46,6 +46,10 @@
46
46
  "types": "./components/ShaderField/useShaderField.d.ts",
47
47
  "import": "./components/ShaderField/useShaderField.js"
48
48
  },
49
+ "./components/StreamingText/useStreamReveal": {
50
+ "types": "./components/StreamingText/useStreamReveal.d.ts",
51
+ "import": "./components/StreamingText/useStreamReveal.js"
52
+ },
49
53
  "./tokens/registry": {
50
54
  "types": "./tokens/registry.d.ts",
51
55
  "import": "./tokens/registry.js"
@@ -5,9 +5,12 @@
5
5
  * CSS variable cannot reach. Components use them as defaults, so a single
6
6
  * instance can still be tuned through its component's own props.
7
7
  *
8
- * These are schedule timings (when something starts, stops, or is taken
9
- * away), not animation durations, so the reduced-motion guard in
10
- * tokens-motion.css deliberately does not apply to them.
8
+ * Most are schedule timings (when something starts, stops, or is taken
9
+ * away), which the reduced-motion guard in tokens-motion.css deliberately
10
+ * leaves alone. A constant that paces an animation (the streaming reveal's
11
+ * rate floor and drain window) is the exception: its component checks the
12
+ * preference itself in JS, because the CSS guard cannot see a JavaScript
13
+ * timer.
11
14
  */
12
15
  /** Delay before a hover-triggered overlay appears, filtering pass-through hovers. */
13
16
  export declare const MOTION_HOVER_SHOW_DELAY_MS = 300;
@@ -21,3 +24,9 @@ export declare const MOTION_AUTOPLAY_INTERVAL_MS = 5000;
21
24
  export declare const MOTION_FEEDBACK_RESET_MS = 2000;
22
25
  /** How long after the last scroll event a scroll surface is considered settled. */
23
26
  export declare const MOTION_SCROLL_SETTLE_MS = 600;
27
+ /** Slowest the streaming reveal ever runs, in characters per second — the pace a thin trickle of deltas types at. An animation pace, not a schedule timing: the reveal is skipped under reduced motion. */
28
+ export declare const MOTION_STREAM_FLOOR_CPS = 70;
29
+ /** However much streamed text is waiting, the reveal has it fully on screen within this long — the rate rises with the backlog, so a dumped paragraph catches up in a beat. */
30
+ export declare const MOTION_STREAM_DRAIN_MS = 250;
31
+ /** The retired interval-based reveal step. @deprecated The reveal is frame-driven now — pace it with MOTION_STREAM_FLOOR_CPS and MOTION_STREAM_DRAIN_MS. */
32
+ export declare const MOTION_STREAM_CHAR_INTERVAL_MS = 15;
package/tokens/motion.js CHANGED
@@ -4,11 +4,17 @@ const MOTION_AUTO_DISMISS_MS = 5e3;
4
4
  const MOTION_AUTOPLAY_INTERVAL_MS = 5e3;
5
5
  const MOTION_FEEDBACK_RESET_MS = 2e3;
6
6
  const MOTION_SCROLL_SETTLE_MS = 600;
7
+ const MOTION_STREAM_FLOOR_CPS = 70;
8
+ const MOTION_STREAM_DRAIN_MS = 250;
9
+ const MOTION_STREAM_CHAR_INTERVAL_MS = 15;
7
10
  export {
8
11
  MOTION_AUTOPLAY_INTERVAL_MS,
9
12
  MOTION_AUTO_DISMISS_MS,
10
13
  MOTION_FEEDBACK_RESET_MS,
11
14
  MOTION_HOVER_HIDE_DELAY_MS,
12
15
  MOTION_HOVER_SHOW_DELAY_MS,
13
- MOTION_SCROLL_SETTLE_MS
16
+ MOTION_SCROLL_SETTLE_MS,
17
+ MOTION_STREAM_CHAR_INTERVAL_MS,
18
+ MOTION_STREAM_DRAIN_MS,
19
+ MOTION_STREAM_FLOOR_CPS
14
20
  };