{"id":19410033,"url":"https://github.com/metadream/thyme","last_synced_at":"2026-05-16T10:32:15.826Z","repository":{"id":205760063,"uuid":"715013883","full_name":"metadream/thyme","owner":"metadream","description":"Web UI components based on native javascript","archived":false,"fork":false,"pushed_at":"2026-03-19T10:35:35.000Z","size":564,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-20T03:47:14.195Z","etag":null,"topics":["javascript-library","ui-components","web-components"],"latest_commit_sha":null,"homepage":"https://metadream.github.io/thyme","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/metadream.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-06T10:02:44.000Z","updated_at":"2026-03-19T10:35:38.000Z","dependencies_parsed_at":"2026-02-17T15:03:34.227Z","dependency_job_id":null,"html_url":"https://github.com/metadream/thyme","commit_stats":null,"previous_names":["metadream/quick-components","metadream/web-components","metadream/thyme"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/metadream/thyme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metadream%2Fthyme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metadream%2Fthyme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metadream%2Fthyme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metadream%2Fthyme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metadream","download_url":"https://codeload.github.com/metadream/thyme/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metadream%2Fthyme/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33098791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["javascript-library","ui-components","web-components"],"created_at":"2024-11-10T12:14:39.599Z","updated_at":"2026-05-16T10:32:15.807Z","avatar_url":"https://github.com/metadream.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Thyme UI Components\n\nDemo: https://metadream.github.io/thyme\n\n## Usage\n\n```\n\u003cscript src=\"dist/thyme.js\"\u003e\u003c/script\u003e\n```\n\nIf you want to use the formulas, you also need to import\n\n```\n\u003cscript src=\"https://cdn.unpkg.net/assets/mod/asciimath.js\"\u003e\u003c/script\u003e\n```\n\n## Components\n\n```\n\u003cth-formula\u003eE=mc^2\u003c/th-formula\u003e\n\u003cth-button\u003eSubmit\u003c/th-button\u003e\n\u003cth-field label=\"Username\" name=\"username\" maxlength=\"10\" required\u003e\u003c/th-field\u003e\n\u003cth-calendar label=\"Birthdate\" name=\"birthdate\"\u003e\u003c/th-calendar\u003e\n\u003cth-switch name=\"isMember\"\u003e\u003c/th-switch\u003e\n\n\u003cth-checkgroup label=\"Hobbies\" name=\"hobbies\" required\u003e\n    \u003cth-checkbox value=\"football\"\u003eFootball\u003c/th-checkbox\u003e\n    \u003cth-checkbox value=\"basketball\" checked\u003eBasketball\u003c/th-checkbox\u003e\n\u003c/th-checkgroup\u003e\n\n\u003cth-select type=\"text\" label=\"Brand\" name=\"brand\" required\u003e\n    \u003coption\u003e\u003c/option\u003e\n    \u003coption value=\"1\"\u003eiPhone\u003c/option\u003e\n    \u003coption value=\"2\" disabled\u003eSamsang\u003c/option\u003e\n\u003c/th-select\u003e\n\n\u003cth-upload label=\"Attachments\" name=\"attachments\" accept=\"image/*\" multiple=\"5\" maxsize=\"20000240\"\n editable required\u003e\u003c/th-upload\u003e\n\n\u003cth-textbox label=\"Remark\" name=\"remark\" required\u003e\n    This is remark content.\n\u003c/th-textbox\u003e\n\n\u003cth-dialog\u003e\n    This is a dialog!\n\u003c/th-dialog\u003e\n\n\u003cth-waterfall column=\"3\" spacing=\"10\" class=\"gallery\"\u003e\n    \u003cdiv\u003e\u003cbr\u003e1\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e2\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e3\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e4\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e5\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e6\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e7\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e8\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e9\u003c/div\u003e\n    \u003cdiv\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e10\u003c/div\u003e\n\u003c/th-waterfall\u003e\n\n\u003cth-toptray\u003e\u003c/th-toptray\u003e\n```\n\n## Modules\n\n### WebSocket\n\n```\nconst channel = new Thyme.Channel('ws://endpoint');\nchannel.on('message', (data) =\u003e console.log(data));\n```\n\n### Form\n\n```\nconst object = Thyme.form.getJsonObject('selector');\nconst array = Thyme.form.getJsonArray('selector\u003echildren');\n```\n\n### Http\n\n```\n# get, post, put, patch, delete\nThyme.http.post('/path', data).then(res =\u003e {\n    console.log(res);\n})\n```\n\n### Utils\n\n```\nThyme.alert('Alert!');\nThyme.confirm('Confirm?', () =\u003e console.log('callback'));\nThyme.info('message');\nThyme.success('message');\nThyme.warn('message');\nThyme.error('message');\n\nThyme.util.nanoId(24);\nThyme.util.createElement('\u003cdiv class=\"test\"\u003e\u003c/div\u003e');\nThyme.util.formatDate(new Date(), 'yyyy-MM-dd hh:mm');\nThyme.util.formatDecimal(10.3212123, 2);\nThyme.util.formatBytes(28932892);\nThyme.util.parseDuration('3:20');\nThyme.util.formatSeconds(280);\nThyme.util.stringify({a:1, b:2});\nThyme.util.base64Encode('plain text');\nThyme.util.svg2png(svgElement);\nThyme.util.toDataURI(svgHTML);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetadream%2Fthyme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetadream%2Fthyme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetadream%2Fthyme/lists"}