@profpowell/vb-project-planning 0.2.1 → 0.2.2

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 (64) hide show
  1. package/README.md +5 -2
  2. package/dist/vb-project-planning.css +56 -2
  3. package/dist/vb-project-planning.js +3188 -2544
  4. package/dist/vb-project-planning.min.css +1 -1
  5. package/dist/vb-project-planning.min.js +221 -197
  6. package/package.json +7 -4
  7. package/src/lib/board-surface.js +158 -0
  8. package/src/lib/bundle-registry.js +2 -75
  9. package/src/lib/dates.js +125 -0
  10. package/src/lib/escape.js +34 -0
  11. package/src/lib/hash.js +16 -0
  12. package/src/lib/portrait-url.js +3 -29
  13. package/src/lib/src-loader.js +78 -0
  14. package/src/utils/copy-init.js +56 -17
  15. package/src/web-components/_ux-base.js +409 -24
  16. package/src/web-components/adr-wc/README.md +18 -16
  17. package/src/web-components/adr-wc/api.json +7 -5
  18. package/src/web-components/adr-wc/logic.js +50 -136
  19. package/src/web-components/burndown-chart/api.json +8 -6
  20. package/src/web-components/burndown-chart/logic.js +75 -39
  21. package/src/web-components/empathy-map/api.json +13 -13
  22. package/src/web-components/empathy-map/logic.js +161 -168
  23. package/src/web-components/empathy-map/static.html +3 -3
  24. package/src/web-components/empathy-map/styles.js +1 -0
  25. package/src/web-components/gantt-chart/README.md +12 -6
  26. package/src/web-components/gantt-chart/api.json +23 -7
  27. package/src/web-components/gantt-chart/logic.js +456 -431
  28. package/src/web-components/gantt-chart/styles.css +9 -1
  29. package/src/web-components/impact-effort/api.json +9 -7
  30. package/src/web-components/impact-effort/logic.js +238 -209
  31. package/src/web-components/impact-effort/static.html +12 -4
  32. package/src/web-components/iron-triangle/_capacity.js +0 -18
  33. package/src/web-components/kanban-board/api.json +8 -6
  34. package/src/web-components/kanban-board/logic.js +289 -333
  35. package/src/web-components/product-roadmap/api.json +14 -13
  36. package/src/web-components/product-roadmap/logic.js +393 -246
  37. package/src/web-components/product-roadmap/styles.css +40 -0
  38. package/src/web-components/quadrant-grid/api.json +9 -4
  39. package/src/web-components/quadrant-grid/logic.js +80 -12
  40. package/src/web-components/quadrant-grid/styles.css +7 -0
  41. package/src/web-components/quality-target/_quality-utils.js +2 -46
  42. package/src/web-components/review-surface/README.md +9 -5
  43. package/src/web-components/review-surface/api.json +10 -8
  44. package/src/web-components/review-surface/logic.js +349 -218
  45. package/src/web-components/risk-register/api.json +1 -6
  46. package/src/web-components/risk-register/logic.js +71 -24
  47. package/src/web-components/story-map/api.json +8 -6
  48. package/src/web-components/story-map/logic.js +280 -281
  49. package/src/web-components/story-map/static.html +15 -5
  50. package/src/web-components/traceability-matrix/api.json +10 -3
  51. package/src/web-components/traceability-matrix/logic.js +112 -63
  52. package/src/web-components/traceability-matrix/styles.css +14 -1
  53. package/src/web-components/user-journey/api.json +25 -24
  54. package/src/web-components/user-journey/logic.js +76 -127
  55. package/src/web-components/user-journey/static.html +2 -2
  56. package/src/web-components/user-persona/api.json +15 -14
  57. package/src/web-components/user-persona/logic.js +71 -117
  58. package/src/web-components/user-persona/styles.js +1 -0
  59. package/src/web-components/user-story/api.json +13 -11
  60. package/src/web-components/user-story/logic.js +164 -195
  61. package/src/web-components/user-story/styles.js +28 -1
  62. package/src/web-components/work-item/README.md +3 -3
  63. package/src/web-components/work-item/api.json +13 -11
  64. package/src/web-components/work-item/logic.js +58 -154
package/README.md CHANGED
@@ -86,10 +86,13 @@ This package was decomposed out of `vanilla-breeze` core so that framework stays
86
86
  ## Development
87
87
 
88
88
  ```bash
89
- npm run build # bundle dist/ (esm + minified, js + css) via esbuild
90
- npm test # Playwright component specs (serves the built docs/ on :4331)
89
+ npm run build # bundle dist/ (esm + minified, js + css) via esbuild
90
+ npm run typecheck # tsc checkJs over src/ (JSDoc types, no unused locals)
91
+ npm test # unit tests (src/lib, run with TZ=America/Los_Angeles) + Playwright specs
91
92
  ```
92
93
 
94
+ The Playwright specs load the demo pages from the committed `docs/` site but serve the component bundle from `dist/`, so run `npm run build` first and they test your current `src/`. Set `VB_TEST_PORT` to run the suite in more than one checkout at once (default 4331).
95
+
93
96
  `dist/` is committed: it is what the npm tarball ships and what the docs site vendors. CI fails if `src/` changes without a rebuilt `dist/`.
94
97
 
95
98
  The docs site lives in `site/` (CookSSG, styled by Vanilla Breeze) and depends on `vanilla-breeze` for tokens/themes and the `<drag-surface>` / `<data-table>` peers. It imports this package's `dist/` directly.
@@ -265,6 +265,9 @@ quadrant-grid {
265
265
  border-radius: var(--radius-s, 0.25rem);
266
266
  font-size: var(--font-size-sm, 0.875rem);
267
267
  }
268
+ .qg-items > li.qg-pin-item {
269
+ display: contents;
270
+ }
268
271
  .qg-pinned {
269
272
  position: absolute;
270
273
  inline-size: max-content;
@@ -402,9 +405,19 @@ traceability-matrix {
402
405
  border-block-end: var(--border-width-thin, 1px) solid var(--color-border, oklch(85% 0 0));
403
406
  cursor: default;
404
407
  }
405
- td[data-linked] {
408
+ .tm-cell-btn {
409
+ all: unset;
410
+ box-sizing: border-box;
411
+ display: block;
412
+ inline-size: 100%;
413
+ min-block-size: 1.5em;
414
+ text-align: inherit;
406
415
  cursor: pointer;
407
416
  }
417
+ .tm-cell-btn:focus-visible {
418
+ outline: 2px solid var(--color-accent, oklch(45% 0.18 260));
419
+ outline-offset: 2px;
420
+ }
408
421
  }
409
422
  [data-state-highlighted]:not(traceability-matrix *) {
410
423
  outline: 2px solid var(--color-accent, oklch(45% 0.18 260));
@@ -584,6 +597,38 @@ product-roadmap > section[data-lane] {
584
597
  border-start-end-radius: var(--radius-s, 0.25rem);
585
598
  border-end-end-radius: var(--radius-s, 0.25rem);
586
599
  }
600
+ .rm-bar:focus-visible {
601
+ outline: var(--border-width-medium, 2px) solid var(--color-focus, var(--color-interactive, #0066cc));
602
+ outline-offset: 2px;
603
+ }
604
+ .rm-bar[data-dragging] {
605
+ cursor: grabbing;
606
+ z-index: 3;
607
+ box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
608
+ }
609
+ .rm-bar-status {
610
+ flex: none;
611
+ font-size: var(--font-size-xs, 0.75rem);
612
+ font-weight: 600;
613
+ opacity: 0.9;
614
+ white-space: nowrap;
615
+ padding-inline-end: var(--size-xs, 0.5rem);
616
+ }
617
+ .rm-track[data-drop-target] {
618
+ outline: var(--border-width-medium, 2px) dashed var(--color-interactive, #0066cc);
619
+ outline-offset: -2px;
620
+ }
621
+ .rm-sr-only {
622
+ position: absolute;
623
+ inline-size: 1px;
624
+ block-size: 1px;
625
+ margin: -1px;
626
+ padding: 0;
627
+ overflow: hidden;
628
+ clip-path: inset(50%);
629
+ white-space: nowrap;
630
+ border: 0;
631
+ }
587
632
  .rm-bar[data-status=planned] {
588
633
  background: var(--color-info, oklch(60% 0.12 240));
589
634
  }
@@ -617,6 +662,9 @@ product-roadmap:not([editable]) .rm-bar {
617
662
  product-roadmap:not([editable]) .rm-bar-handle {
618
663
  display: none;
619
664
  }
665
+ product-roadmap[editable] .rm-bar {
666
+ touch-action: none;
667
+ }
620
668
  @media (prefers-reduced-motion: reduce) {
621
669
  product-roadmap .rm-bar {
622
670
  transition: none;
@@ -999,6 +1047,13 @@ gantt-chart:not([data-upgraded]) > table {
999
1047
  overflow: hidden;
1000
1048
  text-overflow: ellipsis;
1001
1049
  }
1050
+ .gc-task-status {
1051
+ flex: none;
1052
+ margin-inline-start: auto;
1053
+ font-size: 11px;
1054
+ font-weight: 600;
1055
+ color: var(--color-text-muted, #666666);
1056
+ }
1002
1057
  .gc-task-dates {
1003
1058
  position: absolute;
1004
1059
  width: 1px;
@@ -1149,7 +1204,6 @@ gantt-chart:not([data-upgraded]) > table {
1149
1204
  fill: none;
1150
1205
  stroke: var(--color-text-muted, #666666);
1151
1206
  stroke-width: 1.5;
1152
- marker-end: url(#gc-arrowhead);
1153
1207
  }
1154
1208
  .gc-sr-only {
1155
1209
  position: absolute;