-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 4eb9c59
Showing
31 changed files
with
2,569 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
name: test | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
- main | ||
pull_request: | ||
|
||
jobs: | ||
test: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: erlef/setup-beam@v1 | ||
with: | ||
otp-version: "26.0.2" | ||
gleam-version: "1.2.1" | ||
rebar3-version: "3" | ||
# elixir-version: "1.15.4" | ||
- run: gleam deps download | ||
- run: gleam test | ||
- run: gleam format --check src test |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
*.beam | ||
*.ez | ||
/build | ||
erl_crash.dump | ||
node_modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# pink | ||
Bindings to [Ink](https://github.com/vadimdemedes/ink) | ||
|
||
A minimal React-like library for building terminal UIs. | ||
|
||
[![Package Version](https://img.shields.io/hexpm/v/pink)](https://hex.pm/packages/pink) | ||
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/pink/) | ||
|
||
## Installation | ||
|
||
This package depends on Ink and React. The specific versions listed below are recommended because they have been tested with this package. Using other versions may lead to unexpected results. | ||
|
||
```sh | ||
npm install ink@5.0 ink-spinner@5.0 react@18.3 | ||
``` | ||
|
||
To add the Pink package to your Gleam project, use the following command: | ||
|
||
```sh | ||
gleam add pink | ||
``` | ||
|
||
Here's a basic example of how to use Pink: | ||
|
||
```gleam | ||
import pink | ||
import pink/attribute | ||
import pink/hook | ||
pub fn main() { | ||
// Create a new React component (we need this to use hooks) | ||
use <- pink.component() | ||
// Initialize a state (this is React's useState hook) | ||
let message = hook.state("World") | ||
// Create a box with a border and a text component inside | ||
pink.box([attribute.border_style(attribute.BorderSingle)], [ | ||
pink.text([], "Hello, " <> message.value) | ||
]) | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
--- | ||
version: 1.1.6 | ||
title: box | ||
file: ./test/pink_test.gleam | ||
test_name: box_test | ||
--- | ||
|
||
|
||
This is a box with margin 2 | ||
|
||
|
||
widt | ||
h 4 | ||
height 4 | ||
|
||
|
||
|
||
┌──────┐ ╔══════╗ ╭─────╮ ┏━━━━┓ | ||
│single│ ║double║ │round│ ┃bold┃ | ||
└──────┘ ╚══════╝ ╰─────╯ ┗━━━━┛ | ||
╓─────────────╖ ╒═════════════╕ +-------+ | ||
║single double║ │double single│ |classic| | ||
╙─────────────╜ ╘═════════════╛ +-------+ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook app | ||
file: ./test/pink_test.gleam | ||
test_name: use_app_test | ||
--- | ||
Hello, world |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook focus | ||
file: ./test/pink_test.gleam | ||
test_name: use_focus_test | ||
--- | ||
I am focused |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook focus_manager | ||
file: ./test/pink_test.gleam | ||
test_name: use_manager_test | ||
--- | ||
I am not focused | ||
I am not focused | ||
--- | ||
I am focused | ||
I am not focused | ||
--- | ||
I am not focused | ||
I am focused |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook input | ||
file: ./test/pink_test.gleam | ||
test_name: use_input_test | ||
--- | ||
Type something |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook state | ||
file: ./test/pink_test.gleam | ||
test_name: use_state_test | ||
--- | ||
Hello, world | ||
--- | ||
Changed | ||
--- | ||
Changed 2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook stdin | ||
file: ./test/pink_test.gleam | ||
test_name: use_stdin_test | ||
--- | ||
is_raw_mode_supported: True |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: hook stdout | ||
file: ./test/pink_test.gleam | ||
test_name: use_stdout_test | ||
--- | ||
Hello from stdout |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
--- | ||
version: 1.1.6 | ||
title: newline | ||
file: ./test/pink_test.gleam | ||
test_name: newline_test | ||
--- | ||
[32mHello[39m | ||
|
||
[31mWorld[39m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
--- | ||
version: 1.1.6 | ||
title: spacer | ||
file: ./test/pink_test.gleam | ||
test_name: spacer_test | ||
--- | ||
Left Right | ||
|
||
Top | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Bottom |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: spinner | ||
file: ./test/pink_test.gleam | ||
test_name: spinner_test | ||
--- | ||
⠋ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
--- | ||
version: 1.1.6 | ||
title: static | ||
file: ./test/pink_test.gleam | ||
test_name: static_test | ||
--- | ||
[32m Test 1[39m | ||
[32m Test 2[39m | ||
[32m Test 3[39m | ||
[32m Test 4[39m | ||
[32m Test 5[39m | ||
[32m Test 6[39m | ||
[32m Test 7[39m | ||
[32m Test 8[39m | ||
[32m Test 9[39m | ||
[32m Test 10[39m | ||
|
||
Completed tests: 10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
--- | ||
version: 1.1.6 | ||
title: text | ||
file: ./test/pink_test.gleam | ||
test_name: text_test | ||
--- | ||
[32mI am green[39m | ||
[47m[30mI am black on white[39m[49m | ||
[38;2;255;255;255mI am white[39m | ||
[1mI am bold[22m | ||
[3mI am italic[23m | ||
[4mI am underline[24m | ||
[9mI am strikethrough[29m | ||
[7mI am inversed[27m |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
--- | ||
version: 1.1.6 | ||
title: transform | ||
file: ./test/pink_test.gleam | ||
test_name: transform_test | ||
--- | ||
HELLO, WORLD |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
name = "pink" | ||
version = "1.0.0" | ||
target = "javascript" | ||
|
||
description = "Bindings to Ink. A library for building terminal UIs." | ||
licences = ["Apache-2.0"] | ||
repository = { type = "github", user = "Massolari", repo = "pink" } | ||
links = [{ title = "Ink", href = "https://github.com/vadimdemedes/ink" }] | ||
|
||
[dependencies] | ||
gleam_stdlib = ">= 0.34.0 and < 2.0.0" | ||
gleam_json = ">= 2.0.0 and < 3.0.0" | ||
|
||
[dev-dependencies] | ||
gleeunit = ">= 1.0.0 and < 2.0.0" | ||
birdie = ">= 1.1.6 and < 2.0.0" | ||
gleam_javascript = ">= 0.10.0 and < 1.0.0" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# This file was generated by Gleam | ||
# You typically do not need to edit this file | ||
|
||
packages = [ | ||
{ name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" }, | ||
{ name = "birdie", version = "1.1.6", build_tools = ["gleam"], requirements = ["argv", "filepath", "glance", "gleam_community_ansi", "gleam_erlang", "gleam_stdlib", "justin", "rank", "simplifile", "trie_again"], otp_app = "birdie", source = "hex", outer_checksum = "9DBF73AEF936EAA8D22FFCE2B10CF42E38D62F8A006F89E3FFC1170D5C1E585B" }, | ||
{ name = "filepath", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "EFB6FF65C98B2A16378ABC3EE2B14124168C0CE5201553DE652E2644DCFDB594" }, | ||
{ name = "glance", version = "0.11.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "glexer"], otp_app = "glance", source = "hex", outer_checksum = "8F3314D27773B7C3B9FB58D8C02C634290422CE531988C0394FA0DF8676B964D" }, | ||
{ name = "gleam_community_ansi", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "FE79E08BF97009729259B6357EC058315B6FBB916FAD1C2FF9355115FEB0D3A4" }, | ||
{ name = "gleam_community_colour", version = "1.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "A49A5E3AE8B637A5ACBA80ECB9B1AFE89FD3D5351FF6410A42B84F666D40D7D5" }, | ||
{ name = "gleam_erlang", version = "0.25.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "054D571A7092D2A9727B3E5D183B7507DAB0DA41556EC9133606F09C15497373" }, | ||
{ name = "gleam_javascript", version = "0.10.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "62C31BFFE914FA2AFEE8459353CA1621A66BC10A7AF24B39E1EE15ACF33989B2" }, | ||
{ name = "gleam_json", version = "2.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "CB10B0E7BF44282FB25162F1A24C1A025F6B93E777CCF238C4017E4EEF2CDE97" }, | ||
{ name = "gleam_stdlib", version = "0.38.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "663CF11861179AF415A625307447775C09404E752FF99A24E2057C835319F1BE" }, | ||
{ name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" }, | ||
{ name = "glexer", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glexer", source = "hex", outer_checksum = "BD477AD657C2B637FEF75F2405FAEFFA533F277A74EF1A5E17B55B1178C228FB" }, | ||
{ name = "justin", version = "1.0.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "justin", source = "hex", outer_checksum = "7FA0C6DB78640C6DC5FBFD59BF3456009F3F8B485BF6825E97E1EB44E9A1E2CD" }, | ||
{ name = "rank", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "rank", source = "hex", outer_checksum = "5660E361F0E49CBB714CC57CC4C89C63415D8986F05B2DA0C719D5642FAD91C9" }, | ||
{ name = "simplifile", version = "1.7.0", build_tools = ["gleam"], requirements = ["filepath", "gleam_stdlib"], otp_app = "simplifile", source = "hex", outer_checksum = "1D5DFA3A2F9319EC85825F6ED88B8E449F381B0D55A62F5E61424E748E7DDEB0" }, | ||
{ name = "trie_again", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "trie_again", source = "hex", outer_checksum = "5B19176F52B1BD98831B57FDC97BD1F88C8A403D6D8C63471407E78598E27184" }, | ||
] | ||
|
||
[requirements] | ||
birdie = { version = ">= 1.1.6 and < 2.0.0" } | ||
gleam_javascript = { version = ">= 0.10.0 and < 1.0.0"} | ||
gleam_json = { version = ">= 2.0.0 and < 3.0.0" } | ||
gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" } | ||
gleeunit = { version = ">= 1.0.0 and < 2.0.0" } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
{ | ||
"name": "pink", | ||
"version": "1.0.0", | ||
"main": "index.js", | ||
"author": "Douglas M. <douglasmassolari@hotmail.com>", | ||
"license": "MIT", | ||
"dependencies": { | ||
"ink": "^5.0.0", | ||
"ink-spinner": "^5.0.0", | ||
"react": "^18.3.1" | ||
}, | ||
"devDependencies": { | ||
"ink-testing-library": "^4.0.0" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
import React from "react" | ||
import { Text, Box, Newline, Spacer, useStdin, Static, Transform, useFocus, useFocusManager } from "ink"; | ||
export { render, useInput, useApp, useStderr, useStdout } from "ink"; | ||
|
||
export function element(element, props, children) { | ||
const parsedChildren = typeof children === "object" ? children.toArray() : [children] | ||
return React.createElement(element, props, ...parsedChildren); | ||
} | ||
|
||
export const text = (props, content) => element(Text, props, content); | ||
export const box = (props, children) => element(Box, props, children); | ||
export const newline = (props) => React.createElement(Newline, props, null); | ||
export const spacer = () => React.createElement(Spacer, null, null); | ||
export const static_ = (items, childFunc) => element(Static, { items: items.toArray() }, childFunc); | ||
export const transform = (transform, children) => element(Transform, { transform }, children); | ||
|
||
export const useStdin_ = () => { | ||
const stdin = useStdin() | ||
|
||
return { | ||
stdin: stdin.stdin, | ||
is_raw_mode_supported: stdin.isRawModeSupported, | ||
set_raw_mode: stdin.setRawMode, | ||
} | ||
} | ||
|
||
export const useFocus_ = (options) => { | ||
const focus = useFocus(options) | ||
|
||
return { | ||
is_focused: focus.isFocused, | ||
} | ||
} | ||
|
||
export const useFocusManager_ = () => { | ||
const manager = useFocusManager() | ||
|
||
return { | ||
enable_focus: manager.enableFocus, | ||
disable_focus: manager.disableFocus, | ||
focus_next: manager.focusNext, | ||
focus_previous: manager.focusPrevious, | ||
focus: manager.focus, | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
import React from "react"; | ||
import Spinner from "ink-spinner"; | ||
|
||
export const spinner = ({ type_ }) => React.createElement(Spinner, { type: type_ }, null); |
Oops, something went wrong.