Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI Components Library for Telegram Mini Apps #364

Closed
kuhel opened this issue Nov 10, 2023 · 11 comments
Closed

UI Components Library for Telegram Mini Apps #364

kuhel opened this issue Nov 10, 2023 · 11 comments
Assignees
Labels
Approved This proposal is approved by the committee TMA Resource Bounties for supporting Telegram Mini Apps (SDK, UI libraries etc)

Comments

@kuhel
Copy link

kuhel commented Nov 10, 2023

Summary

Objective

To develop a React UI Components library for Telegram Mini Apps that implements the design language outlined in the Figma Telegram UI Kit.

Functionality

  • Theme Auto-Switching. Components should automatically switch between light and dark themes based on the user's system settings or explicit user choice.
  • Telegram Colors Tokens. Support dynamic theme-based colors provided by Telegram Mini Apps platform.
  • Responsive Design. Components should be responsive and adaptable to various screen sizes and orientations without loss of functionality or aesthetics.
  • Cross-Platform Compatibility. Ensure the components render consistently on different Telegram applications over all available platforms (mobile, desktop, web)
  • Interactivity. Components should have interactive states (hover, active, disabled, etc.) as outlined in the Figma UI Kit.

Technical Requirements

  • Out-of-the-box SDK Support
    • Handling the themeChanged event and theme switching.

    • Transitioning to fullscreen mode upon app start.

    • UI adaptability at viewportChanged event.

    • UI and web application viewport adaptability upon the appearance/hiding of the Main Button through setParams.

      Must consider the characteristics of both fullscreen and compact web views.

      • Insets & Safe Area for iOS and Android.
      • Tabbar and other navigation in the footer for both fullscreen and compact web views.
  • Dynamic Import. The UI Kit should be structured in a way that facilitates modular component imports.
  • Modularity. Components should be designed as reusable and standalone elements.
  • Documentation. Provide comprehensive documentation for each component, including examples of usage, API descriptions, and integration guidelines.

Deliverables

  • Source code for all components
  • A live demo page showcasing all components
  • Documentation site
  • NPM package for easy installation and integration

Approval

This specification must be approved by the project stakeholders before work commences. Any changes to the scope or deliverables should be documented and agreed upon by all parties involved.

Context

To develop a React UI Components library for Telegram Mini Apps that implements the design language outlined in the Figma Telegram UI Kit.

References

https://weui.io/

https://vkcom.github.io/VKUI/

https://mantine.dev/

Estimate suggested reward

Up to $20K

@kuhel kuhel added the Developer Tool Related to tools or utilities used by developers label Nov 10, 2023
@delovoyhomie delovoyhomie closed this as not planned Won't fix, can't repro, duplicate, stale Nov 11, 2023
@ton-society ton-society deleted a comment from aSpite Nov 14, 2023
@delovoyhomie delovoyhomie reopened this Nov 14, 2023
@delovoyhomie delovoyhomie added the Approved This proposal is approved by the committee label Nov 14, 2023
@mbaneshi
Copy link
Contributor

Thanks, @delovoyhomie for approvement

@markokhman
Copy link
Contributor

@kuhel this one can only be done after the design one (#363), right?

@designervoid
Copy link

Hello everyone!

What are your thoughts on a cross-platform design system?
For instance, using Tailwind for the base package.
It works well for web, but seems less effective on mobile platforms (see benchmark).

What other options do we have for the UI Component Package?

  1. Separate web components for the web, like @tonconnect/ui (use web components in any web environment).
  2. Separate components for React Native.

Like: @ton/ui/web, @ton/ui/mobile.

Looking forward to community thoughts, thanks!

@mainsmirnov
Copy link
Contributor

mainsmirnov commented Dec 12, 2023

Good evening,

We would love to take on this assignment, and we are currently in the process of preparing the design for this issue.

Desired reward: $20,000
Submission deadline: January 22

We will publish a version for each of the designated segments: Layout, Form, Navigation, Feedback, Overlays, Data Display, Typography, and Miscellaneous. We can split the reward for each block.

We plan to use Storybook for documentation. This tool will make it easier to delineate documentation in each component and make property descriptions available in the IDE.

UPD:
If you choose us, I'd be happy to split the payment into two phases:

Stage 1: Overall architecture (provider for theme, platform, etc.), Typography components, and buttons.
Stage 2: Finalization of the remaining components.

@designervoid
Copy link

Hi!

I've added a cli to the ton-design-system package, and we are now capable of distributing pre-built components.

Today, I tested the command npx "@designervoid/ton-design-system@latest" cli -g and successfully integrated the Button component into a Solid.js application.

I'm currently in the process of creating React components and more complex components.

@kuhel
Copy link
Author

kuhel commented Dec 13, 2023

Hi @designervoid , thank you for suggestions and appreciate yours efforts. But we aim UI Kit following strict guidelines of Telegram. @mainsmirnov team is on UI kit layouts and we will ask them to contribute for web components library.

@mbaneshi
Copy link
Contributor

@kuhel thank you ,would you please make these consideration somehow more obvious in future ,so community can discuss next step not assignment .

@kuhel
Copy link
Author

kuhel commented Dec 19, 2023

make these consideration somehow more obvious in future

Well, I must admit that request was focused on UI language of Telegram from the very beginning.

implements the design language outlined in the Figma Telegram UI Kit

@mainsmirnov
Copy link
Contributor

Greetings, community! We are thrilled to announce the release of the beta version of our library.

  1. Library: npm
  2. Code: TelegramUI
  3. Storybook: tgui.xelene.me

@delovoyhomie delovoyhomie added TMA Resource Bounties for supporting Telegram Mini Apps (SDK, UI libraries etc) and removed Developer Tool Related to tools or utilities used by developers labels Feb 27, 2024
@delovoyhomie
Copy link
Collaborator

@mainsmirnov thank you for the contribution!

To accurately recognize your valuable contributions in our repository, we kindly request you to submit a Pull Request to the Hall of Fame file, providing the wallet address and a link to the bounty with the number.

Please follow these steps:

  1. Fork the repository (if you haven't already).

  2. Edit the Hall of Fame file, commit, and push your changes.

  3. Create a Pull Request from your fork to the main repository, providing the wallet address and a link to the bounty with the number (for example, Pull Request Article: Generation of block random seed #136).
    For reference on what your entry should look like, please see the examples of past merged pull requests.

  4. And please follow the questbook proposal stage in accordance with the bounty guideline

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Approved This proposal is approved by the committee TMA Resource Bounties for supporting Telegram Mini Apps (SDK, UI libraries etc)
Projects
None yet
Development

No branches or pull requests

6 participants