@constela/ui 0.2.4 → 0.3.1

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 (40) hide show
  1. package/README.md +174 -3
  2. package/components/accordion/accordion-content.constela.json +20 -0
  3. package/components/accordion/accordion-item.constela.json +20 -0
  4. package/components/accordion/accordion-trigger.constela.json +21 -0
  5. package/components/accordion/accordion.constela.json +18 -0
  6. package/components/accordion/accordion.styles.json +54 -0
  7. package/components/accordion/accordion.test.ts +608 -0
  8. package/components/calendar/calendar.constela.json +195 -0
  9. package/components/calendar/calendar.styles.json +33 -0
  10. package/components/calendar/calendar.test.ts +458 -0
  11. package/components/chart/area-chart.constela.json +482 -0
  12. package/components/chart/bar-chart.constela.json +342 -0
  13. package/components/chart/chart-axis.constela.json +224 -0
  14. package/components/chart/chart-legend.constela.json +82 -0
  15. package/components/chart/chart-tooltip.constela.json +61 -0
  16. package/components/chart/chart.styles.json +183 -0
  17. package/components/chart/chart.test.ts +3260 -0
  18. package/components/chart/donut-chart.constela.json +369 -0
  19. package/components/chart/line-chart.constela.json +380 -0
  20. package/components/chart/pie-chart.constela.json +259 -0
  21. package/components/chart/radar-chart.constela.json +297 -0
  22. package/components/chart/scatter-chart.constela.json +300 -0
  23. package/components/data-table/data-table-cell.constela.json +22 -0
  24. package/components/data-table/data-table-header.constela.json +30 -0
  25. package/components/data-table/data-table-pagination.constela.json +19 -0
  26. package/components/data-table/data-table-row.constela.json +30 -0
  27. package/components/data-table/data-table.constela.json +32 -0
  28. package/components/data-table/data-table.styles.json +84 -0
  29. package/components/data-table/data-table.test.ts +873 -0
  30. package/components/datepicker/datepicker.constela.json +128 -0
  31. package/components/datepicker/datepicker.styles.json +47 -0
  32. package/components/datepicker/datepicker.test.ts +540 -0
  33. package/components/tree/tree-node.constela.json +26 -0
  34. package/components/tree/tree.constela.json +24 -0
  35. package/components/tree/tree.styles.json +50 -0
  36. package/components/tree/tree.test.ts +542 -0
  37. package/components/virtual-scroll/virtual-scroll.constela.json +27 -0
  38. package/components/virtual-scroll/virtual-scroll.styles.json +17 -0
  39. package/components/virtual-scroll/virtual-scroll.test.ts +345 -0
  40. package/package.json +2 -2
@@ -0,0 +1,380 @@
1
+ {
2
+ "params": {
3
+ "data": { "type": "list", "required": true },
4
+ "valueKey": { "type": "string", "required": true },
5
+ "labelKey": { "type": "string", "required": false },
6
+ "width": { "type": "number", "required": false },
7
+ "height": { "type": "number", "required": false },
8
+ "colors": { "type": "list", "required": false },
9
+ "showGrid": { "type": "boolean", "required": false },
10
+ "showLabels": { "type": "boolean", "required": false },
11
+ "curved": { "type": "boolean", "required": false },
12
+ "showPoints": { "type": "boolean", "required": false },
13
+ "pointRadius": { "type": "number", "required": false },
14
+ "strokeWidth": { "type": "number", "required": false }
15
+ },
16
+ "localState": {
17
+ "_width": {
18
+ "type": "number",
19
+ "initial": {
20
+ "expr": "cond",
21
+ "test": { "expr": "param", "name": "width" },
22
+ "then": { "expr": "param", "name": "width" },
23
+ "else": { "expr": "lit", "value": 400 }
24
+ }
25
+ },
26
+ "_height": {
27
+ "type": "number",
28
+ "initial": {
29
+ "expr": "cond",
30
+ "test": { "expr": "param", "name": "height" },
31
+ "then": { "expr": "param", "name": "height" },
32
+ "else": { "expr": "lit", "value": 300 }
33
+ }
34
+ }
35
+ },
36
+ "view": {
37
+ "kind": "element",
38
+ "tag": "svg",
39
+ "props": {
40
+ "role": { "expr": "lit", "value": "img" },
41
+ "aria-label": { "expr": "lit", "value": "Line Chart" },
42
+ "aria-labelledby": { "expr": "lit", "value": "line-chart-title" },
43
+ "viewBox": {
44
+ "expr": "call",
45
+ "target": null,
46
+ "method": "concat",
47
+ "args": [
48
+ { "expr": "lit", "value": "0 0 " },
49
+ { "expr": "local", "name": "_width" },
50
+ { "expr": "lit", "value": " " },
51
+ { "expr": "local", "name": "_height" }
52
+ ]
53
+ },
54
+ "className": {
55
+ "expr": "style",
56
+ "preset": "chartSvg",
57
+ "props": {
58
+ "size": { "expr": "lit", "value": "default" }
59
+ }
60
+ }
61
+ },
62
+ "children": [
63
+ {
64
+ "kind": "element",
65
+ "tag": "title",
66
+ "props": {
67
+ "id": { "expr": "lit", "value": "line-chart-title" }
68
+ },
69
+ "children": [
70
+ { "kind": "text", "content": { "expr": "lit", "value": "Line Chart" } }
71
+ ]
72
+ },
73
+ {
74
+ "kind": "if",
75
+ "test": { "expr": "param", "name": "showGrid" },
76
+ "then": {
77
+ "kind": "element",
78
+ "tag": "g",
79
+ "props": {
80
+ "className": {
81
+ "expr": "style",
82
+ "preset": "chartGrid",
83
+ "props": {
84
+ "axis": { "expr": "lit", "value": "both" }
85
+ }
86
+ }
87
+ },
88
+ "children": [
89
+ {
90
+ "kind": "element",
91
+ "tag": "line",
92
+ "props": {
93
+ "x1": { "expr": "lit", "value": "40" },
94
+ "y1": { "expr": "lit", "value": "0" },
95
+ "x2": { "expr": "lit", "value": "40" },
96
+ "y2": { "expr": "local", "name": "_height" }
97
+ }
98
+ }
99
+ ]
100
+ }
101
+ },
102
+ {
103
+ "kind": "element",
104
+ "tag": "path",
105
+ "props": {
106
+ "d": {
107
+ "expr": "call",
108
+ "target": null,
109
+ "method": "getLinePath",
110
+ "args": [
111
+ {
112
+ "expr": "call",
113
+ "target": { "expr": "param", "name": "data" },
114
+ "method": "map",
115
+ "args": [
116
+ {
117
+ "expr": "lambda",
118
+ "params": ["item", "idx"],
119
+ "body": {
120
+ "expr": "obj",
121
+ "props": {
122
+ "x": {
123
+ "expr": "bin",
124
+ "op": "+",
125
+ "left": { "expr": "lit", "value": 40 },
126
+ "right": {
127
+ "expr": "bin",
128
+ "op": "*",
129
+ "left": { "expr": "var", "name": "idx" },
130
+ "right": {
131
+ "expr": "bin",
132
+ "op": "/",
133
+ "left": {
134
+ "expr": "bin",
135
+ "op": "-",
136
+ "left": { "expr": "local", "name": "_width" },
137
+ "right": { "expr": "lit", "value": 80 }
138
+ },
139
+ "right": {
140
+ "expr": "bin",
141
+ "op": "-",
142
+ "left": {
143
+ "expr": "call",
144
+ "target": { "expr": "param", "name": "data" },
145
+ "method": "length",
146
+ "args": []
147
+ },
148
+ "right": { "expr": "lit", "value": 1 }
149
+ }
150
+ }
151
+ }
152
+ },
153
+ "y": {
154
+ "expr": "bin",
155
+ "op": "-",
156
+ "left": { "expr": "local", "name": "_height" },
157
+ "right": {
158
+ "expr": "bin",
159
+ "op": "*",
160
+ "left": {
161
+ "expr": "get",
162
+ "obj": { "expr": "var", "name": "item" },
163
+ "key": { "expr": "param", "name": "valueKey" }
164
+ },
165
+ "right": { "expr": "lit", "value": 2 }
166
+ }
167
+ }
168
+ }
169
+ }
170
+ }
171
+ ]
172
+ },
173
+ { "expr": "param", "name": "curved" }
174
+ ]
175
+ },
176
+ "stroke": {
177
+ "expr": "cond",
178
+ "test": { "expr": "param", "name": "colors" },
179
+ "then": {
180
+ "expr": "call",
181
+ "target": { "expr": "param", "name": "colors" },
182
+ "method": "at",
183
+ "args": [{ "expr": "lit", "value": 0 }]
184
+ },
185
+ "else": { "expr": "lit", "value": "#3b82f6" }
186
+ },
187
+ "stroke-width": {
188
+ "expr": "cond",
189
+ "test": { "expr": "param", "name": "strokeWidth" },
190
+ "then": { "expr": "param", "name": "strokeWidth" },
191
+ "else": { "expr": "lit", "value": 2 }
192
+ },
193
+ "className": {
194
+ "expr": "style",
195
+ "preset": "chartLine"
196
+ }
197
+ }
198
+ },
199
+ {
200
+ "kind": "if",
201
+ "test": { "expr": "param", "name": "showPoints" },
202
+ "then": {
203
+ "kind": "element",
204
+ "tag": "g",
205
+ "props": {},
206
+ "children": [
207
+ {
208
+ "kind": "each",
209
+ "items": { "expr": "param", "name": "data" },
210
+ "as": "item",
211
+ "index": "idx",
212
+ "body": {
213
+ "kind": "element",
214
+ "tag": "circle",
215
+ "props": {
216
+ "cx": {
217
+ "expr": "bin",
218
+ "op": "+",
219
+ "left": { "expr": "lit", "value": 40 },
220
+ "right": {
221
+ "expr": "bin",
222
+ "op": "*",
223
+ "left": { "expr": "var", "name": "idx" },
224
+ "right": {
225
+ "expr": "bin",
226
+ "op": "/",
227
+ "left": {
228
+ "expr": "bin",
229
+ "op": "-",
230
+ "left": { "expr": "local", "name": "_width" },
231
+ "right": { "expr": "lit", "value": 80 }
232
+ },
233
+ "right": {
234
+ "expr": "bin",
235
+ "op": "-",
236
+ "left": {
237
+ "expr": "call",
238
+ "target": { "expr": "param", "name": "data" },
239
+ "method": "length",
240
+ "args": []
241
+ },
242
+ "right": { "expr": "lit", "value": 1 }
243
+ }
244
+ }
245
+ }
246
+ },
247
+ "cy": {
248
+ "expr": "bin",
249
+ "op": "-",
250
+ "left": { "expr": "local", "name": "_height" },
251
+ "right": {
252
+ "expr": "bin",
253
+ "op": "*",
254
+ "left": {
255
+ "expr": "get",
256
+ "obj": { "expr": "var", "name": "item" },
257
+ "key": { "expr": "param", "name": "valueKey" }
258
+ },
259
+ "right": { "expr": "lit", "value": 2 }
260
+ }
261
+ },
262
+ "r": {
263
+ "expr": "cond",
264
+ "test": { "expr": "param", "name": "pointRadius" },
265
+ "then": { "expr": "param", "name": "pointRadius" },
266
+ "else": { "expr": "lit", "value": 4 }
267
+ },
268
+ "fill": {
269
+ "expr": "cond",
270
+ "test": { "expr": "param", "name": "colors" },
271
+ "then": {
272
+ "expr": "call",
273
+ "target": { "expr": "param", "name": "colors" },
274
+ "method": "at",
275
+ "args": [{ "expr": "lit", "value": 0 }]
276
+ },
277
+ "else": { "expr": "lit", "value": "#3b82f6" }
278
+ },
279
+ "tabindex": { "expr": "lit", "value": "0" },
280
+ "className": {
281
+ "expr": "style",
282
+ "preset": "chartPoint",
283
+ "props": {
284
+ "size": { "expr": "lit", "value": "default" },
285
+ "state": { "expr": "lit", "value": "default" }
286
+ }
287
+ }
288
+ }
289
+ }
290
+ }
291
+ ]
292
+ }
293
+ },
294
+ {
295
+ "kind": "if",
296
+ "test": { "expr": "param", "name": "showLabels" },
297
+ "then": {
298
+ "kind": "element",
299
+ "tag": "g",
300
+ "props": {
301
+ "className": {
302
+ "expr": "style",
303
+ "preset": "chartLabel",
304
+ "props": {
305
+ "type": { "expr": "lit", "value": "axis" }
306
+ }
307
+ }
308
+ },
309
+ "children": [
310
+ {
311
+ "kind": "each",
312
+ "items": { "expr": "param", "name": "data" },
313
+ "as": "item",
314
+ "index": "idx",
315
+ "body": {
316
+ "kind": "element",
317
+ "tag": "text",
318
+ "props": {
319
+ "x": {
320
+ "expr": "bin",
321
+ "op": "+",
322
+ "left": { "expr": "lit", "value": 40 },
323
+ "right": {
324
+ "expr": "bin",
325
+ "op": "*",
326
+ "left": { "expr": "var", "name": "idx" },
327
+ "right": {
328
+ "expr": "bin",
329
+ "op": "/",
330
+ "left": {
331
+ "expr": "bin",
332
+ "op": "-",
333
+ "left": { "expr": "local", "name": "_width" },
334
+ "right": { "expr": "lit", "value": 80 }
335
+ },
336
+ "right": {
337
+ "expr": "bin",
338
+ "op": "-",
339
+ "left": {
340
+ "expr": "call",
341
+ "target": { "expr": "param", "name": "data" },
342
+ "method": "length",
343
+ "args": []
344
+ },
345
+ "right": { "expr": "lit", "value": 1 }
346
+ }
347
+ }
348
+ }
349
+ },
350
+ "y": {
351
+ "expr": "bin",
352
+ "op": "+",
353
+ "left": { "expr": "local", "name": "_height" },
354
+ "right": { "expr": "lit", "value": 15 }
355
+ },
356
+ "text-anchor": { "expr": "lit", "value": "middle" }
357
+ },
358
+ "children": [
359
+ {
360
+ "kind": "text",
361
+ "content": {
362
+ "expr": "cond",
363
+ "test": { "expr": "param", "name": "labelKey" },
364
+ "then": {
365
+ "expr": "get",
366
+ "obj": { "expr": "var", "name": "item" },
367
+ "key": { "expr": "param", "name": "labelKey" }
368
+ },
369
+ "else": { "expr": "var", "name": "idx" }
370
+ }
371
+ }
372
+ ]
373
+ }
374
+ }
375
+ ]
376
+ }
377
+ }
378
+ ]
379
+ }
380
+ }
@@ -0,0 +1,259 @@
1
+ {
2
+ "params": {
3
+ "data": { "type": "list", "required": true },
4
+ "valueKey": { "type": "string", "required": true },
5
+ "labelKey": { "type": "string", "required": false },
6
+ "width": { "type": "number", "required": false },
7
+ "height": { "type": "number", "required": false },
8
+ "colors": { "type": "list", "required": false },
9
+ "showLabels": { "type": "boolean", "required": false },
10
+ "showPercentage": { "type": "boolean", "required": false }
11
+ },
12
+ "view": {
13
+ "kind": "element",
14
+ "tag": "svg",
15
+ "props": {
16
+ "role": { "expr": "lit", "value": "img" },
17
+ "aria-label": { "expr": "lit", "value": "Pie Chart" },
18
+ "aria-labelledby": { "expr": "lit", "value": "pie-chart-title" },
19
+ "viewBox": {
20
+ "expr": "call",
21
+ "target": null,
22
+ "method": "concat",
23
+ "args": [
24
+ { "expr": "lit", "value": "0 0 " },
25
+ {
26
+ "expr": "cond",
27
+ "test": { "expr": "param", "name": "width" },
28
+ "then": { "expr": "param", "name": "width" },
29
+ "else": { "expr": "lit", "value": 300 }
30
+ },
31
+ { "expr": "lit", "value": " " },
32
+ {
33
+ "expr": "cond",
34
+ "test": { "expr": "param", "name": "height" },
35
+ "then": { "expr": "param", "name": "height" },
36
+ "else": { "expr": "lit", "value": 300 }
37
+ }
38
+ ]
39
+ },
40
+ "className": {
41
+ "expr": "style",
42
+ "preset": "chartSvg",
43
+ "props": {
44
+ "size": { "expr": "lit", "value": "default" }
45
+ }
46
+ }
47
+ },
48
+ "children": [
49
+ {
50
+ "kind": "element",
51
+ "tag": "title",
52
+ "props": {
53
+ "id": { "expr": "lit", "value": "pie-chart-title" }
54
+ },
55
+ "children": [
56
+ { "kind": "text", "content": { "expr": "lit", "value": "Pie Chart" } }
57
+ ]
58
+ },
59
+ {
60
+ "kind": "element",
61
+ "tag": "g",
62
+ "props": {
63
+ "transform": {
64
+ "expr": "call",
65
+ "target": null,
66
+ "method": "concat",
67
+ "args": [
68
+ { "expr": "lit", "value": "translate(" },
69
+ {
70
+ "expr": "bin",
71
+ "op": "/",
72
+ "left": {
73
+ "expr": "cond",
74
+ "test": { "expr": "param", "name": "width" },
75
+ "then": { "expr": "param", "name": "width" },
76
+ "else": { "expr": "lit", "value": 300 }
77
+ },
78
+ "right": { "expr": "lit", "value": 2 }
79
+ },
80
+ { "expr": "lit", "value": ", " },
81
+ {
82
+ "expr": "bin",
83
+ "op": "/",
84
+ "left": {
85
+ "expr": "cond",
86
+ "test": { "expr": "param", "name": "height" },
87
+ "then": { "expr": "param", "name": "height" },
88
+ "else": { "expr": "lit", "value": 300 }
89
+ },
90
+ "right": { "expr": "lit", "value": 2 }
91
+ },
92
+ { "expr": "lit", "value": ")" }
93
+ ]
94
+ }
95
+ },
96
+ "children": [
97
+ {
98
+ "kind": "each",
99
+ "items": {
100
+ "expr": "call",
101
+ "target": null,
102
+ "method": "getPieSlices",
103
+ "args": [
104
+ { "expr": "param", "name": "data" },
105
+ { "expr": "param", "name": "valueKey" }
106
+ ]
107
+ },
108
+ "as": "slice",
109
+ "index": "idx",
110
+ "body": {
111
+ "kind": "element",
112
+ "tag": "path",
113
+ "props": {
114
+ "d": {
115
+ "expr": "call",
116
+ "target": null,
117
+ "method": "getArcPath",
118
+ "args": [
119
+ { "expr": "lit", "value": 0 },
120
+ { "expr": "lit", "value": 0 },
121
+ {
122
+ "expr": "bin",
123
+ "op": "*",
124
+ "left": {
125
+ "expr": "bin",
126
+ "op": "/",
127
+ "left": {
128
+ "expr": "call",
129
+ "target": { "expr": "var", "name": "Math" },
130
+ "method": "min",
131
+ "args": [
132
+ {
133
+ "expr": "cond",
134
+ "test": { "expr": "param", "name": "width" },
135
+ "then": { "expr": "param", "name": "width" },
136
+ "else": { "expr": "lit", "value": 300 }
137
+ },
138
+ {
139
+ "expr": "cond",
140
+ "test": { "expr": "param", "name": "height" },
141
+ "then": { "expr": "param", "name": "height" },
142
+ "else": { "expr": "lit", "value": 300 }
143
+ }
144
+ ]
145
+ },
146
+ "right": { "expr": "lit", "value": 2 }
147
+ },
148
+ "right": { "expr": "lit", "value": 0.9 }
149
+ },
150
+ { "expr": "get", "obj": { "expr": "var", "name": "slice" }, "key": "startAngle" },
151
+ { "expr": "get", "obj": { "expr": "var", "name": "slice" }, "key": "endAngle" }
152
+ ]
153
+ },
154
+ "fill": {
155
+ "expr": "cond",
156
+ "test": { "expr": "param", "name": "colors" },
157
+ "then": {
158
+ "expr": "call",
159
+ "target": { "expr": "param", "name": "colors" },
160
+ "method": "at",
161
+ "args": [
162
+ {
163
+ "expr": "bin",
164
+ "op": "%",
165
+ "left": { "expr": "var", "name": "idx" },
166
+ "right": {
167
+ "expr": "call",
168
+ "target": { "expr": "param", "name": "colors" },
169
+ "method": "length",
170
+ "args": []
171
+ }
172
+ }
173
+ ]
174
+ },
175
+ "else": { "expr": "lit", "value": "#3b82f6" }
176
+ },
177
+ "className": {
178
+ "expr": "style",
179
+ "preset": "chartSlice",
180
+ "props": {
181
+ "state": { "expr": "lit", "value": "default" }
182
+ }
183
+ }
184
+ }
185
+ }
186
+ }
187
+ ]
188
+ },
189
+ {
190
+ "kind": "if",
191
+ "test": { "expr": "param", "name": "showLabels" },
192
+ "then": {
193
+ "kind": "element",
194
+ "tag": "g",
195
+ "props": {
196
+ "className": {
197
+ "expr": "style",
198
+ "preset": "chartLabel",
199
+ "props": {
200
+ "type": { "expr": "lit", "value": "data" }
201
+ }
202
+ }
203
+ },
204
+ "children": [
205
+ {
206
+ "kind": "each",
207
+ "items": {
208
+ "expr": "call",
209
+ "target": null,
210
+ "method": "getPieSlices",
211
+ "args": [
212
+ { "expr": "param", "name": "data" },
213
+ { "expr": "param", "name": "valueKey" }
214
+ ]
215
+ },
216
+ "as": "slice",
217
+ "index": "idx",
218
+ "body": {
219
+ "kind": "element",
220
+ "tag": "text",
221
+ "props": {
222
+ "x": { "expr": "lit", "value": "150" },
223
+ "y": { "expr": "lit", "value": "150" },
224
+ "text-anchor": { "expr": "lit", "value": "middle" }
225
+ },
226
+ "children": [
227
+ {
228
+ "kind": "text",
229
+ "content": {
230
+ "expr": "cond",
231
+ "test": { "expr": "param", "name": "showPercentage" },
232
+ "then": {
233
+ "expr": "call",
234
+ "target": null,
235
+ "method": "concat",
236
+ "args": [
237
+ {
238
+ "expr": "call",
239
+ "target": { "expr": "var", "name": "Math" },
240
+ "method": "round",
241
+ "args": [
242
+ { "expr": "get", "obj": { "expr": "var", "name": "slice" }, "key": "percentage" }
243
+ ]
244
+ },
245
+ { "expr": "lit", "value": "%" }
246
+ ]
247
+ },
248
+ "else": { "expr": "get", "obj": { "expr": "var", "name": "slice" }, "key": "value" }
249
+ }
250
+ }
251
+ ]
252
+ }
253
+ }
254
+ ]
255
+ }
256
+ }
257
+ ]
258
+ }
259
+ }