@absolutejs/absolute 0.20.0-beta.26 → 0.20.0-beta.27

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.
package/README.md CHANGED
@@ -218,11 +218,26 @@ does not silently replace a running application session.
218
218
  Application code uses one provider-neutral API in web pages and Capacitor apps:
219
219
 
220
220
  ```ts
221
- import { camera, clipboard, haptics, photos, share } from '@absolutejs/devices';
221
+ import {
222
+ camera,
223
+ clipboard,
224
+ haptics,
225
+ keyboard,
226
+ photos,
227
+ share,
228
+ systemBars
229
+ } from '@absolutejs/devices';
222
230
 
223
231
  await clipboard.writeText('Copied everywhere');
224
232
  await share.share({ text: 'Shared everywhere', url: 'https://absolutejs.com' });
225
233
  await haptics.impact('light');
234
+ const removeKeyboard = await keyboard.onChange(({ visible, heightPx }) => {
235
+ document.documentElement.style.setProperty(
236
+ '--keyboard-height',
237
+ visible ? `${heightPx}px` : '0px'
238
+ );
239
+ });
240
+ await systemBars.setAppearance('light', 'status');
226
241
  const permission = await camera.requestPermission();
227
242
  if (permission.state === 'granted') {
228
243
  const capture = await camera.takePhoto();
@@ -239,6 +254,12 @@ edit Swift/Kotlin, or maintain native bootstrap code. Type-only imports and test
239
254
  sources do not provision plugins. `absolute mobile doctor release` rejects a
240
255
  missing or mismatched plugin before release.
241
256
 
257
+ `keyboard` provides portable visibility, CSS-pixel height, dismissal, and
258
+ cleanup-safe change events. `systemBars` controls modern edge-to-edge status and
259
+ navigation bar foreground appearance/visibility through Capacitor 8 core. Its
260
+ `light` and `dark` values name the icon/text foreground. Web appearance uses
261
+ best-effort `color-scheme`; browser chrome visibility reports unsupported.
262
+
242
263
  Camera capture requires an explicit `camera.requestPermission()` call from an
243
264
  intentional user action. `photos.pick()` uses the item-scoped system picker
244
265
  without requesting broad library access. AbsoluteJS generates the required iOS
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-jfa0IP/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-09Sxpi/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  var __require = import.meta.require;
3
3
 
4
- // .angular-partial-tmp-jfa0IP/src/core/streamingSlotRegistrar.ts
4
+ // .angular-partial-tmp-09Sxpi/src/core/streamingSlotRegistrar.ts
5
5
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
6
6
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
7
7
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -48,7 +48,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
48
48
  getWarningController()?.maybeWarn(primitiveName);
49
49
  };
50
50
 
51
- // .angular-partial-tmp-jfa0IP/src/core/streamingSlotRegistry.ts
51
+ // .angular-partial-tmp-09Sxpi/src/core/streamingSlotRegistry.ts
52
52
  var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
53
53
  var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
54
54
  var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
package/dist/build.js CHANGED
@@ -12918,15 +12918,23 @@ var DEVICES_PACKAGE = "@absolutejs/devices", CAPACITOR_ADAPTER = "@absolutejs/de
12918
12918
  return;
12919
12919
  if (!object(value))
12920
12920
  throw new TypeError(`${field} must be an object.`);
12921
- const { privacyAccessedApis, pushNotifications, usageDescriptions } = value;
12921
+ const {
12922
+ privacyAccessedApis,
12923
+ pushNotifications,
12924
+ systemBars,
12925
+ usageDescriptions
12926
+ } = value;
12922
12927
  if (pushNotifications !== undefined && pushNotifications !== true)
12923
12928
  throw new TypeError(`${field}.pushNotifications must be true.`);
12929
+ if (systemBars !== undefined && systemBars !== true)
12930
+ throw new TypeError(`${field}.systemBars must be true.`);
12924
12931
  if (usageDescriptions !== undefined && (!Array.isArray(usageDescriptions) || !usageDescriptions.every((purpose) => typeof purpose === "string" && IOS_USAGE_DESCRIPTIONS.has(purpose))))
12925
12932
  throw new TypeError(`${field}.usageDescriptions contains an unsupported purpose.`);
12926
12933
  const privacy = iosPrivacyAccessedApis(privacyAccessedApis, `${field}.privacyAccessedApis`);
12927
12934
  return {
12928
12935
  ...privacy === undefined ? {} : { privacyAccessedApis: privacy },
12929
12936
  ...pushNotifications === true ? { pushNotifications: true } : {},
12937
+ ...systemBars === true ? { systemBars: true } : {},
12930
12938
  ...usageDescriptions === undefined ? {} : { usageDescriptions: [...usageDescriptions] }
12931
12939
  };
12932
12940
  }, parseProvider = (name, value) => {
@@ -12983,6 +12991,7 @@ var DEVICES_PACKAGE = "@absolutejs/devices", CAPACITOR_ADAPTER = "@absolutejs/de
12983
12991
  return reasons ? [{ api, reasons: [...reasons].sort() }] : [];
12984
12992
  }),
12985
12993
  iosPushNotifications: plan.capabilities.some((name) => plan.providers[name]?.native?.ios?.pushNotifications === true),
12994
+ iosSystemBars: plan.capabilities.some((name) => plan.providers[name]?.native?.ios?.systemBars === true),
12986
12995
  iosUsageDescriptions: [
12987
12996
  ...new Set(plan.capabilities.flatMap((name) => plan.providers[name]?.native?.ios?.usageDescriptions ?? []))
12988
12997
  ].sort()
@@ -30345,5 +30354,5 @@ export {
30345
30354
  build
30346
30355
  };
30347
30356
 
30348
- //# debugId=B7EE620A40DC66B764756E2164756E21
30357
+ //# debugId=848758E94D48A6EE64756E2164756E21
30349
30358
  //# sourceMappingURL=build.js.map