@workflow/web-shared 5.0.0-beta.21 → 5.0.0-beta.23

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 (39) hide show
  1. package/dist/components/index.d.ts +1 -0
  2. package/dist/components/index.d.ts.map +1 -1
  3. package/dist/components/index.js +2 -1
  4. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts +5 -0
  5. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.d.ts.map +1 -0
  6. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.js +55 -0
  7. package/dist/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  8. package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
  9. package/dist/components/new-trace-viewer/trace-viewer.js +4 -4
  10. package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
  11. package/dist/components/sidebar/attribute-panel.js +4 -1
  12. package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
  13. package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
  14. package/dist/components/sidebar/copyable-data-block.js +2 -2
  15. package/dist/components/ui/data-inspector.d.ts +6 -6
  16. package/dist/components/ui/data-inspector.d.ts.map +1 -1
  17. package/dist/components/ui/data-inspector.js +234 -91
  18. package/dist/components/ui/data-inspector.styles.d.ts +29 -0
  19. package/dist/components/ui/data-inspector.styles.d.ts.map +1 -0
  20. package/dist/components/ui/data-inspector.styles.js +95 -0
  21. package/dist/components/ui/kbd.d.ts +9 -5
  22. package/dist/components/ui/kbd.d.ts.map +1 -1
  23. package/dist/components/ui/kbd.js +22 -3
  24. package/dist/lib/hydration.js +3 -3
  25. package/package.json +3 -4
  26. package/src/components/index.ts +1 -0
  27. package/src/components/new-trace-viewer/components/trace-shortcut-helper.module.css +20 -0
  28. package/src/components/new-trace-viewer/components/trace-shortcut-helper.tsx +116 -0
  29. package/src/components/new-trace-viewer/trace-viewer.tsx +9 -4
  30. package/src/components/sidebar/attribute-panel.tsx +4 -0
  31. package/src/components/sidebar/copyable-data-block.tsx +1 -1
  32. package/src/components/ui/data-inspector.styles.ts +96 -0
  33. package/src/components/ui/data-inspector.tsx +492 -186
  34. package/src/components/ui/kbd.tsx +33 -11
  35. package/src/lib/hydration.ts +2 -2
  36. package/dist/components/ui/inspector-theme.d.ts +0 -95
  37. package/dist/components/ui/inspector-theme.d.ts.map +0 -1
  38. package/dist/components/ui/inspector-theme.js +0 -82
  39. package/src/components/ui/inspector-theme.ts +0 -110
@@ -1,21 +1,43 @@
1
- import type { ReactNode } from 'react';
1
+ import { cva, type VariantProps } from 'class-variance-authority';
2
+ import type { ComponentProps, ReactNode } from 'react';
2
3
  import { cn } from '../../lib/utils';
3
4
 
5
+ const kbdVariants = cva(
6
+ 'inline-flex items-center justify-center rounded px-1 text-center font-sans',
7
+ {
8
+ variants: {
9
+ variant: {
10
+ subtle: 'bg-background-100/20',
11
+ outline:
12
+ 'border border-gray-alpha-400 bg-background-100 font-medium text-gray-900',
13
+ },
14
+ size: {
15
+ default: 'h-5 min-w-5 text-xs leading-none',
16
+ compact: 'h-4 min-h-4 min-w-4 text-[11px] leading-none',
17
+ search: 'h-5 min-h-5 min-w-5 text-[13px] leading-[1.7em]',
18
+ },
19
+ },
20
+ defaultVariants: {
21
+ variant: 'subtle',
22
+ size: 'default',
23
+ },
24
+ }
25
+ );
26
+
27
+ type KbdProps = ComponentProps<'kbd'> & VariantProps<typeof kbdVariants>;
28
+
4
29
  export function Kbd({
5
30
  children,
6
31
  className,
7
- }: {
8
- children: ReactNode;
9
- className?: string;
10
- }): ReactNode {
32
+ variant,
33
+ size,
34
+ ...props
35
+ }: KbdProps): ReactNode {
11
36
  return (
12
- <kbd
13
- className={cn(
14
- 'inline-flex h-5 min-w-5 items-center justify-center rounded bg-background-100/20 px-1 text-center font-sans text-xs leading-none',
15
- className
16
- )}
17
- >
37
+ <kbd className={cn(kbdVariants({ variant, size, className }))} {...props}>
18
38
  {children}
19
39
  </kbd>
20
40
  );
21
41
  }
42
+
43
+ export { kbdVariants };
@@ -298,7 +298,7 @@ export function getWebRevivers(): Revivers {
298
298
 
299
299
  // Web-specific overrides for class instances.
300
300
  // Create objects with a dynamically-named constructor so that
301
- // react-inspector shows the class name (it reads constructor.name).
301
+ // the data inspector shows the class name (it reads constructor.name).
302
302
  Class: (value) => `<class:${extractClassName(value.classId)}>`,
303
303
  Instance: (value) => {
304
304
  // Run instances are rendered as clickable RunRef badges
@@ -311,7 +311,7 @@ export function getWebRevivers(): Revivers {
311
311
  const props =
312
312
  data && typeof data === 'object' ? { ...data } : { value: data };
313
313
  // Create a constructor with the right name using computed property
314
- // so react-inspector's `object.constructor.name` shows the class name.
314
+ // so the data inspector's `object.constructor.name` shows the class name.
315
315
  // Must use `function` (not arrow) because arrow functions have no .prototype.
316
316
  // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype
317
317
  const ctor = { [className]: function () {} }[className]!;
@@ -1,95 +0,0 @@
1
- /**
2
- * Shared theme configuration for react-inspector's ObjectInspector.
3
- *
4
- * Colors follow Geist's Shiki JSON palette so the inspector reads the same
5
- * as highlighted code blocks across the product:
6
- * - property names / punctuation: --ds-gray-1000 (default foreground)
7
- * - strings / numbers / booleans: --ds-green-900
8
- * - null / undefined: --ds-gray-900 (muted)
9
- * - regexp / function: --ds-purple-900
10
- * - date: --ds-pink-900
11
- *
12
- * Because the `--ds-*` tokens adapt to theme automatically, the light and
13
- * dark objects are intentionally identical.
14
- */
15
- export interface InspectorThemeExtended {
16
- /** Color for Date values (Node: 'magenta') */
17
- OBJECT_VALUE_DATE_COLOR: string;
18
- }
19
- export declare const inspectorThemeExtendedLight: InspectorThemeExtended;
20
- export declare const inspectorThemeExtendedDark: InspectorThemeExtended;
21
- export declare const inspectorThemeLight: {
22
- BASE_COLOR: string;
23
- OBJECT_NAME_COLOR: string;
24
- OBJECT_VALUE_STRING_COLOR: string;
25
- OBJECT_VALUE_SYMBOL_COLOR: string;
26
- OBJECT_VALUE_NUMBER_COLOR: string;
27
- OBJECT_VALUE_BOOLEAN_COLOR: string;
28
- OBJECT_VALUE_NULL_COLOR: string;
29
- OBJECT_VALUE_UNDEFINED_COLOR: string;
30
- OBJECT_VALUE_REGEXP_COLOR: string;
31
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: string;
32
- HTML_TAG_COLOR: string;
33
- HTML_TAGNAME_COLOR: string;
34
- HTML_ATTRIBUTE_NAME_COLOR: string;
35
- HTML_ATTRIBUTE_VALUE_COLOR: string;
36
- HTML_COMMENT_COLOR: string;
37
- HTML_DOCTYPE_COLOR: string;
38
- ARROW_COLOR: string;
39
- TABLE_BORDER_COLOR: string;
40
- TABLE_TH_BACKGROUND_COLOR: string;
41
- TABLE_TH_HOVER_COLOR: string;
42
- TABLE_SORT_ICON_COLOR: string;
43
- BASE_FONT_SIZE: string;
44
- BASE_LINE_HEIGHT: number;
45
- BASE_BACKGROUND_COLOR: string;
46
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: number;
47
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: number;
48
- HTML_TAGNAME_TEXT_TRANSFORM: "lowercase";
49
- ARROW_MARGIN_RIGHT: number;
50
- ARROW_FONT_SIZE: number;
51
- TREENODE_FONT_FAMILY: string;
52
- TREENODE_FONT_SIZE: string;
53
- TREENODE_LINE_HEIGHT: number;
54
- TREENODE_PADDING_LEFT: number;
55
- TABLE_DATA_BACKGROUND_IMAGE: string;
56
- TABLE_DATA_BACKGROUND_SIZE: string;
57
- };
58
- export declare const inspectorThemeDark: {
59
- BASE_COLOR: string;
60
- OBJECT_NAME_COLOR: string;
61
- OBJECT_VALUE_STRING_COLOR: string;
62
- OBJECT_VALUE_SYMBOL_COLOR: string;
63
- OBJECT_VALUE_NUMBER_COLOR: string;
64
- OBJECT_VALUE_BOOLEAN_COLOR: string;
65
- OBJECT_VALUE_NULL_COLOR: string;
66
- OBJECT_VALUE_UNDEFINED_COLOR: string;
67
- OBJECT_VALUE_REGEXP_COLOR: string;
68
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: string;
69
- HTML_TAG_COLOR: string;
70
- HTML_TAGNAME_COLOR: string;
71
- HTML_ATTRIBUTE_NAME_COLOR: string;
72
- HTML_ATTRIBUTE_VALUE_COLOR: string;
73
- HTML_COMMENT_COLOR: string;
74
- HTML_DOCTYPE_COLOR: string;
75
- ARROW_COLOR: string;
76
- TABLE_BORDER_COLOR: string;
77
- TABLE_TH_BACKGROUND_COLOR: string;
78
- TABLE_TH_HOVER_COLOR: string;
79
- TABLE_SORT_ICON_COLOR: string;
80
- BASE_FONT_SIZE: string;
81
- BASE_LINE_HEIGHT: number;
82
- BASE_BACKGROUND_COLOR: string;
83
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: number;
84
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: number;
85
- HTML_TAGNAME_TEXT_TRANSFORM: "lowercase";
86
- ARROW_MARGIN_RIGHT: number;
87
- ARROW_FONT_SIZE: number;
88
- TREENODE_FONT_FAMILY: string;
89
- TREENODE_FONT_SIZE: string;
90
- TREENODE_LINE_HEIGHT: number;
91
- TREENODE_PADDING_LEFT: number;
92
- TABLE_DATA_BACKGROUND_IMAGE: string;
93
- TABLE_DATA_BACKGROUND_SIZE: string;
94
- };
95
- //# sourceMappingURL=inspector-theme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspector-theme.d.ts","sourceRoot":"","sources":["../../../src/components/ui/inspector-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,eAAO,MAAM,2BAA2B,EAAE,sBAEzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,sBAExC,CAAC;AAwEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAC;AAM9C,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAC"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Shared theme configuration for react-inspector's ObjectInspector.
3
- *
4
- * Colors follow Geist's Shiki JSON palette so the inspector reads the same
5
- * as highlighted code blocks across the product:
6
- * - property names / punctuation: --ds-gray-1000 (default foreground)
7
- * - strings / numbers / booleans: --ds-green-900
8
- * - null / undefined: --ds-gray-900 (muted)
9
- * - regexp / function: --ds-purple-900
10
- * - date: --ds-pink-900
11
- *
12
- * Because the `--ds-*` tokens adapt to theme automatically, the light and
13
- * dark objects are intentionally identical.
14
- */
15
- export const inspectorThemeExtendedLight = {
16
- OBJECT_VALUE_DATE_COLOR: 'var(--ds-pink-900)',
17
- };
18
- export const inspectorThemeExtendedDark = {
19
- OBJECT_VALUE_DATE_COLOR: 'var(--ds-pink-900)',
20
- };
21
- // ---------------------------------------------------------------------------
22
- // Shared structural values (same in both themes)
23
- // ---------------------------------------------------------------------------
24
- const shared = {
25
- BASE_FONT_SIZE: '11px',
26
- BASE_LINE_HEIGHT: 1.4,
27
- BASE_BACKGROUND_COLOR: 'transparent',
28
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
29
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
30
- HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase',
31
- ARROW_MARGIN_RIGHT: 3,
32
- ARROW_FONT_SIZE: 12,
33
- TREENODE_FONT_FAMILY: 'var(--font-mono)',
34
- TREENODE_FONT_SIZE: '11px',
35
- TREENODE_LINE_HEIGHT: 1.4,
36
- TREENODE_PADDING_LEFT: 12,
37
- TABLE_DATA_BACKGROUND_IMAGE: 'none',
38
- TABLE_DATA_BACKGROUND_SIZE: '0',
39
- };
40
- // ---------------------------------------------------------------------------
41
- // Light theme
42
- // ---------------------------------------------------------------------------
43
- const geistTheme = {
44
- ...shared,
45
- // Base text
46
- BASE_COLOR: 'var(--ds-gray-1000)',
47
- // Property names — default foreground (matches JSON key color in Geist Shiki)
48
- OBJECT_NAME_COLOR: 'var(--ds-gray-1000)',
49
- // Strings & symbols — green
50
- OBJECT_VALUE_STRING_COLOR: 'var(--ds-green-900)',
51
- OBJECT_VALUE_SYMBOL_COLOR: 'var(--ds-green-900)',
52
- // Numbers & booleans — green (Geist JSON tokens)
53
- OBJECT_VALUE_NUMBER_COLOR: 'var(--ds-green-900)',
54
- OBJECT_VALUE_BOOLEAN_COLOR: 'var(--ds-green-900)',
55
- // null — muted foreground
56
- OBJECT_VALUE_NULL_COLOR: 'var(--ds-gray-900)',
57
- // undefined — muted foreground
58
- OBJECT_VALUE_UNDEFINED_COLOR: 'var(--ds-gray-900)',
59
- // RegExp — purple
60
- OBJECT_VALUE_REGEXP_COLOR: 'var(--ds-purple-900)',
61
- // Functions — purple
62
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'var(--ds-purple-900)',
63
- // HTML (rarely used here, kept consistent with the palette)
64
- HTML_TAG_COLOR: 'var(--ds-gray-900)',
65
- HTML_TAGNAME_COLOR: 'var(--ds-blue-900)',
66
- HTML_ATTRIBUTE_NAME_COLOR: 'var(--ds-amber-900)',
67
- HTML_ATTRIBUTE_VALUE_COLOR: 'var(--ds-green-900)',
68
- HTML_COMMENT_COLOR: 'var(--ds-gray-700)',
69
- HTML_DOCTYPE_COLOR: 'var(--ds-gray-700)',
70
- // Structural
71
- ARROW_COLOR: 'var(--ds-gray-700)',
72
- TABLE_BORDER_COLOR: 'var(--ds-gray-300)',
73
- TABLE_TH_BACKGROUND_COLOR: 'var(--ds-gray-100)',
74
- TABLE_TH_HOVER_COLOR: 'var(--ds-gray-200)',
75
- TABLE_SORT_ICON_COLOR: 'var(--ds-gray-700)',
76
- };
77
- export const inspectorThemeLight = geistTheme;
78
- // ---------------------------------------------------------------------------
79
- // Dark theme
80
- // ---------------------------------------------------------------------------
81
- export const inspectorThemeDark = geistTheme;
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zcGVjdG9yLXRoZW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdWkvaW5zcGVjdG9yLXRoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFZSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBMkI7SUFDakUsdUJBQXVCLEVBQUUsb0JBQW9CO0NBQzlDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBMkI7SUFDaEUsdUJBQXVCLEVBQUUsb0JBQW9CO0NBQzlDLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUsaURBQWlEO0FBQ2pELDhFQUE4RTtBQUU5RSxNQUFNLE1BQU0sR0FBRztJQUNiLGNBQWMsRUFBRSxNQUFNO0lBQ3RCLGdCQUFnQixFQUFFLEdBQUc7SUFDckIscUJBQXFCLEVBQUUsYUFBYTtJQUNwQyxtQ0FBbUMsRUFBRSxFQUFFO0lBQ3ZDLG9DQUFvQyxFQUFFLENBQUM7SUFDdkMsMkJBQTJCLEVBQUUsV0FBb0I7SUFDakQsa0JBQWtCLEVBQUUsQ0FBQztJQUNyQixlQUFlLEVBQUUsRUFBRTtJQUNuQixvQkFBb0IsRUFBRSxrQkFBa0I7SUFDeEMsa0JBQWtCLEVBQUUsTUFBTTtJQUMxQixvQkFBb0IsRUFBRSxHQUFHO0lBQ3pCLHFCQUFxQixFQUFFLEVBQUU7SUFDekIsMkJBQTJCLEVBQUUsTUFBTTtJQUNuQywwQkFBMEIsRUFBRSxHQUFHO0NBQ2hDLENBQUM7QUFFRiw4RUFBOEU7QUFDOUUsY0FBYztBQUNkLDhFQUE4RTtBQUU5RSxNQUFNLFVBQVUsR0FBRztJQUNqQixHQUFHLE1BQU07SUFFVCxZQUFZO0lBQ1osVUFBVSxFQUFFLHFCQUFxQjtJQUVqQyw4RUFBOEU7SUFDOUUsaUJBQWlCLEVBQUUscUJBQXFCO0lBRXhDLDRCQUE0QjtJQUM1Qix5QkFBeUIsRUFBRSxxQkFBcUI7SUFDaEQseUJBQXlCLEVBQUUscUJBQXFCO0lBRWhELGlEQUFpRDtJQUNqRCx5QkFBeUIsRUFBRSxxQkFBcUI7SUFDaEQsMEJBQTBCLEVBQUUscUJBQXFCO0lBRWpELDBCQUEwQjtJQUMxQix1QkFBdUIsRUFBRSxvQkFBb0I7SUFFN0MsK0JBQStCO0lBQy9CLDRCQUE0QixFQUFFLG9CQUFvQjtJQUVsRCxrQkFBa0I7SUFDbEIseUJBQXlCLEVBQUUsc0JBQXNCO0lBRWpELHFCQUFxQjtJQUNyQixrQ0FBa0MsRUFBRSxzQkFBc0I7SUFFMUQsNERBQTREO0lBQzVELGNBQWMsRUFBRSxvQkFBb0I7SUFDcEMsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLHlCQUF5QixFQUFFLHFCQUFxQjtJQUNoRCwwQkFBMEIsRUFBRSxxQkFBcUI7SUFDakQsa0JBQWtCLEVBQUUsb0JBQW9CO0lBQ3hDLGtCQUFrQixFQUFFLG9CQUFvQjtJQUV4QyxhQUFhO0lBQ2IsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxrQkFBa0IsRUFBRSxvQkFBb0I7SUFDeEMseUJBQXlCLEVBQUUsb0JBQW9CO0lBQy9DLG9CQUFvQixFQUFFLG9CQUFvQjtJQUMxQyxxQkFBcUIsRUFBRSxvQkFBb0I7Q0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQztBQUU5Qyw4RUFBOEU7QUFDOUUsYUFBYTtBQUNiLDhFQUE4RTtBQUU5RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCB0aGVtZSBjb25maWd1cmF0aW9uIGZvciByZWFjdC1pbnNwZWN0b3IncyBPYmplY3RJbnNwZWN0b3IuXG4gKlxuICogQ29sb3JzIGZvbGxvdyBHZWlzdCdzIFNoaWtpIEpTT04gcGFsZXR0ZSBzbyB0aGUgaW5zcGVjdG9yIHJlYWRzIHRoZSBzYW1lXG4gKiBhcyBoaWdobGlnaHRlZCBjb2RlIGJsb2NrcyBhY3Jvc3MgdGhlIHByb2R1Y3Q6XG4gKiAgIC0gcHJvcGVydHkgbmFtZXMgLyBwdW5jdHVhdGlvbjogLS1kcy1ncmF5LTEwMDAgKGRlZmF1bHQgZm9yZWdyb3VuZClcbiAqICAgLSBzdHJpbmdzIC8gbnVtYmVycyAvIGJvb2xlYW5zOiAtLWRzLWdyZWVuLTkwMFxuICogICAtIG51bGwgLyB1bmRlZmluZWQ6IC0tZHMtZ3JheS05MDAgKG11dGVkKVxuICogICAtIHJlZ2V4cCAvIGZ1bmN0aW9uOiAtLWRzLXB1cnBsZS05MDBcbiAqICAgLSBkYXRlOiAtLWRzLXBpbmstOTAwXG4gKlxuICogQmVjYXVzZSB0aGUgYC0tZHMtKmAgdG9rZW5zIGFkYXB0IHRvIHRoZW1lIGF1dG9tYXRpY2FsbHksIHRoZSBsaWdodCBhbmRcbiAqIGRhcmsgb2JqZWN0cyBhcmUgaW50ZW50aW9uYWxseSBpZGVudGljYWwuXG4gKi9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeHRlbmRlZCBjb2xvciB0b2tlbnMgbm90IHN1cHBvcnRlZCBieSByZWFjdC1pbnNwZWN0b3IncyBidWlsdC1pbiB0aGVtZVxuLy8gc3lzdGVtLCBhcHBsaWVkIHZpYSBvdXIgY3VzdG9tIG5vZGVSZW5kZXJlciBpbiBkYXRhLWluc3BlY3Rvci50c3guXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBJbnNwZWN0b3JUaGVtZUV4dGVuZGVkIHtcbiAgLyoqIENvbG9yIGZvciBEYXRlIHZhbHVlcyAoTm9kZTogJ21hZ2VudGEnKSAqL1xuICBPQkpFQ1RfVkFMVUVfREFURV9DT0xPUjogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgaW5zcGVjdG9yVGhlbWVFeHRlbmRlZExpZ2h0OiBJbnNwZWN0b3JUaGVtZUV4dGVuZGVkID0ge1xuICBPQkpFQ1RfVkFMVUVfREFURV9DT0xPUjogJ3ZhcigtLWRzLXBpbmstOTAwKScsXG59O1xuXG5leHBvcnQgY29uc3QgaW5zcGVjdG9yVGhlbWVFeHRlbmRlZERhcms6IEluc3BlY3RvclRoZW1lRXh0ZW5kZWQgPSB7XG4gIE9CSkVDVF9WQUxVRV9EQVRFX0NPTE9SOiAndmFyKC0tZHMtcGluay05MDApJyxcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hhcmVkIHN0cnVjdHVyYWwgdmFsdWVzIChzYW1lIGluIGJvdGggdGhlbWVzKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmNvbnN0IHNoYXJlZCA9IHtcbiAgQkFTRV9GT05UX1NJWkU6ICcxMXB4JyxcbiAgQkFTRV9MSU5FX0hFSUdIVDogMS40LFxuICBCQVNFX0JBQ0tHUk9VTkRfQ09MT1I6ICd0cmFuc3BhcmVudCcsXG4gIE9CSkVDVF9QUkVWSUVXX0FSUkFZX01BWF9QUk9QRVJUSUVTOiAxMCxcbiAgT0JKRUNUX1BSRVZJRVdfT0JKRUNUX01BWF9QUk9QRVJUSUVTOiA1LFxuICBIVE1MX1RBR05BTUVfVEVYVF9UUkFOU0ZPUk06ICdsb3dlcmNhc2UnIGFzIGNvbnN0LFxuICBBUlJPV19NQVJHSU5fUklHSFQ6IDMsXG4gIEFSUk9XX0ZPTlRfU0laRTogMTIsXG4gIFRSRUVOT0RFX0ZPTlRfRkFNSUxZOiAndmFyKC0tZm9udC1tb25vKScsXG4gIFRSRUVOT0RFX0ZPTlRfU0laRTogJzExcHgnLFxuICBUUkVFTk9ERV9MSU5FX0hFSUdIVDogMS40LFxuICBUUkVFTk9ERV9QQURESU5HX0xFRlQ6IDEyLFxuICBUQUJMRV9EQVRBX0JBQ0tHUk9VTkRfSU1BR0U6ICdub25lJyxcbiAgVEFCTEVfREFUQV9CQUNLR1JPVU5EX1NJWkU6ICcwJyxcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTGlnaHQgdGhlbWVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5jb25zdCBnZWlzdFRoZW1lID0ge1xuICAuLi5zaGFyZWQsXG5cbiAgLy8gQmFzZSB0ZXh0XG4gIEJBU0VfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyxcblxuICAvLyBQcm9wZXJ0eSBuYW1lcyDigJQgZGVmYXVsdCBmb3JlZ3JvdW5kIChtYXRjaGVzIEpTT04ga2V5IGNvbG9yIGluIEdlaXN0IFNoaWtpKVxuICBPQkpFQ1RfTkFNRV9DT0xPUjogJ3ZhcigtLWRzLWdyYXktMTAwMCknLFxuXG4gIC8vIFN0cmluZ3MgJiBzeW1ib2xzIOKAlCBncmVlblxuICBPQkpFQ1RfVkFMVUVfU1RSSU5HX0NPTE9SOiAndmFyKC0tZHMtZ3JlZW4tOTAwKScsXG4gIE9CSkVDVF9WQUxVRV9TWU1CT0xfQ09MT1I6ICd2YXIoLS1kcy1ncmVlbi05MDApJyxcblxuICAvLyBOdW1iZXJzICYgYm9vbGVhbnMg4oCUIGdyZWVuIChHZWlzdCBKU09OIHRva2VucylcbiAgT0JKRUNUX1ZBTFVFX05VTUJFUl9DT0xPUjogJ3ZhcigtLWRzLWdyZWVuLTkwMCknLFxuICBPQkpFQ1RfVkFMVUVfQk9PTEVBTl9DT0xPUjogJ3ZhcigtLWRzLWdyZWVuLTkwMCknLFxuXG4gIC8vIG51bGwg4oCUIG11dGVkIGZvcmVncm91bmRcbiAgT0JKRUNUX1ZBTFVFX05VTExfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTkwMCknLFxuXG4gIC8vIHVuZGVmaW5lZCDigJQgbXV0ZWQgZm9yZWdyb3VuZFxuICBPQkpFQ1RfVkFMVUVfVU5ERUZJTkVEX0NPTE9SOiAndmFyKC0tZHMtZ3JheS05MDApJyxcblxuICAvLyBSZWdFeHAg4oCUIHB1cnBsZVxuICBPQkpFQ1RfVkFMVUVfUkVHRVhQX0NPTE9SOiAndmFyKC0tZHMtcHVycGxlLTkwMCknLFxuXG4gIC8vIEZ1bmN0aW9ucyDigJQgcHVycGxlXG4gIE9CSkVDVF9WQUxVRV9GVU5DVElPTl9QUkVGSVhfQ09MT1I6ICd2YXIoLS1kcy1wdXJwbGUtOTAwKScsXG5cbiAgLy8gSFRNTCAocmFyZWx5IHVzZWQgaGVyZSwga2VwdCBjb25zaXN0ZW50IHdpdGggdGhlIHBhbGV0dGUpXG4gIEhUTUxfVEFHX0NPTE9SOiAndmFyKC0tZHMtZ3JheS05MDApJyxcbiAgSFRNTF9UQUdOQU1FX0NPTE9SOiAndmFyKC0tZHMtYmx1ZS05MDApJyxcbiAgSFRNTF9BVFRSSUJVVEVfTkFNRV9DT0xPUjogJ3ZhcigtLWRzLWFtYmVyLTkwMCknLFxuICBIVE1MX0FUVFJJQlVURV9WQUxVRV9DT0xPUjogJ3ZhcigtLWRzLWdyZWVuLTkwMCknLFxuICBIVE1MX0NPTU1FTlRfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTcwMCknLFxuICBIVE1MX0RPQ1RZUEVfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTcwMCknLFxuXG4gIC8vIFN0cnVjdHVyYWxcbiAgQVJST1dfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTcwMCknLFxuICBUQUJMRV9CT1JERVJfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICBUQUJMRV9USF9CQUNLR1JPVU5EX0NPTE9SOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgVEFCTEVfVEhfSE9WRVJfQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTIwMCknLFxuICBUQUJMRV9TT1JUX0lDT05fQ09MT1I6ICd2YXIoLS1kcy1ncmF5LTcwMCknLFxufTtcblxuZXhwb3J0IGNvbnN0IGluc3BlY3RvclRoZW1lTGlnaHQgPSBnZWlzdFRoZW1lO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIERhcmsgdGhlbWVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgY29uc3QgaW5zcGVjdG9yVGhlbWVEYXJrID0gZ2Vpc3RUaGVtZTtcbiJdfQ==
@@ -1,110 +0,0 @@
1
- /**
2
- * Shared theme configuration for react-inspector's ObjectInspector.
3
- *
4
- * Colors follow Geist's Shiki JSON palette so the inspector reads the same
5
- * as highlighted code blocks across the product:
6
- * - property names / punctuation: --ds-gray-1000 (default foreground)
7
- * - strings / numbers / booleans: --ds-green-900
8
- * - null / undefined: --ds-gray-900 (muted)
9
- * - regexp / function: --ds-purple-900
10
- * - date: --ds-pink-900
11
- *
12
- * Because the `--ds-*` tokens adapt to theme automatically, the light and
13
- * dark objects are intentionally identical.
14
- */
15
-
16
- // ---------------------------------------------------------------------------
17
- // Extended color tokens not supported by react-inspector's built-in theme
18
- // system, applied via our custom nodeRenderer in data-inspector.tsx.
19
- // ---------------------------------------------------------------------------
20
-
21
- export interface InspectorThemeExtended {
22
- /** Color for Date values (Node: 'magenta') */
23
- OBJECT_VALUE_DATE_COLOR: string;
24
- }
25
-
26
- export const inspectorThemeExtendedLight: InspectorThemeExtended = {
27
- OBJECT_VALUE_DATE_COLOR: 'var(--ds-pink-900)',
28
- };
29
-
30
- export const inspectorThemeExtendedDark: InspectorThemeExtended = {
31
- OBJECT_VALUE_DATE_COLOR: 'var(--ds-pink-900)',
32
- };
33
-
34
- // ---------------------------------------------------------------------------
35
- // Shared structural values (same in both themes)
36
- // ---------------------------------------------------------------------------
37
-
38
- const shared = {
39
- BASE_FONT_SIZE: '11px',
40
- BASE_LINE_HEIGHT: 1.4,
41
- BASE_BACKGROUND_COLOR: 'transparent',
42
- OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
43
- OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
44
- HTML_TAGNAME_TEXT_TRANSFORM: 'lowercase' as const,
45
- ARROW_MARGIN_RIGHT: 3,
46
- ARROW_FONT_SIZE: 12,
47
- TREENODE_FONT_FAMILY: 'var(--font-mono)',
48
- TREENODE_FONT_SIZE: '11px',
49
- TREENODE_LINE_HEIGHT: 1.4,
50
- TREENODE_PADDING_LEFT: 12,
51
- TABLE_DATA_BACKGROUND_IMAGE: 'none',
52
- TABLE_DATA_BACKGROUND_SIZE: '0',
53
- };
54
-
55
- // ---------------------------------------------------------------------------
56
- // Light theme
57
- // ---------------------------------------------------------------------------
58
-
59
- const geistTheme = {
60
- ...shared,
61
-
62
- // Base text
63
- BASE_COLOR: 'var(--ds-gray-1000)',
64
-
65
- // Property names — default foreground (matches JSON key color in Geist Shiki)
66
- OBJECT_NAME_COLOR: 'var(--ds-gray-1000)',
67
-
68
- // Strings & symbols — green
69
- OBJECT_VALUE_STRING_COLOR: 'var(--ds-green-900)',
70
- OBJECT_VALUE_SYMBOL_COLOR: 'var(--ds-green-900)',
71
-
72
- // Numbers & booleans — green (Geist JSON tokens)
73
- OBJECT_VALUE_NUMBER_COLOR: 'var(--ds-green-900)',
74
- OBJECT_VALUE_BOOLEAN_COLOR: 'var(--ds-green-900)',
75
-
76
- // null — muted foreground
77
- OBJECT_VALUE_NULL_COLOR: 'var(--ds-gray-900)',
78
-
79
- // undefined — muted foreground
80
- OBJECT_VALUE_UNDEFINED_COLOR: 'var(--ds-gray-900)',
81
-
82
- // RegExp — purple
83
- OBJECT_VALUE_REGEXP_COLOR: 'var(--ds-purple-900)',
84
-
85
- // Functions — purple
86
- OBJECT_VALUE_FUNCTION_PREFIX_COLOR: 'var(--ds-purple-900)',
87
-
88
- // HTML (rarely used here, kept consistent with the palette)
89
- HTML_TAG_COLOR: 'var(--ds-gray-900)',
90
- HTML_TAGNAME_COLOR: 'var(--ds-blue-900)',
91
- HTML_ATTRIBUTE_NAME_COLOR: 'var(--ds-amber-900)',
92
- HTML_ATTRIBUTE_VALUE_COLOR: 'var(--ds-green-900)',
93
- HTML_COMMENT_COLOR: 'var(--ds-gray-700)',
94
- HTML_DOCTYPE_COLOR: 'var(--ds-gray-700)',
95
-
96
- // Structural
97
- ARROW_COLOR: 'var(--ds-gray-700)',
98
- TABLE_BORDER_COLOR: 'var(--ds-gray-300)',
99
- TABLE_TH_BACKGROUND_COLOR: 'var(--ds-gray-100)',
100
- TABLE_TH_HOVER_COLOR: 'var(--ds-gray-200)',
101
- TABLE_SORT_ICON_COLOR: 'var(--ds-gray-700)',
102
- };
103
-
104
- export const inspectorThemeLight = geistTheme;
105
-
106
- // ---------------------------------------------------------------------------
107
- // Dark theme
108
- // ---------------------------------------------------------------------------
109
-
110
- export const inspectorThemeDark = geistTheme;