@kopai/ui 0.0.4 → 0.1.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 (125) hide show
  1. package/README.md +137 -0
  2. package/dist/index.cjs +5069 -3
  3. package/dist/index.d.cts +301 -3
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.mts +302 -3
  6. package/dist/index.d.mts.map +1 -1
  7. package/dist/index.mjs +5010 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/package.json +30 -12
  10. package/src/components/KeyboardShortcuts/KeyboardShortcutsProvider.tsx +113 -0
  11. package/src/components/KeyboardShortcuts/ShortcutsHelpDialog.tsx +82 -0
  12. package/src/components/KeyboardShortcuts/context.ts +23 -0
  13. package/src/components/KeyboardShortcuts/index.ts +8 -0
  14. package/src/components/KeyboardShortcuts/types.ts +11 -0
  15. package/src/components/dashboard/Badge/Badge.stories.tsx +29 -0
  16. package/src/components/dashboard/Badge/index.tsx +32 -0
  17. package/src/components/dashboard/Button/Button.stories.tsx +107 -0
  18. package/src/components/dashboard/Button/index.tsx +63 -0
  19. package/src/components/dashboard/Card/Card.stories.tsx +81 -0
  20. package/src/components/dashboard/Card/index.tsx +58 -0
  21. package/src/components/dashboard/Chart/Chart.stories.tsx +48 -0
  22. package/src/components/dashboard/Chart/index.tsx +74 -0
  23. package/src/components/dashboard/DatePicker/DatePicker.stories.tsx +33 -0
  24. package/src/components/dashboard/DatePicker/index.tsx +41 -0
  25. package/src/components/dashboard/Divider/Divider.stories.tsx +17 -0
  26. package/src/components/dashboard/Divider/index.tsx +49 -0
  27. package/src/components/dashboard/Empty/Empty.stories.tsx +48 -0
  28. package/src/components/dashboard/Empty/index.tsx +46 -0
  29. package/src/components/dashboard/Grid/Grid.stories.tsx +52 -0
  30. package/src/components/dashboard/Grid/index.tsx +26 -0
  31. package/src/components/dashboard/Heading/Heading.stories.tsx +25 -0
  32. package/src/components/dashboard/Heading/index.tsx +27 -0
  33. package/src/components/dashboard/List/List.stories.tsx +37 -0
  34. package/src/components/dashboard/List/index.tsx +24 -0
  35. package/src/components/dashboard/Metric/Metric.stories.tsx +65 -0
  36. package/src/components/dashboard/Metric/index.tsx +36 -0
  37. package/src/components/dashboard/Stack/Stack.stories.tsx +61 -0
  38. package/src/components/dashboard/Stack/index.tsx +33 -0
  39. package/src/components/dashboard/Table/Table.stories.tsx +38 -0
  40. package/src/components/dashboard/Table/index.tsx +104 -0
  41. package/src/components/dashboard/Text/Text.stories.tsx +53 -0
  42. package/src/components/dashboard/Text/index.tsx +18 -0
  43. package/src/components/dashboard/index.ts +46 -0
  44. package/src/components/index.ts +17 -0
  45. package/src/components/observability/LogTimeline/LogDetailPane/AttributesTab.tsx +56 -0
  46. package/src/components/observability/LogTimeline/LogDetailPane/JsonTreeView.tsx +139 -0
  47. package/src/components/observability/LogTimeline/LogDetailPane/index.tsx +271 -0
  48. package/src/components/observability/LogTimeline/LogFilter.stories.tsx +66 -0
  49. package/src/components/observability/LogTimeline/LogFilter.test.tsx +696 -0
  50. package/src/components/observability/LogTimeline/LogFilter.tsx +674 -0
  51. package/src/components/observability/LogTimeline/LogRow.tsx +174 -0
  52. package/src/components/observability/LogTimeline/LogTimeline.stories.tsx +154 -0
  53. package/src/components/observability/LogTimeline/index.tsx +542 -0
  54. package/src/components/observability/LogTimeline/shortcuts.ts +18 -0
  55. package/src/components/observability/MetricHistogram/MetricHistogram.stories.tsx +20 -0
  56. package/src/components/observability/MetricHistogram/index.tsx +303 -0
  57. package/src/components/observability/MetricStat/MetricStat.stories.tsx +30 -0
  58. package/src/components/observability/MetricStat/index.tsx +281 -0
  59. package/src/components/observability/MetricTable/MetricTable.stories.tsx +20 -0
  60. package/src/components/observability/MetricTable/index.tsx +194 -0
  61. package/src/components/observability/MetricTimeSeries/MetricTimeSeries.stories.tsx +28 -0
  62. package/src/components/observability/MetricTimeSeries/index.tsx +462 -0
  63. package/src/components/observability/RawDataTable/RawDataTable.stories.tsx +27 -0
  64. package/src/components/observability/RawDataTable/index.tsx +131 -0
  65. package/src/components/observability/ServiceList/ServiceList.stories.tsx +20 -0
  66. package/src/components/observability/ServiceList/index.tsx +60 -0
  67. package/src/components/observability/ServiceList/shortcuts.ts +6 -0
  68. package/src/components/observability/TabBar/TabBar.stories.tsx +34 -0
  69. package/src/components/observability/TabBar/index.tsx +46 -0
  70. package/src/components/observability/TraceDetail/TraceDetail.stories.tsx +51 -0
  71. package/src/components/observability/TraceDetail/index.tsx +53 -0
  72. package/src/components/observability/TraceSearch/TraceSearch.stories.tsx +49 -0
  73. package/src/components/observability/TraceSearch/index.tsx +292 -0
  74. package/src/components/observability/TraceTimeline/DetailPane/AttributesTab.tsx +152 -0
  75. package/src/components/observability/TraceTimeline/DetailPane/EventsTab.tsx +128 -0
  76. package/src/components/observability/TraceTimeline/DetailPane/LinksTab.tsx +210 -0
  77. package/src/components/observability/TraceTimeline/DetailPane/index.tsx +174 -0
  78. package/src/components/observability/TraceTimeline/SpanRow.tsx +173 -0
  79. package/src/components/observability/TraceTimeline/TimelineBar.tsx +41 -0
  80. package/src/components/observability/TraceTimeline/Tooltip.tsx +42 -0
  81. package/src/components/observability/TraceTimeline/TraceHeader.tsx +88 -0
  82. package/src/components/observability/TraceTimeline/TraceTimeline.stories.tsx +25 -0
  83. package/src/components/observability/TraceTimeline/index.tsx +478 -0
  84. package/src/components/observability/TraceTimeline/shortcuts.ts +16 -0
  85. package/src/components/observability/__fixtures__/logs.ts +476 -0
  86. package/src/components/observability/__fixtures__/metrics.ts +216 -0
  87. package/src/components/observability/__fixtures__/raw-table.ts +204 -0
  88. package/src/components/observability/__fixtures__/services.ts +8 -0
  89. package/src/components/observability/__fixtures__/trace-summaries.ts +81 -0
  90. package/src/components/observability/__fixtures__/traces.ts +396 -0
  91. package/src/components/observability/index.ts +66 -0
  92. package/src/components/observability/renderers/OtelMetricDiscovery.tsx +77 -0
  93. package/src/components/observability/renderers/OtelMetricHistogram.tsx +29 -0
  94. package/src/components/observability/renderers/OtelMetricStat.tsx +44 -0
  95. package/src/components/observability/renderers/OtelMetricTable.tsx +29 -0
  96. package/src/components/observability/renderers/OtelMetricTimeSeries.tsx +30 -0
  97. package/src/components/observability/renderers/index.ts +5 -0
  98. package/src/components/observability/shared/LoadingSkeleton.tsx +43 -0
  99. package/src/components/observability/types.ts +113 -0
  100. package/src/components/observability/utils/attributes.ts +17 -0
  101. package/src/components/observability/utils/colors.ts +29 -0
  102. package/src/components/observability/utils/flatten-tree.ts +53 -0
  103. package/src/components/observability/utils/lttb.ts +121 -0
  104. package/src/components/observability/utils/time.ts +46 -0
  105. package/src/hooks/use-kopai-data.test.ts +296 -0
  106. package/src/hooks/use-kopai-data.ts +64 -0
  107. package/src/hooks/use-live-logs.test.ts +193 -0
  108. package/src/hooks/use-live-logs.ts +113 -0
  109. package/src/index.ts +15 -0
  110. package/src/lib/__snapshots__/generate-prompt-instructions.test.ts.snap +33 -0
  111. package/src/lib/catalog.ts +165 -0
  112. package/src/lib/component-catalog.test.ts +357 -0
  113. package/src/lib/component-catalog.ts +171 -0
  114. package/src/lib/dashboard-datasource.ts +76 -0
  115. package/src/lib/generate-prompt-instructions.test.ts +27 -0
  116. package/src/lib/generate-prompt-instructions.ts +185 -0
  117. package/src/lib/log-buffer.test.ts +88 -0
  118. package/src/lib/log-buffer.ts +62 -0
  119. package/src/lib/observability-catalog.ts +143 -0
  120. package/src/lib/renderer.test.tsx +693 -0
  121. package/src/lib/renderer.tsx +276 -0
  122. package/src/pages/observability.tsx +828 -0
  123. package/src/providers/kopai-provider.tsx +51 -0
  124. package/src/styles/globals.css +46 -0
  125. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,143 @@
1
+ import { createCatalog } from "./component-catalog.js";
2
+ import { z } from "zod";
3
+
4
+ export const observabilityCatalog = createCatalog({
5
+ name: "observability",
6
+ components: {
7
+ // Layout Components
8
+ Card: {
9
+ props: z.object({
10
+ title: z.string().nullable(),
11
+ description: z.string().nullable(),
12
+ padding: z.enum(["sm", "md", "lg"]).nullable(),
13
+ }),
14
+ hasChildren: true,
15
+ description: "A card container with optional title",
16
+ },
17
+
18
+ Grid: {
19
+ props: z.object({
20
+ columns: z.number().min(1).max(4).nullable(),
21
+ gap: z.enum(["sm", "md", "lg"]).nullable(),
22
+ }),
23
+ hasChildren: true,
24
+ description: "Grid layout with configurable columns",
25
+ },
26
+
27
+ Stack: {
28
+ props: z.object({
29
+ direction: z.enum(["horizontal", "vertical"]).nullable(),
30
+ gap: z.enum(["sm", "md", "lg"]).nullable(),
31
+ align: z.enum(["start", "center", "end", "stretch"]).nullable(),
32
+ }),
33
+ hasChildren: true,
34
+ description: "Flex stack for horizontal or vertical layouts",
35
+ },
36
+
37
+ // Typography
38
+ Heading: {
39
+ props: z.object({
40
+ text: z.string(),
41
+ level: z.enum(["h1", "h2", "h3", "h4"]).nullable(),
42
+ }),
43
+ hasChildren: false,
44
+ description: "Section heading",
45
+ },
46
+
47
+ Text: {
48
+ props: z.object({
49
+ content: z.string(),
50
+ variant: z.enum(["body", "caption", "label"]).nullable(),
51
+ color: z
52
+ .enum(["default", "muted", "success", "warning", "danger"])
53
+ .nullable(),
54
+ }),
55
+ hasChildren: false,
56
+ description: "Text paragraph",
57
+ },
58
+
59
+ // Status Components
60
+ Badge: {
61
+ props: z.object({
62
+ text: z.string(),
63
+ variant: z
64
+ .enum(["default", "success", "warning", "danger", "info"])
65
+ .nullable(),
66
+ }),
67
+ hasChildren: false,
68
+ description: "Small status badge",
69
+ },
70
+
71
+ Divider: {
72
+ props: z.object({
73
+ label: z.string().nullable(),
74
+ }),
75
+ hasChildren: false,
76
+ description: "Visual divider",
77
+ },
78
+
79
+ Empty: {
80
+ props: z.object({
81
+ title: z.string(),
82
+ description: z.string().nullable(),
83
+ action: z.string().nullable(),
84
+ actionLabel: z.string().nullable(),
85
+ }),
86
+ hasChildren: false,
87
+ description: "Empty state placeholder",
88
+ },
89
+
90
+ // Observability Components
91
+ LogTimeline: {
92
+ props: z.object({ height: z.number().nullable() }),
93
+ hasChildren: false,
94
+ description:
95
+ "Log timeline with virtual scroll, severity filtering, detail pane",
96
+ },
97
+
98
+ TraceDetail: {
99
+ props: z.object({ height: z.number().nullable() }),
100
+ hasChildren: false,
101
+ description:
102
+ "Trace detail with traceId input field and waterfall timeline",
103
+ },
104
+
105
+ MetricTimeSeries: {
106
+ props: z.object({
107
+ height: z.number().nullable(),
108
+ showBrush: z.boolean().nullable(),
109
+ }),
110
+ hasChildren: false,
111
+ description: "Time series line chart for Gauge/Sum metrics",
112
+ },
113
+
114
+ MetricHistogram: {
115
+ props: z.object({ height: z.number().nullable() }),
116
+ hasChildren: false,
117
+ description: "Histogram bar chart for distribution metrics",
118
+ },
119
+
120
+ MetricStat: {
121
+ props: z.object({
122
+ label: z.string().nullable(),
123
+ showSparkline: z.boolean().nullable(),
124
+ }),
125
+ hasChildren: false,
126
+ description:
127
+ "Single metric KPI card with sparkline and threshold coloring",
128
+ },
129
+
130
+ MetricTable: {
131
+ props: z.object({ maxRows: z.number().nullable() }),
132
+ hasChildren: false,
133
+ description: "Tabular display of metric data points",
134
+ },
135
+
136
+ MetricDiscovery: {
137
+ props: z.object({}),
138
+ hasChildren: false,
139
+ description:
140
+ "Table of discovered metric names, types, units and descriptions",
141
+ },
142
+ },
143
+ });