@satinhq/kit 0.1.0-beta.2 → 0.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/NOTICE +2 -2
  2. package/README.md +1 -1
  3. package/dist/acknowledgements/inventory.json +5 -5
  4. package/dist/actions/RowActions.d.ts +2 -2
  5. package/dist/actions/RowActions.js +2 -2
  6. package/dist/controls/civilDate.d.ts +1 -1
  7. package/dist/controls/civilDate.js +1 -1
  8. package/dist/docs/components/file-importer.md +1 -1
  9. package/dist/docs/components/paste-button.md +1 -1
  10. package/dist/docs/components/photos-picker.md +1 -1
  11. package/dist/docs/components/share-link.md +1 -1
  12. package/dist/docs/limitations.md +1 -1
  13. package/dist/docs/push.md +3 -3
  14. package/dist/docs/reference.md +1870 -0
  15. package/dist/glass/lens/controlLift.d.ts +1 -1
  16. package/dist/glass/lens/controlLift.js +1 -1
  17. package/dist/glass/lens/interactivePress.d.ts +2 -2
  18. package/dist/glass/lens/interactivePress.js +2 -2
  19. package/dist/glass/lens/menu-opening-native-fits.json +1 -1
  20. package/dist/glass/lens/menuContextFit.json +1 -1
  21. package/dist/glass/lens/menuDropFit.json +1 -1
  22. package/dist/glass/lens/menuField.d.ts +2 -2
  23. package/dist/glass/lens/menuField.js +3 -3
  24. package/dist/glass/lens/menuGlyphDropFit.json +1 -1
  25. package/dist/glass/lens/menuMorphFit.json +1 -1
  26. package/dist/glass/lens/menuMorphPhoneFit.json +1 -1
  27. package/dist/glass/lens/tabAccessoryMotion.d.ts +1 -1
  28. package/dist/glass/lens/tabSearchMember.d.ts +1 -1
  29. package/dist/glass/lens/tabSearchMember.js +1 -1
  30. package/dist/glass/menuPresenter.js +1 -1
  31. package/dist/glass/regions.d.ts +1 -1
  32. package/dist/glass/regions.js +1 -1
  33. package/dist/glass/shapeTrack.d.ts +1 -1
  34. package/dist/glass/submenuMotion.d.ts +1 -1
  35. package/dist/glass/submenuMotion.js +1 -1
  36. package/dist/glass/webgpu/entry.worker.js +3 -6
  37. package/dist/glass/webgpu/frameClock.d.ts +6 -2
  38. package/dist/glass/webgpu/frameClock.js +9 -2
  39. package/dist/glass/webgpu/frameProbe.d.ts +1 -1
  40. package/dist/glass/webgpu/frameProbe.js +3 -3
  41. package/dist/glass/webgpu/production.js +4 -0
  42. package/dist/glass/webgpu/raster.d.ts +18 -0
  43. package/dist/glass/webgpu/raster.js +105 -15
  44. package/dist/glass/webgpu/rasterMaterial.d.ts +4 -0
  45. package/dist/glass/webgpu/rasterMaterial.js +17 -1
  46. package/dist/glass/webgpu/regionScene.d.ts +4 -1
  47. package/dist/glass/webgpu/regionScene.js +30 -1
  48. package/dist/glass/webgpu/renderer.js +23 -7
  49. package/dist/keyboard/adapter.js +2 -2
  50. package/dist/keyboard/avoidance.d.ts +1 -1
  51. package/dist/keyboard/avoidance.js +1 -1
  52. package/dist/keyboard/motion.d.ts +1 -1
  53. package/dist/keyboard/motion.js +1 -1
  54. package/dist/list-form/ListForm.d.ts +2 -2
  55. package/dist/list-form/ListForm.js +1 -1
  56. package/dist/list-form/ListItem.js +1 -1
  57. package/dist/list-form/RowLabel.d.ts +1 -1
  58. package/dist/list-form/RowLabel.js +1 -1
  59. package/dist/list-form/Slider.js +1 -1
  60. package/dist/list-form/editMotion.js +1 -1
  61. package/dist/list-form/editing.d.ts +5 -5
  62. package/dist/list-form/editing.js +1 -1
  63. package/dist/motion/animationValue.d.ts +2 -2
  64. package/dist/motion/animationValue.js +9 -10
  65. package/dist/motion/matchedGeometry.d.ts +4 -4
  66. package/dist/motion/matchedGeometry.js +7 -8
  67. package/dist/motion/springTrack.d.ts +1 -2
  68. package/dist/motion/springTrack.js +10 -5
  69. package/dist/navigation/ScreenContainer.js +1 -1
  70. package/dist/navigation/chromeCurves.js +1 -1
  71. package/dist/navigation/types.d.ts +1 -1
  72. package/dist/navigation/zoomGeometry.js +1 -1
  73. package/dist/navigation/zoomMotion.d.ts +1 -1
  74. package/dist/navigation/zoomMotion.js +2 -2
  75. package/dist/navigation/zoomTransition.js +3 -4
  76. package/dist/presentation/Presentation.d.ts +2 -2
  77. package/dist/presentation/Presentation.js +1 -1
  78. package/dist/presentation/presentationSource.js +1 -1
  79. package/dist/public/controls.d.ts +4 -4
  80. package/dist/public/controls.js +7 -7
  81. package/dist/public/glass.d.ts +3 -4
  82. package/dist/public/glass.js +1 -2
  83. package/dist/public/navigationTransition.d.ts +1 -1
  84. package/dist/public/navigationTransition.js +1 -1
  85. package/dist/public/scroll.d.ts +1 -1
  86. package/dist/public/scroll.js +1 -1
  87. package/dist/public/toolbar.js +1 -1
  88. package/dist/safe-area/SafeAreaInset.js +3 -3
  89. package/dist/safe-area/modifiers.js +2 -2
  90. package/dist/safe-area/useSafeAreaMetrics.js +2 -2
  91. package/dist/scroll/ScrollSurface.d.ts +5 -5
  92. package/dist/scroll/ScrollSurface.js +1 -1
  93. package/dist/scroll/position.js +1 -1
  94. package/dist/scroll/screenGeometry.d.ts +1 -1
  95. package/dist/scroll/screenGeometry.js +1 -1
  96. package/dist/search/SearchDrawer.js +1 -1
  97. package/dist/search/searchMotion.d.ts +1 -1
  98. package/dist/search/searchMotion.js +1 -1
  99. package/dist/search/useSearchPresentation.js +1 -1
  100. package/dist/shapes/corners.js +1 -1
  101. package/dist/styles.css +55 -34
  102. package/dist/text-input/TextEditor.js +7 -3
  103. package/package.json +4 -4
  104. package/dist/docs/swiftui-reference.md +0 -1895
package/NOTICE CHANGED
@@ -1,6 +1,6 @@
1
1
  # Satin distribution notices
2
2
 
3
- Generated from packages/pwakit/src/acknowledgements/inventory.json.
3
+ Generated from packages/kit/src/acknowledgements/inventory.json.
4
4
 
5
5
  Satin-authored framework packages use MIT; third-party terms are preserved.
6
6
  Retain the copyright and permission notices required by MIT in copies or
@@ -12,7 +12,7 @@ is a separately installed build dependency. Consumer Vite builds emit NOTICE.txt
12
12
  and licenses.json from their actual emitted module graph, including runtime peers.
13
13
  Development dependencies are not assumed to be bundled.
14
14
 
15
- ## Satin 0.1.0-beta.2
15
+ ## Satin 0.1.0-beta.3
16
16
 
17
17
  License: MIT
18
18
  Source: https://opensource.org/license/mit
package/README.md CHANGED
@@ -219,7 +219,7 @@ falls back to the base glyph when no fill exists. See the shipped [available sym
219
219
 
220
220
  ## Public API inventory
221
221
 
222
- See the packaged [Satin API reference](dist/docs/swiftui-reference.md) for behavior, limitations, unavailable concepts and the exact export coverage inventory. The index lists supported APIs and known gaps.
222
+ See the packaged [Satin API reference](dist/docs/reference.md) for behavior, limits, unsupported capabilities and the exact export inventory. The index lists supported APIs and known gaps.
223
223
 
224
224
  For a Safari-tab development build, set `advanced: { updateProfile: 'preview' }` in `defineApp`. No environment switch is needed. It retains the iOS WebKit platform gate and uses the existing live-update service-worker policy, which may reload on update. Use the default `release` profile for installed production apps and cold-launch update activation. A query parameter cannot opt a release build into preview. The profile does not change status style, viewport geometry, glass or lifecycle ownership.
225
225
 
@@ -1,13 +1,13 @@
1
1
  [
2
2
  {
3
3
  "name": "Satin",
4
- "version": "0.1.0-beta.2",
4
+ "version": "0.1.0-beta.3",
5
5
  "license": "MIT",
6
6
  "source": "https://opensource.org/license/mit",
7
7
  "text": "MIT License\n\nCopyright (c) 2026 Satin contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
8
8
  "sha256": "a9ca5be2844d1d12fbd9b77cd7446d1895c44b4c5253aed536c2c60ad8d10caa",
9
9
  "bundledPaths": [
10
- "packages/pwakit/src"
10
+ "packages/kit/src"
11
11
  ],
12
12
  "role": "framework"
13
13
  },
@@ -19,8 +19,8 @@
19
19
  "text": "The MIT License (MIT)\n\nCopyright (c) 2016 Vladimir Kharlampidi\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
20
20
  "sha256": "61afeee2f1d59f21412901a0015ccbec0315ae4806e3f4fbd167201ebb17b2f8",
21
21
  "bundledPaths": [
22
- "packages/pwakit/src/symbols/glyphs",
23
- "packages/pwakit/src/glass/lens/icons.ts"
22
+ "packages/kit/src/symbols/glyphs",
23
+ "packages/kit/src/glass/lens/icons.ts"
24
24
  ],
25
25
  "role": "adapted or generated source"
26
26
  },
@@ -32,7 +32,7 @@
32
32
  "text": "MIT License\n\nCopyright (c) 2026 Pallav Agarwal\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n",
33
33
  "sha256": "949e33ed2f105f112b392ce9832799a1c6d2c1fe89784a87c919dfc6b115eacc",
34
34
  "bundledPaths": [
35
- "packages/pwakit/src/glass/lens"
35
+ "packages/kit/src/glass/lens"
36
36
  ],
37
37
  "role": "adapted or generated source"
38
38
  }
@@ -16,13 +16,13 @@ export type RowActionsController = {
16
16
  * A row's swipe actions and context menu. Inside an editable `List` item, the item owns the row's
17
17
  * one gesture host (it adds swipe-to-delete), so the row hands its actions to the item instead of
18
18
  * hosting a second recognizer. Swipe actions are unavailable while the list is editing, as in
19
- * SwiftUI; the context menu stays.
19
+ * selection; the context menu stays.
20
20
  */
21
21
  export declare function RowActions(props: RowActionsEngineProps): import("react").JSX.Element;
22
22
  /**
23
23
  * The one gesture host of an editable `List` item. It hosts the row's own swipe actions and context
24
24
  * menu (handed over by the row, or declared on its `ListRow`) and adds the `onDelete` action as the
25
- * trailing swipe, unless the row declares trailing actions of its own: SwiftUI's `swipeActions`
25
+ * trailing swipe, unless the row declares its own trailing `swipeActions`
26
26
  * replace swipe-to-delete.
27
27
  */
28
28
  export declare function ListItemActions({ children, swipeActions, contextMenu, deleteAction, controller, }: RowActionsProps & {
@@ -762,7 +762,7 @@ function RowActionsEngine({ children, swipeActions, contextMenu, disabled = fals
762
762
  * A row's swipe actions and context menu. Inside an editable `List` item, the item owns the row's
763
763
  * one gesture host (it adds swipe-to-delete), so the row hands its actions to the item instead of
764
764
  * hosting a second recognizer. Swipe actions are unavailable while the list is editing, as in
765
- * SwiftUI; the context menu stays.
765
+ * selection; the context menu stays.
766
766
  */
767
767
  export function RowActions(props) {
768
768
  const item = useContext(ListItemContext);
@@ -781,7 +781,7 @@ function DelegatedRowActions({ children, swipeActions, contextMenu, disabled, de
781
781
  /**
782
782
  * The one gesture host of an editable `List` item. It hosts the row's own swipe actions and context
783
783
  * menu (handed over by the row, or declared on its `ListRow`) and adds the `onDelete` action as the
784
- * trailing swipe, unless the row declares trailing actions of its own: SwiftUI's `swipeActions`
784
+ * trailing swipe, unless the row declares its own trailing `swipeActions`
785
785
  * replace swipe-to-delete.
786
786
  */
787
787
  export function ListItemActions({ children, swipeActions, contextMenu, deleteAction, controller, }) {
@@ -2,7 +2,7 @@
2
2
  * Calendar fields for DatePicker, kept apart from instants.
3
3
  *
4
4
  * A DatePicker edits calendar fields: a day, a time of day, or both. A `Date` selection reads and
5
- * writes those fields in the device's time zone, as SwiftUI does. A string selection is a civil
5
+ * writes those fields in the device's time zone. A string selection is a civil
6
6
  * value with no time zone at all ('2026-10-14', '09:41', '2026-10-14T09:41'), so a due date
7
7
  * chosen in New York is still October 14 when the app is opened in Tokyo.
8
8
  *
@@ -2,7 +2,7 @@
2
2
  * Calendar fields for DatePicker, kept apart from instants.
3
3
  *
4
4
  * A DatePicker edits calendar fields: a day, a time of day, or both. A `Date` selection reads and
5
- * writes those fields in the device's time zone, as SwiftUI does. A string selection is a civil
5
+ * writes those fields in the device's time zone. A string selection is a civil
6
6
  * value with no time zone at all ('2026-10-14', '09:41', '2026-10-14T09:41'), so a due date
7
7
  * chosen in New York is still October 14 when the app is opened in Tokyo.
8
8
  *
@@ -1,6 +1,6 @@
1
1
  # FileImporter
2
2
 
3
- Imports file bytes through the system file chooser. `FileImporter` requires a user gesture and does not expose a presentation flag that would open a chooser outside a user gesture.
3
+ Imports file bytes through the system file chooser. `FileImporter` opens the system chooser from a press. It does not expose a presentation flag that would open a chooser outside a user gesture.
4
4
 
5
5
  Pass `selection` as the accepted File array and update it in `onSelectionChange`. `allowedContentTypes` accepts MIME strings or file extensions, for example `['application/pdf', '.txt']`. These are chooser hints, not content validation or Swift uniform type identifiers. `allowsMultipleSelection` defaults to false.
6
6
 
@@ -4,7 +4,7 @@ Reads plain text with the async Clipboard API inside the user's press. `onPaste`
4
4
 
5
5
  WebKit may show its own Paste confirmation before returning text. Dismissal and denial cannot be reliably distinguished. The component never reads clipboard contents during render or probes whether a paste is available. It cannot pre-disable itself based on clipboard contents.
6
6
 
7
- This version supports plain text only, not arbitrary transferable objects or clipboard images. No hidden editable field, synthetic paste, permission polling or clipboard cache bypasses WebKit's prompt.
7
+ This version supports plain text only. Structured clipboard objects and images are unsupported. No hidden editable field, synthetic paste, permission polling or clipboard cache bypasses WebKit's prompt.
8
8
 
9
9
  ## Example
10
10
 
@@ -4,7 +4,7 @@ Selects one photo or video using a real file input. The browser chooses the sour
4
4
 
5
5
  `selection` is the accepted `File | null`; `onSelectionChange` receives a new File. `matching` accepts `images`, `videos`, or `imagesAndVideos`. `capture="user"` or `"environment"` supplies a browser camera preference, not a camera guarantee. No photo-library permission probe runs.
6
6
 
7
- The browser may offer Photo Library, camera or Files. The control does not expose PhotosPickerItem identifiers, ordered multi-selection, persistent library access, or native filter objects. File decoding, object URLs, storage and validation belong to the app.
7
+ The browser may offer Photo Library, camera or Files. The control does not expose PhotosPickerItem identifiers, ordered multi-selection, persistent library access, or library-specific content filters. File decoding, object URLs, storage and validation belong to the app.
8
8
 
9
9
  ## Example
10
10
 
@@ -4,7 +4,7 @@ Opens the platform share sheet using Web Share. Pass prepared `item` data contai
4
4
 
5
5
  `onCompletion` reports the browser's completed handoff, not delivery to a recipient. `onError` is required. An AbortError can mean dismissal or no suitable target; it is not proof of a user cancellation. Unsupported sharing or files report NotSupportedError. Other browser errors retain their names.
6
6
 
7
- The operating system chooses share targets and previews. Custom transferable objects, preview models and activity lists are unavailable. Keep `item` stable while sharing; changing its identity invalidates delivery to the old owner.
7
+ The operating system chooses share targets and previews. Structured transfer objects, custom previews and custom activity lists are unsupported. Keep `item` stable while sharing; changing its identity invalidates delivery to the old owner.
8
8
 
9
9
  ## Example
10
10
 
@@ -37,4 +37,4 @@ What each part of Satin does today, and where it stops. Limits that come from iO
37
37
  - **Video player.** There's no general video player control.
38
38
  - **Full search tab.** `searchable` gives a search field and results, but not the full search tab.
39
39
 
40
- `@satinhq/kit/unstable` exports are experimental and may change. The [API reference](https://github.com/satinhq/satin/blob/main/packages/pwakit/api/swiftui-reference.md) lists every export.
40
+ `@satinhq/kit/unstable` exports are experimental and may change. The [API reference](https://github.com/satinhq/satin/blob/main/packages/kit/api/reference.md) lists every export.
package/dist/docs/push.md CHANGED
@@ -7,13 +7,13 @@ Node 22.12+ sender and private relay for an installed iPhone Home Screen app. Th
7
7
  Run from this workspace after `pnpm install && pnpm --filter @satinhq/kit build`. Replace the URLs with your installed app scope and trusted HTTPS relay URL.
8
8
 
9
9
  ```sh
10
- node packages/pwakit-push/src/cli.mjs init --out "$HOME/.config/satin-push/push.json" --app-url https://your-app.example/app/ --relay-url https://your-app.example/push/ --subject https://example.com/contact
10
+ node packages/push/src/cli.mjs init --out "$HOME/.config/satin-push/push.json" --app-url https://your-app.example/app/ --relay-url https://your-app.example/push/ --subject https://example.com/contact
11
11
  ```
12
12
 
13
13
  `init` generates a detail/title route at version 1, matching the starter, and writes the private configuration and owner token with mode 0600. Custom apps must align both the rule and notification route versions with their screen schema. It never prints secrets. Copy the generated public `client.env` into the starter's `.env.local`, then build and deploy the app. Supply the owner token at runtime through the app's authenticated session or token field; never bundle it.
14
14
 
15
15
  ```sh
16
- node packages/pwakit-push/src/cli.mjs relay --config "$HOME/.config/satin-push/push.json" --port 5466
16
+ node packages/push/src/cli.mjs relay --config "$HOME/.config/satin-push/push.json" --port 5466
17
17
  ```
18
18
 
19
19
  The default bind address is loopback. Forward the trusted HTTPS `/push/` path to this listener, stripping `/push` before forwarding. Keep the private Node listener on loopback or a permitted Tailscale address. A phone cannot call an HTTP relay from an HTTPS app. Keep CORS restricted to the configured app origin, as the relay does by default. Never create a public tunnel.
@@ -23,7 +23,7 @@ Open the installed app's Notifications screen, supply its owner token, read the
23
23
  ## Send in one line
24
24
 
25
25
  ```sh
26
- node packages/pwakit-push/src/cli.mjs send --config "$HOME/.config/satin-push/push.json" --title 'Reminder' --body 'Review your list' --route '{"screen":"detail","version":1,"params":{"title":"Welcome"}}' --badge 3
26
+ node packages/push/src/cli.mjs send --config "$HOME/.config/satin-push/push.json" --title 'Reminder' --body 'Review your list' --route '{"screen":"detail","version":1,"params":{"title":"Welcome"}}' --badge 3
27
27
  ```
28
28
 
29
29
  Once published, the equivalent entry is `npm exec --package @satinhq/push -- satin-push send` with those same options. Use the workspace command above when working from source.