bitwrench 2.0.31 → 2.1.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 (126) hide show
  1. package/README.md +210 -125
  2. package/dist/bitwrench-bccl.cjs.js +349 -188
  3. package/dist/bitwrench-bccl.cjs.min.js +2 -39
  4. package/dist/bitwrench-bccl.cjs.min.js.gz +0 -0
  5. package/dist/bitwrench-bccl.esm.js +349 -188
  6. package/dist/bitwrench-bccl.esm.min.js +2 -39
  7. package/dist/bitwrench-bccl.esm.min.js.gz +0 -0
  8. package/dist/bitwrench-bccl.umd.js +349 -188
  9. package/dist/bitwrench-bccl.umd.min.js +2 -39
  10. package/dist/bitwrench-bccl.umd.min.js.gz +0 -0
  11. package/dist/bitwrench-code-edit.cjs.js +17 -6
  12. package/dist/bitwrench-code-edit.cjs.min.js +2 -20
  13. package/dist/bitwrench-code-edit.es5.js +8 -3
  14. package/dist/bitwrench-code-edit.es5.min.js +2 -19
  15. package/dist/bitwrench-code-edit.esm.js +17 -6
  16. package/dist/bitwrench-code-edit.esm.min.js +2 -19
  17. package/dist/bitwrench-code-edit.umd.js +17 -6
  18. package/dist/bitwrench-code-edit.umd.min.js +2 -19
  19. package/dist/bitwrench-code-edit.umd.min.js.gz +0 -0
  20. package/dist/bitwrench-debug.js +1 -1
  21. package/dist/bitwrench-debug.min.js +1 -1
  22. package/dist/bitwrench-lean.cjs.js +2492 -1628
  23. package/dist/bitwrench-lean.cjs.min.js +2 -80
  24. package/dist/bitwrench-lean.cjs.min.js.gz +0 -0
  25. package/dist/bitwrench-lean.es5.js +2740 -1838
  26. package/dist/bitwrench-lean.es5.min.js +2 -49
  27. package/dist/bitwrench-lean.es5.min.js.gz +0 -0
  28. package/dist/bitwrench-lean.esm.js +2492 -1628
  29. package/dist/bitwrench-lean.esm.min.js +2 -80
  30. package/dist/bitwrench-lean.esm.min.js.gz +0 -0
  31. package/dist/bitwrench-lean.umd.js +2492 -1628
  32. package/dist/bitwrench-lean.umd.min.js +2 -80
  33. package/dist/bitwrench-lean.umd.min.js.gz +0 -0
  34. package/dist/bitwrench-util-color.cjs.js +251 -0
  35. package/dist/bitwrench-util-color.cjs.min.js +3 -0
  36. package/dist/bitwrench-util-color.es5.js +256 -0
  37. package/dist/bitwrench-util-color.es5.min.js +3 -0
  38. package/dist/bitwrench-util-color.esm.js +241 -0
  39. package/dist/bitwrench-util-color.esm.min.js +3 -0
  40. package/dist/bitwrench-util-color.umd.js +257 -0
  41. package/dist/bitwrench-util-color.umd.min.js +3 -0
  42. package/dist/bitwrench-util-css.cjs.js +2 -1
  43. package/dist/bitwrench-util-css.cjs.min.js +2 -21
  44. package/dist/bitwrench-util-css.es5.js +2 -1
  45. package/dist/bitwrench-util-css.es5.min.js +2 -20
  46. package/dist/bitwrench-util-css.esm.js +2 -1
  47. package/dist/bitwrench-util-css.esm.min.js +1 -19
  48. package/dist/bitwrench-util-css.umd.js +2 -1
  49. package/dist/bitwrench-util-css.umd.min.js +2 -20
  50. package/dist/bitwrench-util-css.umd.min.js.gz +0 -0
  51. package/dist/bitwrench.cjs.js +2826 -1801
  52. package/dist/bitwrench.cjs.min.js +2 -99
  53. package/dist/bitwrench.cjs.min.js.gz +0 -0
  54. package/dist/bitwrench.css +403 -479
  55. package/dist/bitwrench.d.ts +70 -73
  56. package/dist/bitwrench.es5.js +3106 -2020
  57. package/dist/bitwrench.es5.min.js +2 -67
  58. package/dist/bitwrench.es5.min.js.gz +0 -0
  59. package/dist/bitwrench.esm.js +2826 -1801
  60. package/dist/bitwrench.esm.min.js +2 -99
  61. package/dist/bitwrench.esm.min.js.gz +0 -0
  62. package/dist/bitwrench.min.css +1 -1
  63. package/dist/bitwrench.umd.js +2826 -1801
  64. package/dist/bitwrench.umd.min.js +2 -99
  65. package/dist/bitwrench.umd.min.js.gz +0 -0
  66. package/dist/builds.json +222 -134
  67. package/dist/bwserve.cjs.js +308 -298
  68. package/dist/bwserve.d.ts +157 -0
  69. package/dist/bwserve.esm.js +309 -299
  70. package/dist/sri.json +54 -46
  71. package/docs/README.md +6 -3
  72. package/docs/app-patterns.md +7 -6
  73. package/docs/bitwrench-for-wasm.md +53 -54
  74. package/docs/bitwrench-mcp.md +2 -2
  75. package/docs/bitwrench-northstar-principles.md +406 -0
  76. package/docs/bitwrench-taco-schema-discussion.md +2 -2
  77. package/docs/bitwrench_api.md +191 -106
  78. package/docs/bitwrench_typescript_usage.md +5 -5
  79. package/docs/bw-attach.md +29 -75
  80. package/docs/bwserve.md +200 -168
  81. package/docs/cli.md +36 -12
  82. package/docs/component-cheatsheet.md +2 -2
  83. package/docs/component-library.md +4 -4
  84. package/docs/component-lifecycle.md +234 -0
  85. package/docs/drift-lint.md +268 -0
  86. package/docs/framework-translation-table.md +4 -4
  87. package/docs/llm-bitwrench-guide.md +60 -50
  88. package/docs/routing.md +11 -13
  89. package/docs/state-management.md +110 -109
  90. package/docs/taco-format.md +13 -14
  91. package/docs/theming.md +13 -3
  92. package/docs/thinking-in-bitwrench.md +858 -983
  93. package/docs/tutorial-bwserve.md +37 -36
  94. package/docs/tutorial-embedded.md +10 -21
  95. package/docs/tutorial-website.md +2 -2
  96. package/package.json +38 -7
  97. package/readme.html +262 -160
  98. package/src/bitwrench-bccl-entry.js +2 -2
  99. package/src/bitwrench-bccl.js +346 -185
  100. package/src/bitwrench-code-edit.js +16 -5
  101. package/src/bitwrench-color-utils.js +117 -181
  102. package/src/bitwrench-file-ops.js +2 -2
  103. package/src/bitwrench-lean.js +4 -3
  104. package/src/bitwrench-router.js +5 -2
  105. package/src/bitwrench-styles.js +420 -504
  106. package/src/bitwrench-util-color.js +240 -0
  107. package/src/bitwrench-util-css.js +1 -0
  108. package/src/bitwrench-utils.js +4 -0
  109. package/src/bitwrench.d.ts +70 -73
  110. package/src/bitwrench.h +5 -0
  111. package/src/bitwrench.js +1939 -933
  112. package/src/bwserve/attach.js +0 -1
  113. package/src/bwserve/bwclient.js +172 -32
  114. package/src/bwserve/bwshell.js +0 -4
  115. package/src/bwserve/client.js +59 -220
  116. package/src/bwserve/index.js +78 -42
  117. package/src/bwserve.d.ts +157 -0
  118. package/src/bwserve.h +5 -0
  119. package/src/cli/attach.js +12 -75
  120. package/src/cli/convert.js +2 -2
  121. package/src/cli/serve.js +37 -35
  122. package/src/generate-css.js +1 -1
  123. package/src/mcp/knowledge.js +4 -4
  124. package/src/mcp/live.js +21 -13
  125. package/src/mcp/tools.js +0 -1
  126. package/src/version.js +3 -7
@@ -49,7 +49,7 @@ An object of HTML attributes. All standard attributes work, including event hand
49
49
  {
50
50
  t: 'button',
51
51
  a: {
52
- class: 'bw-btn bw-btn-primary',
52
+ class: 'bw_bccl_btn bw_primary',
53
53
  id: 'save-btn',
54
54
  disabled: true,
55
55
  onclick: function() { console.log('clicked'); },
@@ -135,9 +135,9 @@ The options key carries state, lifecycle hooks, and component behavior. This is
135
135
  // Component state
136
136
  state: { count: 0, items: [] },
137
137
 
138
- // Render function (called by bw.update)
139
- render: function(el) {
140
- bw.DOM(el, { t: 'span', c: 'Count: ' + el._bw_state.count });
138
+ // Render function (called by bw.refresh)
139
+ render: function(el, state) {
140
+ bw.DOM(el, { t: 'span', c: 'Count: ' + state.count });
141
141
  },
142
142
 
143
143
  // Lifecycle hooks
@@ -149,7 +149,7 @@ The options key carries state, lifecycle hooks, and component behavior. This is
149
149
 
150
150
  // Component handle -- methods exposed on el.bw (v2.0.19+)
151
151
  handle: {
152
- increment: function(el) { el._bw_state.count++; bw.update(el); }
152
+ increment: function(el) { el._bw_state.count++; bw.refresh(el); }
153
153
  },
154
154
 
155
155
  // Content slots -- auto-generates el.bw.setX()/getX() (v2.0.19+)
@@ -173,7 +173,7 @@ const html = bw.html({ t: 'div', c: 'Hello' });
173
173
  // '<div>Hello</div>'
174
174
 
175
175
  // Create a live DOM element (browser only)
176
- const el = bw.createDOM({ t: 'div', c: 'Hello' });
176
+ const el = bw.create({ t: 'div', c: 'Hello' });
177
177
  // HTMLDivElement
178
178
 
179
179
  // Mount into an existing DOM element (browser only)
@@ -208,7 +208,7 @@ var footer = h('footer', { class: 'bw_bg_dark bw_text_light bw_py_4' }, [
208
208
  ]);
209
209
  ```
210
210
 
211
- The output is serializable (assuming no function values), works with `bw.html()`, `bw.DOM()`, `bw.createDOM()`, bwserve, and everywhere else TACO is accepted. Mix `bw.h()` calls freely with `make*()` returns and hand-written TACO — they all produce the same thing.
211
+ The output is serializable (assuming no function values), works with `bw.html()`, `bw.DOM()`, `bw.create()`, bwserve, and everywhere else TACO is accepted. Mix `bw.h()` calls freely with `make*()` returns and hand-written TACO — they all produce the same thing.
212
212
 
213
213
  > **When to use `bw.h()` vs. hand-written TACO**: Use `bw.h()` for structural glue — wrapper divs, footers, headings — where the `{t:, a:, c:}` key syntax feels heavy. For complex nodes with `o:` (state, lifecycle), write full TACO — the named keys are clearer.
214
214
 
@@ -328,22 +328,21 @@ You can also wrap existing CSS frameworks (Bootstrap, Tailwind, etc.) in TACO ob
328
328
  }
329
329
  ```
330
330
 
331
- Bitwrench doesn't care where your CSS classes come from — it just renders the TACO to HTML/DOM. The `make*()` functions use bitwrench's built-in CSS classes (`bw_card`, `bw_btn`, etc.), but that's a choice, not a constraint.
331
+ Bitwrench doesn't care where your CSS classes come from — it just renders the TACO to HTML/DOM. The `make*()` functions use bitwrench's built-in CSS classes (`bw_bccl_card`, `bw_bccl_btn`, etc.), but that's a choice, not a constraint.
332
332
 
333
- To make a custom component reactive, add `o.state` and `o.render`:
333
+ To make a custom component stateful, add `o.state` and `o.render`:
334
334
 
335
335
  ```javascript
336
336
  bw.DOM('#app', {
337
337
  t: 'span',
338
338
  o: {
339
339
  state: { label: 'OK', color: '#4caf50' },
340
- render: function(el) {
341
- var s = el._bw_state;
340
+ render: function(el, state) {
342
341
  bw.DOM(el, {
343
342
  t: 'span',
344
343
  a: { class: 'status-badge',
345
- style: 'background:' + s.color + '; color:#fff; padding:0.25rem 0.75rem; border-radius:999px;' },
346
- c: s.label
344
+ style: 'background:' + state.color + '; color:#fff; padding:0.25rem 0.75rem; border-radius:999px;' },
345
+ c: state.label
347
346
  });
348
347
  }
349
348
  }
@@ -353,7 +352,7 @@ bw.DOM('#app', {
353
352
  var el = bw.$('.status-badge')[0].parentElement;
354
353
  el._bw_state.label = 'ERROR';
355
354
  el._bw_state.color = '#f44336';
356
- bw.update(el);
355
+ bw.refresh(el);
357
356
  ```
358
357
 
359
358
  ## TACO beyond the browser
package/docs/theming.md CHANGED
@@ -224,12 +224,22 @@ theme.alternate.palette; // light-inverted version of ocean
224
224
 
225
225
  ### Switching between palettes
226
226
 
227
+ Both palettes are injected together — the alternate is scoped under the `bw_theme_alt` class. Switching is a one-class toggle, no restyling needed:
228
+
229
+ ```javascript
230
+ bw.toggleThemeMode(); // flip primary <-> alternate (whole page)
231
+ bw.setThemeMode('alternate'); // set explicitly
232
+ bw.toggleThemeMode('#dashboard'); // toggle just one subtree
233
+ ```
234
+
235
+ To swap in a different palette entirely, re-apply:
236
+
227
237
  ```javascript
228
- // Toggle between primary and alternate palettes
229
- bw.toggleStyles();
238
+ bw.applyStyles(theme.alternate); // make the alternate palette primary
239
+ bw.applyStyles(theme); // switch back
230
240
  ```
231
241
 
232
- The toggle works by adding or removing the CSS class `.bw_theme_alt` on the `<html>` element. Both primary and alternate stylesheets are injected at theme generation time, so switching is instant -- no re-generation needed.
242
+ > **Note:** `bw.toggleStyles()` was removed in v2.1. Its replacement is `bw.toggleThemeMode()`, which toggles the `bw_theme_alt` class instead of re-injecting styles. See [`bw.toggleThemeMode()`](bitwrench_api.md#bwtogglethememodescope) and [`bw.setThemeMode()`](bitwrench_api.md#bwsetthememodemode-scope).
233
243
 
234
244
  ### Clearing a theme
235
245