{"id":13658192,"url":"https://github.com/saket/extended-spans","last_synced_at":"2025-04-09T06:11:28.846Z","repository":{"id":45003125,"uuid":"508468606","full_name":"saket/extended-spans","owner":"saket","description":"Squiggly underlines and rounded corners for text in Compose UI","archived":false,"fork":false,"pushed_at":"2024-09-14T18:50:22.000Z","size":2783,"stargazers_count":388,"open_issues_count":2,"forks_count":9,"subscribers_count":3,"default_branch":"trunk","last_synced_at":"2024-10-14T20:48:01.153Z","etag":null,"topics":["compose","spans","text"],"latest_commit_sha":null,"homepage":"https://saket.me/compose-custom-text-spans/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saket.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2022-06-28T22:08:26.000Z","updated_at":"2024-09-21T02:48:36.000Z","dependencies_parsed_at":"2024-08-11T15:31:01.120Z","dependency_job_id":"c43d553a-9580-447a-8ea3-21dca66c0b43","html_url":"https://github.com/saket/extended-spans","commit_stats":null,"previous_names":["saket/extended-spans","saket/extendedspans"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saket%2Fextended-spans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saket%2Fextended-spans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saket%2Fextended-spans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saket%2Fextended-spans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saket","download_url":"https://codeload.github.com/saket/extended-spans/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247987285,"owners_count":21028895,"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":["compose","spans","text"],"created_at":"2024-08-02T05:00:57.329Z","updated_at":"2025-04-09T06:11:28.825Z","avatar_url":"https://github.com/saket.png","language":"Kotlin","funding_links":[],"categories":["Multiplatform"],"sub_categories":["Multiplatform libraries"],"readme":"# Extended Spans\n\n`ExtendedSpans` converts your boring `AnnotatedString` spans into rad spans.\n\n| Before | After |\n| --- | --- |\n| ![Boring spans](sample/screenshots/before_light.jpg#gh-light-mode-only)![Boring spans](sample/screenshots/before_dark.jpg#gh-dark-mode-only) | ![Rad spans](sample/screenshots/after_light.gif#gh-light-mode-only)![Rad spans](sample/screenshots/after_dark.gif#gh-dark-mode-only) |\n\n\n```groovy\nimplementation \"me.saket.extendedspans:extendedspans:1.4.0\"\n```\n\n```kotlin\nval extendedSpans = remember {\n  ExtendedSpans(\n    RoundedCornerSpanPainter(…),\n    SquigglyUnderlineSpanPainter(…)\n  )\n}\n\nText(\n  modifier = Modifier.drawBehind(extendedSpans),\n  text = remember(text) {\n    extendedSpans.extend(text)\n  },\n  onTextLayout = { result -\u003e\n    extendedSpans.onTextLayout(result)\n  }\n)\n```\n\nYou can also create your own custom spans by extending `ExtendedSpanPainter` and passing it to `ExtendedSpans`.\n\n## License\n\n```\nCopyright 2022 Saket Narayan.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaket%2Fextended-spans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaket%2Fextended-spans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaket%2Fextended-spans/lists"}