[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92226":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},92226,"matrix-swift","mana-am\u002Fmatrix-swift","mana-am","Animated dot-matrix loading indicators for SwiftUI — 100+ deterministic dot loaders, zero assets, zero dependencies. A faithful Swift port of zzzzshawn\u002Fmatrix.","https:\u002F\u002Fmana.am",null,"Swift",123,6,1,0,19,44.44,"Other",false,"main",[22,23,24,25,26,27,28,29,30,31,32,33],"activity-indicator","animation","dot-matrix","ios","loader","loading-indicator","spinner","spm","swift","swift-package","swift-package-manager","swiftui","2026-07-22 04:02:05","# Matrix\n\n**Animated dot-matrix loading indicators for SwiftUI.**\n100+ deterministic, pattern-driven dot loaders that render as tiny animated grids —\na faithful Swift\u002FSwiftUI port of the [`zzzzshawn\u002Fmatrix`](https:\u002F\u002Fgithub.com\u002Fzzzzshawn\u002Fmatrix)\nloader collection. They power the chat \"thinking\" states in [Mana](https:\u002F\u002Fmana.am),\nan AI-first creation studio for iOS.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSwift-5.9%2B-orange.svg\" alt=\"Swift 5.9+\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatforms-iOS%2018%2B-blue.svg\" alt=\"iOS 18+\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSPM-compatible-brightgreen.svg\" alt=\"SwiftPM compatible\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fmana-am\u002Fmatrix-swift\u002Fraw\u002Fmain\u002FAssets\u002Fdemo.gif\" width=\"280\" alt=\"Matrix dot-matrix loaders demo\" \u002F>\n\u003C\u002Fp>\n\n## When to use\n\n- You want a compact, lively loading indicator — chat \"thinking\", tool activity,\n  inline spinners — that reads as a hand-tuned dot grid, not a stock spinner.\n- You want **deterministic** selection: the same key always lands on the same\n  loader, so loaders don't visibly reshuffle as SwiftUI rebuilds views on scroll.\n- You want a big, varied catalog (Square, Circular, Hex, Fun, 3×3, Triangle, Icon)\n  behind one drop-in view.\n\n## Installation\n\nAdd the package in Xcode (**File ▸ Add Package Dependencies…**) or in your\n`Package.swift`:\n\n```swift\n.package(url: \"https:\u002F\u002Fgithub.com\u002Fmana-am\u002Fmatrix-swift\", from: \"1.0.0\")\n```\n\nThen add `Matrix` to your target's dependencies and `import Matrix`.\n\n## Quick start\n\nThere are two equivalent ways to use a loader — pick whichever reads better.\n\n**1. Named component** (1:1 with the upstream React library — `\u003CDotmSquare3 \u002F>`):\n\n```swift\nimport SwiftUI\nimport Matrix\n\nstruct LoadingRow: View {\n    var body: some View {\n        HStack(spacing: 16) {\n            DotmSquare3(size: 28)\n            DotmHex1(size: 28, color: .blue)\n            DotmTriangle5(size: 28, color: .pink, speed: 1.4)\n            DotMatrixIcon(size: 28)\n        }\n    }\n}\n```\n\nEvery loader is its own `View`: `DotmSquare1…23`, `DotmCircular1…20`, `DotmHex1…10`,\n`DotmTriangle1…20`, `Dotm3x3_1…21`, the Fun set (`DotmFunHeart`, `DotmFunArrow`,\n`DotmFunSparkle`, …), and `DotMatrixIcon`. Each takes the same ergonomic init:\n`(size:color:speed:dotSize:muted:bloom:halo:)`.\n\n**2. Shape id** (one view, parameterized — handy for pickers \u002F random \u002F storing a choice):\n\n```swift\nMatrixLoader(.square(3), size: 28)\nMatrixLoader(.hex(1), size: 28, color: .blue)\nMatrixLoader(.triangle(5), size: 28, color: .pink, speed: 1.4)\nMatrixLoader(.fun(.heart), size: 28, color: .red)\nMatrixLoader(.icon, size: 28)\n```\n\nIndex ranges: `square` 1…23 · `circular` 1…20 · `hex` 1…10 · `grid3` 1…16 & 18…21\n· `triangle` 1…20 · `fun(.heart \u002F .arrow \u002F .sparkle \u002F …)` · `icon`. Every id is\nenumerable via `MatrixLoaderID.all` — build a picker or choose one at random.\n\n> **Coming from [`zzzzshawn\u002Fmatrix`](https:\u002F\u002Fgithub.com\u002Fzzzzshawn\u002Fmatrix)?** The named\n> components match the upstream exports 1:1 (`DotmSquare3`, `DotmHex1`, `Dotm3x3_7`,\n> `DotmTriangle5`, `DotMatrixIcon`), so docs and examples carry over. The **Fun**\n> family (`DotmFun…` \u002F `MatrixLoader(.fun(…))`) is an addition in this port and has no\n> upstream counterpart.\n\n## Example\n\nA runnable Swift Playgrounds app lives in [`Example.swiftpm`](Example.swiftpm) —\nopen it in Swift Playgrounds or Xcode and press **Run** to try every loader live,\nwith theme \u002F speed \u002F color \u002F reduce-motion controls.\n\n## Browse every loader\n\nThe package ships a self-contained, interactive gallery:\n\n```swift\nimport Matrix\n\nNavigationLink(\"Loaders\") { MatrixLoaderGallery() }\n```\n\n## Loaders\n\n| Family    | Count | Notes |\n| --------- | ----- | ----- |\n| Square    | 23    | 5×5 grid |\n| Circular  | 20    | 5×5, circular mask |\n| Hex       | 10    | hex lattice (19 cells) |\n| Fun       | 18    | silhouettes + motion (heart, arrow, sparkle, snake, confetti…) |\n| 3×3       | 20    | compact 3×3 grid |\n| Triangle  | 20    | 7×7 triangle silhouette |\n| Icon      | 1     | brand icon loader |\n\n`MatrixLoadingView` draws from a pool of 92 (every family except Triangle). Any\nloader is browsable in `MatrixLoaderGallery`.\n\n## How it works\n\n- **No assets, no dependencies.** Pure SwiftUI — every loader is drawn from\n  animated `Circle`s driven by a `TimelineView`.\n- **Pattern-driven grids.** Each loader animates a mask over a small grid\n  (5×5 \u002F hex \u002F 3×3 \u002F 7×7 triangle) via a per-cell opacity resolver, ported 1:1\n  from the upstream CSS keyframes and JS math.\n- **Reduce Motion aware.** Animations pause and fall back to a static,\n  accessibility-correct pose automatically.\n\n## Public API\n\n- **Named components** — `DotmSquare1…23`, `DotmCircular1…20`, `DotmHex1…10`,\n  `DotmTriangle1…20`, `Dotm3x3_1…21`, `DotmFun…`, `DotMatrixIcon`. Each is a `View`\n  with an ergonomic `(size:color:speed:dotSize:muted:bloom:halo:)` init. This mirrors\n  the upstream React library's per-component API.\n- `MatrixLoader` — render a loader by `MatrixLoaderID` (shape + index), sized and\n  colored to taste. Equivalent to the named components; nicer when the choice is data.\n- `MatrixLoaderID` \u002F `FunLoader` — the loader catalog; `MatrixLoaderID.all`\n  enumerates every loader.\n- `MatrixLoaderGallery` — the interactive showcase (Liquid-Glass chip bar per family).\n\n## Credits & License\n\nPorted from [`zzzzshawn\u002Fmatrix`](https:\u002F\u002Fgithub.com\u002Fzzzzshawn\u002Fmatrix), published\nas a standalone Swift package **with the author's kind permission**. Please keep\nthe attribution and the link back to the upstream project. See [LICENSE](LICENSE).\n\nMaintained by [Mana](https:\u002F\u002Fmana.am) — an AI-first creation studio for iOS.\n","这是一个为 SwiftUI 设计的点阵式动画加载指示器库，提供 100+ 种确定性、模式化的小型点阵动画（如方形、六边形、三角形、图标等），纯 Swift 实现，无资源文件、无第三方依赖。核心特点是渲染结果可预测（相同 ID 总对应同一动画）、支持细粒度定制（尺寸、颜色、速度、点大小等），并兼容 Swift Package Manager。适用于 iOS 应用中需要轻量、紧凑、风格统一的加载状态场景，例如聊天消息‘思考中’、工具操作反馈、内联加载提示等。",2,"2026-07-08 04:29:53","CREATED_QUERY"]