@teachinglab/omd 0.5.7 → 0.5.8

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 (59) hide show
  1. package/index.js +3 -0
  2. package/npm-docs/DOCUMENTATION_SUMMARY.md +220 -0
  3. package/npm-docs/README.md +251 -0
  4. package/npm-docs/api/api-reference.md +85 -0
  5. package/npm-docs/api/configuration-options.md +198 -0
  6. package/npm-docs/api/eventManager.md +83 -0
  7. package/npm-docs/api/expression-nodes.md +561 -0
  8. package/npm-docs/api/focusFrameManager.md +145 -0
  9. package/npm-docs/api/index.md +106 -0
  10. package/npm-docs/api/main.md +63 -0
  11. package/npm-docs/api/omdBinaryExpressionNode.md +86 -0
  12. package/npm-docs/api/omdCanvas.md +84 -0
  13. package/npm-docs/api/omdConfigManager.md +113 -0
  14. package/npm-docs/api/omdConstantNode.md +53 -0
  15. package/npm-docs/api/omdDisplay.md +87 -0
  16. package/npm-docs/api/omdEquationNode.md +174 -0
  17. package/npm-docs/api/omdEquationSequenceNode.md +259 -0
  18. package/npm-docs/api/omdEquationStack.md +193 -0
  19. package/npm-docs/api/omdFunctionNode.md +83 -0
  20. package/npm-docs/api/omdGroupNode.md +79 -0
  21. package/npm-docs/api/omdHelpers.md +88 -0
  22. package/npm-docs/api/omdLeafNode.md +86 -0
  23. package/npm-docs/api/omdNode.md +202 -0
  24. package/npm-docs/api/omdOperationDisplayNode.md +118 -0
  25. package/npm-docs/api/omdOperatorNode.md +92 -0
  26. package/npm-docs/api/omdParenthesisNode.md +134 -0
  27. package/npm-docs/api/omdPopup.md +192 -0
  28. package/npm-docs/api/omdPowerNode.md +132 -0
  29. package/npm-docs/api/omdRationalNode.md +145 -0
  30. package/npm-docs/api/omdSequenceNode.md +128 -0
  31. package/npm-docs/api/omdSimplification.md +79 -0
  32. package/npm-docs/api/omdSqrtNode.md +144 -0
  33. package/npm-docs/api/omdStepVisualizer.md +147 -0
  34. package/npm-docs/api/omdStepVisualizerHighlighting.md +66 -0
  35. package/npm-docs/api/omdStepVisualizerInteractiveSteps.md +109 -0
  36. package/npm-docs/api/omdStepVisualizerLayout.md +71 -0
  37. package/npm-docs/api/omdStepVisualizerNodeUtils.md +140 -0
  38. package/npm-docs/api/omdStepVisualizerTextBoxes.md +77 -0
  39. package/npm-docs/api/omdToolbar.md +131 -0
  40. package/npm-docs/api/omdTranscriptionService.md +96 -0
  41. package/npm-docs/api/omdTreeDiff.md +170 -0
  42. package/npm-docs/api/omdUnaryExpressionNode.md +137 -0
  43. package/npm-docs/api/omdUtilities.md +83 -0
  44. package/npm-docs/api/omdVariableNode.md +123 -0
  45. package/npm-docs/api/selectTool.md +74 -0
  46. package/npm-docs/api/simplificationEngine.md +98 -0
  47. package/npm-docs/api/simplificationRules.md +77 -0
  48. package/npm-docs/api/simplificationUtils.md +64 -0
  49. package/npm-docs/api/transcribe.md +43 -0
  50. package/npm-docs/guides/equations.md +854 -0
  51. package/npm-docs/guides/factory-functions.md +354 -0
  52. package/npm-docs/guides/getting-started.md +318 -0
  53. package/npm-docs/guides/quick-examples.md +525 -0
  54. package/npm-docs/guides/visualizations.md +682 -0
  55. package/npm-docs/json-schemas.md +826 -0
  56. package/omd/utils/omdTranscriptionService.js +1 -1
  57. package/package.json +2 -1
  58. package/src/index.js +2 -0
  59. package/src/omdFactory.js +150 -0
@@ -0,0 +1,682 @@
1
+ # Visualizations Guide
2
+
3
+ OMD provides a comprehensive set of visualization components for teaching and learning mathematics. This guide covers all visualization components organized by category.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Number & Ratio Visualizations](#number--ratio-visualizations)
8
+ 2. [Graphing & Geometry](#graphing--geometry)
9
+ 3. [Data Display](#data-display)
10
+
11
+ ---
12
+
13
+ ## Number & Ratio Visualizations
14
+
15
+ ### Number Line
16
+
17
+ `omdNumberLine` creates interactive number lines with labeled ticks and optional dots to mark values.
18
+
19
+ #### Basic Usage
20
+
21
+ ```javascript
22
+ import { omdNumberLine } from '@teachinglab/omd';
23
+
24
+ const numberLine = new omdNumberLine();
25
+ numberLine.loadFromJSON({
26
+ min: 0,
27
+ max: 10,
28
+ dotValues: [2, 5, 8],
29
+ label: "Number Line"
30
+ });
31
+ ```
32
+
33
+ #### Properties
34
+
35
+ | Property | Type | Default | Description |
36
+ |----------|------|---------|-------------|
37
+ | `min` | number | 0 | Minimum value on the line |
38
+ | `max` | number | 10 | Maximum value on the line |
39
+ | `dotValues` | number[] | [] | Array of values to mark with dots |
40
+ | `label` | string | "" | Optional label for the number line |
41
+
42
+ #### Examples
43
+
44
+ **Simple number line (0-20):**
45
+ ```javascript
46
+ numberLine.loadFromJSON({
47
+ min: 0,
48
+ max: 20
49
+ });
50
+ ```
51
+
52
+ **Marking fractions:**
53
+ ```javascript
54
+ numberLine.loadFromJSON({
55
+ min: 0,
56
+ max: 1,
57
+ dotValues: [0.25, 0.5, 0.75],
58
+ label: "Fractions"
59
+ });
60
+ ```
61
+
62
+ **Negative numbers:**
63
+ ```javascript
64
+ numberLine.loadFromJSON({
65
+ min: -10,
66
+ max: 10,
67
+ dotValues: [-5, 0, 5]
68
+ });
69
+ ```
70
+
71
+ ---
72
+
73
+ ### Number Tiles
74
+
75
+ `omdNumberTile` creates visual tiles with dots for counting and grouping activities.
76
+
77
+ #### Basic Usage
78
+
79
+ ```javascript
80
+ import { omdNumberTile } from '@teachinglab/omd';
81
+
82
+ const tile = new omdNumberTile();
83
+ tile.loadFromJSON({
84
+ value: 10,
85
+ size: "medium",
86
+ dotsPerColumn: 5
87
+ });
88
+ ```
89
+
90
+ #### Properties
91
+
92
+ | Property | Type | Default | Description |
93
+ |----------|------|---------|-------------|
94
+ | `value` | number | required | Number of dots to display |
95
+ | `size` | "small" \| "medium" \| "large" | "medium" | Size of the tile |
96
+ | `dotsPerColumn` | number | 5 | How many dots per column |
97
+ | `backgroundColor` | string | "#FFFFFF" | Background color of tile |
98
+ | `dotColor` | string | "#000000" | Color of the dots |
99
+
100
+ #### Examples
101
+
102
+ **Small tile:**
103
+ ```javascript
104
+ tile.loadFromJSON({
105
+ value: 5,
106
+ size: "small",
107
+ backgroundColor: "#E8F4FD",
108
+ dotColor: "#1976D2"
109
+ });
110
+ ```
111
+
112
+ **Custom arrangement:**
113
+ ```javascript
114
+ tile.loadFromJSON({
115
+ value: 15,
116
+ dotsPerColumn: 3, // 5 columns x 3 rows
117
+ size: "large"
118
+ });
119
+ ```
120
+
121
+ ---
122
+
123
+ ### Tape Diagrams
124
+
125
+ `omdTapeDiagram` creates part-whole relationship diagrams with labeled sections.
126
+
127
+ #### Basic Usage
128
+
129
+ ```javascript
130
+ import { omdTapeDiagram } from '@teachinglab/omd';
131
+
132
+ const tape = new omdTapeDiagram();
133
+ tape.loadFromJSON({
134
+ values: [3, 5, 2],
135
+ colors: ["#FF6B6B", "#4ECDC4", "#45B7D1"],
136
+ labelSet: [
137
+ {
138
+ startIndex: 0,
139
+ endIndex: 2,
140
+ label: "Total: 10",
141
+ showBelow: true
142
+ }
143
+ ]
144
+ });
145
+ ```
146
+
147
+ #### Properties
148
+
149
+ | Property | Type | Default | Description |
150
+ |----------|------|---------|-------------|
151
+ | `values` | number[] | required | Array of segment values |
152
+ | `showValues` | boolean | true | Show values in each segment |
153
+ | `colors` | string[] | auto | Colors for each segment |
154
+ | `labelSet` | TapeLabel[] | [] | Labels spanning segments |
155
+ | `unitWidth` | number | 30 | Width per unit value |
156
+
157
+ #### Label Structure
158
+
159
+ ```typescript
160
+ {
161
+ startIndex: number, // First segment index
162
+ endIndex: number, // Last segment index
163
+ label: string, // Label text
164
+ showBelow?: boolean // Show below the tape
165
+ }
166
+ ```
167
+
168
+ #### Examples
169
+
170
+ **Simple ratio:**
171
+ ```javascript
172
+ tape.loadFromJSON({
173
+ values: [2, 3],
174
+ colors: ["#FF6B6B", "#4ECDC4"],
175
+ labelSet: [
176
+ { startIndex: 0, endIndex: 1, label: "2:3", showBelow: true }
177
+ ]
178
+ });
179
+ ```
180
+
181
+ **Multi-part problem:**
182
+ ```javascript
183
+ tape.loadFromJSON({
184
+ values: [4, 4, 4, 6],
185
+ showValues: true,
186
+ labelSet: [
187
+ { startIndex: 0, endIndex: 2, label: "3 equal parts" },
188
+ { startIndex: 3, endIndex: 3, label: "remainder" }
189
+ ],
190
+ unitWidth: 25
191
+ });
192
+ ```
193
+
194
+ ---
195
+
196
+ ### Ratio Charts
197
+
198
+ `omdRatioChart` creates pie and bar chart visualizations for ratios.
199
+
200
+ #### Basic Usage
201
+
202
+ ```javascript
203
+ import { omdRatioChart } from '@teachinglab/omd';
204
+
205
+ const chart = new omdRatioChart();
206
+ chart.loadFromJSON({
207
+ valueA: 3,
208
+ valueB: 2,
209
+ renderType: "pie",
210
+ size: "medium"
211
+ });
212
+ ```
213
+
214
+ #### Properties
215
+
216
+ | Property | Type | Default | Description |
217
+ |----------|------|---------|-------------|
218
+ | `valueA` | number | required | First ratio value |
219
+ | `valueB` | number | required | Second ratio value |
220
+ | `renderType` | "pie" \| "bar" | "pie" | Chart type |
221
+ | `size` | "small" \| "medium" \| "large" | "medium" | Chart size |
222
+
223
+ #### Examples
224
+
225
+ **Pie chart:**
226
+ ```javascript
227
+ chart.loadFromJSON({
228
+ valueA: 3,
229
+ valueB: 5,
230
+ renderType: "pie"
231
+ });
232
+ ```
233
+
234
+ **Bar chart:**
235
+ ```javascript
236
+ chart.loadFromJSON({
237
+ valueA: 7,
238
+ valueB: 3,
239
+ renderType: "bar",
240
+ size: "large"
241
+ });
242
+ ```
243
+
244
+ ---
245
+
246
+ ### Balance Hanger
247
+
248
+ `omdBalanceHanger` creates balance scale visualizations for equations and equality.
249
+
250
+ #### Basic Usage
251
+
252
+ ```javascript
253
+ import { omdBalanceHanger } from '@teachinglab/omd';
254
+
255
+ const balance = new omdBalanceHanger();
256
+ balance.loadFromJSON({
257
+ leftValues: [5, 3],
258
+ rightValues: [4, 4],
259
+ tilt: "balanced"
260
+ });
261
+ ```
262
+
263
+ #### Properties
264
+
265
+ | Property | Type | Default | Description |
266
+ |----------|------|---------|-------------|
267
+ | `leftValues` | number[] | required | Values on left side |
268
+ | `rightValues` | number[] | required | Values on right side |
269
+ | `tilt` | "left" \| "right" \| "balanced" | auto | Balance state |
270
+
271
+ #### Examples
272
+
273
+ **Balanced equation:**
274
+ ```javascript
275
+ balance.loadFromJSON({
276
+ leftValues: [10],
277
+ rightValues: [7, 3],
278
+ tilt: "balanced"
279
+ });
280
+ ```
281
+
282
+ **Unbalanced:**
283
+ ```javascript
284
+ balance.loadFromJSON({
285
+ leftValues: [8, 3],
286
+ rightValues: [5, 2],
287
+ tilt: "left"
288
+ });
289
+ ```
290
+
291
+ ---
292
+
293
+ ## Graphing & Geometry
294
+
295
+ ### Coordinate Plane
296
+
297
+ `omdCoordinatePlane` creates a 2D coordinate system with full graphing capabilities.
298
+
299
+ #### Basic Usage
300
+
301
+ ```javascript
302
+ import { omdCoordinatePlane } from '@teachinglab/omd';
303
+
304
+ const plane = new omdCoordinatePlane();
305
+ plane.loadFromJSON({
306
+ xMin: -10,
307
+ xMax: 10,
308
+ yMin: -10,
309
+ yMax: 10,
310
+ graphEquations: [
311
+ { equation: 'y = x^2', color: '#e11d48', strokeWidth: 2 }
312
+ ]
313
+ });
314
+ ```
315
+
316
+ #### Properties
317
+
318
+ | Property | Type | Default | Description |
319
+ |----------|------|---------|-------------|
320
+ | `xMin` | number | -5 | Minimum x value |
321
+ | `xMax` | number | 5 | Maximum x value |
322
+ | `yMin` | number | -5 | Minimum y value |
323
+ | `yMax` | number | 5 | Maximum y value |
324
+ | `xLabel` | string | "" | X-axis label |
325
+ | `yLabel` | string | "" | Y-axis label |
326
+ | `tickInterval` | number | 1 | Spacing between ticks |
327
+ | `graphEquations` | Equation[] | [] | Functions to graph |
328
+ | `lineSegments` | LineSegment[] | [] | Line segments to draw |
329
+ | `dotValues` | Dot[] | [] | Points to plot |
330
+ | `shapeSet` | Shape[] | [] | Shapes to display |
331
+ | `showTickLabels` | boolean | true | Show numeric labels |
332
+ | `backgroundColor` | string | lightGray | Background color |
333
+ | `showBackground` | boolean | true | Show background |
334
+
335
+ #### Equation Structure
336
+
337
+ ```typescript
338
+ {
339
+ equation: string, // e.g., "y = 2x + 1"
340
+ color?: string, // Line color
341
+ strokeWidth?: number, // Line width
342
+ domain?: { // Optional domain restriction
343
+ min: number,
344
+ max: number
345
+ }
346
+ }
347
+ ```
348
+
349
+ #### Examples
350
+
351
+ **Linear function:**
352
+ ```javascript
353
+ plane.loadFromJSON({
354
+ xMin: -5,
355
+ xMax: 5,
356
+ yMin: -5,
357
+ yMax: 5,
358
+ graphEquations: [
359
+ { equation: 'y = 2x + 1', color: '#3B82F6', strokeWidth: 2 }
360
+ ],
361
+ xLabel: "x",
362
+ yLabel: "y"
363
+ });
364
+ ```
365
+
366
+ **Multiple functions:**
367
+ ```javascript
368
+ plane.loadFromJSON({
369
+ xMin: -10,
370
+ xMax: 10,
371
+ yMin: -10,
372
+ yMax: 10,
373
+ graphEquations: [
374
+ { equation: 'y = x^2', color: '#e11d48', strokeWidth: 2 },
375
+ { equation: 'y = 2x + 1', color: '#3B82F6', strokeWidth: 2 },
376
+ { equation: 'y = -x^2 + 5', color: '#10B981', strokeWidth: 2 }
377
+ ]
378
+ });
379
+ ```
380
+
381
+ **With points and shapes:**
382
+ ```javascript
383
+ plane.loadFromJSON({
384
+ xMin: -5,
385
+ xMax: 5,
386
+ yMin: -5,
387
+ yMax: 5,
388
+ graphEquations: [
389
+ { equation: 'y = x^2 - 4', color: '#e11d48' }
390
+ ],
391
+ dotValues: [
392
+ [-2, 0, "blue"], // [x, y, color]
393
+ [2, 0, "blue"],
394
+ [0, -4, "red"]
395
+ ],
396
+ lineSegments: [
397
+ {
398
+ point1: [-2, 0],
399
+ point2: [2, 0],
400
+ color: "green",
401
+ strokeWidth: 1
402
+ }
403
+ ]
404
+ });
405
+ ```
406
+
407
+ ---
408
+
409
+ ### Shapes
410
+
411
+ OMD provides several geometric shapes that can be used standalone or within a coordinate plane.
412
+
413
+ #### Circle
414
+
415
+ ```javascript
416
+ import { omdCircle } from '@teachinglab/omd';
417
+
418
+ const circle = new omdCircle();
419
+ circle.loadFromJSON({
420
+ radius: 10,
421
+ color: "#FF0000"
422
+ });
423
+ ```
424
+
425
+ #### Rectangle
426
+
427
+ ```javascript
428
+ import { omdRectangle } from '@teachinglab/omd';
429
+
430
+ const rect = new omdRectangle();
431
+ rect.loadFromJSON({
432
+ width: 20,
433
+ height: 10,
434
+ color: "#00FF00"
435
+ });
436
+ ```
437
+
438
+ #### Regular Polygon
439
+
440
+ ```javascript
441
+ import { omdRegularPolygon } from '@teachinglab/omd';
442
+
443
+ const polygon = new omdRegularPolygon();
444
+ polygon.loadFromJSON({
445
+ sides: 6, // Hexagon
446
+ radius: 15,
447
+ color: "#0000FF"
448
+ });
449
+ ```
450
+
451
+ #### Ellipse
452
+
453
+ ```javascript
454
+ import { omdEllipse } from '@teachinglab/omd';
455
+
456
+ const ellipse = new omdEllipse();
457
+ ellipse.loadFromJSON({
458
+ radiusX: 20,
459
+ radiusY: 10,
460
+ color: "#FFFF00"
461
+ });
462
+ ```
463
+
464
+ #### Right Triangle
465
+
466
+ ```javascript
467
+ import { omdRightTriangle } from '@teachinglab/omd';
468
+
469
+ const triangle = new omdRightTriangle();
470
+ triangle.loadFromJSON({
471
+ base: 10,
472
+ height: 15,
473
+ color: "#FF00FF"
474
+ });
475
+ ```
476
+
477
+ #### Isosceles Triangle
478
+
479
+ ```javascript
480
+ import { omdIsoscelesTriangle } from '@teachinglab/omd';
481
+
482
+ const triangle = new omdIsoscelesTriangle();
483
+ triangle.loadFromJSON({
484
+ base: 10,
485
+ height: 15,
486
+ color: "#00FFFF"
487
+ });
488
+ ```
489
+
490
+ #### Using Shapes in Coordinate Plane
491
+
492
+ ```javascript
493
+ plane.loadFromJSON({
494
+ xMin: -5,
495
+ xMax: 5,
496
+ yMin: -5,
497
+ yMax: 5,
498
+ shapeSet: [
499
+ { omdType: 'circle', radius: 2, color: '#FF6B6B' },
500
+ { omdType: 'rectangle', width: 3, height: 2, color: '#4ECDC4' },
501
+ { omdType: 'regularPolygon', sides: 6, radius: 1.5, color: '#45B7D1' }
502
+ ]
503
+ });
504
+ ```
505
+
506
+ ---
507
+
508
+ ### Spinner
509
+
510
+ `omdSpinner` creates circular spinners for probability and division activities.
511
+
512
+ #### Basic Usage
513
+
514
+ ```javascript
515
+ import { omdSpinner } from '@teachinglab/omd';
516
+
517
+ const spinner = new omdSpinner();
518
+ spinner.loadFromJSON({
519
+ divisions: 8,
520
+ arrowPosition: 3,
521
+ size: "medium"
522
+ });
523
+ ```
524
+
525
+ #### Properties
526
+
527
+ | Property | Type | Default | Description |
528
+ |----------|------|---------|-------------|
529
+ | `divisions` | number | required | Number of spinner divisions |
530
+ | `arrowPosition` | number | 0 | Initial arrow position |
531
+ | `size` | "small" \| "medium" \| "large" | "medium" | Spinner size |
532
+
533
+ #### Examples
534
+
535
+ **Four equal parts:**
536
+ ```javascript
537
+ spinner.loadFromJSON({
538
+ divisions: 4,
539
+ arrowPosition: 0
540
+ });
541
+ ```
542
+
543
+ **Probability spinner:**
544
+ ```javascript
545
+ spinner.loadFromJSON({
546
+ divisions: 10,
547
+ arrowPosition: 5,
548
+ size: "large"
549
+ });
550
+ ```
551
+
552
+ ---
553
+
554
+ ## Data Display
555
+
556
+ ### Tables
557
+
558
+ `omdTable` creates data tables with customizable styling.
559
+
560
+ #### Basic Usage
561
+
562
+ ```javascript
563
+ import { omdTable } from '@teachinglab/omd';
564
+
565
+ const table = new omdTable();
566
+ table.loadFromJSON({
567
+ equation: "y = x^2",
568
+ headers: ["x", "y"],
569
+ xMin: -5,
570
+ xMax: 5,
571
+ stepSize: 1,
572
+ title: "Quadratic Function"
573
+ });
574
+ ```
575
+
576
+ #### Properties
577
+
578
+ | Property | Type | Default | Description |
579
+ |----------|------|---------|-------------|
580
+ | `equation` | string | "" | Equation to generate data |
581
+ | `data` | [number, number][] | [] | Manual data input |
582
+ | `headers` | string[] | ['x', 'y'] | Column headers |
583
+ | `xMin` | number | -5 | Minimum x value |
584
+ | `xMax` | number | 5 | Maximum x value |
585
+ | `stepSize` | number | 1 | Increment between x values |
586
+ | `title` | string | "" | Table title |
587
+ | `fontSize` | number | 14 | Cell font size |
588
+ | `headerFontSize` | number | 16 | Header font size |
589
+ | `fontFamily` | string | "Albert Sans" | Font family |
590
+ | `cellHeight` | number | 35 | Cell height in pixels |
591
+ | `backgroundColor` | string | lightGray | Background color |
592
+ | `alternatingRowColors` | string[] | null | Alternating row colors |
593
+
594
+ #### Examples
595
+
596
+ **From equation:**
597
+ ```javascript
598
+ table.loadFromJSON({
599
+ equation: "y = 2x + 1",
600
+ headers: ["x", "y"],
601
+ xMin: -3,
602
+ xMax: 3,
603
+ stepSize: 1,
604
+ title: "Linear Function",
605
+ alternatingRowColors: ["#F0F0F0", "#FFFFFF"]
606
+ });
607
+ ```
608
+
609
+ **Manual data:**
610
+ ```javascript
611
+ table.loadFromJSON({
612
+ data: [
613
+ [0, 0],
614
+ [1, 1],
615
+ [2, 4],
616
+ [3, 9]
617
+ ],
618
+ headers: ["x", "x²"],
619
+ title: "Squares",
620
+ fontSize: 16,
621
+ cellHeight: 40
622
+ });
623
+ ```
624
+
625
+ **Styled table:**
626
+ ```javascript
627
+ table.loadFromJSON({
628
+ equation: "y = x^3",
629
+ xMin: -2,
630
+ xMax: 2,
631
+ stepSize: 0.5,
632
+ title: "Cubic Function",
633
+ fontFamily: "Georgia",
634
+ fontSize: 14,
635
+ headerFontSize: 18,
636
+ backgroundColor: "#E3F2FD",
637
+ alternatingRowColors: ["#BBDEFB", "#E3F2FD"]
638
+ });
639
+ ```
640
+
641
+ ---
642
+
643
+ ## Best Practices
644
+
645
+ ### Sizing
646
+
647
+ Most visualization components support size options:
648
+ - `"small"` - Compact display
649
+ - `"medium"` - Standard size (default)
650
+ - `"large"` - Expanded display
651
+
652
+ ### Colors
653
+
654
+ OMD uses a consistent color system:
655
+ - Use hex colors for consistency: `#FF6B6B`
656
+ - Access built-in colors: `omdColor.lightGray`
657
+ - Ensure sufficient contrast for accessibility
658
+
659
+ ### Performance
660
+
661
+ For coordinate planes with many equations:
662
+ - Limit the number of simultaneous graphs
663
+ - Use domain restrictions when possible
664
+ - Consider the viewport size (xMin/xMax, yMin/yMax)
665
+
666
+ ### Responsive Design
667
+
668
+ Set appropriate container dimensions:
669
+ ```css
670
+ #math-container {
671
+ width: 100%;
672
+ max-width: 800px;
673
+ height: 400px;
674
+ }
675
+ ```
676
+
677
+ ## Next Steps
678
+
679
+ - **[Equations Guide](./equations.md)** - Learn about equation components
680
+ - **[JSON Schemas](../json-schemas.md)** - Complete reference
681
+ - **[API Reference](../api/api-reference.md)** - Detailed documentation
682
+ - **[Examples](./quick-examples.md)** - More code samples