René's URL Explorer Experiment


Title: UI interface & bindings design · Issue #2 · bombshell-dev/ui · GitHub

Open Graph Title: UI interface & bindings design · Issue #2 · bombshell-dev/ui

X Title: UI interface & bindings design · Issue #2 · bombshell-dev/ui

Description: The UI package should basically behave like a design system - exporting various typescript components which render to the terminal using tty (aka clayterm right now). Let's use this issue to decide the rough structure of the following: W...

Open Graph Description: The UI package should basically behave like a design system - exporting various typescript components which render to the terminal using tty (aka clayterm right now). Let's use this issue to decide...

X Description: The UI package should basically behave like a design system - exporting various typescript components which render to the terminal using tty (aka clayterm right now). Let's use this issue to de...

Opengraph URL: https://github.com/bombshell-dev/ui/issues/2

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"UI interface & bindings design","articleBody":"The UI package should basically behave like a design system - exporting various typescript components which render to the terminal using tty (aka clayterm right now).\n\nLet's use this issue to decide the rough structure of the following:\n\n- What belongs in bindings vs the main package\n- What does the usage look like?\n- What initial components we should export\n\n## Initial components\n\nWe can start with:\n\n- Window (or \"region\")\n- Text\n- Box\n\n### Window / Region\n\nWhen creating a TUI, the root is a region of the terminal (columns & rows). To this, we render components which have been composed in a DOM-like tree.\n\n### Text\n\nRender text to the window.\n\n```ts\ninterface TextProps {\n  value: string;\n  color: string;\n  bgColor: string;\n  bold: boolean;\n  underline: boolean;\n}\n```\n\n### Box\n\nRender a box in the window which can contain other components.\n\n```ts\ninterface BoxProps {\n  width: unknown; // what is this? a number?\n  height: unknown; // what is this? a number?\n  padding?: {\n    top?: number;\n    right?: number;\n    down?: number;\n    left?: number;\n  };\n  bgColor?: string;\n  borderTop?: { width: number; color: string; };\n  borderRight?: { width: number; color: string; };\n  borderBottom?: { width: number; color: string; };\n  borderLeft?: { width: number; color: string; };\n}\n```\n\n- Any other properties we're missing here?\n- What about margin?\n\n## Usage / API\n\nWe need to decide what the right API shape is. Something like this:\n\n```ts\nconst doc = ui.createWindow({\n  width: 200,\n  height: 100,\n});\n\ndoc.render(new ui.Box(\n  {}, // properties of a box\n  [ // children of a box\n    new ui.Text('Foo')\n  ]\n));\n```\n\nThis is just quick pseudo-code. We need to iterate on this together to figure out the right shape.\n\nA few important things to take into account:\n\n- We should be able to pass our own writable stream in (i.e. no hard-coded `process.stdout` anywhere other than the default options)\n- Not all components should have children, so we need to control that per component type\n- Although we will have bindings, many will use this package directly, so this shape matters just as much\n- Initially, we don't need to care about multiple regions\n\n## How bindings work\n\nOnce we have a working UI package, we can create \"bindings\" for these. For example, solid or svelte bindings (aka integrations).\n\nA binding implementation should allow you to use all the base components UI provides but in whatever way the chosen framework/library prefers (e.g. using signals).\n\nThis means every binding implementation should basically export all the same components as the UI package but as wrappers which tie into the integration.\n\n## Open questions\n\n- We haven't yet decided how this root window/region works. Given our focus is TUIs here, we do need some root component to allow people to just drop a tree of components in and it automatically be responsive etc. What should that look like in typescript?\n- What is missing from clayterm/tty that we need in order to deliver these base components? (if anything)\n","author":{"url":"https://github.com/43081j","@type":"Person","name":"43081j"},"datePublished":"2026-06-13T13:48:52Z","url":"https://github.com/bombshell-dev/ui/issues/2"}

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:0cd28eb4-e6ef-7ee5-c1d7-91b5d4c11f47
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idEBBA:2733CE:19C009F:232647B:6AF9A7BE
html-safe-nonce408bd699adbdbf4736135663b32bc245dd9ba1d95b48e28a7c240c7b9826b750
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQkJBOjI3MzNDRToxOUMwMDlGOjIzMjY0N0I6NkFGOUE3QkUiLCJ2aXNpdG9yX2lkIjoiNzY3OTgwMTIwODEwOTM3NzQ3MSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmace567c378b839f7a106da96a93074c70e5ec08a657c1de379c04a1134a1332957
hovercard-subject-tagissue:4655705015
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/bombshell-dev/ui/2/issue_layout
twitter:imagehttps://opengraph.githubassets.com/4bce7bb70402007f0f133115fb710c742a7202993d6222aa3a60280792b7a898/bombshell-dev/ui/issues/2
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/4bce7bb70402007f0f133115fb710c742a7202993d6222aa3a60280792b7a898/bombshell-dev/ui/issues/2
og:image:altThe UI package should basically behave like a design system - exporting various typescript components which render to the terminal using tty (aka clayterm right now). Let's use this issue to decide...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:username43081j
hostnamegithub.com
expected-hostnamegithub.com
None612d3e6ffd693e7ea8d9fcf452370995872baef31d825b1fedef704cd3d24ac7
turbo-cache-controlno-preview
go-importgithub.com/bombshell-dev/ui git https://github.com/bombshell-dev/ui.git
octolytics-dimension-user_id169915079
octolytics-dimension-user_loginbombshell-dev
octolytics-dimension-repository_id1267787446
octolytics-dimension-repository_nwobombshell-dev/ui
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1267787446
octolytics-dimension-repository_network_root_nwobombshell-dev/ui
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release072e34035c13c31543fba9f025cbbbda4210dae4
ui-targetfull
theme-color#1e2327
color-schemelight dark
react-app-nameissues

Links:

Skip to contenthttps://github.com/bombshell-dev/ui/issues/2#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fbombshell-dev%2Fui%2Fissues%2F2
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fbombshell-dev%2Fui%2Fissues%2F2
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=bombshell-dev%2Fui
Reloadhttps://github.com/bombshell-dev/ui/issues/2
Reloadhttps://github.com/bombshell-dev/ui/issues/2
Reloadhttps://github.com/bombshell-dev/ui/issues/2
bombshell-devhttps://github.com/bombshell-dev
uihttps://github.com/bombshell-dev/ui
Codehttps://github.com/bombshell-dev/ui
Issues8 (8)https://github.com/bombshell-dev/ui/issues
Pull requests10 (10)https://github.com/bombshell-dev/ui/pulls
Actionshttps://github.com/bombshell-dev/ui/actions
Projectshttps://github.com/bombshell-dev/ui/projects
Security and qualityhttps://github.com/bombshell-dev/ui/security
Insightshttps://github.com/bombshell-dev/ui/pulse
https://github.com/bombshell-dev/ui
New issuehttps://github.com/login?return_to=https://github.com/bombshell-dev/ui/issues/2
New issuehttps://github.com/login?return_to=https://github.com/bombshell-dev/ui/issues/2
UI interface & bindings designhttps://github.com/bombshell-dev/ui/issues/2#top
https://github.com/43081j
43081jhttps://github.com/43081j
on Jun 13, 2026https://github.com/bombshell-dev/ui/issues/2#issue-4655705015
https://github.com/dreyfus92
dreyfus92https://github.com/dreyfus92
on Jun 13, 2026https://github.com/bombshell-dev/ui/issues/2#issuecomment-4699474552
https://github.com/natemoo-re
natemoo-rehttps://github.com/natemoo-re
on Jun 17, 2026https://github.com/bombshell-dev/ui/issues/2#issuecomment-4725128177
https://github.com/43081j
43081jhttps://github.com/43081j
on Jun 17, 2026https://github.com/bombshell-dev/ui/issues/2#issuecomment-4727726883
https://github.com/natemoo-re
natemoo-rehttps://github.com/natemoo-re
on Jun 18, 2026https://github.com/bombshell-dev/ui/issues/2#issuecomment-4745164035
@43081jhttps://github.com/43081j
#18042https://github.com/sveltejs/svelte/pull/18042
undomhttps://github.com/developit/undom
Sign up for freehttps://github.com/signup?return_to=https://github.com/bombshell-dev/ui/issues/2
Sign in to commenthttps://github.com/login?return_to=https://github.com/bombshell-dev/ui/issues/2
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.