@design.estate/dees-catalog 9.6.0 → 9.7.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 (66) hide show
  1. package/dist_bundle/bundle.js +2957 -2685
  2. package/dist_bundle/bundle.js.map +1 -1
  3. package/dist_ts_web/00_commitinfo_data.js +1 -1
  4. package/dist_ts_web/demos/inputs.d.ts +1 -1
  5. package/dist_ts_web/demos/inputs.js +5 -4
  6. package/dist_ts_web/elements/00group-dataview/dees-table/dees-table.js +5 -4
  7. package/dist_ts_web/elements/00group-form/dees-form/dees-form.d.ts +5 -1
  8. package/dist_ts_web/elements/00group-form/dees-form/dees-form.js +27 -3
  9. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.d.ts +1 -0
  10. package/dist_ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.js +11 -2
  11. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.d.ts +3 -0
  12. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.js +4 -1
  13. package/dist_ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.js +51 -13
  14. package/dist_ts_web/elements/00group-input/dees-input-base/dees-input-base.d.ts +1 -8
  15. package/dist_ts_web/elements/00group-input/dees-input-base/dees-input-base.js +7 -2
  16. package/dist_ts_web/elements/00group-input/dees-input-datepicker/component.d.ts +18 -3
  17. package/dist_ts_web/elements/00group-input/dees-input-datepicker/component.js +181 -144
  18. package/dist_ts_web/elements/00group-input/dees-input-datepicker/date-validation.d.ts +13 -0
  19. package/dist_ts_web/elements/00group-input/dees-input-datepicker/date-validation.js +65 -0
  20. package/dist_ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.js +44 -56
  21. package/dist_ts_web/elements/00group-input/dees-input-datepicker/styles.js +6 -1
  22. package/dist_ts_web/elements/00group-input/dees-input-datepicker/template.js +11 -5
  23. package/dist_ts_web/elements/00group-input/dees-input-text/dees-input-text.d.ts +8 -8
  24. package/dist_ts_web/elements/00group-input/dees-input-text/dees-input-text.js +6 -53
  25. package/dist_ts_web/elements/00group-input/dees-input-textarea/dees-input-textarea.d.ts +62 -0
  26. package/dist_ts_web/elements/00group-input/dees-input-textarea/dees-input-textarea.demo.d.ts +1 -0
  27. package/dist_ts_web/elements/00group-input/dees-input-textarea/dees-input-textarea.demo.js +3 -0
  28. package/dist_ts_web/elements/00group-input/dees-input-textarea/dees-input-textarea.js +224 -0
  29. package/dist_ts_web/elements/00group-input/dees-input-textarea/index.d.ts +1 -0
  30. package/dist_ts_web/elements/00group-input/dees-input-textarea/index.js +2 -0
  31. package/dist_ts_web/elements/00group-input/index.d.ts +1 -0
  32. package/dist_ts_web/elements/00group-input/index.js +2 -1
  33. package/dist_ts_web/elements/00group-input/text-input-contextmenu.d.ts +29 -0
  34. package/dist_ts_web/elements/00group-input/text-input-contextmenu.js +29 -0
  35. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.d.ts +1 -1
  36. package/dist_ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.js +5 -4
  37. package/package.json +2 -2
  38. package/readme.md +78 -4
  39. package/scripts/check-bdtheme-ratchet.cjs +2 -2
  40. package/scripts/check-packed-consumer.mjs +48 -0
  41. package/ts_web/00_commitinfo_data.ts +1 -1
  42. package/ts_web/demos/inputs.ts +5 -4
  43. package/ts_web/elements/00group-dataview/dees-table/dees-table.ts +3 -2
  44. package/ts_web/elements/00group-form/dees-form/dees-form.ts +25 -2
  45. package/ts_web/elements/00group-harness/dees-harness-chat/dees-harness-chat.ts +4 -0
  46. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.demo.ts +3 -0
  47. package/ts_web/elements/00group-harness/dees-harness-composer/dees-harness-composer.ts +37 -11
  48. package/ts_web/elements/00group-input/dees-input-base/dees-input-base.ts +6 -1
  49. package/ts_web/elements/00group-input/dees-input-datepicker/component.ts +149 -148
  50. package/ts_web/elements/00group-input/dees-input-datepicker/date-validation.ts +64 -0
  51. package/ts_web/elements/00group-input/dees-input-datepicker/datepicker-popup.ts +40 -40
  52. package/ts_web/elements/00group-input/dees-input-datepicker/styles.ts +5 -0
  53. package/ts_web/elements/00group-input/dees-input-datepicker/template.ts +10 -4
  54. package/ts_web/elements/00group-input/dees-input-text/dees-input-text.ts +5 -52
  55. package/ts_web/elements/00group-input/dees-input-textarea/dees-input-textarea.demo.ts +2 -0
  56. package/ts_web/elements/00group-input/dees-input-textarea/dees-input-textarea.ts +128 -0
  57. package/ts_web/elements/00group-input/dees-input-textarea/index.ts +1 -0
  58. package/ts_web/elements/00group-input/index.ts +1 -0
  59. package/ts_web/elements/00group-input/text-input-contextmenu.ts +31 -0
  60. package/ts_web/elements/00group-overlay/dees-contextmenu/dees-contextmenu.ts +3 -3
  61. package/readme.hints.md +0 -1233
  62. package/readme.icons.md +0 -1849
  63. package/readme.info.md +0 -80
  64. package/readme.plan.md +0 -671
  65. package/readme.playbook.md +0 -820
  66. package/readme.theme-migration.md +0 -168
@@ -1,168 +0,0 @@
1
- # Theme Token Migration (bdTheme → --dees-* tokens)
2
-
3
- Status: **WS1 in progress — vocabulary approved 2026-06-12.** Decisions: (1) the three text
4
- tokens below were added to `00theme.ts`; (2) shadow tokens are theme-aware
5
- (`themeDefaults.shadowsDark`); (3) consolidation mapping approved as listed; (4) the
6
- post-consolidation unique tail uses `:host([gobright])` (goBright reflects as an attribute
7
- since `@design.estate/dees-element` 2.3.0) instead of remaining on bdTheme.
8
-
9
- Goal: zero `cssManager.bdTheme()` call sites in `ts_web` outside `ts_web/elements/00theme.ts`.
10
- `00theme.ts` is the single sanctioned bridge — the `--dees-*` tokens are themselves implemented
11
- via `bdTheme()` there, so the runtime theme-switch mechanism does not change. Components only
12
- ever consume `var(--dees-*)`.
13
-
14
- ## Inventory (2026-06-12)
15
-
16
- - 1,651 `bdTheme()` call sites across 129 files (demos included): 1,622 single-line literal
17
- (clustered below), 22 multi-line literal (handled like any literal during sweeps), 7 with
18
- dynamic arguments
19
- - 546 distinct (light, dark) pairs after color normalization
20
- - 91 pairs / 397 sites match an existing token exactly or within Δ≤6 per RGB channel (visual no-op)
21
- - 7 pairs / 50 sites look like **flipped arguments** (light/dark swapped) — see "Suspected bugs"
22
- - 432 pairs / 1,155 sites need consolidation (mostly zinc/gray/slate/ad-hoc palette generations
23
- expressing the same semantics) — see mapping table
24
- - 16 pairs / 20 sites are non-color values (shadows, borders shorthand, gradients, filters)
25
- - Dynamic-argument calls live in only 3 components: dees-progressbar (3), dees-spinner (2),
26
- dees-searchbar (2)
27
-
28
- Analysis tooling: `tsx .nogit/debug/analyze-bdtheme.ts` regenerates
29
- `.nogit/debug/bdtheme-analysis.json` (full cluster → file data) and the ratchet baseline counts.
30
-
31
- ## Approved vocabulary additions (in `00theme.ts` since 2026-06-12)
32
-
33
- New color tokens in `IThemeColors` / `themeDefaultStyles` — values taken from the dominant
34
- existing usage, so adopting them is a visual no-op at those sites:
35
-
36
- | Token | Light | Dark | Replaces (sites) |
37
- |---|---|---|---|
38
- | `--dees-color-text-success` | `hsl(142.1 76.2% 36.3%)` | `hsl(142.1 70.6% 45.3%)` | green-600/500 pairs (~13) |
39
- | `--dees-color-text-error` | `#dc2626` | `#f87171` | red-600/400 pairs (~10) |
40
- | `--dees-color-text-warning` | `hsl(38 92% 45%)` | `hsl(38 92% 55%)` | amber pairs (~4) |
41
-
42
- Shadow tokens become theme-aware (today they are static; found usage consistently wants
43
- stronger shadows in dark mode). Light values unchanged:
44
-
45
- | Token | Light (unchanged) | Dark (new) |
46
- |---|---|---|
47
- | `--dees-shadow-xs` | `0 1px 2px 0 rgb(0 0 0 / 0.05)` | `0 1px 2px 0 rgb(0 0 0 / 0.2)` |
48
- | `--dees-shadow-sm` | `0 1px 3px rgba(0, 0, 0, 0.1)` | `0 1px 3px rgba(0, 0, 0, 0.3)` |
49
- | `--dees-shadow-md` | `0 2px 8px rgba(0, 0, 0, 0.15)` | `0 2px 8px rgba(0, 0, 0, 0.35)` |
50
- | `--dees-shadow-lg` | `0 4px 12px rgba(0, 0, 0, 0.15)` | `0 4px 12px rgba(0, 0, 0, 0.4)` |
51
-
52
- Mechanism for the post-consolidation tail (genuinely component-unique theme pairs,
53
- e.g. terminal/chart palettes): `goBright` reflects as the `gobright` attribute since
54
- `@design.estate/dees-element` 2.3.0, so such sites use plain `:host([gobright]) { ... }` CSS
55
- for component-local light/dark styling without bdTheme and without growing the global
56
- vocabulary (rule R6).
57
-
58
- ## Migration rules (precedence order)
59
-
60
- 1. **R1 — exact/near token match** (Δ≤6/channel on both light and dark): replace with the token.
61
- Visual no-op.
62
- 2. **R2 — semantic consolidation**: palette-generation duplicates (zinc/gray/slate/ad-hoc) map to
63
- the canonical token for their *role* (see table). Small intentional shifts: blue-tinted grays
64
- become neutral grays. Pick the token by role (text vs border vs surface), not by raw distance.
65
- 3. **R3 — alpha tints** of a semantic color: `color-mix(in srgb, var(--dees-color-X) N%, transparent)`
66
- instead of a dedicated pair.
67
- 4. **R4 — flipped arguments**: confirm against rendered output, then fix to the token (these are
68
- bugs — the light theme currently shows dark-theme values). Never "preserve" a flip by mapping
69
- it to swapped tokens, except intentional inverted-contrast UI (tooltips already have
70
- `--dees-color-tooltip-*`).
71
- 5. **R5 — non-color values**: shadows → `--dees-shadow-*`; spacing/radius/transition literals →
72
- their scales when the value matches; composite values (gradients, checkerboards) → compose
73
- from color tokens inside the gradient.
74
- 6. **R6 — genuinely unique pairs** (after R1–R5, expected rare): component-local
75
- `:host([gobright])` CSS (dark value as default, bright override).
76
-
77
- `00colors.ts` (legacy constants, 10 files) is retired during sweeps: `blue/blueActive` →
78
- accent/link tokens per role (note: #0050b9 → #3b82f6 is a visible shift, check each site),
79
- `text` → text tokens.
80
-
81
- ## Consolidation mapping (clusters ≥7 sites; tail follows the same role rules)
82
-
83
- | Sites | Pair (light \| dark) | → Token | Shift |
84
- |---|---|---|---|
85
- | 45 | `#09090b` \| `#fafafa` | `--dees-color-text-primary` | none |
86
- | 27 | `hsl(0 0% 89.8%)` \| `hsl(0 0% 14.9%)` | `--dees-color-border-default` | none |
87
- | 25 | `#71717a` \| `#a1a1aa` | `--dees-color-text-muted` | dark dims slightly |
88
- | 25 | `#e5e7eb` \| `#27272a` | `--dees-color-border-default` | none |
89
- | 24 | `hsl(215.3 25% 8.8%)` \| `hsl(210 40% 98%)` | `--dees-color-text-primary` | blue-gray → neutral |
90
- | 24 | `#e5e7eb` \| `#374151` | `--dees-color-border-default` | dark border darkens (wysiwyg blocks) |
91
- | 23 | `#3b82f6` \| `#60a5fa` | `--dees-color-link` | none |
92
- | 22 | `hsl(215.4 16.3% 56.9%)` \| `hsl(215 20.2% 55.1%)` | `--dees-color-text-muted` | blue-gray → neutral |
93
- | 19 | `#3b82f6` \| `#3b82f6` | `--dees-color-accent-primary` | none |
94
- | 19 | `#666` \| `#999` | `--dees-color-text-muted` | minor |
95
- | 18 | `hsl(210 40% 96.1%)` \| `hsl(215 20.2% 16.8%)` | `--dees-color-badge-default-bg` | near none (secondary surface) |
96
- | 18 | `hsl(215.4 16.3% 46.9%)` \| `hsl(215 20.2% 65.1%)` | `--dees-color-text-muted` | dark dims |
97
- | 18 | `hsl(210 20% 98%)` \| `hsl(215 27.9% 16.9%)` | `--dees-color-badge-default-bg` | slate → neutral (datepicker family) |
98
- | 16 | `#71717a` \| `#71717a` | `--dees-color-text-muted` | becomes theme-aware (improvement) |
99
- | 16 | `#9ca3af` \| `#6b7280` | `--dees-color-text-muted` | light darkens (placeholders) |
100
- | 15 | `hsl(222.2 47.4% 51.2%)` \| `hsl(217.2 91.2% 59.8%)` | `--dees-color-accent-primary` | light brightens |
101
- | 15 | `hsl(0 0% 95.1%)` \| `hsl(0 0% 14.9%)` | `--dees-color-badge-default-bg` | near none |
102
- | 14 | `hsl(220 8.9% 46.1%)` \| `hsl(215 20.2% 65.1%)` | `--dees-color-text-muted` | dark dims |
103
- | 13 | `#18181b` \| `#fff` | `--dees-color-tooltip-bg` | near none |
104
- | 13 | `#000000` \| `#ffffff` | per-site: usually `text-primary` | manual (R4 check: some intentional pure contrast) |
105
- | 13 | `hsl(0 0% 45.1%)` \| `hsl(0 0% 63.9%)` | `--dees-color-text-muted` | dark dims slightly |
106
- | 13 | `#374151` \| `#e5e7eb` | per-site: `text-secondary` or `text-primary` | manual (emphasized text, dark value sits between tokens) |
107
- | 13 | `hsl(215 16% 45%)` \| `hsl(215 16% 75%)` | `--dees-color-text-secondary` | dark dims |
108
- | 12 | `#6b7280` \| `#9ca3af` | `--dees-color-text-muted` | minor |
109
- | 11 | `#71717a` \| `#888` | `--dees-color-text-muted` | minor |
110
- | 11 | `#111827` \| `#f9fafb` | `--dees-color-text-primary` | near none |
111
- | 10 | `#dc2626` \| `#f87171` | `--dees-color-text-error` (new) | none |
112
- | 10 | `#ffffff` \| `#000000` | per-site (inverse surfaces) | manual |
113
- | 10 | `#a1a1aa` \| `#666` | per-site (storage-browser family) | manual, flip-suspect |
114
- | 10 | `#333` \| `#fff` | `--dees-color-text-primary` | light deepens |
115
- | 10 | `hsl(214.3 31.8% 91.4%)` \| `hsl(217.2 32.6% 17.5%)` | `--dees-color-border-default` | slate → neutral |
116
- | 10 | `hsl(0 0% 50%)` \| `hsl(0 0% 60%)` | `--dees-color-text-muted` | minor |
117
- | 9 | `#e5e7eb` \| `#3f3f46` | `--dees-color-border-default` | dark darkens |
118
- | 9 | `hsl(0 0% 88%)` \| `hsl(0 0% 20%)` | `--dees-color-border-default` | minor |
119
- | 9 | `#d1d9e0` \| `#30363d` | `--dees-color-border-default` | github palette → neutral (markdownoutlet) |
120
- | 8 | `hsl(142.1 76.2% 36.3%)` \| `hsl(142.1 70.6% 45.3%)` | `--dees-color-text-success` (new) | none |
121
- | 8 | `#e5e7eb` \| `#333` | `--dees-color-border-default` | minor |
122
- | 8 | `hsl(0 0% 20%)` \| `hsl(0 0% 90%)` | per-site: `text-secondary`/`text-primary` | manual |
123
- | 8 | `hsl(224 71.4% 4.1%)` \| `hsl(210 20% 98%)` | `--dees-color-text-primary` | near none |
124
- | 8 | `hsl(0 0% 95%)` \| `hsl(0 0% 9%)` | `--dees-color-code-block-bg` | near none |
125
- | 7 | `#999` \| `#666` | `--dees-color-text-muted` | faint/disabled text, both shift |
126
- | 7 | `hsl(222.2 47.4% 51.2% / 0.1)` \| `hsl(217.2 91.2% 59.8% / 0.1)` | `color-mix(accent-primary 10%)` (R3) | near none |
127
- | 7 | `hsl(0 0% 100%)` \| `hsl(224 71.4% 4.1%)` | `--dees-color-bg-primary` | none |
128
- | 7 | `hsl(0 72.2% 50.6%)` \| `hsl(0 62.8% 30.6%)` | `--dees-color-accent-error` | dark brightens (destructive buttons) — review |
129
- | 7 | `hsl(215.3 25% 26.7%)` \| `hsl(217.9 10.6% 74.9%)` | `--dees-color-text-secondary` | dark dims |
130
- | 7 | `#d1d5db` \| `#4b5563` | `--dees-color-border-strong` | dark darkens |
131
-
132
- ## Suspected bugs (flipped light/dark arguments — fix via R4 during sweeps)
133
-
134
- | Sites | Pair (light \| dark) | Looks like | Files |
135
- |---|---|---|---|
136
- | 23 | `hsl(0 0% 9%)` \| `hsl(0 0% 95%)` | code-block-bg flipped | chart-log demo, table demo (terminal panels — verify: may be intentional always-dark panels; if so, use literal dark values, not a flip) |
137
- | 12 | `hsl(0 0% 15%)` \| `hsl(0 0% 90%)` | border-default flipped | dataview-statusobject, input-checkbox |
138
- | 9 | `hsl(0 0% 63.9%)` \| `hsl(0 0% 45.1%)` | text-secondary flipped | dropdown, statusobject |
139
- | 6 | `#333` \| `#ccc` | border-strong flipped | profiledropdown, pagination |
140
- | 3 | `#a1a1aa` \| `#404040` | badge-default-fg flipped | storage-browser |
141
- | 3 | `hsl(0 0% 15%)` \| `hsl(0 0% 93.9%)` | badge-default-bg flipped | input-richtext, input-text |
142
- | 3 | `hsl(142.1 70.6% 45.3%)` \| `hsl(142.1 76.2% 36.3%)` | text-success flipped | (locate during sweep) |
143
- | 2 | `#262626` \| `#e5e5e5` | border-default flipped | appui-mainmenu, simple-appdash |
144
-
145
- ## Sweep order (WS1, after vocabulary approval)
146
-
147
- 1. Add approved tokens to `00theme.ts` (+ `IThemeColors`), release.
148
- 2. The 49 files currently using **both** systems (finish what's started; fastest surface reduction).
149
- 3. `00group-input` + form infrastructure (incl. datepicker slate re-skin)
150
- 4. `00group-dataview` (table styles.ts, storage-browser family incl. flip-suspects)
151
- 5. `00group-overlay`, `00group-layout`
152
- 6. `00group-appui`, `00group-simple`
153
- 7. `00group-chart`, `00group-media`, `00group-workspace`, remaining groups + demos
154
- 8. Dynamic-call components (progressbar, spinner, searchbar) — restructure their color props to
155
- accept tokens/CSS values rather than light/dark pairs.
156
-
157
- Per sweep: `pnpm build`, `pnpm test`, wcctools demo screenshots in both themes (before/after),
158
- `node scripts/check-bdtheme-ratchet.cjs --update-baseline`, focused commit per group.
159
-
160
- ## Ratchet
161
-
162
- `scripts/check-bdtheme-ratchet.cjs` (runs first in `pnpm test`):
163
-
164
- - counts `bdTheme(` occurrences per file under `ts_web/`, excluding `ts_web/elements/00theme.ts`
165
- - fails if any file exceeds its count in `scripts/bdtheme-baseline.json`, or if a file not in the
166
- baseline uses bdTheme at all
167
- - `--update-baseline` rewrites the baseline after a sweep (counts may only shrink; the script
168
- refuses to raise them)