{"id":13850096,"url":"https://github.com/astynax/tea-combine","last_synced_at":"2025-04-12T11:33:11.553Z","repository":{"id":52683349,"uuid":"73622766","full_name":"astynax/tea-combine","owner":"astynax","description":"Combinator library for building \"The Elm Architecture\"-powered applications with ease","archived":false,"fork":false,"pushed_at":"2021-10-14T18:37:07.000Z","size":143,"stargazers_count":39,"open_issues_count":0,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-26T06:11:43.088Z","etag":null,"topics":["combinator","elm","elm-architecture","hacktoberfest"],"latest_commit_sha":null,"homepage":"http://package.elm-lang.org/packages/astynax/tea-combine/latest","language":"Elm","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/astynax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-13T14:58:58.000Z","updated_at":"2024-07-17T00:16:50.000Z","dependencies_parsed_at":"2022-08-22T06:00:49.713Z","dependency_job_id":null,"html_url":"https://github.com/astynax/tea-combine","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astynax%2Ftea-combine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astynax%2Ftea-combine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astynax%2Ftea-combine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astynax%2Ftea-combine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astynax","download_url":"https://codeload.github.com/astynax/tea-combine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248560078,"owners_count":21124590,"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","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":["combinator","elm","elm-architecture","hacktoberfest"],"created_at":"2024-08-04T20:00:58.950Z","updated_at":"2025-04-12T11:33:11.522Z","avatar_url":"https://github.com/astynax.png","language":"Elm","funding_links":[],"categories":["Elm"],"sub_categories":[],"readme":"# TEA Combine\n\nA set of combinators for working with stateful (and effectful) components.\n\nUsing this library you can do this:\n\n```elm\nimport Browser\nimport CheckBox\nimport Counter\nimport Html\nimport TeaCombine exposing (..)\nimport TeaCombine.Pure.Pair exposing (..)\n\n\nmain =\n    Browser.sandbox\n        { init =\n            Counter.init 0\n                |\u003e initWith (CheckBox.init False)\n                |\u003e initWith (CheckBox.init False)\n        , view =\n            Html.div []\n                \u003c\u003c (joinViews Counter.view CheckBox.view\n                        |\u003e withView CheckBox.view\n                   )\n        , update =\n            Counter.update\n                |\u003e updateWith CheckBox.update\n                |\u003e updateWith CheckBox.update\n        }\n```\n\nand have an app that looks like this (image is clickable!):\n\n[![screenshot](https://github.com/astynax/tea-combine/blob/master/assets/example.png)](https://astynax.github.com/tea-combine/examples/pure/Simple.html)\n\n[Here](https://medium.com/@mattia512maldini/the-principles-behind-tea-combine-49120b9137d0) you can find a good explanatory article (thanks to [Maldus512](https://github.com/Maldus512)!) about *how* all this stuff works!\n\n### More examples\n\n(All the sources you can find [here](https://github.com/astynax/tea-combine/tree/master/examples))\n\n- [simple one](https://astynax.github.io/tea-combine/examples/pure/Main.html) with `Pure` combinators,\n- [another](https://astynax.github.io/tea-combine/examples/pure/Recursive.html) pure but recursive,\n- [one](https://astynax.github.io/tea-combine/examples/effectful/Main.html) with `Effectful` combinators,\n- [another](https://astynax.github.io/tea-combine/examples/effectful/Recursive.html) effectful but recursive,\n- [one](https://astynax.github.io/tea-combine/examples/form/Main.html) with form \u0026 binding,\n- [one](https://astynax.github.io/tea-combine/examples/pages/Main.html) with multi-page layout,\n- [another](https://astynax.github.io/tea-combine/examples/xor_pages/Main.html) multi-page one but with the state resetting on tab switch.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastynax%2Ftea-combine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastynax%2Ftea-combine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastynax%2Ftea-combine/lists"}