[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1010":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":14,"starSnapshotCount":14,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},1010,"ProgressiveBlurHeader","dominikmartn\u002FProgressiveBlurHeader","dominikmartn","Drop-in SwiftUI component for sticky headers with progressive blur — like Apple Music, Photos, and App Store. Content scrolls underneath with increasing blur, never clipped.",null,"Swift",440,17,418,0,3,5,21,9,3.77,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32],"blur","ios","progressive-blur","sticky-header","swift","swift-package","swiftui","uikit","2026-06-12 02:00:21","# ProgressiveBlurHeader\n\nA drop-in SwiftUI component for sticky headers with progressive blur — like Apple Music, Photos, and the App Store.\n\nContent scrolls freely underneath the header, becoming increasingly blurred and tinted. Never clipped, always visible.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"Media\u002Fdemo.gif\" width=\"280\" alt=\"Progressive blur header demo\" \u002F>\n\u003C\u002Fp>\n\n## The Problem\n\nBuilding a progressive blur header in SwiftUI is surprisingly hard. There's no native API for variable-radius blur, and most attempts end up with either:\n- Hard edges where content gets clipped\n- Uniform blur that looks flat\n- Complex `UIViewRepresentable` wrappers that break with SwiftUI's layout system\n\nAI coding assistants consistently struggle with this pattern — it typically takes many iterations to get right. This package gives you a working solution in one line.\n\n## How It Works\n\nThree-layer `ZStack`:\n\n| Layer | What | Purpose |\n|-------|------|---------|\n| Back | `ScrollView` | Content scrolls freely, never clipped |\n| Middle | `VariableBlurView` + gradient | Progressive blur + tint overlay |\n| Front | Your header | Floats above the blur — no opaque background |\n\nThe blur uses the same (obfuscated) private API that Apple uses internally, via [VariableBlur](https:\u002F\u002Fgithub.com\u002Fnikstar\u002FVariableBlur) by nikstar (495+ stars, App Store approved).\n\n## Installation\n\n**Swift Package Manager** — add this to your `Package.swift`:\n\n```swift\ndependencies: [\n    .package(url: \"https:\u002F\u002Fgithub.com\u002Fdominikmartn\u002FProgressiveBlurHeader\", branch: \"main\"),\n]\n```\n\nOr in Xcode: **File → Add Package Dependencies** → paste the URL.\n\n## Usage\n\n```swift\nimport ProgressiveBlurHeader\n\nstruct MyView: View {\n    var body: some View {\n        StickyBlurHeader {\n            \u002F\u002F Your header — NO opaque background!\n            HStack {\n                Button(\"Back\") { }\n                Spacer()\n                Text(\"Title\").font(.headline)\n                Spacer()\n                Button(\"Settings\") { }\n            }\n            .padding()\n        } content: {\n            \u002F\u002F Your scrollable content\n            ForEach(items) { item in\n                ItemRow(item: item)\n            }\n        }\n        .background(Color(.systemBackground))\n    }\n}\n```\n\n## Customization\n\nAll parameters have sensible defaults — adjust what you need:\n\n```swift\nStickyBlurHeader(\n    maxBlurRadius: 5,       \u002F\u002F Blur intensity: 5 = subtle, 10 = moderate, 20 = strong\n    fadeExtension: 64,      \u002F\u002F How far (pt) blur extends below header\n    tintOpacityTop: 0.7,    \u002F\u002F Tint at screen top (behind Dynamic Island)\n    tintOpacityMiddle: 0.5  \u002F\u002F Tint at header center\n) {\n    headerView\n} content: {\n    contentView\n}\n```\n\n### Parameters\n\n| Parameter | Default | Effect |\n|-----------|---------|--------|\n| `maxBlurRadius` | `5` | Maximum blur at the top edge |\n| `fadeExtension` | `64` | How far blur reaches below the header (pt) |\n| `tintOpacityTop` | `0.7` | Darkening behind Dynamic Island \u002F status bar |\n| `tintOpacityMiddle` | `0.5` | Darkening at the header's vertical center |\n\nThe tint automatically adapts to light\u002Fdark mode (white tint in light mode, black in dark).\n\n## Important Rules\n\n> **Header must NOT have an opaque background.** No `.background(Color.xxx)` — the `VariableBlurView` IS the background. Adding one hides the blur effect.\n\n> **Don't clip the content.** No `.clipped()` anywhere in the hierarchy. Content should always be visible, just blurred.\n\n> **Header height is measured automatically** via `GeometryReader` + `PreferenceKey`. It adapts dynamically if your header changes size.\n\n## What About iOS 26's `.safeAreaBar(edge: .top)`?\n\niOS 26 introduces `.safeAreaBar(edge: .top)` — a one-liner that adds a sticky bar with blur. But it gives you **zero control** over blur radius, tint intensity, or fade length. If you need to match a specific design, the custom approach is the way to go.\n\n## Requirements\n\n- iOS 16+\n- Swift 5.9+\n\n## Credits\n\n- [VariableBlur](https:\u002F\u002Fgithub.com\u002Fnikstar\u002FVariableBlur) by nikstar — the progressive blur engine\n- Built by [Dominik Martin](https:\u002F\u002Fx.com\u002Fdominikmartn)\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","ProgressiveBlurHeader 是一个 SwiftUI 组件，用于实现带有渐进模糊效果的固定头部，类似于 Apple Music、Photos 和 App Store 的效果。其核心功能是通过三层 ZStack 实现内容在滚动时逐渐模糊且不被裁剪，使用了与苹果内部相同的模糊技术（VariableBlur）。该组件适合需要创建具有视觉吸引力和流畅滚动体验的应用场景，如音乐播放器、图片浏览或应用商店等。通过简单的配置即可调整模糊强度、模糊范围以及色调透明度，使得开发者能够快速集成高质量的渐进模糊头部效果。",2,"2026-06-11 02:41:03","CREATED_QUERY"]