{"id":50801754,"url":"https://github.com/harflabs/MarqueeText","last_synced_at":"2026-06-30T03:00:37.164Z","repository":{"id":317728351,"uuid":"1067799541","full_name":"harflabs/MarqueeText","owner":"harflabs","description":"Smooth horizontal scrolling text for SwiftUI","archived":false,"fork":false,"pushed_at":"2026-04-28T19:34:52.000Z","size":11361,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-28T21:25:32.761Z","etag":null,"topics":["ios","macos","swift","swiftui","tvos","view","visionos"],"latest_commit_sha":null,"homepage":"https://harflabs.com","language":"Swift","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/harflabs.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,"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":"2025-10-01T12:07:42.000Z","updated_at":"2026-04-28T20:20:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"c52e0c33-6c7a-4ce8-bf47-3de3aa55428a","html_url":"https://github.com/harflabs/MarqueeText","commit_stats":null,"previous_names":["harflabs/marqueetext"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/harflabs/MarqueeText","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harflabs%2FMarqueeText","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harflabs%2FMarqueeText/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harflabs%2FMarqueeText/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harflabs%2FMarqueeText/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harflabs","download_url":"https://codeload.github.com/harflabs/MarqueeText/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harflabs%2FMarqueeText/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34950330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"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":["ios","macos","swift","swiftui","tvos","view","visionos"],"created_at":"2026-06-12T21:00:28.529Z","updated_at":"2026-06-30T03:00:37.155Z","avatar_url":"https://github.com/harflabs.png","language":"Swift","funding_links":[],"categories":["UI and SwiftUI"],"sub_categories":[],"readme":"# MarqueeText\n\nA lightweight SwiftUI component that automatically creates marquee scrolling animations when text overflows its container. Perfect for music players, news tickers, status displays, and more.\n\n## Features\n\n- 🎯 **Automatic Detection** - Only scrolls when text overflows\n- ⚡️ **Smooth Animations** - Customizable duration, delay, and spacing\n- 🎨 **SwiftUI Native** - Built with pure SwiftUI\n- ♿️ **Accessible** - VoiceOver-friendly labels with Reduce Motion support\n- ↔️ **Localizable** - Supports `LocalizedStringResource` and right-to-left layouts\n- 📱 **Multi-Platform** - iOS, macOS, tvOS, and visionOS\n\n## Requirements\n\n- iOS 16.0+\n- macOS 13.0+\n- tvOS 16.0+\n- visionOS 1.0+\n\n## Installation\n\n### Swift Package Manager\n\nAdd the following to your `Package.swift` file:\n\n```swift\ndependencies: [\n    .package(url: \"https://github.com/harflabs/MarqueeText.git\", from: \"1.1.0\")\n]\n```\n\nOr add it through Xcode:\n1. File → Add Package Dependencies\n2. Enter the repository URL\n3. Select version and add to your target\n\n## Usage\n\n### Basic Usage\n\n```swift\nimport MarqueeText\n\nMarqueeText(\"This is a long text that will scroll smoothly across the screen!\")\n```\n\nString literals use SwiftUI's localized string resource behavior. For runtime strings, such as titles from an API,\nyou can pass a `String` value directly or use the explicit verbatim initializer when you want to make that intent\nclear:\n\n```swift\nlet title = \"Now Playing: Bohemian Rhapsody - Queen\"\n\nMarqueeText(title)\nMarqueeText(verbatim: title)\n```\n\n### Layout Behavior\n\n`MarqueeText` measures the rendered text and available width, so short text stays static and overflowing text scrolls.\nIt remeasures when SwiftUI layout changes, including font, Dynamic Type, locale, and container size updates. This keeps\nthe marquee responsive in lists, stacks, compact controls, and during device rotation.\n\nRight-to-left layout direction mirrors the marquee alignment and scroll direction.\n\n### Custom Timing\n\n```swift\nMarqueeText(\n    \"Custom timing marquee text\",\n    duration: 4.0,    // Animation duration\n    delay: 0.5,       // Delay before starting\n    spacing: 30       // Space between repeated text\n)\n```\n\nInvalid duration, delay, and spacing values are clamped to safe defaults.\n\n### With Styling\n\n```swift\nMarqueeText(\"Styled marquee text\")\n    .font(.headline)\n    .fontWeight(.semibold)\n    .foregroundStyle(.primary)\n    .padding()\n    .background(\n        RoundedRectangle(cornerRadius: 12)\n          .fill(.ultraThinMaterial)\n    )\n```\n\n### Accessibility\n\n`MarqueeText` exposes a single accessibility label for the full text. When Reduce Motion is enabled, overflowing\ntext is shown without the continuous marquee animation.\n\n## Testing\n\nRun the regression suite with:\n\n```bash\nswift test --enable-code-coverage\n```\n\nThe test suite covers overflow detection, text and layout updates, right-to-left layout, Reduce Motion, invalid sizing\ninputs, and redraw-heavy animation timing.\n\n## Examples\n\n### Main Showcase\n![Main Showcase](Assets/demo_1.gif)\n\n### Music Player Style\n![Music Player Style](Assets/demo_2.gif)\n\n### News Ticker Style\n![News Ticker Style](Assets/demo_3.gif)\n\n### Short Text (Static)\n![Short Text (Static)](Assets/demo_4.gif)\n\n### Custom Timing\n![Custom Timing](Assets/demo_5.gif)\n\n### Status Bar Style\n![Status Bar Style](Assets/demo_6.gif)\n\n### Social Media Feed\n![Social Media Feed](Assets/demo_7.gif)\n\n### Notification Banner\n![Notification Banner](Assets/demo_8.gif)\n\n### Loading Screen\n![Loading Screen](Assets/demo_9.gif)\n\n### Terminal/Console\n![Terminal/Console](Assets/demo_10.gif)\n\n\n## Apps Using MarqueeText\n\n- [Casti - Your Personalized Podcasts, Powered by AI](https://apps.apple.com/app/id6746376736)\n- [Tilfaz - Live \u0026 On-Demand TV](https://apps.apple.com/app/id1668359578)\n\n*Add your app here! Submit a pull request to include your app.*\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## About Harf Labs\n\nThis library is built by [Harf Labs](https://harflabs.com), a software development company that creates solutions for real problems.\n\nIf you like this project and need help with your own software projects, we'd love to hear from you! [Get in touch](https://harflabs.com/en/contact) and let's build something amazing together.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharflabs%2FMarqueeText","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharflabs%2FMarqueeText","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharflabs%2FMarqueeText/lists"}