@effect-tui/core 0.1.0 → 0.1.4

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 (271) hide show
  1. package/README.md +31 -11
  2. package/dist/ansi.d.ts +127 -32
  3. package/dist/ansi.d.ts.map +1 -1
  4. package/dist/ansi.js +159 -37
  5. package/dist/ansi.js.map +1 -1
  6. package/dist/colors.d.ts +139 -0
  7. package/dist/colors.d.ts.map +1 -0
  8. package/dist/colors.js +339 -0
  9. package/dist/colors.js.map +1 -0
  10. package/dist/index.d.ts +6 -10
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +13 -11
  13. package/dist/index.js.map +1 -1
  14. package/dist/keys.d.ts +21 -0
  15. package/dist/keys.d.ts.map +1 -1
  16. package/dist/keys.js +199 -58
  17. package/dist/keys.js.map +1 -1
  18. package/dist/layout/axis-helpers.d.ts +19 -0
  19. package/dist/layout/axis-helpers.d.ts.map +1 -0
  20. package/dist/layout/axis-helpers.js +19 -0
  21. package/dist/layout/axis-helpers.js.map +1 -0
  22. package/dist/output.d.ts +59 -0
  23. package/dist/output.d.ts.map +1 -0
  24. package/dist/output.js +142 -0
  25. package/dist/output.js.map +1 -0
  26. package/dist/render/buffer.d.ts.map +1 -1
  27. package/dist/render/buffer.js +6 -25
  28. package/dist/render/buffer.js.map +1 -1
  29. package/dist/render/graphemes.d.ts +15 -0
  30. package/dist/render/graphemes.d.ts.map +1 -0
  31. package/dist/render/graphemes.js +28 -0
  32. package/dist/render/graphemes.js.map +1 -0
  33. package/dist/render/measure.d.ts +1 -0
  34. package/dist/render/measure.d.ts.map +1 -1
  35. package/dist/render/measure.js +14 -36
  36. package/dist/render/measure.js.map +1 -1
  37. package/dist/render/palette.d.ts.map +1 -1
  38. package/dist/render/palette.js +26 -1
  39. package/dist/render/palette.js.map +1 -1
  40. package/dist/render/segmenter.d.ts +8 -0
  41. package/dist/render/segmenter.d.ts.map +1 -0
  42. package/dist/render/segmenter.js +23 -0
  43. package/dist/render/segmenter.js.map +1 -0
  44. package/dist/render/surface.d.ts +6 -32
  45. package/dist/render/surface.d.ts.map +1 -1
  46. package/dist/render/surface.js +11 -80
  47. package/dist/render/surface.js.map +1 -1
  48. package/dist/runtime/backend_node.d.ts.map +1 -1
  49. package/dist/runtime/backend_node.js.map +1 -1
  50. package/dist/tailwind-colors.d.ts +291 -0
  51. package/dist/tailwind-colors.d.ts.map +1 -0
  52. package/dist/tailwind-colors.js +291 -0
  53. package/dist/tailwind-colors.js.map +1 -0
  54. package/dist/types.d.ts +15 -0
  55. package/dist/types.d.ts.map +1 -0
  56. package/dist/types.js +3 -0
  57. package/dist/types.js.map +1 -0
  58. package/package.json +55 -55
  59. package/src/ansi.ts +201 -73
  60. package/src/colors.ts +468 -0
  61. package/src/index.ts +28 -14
  62. package/src/keys.ts +467 -287
  63. package/src/layout/axis-helpers.ts +33 -0
  64. package/src/output.ts +175 -0
  65. package/src/render/buffer.ts +161 -184
  66. package/src/render/graphemes.ts +34 -0
  67. package/src/render/measure.ts +15 -38
  68. package/src/render/palette.ts +98 -77
  69. package/src/render/segmenter.ts +27 -0
  70. package/src/render/surface.ts +139 -225
  71. package/src/runtime/backend_node.ts +71 -71
  72. package/src/tailwind-colors.ts +295 -0
  73. package/src/types.ts +18 -0
  74. package/dist/anim.d.ts +0 -4
  75. package/dist/anim.d.ts.map +0 -1
  76. package/dist/anim.js +0 -5
  77. package/dist/anim.js.map +0 -1
  78. package/dist/layout/linearStack.d.ts +0 -17
  79. package/dist/layout/linearStack.d.ts.map +0 -1
  80. package/dist/layout/linearStack.js +0 -86
  81. package/dist/layout/linearStack.js.map +0 -1
  82. package/dist/motion-value.d.ts +0 -58
  83. package/dist/motion-value.d.ts.map +0 -1
  84. package/dist/motion-value.js +0 -250
  85. package/dist/motion-value.js.map +0 -1
  86. package/dist/present/display.d.ts +0 -58
  87. package/dist/present/display.d.ts.map +0 -1
  88. package/dist/present/display.js +0 -168
  89. package/dist/present/display.js.map +0 -1
  90. package/dist/present/writers/fullscreen.d.ts +0 -19
  91. package/dist/present/writers/fullscreen.d.ts.map +0 -1
  92. package/dist/present/writers/fullscreen.js +0 -55
  93. package/dist/present/writers/fullscreen.js.map +0 -1
  94. package/dist/present/writers/inline.d.ts +0 -20
  95. package/dist/present/writers/inline.d.ts.map +0 -1
  96. package/dist/present/writers/inline.js +0 -92
  97. package/dist/present/writers/inline.js.map +0 -1
  98. package/dist/render/color-utils.d.ts +0 -18
  99. package/dist/render/color-utils.d.ts.map +0 -1
  100. package/dist/render/color-utils.js +0 -58
  101. package/dist/render/color-utils.js.map +0 -1
  102. package/dist/render/diff.d.ts +0 -30
  103. package/dist/render/diff.d.ts.map +0 -1
  104. package/dist/render/diff.js +0 -83
  105. package/dist/render/diff.js.map +0 -1
  106. package/dist/spring-physics.d.ts +0 -36
  107. package/dist/spring-physics.d.ts.map +0 -1
  108. package/dist/spring-physics.js +0 -113
  109. package/dist/spring-physics.js.map +0 -1
  110. package/dist/spring.d.ts +0 -73
  111. package/dist/spring.d.ts.map +0 -1
  112. package/dist/spring.js +0 -136
  113. package/dist/spring.js.map +0 -1
  114. package/dist/ui/containers/canvas.d.ts +0 -13
  115. package/dist/ui/containers/canvas.d.ts.map +0 -1
  116. package/dist/ui/containers/canvas.js +0 -16
  117. package/dist/ui/containers/canvas.js.map +0 -1
  118. package/dist/ui/containers/geometry-reader.d.ts +0 -17
  119. package/dist/ui/containers/geometry-reader.d.ts.map +0 -1
  120. package/dist/ui/containers/geometry-reader.js +0 -24
  121. package/dist/ui/containers/geometry-reader.js.map +0 -1
  122. package/dist/ui/containers/hstack.d.ts +0 -12
  123. package/dist/ui/containers/hstack.d.ts.map +0 -1
  124. package/dist/ui/containers/hstack.js +0 -28
  125. package/dist/ui/containers/hstack.js.map +0 -1
  126. package/dist/ui/containers/scroll.d.ts +0 -28
  127. package/dist/ui/containers/scroll.d.ts.map +0 -1
  128. package/dist/ui/containers/scroll.js +0 -97
  129. package/dist/ui/containers/scroll.js.map +0 -1
  130. package/dist/ui/containers/shared.d.ts +0 -12
  131. package/dist/ui/containers/shared.d.ts.map +0 -1
  132. package/dist/ui/containers/shared.js +0 -19
  133. package/dist/ui/containers/shared.js.map +0 -1
  134. package/dist/ui/containers/vstack.d.ts +0 -12
  135. package/dist/ui/containers/vstack.d.ts.map +0 -1
  136. package/dist/ui/containers/vstack.js +0 -28
  137. package/dist/ui/containers/vstack.js.map +0 -1
  138. package/dist/ui/containers/zstack.d.ts +0 -14
  139. package/dist/ui/containers/zstack.d.ts.map +0 -1
  140. package/dist/ui/containers/zstack.js +0 -36
  141. package/dist/ui/containers/zstack.js.map +0 -1
  142. package/dist/ui/core/geometry-store.d.ts +0 -22
  143. package/dist/ui/core/geometry-store.d.ts.map +0 -1
  144. package/dist/ui/core/geometry-store.js +0 -29
  145. package/dist/ui/core/geometry-store.js.map +0 -1
  146. package/dist/ui/core/geometry.d.ts +0 -34
  147. package/dist/ui/core/geometry.d.ts.map +0 -1
  148. package/dist/ui/core/geometry.js +0 -14
  149. package/dist/ui/core/geometry.js.map +0 -1
  150. package/dist/ui/core/view.d.ts +0 -25
  151. package/dist/ui/core/view.d.ts.map +0 -1
  152. package/dist/ui/core/view.js +0 -34
  153. package/dist/ui/core/view.js.map +0 -1
  154. package/dist/ui/index.d.ts +0 -44
  155. package/dist/ui/index.d.ts.map +0 -1
  156. package/dist/ui/index.js +0 -39
  157. package/dist/ui/index.js.map +0 -1
  158. package/dist/ui/inlinetext.d.ts +0 -24
  159. package/dist/ui/inlinetext.d.ts.map +0 -1
  160. package/dist/ui/inlinetext.js +0 -131
  161. package/dist/ui/inlinetext.js.map +0 -1
  162. package/dist/ui/install.d.ts +0 -22
  163. package/dist/ui/install.d.ts.map +0 -1
  164. package/dist/ui/install.js +0 -66
  165. package/dist/ui/install.js.map +0 -1
  166. package/dist/ui/markdown.d.ts +0 -40
  167. package/dist/ui/markdown.d.ts.map +0 -1
  168. package/dist/ui/markdown.js +0 -351
  169. package/dist/ui/markdown.js.map +0 -1
  170. package/dist/ui/modifiers/border.d.ts +0 -33
  171. package/dist/ui/modifiers/border.d.ts.map +0 -1
  172. package/dist/ui/modifiers/border.js +0 -82
  173. package/dist/ui/modifiers/border.js.map +0 -1
  174. package/dist/ui/modifiers/fill.d.ts +0 -14
  175. package/dist/ui/modifiers/fill.d.ts.map +0 -1
  176. package/dist/ui/modifiers/fill.js +0 -25
  177. package/dist/ui/modifiers/fill.js.map +0 -1
  178. package/dist/ui/modifiers/frame.d.ts +0 -23
  179. package/dist/ui/modifiers/frame.d.ts.map +0 -1
  180. package/dist/ui/modifiers/frame.js +0 -54
  181. package/dist/ui/modifiers/frame.js.map +0 -1
  182. package/dist/ui/modifiers/offset.d.ts +0 -15
  183. package/dist/ui/modifiers/offset.d.ts.map +0 -1
  184. package/dist/ui/modifiers/offset.js +0 -21
  185. package/dist/ui/modifiers/offset.js.map +0 -1
  186. package/dist/ui/modifiers/opacity.d.ts +0 -15
  187. package/dist/ui/modifiers/opacity.d.ts.map +0 -1
  188. package/dist/ui/modifiers/opacity.js +0 -95
  189. package/dist/ui/modifiers/opacity.js.map +0 -1
  190. package/dist/ui/modifiers/padding.d.ts +0 -20
  191. package/dist/ui/modifiers/padding.d.ts.map +0 -1
  192. package/dist/ui/modifiers/padding.js +0 -36
  193. package/dist/ui/modifiers/padding.js.map +0 -1
  194. package/dist/ui/modifiers/styled.d.ts +0 -14
  195. package/dist/ui/modifiers/styled.d.ts.map +0 -1
  196. package/dist/ui/modifiers/styled.js +0 -26
  197. package/dist/ui/modifiers/styled.js.map +0 -1
  198. package/dist/ui/primitives/rectangle.d.ts +0 -15
  199. package/dist/ui/primitives/rectangle.d.ts.map +0 -1
  200. package/dist/ui/primitives/rectangle.js +0 -23
  201. package/dist/ui/primitives/rectangle.js.map +0 -1
  202. package/dist/ui/primitives/spacer.d.ts +0 -13
  203. package/dist/ui/primitives/spacer.d.ts.map +0 -1
  204. package/dist/ui/primitives/spacer.js +0 -16
  205. package/dist/ui/primitives/spacer.js.map +0 -1
  206. package/dist/ui/primitives/text.d.ts +0 -15
  207. package/dist/ui/primitives/text.d.ts.map +0 -1
  208. package/dist/ui/primitives/text.js +0 -79
  209. package/dist/ui/primitives/text.js.map +0 -1
  210. package/dist/ui/primitives/wrapped-text.d.ts +0 -30
  211. package/dist/ui/primitives/wrapped-text.d.ts.map +0 -1
  212. package/dist/ui/primitives/wrapped-text.js +0 -117
  213. package/dist/ui/primitives/wrapped-text.js.map +0 -1
  214. package/dist/ui/shinytext.d.ts +0 -66
  215. package/dist/ui/shinytext.d.ts.map +0 -1
  216. package/dist/ui/shinytext.js +0 -99
  217. package/dist/ui/shinytext.js.map +0 -1
  218. package/dist/ui/text/layout.d.ts +0 -35
  219. package/dist/ui/text/layout.d.ts.map +0 -1
  220. package/dist/ui/text/layout.js +0 -102
  221. package/dist/ui/text/layout.js.map +0 -1
  222. package/dist/ui/textinput.d.ts +0 -140
  223. package/dist/ui/textinput.d.ts.map +0 -1
  224. package/dist/ui/textinput.js +0 -402
  225. package/dist/ui/textinput.js.map +0 -1
  226. package/dist/ui/view-constructors.d.ts +0 -72
  227. package/dist/ui/view-constructors.d.ts.map +0 -1
  228. package/dist/ui/view-constructors.js +0 -74
  229. package/dist/ui/view-constructors.js.map +0 -1
  230. package/src/anim.ts +0 -5
  231. package/src/layout/linearStack.ts +0 -115
  232. package/src/motion-value.ts +0 -335
  233. package/src/present/display.ts +0 -206
  234. package/src/present/writers/fullscreen.ts +0 -58
  235. package/src/present/writers/inline.ts +0 -101
  236. package/src/render/color-utils.ts +0 -60
  237. package/src/render/diff.ts +0 -95
  238. package/src/spring-physics.ts +0 -151
  239. package/src/spring.ts +0 -234
  240. package/src/ui/__snapshots__/wrappedtext.test.ts.snap +0 -57
  241. package/src/ui/containers/canvas.ts +0 -18
  242. package/src/ui/containers/geometry-reader.ts +0 -32
  243. package/src/ui/containers/hstack.ts +0 -33
  244. package/src/ui/containers/scroll.ts +0 -106
  245. package/src/ui/containers/shared.ts +0 -27
  246. package/src/ui/containers/vstack.ts +0 -34
  247. package/src/ui/containers/zstack.ts +0 -37
  248. package/src/ui/core/geometry-store.ts +0 -42
  249. package/src/ui/core/geometry.ts +0 -30
  250. package/src/ui/core/view.ts +0 -49
  251. package/src/ui/index.ts +0 -84
  252. package/src/ui/inlinetext.ts +0 -135
  253. package/src/ui/install.ts +0 -110
  254. package/src/ui/markdown.test.ts +0 -74
  255. package/src/ui/markdown.ts +0 -388
  256. package/src/ui/modifiers/border.ts +0 -100
  257. package/src/ui/modifiers/fill.ts +0 -28
  258. package/src/ui/modifiers/frame.ts +0 -74
  259. package/src/ui/modifiers/offset.ts +0 -23
  260. package/src/ui/modifiers/opacity.ts +0 -93
  261. package/src/ui/modifiers/padding.ts +0 -53
  262. package/src/ui/modifiers/styled.ts +0 -31
  263. package/src/ui/primitives/rectangle.ts +0 -25
  264. package/src/ui/primitives/spacer.ts +0 -18
  265. package/src/ui/primitives/text.ts +0 -85
  266. package/src/ui/primitives/wrapped-text.ts +0 -131
  267. package/src/ui/shinytext.ts +0 -159
  268. package/src/ui/text/layout.ts +0 -119
  269. package/src/ui/textinput.ts +0 -496
  270. package/src/ui/view-constructors.ts +0 -96
  271. package/src/ui/wrappedtext.test.ts +0 -138
@@ -1,80 +1,80 @@
1
1
  import { ANSI, Terminal } from "../ansi.js"
2
2
 
3
3
  export interface TerminalBackend {
4
- size(): { cols: number; rows: number }
5
- write(s: string): void
6
- enterFullscreen(): void
7
- exitFullscreen(): void
8
- hideCursor(): void
9
- showCursor(): void
10
- enableMouse(): void
11
- disableMouse(): void
12
- /** Query terminal for current cursor position (1-based). */
13
- getCursorPosition(): Promise<{ row: number; col: number }>
4
+ size(): { cols: number; rows: number }
5
+ write(s: string): void
6
+ enterFullscreen(): void
7
+ exitFullscreen(): void
8
+ hideCursor(): void
9
+ showCursor(): void
10
+ enableMouse(): void
11
+ disableMouse(): void
12
+ /** Query terminal for current cursor position (1-based). */
13
+ getCursorPosition(): Promise<{ row: number; col: number }>
14
14
  }
15
15
 
16
16
  export class TerminalBackendLive implements TerminalBackend {
17
- size() {
18
- return { cols: process.stdout.columns || 80, rows: process.stdout.rows || 24 }
19
- }
20
- write(s: string) {
21
- try {
22
- if (!process.stdout.write(s)) {
23
- // queue a microtask to flush on 'drain' without blocking
24
- const onDrain = () => process.stdout.off("drain", onDrain)
25
- process.stdout.on("drain", onDrain)
26
- }
27
- } catch {}
28
- }
29
- enterFullscreen() {
30
- this.write(Terminal.enterFullscreen)
31
- this.write(Terminal.bracketedPasteOn)
32
- this.enableMouse()
33
- }
34
- exitFullscreen() {
35
- this.disableMouse()
36
- this.write(Terminal.bracketedPasteOff)
37
- this.write(Terminal.exitFullscreen)
38
- }
39
- hideCursor() {
40
- this.write(ANSI.cursor.hide)
41
- }
42
- showCursor() {
43
- this.write(ANSI.cursor.show)
44
- }
45
- enableMouse() {
46
- this.write(Terminal.mouseOn)
47
- }
48
- disableMouse() {
49
- this.write(Terminal.mouseOff)
50
- }
17
+ size() {
18
+ return { cols: process.stdout.columns || 80, rows: process.stdout.rows || 24 }
19
+ }
20
+ write(s: string) {
21
+ try {
22
+ if (!process.stdout.write(s)) {
23
+ // queue a microtask to flush on 'drain' without blocking
24
+ const onDrain = () => process.stdout.off("drain", onDrain)
25
+ process.stdout.on("drain", onDrain)
26
+ }
27
+ } catch {}
28
+ }
29
+ enterFullscreen() {
30
+ this.write(Terminal.enterFullscreen)
31
+ this.write(Terminal.bracketedPasteOn)
32
+ this.enableMouse()
33
+ }
34
+ exitFullscreen() {
35
+ this.disableMouse()
36
+ this.write(Terminal.bracketedPasteOff)
37
+ this.write(Terminal.exitFullscreen)
38
+ }
39
+ hideCursor() {
40
+ this.write(ANSI.cursor.hide)
41
+ }
42
+ showCursor() {
43
+ this.write(ANSI.cursor.show)
44
+ }
45
+ enableMouse() {
46
+ this.write(Terminal.mouseOn)
47
+ }
48
+ disableMouse() {
49
+ this.write(Terminal.mouseOff)
50
+ }
51
51
 
52
- getCursorPosition(): Promise<{ row: number; col: number }> {
53
- return new Promise((resolve) => {
54
- const inp = process.stdin
55
- let buf = ""
56
- const onData = (b: Buffer) => {
57
- buf += b.toString("utf8")
58
- // Look for ESC [ row ; col R
59
- const m = /\x1b\[(\d+);(\d+)R/.exec(buf)
60
- if (m) {
61
- cleanup()
62
- resolve({ row: parseInt(m[1], 10) || 1, col: parseInt(m[2], 10) || 1 })
63
- }
64
- }
65
- const cleanup = () => {
66
- clearTimeout(timer)
67
- inp.off("data", onData)
68
- }
69
- const timer = setTimeout(() => {
70
- cleanup()
71
- // Fallback: best effort guess (bottom-left)
72
- resolve({ row: process.stdout.rows || 24, col: 1 })
73
- }, 120)
52
+ getCursorPosition(): Promise<{ row: number; col: number }> {
53
+ return new Promise((resolve) => {
54
+ const inp = process.stdin
55
+ let buf = ""
56
+ const onData = (b: Buffer) => {
57
+ buf += b.toString("utf8")
58
+ // Look for ESC [ row ; col R
59
+ const m = /\x1b\[(\d+);(\d+)R/.exec(buf)
60
+ if (m) {
61
+ cleanup()
62
+ resolve({ row: parseInt(m[1], 10) || 1, col: parseInt(m[2], 10) || 1 })
63
+ }
64
+ }
65
+ const cleanup = () => {
66
+ clearTimeout(timer)
67
+ inp.off("data", onData)
68
+ }
69
+ const timer = setTimeout(() => {
70
+ cleanup()
71
+ // Fallback: best effort guess (bottom-left)
72
+ resolve({ row: process.stdout.rows || 24, col: 1 })
73
+ }, 120)
74
74
 
75
- inp.on("data", onData)
76
- // Device Status Report: “Report Cursor Position”
77
- this.write(Terminal.reportCursorPosition)
78
- })
79
- }
75
+ inp.on("data", onData)
76
+ // Device Status Report: “Report Cursor Position”
77
+ this.write(Terminal.reportCursorPosition)
78
+ })
79
+ }
80
80
  }
@@ -0,0 +1,295 @@
1
+ // Tailwind CSS color palette
2
+ // Source: https://tailwindcss.com/docs/customizing-colors
3
+
4
+ export type TailwindShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 950
5
+
6
+ export const tailwindColors = {
7
+ slate: {
8
+ 50: "#f8fafc",
9
+ 100: "#f1f5f9",
10
+ 200: "#e2e8f0",
11
+ 300: "#cbd5e1",
12
+ 400: "#94a3b8",
13
+ 500: "#64748b",
14
+ 600: "#475569",
15
+ 700: "#334155",
16
+ 800: "#1e293b",
17
+ 900: "#0f172a",
18
+ 950: "#020617",
19
+ },
20
+ gray: {
21
+ 50: "#f9fafb",
22
+ 100: "#f3f4f6",
23
+ 200: "#e5e7eb",
24
+ 300: "#d1d5db",
25
+ 400: "#9ca3af",
26
+ 500: "#6b7280",
27
+ 600: "#4b5563",
28
+ 700: "#374151",
29
+ 800: "#1f2937",
30
+ 900: "#111827",
31
+ 950: "#030712",
32
+ },
33
+ zinc: {
34
+ 50: "#fafafa",
35
+ 100: "#f4f4f5",
36
+ 200: "#e4e4e7",
37
+ 300: "#d4d4d8",
38
+ 400: "#a1a1aa",
39
+ 500: "#71717a",
40
+ 600: "#52525b",
41
+ 700: "#3f3f46",
42
+ 800: "#27272a",
43
+ 900: "#18181b",
44
+ 950: "#09090b",
45
+ },
46
+ neutral: {
47
+ 50: "#fafafa",
48
+ 100: "#f5f5f5",
49
+ 200: "#e5e5e5",
50
+ 300: "#d4d4d4",
51
+ 400: "#a3a3a3",
52
+ 500: "#737373",
53
+ 600: "#525252",
54
+ 700: "#404040",
55
+ 800: "#262626",
56
+ 900: "#171717",
57
+ 950: "#0a0a0a",
58
+ },
59
+ stone: {
60
+ 50: "#fafaf9",
61
+ 100: "#f5f5f4",
62
+ 200: "#e7e5e4",
63
+ 300: "#d6d3d1",
64
+ 400: "#a8a29e",
65
+ 500: "#78716c",
66
+ 600: "#57534e",
67
+ 700: "#44403c",
68
+ 800: "#292524",
69
+ 900: "#1c1917",
70
+ 950: "#0c0a09",
71
+ },
72
+ red: {
73
+ 50: "#fef2f2",
74
+ 100: "#fee2e2",
75
+ 200: "#fecaca",
76
+ 300: "#fca5a5",
77
+ 400: "#f87171",
78
+ 500: "#ef4444",
79
+ 600: "#dc2626",
80
+ 700: "#b91c1c",
81
+ 800: "#991b1b",
82
+ 900: "#7f1d1d",
83
+ 950: "#450a0a",
84
+ },
85
+ orange: {
86
+ 50: "#fff7ed",
87
+ 100: "#ffedd5",
88
+ 200: "#fed7aa",
89
+ 300: "#fdba74",
90
+ 400: "#fb923c",
91
+ 500: "#f97316",
92
+ 600: "#ea580c",
93
+ 700: "#c2410c",
94
+ 800: "#9a3412",
95
+ 900: "#7c2d12",
96
+ 950: "#431407",
97
+ },
98
+ amber: {
99
+ 50: "#fffbeb",
100
+ 100: "#fef3c7",
101
+ 200: "#fde68a",
102
+ 300: "#fcd34d",
103
+ 400: "#fbbf24",
104
+ 500: "#f59e0b",
105
+ 600: "#d97706",
106
+ 700: "#b45309",
107
+ 800: "#92400e",
108
+ 900: "#78350f",
109
+ 950: "#451a03",
110
+ },
111
+ yellow: {
112
+ 50: "#fefce8",
113
+ 100: "#fef9c3",
114
+ 200: "#fef08a",
115
+ 300: "#fde047",
116
+ 400: "#facc15",
117
+ 500: "#eab308",
118
+ 600: "#ca8a04",
119
+ 700: "#a16207",
120
+ 800: "#854d0e",
121
+ 900: "#713f12",
122
+ 950: "#422006",
123
+ },
124
+ lime: {
125
+ 50: "#f7fee7",
126
+ 100: "#ecfccb",
127
+ 200: "#d9f99d",
128
+ 300: "#bef264",
129
+ 400: "#a3e635",
130
+ 500: "#84cc16",
131
+ 600: "#65a30d",
132
+ 700: "#4d7c0f",
133
+ 800: "#3f6212",
134
+ 900: "#365314",
135
+ 950: "#1a2e05",
136
+ },
137
+ green: {
138
+ 50: "#f0fdf4",
139
+ 100: "#dcfce7",
140
+ 200: "#bbf7d0",
141
+ 300: "#86efac",
142
+ 400: "#4ade80",
143
+ 500: "#22c55e",
144
+ 600: "#16a34a",
145
+ 700: "#15803d",
146
+ 800: "#166534",
147
+ 900: "#14532d",
148
+ 950: "#052e16",
149
+ },
150
+ emerald: {
151
+ 50: "#ecfdf5",
152
+ 100: "#d1fae5",
153
+ 200: "#a7f3d0",
154
+ 300: "#6ee7b7",
155
+ 400: "#34d399",
156
+ 500: "#10b981",
157
+ 600: "#059669",
158
+ 700: "#047857",
159
+ 800: "#065f46",
160
+ 900: "#064e3b",
161
+ 950: "#022c22",
162
+ },
163
+ teal: {
164
+ 50: "#f0fdfa",
165
+ 100: "#ccfbf1",
166
+ 200: "#99f6e4",
167
+ 300: "#5eead4",
168
+ 400: "#2dd4bf",
169
+ 500: "#14b8a6",
170
+ 600: "#0d9488",
171
+ 700: "#0f766e",
172
+ 800: "#115e59",
173
+ 900: "#134e4a",
174
+ 950: "#042f2e",
175
+ },
176
+ cyan: {
177
+ 50: "#ecfeff",
178
+ 100: "#cffafe",
179
+ 200: "#a5f3fc",
180
+ 300: "#67e8f9",
181
+ 400: "#22d3ee",
182
+ 500: "#06b6d4",
183
+ 600: "#0891b2",
184
+ 700: "#0e7490",
185
+ 800: "#155e75",
186
+ 900: "#164e63",
187
+ 950: "#083344",
188
+ },
189
+ sky: {
190
+ 50: "#f0f9ff",
191
+ 100: "#e0f2fe",
192
+ 200: "#bae6fd",
193
+ 300: "#7dd3fc",
194
+ 400: "#38bdf8",
195
+ 500: "#0ea5e9",
196
+ 600: "#0284c7",
197
+ 700: "#0369a1",
198
+ 800: "#075985",
199
+ 900: "#0c4a6e",
200
+ 950: "#082f49",
201
+ },
202
+ blue: {
203
+ 50: "#eff6ff",
204
+ 100: "#dbeafe",
205
+ 200: "#bfdbfe",
206
+ 300: "#93c5fd",
207
+ 400: "#60a5fa",
208
+ 500: "#3b82f6",
209
+ 600: "#2563eb",
210
+ 700: "#1d4ed8",
211
+ 800: "#1e40af",
212
+ 900: "#1e3a8a",
213
+ 950: "#172554",
214
+ },
215
+ indigo: {
216
+ 50: "#eef2ff",
217
+ 100: "#e0e7ff",
218
+ 200: "#c7d2fe",
219
+ 300: "#a5b4fc",
220
+ 400: "#818cf8",
221
+ 500: "#6366f1",
222
+ 600: "#4f46e5",
223
+ 700: "#4338ca",
224
+ 800: "#3730a3",
225
+ 900: "#312e81",
226
+ 950: "#1e1b4b",
227
+ },
228
+ violet: {
229
+ 50: "#f5f3ff",
230
+ 100: "#ede9fe",
231
+ 200: "#ddd6fe",
232
+ 300: "#c4b5fd",
233
+ 400: "#a78bfa",
234
+ 500: "#8b5cf6",
235
+ 600: "#7c3aed",
236
+ 700: "#6d28d9",
237
+ 800: "#5b21b6",
238
+ 900: "#4c1d95",
239
+ 950: "#2e1065",
240
+ },
241
+ purple: {
242
+ 50: "#faf5ff",
243
+ 100: "#f3e8ff",
244
+ 200: "#e9d5ff",
245
+ 300: "#d8b4fe",
246
+ 400: "#c084fc",
247
+ 500: "#a855f7",
248
+ 600: "#9333ea",
249
+ 700: "#7e22ce",
250
+ 800: "#6b21a8",
251
+ 900: "#581c87",
252
+ 950: "#3b0764",
253
+ },
254
+ fuchsia: {
255
+ 50: "#fdf4ff",
256
+ 100: "#fae8ff",
257
+ 200: "#f5d0fe",
258
+ 300: "#f0abfc",
259
+ 400: "#e879f9",
260
+ 500: "#d946ef",
261
+ 600: "#c026d3",
262
+ 700: "#a21caf",
263
+ 800: "#86198f",
264
+ 900: "#701a75",
265
+ 950: "#4a044e",
266
+ },
267
+ pink: {
268
+ 50: "#fdf2f8",
269
+ 100: "#fce7f3",
270
+ 200: "#fbcfe8",
271
+ 300: "#f9a8d4",
272
+ 400: "#f472b6",
273
+ 500: "#ec4899",
274
+ 600: "#db2777",
275
+ 700: "#be185d",
276
+ 800: "#9d174d",
277
+ 900: "#831843",
278
+ 950: "#500724",
279
+ },
280
+ rose: {
281
+ 50: "#fff1f2",
282
+ 100: "#ffe4e6",
283
+ 200: "#fecdd3",
284
+ 300: "#fda4af",
285
+ 400: "#fb7185",
286
+ 500: "#f43f5e",
287
+ 600: "#e11d48",
288
+ 700: "#be123c",
289
+ 800: "#9f1239",
290
+ 900: "#881337",
291
+ 950: "#4c0519",
292
+ },
293
+ } as const
294
+
295
+ export type TailwindColorFamily = keyof typeof tailwindColors
package/src/types.ts ADDED
@@ -0,0 +1,18 @@
1
+ // types.ts — Shared type definitions for layout and geometry
2
+
3
+ /** 2D size with width and height */
4
+ export interface Size {
5
+ w: number
6
+ h: number
7
+ }
8
+
9
+ /** 2D rectangle with position and size */
10
+ export interface Rect {
11
+ x: number
12
+ y: number
13
+ w: number
14
+ h: number
15
+ }
16
+
17
+ /** Layout axis for flex containers */
18
+ export type Axis = "horizontal" | "vertical"
package/dist/anim.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export * from "./spring-physics.js";
2
- export * from "./spring.js";
3
- export * from "./motion-value.js";
4
- //# sourceMappingURL=anim.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anim.d.ts","sourceRoot":"","sources":["../src/anim.ts"],"names":[],"mappings":"AAEA,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA"}
package/dist/anim.js DELETED
@@ -1,5 +0,0 @@
1
- // anim.ts - Re-export all animation primitives for backwards compatibility
2
- export * from "./spring-physics.js";
3
- export * from "./spring.js";
4
- export * from "./motion-value.js";
5
- //# sourceMappingURL=anim.js.map
package/dist/anim.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"anim.js","sourceRoot":"","sources":["../src/anim.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA"}
@@ -1,17 +0,0 @@
1
- export type Axis = "horizontal" | "vertical";
2
- export type Size = {
3
- w: number;
4
- h: number;
5
- };
6
- export type Rect = {
7
- x: number;
8
- y: number;
9
- w: number;
10
- h: number;
11
- };
12
- export type HAlign = "leading" | "center" | "trailing";
13
- export type VAlign = "top" | "center" | "bottom";
14
- /** flexBase[i] = null for fixed, or the child's base main-size for flexible. */
15
- export declare function measureLinear(axis: Axis, maxW: number, maxH: number, spacing: number, sizes: Size[], flexBase: (number | null)[]): Size;
16
- export declare function layoutLinear(axis: Axis, rect: Rect, spacing: number, crossAlign: HAlign | VAlign, sizes: Size[], flexBase: (number | null)[]): Rect[];
17
- //# sourceMappingURL=linearStack.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linearStack.d.ts","sourceRoot":"","sources":["../../src/layout/linearStack.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,UAAU,CAAA;AAC5C,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAC3C,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AACjE,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AACtD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEhD,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAC1B,IAAI,CAwBN;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAAG,MAAM,EAC3B,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,GAC1B,IAAI,EAAE,CAiER"}
@@ -1,86 +0,0 @@
1
- // linearStack.ts — SwiftUI-like linear stacks with flexible children
2
- /** flexBase[i] = null for fixed, or the child's base main-size for flexible. */
3
- export function measureLinear(axis, maxW, maxH, spacing, sizes, flexBase) {
4
- const n = sizes.length;
5
- const gaps = Math.max(0, n - 1) * Math.max(0, spacing);
6
- let mainSum = 0;
7
- let crossMax = 0;
8
- let hasFlex = false;
9
- for (let i = 0; i < n; i++) {
10
- const s = sizes[i];
11
- if (!s)
12
- continue;
13
- const main = axis === "horizontal" ? s.w : s.h;
14
- const cross = axis === "horizontal" ? s.h : s.w;
15
- crossMax = Math.max(crossMax, cross);
16
- hasFlex ||= flexBase[i] != null;
17
- mainSum += flexBase[i] ?? main;
18
- }
19
- const maxMain = axis === "horizontal" ? maxW : maxH;
20
- const totalMain = hasFlex ? maxMain : Math.min(maxMain, mainSum + gaps);
21
- return axis === "horizontal"
22
- ? { w: Math.min(maxW, totalMain), h: Math.min(maxH, crossMax) }
23
- : { w: Math.min(maxW, crossMax), h: Math.min(maxH, totalMain) };
24
- }
25
- export function layoutLinear(axis, rect, spacing, crossAlign, sizes, flexBase) {
26
- const n = sizes.length;
27
- const out = new Array(n);
28
- const gaps = Math.max(0, n - 1) * Math.max(0, spacing);
29
- const mainAvail = axis === "horizontal" ? rect.w : rect.h;
30
- const crossAvail = axis === "horizontal" ? rect.h : rect.w;
31
- let baseSum = 0;
32
- let flexCount = 0;
33
- for (let i = 0; i < n; i++) {
34
- if (flexBase[i] != null) {
35
- baseSum += flexBase[i];
36
- flexCount++;
37
- }
38
- else {
39
- const size = sizes[i];
40
- if (size) {
41
- baseSum += axis === "horizontal" ? size.w : size.h;
42
- }
43
- }
44
- }
45
- const leftover = Math.max(0, mainAvail - baseSum - gaps);
46
- const per = flexCount > 0 ? Math.floor(leftover / flexCount) : 0;
47
- let rem = flexCount > 0 ? leftover - per * flexCount : 0;
48
- const crossOffset = (childCross) => {
49
- if (crossAlign === "center")
50
- return Math.floor((crossAvail - childCross) / 2);
51
- if ((crossAlign === "trailing" && axis === "vertical") || (crossAlign === "bottom" && axis === "horizontal"))
52
- return Math.max(0, crossAvail - childCross);
53
- return 0;
54
- };
55
- let pos = 0;
56
- for (let i = 0; i < n; i++) {
57
- const s = sizes[i];
58
- if (!s)
59
- continue;
60
- const baseMain = flexBase[i] ?? (axis === "horizontal" ? s.w : s.h);
61
- const flexExtra = flexBase[i] != null ? per + (rem > 0 ? (rem--, 1) : 0) : 0;
62
- const wantMain = baseMain + flexExtra;
63
- const childCross = Math.min(crossAvail, axis === "horizontal" ? s.h : s.w);
64
- const remaining = Math.max(0, mainAvail - pos);
65
- const takeMain = Math.min(wantMain, remaining);
66
- const cs = crossOffset(childCross);
67
- out[i] =
68
- axis === "horizontal"
69
- ? { x: rect.x + pos, y: rect.y + cs, w: Math.max(0, takeMain), h: Math.max(0, childCross) }
70
- : { x: rect.x + cs, y: rect.y + pos, w: Math.max(0, childCross), h: Math.max(0, takeMain) };
71
- pos += takeMain;
72
- if (i < n - 1)
73
- pos += spacing;
74
- if (pos >= mainAvail) {
75
- for (let j = i + 1; j < n; j++) {
76
- out[j] =
77
- axis === "horizontal"
78
- ? { x: rect.x + mainAvail, y: rect.y, w: 0, h: 0 }
79
- : { x: rect.x, y: rect.y + mainAvail, w: 0, h: 0 };
80
- }
81
- break;
82
- }
83
- }
84
- return out;
85
- }
86
- //# sourceMappingURL=linearStack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linearStack.js","sourceRoot":"","sources":["../../src/layout/linearStack.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- import type { ColorLike, ColorValue } from "./render/surface.js";
2
- import { type SpringConfig } from "./spring-physics.js";
3
- export type SpringOptions = SpringConfig & {
4
- maxDt?: number;
5
- };
6
- export type Unsubscribe = () => void;
7
- export interface AnimationControls {
8
- readonly time: number;
9
- readonly speed: number;
10
- isRunning(): boolean;
11
- play(): void;
12
- pause(): void;
13
- stop(): void;
14
- cancel(): void;
15
- seek(t: number): void;
16
- finished: Promise<void>;
17
- }
18
- export interface Adapter<T> {
19
- toArray(v: T): number[];
20
- fromArray(a: ReadonlyArray<number>): T;
21
- clamp?(a: number[]): number[];
22
- equals?(a: T, b: T): boolean;
23
- }
24
- export interface MotionValue<T> {
25
- get(): T;
26
- set(next: T): void;
27
- setTarget(next: T): void;
28
- getVelocity(): T;
29
- onChange(fn: (v: T) => void): Unsubscribe;
30
- onSettle(fn: () => void): Unsubscribe;
31
- animate(to: T, options?: SpringOptions): AnimationControls;
32
- stop(): void;
33
- destroy(): void;
34
- }
35
- export interface ColorMotionValue extends MotionValue<ColorValue> {
36
- animate(to: ColorLike | ColorValue, options?: SpringOptions): AnimationControls;
37
- }
38
- export declare const numberAdapter: Adapter<number>;
39
- export declare const rgbAdapter: Adapter<ColorValue>;
40
- type AdapterEntry = {
41
- test: (value: unknown) => boolean;
42
- create: (value: any) => Adapter<any>;
43
- normalize?: (value: any) => any;
44
- };
45
- export declare function registerAdapter(entry: AdapterEntry): void;
46
- export declare function motionValue(initial: number, opts?: SpringOptions & {
47
- adapter?: Adapter<number>;
48
- }): MotionValue<number>;
49
- export declare function motionValue(initial: ColorLike, opts?: SpringOptions & {
50
- adapter?: Adapter<ColorValue>;
51
- }): ColorMotionValue;
52
- export declare function motionValue<T>(initial: T, opts?: SpringOptions & {
53
- adapter?: Adapter<T>;
54
- }): MotionValue<T>;
55
- export declare function animate<T>(mv: MotionValue<T>, to: T, opts?: SpringOptions): AnimationControls;
56
- export declare function animate(mv: ColorMotionValue, to: ColorLike | ColorValue, opts?: SpringOptions): AnimationControls;
57
- export {};
58
- //# sourceMappingURL=motion-value.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"motion-value.d.ts","sourceRoot":"","sources":["../src/motion-value.ts"],"names":[],"mappings":"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"}