@xoroh/axis 0.1.0 → 0.1.2

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
@@ -1,69 +1,89 @@
1
1
  # `@xoroh/axis`
2
2
 
3
- Design-system-neutral, native-first behavior and interaction primitives
4
- for React Native — the counterpart of Base UI for native. Composable
5
- state models, hooks, and unstyled rendered components with no token
6
- reads, no styling, and no web-only APIs.
3
+ Unstyled, accessible UI components and native interaction primitives for React Native.
7
4
 
8
- Axis is independent and standalone: it never depends on Kern, Kern
9
- tokens, or any design system, and it is usable without Kern.
10
- Design-system variants (Material, Astryx, …) live in the consuming
11
- system, never here.
5
+ Axis provides composable state models, hooks, and unstyled rendered components with complete control over styling, full accessibility support, and native-first behavior — with zero CSS assumptions, no design system opinions, and no web-only API leaks.
12
6
 
13
- ## Install
7
+ - **Unstyled & headless:** You have 100% control over layout, styling, and design system integration.
8
+ - **Native-first accessibility:** Built specifically around React Native's accessibility model (`aria-*`, roles, focus order, announcements).
9
+ - **Separation of concerns:** Pure state models live in `@xoroh/axis/models` (pure TypeScript/JS, no React Native runtime dependency). Rendered components live in `@xoroh/axis`.
14
10
 
15
- ```sh
16
- bun add @xoroh/axis react react-native
17
- ```
11
+ ## Scope and independence
12
+
13
+ Axis is standalone and design-system neutral: it contains no hardcoded tokens, themes, or styling rules. Any design system or visual theme can be built on top of Axis primitives.
18
14
 
19
- Nothing is published yet (version `0.0.0`; releases are owner-gated
20
- — see [`docs/RELEASING.md`](https://github.com/xoroh/axis/blob/main/docs/RELEASING.md)).
21
- Until the first release, install from source with the same
22
- pack-vendor flow Kern uses to vendor Axis:
15
+ ## Install
23
16
 
24
17
  ```sh
25
- git clone https://github.com/xoroh/axis.git && cd axis
26
- bun install --frozen-lockfile
27
- node scripts/pack-vendor.mjs --out /tmp/axis-vendor
28
- # prints /tmp/axis-vendor/axis-<short-sha>.tgz + sha512 — add it
29
- # in your app: bun add /tmp/axis-vendor/axis-<short-sha>.tgz
18
+ bun add @xoroh/axis react react-native
19
+ # or
20
+ npm install @xoroh/axis react react-native
21
+ # or
22
+ yarn add @xoroh/axis react react-native # Yarn Classic does not install peer dependencies automatically
30
23
  ```
31
24
 
32
- Peers: `react >= 18`; rendered components additionally need
33
- `react-native >=0.86 <0.89` (D-STACK support policy). The behavior
34
- modules (`useControllableState`, `normalizeTimeValue`, …) are pure
35
- React and run anywhere React runs.
25
+ Peers: `react >= 18`; rendered components additionally need `react-native >=0.86 <0.89`. State models and behavior modules under `@xoroh/axis/models` are pure JavaScript and run anywhere React/Node/Web runs.
36
26
 
37
27
  ## Usage
38
28
 
39
29
  ```tsx
40
30
  import { useState } from "react";
41
- import { Text } from "react-native";
42
- import { DialogRoot, DialogTrigger, DialogPortal, DialogPopup } from "@xoroh/axis";
31
+ import { Text, StyleSheet } from "react-native";
32
+ import {
33
+ DialogRoot,
34
+ DialogTrigger,
35
+ DialogPortal,
36
+ DialogPopup,
37
+ DialogBackdrop,
38
+ DialogTitle,
39
+ DialogDescription,
40
+ DialogClose,
41
+ } from "@xoroh/axis";
42
+
43
+ export function ExampleDialog() {
44
+ const [open, setOpen] = useState(false);
43
45
 
44
- function Example() {
45
46
  return (
46
- <DialogRoot>
47
- <DialogTrigger>
48
- <Text>Open</Text>
47
+ <DialogRoot open={open} onOpenChange={setOpen}>
48
+ <DialogTrigger style={styles.button}>
49
+ <Text style={styles.buttonText}>Open Dialog</Text>
49
50
  </DialogTrigger>
50
51
  <DialogPortal>
51
- <DialogPopup aria-label="Example dialog">
52
- <Text>Hello</Text>
52
+ <DialogBackdrop style={styles.backdrop} />
53
+ <DialogPopup style={styles.popup} aria-label="Example dialog">
54
+ <DialogTitle style={styles.title}>Edit profile</DialogTitle>
55
+ <DialogDescription style={styles.description}>
56
+ Make changes to your profile here. Click save when you're done.
57
+ </DialogDescription>
58
+ <DialogClose style={styles.closeButton}>
59
+ <Text>Done</Text>
60
+ </DialogClose>
53
61
  </DialogPopup>
54
62
  </DialogPortal>
55
63
  </DialogRoot>
56
64
  );
57
65
  }
66
+
67
+ const styles = StyleSheet.create({
68
+ button: { padding: 12, borderRadius: 8, backgroundColor: "#007AFF" },
69
+ buttonText: { color: "#FFF", fontWeight: "600" },
70
+ backdrop: { ...StyleSheet.absoluteFillObject, backgroundColor: "rgba(0,0,0,0.5)" },
71
+ popup: { margin: 24, padding: 24, borderRadius: 12, backgroundColor: "#FFF" },
72
+ title: { fontSize: 18, fontWeight: "700", marginBottom: 8 },
73
+ description: { fontSize: 14, color: "#666", marginBottom: 16 },
74
+ closeButton: { alignSelf: "flex-end", padding: 8 },
75
+ });
58
76
  ```
59
77
 
60
- Only the documented public entry (`.`) is supported. Deep imports are
61
- not part of the contract.
78
+ For Node.js environments or tests outside React Native view trees:
79
+
80
+ ```ts
81
+ import { createToastQueue, normalizeTimeValue } from "@xoroh/axis/models";
82
+ ```
62
83
 
63
84
  ## Components
64
85
 
65
- Per-component notes (props, examples, accessibility) live in
66
- [`docs/components/`](https://github.com/xoroh/axis/tree/main/docs/components):
86
+ The package provides 43 native component primitives:
67
87
 
68
88
  <!-- index:begin -->
69
89
  | [Accordion](https://github.com/xoroh/axis/blob/main/docs/components/accordion.md) |
@@ -113,23 +133,13 @@ Per-component notes (props, examples, accessibility) live in
113
133
 
114
134
  ## Docs
115
135
 
116
- - [`docs/COMPONENT_CONTRACT.md`](https://github.com/xoroh/axis/blob/main/docs/COMPONENT_CONTRACT.md) —
117
- what a component is, and the rules every slice follows.
118
- - [`docs/BASE_UI_PARITY.md`](https://github.com/xoroh/axis/blob/main/docs/BASE_UI_PARITY.md) —
119
- per-component Base UI parity with documented native deviations.
120
- - [`docs/COVERAGE.md`](https://github.com/xoroh/axis/blob/main/docs/COVERAGE.md) —
121
- the component coverage inventory.
122
- - [`docs/COMPATIBILITY.md`](https://github.com/xoroh/axis/blob/main/docs/COMPATIBILITY.md) —
123
- what the supported ranges rest on, honestly labeled.
124
- - [`docs/RELEASING.md`](https://github.com/xoroh/axis/blob/main/docs/RELEASING.md) —
125
- manual releases only; nothing is published yet.
136
+ - [`docs/VISION.md`](https://github.com/xoroh/axis/blob/main/docs/VISION.md) — north star, design principles, non-goals, quality bar.
137
+ - [`docs/COMPONENT_CONTRACT.md`](https://github.com/xoroh/axis/blob/main/docs/COMPONENT_CONTRACT.md) — slice rules and component invariants.
138
+ - [`docs/BASE_UI_PARITY.md`](https://github.com/xoroh/axis/blob/main/docs/BASE_UI_PARITY.md) — Base UI parity mapping and native adaptations.
139
+ - [`docs/COVERAGE.md`](https://github.com/xoroh/axis/blob/main/docs/COVERAGE.md) — full component matrix across all 43 components.
126
140
 
127
141
  ## Compatibility
128
142
 
129
- - Declared supported: `react-native >=0.86 <0.89`, React 19, Expo 57
130
- host (peer ranges + D-STACK).
131
- - Exercised by automation: jest + RN preset; shipped-artifact bundle
132
- export on the Expo 57 host. Untested versions inside the range are
133
- untested — the range is policy, not proof.
134
- - Not performed: emulator, simulator, physical-device, or
135
- screen-reader validation.
143
+ - React >= 18
144
+ - React Native >= 0.86 < 0.89 (New Architecture / bridgeless compatible)
145
+ - Works seamlessly across iOS, Android, and React Native Web.
@@ -902,7 +902,7 @@ function createPortalRegistry() {
902
902
  };
903
903
  }
904
904
  function resolvePortalTarget(options) {
905
- return options.ownerProvided ?? options.defaultTarget ?? "kern-portal-root";
905
+ return options.ownerProvided ?? options.defaultTarget ?? "axis-portal-root";
906
906
  }
907
907
 
908
908
  // src/positioning.ts
package/dist/index.cjs CHANGED
@@ -1520,7 +1520,7 @@ function createPortalRegistry() {
1520
1520
  };
1521
1521
  }
1522
1522
  function resolvePortalTarget(options) {
1523
- return options.ownerProvided ?? options.defaultTarget ?? "kern-portal-root";
1523
+ return options.ownerProvided ?? options.defaultTarget ?? "axis-portal-root";
1524
1524
  }
1525
1525
 
1526
1526
  // src/components/Portal.tsx
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RenderProp, S as SlotProps, a as StateStyle, O as OverlayOpenChangeDetails, A as Align, P as Placement, F as FieldErrors, b as OverlayId, D as DismissBranches, c as OverlayOpenChangeReason, d as PresenceState, e as OverlayModalityRegistry, f as SliderOrientation } from './models-DM_HxYGZ.cjs';
2
- export { g as A11yDir, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, U as OverlayModalityState, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, a9 as StateAction, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-DM_HxYGZ.cjs';
1
+ import { R as RenderProp, S as SlotProps, a as StateStyle, O as OverlayOpenChangeDetails, A as Align, P as Placement, F as FieldErrors, b as OverlayId, D as DismissBranches, c as OverlayOpenChangeReason, d as PresenceState, e as OverlayModalityRegistry, f as SliderOrientation } from './models-yZXqW4Ev.cjs';
2
+ export { g as A11yDir, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, U as OverlayModalityState, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, a9 as StateAction, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-yZXqW4Ev.cjs';
3
3
  import { ReactNode, Ref, ElementRef, RefObject } from 'react';
4
4
  import { StyleProp, ViewStyle, View, TextStyle, ImageSourcePropType, ImageStyle, Image, Pressable, TextInput, Text } from 'react-native';
5
5
 
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { R as RenderProp, S as SlotProps, a as StateStyle, O as OverlayOpenChangeDetails, A as Align, P as Placement, F as FieldErrors, b as OverlayId, D as DismissBranches, c as OverlayOpenChangeReason, d as PresenceState, e as OverlayModalityRegistry, f as SliderOrientation } from './models-DM_HxYGZ.js';
2
- export { g as A11yDir, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, U as OverlayModalityState, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, a9 as StateAction, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-DM_HxYGZ.js';
1
+ import { R as RenderProp, S as SlotProps, a as StateStyle, O as OverlayOpenChangeDetails, A as Align, P as Placement, F as FieldErrors, b as OverlayId, D as DismissBranches, c as OverlayOpenChangeReason, d as PresenceState, e as OverlayModalityRegistry, f as SliderOrientation } from './models-yZXqW4Ev.js';
2
+ export { g as A11yDir, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, U as OverlayModalityState, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, a9 as StateAction, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-yZXqW4Ev.js';
3
3
  import { ReactNode, Ref, ElementRef, RefObject } from 'react';
4
4
  import { StyleProp, ViewStyle, View, TextStyle, ImageSourcePropType, ImageStyle, Image, Pressable, TextInput, Text } from 'react-native';
5
5
 
package/dist/index.js CHANGED
@@ -104,7 +104,7 @@ import {
104
104
  useStickToBottom,
105
105
  useToolCall,
106
106
  validateAttachment
107
- } from "./chunk-QDT5F2VT.js";
107
+ } from "./chunk-V5CVLWU2.js";
108
108
 
109
109
  // src/components/Accordion.tsx
110
110
  import {
@@ -61,7 +61,7 @@ declare function resolveDir(options?: {
61
61
  * surfaces. The PICKING and the UPLOAD are not — image pickers,
62
62
  * drag-drop, paste, and the async transfer are platform code the app
63
63
  * owns; the app marks uploads finished through `update`. Rendering
64
- * (chips, previews, progress bars) is styled composition in Kern.
64
+ * (chips, previews, progress bars) is styled composition in the host design system.
65
65
  */
66
66
  /**
67
67
  * One file's transfer phase, mirroring the channel-SDK shape both
@@ -354,7 +354,7 @@ declare function useBranch(options: {
354
354
  * The SHAPE and the NAME are shared: the role vocabulary, the message
355
355
  * identity, and the speaker label both renderers announce. The LAYOUT
356
356
  * is not — bubbles, rows, grouping, and markdown rendering are styled
357
- * composition in Kern (there is no markdown renderer here by design:
357
+ * composition in the host design system (there is no markdown renderer here by design:
358
358
  * renderer/highlighter dependencies would break the token-free,
359
359
  * platform-neutral boundary). Message PARTS (text/image/reasoning/
360
360
  * tool-call part trees) are transport-owned and stay out: this model
@@ -403,7 +403,7 @@ declare function isUserMessage(message: Pick<ChatMessage, "role">): boolean;
403
403
  * references: an `href` with an optional human title. The shared part
404
404
  * is deliberately thin — a shape plus list hygiene — because
405
405
  * everything visual (chips, cards, footnotes, inline citations) is
406
- * styled composition in Kern. Thin is not nothing: without the shared
406
+ * styled composition in the host design system. Thin is not nothing: without the shared
407
407
  * dedupe rule, the same URL cited twice renders two chips on one
408
408
  * renderer and one on the other.
409
409
  *
@@ -999,7 +999,7 @@ declare function nearestSliderThumbIndex(values: readonly number[], target: numb
999
999
  declare function resolveSliderCommit(values: readonly number[], index: number, next: number, options: SliderCommitOptions): number[];
1000
1000
 
1001
1001
  /**
1002
- * The dismissal POLICY for a kern surface — what closes it, and whether a
1002
+ * The dismissal POLICY for an overlay surface — what closes it, and whether a
1003
1003
  * visible close affordance must be rendered.
1004
1004
  *
1005
1005
  * ## Why this is a primitive
@@ -1184,7 +1184,7 @@ declare function stepNumberValue(value: number, direction: 1 | -1, options?: {
1184
1184
  }): number;
1185
1185
 
1186
1186
  /**
1187
- * The owned Portal registry — kern's own overlay host, alongside Base UI.
1187
+ * The owned Portal registry — Axis's own overlay host, alongside Base UI.
1188
1188
  *
1189
1189
  * ## Why this is a primitive, and why it does NOT replace Base UI on web
1190
1190
  *
@@ -1192,8 +1192,8 @@ declare function stepNumberValue(value: number, direction: 1 | -1, options?: {
1192
1192
  * parent: that "somewhere else" needs an owner (ordering, mount/unmount,
1193
1193
  * cleanup on unmount). Today the web renderer borrows that owner from Base UI's
1194
1194
  * `Portal` and native borrows it from `Modal`. D12 rules the extraction as
1195
- * DUAL-PATH: kern gains its OWN portal registry that both renderers can host
1196
- * through, while web KEEPS its Base UI usage. Removing the borrowed owner
1195
+ * DUAL-PATH: native hosts its overlay stack through the OWN registry here,
1196
+ * while web KEEPS its Base UI usage. Removing the borrowed owner
1197
1197
  * before the owned one is proven would strand every overlay on a host nobody
1198
1198
  * exercises; adding alongside lets the owned path prove itself per surface.
1199
1199
  *
@@ -1299,7 +1299,7 @@ declare function usePress(options?: {
1299
1299
  * `submitMode`, Escape cancellation, and the clamped composer height.
1300
1300
  * The FIELD is not — the text host, autosize measurement, focus, and
1301
1301
  * the model-picker / tools-menu / mic chrome are styled composition
1302
- * in Kern. Sending itself stays app-owned: `submit` reports the draft
1302
+ * in the host design system. Sending itself stays app-owned: `submit` reports the draft
1303
1303
  * through `onSubmit` and leaves clearing to the caller, so controlled
1304
1304
  * and uncontrolled drafts behave identically.
1305
1305
  */
@@ -1399,7 +1399,7 @@ declare function usePromptInput(options?: {
1399
1399
  * once settled. A one-line resolver expresses that; a new primitive
1400
1400
  * would duplicate `Collapsible` to own a single conditional.
1401
1401
  *
1402
- * ## How Kern wires it
1402
+ * ## How a host wires it
1403
1403
  *
1404
1404
  * `open={resolveReasoningOpen(callerOpen, status)}` on the
1405
1405
  * `Collapsible`, with the caller's toggle feeding back through
@@ -1495,14 +1495,14 @@ type RovingModel = {
1495
1495
  declare function useRovingModel(options: RovingOptions): RovingModel;
1496
1496
 
1497
1497
  /**
1498
- * The collection/selection model shared by every Kern control that selects.
1498
+ * The collection/selection model shared by every collection-driven control that selects.
1499
1499
  *
1500
1500
  * ## Why this is a primitive
1501
1501
  *
1502
1502
  * SegmentedButton, ToggleGroup, Accordion and Select all reduce to the same two
1503
1503
  * questions: is this key selected, and what happens when it is activated. The
1504
1504
  * answer differs in exactly one way — whether selection is exclusive or additive
1505
- * — and that difference is a Kern decision (M3's segmented button is multi-select;
1505
+ * — and that difference is a design decision (for example, one system's segmented button is multi-select;
1506
1506
  * its radio group is not), not a platform detail.
1507
1507
  *
1508
1508
  * So the model is shared and the rendering is not. On web the selection axis is
@@ -1782,7 +1782,7 @@ declare function createToastQueue(): ToastQueue;
1782
1782
  * as denied). The REGISTRY is not — which tools exist and how they
1783
1783
  * execute is app state; this model tracks one call the transport
1784
1784
  * owns, never the catalogue. Rendering (header/content/input/output
1785
- * cards) is styled composition in Kern.
1785
+ * cards) is styled composition in the host design system.
1786
1786
  */
1787
1787
  /**
1788
1788
  * One tool call's lifecycle, mirroring the AI SDK v5 `ToolUIPart`
@@ -1848,7 +1848,7 @@ declare function useToolCall(options?: {
1848
1848
  * cycling with wrap-around. The KEY PLUMBING is not — no Axis list
1849
1849
  * part receives character key events on touch hardware (there is no
1850
1850
  * text field to type into), so no rendered part consumes this yet:
1851
- * the first consumer is hardware-keyboard forwarding (Kern P1),
1851
+ * the first consumer is hardware-keyboard forwarding,
1852
1852
  * which reads this model without pulling any renderer. Filtering
1853
1853
  * while typing (combobox entry, menu filter input) already flows
1854
1854
  * through the `collection` match; this covers highlight-to-match,
@@ -61,7 +61,7 @@ declare function resolveDir(options?: {
61
61
  * surfaces. The PICKING and the UPLOAD are not — image pickers,
62
62
  * drag-drop, paste, and the async transfer are platform code the app
63
63
  * owns; the app marks uploads finished through `update`. Rendering
64
- * (chips, previews, progress bars) is styled composition in Kern.
64
+ * (chips, previews, progress bars) is styled composition in the host design system.
65
65
  */
66
66
  /**
67
67
  * One file's transfer phase, mirroring the channel-SDK shape both
@@ -354,7 +354,7 @@ declare function useBranch(options: {
354
354
  * The SHAPE and the NAME are shared: the role vocabulary, the message
355
355
  * identity, and the speaker label both renderers announce. The LAYOUT
356
356
  * is not — bubbles, rows, grouping, and markdown rendering are styled
357
- * composition in Kern (there is no markdown renderer here by design:
357
+ * composition in the host design system (there is no markdown renderer here by design:
358
358
  * renderer/highlighter dependencies would break the token-free,
359
359
  * platform-neutral boundary). Message PARTS (text/image/reasoning/
360
360
  * tool-call part trees) are transport-owned and stay out: this model
@@ -403,7 +403,7 @@ declare function isUserMessage(message: Pick<ChatMessage, "role">): boolean;
403
403
  * references: an `href` with an optional human title. The shared part
404
404
  * is deliberately thin — a shape plus list hygiene — because
405
405
  * everything visual (chips, cards, footnotes, inline citations) is
406
- * styled composition in Kern. Thin is not nothing: without the shared
406
+ * styled composition in the host design system. Thin is not nothing: without the shared
407
407
  * dedupe rule, the same URL cited twice renders two chips on one
408
408
  * renderer and one on the other.
409
409
  *
@@ -999,7 +999,7 @@ declare function nearestSliderThumbIndex(values: readonly number[], target: numb
999
999
  declare function resolveSliderCommit(values: readonly number[], index: number, next: number, options: SliderCommitOptions): number[];
1000
1000
 
1001
1001
  /**
1002
- * The dismissal POLICY for a kern surface — what closes it, and whether a
1002
+ * The dismissal POLICY for an overlay surface — what closes it, and whether a
1003
1003
  * visible close affordance must be rendered.
1004
1004
  *
1005
1005
  * ## Why this is a primitive
@@ -1184,7 +1184,7 @@ declare function stepNumberValue(value: number, direction: 1 | -1, options?: {
1184
1184
  }): number;
1185
1185
 
1186
1186
  /**
1187
- * The owned Portal registry — kern's own overlay host, alongside Base UI.
1187
+ * The owned Portal registry — Axis's own overlay host, alongside Base UI.
1188
1188
  *
1189
1189
  * ## Why this is a primitive, and why it does NOT replace Base UI on web
1190
1190
  *
@@ -1192,8 +1192,8 @@ declare function stepNumberValue(value: number, direction: 1 | -1, options?: {
1192
1192
  * parent: that "somewhere else" needs an owner (ordering, mount/unmount,
1193
1193
  * cleanup on unmount). Today the web renderer borrows that owner from Base UI's
1194
1194
  * `Portal` and native borrows it from `Modal`. D12 rules the extraction as
1195
- * DUAL-PATH: kern gains its OWN portal registry that both renderers can host
1196
- * through, while web KEEPS its Base UI usage. Removing the borrowed owner
1195
+ * DUAL-PATH: native hosts its overlay stack through the OWN registry here,
1196
+ * while web KEEPS its Base UI usage. Removing the borrowed owner
1197
1197
  * before the owned one is proven would strand every overlay on a host nobody
1198
1198
  * exercises; adding alongside lets the owned path prove itself per surface.
1199
1199
  *
@@ -1299,7 +1299,7 @@ declare function usePress(options?: {
1299
1299
  * `submitMode`, Escape cancellation, and the clamped composer height.
1300
1300
  * The FIELD is not — the text host, autosize measurement, focus, and
1301
1301
  * the model-picker / tools-menu / mic chrome are styled composition
1302
- * in Kern. Sending itself stays app-owned: `submit` reports the draft
1302
+ * in the host design system. Sending itself stays app-owned: `submit` reports the draft
1303
1303
  * through `onSubmit` and leaves clearing to the caller, so controlled
1304
1304
  * and uncontrolled drafts behave identically.
1305
1305
  */
@@ -1399,7 +1399,7 @@ declare function usePromptInput(options?: {
1399
1399
  * once settled. A one-line resolver expresses that; a new primitive
1400
1400
  * would duplicate `Collapsible` to own a single conditional.
1401
1401
  *
1402
- * ## How Kern wires it
1402
+ * ## How a host wires it
1403
1403
  *
1404
1404
  * `open={resolveReasoningOpen(callerOpen, status)}` on the
1405
1405
  * `Collapsible`, with the caller's toggle feeding back through
@@ -1495,14 +1495,14 @@ type RovingModel = {
1495
1495
  declare function useRovingModel(options: RovingOptions): RovingModel;
1496
1496
 
1497
1497
  /**
1498
- * The collection/selection model shared by every Kern control that selects.
1498
+ * The collection/selection model shared by every collection-driven control that selects.
1499
1499
  *
1500
1500
  * ## Why this is a primitive
1501
1501
  *
1502
1502
  * SegmentedButton, ToggleGroup, Accordion and Select all reduce to the same two
1503
1503
  * questions: is this key selected, and what happens when it is activated. The
1504
1504
  * answer differs in exactly one way — whether selection is exclusive or additive
1505
- * — and that difference is a Kern decision (M3's segmented button is multi-select;
1505
+ * — and that difference is a design decision (for example, one system's segmented button is multi-select;
1506
1506
  * its radio group is not), not a platform detail.
1507
1507
  *
1508
1508
  * So the model is shared and the rendering is not. On web the selection axis is
@@ -1782,7 +1782,7 @@ declare function createToastQueue(): ToastQueue;
1782
1782
  * as denied). The REGISTRY is not — which tools exist and how they
1783
1783
  * execute is app state; this model tracks one call the transport
1784
1784
  * owns, never the catalogue. Rendering (header/content/input/output
1785
- * cards) is styled composition in Kern.
1785
+ * cards) is styled composition in the host design system.
1786
1786
  */
1787
1787
  /**
1788
1788
  * One tool call's lifecycle, mirroring the AI SDK v5 `ToolUIPart`
@@ -1848,7 +1848,7 @@ declare function useToolCall(options?: {
1848
1848
  * cycling with wrap-around. The KEY PLUMBING is not — no Axis list
1849
1849
  * part receives character key events on touch hardware (there is no
1850
1850
  * text field to type into), so no rendered part consumes this yet:
1851
- * the first consumer is hardware-keyboard forwarding (Kern P1),
1851
+ * the first consumer is hardware-keyboard forwarding,
1852
1852
  * which reads this model without pulling any renderer. Filtering
1853
1853
  * while typing (combobox entry, menu filter input) already flows
1854
1854
  * through the `collection` match; this covers highlight-to-match,
package/dist/models.cjs CHANGED
@@ -1013,7 +1013,7 @@ function createPortalRegistry() {
1013
1013
  };
1014
1014
  }
1015
1015
  function resolvePortalTarget(options) {
1016
- return options.ownerProvided ?? options.defaultTarget ?? "kern-portal-root";
1016
+ return options.ownerProvided ?? options.defaultTarget ?? "axis-portal-root";
1017
1017
  }
1018
1018
 
1019
1019
  // src/positioning.ts
package/dist/models.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- export { g as A11yDir, A as Align, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, D as DismissBranches, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, F as FieldErrors, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, b as OverlayId, e as OverlayModalityRegistry, U as OverlayModalityState, P as Placement, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, d as PresenceState, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, R as RenderProp, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, f as SliderOrientation, S as SlotProps, a9 as StateAction, a as StateStyle, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-DM_HxYGZ.cjs';
1
+ export { g as A11yDir, A as Align, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, D as DismissBranches, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, F as FieldErrors, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, b as OverlayId, e as OverlayModalityRegistry, U as OverlayModalityState, P as Placement, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, d as PresenceState, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, R as RenderProp, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, f as SliderOrientation, S as SlotProps, a9 as StateAction, a as StateStyle, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-yZXqW4Ev.cjs';
2
2
  import 'react';
package/dist/models.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { g as A11yDir, A as Align, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, D as DismissBranches, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, F as FieldErrors, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, b as OverlayId, e as OverlayModalityRegistry, U as OverlayModalityState, P as Placement, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, d as PresenceState, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, R as RenderProp, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, f as SliderOrientation, S as SlotProps, a9 as StateAction, a as StateStyle, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-DM_HxYGZ.js';
1
+ export { g as A11yDir, A as Align, h as AttachmentError, i as AttachmentLimits, j as AttachmentState, k as AutofocusEvent, C as CalendarCell, l as CalendarDateParts, m as CalendarDirection, n as CalendarGrid, o as CalendarGridOptions, p as CalendarKey, q as CalendarMonthNameStyle, r as CalendarMonthParts, s as CalendarRange, t as CalendarRangePosition, u as CalendarSelection, v as CalendarSelectionMode, w as ChatAttachment, x as ChatMessage, y as ChatRole, z as ChatSource, B as ChatStatus, E as CollectionItem, G as CollectionMatch, D as DismissBranches, H as DismissPolicy, I as DismissPolicyOptions, J as DismissSource, K as DismissTriggers, L as DismissWiringOptions, F as FieldErrors, M as FirstDayOfWeek, N as FocusTrapModel, Q as IdScope, T as NumberFormatSpec, b as OverlayId, e as OverlayModalityRegistry, U as OverlayModalityState, P as Placement, V as PortalEntry, W as PortalRegistry, X as PositioningOptions, Y as PresenceModel, d as PresenceState, Z as PressModel, _ as PressPhase, $ as PromptInputSubmitMode, a0 as Rect, R as RenderProp, a1 as RovingItem, a2 as RovingModel, a3 as RovingOptions, a4 as RovingOrientation, a5 as Selection, a6 as SelectionKey, a7 as SelectionMode, a8 as SliderCommitOptions, f as SliderOrientation, S as SlotProps, a9 as StateAction, a as StateStyle, aa as StickToBottomMetrics, ab as TimeParts, ac as TimePickerFormat, ad as TimePickerValue, ae as ToastQueue, af as ToolCallState, ag as TrapMove, ah as TypeaheadBuffer, ai as addTimeMinutes, aj as appendTypeaheadQuery, ak as buildCalendarGrid, al as clampNumberValue, am as clampSliderValue, an as composeEventHandlers, ao as createDismissPolicy, ap as createIdScope, aq as createOverlayModality, ar as createPortalRegistry, as as createPresenceModel, at as createToastQueue, au as daysInCalendarMonth, av as defaultCollectionMatch, aw as dismissBranchesFor, ax as dismissTriggersFor, ay as filterCollectionKeys, az as findCollectionText, aA as formatNumberValue, aB as formatTimeParts, aC as formatTimeValue, aD as getSharedOverlayModality, aE as isAtBottom, aF as isCalendarDateDisabled, aG as isChatBusy, aH as isChatError, aI as isChatStreaming, aJ as isEmptyValue, aK as isSelected, aL as isToolCallApproval, aM as isToolCallComplete, aN as isToolCallError, aO as isToolCallRunning, aP as isTypeaheadExpired, aQ as isUserMessage, aR as leadingBlankCount, aS as matchTypeaheadKey, aT as mergeFormErrors, aU as mergeSlotProps, aV as minutesForStep, aW as nearestSliderThumbIndex, aX as nextBranchIndex, aY as nextPresenceState, aZ as nextTrapIndex, a_ as normalizeBranchIndex, a$ as normalizeChatSources, b0 as normalizeFieldErrors, b1 as normalizeSelection, b2 as normalizeSliderValues, b3 as normalizeTimeValue, b4 as parseCalendarDate, b5 as parseCalendarMonth, b6 as parseNumberValue, b7 as previousBranchIndex, b8 as resolveAutofocus, b9 as resolveCalendarFocus, ba as resolveCalendarMonthNames, bb as resolveCalendarSelection, bc as resolveCalendarWeekdayNames, bd as resolveCanSend, be as resolveChatMessageLabel, bf as resolveChatMessageSpeaker, bg as resolveChatSourceLabel, bh as resolveComposerHeight, bi as resolveDir, bj as resolveFloatingRect, bk as resolveFloatingSide, bl as resolveLocaleFirstDay, bm as resolvePortalTarget, bn as resolveReasoningOpen, bo as resolveRender, bp as resolveScrollButtonVisible, bq as resolveSliderCommit, br as resolveStyle, bs as resolveToolCallLabel, bt as shiftCalendarMonth, bu as shouldCancelOnEscapeKey, bv as shouldDismissOn, bw as shouldHideBranchPicker, bx as shouldSubmitOnKey, by as sliderRatioFromLocation, bz as sliderValueFromRatio, bA as sliderValuePercent, bB as snapSliderValue, bC as stepNumberValue, bD as toCalendarDate, bE as toCalendarMonth, bF as toTwentyFourHour, bG as toggleSelection, bH as updateAttachment, bI as useAttachments, bJ as useBranch, bK as useCollectionRegistry, bL as useControllableState, bM as useOverlayModality, bN as useOverlayRegistration, bO as usePresence, bP as usePress, bQ as usePromptInput, bR as useRovingModel, bS as useSelection, bT as useStickToBottom, bU as useToolCall, bV as validateAttachment } from './models-yZXqW4Ev.js';
2
2
  import 'react';
package/dist/models.js CHANGED
@@ -103,7 +103,7 @@ import {
103
103
  useStickToBottom,
104
104
  useToolCall,
105
105
  validateAttachment
106
- } from "./chunk-QDT5F2VT.js";
106
+ } from "./chunk-V5CVLWU2.js";
107
107
  export {
108
108
  addTimeMinutes,
109
109
  appendTypeaheadQuery,
package/package.json CHANGED
@@ -1,12 +1,27 @@
1
1
  {
2
2
  "name": "@xoroh/axis",
3
- "version": "0.1.0",
4
- "description": "Design-system-neutral, native-first behavior and interaction primitives for React Native.",
3
+ "version": "0.1.2",
4
+ "description": "Unstyled, accessible UI components and native interaction primitives for React Native.",
5
5
  "keywords": [
6
6
  "react-native",
7
+ "reactjs",
8
+ "react-native-web",
7
9
  "primitives",
10
+ "unstyled",
11
+ "unstyled-components",
12
+ "headless",
8
13
  "accessibility",
9
- "unstyled"
14
+ "a11y",
15
+ "aria",
16
+ "ui-components",
17
+ "components",
18
+ "mobile",
19
+ "ios",
20
+ "android",
21
+ "cross-platform",
22
+ "design-system",
23
+ "base-ui",
24
+ "radix-ui"
10
25
  ],
11
26
  "license": "MIT",
12
27
  "author": "Xoroh",
@@ -15,7 +30,7 @@
15
30
  "url": "git+https://github.com/xoroh/axis.git",
16
31
  "directory": "packages/axis"
17
32
  },
18
- "homepage": "https://github.com/xoroh/axis",
33
+ "homepage": "https://axis.xoroh.org",
19
34
  "bugs": "https://github.com/xoroh/axis/issues",
20
35
  "engines": {
21
36
  "node": ">=20.19"
@@ -62,6 +77,7 @@
62
77
  "LICENSE"
63
78
  ],
64
79
  "scripts": {
80
+ "prepack": "bun run build",
65
81
  "build": "tsup src/index.ts src/models.ts --format esm,cjs --dts --dts-resolve --external react --external react-native --out-dir dist --clean",
66
82
  "typecheck": "tsc --noEmit",
67
83
  "test": "vitest run",