{"id":21291904,"url":"https://github.com/idea2app/idea-react","last_synced_at":"2026-04-30T01:09:18.555Z","repository":{"id":37857924,"uuid":"441736632","full_name":"idea2app/Idea-React","owner":"idea2app","description":"A React advanced components library based on TypeScript \u0026 Bootstrap, built by idea2app remote developers team.","archived":false,"fork":false,"pushed_at":"2025-05-08T23:52:48.000Z","size":3100,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-09T08:27:57.840Z","etag":null,"topics":["bootstrap","component","react","typescript"],"latest_commit_sha":null,"homepage":"https://idea2app.github.io/Idea-React/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/idea2app.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-25T18:30:33.000Z","updated_at":"2025-05-08T23:52:07.000Z","dependencies_parsed_at":"2024-07-21T18:08:17.156Z","dependency_job_id":"5e4169dc-86a5-41a5-9e74-86073561df7a","html_url":"https://github.com/idea2app/Idea-React","commit_stats":{"total_commits":48,"total_committers":6,"mean_commits":8.0,"dds":0.6458333333333333,"last_synced_commit":"ee37b24d0e9beff9890fef50a289c01542c20cc1"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"purl":"pkg:github/idea2app/Idea-React","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idea2app%2FIdea-React","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idea2app%2FIdea-React/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idea2app%2FIdea-React/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idea2app%2FIdea-React/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idea2app","download_url":"https://codeload.github.com/idea2app/Idea-React/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idea2app%2FIdea-React/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278556219,"owners_count":26006102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootstrap","component","react","typescript"],"created_at":"2024-11-21T13:46:41.292Z","updated_at":"2026-04-30T01:09:18.543Z","avatar_url":"https://github.com/idea2app.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Idea React\n\nA **[React][1] advanced components library** based on [TypeScript][2] \u0026 [Bootstrap][3], built by **[idea2app][4] remote developers team**.\n\n[![MobX compatibility](https://img.shields.io/badge/Compatible-1?logo=mobx\u0026label=MobX%206%2F7)][5]\n[![NPM Dependency](https://img.shields.io/librariesio/github/idea2app/Idea-React.svg)][6]\n[![CI \u0026 CD](https://github.com/idea2app/Idea-React/actions/workflows/main.yml/badge.svg)][7]\n\n[![NPM](https://nodei.co/npm/idea-react.png?downloads=true\u0026downloadRank=true\u0026stars=true)][8]\n\n- API document: https://idea2app.github.io/Idea-React/\n- Preview site: https://idea2app.github.io/Idea-React/preview/\n\n## Versions\n\n| SemVer |    status    | ES decorator |    MobX     |\n| :----: | :----------: | :----------: | :---------: |\n| `\u003e=2`  | ✅developing |   stage-3    |  `\u003e=6.11`   |\n|  `\u003c2`  | ❌deprecated |   stage-2    | `\u003e=4 \u003c6.11` |\n\n## Content\n\n### Components\n\n1. [Time](source/Time.tsx)\n2. [Time Distance](source/TimeDistance.tsx)\n3. [Timeline](source/Timeline/)\n4. [Icon](source/Icon.tsx)\n5. [Avatar](source/Avatar.tsx)\n6. [Nameplate](source/Nameplate.tsx)\n7. [Type Echo](source/TypeEcho.tsx)\n8. [Horizontal Marquee](source/HorizontalMarquee/)\n9. [Vertical Marquee](source/VerticalMarquee/)\n10. [Click Boundary](source/ClickBoundary.tsx)\n11. [Spinner Button](source/SpinnerButton.tsx)\n12. [Select](source/Select.tsx)\n13. [Month Calendar](source/MonthCalendar.tsx)\n14. [Code Block](source/CodeBlock.tsx)\n15. [Page Nav](source/PageNav.tsx)\n16. [Editor](source/Editor.tsx)\n17. [Editor HTML](source/EditorHTML.tsx)\n18. [Table Spinner](source/TableSpinner.tsx)\n19. [Loading](source/Loading.tsx)\n20. [Share Box](source/ShareBox.tsx)\n21. [Overlay Box](source/OverlayBox.tsx)\n22. [Dialog](source/Dialog.tsx)\n23. [User Rank](source/UserRank/)\n\n#### Data components\n\nTable, List \u0026 Form components around Data models, have been migrated to https://github.com/idea2app/MobX-RESTful-table, since Idea-React v1.0.0.\n\n#### Map components\n\nOpen Map component \u0026 model, have been migrated to https://github.com/idea2app/OpenReactMap, since Idea-React v1.0.0.\n\n### Utilities\n\n1. [`text2color`](source/color.ts)\n2. [`animate()`](source/animate.ts)\n\n## Usage\n\n### Scaffolds\n\n1. MobX: [demo][9] \u0026 [usage][10]\n2. Next.js: [demo][11] \u0026 [usage][12]\n\n### CSS on CDN\n\n```html\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/bootstrap@5.3.8/dist/css/bootstrap.min.css\" /\u003e\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/bootstrap-icons@1.13.1/font/bootstrap-icons.css\" /\u003e\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/animate.css@4.1.1/animate.min.css\" /\u003e\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/prismjs@1.30.0/themes/prism.min.css\" /\u003e\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/idea-react/dist/index.css\" /\u003e\n```\n\n### `tsconfig.json`\n\nCompatible with MobX 6/7:\n\n```json\n{\n    \"compilerOptions\": {\n        \"target\": \"ES6\",\n        \"moduleResolution\": \"Node\",\n        \"useDefineForClassFields\": true,\n        \"experimentalDecorators\": false,\n        \"jsx\": \"react-jsx\"\n    }\n}\n```\n\n### Dialog\n\n```tsx\nimport { formToJSON } from 'web-utility';\nimport { Component } from 'react';\nimport { Button, Form, Modal } from 'react-bootstrap';\nimport { Dialog, DialogClose } from 'idea-react';\n\nexport class ExamplePage extends Component {\n    inputDialog = new Dialog\u003cRecord\u003c'a' | 'b', number\u003e\u003e(({ defer }) =\u003e (\n        \u003cModal show={!!defer} onHide={() =\u003e defer?.reject(new DialogClose())}\u003e\n            \u003cModal.Header\u003eDialog\u003c/Modal.Header\u003e\n            \u003cModal.Body\u003e\n                \u003cForm\n                    id=\"input-dialog\"\n                    onSubmit={event =\u003e {\n                        event.preventDefault();\n\n                        defer?.resolve(formToJSON(event.currentTarget));\n                    }}\n                    onReset={() =\u003e defer?.reject(new DialogClose())}\n                \u003e\n                    \u003cForm.Group\u003e\n                        \u003cForm.Label\u003eA\u003c/Form.Label\u003e\n                        \u003cForm.Control type=\"number\" name=\"a\" /\u003e\n                    \u003c/Form.Group\u003e\n                    \u003cForm.Group\u003e\n                        \u003cForm.Label\u003eB\u003c/Form.Label\u003e\n                        \u003cForm.Control type=\"number\" name=\"b\" /\u003e\n                    \u003c/Form.Group\u003e\n                \u003c/Form\u003e\n            \u003c/Modal.Body\u003e\n            \u003cModal.Footer className=\"d-flex justify-content-end gap-3\"\u003e\n                \u003cButton form=\"input-dialog\" type=\"submit\"\u003e\n                    √\n                \u003c/Button\u003e\n                \u003cButton form=\"input-dialog\" type=\"reset\" variant=\"danger\"\u003e\n                    ×\n                \u003c/Button\u003e\n            \u003c/Modal.Footer\u003e\n        \u003c/Modal\u003e\n    ));\n\n    someLogic = async () =\u003e {\n        try {\n            const data = await this.inputDialog.open();\n\n            alert(JSON.stringify(data, null, 4));\n        } catch (error) {\n            if (error instanceof DialogClose) console.warn(error.message);\n        }\n    };\n\n    render() {\n        return (\n            \u003c\u003e\n                \u003cButton onClick={this.someLogic}\u003eopen Dialog\u003c/Button\u003e\n\n                \u003cthis.inputDialog.Component /\u003e\n            \u003c/\u003e\n        );\n    }\n}\n```\n\n## Development\n\n### Publish\n\n1. update `version` in `package.json` file\n\n2. add Git tag\n\n```shell\ngit tag vx.xx.x  # such as v2.0.0\n```\n\n3. review tag\n\n```shell\ngit tag\n```\n\n4. publish code with tag version\n\n```shell\ngit push origin master --tags  # push all branches and tags on master\n```\n\n[1]: https://reactjs.org/\n[2]: https://www.typescriptlang.org/\n[3]: https://getbootstrap.com/\n[4]: https://idea2app.github.io/\n[5]: https://mobx.js.org/\n[6]: https://libraries.io/npm/idea-react\n[7]: https://github.com/idea2app/Idea-React/actions/workflows/main.yml\n[8]: https://npm.im/idea-react/\n[9]: https://idea2app.github.io/React-MobX-Bootstrap-ts/\n[10]: https://github.com/idea2app/React-MobX-Bootstrap-ts/blob/master/src/page/Component.tsx\n[11]: https://next-bootstrap-ts.vercel.app/\n[12]: https://github.com/idea2app/next-bootstrap-ts/blob/main/pages/component.tsx\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidea2app%2Fidea-react","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidea2app%2Fidea-react","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidea2app%2Fidea-react/lists"}