@almadar/std 16.9.2 → 16.10.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 (30) hide show
  1. package/behaviors/registry/core/atoms/std-calendar.orb +121 -63
  2. package/behaviors/registry/core-variations/atoms/std-board-swim-lanes.orb +58 -58
  3. package/behaviors/registry/core-variations/atoms/std-board-timeline-roadmap.orb +94 -88
  4. package/behaviors/registry/core-variations/atoms/std-browse-dense.orb +51 -57
  5. package/behaviors/registry/core-variations/atoms/std-browse-feed.orb +52 -51
  6. package/behaviors/registry/core-variations/atoms/std-browse-gallery.orb +53 -53
  7. package/behaviors/registry/core-variations/atoms/std-browse-triage.orb +66 -86
  8. package/behaviors/registry/core-variations/atoms/std-calendar-agenda-list.orb +50 -50
  9. package/behaviors/registry/core-variations/atoms/std-calendar-week-timeline.orb +38 -38
  10. package/dist/behaviors/behaviors-registry.json +3 -3
  11. package/dist/behaviors/registry/core/atoms/std-calendar.orb +121 -63
  12. package/dist/behaviors/registry/core-variations/atoms/std-board-swim-lanes.orb +58 -58
  13. package/dist/behaviors/registry/core-variations/atoms/std-board-timeline-roadmap.orb +94 -88
  14. package/dist/behaviors/registry/core-variations/atoms/std-browse-dense.orb +51 -57
  15. package/dist/behaviors/registry/core-variations/atoms/std-browse-feed.orb +52 -51
  16. package/dist/behaviors/registry/core-variations/atoms/std-browse-gallery.orb +53 -53
  17. package/dist/behaviors/registry/core-variations/atoms/std-browse-triage.orb +66 -86
  18. package/dist/behaviors/registry/core-variations/atoms/std-calendar-agenda-list.orb +50 -50
  19. package/dist/behaviors/registry/core-variations/atoms/std-calendar-week-timeline.orb +38 -38
  20. package/dist/behaviors-registry.json +3 -3
  21. package/dist/registry/core/atoms/std-calendar.orb +121 -63
  22. package/dist/registry/core-variations/atoms/std-board-swim-lanes.orb +58 -58
  23. package/dist/registry/core-variations/atoms/std-board-timeline-roadmap.orb +94 -88
  24. package/dist/registry/core-variations/atoms/std-browse-dense.orb +51 -57
  25. package/dist/registry/core-variations/atoms/std-browse-feed.orb +52 -51
  26. package/dist/registry/core-variations/atoms/std-browse-gallery.orb +53 -53
  27. package/dist/registry/core-variations/atoms/std-browse-triage.orb +66 -86
  28. package/dist/registry/core-variations/atoms/std-calendar-agenda-list.orb +50 -50
  29. package/dist/registry/core-variations/atoms/std-calendar-week-timeline.orb +38 -38
  30. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "std-calendar",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "std-calendar as a Function — owns the fetch + SELECT_DAY state machine; default bodyContent renders the month-grid + upcoming-events tree. Layer 3 variants override bodyContent to deliver agenda, week-timeline, etc. while inheriting the same trait, state machine, emits, and listens.",
5
5
  "orbitals": [
6
6
  {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  {
41
41
  "name": "date",
42
- "type": "string",
42
+ "type": "datetime",
43
43
  "default": ""
44
44
  },
45
45
  {
@@ -179,22 +179,22 @@
179
179
  "render-ui",
180
180
  "main",
181
181
  {
182
- "type": "stack",
183
- "className": "py-12",
184
- "direction": "vertical",
185
- "gap": "md",
186
182
  "children": [
187
183
  {
188
184
  "type": "spinner"
189
185
  },
190
186
  {
187
+ "type": "typography",
191
188
  "content": "Loading calendar…",
192
189
  "variant": "caption",
193
- "color": "muted",
194
- "type": "typography"
190
+ "color": "muted"
195
191
  }
196
192
  ],
197
- "align": "center"
193
+ "align": "center",
194
+ "className": "py-12",
195
+ "gap": "md",
196
+ "direction": "vertical",
197
+ "type": "stack"
198
198
  }
199
199
  ]
200
200
  ]
@@ -220,36 +220,36 @@
220
220
  "render-ui",
221
221
  "main",
222
222
  {
223
- "gap": "md",
224
- "type": "stack",
225
- "direction": "vertical",
226
- "className": "py-12",
227
- "align": "center",
228
223
  "children": [
229
224
  {
230
- "name": "alert-triangle",
225
+ "type": "icon",
231
226
  "color": "destructive",
232
- "type": "icon"
227
+ "name": "alert-triangle"
233
228
  },
234
229
  {
230
+ "type": "typography",
235
231
  "content": "Failed to load",
236
- "variant": "h3",
237
- "type": "typography"
232
+ "variant": "h3"
238
233
  },
239
234
  {
240
- "content": "@payload.error",
241
235
  "color": "muted",
242
236
  "type": "typography",
243
- "variant": "body"
237
+ "variant": "body",
238
+ "content": "@payload.error"
244
239
  },
245
240
  {
246
- "type": "button",
247
- "icon": "rotate-ccw",
248
241
  "variant": "primary",
242
+ "type": "button",
249
243
  "action": "INIT",
250
- "label": "Retry"
244
+ "label": "Retry",
245
+ "icon": "rotate-ccw"
251
246
  }
252
- ]
247
+ ],
248
+ "align": "center",
249
+ "direction": "vertical",
250
+ "className": "py-12",
251
+ "gap": "md",
252
+ "type": "stack"
253
253
  }
254
254
  ]
255
255
  ]
@@ -268,15 +268,73 @@
268
268
  "fetch",
269
269
  "CalendarEvent",
270
270
  {
271
- "filter": [
272
- "=",
273
- "@entity.date",
274
- "@payload.value"
275
- ],
276
271
  "emit": {
277
- "success": "CalendarEventLoaded",
278
- "failure": "CalendarEventLoadFailed"
279
- }
272
+ "failure": "CalendarEventLoadFailed",
273
+ "success": "CalendarEventLoaded"
274
+ },
275
+ "filter": [
276
+ "time/isAfter",
277
+ [
278
+ "time/parse",
279
+ "@entity.date"
280
+ ],
281
+ [
282
+ "if",
283
+ [
284
+ "=",
285
+ "@payload.value",
286
+ "week"
287
+ ],
288
+ [
289
+ "time/subtract",
290
+ [
291
+ "time/now"
292
+ ],
293
+ 1.0,
294
+ "week"
295
+ ],
296
+ [
297
+ "if",
298
+ [
299
+ "=",
300
+ "@payload.value",
301
+ "3months"
302
+ ],
303
+ [
304
+ "time/subtract",
305
+ [
306
+ "time/now"
307
+ ],
308
+ 3.0,
309
+ "month"
310
+ ],
311
+ [
312
+ "if",
313
+ [
314
+ "=",
315
+ "@payload.value",
316
+ "year"
317
+ ],
318
+ [
319
+ "time/subtract",
320
+ [
321
+ "time/now"
322
+ ],
323
+ 1.0,
324
+ "year"
325
+ ],
326
+ [
327
+ "time/subtract",
328
+ [
329
+ "time/now"
330
+ ],
331
+ 1.0,
332
+ "month"
333
+ ]
334
+ ]
335
+ ]
336
+ ]
337
+ ]
280
338
  }
281
339
  ],
282
340
  [
@@ -332,23 +390,30 @@
332
390
  "bodyContent": {
333
391
  "type": "render-ui",
334
392
  "default": {
393
+ "gap": "lg",
394
+ "direction": "vertical",
395
+ "type": "stack",
335
396
  "children": [
336
397
  {
337
398
  "gap": "md",
399
+ "type": "stack",
400
+ "direction": "horizontal",
401
+ "align": "center",
402
+ "justify": "between",
338
403
  "children": [
339
404
  {
340
- "gap": "sm",
341
405
  "type": "stack",
342
406
  "direction": "horizontal",
343
407
  "align": "center",
408
+ "gap": "sm",
344
409
  "children": [
345
410
  {
346
- "type": "icon",
347
- "name": "calendar"
411
+ "name": "calendar",
412
+ "type": "icon"
348
413
  },
349
414
  {
350
- "content": "CalendarEvents Calendar",
351
415
  "type": "typography",
416
+ "content": "CalendarEvents Calendar",
352
417
  "variant": "h2"
353
418
  }
354
419
  ]
@@ -357,11 +422,7 @@
357
422
  "onSelect": "SELECT_DAY",
358
423
  "type": "date-range-selector"
359
424
  }
360
- ],
361
- "type": "stack",
362
- "justify": "between",
363
- "align": "center",
364
- "direction": "horizontal"
425
+ ]
365
426
  },
366
427
  {
367
428
  "type": "divider"
@@ -373,19 +434,27 @@
373
434
  "type": "divider"
374
435
  },
375
436
  {
437
+ "type": "typography",
376
438
  "variant": "h4",
377
- "content": "Upcoming Events",
378
- "type": "typography"
439
+ "content": "Upcoming Events"
379
440
  },
380
441
  {
381
442
  "type": "data-list",
443
+ "entity": "@payload.data",
444
+ "itemActions": [
445
+ {
446
+ "icon": "eye",
447
+ "label": "View",
448
+ "event": "SELECT_DAY"
449
+ }
450
+ ],
382
451
  "look": "@config.tableLook",
383
452
  "fields": [
384
453
  {
385
- "label": "Event",
454
+ "icon": "calendar",
386
455
  "name": "name",
387
- "variant": "h4",
388
- "icon": "calendar"
456
+ "label": "Event",
457
+ "variant": "h4"
389
458
  },
390
459
  {
391
460
  "label": "Time",
@@ -395,28 +464,17 @@
395
464
  {
396
465
  "label": "Date",
397
466
  "name": "date",
398
- "variant": "caption",
399
- "format": "date"
467
+ "format": "date",
468
+ "variant": "caption"
400
469
  },
401
470
  {
402
- "variant": "badge",
471
+ "label": "Status",
403
472
  "name": "status",
404
- "label": "Status"
405
- }
406
- ],
407
- "itemActions": [
408
- {
409
- "event": "SELECT_DAY",
410
- "icon": "eye",
411
- "label": "View"
473
+ "variant": "badge"
412
474
  }
413
- ],
414
- "entity": "@payload.data"
475
+ ]
415
476
  }
416
- ],
417
- "gap": "lg",
418
- "direction": "vertical",
419
- "type": "stack"
477
+ ]
420
478
  },
421
479
  "label": "Body content tree",
422
480
  "description": "Render-ui SExpr rendered after events load. Default is the month-grid + upcoming-events list. Layer 3 variants override this with their own tree (agenda list, week timeline, etc.) to deliver entirely different calendar UX while inheriting the same trait, state machine, emits, and listens.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "std-board-swim-lanes",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Swim-lane board — full-width horizontal lanes per status, cards flow left-to-right within each lane. Lane header on top with icon + label + count; cards render in the lane body. Useful for HR-portal recruiting stages and project-manager team boards. Same BoardItemBoard trait, same state machine, same emits/listens as std-board — only the bodyContent tree differs.",
5
5
  "orbitals": [
6
6
  {
@@ -98,15 +98,11 @@
98
98
  "linkedEntity": "SwimLaneItem",
99
99
  "config": {
100
100
  "bodyContent": {
101
+ "gap": "md",
101
102
  "direction": "vertical",
102
103
  "type": "stack",
103
104
  "children": [
104
105
  {
105
- "className": "px-card-md",
106
- "gap": "sm",
107
- "direction": "horizontal",
108
- "type": "stack",
109
- "align": "center",
110
106
  "children": [
111
107
  {
112
108
  "type": "icon",
@@ -117,144 +113,148 @@
117
113
  "content": "@config.title",
118
114
  "variant": "h2"
119
115
  }
120
- ]
116
+ ],
117
+ "type": "stack",
118
+ "direction": "horizontal",
119
+ "className": "px-card-md",
120
+ "align": "center",
121
+ "gap": "sm"
121
122
  },
122
123
  {
123
124
  "type": "divider"
124
125
  },
125
126
  {
126
- "type": "data-list",
127
127
  "dndRoot": true,
128
- "fields": [],
128
+ "gap": "md",
129
+ "entity": "@entity.boards",
129
130
  "renderItem": [
130
131
  "fn",
131
132
  "col",
132
133
  {
133
134
  "padding": "none",
135
+ "type": "card",
136
+ "className": "overflow-hidden rounded-lg",
137
+ "look": "flat-bordered",
134
138
  "children": [
135
139
  {
140
+ "type": "stack",
141
+ "gap": "none",
136
142
  "children": [
137
143
  {
138
- "align": "center",
139
- "direction": "horizontal",
140
144
  "type": "stack",
145
+ "className": "p-card-md border-b border-[var(--color-border)] bg-[var(--color-surface-subtle)]",
146
+ "direction": "horizontal",
141
147
  "gap": "sm",
142
- "className": "px-card-md py-3 border-b border-[var(--color-border)] bg-[var(--color-surface-subtle)]",
143
148
  "children": [
144
149
  {
145
- "name": "@col.icon",
146
- "type": "icon"
150
+ "type": "icon",
151
+ "name": "@col.icon"
147
152
  },
148
153
  {
154
+ "type": "typography",
149
155
  "variant": "h4",
150
- "className": "flex-1",
151
156
  "content": "@col.label",
152
- "type": "typography"
157
+ "className": "flex-1"
153
158
  },
154
159
  {
155
- "type": "badge",
156
160
  "variant": "primary",
161
+ "type": "badge",
157
162
  "size": "sm",
158
163
  "label": "@col.count"
159
164
  }
160
- ]
165
+ ],
166
+ "align": "center"
161
167
  },
162
168
  {
163
- "positionEvent": "REORDER_POSITION",
164
169
  "renderItem": [
165
170
  "fn",
166
171
  "item",
167
172
  {
168
- "look": "elevated",
169
- "className": "min-w-[220px] max-w-[260px] rounded-md cursor-grab shadow-sm hover:shadow-md transition-shadow",
170
173
  "padding": "sm",
174
+ "className": "min-w-[220px] max-w-[260px] rounded-md cursor-grab shadow-sm hover:shadow-md transition-shadow",
171
175
  "type": "card",
176
+ "look": "elevated",
172
177
  "children": [
173
178
  {
179
+ "gap": "xs",
180
+ "direction": "vertical",
174
181
  "children": [
175
182
  {
176
- "variant": "body",
183
+ "content": "@item.title",
177
184
  "weight": "medium",
178
185
  "type": "typography",
179
- "content": "@item.title"
186
+ "variant": "body"
180
187
  },
181
188
  {
182
189
  "type": "typography",
183
190
  "content": "@item.description",
184
- "color": "muted",
185
191
  "variant": "caption",
186
- "className": "line-clamp-2"
192
+ "className": "line-clamp-2",
193
+ "color": "muted"
187
194
  },
188
195
  {
196
+ "type": "stack",
197
+ "direction": "horizontal",
198
+ "align": "center",
199
+ "gap": "xs",
189
200
  "children": [
190
201
  {
191
- "size": "sm",
192
202
  "label": "@item.stage",
193
203
  "variant": "primary",
194
- "type": "badge"
204
+ "type": "badge",
205
+ "size": "sm"
195
206
  },
196
207
  {
208
+ "type": "button",
197
209
  "label": "Open",
198
- "size": "sm",
199
210
  "variant": "ghost",
200
211
  "actionPayload": {
201
- "row": "@item",
202
- "id": "@item.id"
212
+ "id": "@item.id",
213
+ "row": "@item"
203
214
  },
204
215
  "action": "OPEN_CARD",
216
+ "size": "sm",
205
217
  "icon": "arrow-right",
206
- "type": "button",
207
218
  "className": "ml-auto"
208
219
  }
209
220
  ],
210
- "className": "pt-1",
211
- "align": "center",
212
- "direction": "horizontal",
213
- "type": "stack",
214
- "gap": "xs"
221
+ "className": "pt-1"
215
222
  }
216
223
  ],
217
- "type": "stack",
218
- "direction": "vertical",
219
- "gap": "xs"
224
+ "type": "stack"
220
225
  }
221
226
  ]
222
227
  }
223
228
  ],
224
- "className": "p-card-md min-h-[140px] flex flex-row flex-nowrap gap-3 overflow-x-auto",
225
- "dropEvent": "MOVE_CARD",
226
- "entity": "@col.items",
227
- "sortable": true,
229
+ "accepts": "*",
228
230
  "type": "data-list",
229
- "fields": [],
231
+ "entity": "@col.items",
232
+ "dropEvent": "MOVE_CARD",
230
233
  "dragGroup": "@col.key",
231
234
  "gap": "sm",
232
- "accepts": "*",
233
- "reorderEvent": "REORDER_CARD"
235
+ "positionEvent": "REORDER_POSITION",
236
+ "reorderEvent": "REORDER_CARD",
237
+ "fields": [],
238
+ "className": "p-card-md min-h-[140px] flex flex-row flex-nowrap gap-3 overflow-x-auto",
239
+ "sortable": true
234
240
  }
235
241
  ],
236
- "gap": "none",
237
- "type": "stack",
238
242
  "direction": "vertical"
239
243
  }
240
- ],
241
- "look": "flat-bordered",
242
- "type": "card",
243
- "className": "overflow-hidden rounded-lg"
244
+ ]
244
245
  }
245
246
  ],
246
- "entity": "@entity.boards",
247
- "gap": "md"
247
+ "fields": [],
248
+ "type": "data-list"
248
249
  },
249
250
  {
251
+ "label": "Add card",
250
252
  "action": "ADD_CARD",
251
253
  "variant": "primary",
252
254
  "icon": "plus",
253
- "type": "floating-action-button",
254
- "label": "Add card"
255
+ "type": "floating-action-button"
255
256
  }
256
- ],
257
- "gap": "md"
257
+ ]
258
258
  }
259
259
  }
260
260
  }