Files
react-telegram/packages/examples/src/example.tsx
Kyle Fang 457f933273 refactor: reorganize into monorepo with Bun workspaces
- Split project into three packages:
  - @react-telegram/core: Core React reconciler
  - @react-telegram/mtcute-adapter: MTCute Telegram adapter
  - @react-telegram/examples: Example bots (private)
- Add <br /> tag support for line breaks
- Update all examples to use <br /> instead of {'\n'}
- Configure Bun workspaces for better package management
- Update imports to use package names instead of relative paths
- Update README with new installation instructions
- Remove test files (moved to separate testing setup)

BREAKING CHANGE: Package names changed from react-telegram to @react-telegram/*

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 09:58:46 +08:00

47 lines
1.2 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/// <reference types="@react-telegram/core" />
import React, { useState } from 'react';
import { createContainer } from '@react-telegram/core';
// Create container and render
const { container, render, clickButton } = createContainer();
console.log('Initial render:');
// Example usage
const App = () => {
const [count, setCount] = useState(0);
return (
<>
<b>Welcome to Telegram React!</b>
<br />
<i>Current count: {count}</i>
<row>
<button onClick={() => setCount(p => p - 1)}> Decrease</button>
<button onClick={() => setCount(p => p + 1)}> Increase</button>
</row>
<blockquote>
This is a custom React reconciler that renders to structured data
suitable for Telegram's message format.
</blockquote>
</>
);
};
console.log('Initial render');
render(<App />);
container.onRenderContainer = (root) => {
console.log('onRenderContainer called');
console.log(JSON.stringify(root, null, 2));
};
setTimeout(() => {
console.log('\nClicking increase (0-1)');
clickButton('0-1');
setTimeout(() => {
console.log('\nClicking decrease (0-0)');
clickButton('0-0');
}, 10);
}, 10);