@zakmandhro/bunti 0.2.1 → 0.3.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 (114) hide show
  1. package/README.md +6 -5
  2. package/dist/cli.d.ts +2 -2
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +33 -9
  5. package/dist/cli.js.map +1 -1
  6. package/dist/colors.d.ts +2 -2
  7. package/dist/colors.js +2 -2
  8. package/dist/components/Box.d.ts +1 -1
  9. package/dist/components/Button.d.ts +1 -1
  10. package/dist/components/Button.js +2 -2
  11. package/dist/components/Card.d.ts +1 -1
  12. package/dist/components/Card.js +3 -3
  13. package/dist/components/Header.d.ts +1 -1
  14. package/dist/components/Header.js +2 -2
  15. package/dist/components/Input.d.ts +2 -2
  16. package/dist/components/Input.js +1 -1
  17. package/dist/components/Link.d.ts +2 -2
  18. package/dist/components/Link.js +2 -2
  19. package/dist/components/Modal.d.ts +1 -1
  20. package/dist/components/Modal.js +2 -2
  21. package/dist/components/Progress.d.ts +2 -2
  22. package/dist/components/Progress.js +2 -2
  23. package/dist/components/Spinner.d.ts +2 -2
  24. package/dist/components/index.d.ts +9 -9
  25. package/dist/components/index.js +9 -9
  26. package/dist/data/nf-glyphs.d.ts +2 -2
  27. package/dist/demo-registry.d.ts.map +1 -1
  28. package/dist/demo-registry.js +6 -1
  29. package/dist/demo-registry.js.map +1 -1
  30. package/dist/demos/2048.js +559 -0
  31. package/dist/demos/2048.ts +1 -1
  32. package/dist/demos/animation.js +177 -0
  33. package/dist/demos/animation.ts +1 -1
  34. package/dist/demos/demo-layout.js +85 -0
  35. package/dist/demos/demo-layout.ts +6 -1
  36. package/dist/demos/engine.js +244 -0
  37. package/dist/demos/interaction.js +74 -0
  38. package/dist/demos/interaction.ts +1 -1
  39. package/dist/demos/login.js +175 -0
  40. package/dist/demos/login.ts +1 -1
  41. package/dist/demos/mission-control.js +427 -0
  42. package/dist/demos/platformer-physics.js +122 -0
  43. package/dist/demos/platformer-physics.ts +284 -0
  44. package/dist/demos/platformer.js +519 -0
  45. package/dist/demos/platformer.ts +761 -0
  46. package/dist/demos/showcase.js +181 -0
  47. package/dist/demos/showcase.ts +1 -1
  48. package/dist/diagnostics.d.ts +2 -2
  49. package/dist/dsl/context.d.ts +2 -2
  50. package/dist/dsl/context.d.ts.map +1 -1
  51. package/dist/dsl/context.js +14 -14
  52. package/dist/dsl/context.js.map +1 -1
  53. package/dist/dsl/hooks.d.ts +2 -2
  54. package/dist/dsl/hooks.js +1 -1
  55. package/dist/dsl/interaction.d.ts +3 -3
  56. package/dist/dsl/layers.d.ts +2 -2
  57. package/dist/dsl/motion.d.ts +2 -2
  58. package/dist/dsl/motion.js +2 -2
  59. package/dist/dsl/render.d.ts +2 -2
  60. package/dist/dsl/render.d.ts.map +1 -1
  61. package/dist/dsl/render.js +4 -8
  62. package/dist/dsl/render.js.map +1 -1
  63. package/dist/dsl/types.d.ts +11 -10
  64. package/dist/dsl/types.d.ts.map +1 -1
  65. package/dist/dsl/types.js.map +1 -1
  66. package/dist/dsl.d.ts +4 -4
  67. package/dist/dsl.js +3 -3
  68. package/dist/easing.d.ts +1 -1
  69. package/dist/geometry.d.ts +1 -1
  70. package/dist/geometry.js +1 -1
  71. package/dist/icons-full.d.ts +2 -2
  72. package/dist/icons-full.js +3 -3
  73. package/dist/icons.d.ts +4 -4
  74. package/dist/icons.js +3 -3
  75. package/dist/index.d.ts +42 -33
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +29 -24
  78. package/dist/index.js.map +1 -1
  79. package/dist/layout.d.ts +18 -6
  80. package/dist/layout.d.ts.map +1 -1
  81. package/dist/layout.js +15 -6
  82. package/dist/layout.js.map +1 -1
  83. package/dist/pixels.d.ts +51 -0
  84. package/dist/pixels.d.ts.map +1 -0
  85. package/dist/pixels.js +82 -0
  86. package/dist/pixels.js.map +1 -0
  87. package/dist/render.d.ts +1 -1
  88. package/dist/render.d.ts.map +1 -1
  89. package/dist/render.js +44 -10
  90. package/dist/render.js.map +1 -1
  91. package/dist/state.d.ts +4 -4
  92. package/dist/state.js +1 -1
  93. package/dist/theme.d.ts +2 -2
  94. package/dist/theme.js +1 -1
  95. package/dist/themes/catppuccin-mocha.d.ts +1 -1
  96. package/dist/themes/catppuccin-mocha.js +1 -1
  97. package/dist/themes/dracula.d.ts +1 -1
  98. package/dist/themes/dracula.js +1 -1
  99. package/dist/themes/github-light.d.ts +1 -1
  100. package/dist/themes/github-light.js +1 -1
  101. package/dist/themes/index.d.ts +7 -7
  102. package/dist/themes/index.js +6 -6
  103. package/dist/themes/nord.d.ts +1 -1
  104. package/dist/themes/nord.js +1 -1
  105. package/dist/themes/one-dark-pro.d.ts +1 -1
  106. package/dist/themes/one-dark-pro.js +1 -1
  107. package/dist/themes/tokyo-night.d.ts +1 -1
  108. package/dist/themes/tokyo-night.js +1 -1
  109. package/dist/utils.d.ts +6 -1
  110. package/dist/utils.d.ts.map +1 -1
  111. package/dist/utils.js +68 -3
  112. package/dist/utils.js.map +1 -1
  113. package/llms.txt +4 -2
  114. package/package.json +8 -4
package/README.md CHANGED
@@ -1,11 +1,12 @@
1
1
  # 🥟 Bunti (Bun Terminal Interface)
2
2
 
3
- **A Bun-native terminal layout engine with zero dependencies, 60fps rendering, and an agent-optimized functional API.**
3
+ **A terminal layout engine optimized for Bun and Node.js with zero dependencies, 60fps rendering, and an agent-optimized functional API.**
4
4
 
5
- Bunti (pronounced *Bun-ty*) is a zero-dependency, double-buffered layout engine for building terminal user interfaces. Unlike traditional TUI libraries, Bunti uses a **functional, state-driven architecture** and a **surgical diff-renderer** to deliver 60+ FPS layouts with minimal CPU and TTY overhead.
5
+ Bunti (pronounced *Bun-ty*) is a zero-dependency, double-buffered layout engine for building terminal user interfaces, optimized for Bun and Node.js. Unlike traditional TUI libraries, Bunti uses a **functional, state-driven architecture** and a **surgical diff-renderer** to deliver 60+ FPS layouts with minimal CPU and TTY overhead.
6
6
 
7
7
  ## ✨ Features
8
8
 
9
+ - ⚡ **Bun SIMD Acceleration**: Uses Bun's native SIMD vectorization (`Bun.stringWidth`) and buffered I/O for peak rendering speed, with automatic zero-dependency fallback on Node.js.
9
10
  - 🏗️ **Contextual DSL**: Build complex UIs with a declarative, nested closure API.
10
11
  - 🏎️ **Double-Buffered Diffing**: Only dirty row spans are sent to the terminal. Zero flicker.
11
12
  - 📏 **Mathematically Absolute**: 100% precision in width, padding, and border alignment.
@@ -16,14 +17,14 @@ Bunti (pronounced *Bun-ty*) is a zero-dependency, double-buffered layout engine
16
17
 
17
18
  ## 📦 Installation
18
19
 
19
- Bunti is Bun-native and ships compiled ESM plus TypeScript declarations — with zero runtime dependencies.
20
+ Bunti ships compiled ESM plus TypeScript declarations with zero runtime dependencies. It runs on both **Bun** and **Node.js** (>= 22.0.0 LTS) — leveraging **Bun's native SIMD-accelerated string width APIs** (`Bun.stringWidth`) for maximum throughput, with an automatic zero-dependency fallback under Node.js.
20
21
 
21
22
  ```bash
22
23
  bun add @zakmandhro/bunti
24
+ # or
25
+ npm install @zakmandhro/bunti
23
26
  ```
24
27
 
25
- > Bunti requires the [Bun](https://bun.sh) runtime (>= 1.0). It uses Bun-native APIs for rendering, so Node.js is not supported.
26
-
27
28
  ## 🚀 Quick Start
28
29
 
29
30
  ```typescript
package/dist/cli.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env bun
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * The `bunti` CLI — the zero-install front door:
4
4
  *
@@ -11,7 +11,7 @@
11
11
  * time (see scripts/build-demos.ts); `demo <name>` simply imports one, which
12
12
  * starts its render loop in-process.
13
13
  */
14
- import { type ColorTier, type TerminalProfile } from './detect';
14
+ import { type ColorTier, type TerminalProfile } from './detect.js';
15
15
  export type CliCommand = {
16
16
  cmd: 'help';
17
17
  } | {
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAGH,OAAO,EACL,KAAK,SAAS,EAGd,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,UAAU,GAClB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,GAClB;IAAE,GAAG,EAAE,QAAQ,CAAA;CAAE,GACjB;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,GACrB;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoBvD;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAGxC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAehD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAgCV"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAIH,OAAO,EACL,KAAK,SAAS,EAGd,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,UAAU,GAClB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,GAClB;IAAE,GAAG,EAAE,QAAQ,CAAA;CAAE,GACjB;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,GACrB;IAAE,GAAG,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,GAAG,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpC,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoBvD;AAED,8DAA8D;AAC9D,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAGxC;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAehD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CAoCV"}
package/dist/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env bun
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * The `bunti` CLI — the zero-install front door:
4
4
  *
@@ -11,8 +11,9 @@
11
11
  * time (see scripts/build-demos.ts); `demo <name>` simply imports one, which
12
12
  * starts its render loop in-process.
13
13
  */
14
- import { findDemo, PUBLIC_DEMOS } from './demo-registry';
15
- import { detectColorTier, identifyTerminal, } from './detect';
14
+ import { existsSync, readFileSync } from 'node:fs';
15
+ import { findDemo, PUBLIC_DEMOS } from './demo-registry.js';
16
+ import { detectColorTier, identifyTerminal, } from './detect.js';
16
17
  /** Pure argv parser (argv excludes the runtime + script entries). */
17
18
  export function parseCliArgs(argv) {
18
19
  const [first, second] = argv;
@@ -79,8 +80,11 @@ export function doctorReport(profile, tier, version, bunVersion) {
79
80
  'assumed-no': 'assumed no - ascii fallback',
80
81
  no: 'no - ascii fallback',
81
82
  };
83
+ const runtimeDesc = bunVersion.startsWith('bun') || bunVersion.startsWith('node')
84
+ ? bunVersion
85
+ : `bun ${bunVersion}`;
82
86
  const lines = [
83
- `bunti v${version} (bun ${bunVersion})`,
87
+ `bunti v${version} (${runtimeDesc})`,
84
88
  `terminal ${terminal}`,
85
89
  ];
86
90
  if (profile.multiplexer)
@@ -90,7 +94,12 @@ export function doctorReport(profile, tier, version, bunVersion) {
90
94
  }
91
95
  async function packageVersion() {
92
96
  try {
93
- const pkg = await Bun.file(new URL('../package.json', import.meta.url)).json();
97
+ const pkgUrl = new URL('../package.json', import.meta.url);
98
+ if (typeof Bun !== 'undefined' && typeof Bun.file === 'function') {
99
+ const pkg = await Bun.file(pkgUrl).json();
100
+ return typeof pkg.version === 'string' ? pkg.version : 'unknown';
101
+ }
102
+ const pkg = JSON.parse(readFileSync(pkgUrl, 'utf-8'));
94
103
  return typeof pkg.version === 'string' ? pkg.version : 'unknown';
95
104
  }
96
105
  catch {
@@ -98,11 +107,23 @@ async function packageVersion() {
98
107
  }
99
108
  }
100
109
  async function runDemo(file) {
101
- // Published layout: dist/cli.js + dist/demos/*.ts. Dev layout (running
110
+ // Published layout: dist/cli.js + dist/demos/*.js (or *.ts under Bun). Dev layout (running
102
111
  // src/cli.ts directly): ../demo/*.ts. Prefer the packaged copy.
103
- const packaged = new URL(`./demos/${file}`, import.meta.url);
112
+ const base = file.replace(/\.ts$/, '');
113
+ const packagedJs = new URL(`./demos/${base}.js`, import.meta.url);
114
+ const packagedTs = new URL(`./demos/${base}.ts`, import.meta.url);
104
115
  const dev = new URL(`../demo/${file}`, import.meta.url);
105
- const target = (await Bun.file(packaged).exists()) ? packaged : dev;
116
+ let target;
117
+ if (typeof Bun === 'undefined') {
118
+ target = existsSync(packagedJs) ? packagedJs : dev;
119
+ }
120
+ else {
121
+ target = existsSync(packagedJs)
122
+ ? packagedJs
123
+ : existsSync(packagedTs)
124
+ ? packagedTs
125
+ : dev;
126
+ }
106
127
  await import(target.href);
107
128
  }
108
129
  async function main() {
@@ -115,7 +136,10 @@ async function main() {
115
136
  console.log(await packageVersion());
116
137
  return;
117
138
  case 'doctor': {
118
- const report = doctorReport(identifyTerminal(), detectColorTier(), await packageVersion(), Bun.version);
139
+ const runtimeVersion = typeof Bun !== 'undefined'
140
+ ? `bun ${Bun.version}`
141
+ : `node ${process.version}`;
142
+ const report = doctorReport(identifyTerminal(), detectColorTier(), await packageVersion(), runtimeVersion);
119
143
  console.log(report.join('\n'));
120
144
  return;
121
145
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/colors.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Bunti Semantic & Palette Color System
3
3
  */
4
- import type { RGB } from './state';
5
- import type { ThemeColor } from './theme';
4
+ import type { RGB } from './state.js';
5
+ import type { ThemeColor } from './theme.js';
6
6
  /**
7
7
  * A resolved multi-stop gradient, accepted anywhere bgColor is (rect fills,
8
8
  * box backgrounds, wallpaper). Build one with ctx.gradient().
package/dist/colors.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Bunti Semantic & Palette Color System
3
3
  */
4
- import { colorTier } from './detect';
5
- import { hintsSuppressed, nearestMatch, recordHint } from './diagnostics';
4
+ import { colorTier } from './detect.js';
5
+ import { hintsSuppressed, nearestMatch, recordHint } from './diagnostics.js';
6
6
  /**
7
7
  * Internal brand carried by ThemeColor instances so callable theme tokens can
8
8
  * be distinguished from plain function-style border wrappers.
@@ -1,4 +1,4 @@
1
- import type { BuntiContext, DSLBoxOptions } from '../dsl';
1
+ import type { BuntiContext, DSLBoxOptions } from '../dsl.js';
2
2
  /** Props for Box — identical to ctx.box() options. */
3
3
  export interface BoxProps extends DSLBoxOptions {
4
4
  }
@@ -1,4 +1,4 @@
1
- import type { BuntiContext, DSLBoxOptions } from '../dsl';
1
+ import type { BuntiContext, DSLBoxOptions } from '../dsl.js';
2
2
  /** Props for Button. */
3
3
  export interface ButtonProps extends DSLBoxOptions {
4
4
  /** Stable id: keys the hitbox, Tab-focus slot, and hover state. */
@@ -1,5 +1,5 @@
1
- import { adjustBrightness, contrastText } from '../colors';
2
- import { indentBlock } from '../utils';
1
+ import { adjustBrightness, contrastText } from '../colors.js';
2
+ import { indentBlock } from '../utils.js';
3
3
  /**
4
4
  * Themed push button: Tab-focusable, hover/press styled from ctx.theme
5
5
  * tokens, activated by click, Enter, or Space (onClick fires once).
@@ -1,4 +1,4 @@
1
- import type { BuntiContext, DSLBoxOptions } from '../dsl';
1
+ import type { BuntiContext, DSLBoxOptions } from '../dsl.js';
2
2
  /** Card visual variants, mapped to theme tokens. */
3
3
  export type CardVariant = 'default' | 'accent' | 'danger';
4
4
  /** Props for Card. */
@@ -1,6 +1,6 @@
1
- import { adjustBrightness } from '../colors';
2
- import { visibleWidth } from '../utils';
3
- import { Box } from './Box';
1
+ import { adjustBrightness } from '../colors.js';
2
+ import { visibleWidth } from '../utils.js';
3
+ import { Box } from './Box.js';
4
4
  /**
5
5
  * Tactical Card Component
6
6
  * A structural container with an integrated header. Colors derive from
@@ -1,4 +1,4 @@
1
- import type { BuntiContext } from '../dsl';
1
+ import type { BuntiContext } from '../dsl.js';
2
2
  /** Props for Header. */
3
3
  export interface HeaderProps {
4
4
  /** Centered bar title. */
@@ -1,5 +1,5 @@
1
- import { box as engineBox } from '../layout';
2
- import { Box } from './Box';
1
+ import { box as engineBox } from '../layout.js';
2
+ import { Box } from './Box.js';
3
3
  /**
4
4
  * Enterprise Tactical Header
5
5
  * A full-width, high-signal branding bar. Colors derive from ctx.theme:
@@ -1,5 +1,5 @@
1
- import type { BuntiContext } from '../dsl';
2
- import type { StyleOptions } from '../layout';
1
+ import type { BuntiContext } from '../dsl.js';
2
+ import type { StyleOptions } from '../layout.js';
3
3
  /** Props for Input. */
4
4
  export interface InputProps extends StyleOptions {
5
5
  /** Stable id: keys the value state, focus slot, and hitbox. */
@@ -1,4 +1,4 @@
1
- import { charWidth, indentBlock } from '../utils';
1
+ import { charWidth, indentBlock } from '../utils.js';
2
2
  /** Key names that must never insert as text. */
3
3
  const NON_TEXT_KEYS = new Set([
4
4
  'up',
@@ -1,5 +1,5 @@
1
- import { type ColorValue } from '../colors';
2
- import type { BuntiContext } from '../dsl';
1
+ import { type ColorValue } from '../colors.js';
2
+ import type { BuntiContext } from '../dsl.js';
3
3
  export interface LinkProps {
4
4
  id: string;
5
5
  label: string;
@@ -1,5 +1,5 @@
1
- import { adjustBrightness, fg } from '../colors';
2
- import { visibleWidth } from '../utils';
1
+ import { adjustBrightness, fg } from '../colors.js';
2
+ import { visibleWidth } from '../utils.js';
3
3
  /**
4
4
  * Inline hyperlink: underlined themed text with a pointer-friendly hitbox.
5
5
  * Hover brightens the color one step (mode-aware); clicks fire once per
@@ -1,4 +1,4 @@
1
- import type { BuntiContext } from '../dsl';
1
+ import type { BuntiContext } from '../dsl.js';
2
2
  /** Props for Modal. */
3
3
  export interface ModalProps {
4
4
  /** Dialog width in cells. */
@@ -1,5 +1,5 @@
1
- import { fade, isThemeColor } from '../colors';
2
- import { clamp01, easeOutCubic } from '../easing';
1
+ import { fade, isThemeColor } from '../colors.js';
2
+ import { clamp01, easeOutCubic } from '../easing.js';
3
3
  /** Entrance animation length. */
4
4
  const ENTRANCE_MS = 150;
5
5
  /** A modal unseen for this long counts as closed; reopening replays the entrance. */
@@ -1,5 +1,5 @@
1
- import { type ColorValue } from '../colors';
2
- import type { BuntiContext } from '../dsl';
1
+ import { type ColorValue } from '../colors.js';
2
+ import type { BuntiContext } from '../dsl.js';
3
3
  export interface ProgressProps {
4
4
  /** Fill fraction 0..1 (clamped). */
5
5
  value: number;
@@ -1,5 +1,5 @@
1
- import { createGradient } from '../colors';
2
- import { clamp01 } from '../easing';
1
+ import { createGradient } from '../colors.js';
2
+ import { clamp01 } from '../easing.js';
3
3
  /**
4
4
  * Themed progress bar: theme.primary fill over a theme.border track, with
5
5
  * optional per-cell gradient fill. Appends to the current flow and returns
@@ -1,5 +1,5 @@
1
- import type { ColorValue } from '../colors';
2
- import type { BuntiContext } from '../dsl';
1
+ import type { ColorValue } from '../colors.js';
2
+ import type { BuntiContext } from '../dsl.js';
3
3
  /** Braille spinner animation frames, in playback order. */
4
4
  export declare const SPINNER_FRAMES: readonly ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
5
5
  export interface SpinnerProps {
@@ -1,10 +1,10 @@
1
- export * from './Box';
2
- export * from './Button';
3
- export * from './Card';
4
- export * from './Header';
5
- export * from './Input';
6
- export * from './Link';
7
- export * from './Modal';
8
- export * from './Progress';
9
- export * from './Spinner';
1
+ export * from './Box.js';
2
+ export * from './Button.js';
3
+ export * from './Card.js';
4
+ export * from './Header.js';
5
+ export * from './Input.js';
6
+ export * from './Link.js';
7
+ export * from './Modal.js';
8
+ export * from './Progress.js';
9
+ export * from './Spinner.js';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1,10 +1,10 @@
1
- export * from './Box';
2
- export * from './Button';
3
- export * from './Card';
4
- export * from './Header';
5
- export * from './Input';
6
- export * from './Link';
7
- export * from './Modal';
8
- export * from './Progress';
9
- export * from './Spinner';
1
+ export * from './Box.js';
2
+ export * from './Button.js';
3
+ export * from './Card.js';
4
+ export * from './Header.js';
5
+ export * from './Input.js';
6
+ export * from './Link.js';
7
+ export * from './Modal.js';
8
+ export * from './Progress.js';
9
+ export * from './Spinner.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -4,8 +4,8 @@
4
4
  * Source: Nerd Fonts v3.4.0 glyphnames.json
5
5
  * Regenerate: bun scripts/gen-icons.ts
6
6
  */
7
- import type { IconName } from './nf-names';
8
- export type { IconName } from './nf-names';
7
+ import type { IconName } from './nf-names.js';
8
+ export type { IconName } from './nf-names.js';
9
9
  export declare const NF_GLYPHS: Record<IconName, string>;
10
10
  export declare const NF_VERSION = "v3.4.0";
11
11
  //# sourceMappingURL=nf-glyphs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"demo-registry.d.ts","sourceRoot":"","sources":["../src/demo-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sCAAsC;AACtC,eAAO,MAAM,YAAY,EAAE,SAAS,EAqCnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,UAAqB,CAAC;AAE/C,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE5D"}
1
+ {"version":3,"file":"demo-registry.d.ts","sourceRoot":"","sources":["../src/demo-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,SAAS;IACxB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sCAAsC;AACtC,eAAO,MAAM,YAAY,EAAE,SAAS,EA2CnC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,UAA8C,CAAC;AAExE,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE5D"}
@@ -19,6 +19,11 @@ export const PUBLIC_DEMOS = [
19
19
  file: '2048.ts',
20
20
  description: 'The classic game - keyboard input, merge animations',
21
21
  },
22
+ {
23
+ name: 'platformer',
24
+ file: 'platformer.ts',
25
+ description: 'STARHOP - 60fps side-scroller, pixel sprites, parallax, coyote jumps',
26
+ },
22
27
  {
23
28
  name: 'animation',
24
29
  file: 'animation.ts',
@@ -49,7 +54,7 @@ export const PUBLIC_DEMOS = [
49
54
  * Non-demo helper modules that public demos import; copied alongside them
50
55
  * into dist/demos/ by scripts/build-demos.ts.
51
56
  */
52
- export const DEMO_HELPERS = ['demo-layout.ts'];
57
+ export const DEMO_HELPERS = ['demo-layout.ts', 'platformer-physics.ts'];
53
58
  /** Looks up a public demo by registry name. */
54
59
  export function findDemo(name) {
55
60
  return PUBLIC_DEMOS.find((d) => d.name === name);
@@ -1 +1 @@
1
- {"version":3,"file":"demo-registry.js","sourceRoot":"","sources":["../src/demo-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,sCAAsC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,kEAAkE;KACrE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0DAA0D;KACxE;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE/C,+CAA+C;AAC/C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"demo-registry.js","sourceRoot":"","sources":["../src/demo-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,sCAAsC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,kEAAkE;KACrE;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,qDAAqD;KACnE;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,sEAAsE;KACzE;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,oDAAoD;KAClE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sDAAsD;KACpE;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8CAA8C;KAC5D;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0DAA0D;KACxE;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;AAExE,+CAA+C;AAC/C,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC"}