termcast 1.3.52 → 1.3.54

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 (50) hide show
  1. package/dist/app.d.ts.map +1 -1
  2. package/dist/app.js +209 -7
  3. package/dist/app.js.map +1 -1
  4. package/dist/cli.js +4 -4
  5. package/dist/cli.js.map +1 -1
  6. package/dist/components/candle-chart.d.ts +110 -0
  7. package/dist/components/candle-chart.d.ts.map +1 -0
  8. package/dist/components/candle-chart.js +295 -0
  9. package/dist/components/candle-chart.js.map +1 -0
  10. package/dist/components/list.d.ts.map +1 -1
  11. package/dist/components/list.js +3 -0
  12. package/dist/components/list.js.map +1 -1
  13. package/dist/components/table.d.ts +2 -0
  14. package/dist/components/table.d.ts.map +1 -1
  15. package/dist/components/table.js +41 -4
  16. package/dist/components/table.js.map +1 -1
  17. package/dist/examples/simple-candle-chart-data.d.ts +9064 -0
  18. package/dist/examples/simple-candle-chart-data.d.ts.map +1 -0
  19. package/dist/examples/simple-candle-chart-data.js +12683 -0
  20. package/dist/examples/simple-candle-chart-data.js.map +1 -0
  21. package/dist/examples/simple-candle-chart.d.ts +2 -0
  22. package/dist/examples/simple-candle-chart.d.ts.map +1 -0
  23. package/dist/examples/simple-candle-chart.js +125 -0
  24. package/dist/examples/simple-candle-chart.js.map +1 -0
  25. package/dist/index.d.ts +2 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/internal/dialog.d.ts +1 -0
  30. package/dist/internal/dialog.d.ts.map +1 -1
  31. package/dist/internal/dialog.js +4 -0
  32. package/dist/internal/dialog.js.map +1 -1
  33. package/dist/state.d.ts +1 -0
  34. package/dist/state.d.ts.map +1 -1
  35. package/dist/state.js.map +1 -1
  36. package/package.json +1 -1
  37. package/src/app.tsx +269 -8
  38. package/src/cli.tsx +5 -5
  39. package/src/components/candle-chart.tsx +410 -0
  40. package/src/components/list.tsx +3 -0
  41. package/src/components/table.tsx +46 -4
  42. package/src/examples/simple-candle-chart-data.ts +12683 -0
  43. package/src/examples/simple-candle-chart.tsx +363 -0
  44. package/src/examples/simple-candle-chart.vitest.tsx +269 -0
  45. package/src/examples/simple-detail-table.vitest.tsx +2 -2
  46. package/src/examples/simple-table-wrap.vitest.tsx +19 -19
  47. package/src/examples/table-flex-grow.vitest.tsx +8 -8
  48. package/src/index.tsx +7 -0
  49. package/src/internal/dialog.tsx +5 -0
  50. package/src/state.tsx +1 -0
@@ -35,25 +35,20 @@ test('wrapText table shows full prose across multiple lines', async () => {
35
35
 
36
36
  Wrapping Table
37
37
 
38
- Feature Description
39
- OAuth Proxy Handles the full OAuth
40
- authorization code flow including
41
- PKCE verification, token exchange,
42
- and refresh. The proxy keeps client
43
- secrets server-side so CLI tools
44
- never need to store them locally.
45
-
46
- Hot Reload Watches source files for changes
47
- and rebuilds the extension bundle
48
- automatically. The TUI updates in
49
- place without losing navigation
50
- state or scroll position.
51
- Compiled Mode Extensions can be compiled into
52
- standalone binaries that embed the
53
- package.json and all command
54
- components. No filesystem paths are
55
- hardcoded, making the binary fully
56
- portable.
38
+ Feature Description
39
+ OAuth Proxy Handles the full OAuth authorization code flow
40
+ including PKCE verification, token exchange, and
41
+ refresh. The proxy keeps client secrets server-
42
+ side so CLI tools never need to store them
43
+ locally.
44
+ Hot Reload Watches source files for changes and rebuilds the
45
+ extension bundle automatically. The TUI updates
46
+ in place without losing navigation state or
47
+ scroll position.
48
+ Compiled Mode Extensions can be compiled into standalone
49
+ binaries that embed the package.json and all
50
+ command components. No filesystem paths are
51
+ hardcoded, making the binary fully portable.
57
52
 
58
53
  Non-wrapping Table (default)
59
54
 
@@ -76,6 +71,11 @@ test('wrapText table shows full prose across multiple lines', async () => {
76
71
 
77
72
 
78
73
 
74
+
75
+
76
+
77
+
78
+
79
79
 
80
80
 
81
81
 
@@ -40,18 +40,18 @@ test('flexGrow table fills remaining space next to fixed-width label', async ()
40
40
 
41
41
  With flexGrow=1 + wrapText (fills remaining space)
42
42
 
43
- Config: Key Value
44
- version 2.1.0
45
- license MIT
46
- author termcast
43
+ Config: Key Value
44
+ version 2.1.0
45
+ license MIT
46
+ author termcast
47
47
 
48
48
 
49
49
  Width=auto + wrapText (content-sized, no stretch)
50
50
 
51
- Config: KeVa
52
- ve2.
53
- liMI
54
- aute
51
+ Config: Key Value
52
+ version 2.1.0
53
+ license MIT
54
+ author termcast
55
55
 
56
56
 
57
57
  With flexGrow=1 no wrapText (column-based)
package/src/index.tsx CHANGED
@@ -86,6 +86,13 @@ export type {
86
86
  BarGraphSeriesProps,
87
87
  } from 'termcast/src/components/bar-graph'
88
88
 
89
+ // Core UI Components - CandleChart
90
+ export { CandleChart } from 'termcast/src/components/candle-chart'
91
+ export type {
92
+ CandleChartProps,
93
+ CandleData,
94
+ } from 'termcast/src/components/candle-chart'
95
+
89
96
  // Core UI Components - CalendarHeatmap
90
97
  export { CalendarHeatmap, Heatmap } from 'termcast/src/components/heatmap'
91
98
  export type {
@@ -123,9 +123,11 @@ export function DialogProvider(props: DialogProviderProps): any {
123
123
  activeSearchInputRef.setText('')
124
124
  return
125
125
  }
126
+ const top = state.dialogStack[state.dialogStack.length - 1]
126
127
  useStore.setState({
127
128
  dialogStack: state.dialogStack.slice(0, -1),
128
129
  })
130
+ top?.onClose?.()
129
131
  }
130
132
  }
131
133
  })
@@ -184,9 +186,11 @@ export function DialogOverlay(): any {
184
186
  onClickOutside={() => {
185
187
  const state = useStore.getState()
186
188
  if (state.dialogStack.length > 0) {
189
+ const top = state.dialogStack[state.dialogStack.length - 1]
187
190
  useStore.setState({
188
191
  dialogStack: state.dialogStack.slice(0, -1),
189
192
  })
193
+ top?.onClose?.()
190
194
  }
191
195
  }}
192
196
  >
@@ -231,6 +235,7 @@ export function useDialog() {
231
235
  element: ReactNode
232
236
  position?: DialogPosition
233
237
  type?: 'actions'
238
+ onClose?: () => void
234
239
  }) => {
235
240
  const state = useStore.getState()
236
241
  useStore.setState({
package/src/state.tsx CHANGED
@@ -42,6 +42,7 @@ export interface DialogStackItem {
42
42
  element: ReactNode
43
43
  position?: DialogPosition
44
44
  type?: DialogStackItemType
45
+ onClose?: () => void
45
46
  }
46
47
 
47
48
  export interface NavigationStackItem {