@columenlabs/lumen-ui 0.1.1 → 0.1.3

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 (70) hide show
  1. package/README.md +1 -1
  2. package/dist/assistant-panel.js +1 -1
  3. package/dist/coverage-calendar-map.js +1 -1
  4. package/dist/coverage-cells.d.ts +2 -2
  5. package/dist/coverage-map.js +4 -10
  6. package/dist/details-table.js +1 -5
  7. package/dist/form-issues.js +1 -1
  8. package/dist/frame-script.js +1 -1
  9. package/dist/growth-chart.d.ts +9 -9
  10. package/dist/joins.d.ts +4 -3
  11. package/dist/joins.js +1 -1
  12. package/dist/lumen-code.js +1 -5
  13. package/dist/lumen-drawer.js +1 -3
  14. package/dist/lumen-filter.js +5 -13
  15. package/dist/lumen-grid.js +2 -4
  16. package/dist/lumen-layout.js +7 -4
  17. package/dist/lumen-links.d.ts +1 -1
  18. package/dist/lumen-selector.js +1 -1
  19. package/dist/lumen-source.js +2 -4
  20. package/dist/lumen-tab-drawer.js +1 -1
  21. package/dist/lumen-toast.d.ts +4 -4
  22. package/dist/lumen-view-card.js +1 -1
  23. package/dist/lumen-view.js +2 -4
  24. package/dist/lumen-widget.d.ts +277 -171
  25. package/dist/lumen-widget.js +31 -20
  26. package/dist/market/indicator-picker.js +1 -1
  27. package/dist/market/live.d.ts +1 -1
  28. package/dist/market/lumen-chart.js +1 -1
  29. package/dist/market/price-chart.d.ts +10 -10
  30. package/dist/nav.js +1 -1
  31. package/dist/notifications.js +1 -3
  32. package/dist/overview.js +1 -1
  33. package/dist/page.js +1 -1
  34. package/dist/pager.js +1 -1
  35. package/dist/prefs.d.ts +25 -25
  36. package/dist/schedules.js +1 -1
  37. package/dist/settings.js +1 -3
  38. package/dist/shell.js +1 -1
  39. package/dist/sourced-card.d.ts +10 -0
  40. package/dist/sourced-card.js +69 -0
  41. package/dist/summary-cards.js +2 -6
  42. package/dist/symbol-sheet.js +1 -1
  43. package/dist/tasks.d.ts +1 -1
  44. package/dist/tasks.js +1 -1
  45. package/dist/tile.js +2 -4
  46. package/dist/ui/badge.d.ts +1 -1
  47. package/dist/ui/button.d.ts +2 -2
  48. package/dist/ui/chart.d.ts +2 -2
  49. package/dist/ui/chart.js +2 -5
  50. package/dist/ui/field.d.ts +1 -1
  51. package/dist/ui/input-group.d.ts +2 -2
  52. package/dist/ui/item.d.ts +3 -3
  53. package/dist/ui/sidebar.d.ts +1 -1
  54. package/dist/ui/sidebar.js +1 -1
  55. package/dist/ui/toggle.d.ts +1 -1
  56. package/dist/view-edit-cell.js +1 -4
  57. package/dist/view-editor.d.ts +1 -1
  58. package/dist/view-editor.js +188 -47
  59. package/dist/view-formulas.d.ts +1 -1
  60. package/dist/view-model.d.ts +15 -15
  61. package/dist/whats-new.js +1 -1
  62. package/dist/widget-data.d.ts +4 -0
  63. package/dist/widget-data.js +32 -0
  64. package/dist/widget-settings.d.ts +219 -139
  65. package/dist/widget-settings.js +4 -4
  66. package/dist/widget-thumbs.d.ts +1 -1
  67. package/dist/widget-thumbs.js +1 -1
  68. package/dist/workspace-keys.d.ts +1 -1
  69. package/dist/workspaces.js +1 -1
  70. package/package.json +5 -5
@@ -56,34 +56,57 @@ export declare function WidgetSettings<T>({ card, set, domain, }: {
56
56
  }): import("react").JSX.Element;
57
57
  /** Whether a widget reads the view's rows (a chart of symbols reads its own data). */
58
58
  export declare const readsRows: (card: ViewWidget) => card is {
59
- kind: "table";
60
- style: "table";
61
59
  id: string;
62
60
  title: string | null;
63
61
  w: number;
62
+ h?: number | undefined;
63
+ x?: number | undefined;
64
+ y?: number | undefined;
65
+ phone?: {
66
+ x: number;
67
+ y: number;
68
+ w: number;
69
+ h?: number | undefined;
70
+ } | undefined;
64
71
  filter: {
65
72
  key: string;
66
73
  value: string;
67
74
  not?: boolean | undefined;
68
- op?: "gt" | "lt" | "eq" | "between" | undefined;
69
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
75
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
76
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
70
77
  }[];
78
+ source?: string | undefined;
79
+ connections?: {
80
+ to: string;
81
+ on: {
82
+ from: string;
83
+ to: string;
84
+ }[];
85
+ }[] | undefined;
86
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
87
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
88
+ kind: "table";
89
+ style: "table";
71
90
  table?: {
72
- shape: "table" | "group" | "pivot";
91
+ shape: "group" | "pivot" | "table";
73
92
  columns: string[];
93
+ hidden?: string[] | undefined;
74
94
  chips: {
75
95
  key: string;
76
- placement: "inline" | "column";
96
+ placement: "column" | "inline";
77
97
  }[];
98
+ formats?: Record<string, "compact" | "integer" | "number" | "percent" | "price" | "price_rounded" | "price_signed" | "rounded" | "signed" | "weight"> | undefined;
99
+ aggs?: Record<string, "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "none" | "sum"> | undefined;
78
100
  group: {
79
101
  fields: string[];
80
102
  default: string | null;
81
103
  };
104
+ subgroup?: string | null | undefined;
82
105
  pivot: {
83
106
  rows: string;
84
107
  columns: string;
85
108
  value: string;
86
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
109
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
87
110
  } | null;
88
111
  sort: {
89
112
  key: string;
@@ -91,14 +114,14 @@ export declare const readsRows: (card: ViewWidget) => card is {
91
114
  } | null;
92
115
  pagination: {
93
116
  on: boolean;
94
- size: 100 | 50 | 25 | 250;
117
+ size: 25 | 50 | 100 | 250;
95
118
  };
96
- hidden?: string[] | undefined;
97
- formats?: Record<string, "number" | "weight" | "compact" | "rounded" | "price" | "price_rounded" | "price_signed" | "percent" | "signed" | "integer"> | undefined;
98
- aggs?: Record<string, "none" | "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct"> | undefined;
99
- subgroup?: string | null | undefined;
100
- width?: "scroll" | "fit" | undefined;
119
+ width?: "fit" | "scroll" | undefined;
101
120
  } | undefined;
121
+ } | {
122
+ id: string;
123
+ title: string | null;
124
+ w: number;
102
125
  h?: number | undefined;
103
126
  x?: number | undefined;
104
127
  y?: number | undefined;
@@ -108,25 +131,32 @@ export declare const readsRows: (card: ViewWidget) => card is {
108
131
  w: number;
109
132
  h?: number | undefined;
110
133
  } | undefined;
111
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
112
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
113
- } | {
134
+ filter: {
135
+ key: string;
136
+ value: string;
137
+ not?: boolean | undefined;
138
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
139
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
140
+ }[];
141
+ source?: string | undefined;
142
+ connections?: {
143
+ to: string;
144
+ on: {
145
+ from: string;
146
+ to: string;
147
+ }[];
148
+ }[] | undefined;
149
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
150
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
114
151
  kind: "table";
115
152
  style: "top_n";
116
153
  sort: string;
117
154
  desc: boolean;
118
155
  n: number;
119
156
  columns: string[];
157
+ } | {
120
158
  id: string;
121
159
  title: string | null;
122
- w: number;
123
- filter: {
124
- key: string;
125
- value: string;
126
- not?: boolean | undefined;
127
- op?: "gt" | "lt" | "eq" | "between" | undefined;
128
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
129
- }[];
130
160
  h?: number | undefined;
131
161
  x?: number | undefined;
132
162
  y?: number | undefined;
@@ -136,9 +166,23 @@ export declare const readsRows: (card: ViewWidget) => card is {
136
166
  w: number;
137
167
  h?: number | undefined;
138
168
  } | undefined;
139
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
140
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
141
- } | {
169
+ filter: {
170
+ key: string;
171
+ value: string;
172
+ not?: boolean | undefined;
173
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
174
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
175
+ }[];
176
+ source?: string | undefined;
177
+ connections?: {
178
+ to: string;
179
+ on: {
180
+ from: string;
181
+ to: string;
182
+ }[];
183
+ }[] | undefined;
184
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
185
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
142
186
  kind: "metric";
143
187
  style: "number" | "progress_bar" | "progress_circle";
144
188
  w: number;
@@ -146,32 +190,32 @@ export declare const readsRows: (card: ViewWidget) => card is {
146
190
  key: string;
147
191
  label: string;
148
192
  field: string;
149
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
193
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
150
194
  filter: {
151
195
  key: string;
152
196
  value: string;
153
197
  not?: boolean | undefined;
154
- op?: "gt" | "lt" | "eq" | "between" | undefined;
155
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
198
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
199
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
156
200
  }[];
157
201
  sign: boolean;
158
202
  suffix: string;
159
203
  lines: ({
160
204
  kind: "value";
161
205
  field: string;
162
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
206
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
163
207
  filter: {
164
208
  key: string;
165
209
  value: string;
166
210
  not?: boolean | undefined;
167
- op?: "gt" | "lt" | "eq" | "between" | undefined;
168
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
211
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
212
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
169
213
  }[];
170
214
  suffix: string;
171
215
  } | {
172
216
  kind: "pct";
173
217
  field: string;
174
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
218
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
175
219
  } | {
176
220
  kind: "text";
177
221
  text: string;
@@ -179,21 +223,16 @@ export declare const readsRows: (card: ViewWidget) => card is {
179
223
  } | {
180
224
  key: string;
181
225
  };
182
- id: string;
183
- title: string | null;
184
- filter: {
185
- key: string;
186
- value: string;
187
- not?: boolean | undefined;
188
- op?: "gt" | "lt" | "eq" | "between" | undefined;
189
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
190
- }[];
191
226
  target?: number | undefined;
192
227
  meter?: "health" | "usage" | undefined;
193
228
  bands?: {
194
229
  warn: number;
195
230
  bad: number;
196
231
  } | undefined;
232
+ } | {
233
+ id: string;
234
+ title: string | null;
235
+ w: number;
197
236
  h?: number | undefined;
198
237
  x?: number | undefined;
199
238
  y?: number | undefined;
@@ -203,51 +242,55 @@ export declare const readsRows: (card: ViewWidget) => card is {
203
242
  w: number;
204
243
  h?: number | undefined;
205
244
  } | undefined;
206
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
207
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
208
- } | {
209
- kind: "metric";
210
- style: "row";
211
- id: string;
212
- title: string | null;
213
- w: number;
214
245
  filter: {
215
246
  key: string;
216
247
  value: string;
217
248
  not?: boolean | undefined;
218
- op?: "gt" | "lt" | "eq" | "between" | undefined;
219
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
249
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
250
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
220
251
  }[];
252
+ source?: string | undefined;
253
+ connections?: {
254
+ to: string;
255
+ on: {
256
+ from: string;
257
+ to: string;
258
+ }[];
259
+ }[] | undefined;
260
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
261
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
262
+ kind: "metric";
263
+ style: "row";
221
264
  tiles?: ({
222
265
  key: string;
223
266
  label: string;
224
267
  field: string;
225
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
268
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
226
269
  filter: {
227
270
  key: string;
228
271
  value: string;
229
272
  not?: boolean | undefined;
230
- op?: "gt" | "lt" | "eq" | "between" | undefined;
231
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
273
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
274
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
232
275
  }[];
233
276
  sign: boolean;
234
277
  suffix: string;
235
278
  lines: ({
236
279
  kind: "value";
237
280
  field: string;
238
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
281
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
239
282
  filter: {
240
283
  key: string;
241
284
  value: string;
242
285
  not?: boolean | undefined;
243
- op?: "gt" | "lt" | "eq" | "between" | undefined;
244
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
286
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
287
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
245
288
  }[];
246
289
  suffix: string;
247
290
  } | {
248
291
  kind: "pct";
249
292
  field: string;
250
- agg: "max" | "min" | "first" | "last" | "sum" | "count" | "mean" | "distinct";
293
+ agg: "count" | "distinct" | "first" | "last" | "max" | "mean" | "min" | "sum";
251
294
  } | {
252
295
  kind: "text";
253
296
  text: string;
@@ -257,6 +300,9 @@ export declare const readsRows: (card: ViewWidget) => card is {
257
300
  })[] | undefined;
258
301
  rank?: string | undefined;
259
302
  cash?: boolean | undefined;
303
+ } | {
304
+ id: string;
305
+ title: string | null;
260
306
  h?: number | undefined;
261
307
  x?: number | undefined;
262
308
  y?: number | undefined;
@@ -266,25 +312,34 @@ export declare const readsRows: (card: ViewWidget) => card is {
266
312
  w: number;
267
313
  h?: number | undefined;
268
314
  } | undefined;
269
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
270
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
271
- } | {
315
+ filter: {
316
+ key: string;
317
+ value: string;
318
+ not?: boolean | undefined;
319
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
320
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
321
+ }[];
322
+ source?: string | undefined;
323
+ connections?: {
324
+ to: string;
325
+ on: {
326
+ from: string;
327
+ to: string;
328
+ }[];
329
+ }[] | undefined;
330
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
331
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
272
332
  w: number;
273
333
  date: string;
274
334
  values: string[];
275
- bucket: "month" | "week" | "year" | "day";
276
- agg: "last" | "sum" | "count" | "mean";
335
+ bucket: "day" | "month" | "week" | "year";
336
+ agg: "count" | "last" | "mean" | "sum";
277
337
  kind: "metric";
278
338
  style: "spark" | "tracker";
339
+ } | {
279
340
  id: string;
280
341
  title: string | null;
281
- filter: {
282
- key: string;
283
- value: string;
284
- not?: boolean | undefined;
285
- op?: "gt" | "lt" | "eq" | "between" | undefined;
286
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
287
- }[];
342
+ w: number;
288
343
  h?: number | undefined;
289
344
  x?: number | undefined;
290
345
  y?: number | undefined;
@@ -294,24 +349,32 @@ export declare const readsRows: (card: ViewWidget) => card is {
294
349
  w: number;
295
350
  h?: number | undefined;
296
351
  } | undefined;
297
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
298
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
299
- } | {
352
+ filter: {
353
+ key: string;
354
+ value: string;
355
+ not?: boolean | undefined;
356
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
357
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
358
+ }[];
359
+ source?: string | undefined;
360
+ connections?: {
361
+ to: string;
362
+ on: {
363
+ from: string;
364
+ to: string;
365
+ }[];
366
+ }[] | undefined;
367
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
368
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
300
369
  kind: "allocation";
301
370
  style: "bar";
302
371
  by: string;
303
372
  value: string;
304
373
  max: number;
374
+ } | {
305
375
  id: string;
306
376
  title: string | null;
307
377
  w: number;
308
- filter: {
309
- key: string;
310
- value: string;
311
- not?: boolean | undefined;
312
- op?: "gt" | "lt" | "eq" | "between" | undefined;
313
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
314
- }[];
315
378
  h?: number | undefined;
316
379
  x?: number | undefined;
317
380
  y?: number | undefined;
@@ -321,24 +384,32 @@ export declare const readsRows: (card: ViewWidget) => card is {
321
384
  w: number;
322
385
  h?: number | undefined;
323
386
  } | undefined;
324
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
325
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
326
- } | {
387
+ filter: {
388
+ key: string;
389
+ value: string;
390
+ not?: boolean | undefined;
391
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
392
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
393
+ }[];
394
+ source?: string | undefined;
395
+ connections?: {
396
+ to: string;
397
+ on: {
398
+ from: string;
399
+ to: string;
400
+ }[];
401
+ }[] | undefined;
402
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
403
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
327
404
  kind: "allocation";
328
405
  style: "donut";
329
406
  by: string;
330
407
  value: string;
331
408
  max: number;
409
+ } | {
332
410
  id: string;
333
411
  title: string | null;
334
412
  w: number;
335
- filter: {
336
- key: string;
337
- value: string;
338
- not?: boolean | undefined;
339
- op?: "gt" | "lt" | "eq" | "between" | undefined;
340
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
341
- }[];
342
413
  h?: number | undefined;
343
414
  x?: number | undefined;
344
415
  y?: number | undefined;
@@ -348,27 +419,35 @@ export declare const readsRows: (card: ViewWidget) => card is {
348
419
  w: number;
349
420
  h?: number | undefined;
350
421
  } | undefined;
351
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
352
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
353
- } | {
422
+ filter: {
423
+ key: string;
424
+ value: string;
425
+ not?: boolean | undefined;
426
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
427
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
428
+ }[];
429
+ source?: string | undefined;
430
+ connections?: {
431
+ to: string;
432
+ on: {
433
+ from: string;
434
+ to: string;
435
+ }[];
436
+ }[] | undefined;
437
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
438
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
354
439
  kind: "allocation";
355
440
  style: "bar_list";
356
441
  by: string;
357
442
  value: string;
358
443
  signed: boolean;
444
+ stack?: string | undefined;
359
445
  desc: boolean;
360
446
  n: number;
447
+ } | {
361
448
  id: string;
362
449
  title: string | null;
363
450
  w: number;
364
- filter: {
365
- key: string;
366
- value: string;
367
- not?: boolean | undefined;
368
- op?: "gt" | "lt" | "eq" | "between" | undefined;
369
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
370
- }[];
371
- stack?: string | undefined;
372
451
  h?: number | undefined;
373
452
  x?: number | undefined;
374
453
  y?: number | undefined;
@@ -378,22 +457,29 @@ export declare const readsRows: (card: ViewWidget) => card is {
378
457
  w: number;
379
458
  h?: number | undefined;
380
459
  } | undefined;
381
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
382
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
383
- } | {
384
- kind: "chart";
385
- style: "growth";
386
- scale: "log" | "linear";
387
- id: string;
388
- title: string | null;
389
- w: number;
390
460
  filter: {
391
461
  key: string;
392
462
  value: string;
393
463
  not?: boolean | undefined;
394
- op?: "gt" | "lt" | "eq" | "between" | undefined;
395
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
464
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
465
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
396
466
  }[];
467
+ source?: string | undefined;
468
+ connections?: {
469
+ to: string;
470
+ on: {
471
+ from: string;
472
+ to: string;
473
+ }[];
474
+ }[] | undefined;
475
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
476
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
477
+ kind: "chart";
478
+ style: "growth";
479
+ scale: "linear" | "log";
480
+ } | {
481
+ id: string;
482
+ title: string | null;
397
483
  h?: number | undefined;
398
484
  x?: number | undefined;
399
485
  y?: number | undefined;
@@ -403,34 +489,28 @@ export declare const readsRows: (card: ViewWidget) => card is {
403
489
  w: number;
404
490
  h?: number | undefined;
405
491
  } | undefined;
406
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
407
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
408
- } | {
409
- w: number;
410
- date: string;
411
- values: string[];
412
- bucket: "month" | "week" | "year" | "day";
413
- agg: "last" | "sum" | "count" | "mean";
414
- kind: "chart";
415
- style: "area" | "line" | "bars" | "stacked" | "combo";
416
- id: string;
417
- title: string | null;
418
492
  filter: {
419
493
  key: string;
420
494
  value: string;
421
495
  not?: boolean | undefined;
422
- op?: "gt" | "lt" | "eq" | "between" | undefined;
423
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
496
+ op?: "between" | "eq" | "gt" | "lt" | undefined;
497
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
424
498
  }[];
425
- h?: number | undefined;
426
- x?: number | undefined;
427
- y?: number | undefined;
428
- phone?: {
429
- x: number;
430
- y: number;
431
- w: number;
432
- h?: number | undefined;
433
- } | undefined;
434
- link?: "blue" | "lime" | "pink" | "teal" | "amber" | undefined;
435
- controls?: Partial<Record<"footer" | "header" | "legend" | "filter" | "group" | "download" | "columns" | "ask" | "refresh" | "pager" | "window", boolean>> | undefined;
499
+ source?: string | undefined;
500
+ connections?: {
501
+ to: string;
502
+ on: {
503
+ from: string;
504
+ to: string;
505
+ }[];
506
+ }[] | undefined;
507
+ link?: "amber" | "blue" | "lime" | "pink" | "teal" | undefined;
508
+ controls?: Partial<Record<"ask" | "columns" | "download" | "filter" | "footer" | "group" | "header" | "legend" | "pager" | "refresh" | "window", boolean>> | undefined;
509
+ w: number;
510
+ date: string;
511
+ values: string[];
512
+ bucket: "day" | "month" | "week" | "year";
513
+ agg: "count" | "last" | "mean" | "sum";
514
+ kind: "chart";
515
+ style: "area" | "bars" | "combo" | "line" | "stacked";
436
516
  };
@@ -1,11 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // Edit widget's own parts (one editor for every widget). Every widget opens the
3
3
  // same editor (view-editor.tsx): Widget (type, name, width, link colour), Fields, Settings, Rows,
4
4
  // Formulas, Controls, with the field tree beside it. A table's Fields are its columns; any other
5
5
  // widget's are its slots (By and Value, Date and Values, a card's number), which the tree fills the
6
6
  // same way it ticks a column. Settings are the picked style's own options. Switching the type
7
7
  // swaps only these two parts.
8
- import { OUTLOOK_INDEXES, marketWindows } from '@columenlabs/lumen-ui-types/market';
8
+ import { OUTLOOK_INDEXES, marketWindows, } from '@columenlabs/lumen-ui-types/market';
9
9
  import { ALLOCATION_MAX, isOwnTile, isRowCard, isTableCard, trendBuckets, widgetStyleId, } from '@columenlabs/lumen-ui-types/views';
10
10
  import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';
11
11
  import { useState } from 'react';
@@ -46,8 +46,8 @@ const freeTileKey = (tiles, taken) => {
46
46
  /** A widget's slots, in the order the editor lists them; none for a chart of symbols. */
47
47
  export function widgetSlots(card, domain) {
48
48
  const label = (k) => domain.fields.find((f) => f.key === k)?.label ?? k;
49
- const text = { accepts: (isTextField), why: 'Takes a text field' };
50
- const number = { accepts: (isNumberField), why: 'Takes a number' };
49
+ const text = { accepts: isTextField, why: 'Takes a text field' };
50
+ const number = { accepts: isNumberField, why: 'Takes a number' };
51
51
  if ('by' in card)
52
52
  return [
53
53
  {
@@ -1,3 +1,3 @@
1
1
  import type { ReactNode } from 'react';
2
2
  /** A style's thumbnail (`WIDGET_STYLES` id); a style with none draws nothing. */
3
- export declare const widgetThumb: (id: string) => string | number | bigint | boolean | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null;
3
+ export declare const widgetThumb: (id: string) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | Iterable<ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  const C1 = 'var(--chart-1)';
3
3
  const C2 = 'var(--chart-2)';
4
4
  const C3 = 'var(--chart-3)';
@@ -1,6 +1,6 @@
1
1
  import type { WorkspaceSummary } from '@columenlabs/lumen-ui-types/workspaces';
2
2
  /** Every workspace query's key starts here: the assistant's tab moves invalidate them all. */
3
- export declare const WORKSPACES_KEY: readonly ["workspaces"];
3
+ export declare const WORKSPACES_KEY: readonly ['workspaces'];
4
4
  /** A frame's rows; a remade frame invalidates it. */
5
5
  export declare const frameKey: (api: string, id: string) => string[];
6
6
  /** The workspaces as the sidebar and the @ picker list them. */
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { frameConfig, frameKeyAt, frameSymbolAt, liveQuoteColumns, } from '@columenlabs/lumen-ui-types/frames';
3
3
  import { customViewConfigSchema, frameSpace, } from '@columenlabs/lumen-ui-types/views';
4
4
  import { workspacePath, } from '@columenlabs/lumen-ui-types/workspaces';