@bitbitpress/client 1.0.4 → 1.1.0-alpha.0

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 (57) hide show
  1. package/dist/react/index.d.ts +41 -0
  2. package/dist/react/index.d.ts.map +1 -0
  3. package/dist/react/index.js +68 -0
  4. package/dist/react/index.js.map +1 -0
  5. package/dist/react/primitives.d.ts +54 -0
  6. package/dist/react/primitives.d.ts.map +1 -0
  7. package/dist/react/primitives.js +223 -0
  8. package/dist/react/primitives.js.map +1 -0
  9. package/dist/react-native-expo/index.d.ts +42 -0
  10. package/dist/react-native-expo/index.d.ts.map +1 -0
  11. package/dist/react-native-expo/index.js +78 -0
  12. package/dist/react-native-expo/index.js.map +1 -0
  13. package/dist/react-native-expo/primitives.d.ts +58 -0
  14. package/dist/react-native-expo/primitives.d.ts.map +1 -0
  15. package/dist/react-native-expo/primitives.js +218 -0
  16. package/dist/react-native-expo/primitives.js.map +1 -0
  17. package/dist/synthesisView/context.d.ts +18 -0
  18. package/dist/synthesisView/context.d.ts.map +1 -0
  19. package/dist/synthesisView/context.js +15 -0
  20. package/dist/synthesisView/context.js.map +1 -0
  21. package/dist/synthesisView/createComponentMap.d.ts +18 -0
  22. package/dist/synthesisView/createComponentMap.d.ts.map +1 -0
  23. package/dist/synthesisView/createComponentMap.js +40 -0
  24. package/dist/synthesisView/createComponentMap.js.map +1 -0
  25. package/dist/synthesisView/engine.d.ts +35 -0
  26. package/dist/synthesisView/engine.d.ts.map +1 -0
  27. package/dist/synthesisView/engine.js +113 -0
  28. package/dist/synthesisView/engine.js.map +1 -0
  29. package/dist/synthesisView/primitives.d.ts +180 -0
  30. package/dist/synthesisView/primitives.d.ts.map +1 -0
  31. package/dist/synthesisView/primitives.js +29 -0
  32. package/dist/synthesisView/primitives.js.map +1 -0
  33. package/dist/synthesisView/resolve.d.ts +17 -0
  34. package/dist/synthesisView/resolve.d.ts.map +1 -0
  35. package/dist/synthesisView/resolve.js +42 -0
  36. package/dist/synthesisView/resolve.js.map +1 -0
  37. package/dist/synthesisView/types.d.ts +72 -0
  38. package/dist/synthesisView/types.d.ts.map +1 -0
  39. package/dist/synthesisView/types.js +2 -0
  40. package/dist/synthesisView/types.js.map +1 -0
  41. package/dist/synthesisView/useSynthesisView.d.ts +13 -0
  42. package/dist/synthesisView/useSynthesisView.d.ts.map +1 -0
  43. package/dist/synthesisView/useSynthesisView.js +49 -0
  44. package/dist/synthesisView/useSynthesisView.js.map +1 -0
  45. package/dist/user/index.d.ts +14 -1
  46. package/dist/user/index.d.ts.map +1 -1
  47. package/dist/user/index.js +6 -1
  48. package/dist/user/index.js.map +1 -1
  49. package/dist/user/synthesize-view-batch-manager.d.ts +17 -0
  50. package/dist/user/synthesize-view-batch-manager.d.ts.map +1 -0
  51. package/dist/user/synthesize-view-batch-manager.js +52 -0
  52. package/dist/user/synthesize-view-batch-manager.js.map +1 -0
  53. package/dist/user/synthesizeView.d.ts +41 -0
  54. package/dist/user/synthesizeView.d.ts.map +1 -0
  55. package/dist/user/synthesizeView.js +26 -0
  56. package/dist/user/synthesizeView.js.map +1 -0
  57. package/package.json +29 -5
@@ -0,0 +1,41 @@
1
+ import { type RenderUnknown, type SynthesisViewTreeProps } from '../synthesisView/engine.js';
2
+ import type { ComponentMap, ContentInput, SynthesisViewEvent, SynthesizeViewFetcher } from '../synthesisView/types.js';
3
+ export { type BitBitContextValue, BitBitProvider } from '../synthesisView/context.js';
4
+ export { createComponentMap, type GlobModules, type RequireContext, } from '../synthesisView/createComponentMap.js';
5
+ export type { ComponentMap, ContentInput, FlatUiKeyNameNode, FlatUiNode, FlatUiPrimitiveNode, SynthesisViewEvent, SynthesizeViewFetcher, ViewInputs, } from '../synthesisView/types.js';
6
+ export { bitBitBuiltins } from './primitives.js';
7
+ export type BitBitViewRendererProps = Omit<SynthesisViewTreeProps, 'renderUnknown' | 'defaultComponents'> & {
8
+ /** Override how unregistered components render. Defaults to a labeled marker. */
9
+ renderUnknown?: RenderUnknown;
10
+ };
11
+ /** Web renderer for a pre-fetched `uiData` array. BB built-in primitives are
12
+ * registered automatically; pass `components` to add or override entries by
13
+ * name. Use `<BitBitView>` if you want it to fetch for you. */
14
+ export declare function BitBitViewRenderer({ renderUnknown, ...rest }: BitBitViewRendererProps): import("react").FunctionComponentElement<SynthesisViewTreeProps>;
15
+ export type BitBitViewProps = {
16
+ /** A BitBitPressClient (or anything with `user.synthesizeViewItem`). */
17
+ client: SynthesizeViewFetcher;
18
+ keyName: string;
19
+ contentInputs?: ContentInput[];
20
+ components?: ComponentMap;
21
+ onEvent?: (event: SynthesisViewEvent) => void;
22
+ renderUnknown?: RenderUnknown;
23
+ /** Force a dark/light mode. Defaults to the browser's
24
+ * `prefers-color-scheme` (live-updates if the user toggles their OS
25
+ * theme). */
26
+ darkMode?: boolean;
27
+ };
28
+ /**
29
+ * Web view: fetches a synthesis view by `keyName` and renders it in place.
30
+ * Renders nothing while loading. Multiple `<BitBitView>` mounts within a
31
+ * short window are coalesced into a single batched request.
32
+ */
33
+ export declare function BitBitView({ client, keyName, contentInputs, components, onEvent, renderUnknown, darkMode, }: BitBitViewProps): import("react").DetailedReactHTMLElement<{
34
+ 'data-bitbit-error': boolean;
35
+ style: {
36
+ color: "#b00020";
37
+ fontFamily: "monospace";
38
+ fontSize: number;
39
+ };
40
+ }, HTMLElement> | import("react").FunctionComponentElement<BitBitViewRendererProps> | null;
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,KAAK,kBAAkB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAsBjD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACtB,eAAe,GAAG,mBAAmB,CACtC,GAAG;IACF,iFAAiF;IACjF,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAYF;;gEAEgE;AAChE,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,EAAE,uBAAuB,oEAMrF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,wEAAwE;IACxE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;kBAEc;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,OAAO,EACP,aAAa,EACb,UAAU,EACV,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,eAAe;;;;;;;2FAwBjB"}
@@ -0,0 +1,68 @@
1
+ import { createElement, useEffect, useState } from 'react';
2
+ import { SynthesisViewTree, } from '../synthesisView/engine.js';
3
+ import { useSynthesisView } from '../synthesisView/useSynthesisView.js';
4
+ import { bitBitBuiltins } from './primitives.js';
5
+ export { BitBitProvider } from '../synthesisView/context.js';
6
+ export { createComponentMap, } from '../synthesisView/createComponentMap.js';
7
+ export { bitBitBuiltins } from './primitives.js';
8
+ /** Track the browser's `prefers-color-scheme` and re-render on change. Returns
9
+ * `null` during SSR or when the API isn't available — callers fall back to
10
+ * the server's default. */
11
+ function useSystemDarkMode() {
12
+ const [isDark, setIsDark] = useState(() => {
13
+ if (typeof window === 'undefined' || !window.matchMedia)
14
+ return null;
15
+ return window.matchMedia('(prefers-color-scheme: dark)').matches;
16
+ });
17
+ useEffect(() => {
18
+ if (typeof window === 'undefined' || !window.matchMedia)
19
+ return;
20
+ const mq = window.matchMedia('(prefers-color-scheme: dark)');
21
+ const onChange = (e) => setIsDark(e.matches);
22
+ mq.addEventListener('change', onChange);
23
+ return () => mq.removeEventListener('change', onChange);
24
+ }, []);
25
+ return isDark;
26
+ }
27
+ const defaultRenderUnknown = (name) => createElement('span', {
28
+ 'data-bitbit-unknown': name,
29
+ style: { color: '#b00020', fontFamily: 'monospace', fontSize: 12 },
30
+ }, `⚠ Unknown component: ${name}`);
31
+ /** Web renderer for a pre-fetched `uiData` array. BB built-in primitives are
32
+ * registered automatically; pass `components` to add or override entries by
33
+ * name. Use `<BitBitView>` if you want it to fetch for you. */
34
+ export function BitBitViewRenderer({ renderUnknown, ...rest }) {
35
+ return createElement(SynthesisViewTree, {
36
+ ...rest,
37
+ defaultComponents: bitBitBuiltins,
38
+ renderUnknown: renderUnknown ?? defaultRenderUnknown,
39
+ });
40
+ }
41
+ /**
42
+ * Web view: fetches a synthesis view by `keyName` and renders it in place.
43
+ * Renders nothing while loading. Multiple `<BitBitView>` mounts within a
44
+ * short window are coalesced into a single batched request.
45
+ */
46
+ export function BitBitView({ client, keyName, contentInputs, components, onEvent, renderUnknown, darkMode, }) {
47
+ const systemDark = useSystemDarkMode();
48
+ const resolvedDark = darkMode ?? systemDark ?? undefined;
49
+ const viewInputs = resolvedDark !== undefined ? { darkMode: resolvedDark } : undefined;
50
+ const { uiData, loading, error } = useSynthesisView(client, keyName, contentInputs, viewInputs);
51
+ if (loading)
52
+ return null;
53
+ if (error) {
54
+ return createElement('div', {
55
+ 'data-bitbit-error': true,
56
+ style: { color: '#b00020', fontFamily: 'monospace', fontSize: 12 },
57
+ }, error);
58
+ }
59
+ if (!uiData.length)
60
+ return null;
61
+ return createElement(BitBitViewRenderer, {
62
+ uiData,
63
+ components,
64
+ onEvent,
65
+ renderUnknown,
66
+ });
67
+ }
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { type CSSProperties } from 'react';
2
+ import type { AudioProps, ButtonProps, CardProps, CheckboxProps, ChoicePickerProps, ColumnProps, DateTimeInputProps, DividerProps, GradientProps, HorizontalScrollProps, IconProps, ImageProps, ListProps, ModalProps, PressableProps, RowProps, SliderProps, TabsItemProps, TabsProps, TextFieldProps, TextProps, VerticalScrollProps, VideoProps } from '../synthesisView/primitives.js';
3
+ import type { ComponentMap } from '../synthesisView/types.js';
4
+ export declare function Text({ text, children, ...rest }: TextProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function Image({ src, alt, ...rest }: ImageProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function Button({ title, children, disabled, onPress, ...rest }: ButtonProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function Pressable({ children, disabled, onPress, style, ...rest }: PressableProps & {
8
+ style?: CSSProperties;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ export declare function Icon({ name, ...rest }: IconProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function Video({ src, poster, ...rest }: VideoProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function Audio({ src, ...rest }: AudioProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function Column({ children, style, ...rest }: ColumnProps & {
14
+ style?: CSSProperties;
15
+ }): import("react/jsx-runtime").JSX.Element;
16
+ export declare function Row({ children, style, ...rest }: RowProps & {
17
+ style?: CSSProperties;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ export declare function List({ children, style, ...rest }: ListProps & {
20
+ style?: CSSProperties;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ export declare function Card({ children, style, ...rest }: CardProps & {
23
+ style?: CSSProperties;
24
+ }): import("react/jsx-runtime").JSX.Element;
25
+ export declare function Divider({ style, ...rest }: DividerProps & {
26
+ style?: CSSProperties;
27
+ }): import("react/jsx-runtime").JSX.Element;
28
+ export declare function VerticalScroll({ children, style, ...rest }: VerticalScrollProps & {
29
+ style?: CSSProperties;
30
+ }): import("react/jsx-runtime").JSX.Element;
31
+ export declare function HorizontalScroll({ children, style, ...rest }: HorizontalScrollProps & {
32
+ style?: CSSProperties;
33
+ }): import("react/jsx-runtime").JSX.Element;
34
+ export declare function Gradient({ colors, start, end, locations, children, style, ...rest }: GradientProps & {
35
+ style?: CSSProperties;
36
+ }): import("react/jsx-runtime").JSX.Element;
37
+ export declare function Tabs({ defaultValue, children, ...rest }: TabsProps): import("react/jsx-runtime").JSX.Element;
38
+ export declare function TabsItem({ children }: TabsItemProps): import("react/jsx-runtime").JSX.Element;
39
+ export declare function Modal({ open, children, onClose, style, ...rest }: ModalProps & {
40
+ style?: CSSProperties;
41
+ }): import("react/jsx-runtime").JSX.Element | null;
42
+ export declare function TextField({ defaultValue, placeholder, multiline, disabled, onChange, ...rest }: TextFieldProps): import("react/jsx-runtime").JSX.Element;
43
+ export declare function Checkbox({ label, defaultChecked, disabled, onChange, ...rest }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
44
+ export declare function ChoicePicker({ defaultValue, options, disabled, onChange, ...rest }: ChoicePickerProps): import("react/jsx-runtime").JSX.Element;
45
+ export declare function Slider({ defaultValue, min, max, step, disabled, onChange, ...rest }: SliderProps): import("react/jsx-runtime").JSX.Element;
46
+ export declare function DateTimeInput({ defaultValue, mode, disabled, onChange, ...rest }: DateTimeInputProps): import("react/jsx-runtime").JSX.Element;
47
+ /**
48
+ * Default component map: every primitive name → its web implementation. Used
49
+ * as the fallback registry by `<BitBitView>` so a customer renders a view
50
+ * with zero registration. Spread it into a custom map to add or override:
51
+ * `<BitBitProvider components={{ ...bitBitBuiltins, MyCard }}>`.
52
+ */
53
+ export declare const bitBitBuiltins: ComponentMap;
54
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/react/primitives.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Children, isValidElement, useState, } from 'react';
3
+ /**
4
+ * BB built-in primitive implementations for the web (React DOM). Each
5
+ * primitive forwards extra props (`style`, `className`, ARIA, …) to its host
6
+ * element so the UI tree author owns the look. Layout primitives (Column,
7
+ * Card, List) merge a minimal structural style with the author-supplied
8
+ * `style`, with the author's keys winning on conflict.
9
+ */
10
+ /** Merge two style objects; the second's keys win. Skipped when neither is set. */
11
+ function mergeStyle(base, extra) {
12
+ if (!base && !extra)
13
+ return undefined;
14
+ return { ...(base ?? {}), ...(extra ?? {}) };
15
+ }
16
+ // --- Text -------------------------------------------------------------------
17
+ export function Text({ text, children, ...rest }) {
18
+ return _jsx("span", { ...rest, children: text ?? children });
19
+ }
20
+ // --- Image ------------------------------------------------------------------
21
+ export function Image({ src, alt = '', ...rest }) {
22
+ return _jsx("img", { src: src, alt: alt, ...rest });
23
+ }
24
+ // --- Button -----------------------------------------------------------------
25
+ export function Button({ title, children, disabled, onPress, ...rest }) {
26
+ return (_jsx("button", { type: "button", disabled: disabled, onClick: () => onPress?.(), ...rest, children: title ?? children }));
27
+ }
28
+ // --- Pressable --------------------------------------------------------------
29
+ export function Pressable({ children, disabled, onPress, style, ...rest }) {
30
+ const handleClick = () => {
31
+ if (!disabled)
32
+ onPress?.();
33
+ };
34
+ const handleKey = (e) => {
35
+ if (disabled)
36
+ return;
37
+ if (e.key === 'Enter' || e.key === ' ') {
38
+ e.preventDefault();
39
+ onPress?.();
40
+ }
41
+ };
42
+ return (_jsx(_Fragment, { children: _jsx("div", { role: "button", tabIndex: disabled ? -1 : 0, "aria-disabled": disabled || undefined, onClick: handleClick, onKeyDown: handleKey, style: mergeStyle({ cursor: disabled ? 'not-allowed' : 'pointer' }, style), ...rest, children: children }) }));
43
+ }
44
+ // --- Icon -------------------------------------------------------------------
45
+ export function Icon({ name, ...rest }) {
46
+ return (_jsx("span", { "aria-label": name, role: "img", ...rest, children: name }));
47
+ }
48
+ // --- Video / Audio ----------------------------------------------------------
49
+ export function Video({ src, poster, ...rest }) {
50
+ return _jsx("video", { src: src, poster: poster, ...rest });
51
+ }
52
+ export function Audio({ src, ...rest }) {
53
+ return _jsx("audio", { src: src, ...rest });
54
+ }
55
+ // --- Row / Column / List / Card / Divider -----------------------------------
56
+ export function Column({ children, style, ...rest }) {
57
+ return (_jsx("div", { style: mergeStyle({ display: 'flex', flexDirection: 'column' }, style), ...rest, children: children }));
58
+ }
59
+ export function Row({ children, style, ...rest }) {
60
+ return (_jsx("div", { style: mergeStyle({ display: 'flex', flexDirection: 'row' }, style), ...rest, children: children }));
61
+ }
62
+ export function List({ children, style, ...rest }) {
63
+ return (_jsx("div", { style: mergeStyle({ display: 'flex', flexDirection: 'column' }, style), ...rest, children: Children.toArray(children) }));
64
+ }
65
+ export function Card({ children, style, ...rest }) {
66
+ return (_jsx("div", { style: mergeStyle({ border: '1px solid #e5e7eb', borderRadius: 8, padding: 12, background: '#ffffff' }, style), ...rest, children: children }));
67
+ }
68
+ export function Divider({ style, ...rest }) {
69
+ return _jsx("div", { style: mergeStyle({ height: 1, background: '#e5e7eb' }, style), ...rest });
70
+ }
71
+ // --- Scroll: VerticalScroll / HorizontalScroll -----------------------------
72
+ export function VerticalScroll({ children, style, ...rest }) {
73
+ return (_jsx("div", { style: mergeStyle({ display: 'flex', flexDirection: 'column', overflowY: 'auto' }, style), ...rest, children: children }));
74
+ }
75
+ export function HorizontalScroll({ children, style, ...rest }) {
76
+ return (_jsx("div", { style: mergeStyle({ display: 'flex', flexDirection: 'row', overflowX: 'auto' }, style), ...rest, children: children }));
77
+ }
78
+ // --- Gradient ---------------------------------------------------------------
79
+ const DEFAULT_GRADIENT_START = { x: 0, y: 0 };
80
+ const DEFAULT_GRADIENT_END = { x: 0, y: 1 };
81
+ /** Convert a start→end vector (each axis in [0,1], y pointing down) to a CSS
82
+ * gradient angle, where 0° = "to top" and angle increases clockwise. */
83
+ function gradientAngleDeg(start, end) {
84
+ const dx = end.x - start.x;
85
+ const dy = end.y - start.y;
86
+ const rad = Math.atan2(dx, -dy);
87
+ return ((rad * 180) / Math.PI + 360) % 360;
88
+ }
89
+ function gradientStops(colors, locations) {
90
+ return colors
91
+ .map((color, i) => {
92
+ const loc = locations?.[i];
93
+ return loc !== undefined ? `${color} ${loc * 100}%` : color;
94
+ })
95
+ .join(', ');
96
+ }
97
+ export function Gradient({ colors, start = DEFAULT_GRADIENT_START, end = DEFAULT_GRADIENT_END, locations, children, style, ...rest }) {
98
+ const angle = gradientAngleDeg(start, end);
99
+ const backgroundImage = `linear-gradient(${angle}deg, ${gradientStops(colors, locations)})`;
100
+ return (_jsx("div", { style: mergeStyle({ backgroundImage }, style), ...rest, children: children }));
101
+ }
102
+ function isTabsItem(node) {
103
+ return isValidElement(node) && node.props?.value !== undefined;
104
+ }
105
+ export function Tabs({ defaultValue, children, ...rest }) {
106
+ const items = Children.toArray(children).filter(isTabsItem);
107
+ const firstValue = items[0]?.props.value;
108
+ const [active, setActive] = useState(defaultValue ?? firstValue);
109
+ const activeItem = items.find((item) => item.props.value === active) ?? items[0];
110
+ return (_jsxs("div", { ...rest, children: [_jsx("div", { style: { display: 'flex', gap: 4, borderBottom: '1px solid #e5e7eb' }, children: items.map((item) => {
111
+ const isActive = item.props.value === active;
112
+ return (_jsx("button", { type: "button", onClick: () => setActive(item.props.value), style: {
113
+ background: 'transparent',
114
+ border: 'none',
115
+ padding: '8px 12px',
116
+ cursor: 'pointer',
117
+ borderBottom: isActive ? '2px solid currentColor' : '2px solid transparent',
118
+ marginBottom: -1,
119
+ font: 'inherit',
120
+ }, children: item.props.label }, item.props.value));
121
+ }) }), _jsx("div", { children: activeItem?.props.children })] }));
122
+ }
123
+ export function TabsItem({ children }) {
124
+ // Rendered inertly when used outside Tabs; Tabs reads `value`/`label`/`children` directly.
125
+ return _jsx(_Fragment, { children: children });
126
+ }
127
+ // --- Modal ------------------------------------------------------------------
128
+ export function Modal({ open = true, children, onClose, style, ...rest }) {
129
+ const [visible, setVisible] = useState(open);
130
+ if (!visible || !open)
131
+ return null;
132
+ const dismiss = () => {
133
+ setVisible(false);
134
+ onClose?.();
135
+ };
136
+ return (_jsx("div", { role: "dialog", "aria-modal": "true", onClick: dismiss, onKeyDown: (e) => {
137
+ if (e.key === 'Escape')
138
+ dismiss();
139
+ }, style: {
140
+ position: 'fixed',
141
+ inset: 0,
142
+ background: 'rgba(0,0,0,0.4)',
143
+ display: 'flex',
144
+ alignItems: 'center',
145
+ justifyContent: 'center',
146
+ zIndex: 1000,
147
+ }, children: _jsx("div", { onClick: (e) => e.stopPropagation(), style: mergeStyle({ background: '#ffffff', borderRadius: 8, padding: 16, maxWidth: 480, width: '90%' }, style), ...rest, children: children }) }));
148
+ }
149
+ // --- Form -------------------------------------------------------------------
150
+ export function TextField({ defaultValue, placeholder, multiline, disabled, onChange, ...rest }) {
151
+ const [value, setValue] = useState(defaultValue ?? '');
152
+ const handle = (v) => {
153
+ setValue(v);
154
+ onChange?.({ value: v });
155
+ };
156
+ return multiline ? (_jsx("textarea", { value: value, placeholder: placeholder, disabled: disabled, onChange: (e) => handle(e.target.value), ...rest })) : (_jsx("input", { type: "text", value: value, placeholder: placeholder, disabled: disabled, onChange: (e) => handle(e.target.value), ...rest }));
157
+ }
158
+ export function Checkbox({ label, defaultChecked, disabled, onChange, ...rest }) {
159
+ const [checked, setChecked] = useState(defaultChecked ?? false);
160
+ const handle = (v) => {
161
+ setChecked(v);
162
+ onChange?.({ value: v });
163
+ };
164
+ return (_jsxs("label", { style: { display: 'inline-flex', alignItems: 'center', gap: 6, cursor: 'pointer' }, children: [_jsx("input", { type: "checkbox", checked: checked, disabled: disabled, onChange: (e) => handle(e.target.checked), ...rest }), label && _jsx("span", { children: label })] }));
165
+ }
166
+ export function ChoicePicker({ defaultValue, options, disabled, onChange, ...rest }) {
167
+ const [value, setValue] = useState(defaultValue ?? options[0]?.value ?? '');
168
+ const handle = (v) => {
169
+ setValue(v);
170
+ onChange?.({ value: v });
171
+ };
172
+ return (_jsx("div", { ...rest, children: options.map((opt) => (_jsxs("label", { style: { display: 'flex', alignItems: 'center', gap: 6, cursor: 'pointer' }, children: [_jsx("input", { type: "radio", checked: value === opt.value, disabled: disabled, onChange: () => handle(opt.value) }), _jsx("span", { children: opt.label })] }, opt.value))) }));
173
+ }
174
+ export function Slider({ defaultValue, min = 0, max = 100, step = 1, disabled, onChange, ...rest }) {
175
+ const [value, setValue] = useState(defaultValue ?? min);
176
+ const handle = (v) => {
177
+ setValue(v);
178
+ onChange?.({ value: v });
179
+ };
180
+ return (_jsx("input", { type: "range", min: min, max: max, step: step, value: value, disabled: disabled, onChange: (e) => handle(Number(e.target.value)), ...rest }));
181
+ }
182
+ export function DateTimeInput({ defaultValue, mode = 'date', disabled, onChange, ...rest }) {
183
+ const [value, setValue] = useState(defaultValue ?? '');
184
+ const handle = (v) => {
185
+ setValue(v);
186
+ onChange?.({ value: v });
187
+ };
188
+ const type = mode === 'time' ? 'time' : mode === 'datetime' ? 'datetime-local' : 'date';
189
+ return (_jsx("input", { type: type, value: value, disabled: disabled, onChange: (e) => handle(e.target.value), ...rest }));
190
+ }
191
+ // --- Registry ---------------------------------------------------------------
192
+ /**
193
+ * Default component map: every primitive name → its web implementation. Used
194
+ * as the fallback registry by `<BitBitView>` so a customer renders a view
195
+ * with zero registration. Spread it into a custom map to add or override:
196
+ * `<BitBitProvider components={{ ...bitBitBuiltins, MyCard }}>`.
197
+ */
198
+ export const bitBitBuiltins = {
199
+ Text: Text,
200
+ Image: Image,
201
+ Button: Button,
202
+ Pressable: Pressable,
203
+ Icon: Icon,
204
+ Video: Video,
205
+ Audio: Audio,
206
+ Column: Column,
207
+ Row: Row,
208
+ List: List,
209
+ Card: Card,
210
+ VerticalScroll: VerticalScroll,
211
+ HorizontalScroll: HorizontalScroll,
212
+ Tabs: Tabs,
213
+ TabsItem: TabsItem,
214
+ Modal: Modal,
215
+ Divider: Divider,
216
+ Gradient: Gradient,
217
+ TextField: TextField,
218
+ Checkbox: Checkbox,
219
+ ChoicePicker: ChoicePicker,
220
+ Slider: Slider,
221
+ DateTimeInput: DateTimeInput,
222
+ };
223
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/react/primitives.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type RenderUnknown, type SynthesisViewTreeProps } from '../synthesisView/engine.js';
2
+ import type { ComponentMap, ContentInput, SynthesisViewEvent, SynthesizeViewFetcher } from '../synthesisView/types.js';
3
+ export { type BitBitContextValue, BitBitProvider } from '../synthesisView/context.js';
4
+ export { createComponentMap, type GlobModules, type RequireContext, } from '../synthesisView/createComponentMap.js';
5
+ export type { ComponentMap, ContentInput, FlatUiKeyNameNode, FlatUiNode, FlatUiPrimitiveNode, SynthesisViewEvent, SynthesizeViewFetcher, ViewInputs, } from '../synthesisView/types.js';
6
+ export { bitBitBuiltins } from './primitives.js';
7
+ export type BitBitViewRendererProps = Omit<SynthesisViewTreeProps, 'renderUnknown' | 'defaultComponents'> & {
8
+ /**
9
+ * Override how unregistered components render. Defaults to nothing — most
10
+ * uses won't hit it because the BB built-in primitives cover every name a
11
+ * default tree references. Pass one to surface unknown components in dev.
12
+ */
13
+ renderUnknown?: RenderUnknown;
14
+ };
15
+ /**
16
+ * React Native (Expo) renderer for a pre-fetched `uiData` array. BB built-in
17
+ * primitives are registered automatically; pass `components` to add or
18
+ * override entries by name. Targets Expo specifically — the built-ins lean
19
+ * on Expo packages (`expo-linear-gradient`, etc.). Use `<BitBitView>` if you
20
+ * want it to fetch for you.
21
+ */
22
+ export declare function BitBitViewRenderer({ renderUnknown, ...rest }: BitBitViewRendererProps): import("react").FunctionComponentElement<SynthesisViewTreeProps>;
23
+ export type BitBitViewProps = {
24
+ /** A BitBitPressClient (or anything with `user.synthesizeViewItem`). */
25
+ client: SynthesizeViewFetcher;
26
+ keyName: string;
27
+ contentInputs?: ContentInput[];
28
+ components?: ComponentMap;
29
+ onEvent?: (event: SynthesisViewEvent) => void;
30
+ renderUnknown?: RenderUnknown;
31
+ /** Force a dark/light mode. Defaults to the system appearance via RN's
32
+ * `useColorScheme` (re-renders when the user toggles their OS theme). */
33
+ darkMode?: boolean;
34
+ };
35
+ /**
36
+ * React Native (Expo) view: fetches a synthesis view by `keyName` and renders
37
+ * it in place. Renders nothing while loading or on error (RN has no text
38
+ * host). Multiple `<BitBitView>` mounts within a short window are coalesced
39
+ * into a single batched request.
40
+ */
41
+ export declare function BitBitView({ client, keyName, contentInputs, components, onEvent, renderUnknown, darkMode, }: BitBitViewProps): import("react").FunctionComponentElement<BitBitViewRendererProps> | null;
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react-native-expo/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EAEtB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,KAAK,kBAAkB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACtF,OAAO,EACL,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,wCAAwC,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACtB,eAAe,GAAG,mBAAmB,CACtC,GAAG;IACF;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAyCF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,EAAE,uBAAuB,oEAOrF;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,wEAAwE;IACxE,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;8EAC0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,OAAO,EACP,aAAa,EACb,UAAU,EACV,OAAO,EACP,aAAa,EACb,QAAQ,GACT,EAAE,eAAe,4EAcjB"}
@@ -0,0 +1,78 @@
1
+ import { createElement } from 'react';
2
+ import { useColorScheme } from 'react-native';
3
+ import { SynthesisViewTree, } from '../synthesisView/engine.js';
4
+ import { useSynthesisView } from '../synthesisView/useSynthesisView.js';
5
+ import { bitBitBuiltins } from './primitives.js';
6
+ export { BitBitProvider } from '../synthesisView/context.js';
7
+ export { createComponentMap, } from '../synthesisView/createComponentMap.js';
8
+ export { bitBitBuiltins } from './primitives.js';
9
+ const defaultRenderUnknown = () => null;
10
+ const DEFAULT_FONT_SIZE = 16;
11
+ /** Extract the primary family name from a CSS-shape `fontFamily` value.
12
+ * Web takes the full fallback chain (`'"Inter-Regular", "Inter", ...'`);
13
+ * RN takes one registered name, so we keep the first segment and strip
14
+ * quotes. Single-name input passes through unchanged. */
15
+ function pickRNFontFamily(value) {
16
+ const first = value.split(',')[0]?.trim();
17
+ if (!first)
18
+ return value;
19
+ return first.replace(/^["']|["']$/g, '');
20
+ }
21
+ /** Bridge CSS-shape style values into RN's stricter form. Two patches:
22
+ * - `lineHeight` as a unitless multiplier (CSS) → pixels using `fontSize`
23
+ * on the same node (RN treats numeric lineHeight as pixels).
24
+ * - `fontFamily` CSS fallback chain → first registered name (RN accepts
25
+ * one family at a time). */
26
+ function normalizeRNStyle(value) {
27
+ if (!value || typeof value !== 'object' || Array.isArray(value))
28
+ return value;
29
+ const obj = value;
30
+ let changed = false;
31
+ const out = { ...obj };
32
+ if (typeof obj.lineHeight === 'number' && obj.lineHeight < 4) {
33
+ const fontSize = typeof obj.fontSize === 'number' ? obj.fontSize : DEFAULT_FONT_SIZE;
34
+ out.lineHeight = obj.lineHeight * fontSize;
35
+ changed = true;
36
+ }
37
+ if (typeof obj.fontFamily === 'string' && obj.fontFamily.includes(',')) {
38
+ out.fontFamily = pickRNFontFamily(obj.fontFamily);
39
+ changed = true;
40
+ }
41
+ return changed ? out : value;
42
+ }
43
+ /**
44
+ * React Native (Expo) renderer for a pre-fetched `uiData` array. BB built-in
45
+ * primitives are registered automatically; pass `components` to add or
46
+ * override entries by name. Targets Expo specifically — the built-ins lean
47
+ * on Expo packages (`expo-linear-gradient`, etc.). Use `<BitBitView>` if you
48
+ * want it to fetch for you.
49
+ */
50
+ export function BitBitViewRenderer({ renderUnknown, ...rest }) {
51
+ return createElement(SynthesisViewTree, {
52
+ ...rest,
53
+ defaultComponents: bitBitBuiltins,
54
+ normalizeStyle: normalizeRNStyle,
55
+ renderUnknown: renderUnknown ?? defaultRenderUnknown,
56
+ });
57
+ }
58
+ /**
59
+ * React Native (Expo) view: fetches a synthesis view by `keyName` and renders
60
+ * it in place. Renders nothing while loading or on error (RN has no text
61
+ * host). Multiple `<BitBitView>` mounts within a short window are coalesced
62
+ * into a single batched request.
63
+ */
64
+ export function BitBitView({ client, keyName, contentInputs, components, onEvent, renderUnknown, darkMode, }) {
65
+ const systemScheme = useColorScheme();
66
+ const resolvedDark = darkMode ?? (systemScheme === 'dark' ? true : systemScheme === 'light' ? false : undefined);
67
+ const viewInputs = resolvedDark !== undefined ? { darkMode: resolvedDark } : undefined;
68
+ const { uiData, loading, error } = useSynthesisView(client, keyName, contentInputs, viewInputs);
69
+ if (loading || error || !uiData.length)
70
+ return null;
71
+ return createElement(BitBitViewRenderer, {
72
+ uiData,
73
+ components,
74
+ onEvent,
75
+ renderUnknown,
76
+ });
77
+ }
78
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react-native-expo/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { AudioProps, ButtonProps, CardProps, CheckboxProps, ChoicePickerProps, ColumnProps, DateTimeInputProps, DividerProps, GradientProps, HorizontalScrollProps, IconProps, ImageProps, ListProps, ModalProps, PressableProps, RowProps, SliderProps, TabsItemProps, TabsProps, TextFieldProps, TextProps, VerticalScrollProps, VideoProps } from '../synthesisView/primitives.js';
2
+ import type { ComponentMap } from '../synthesisView/types.js';
3
+ export declare function Text({ text, children, ...rest }: TextProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function Image({ src, alt, ...rest }: ImageProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function Button({ title, children, disabled, onPress, ...rest }: ButtonProps): import("react/jsx-runtime").JSX.Element;
6
+ export declare function Pressable({ children, disabled, onPress, ...rest }: PressableProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function Icon({ name, ...rest }: IconProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function Video({ src, style, ...rest }: VideoProps & {
9
+ style?: unknown;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ export declare function Audio({ src, style, ...rest }: AudioProps & {
12
+ style?: unknown;
13
+ }): import("react/jsx-runtime").JSX.Element;
14
+ export declare function Column({ children, style, ...rest }: ColumnProps & {
15
+ style?: unknown;
16
+ }): import("react/jsx-runtime").JSX.Element;
17
+ export declare function Row({ children, style, ...rest }: RowProps & {
18
+ style?: unknown;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export declare function List({ children, style, ...rest }: ListProps & {
21
+ style?: unknown;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ export declare function Card({ children, style, ...rest }: CardProps & {
24
+ style?: unknown;
25
+ }): import("react/jsx-runtime").JSX.Element;
26
+ export declare function Divider({ style, ...rest }: DividerProps & {
27
+ style?: unknown;
28
+ }): import("react/jsx-runtime").JSX.Element;
29
+ export declare function VerticalScroll({ children, style, ...rest }: VerticalScrollProps & {
30
+ style?: unknown;
31
+ }): import("react/jsx-runtime").JSX.Element;
32
+ export declare function HorizontalScroll({ children, style, ...rest }: HorizontalScrollProps & {
33
+ style?: unknown;
34
+ }): import("react/jsx-runtime").JSX.Element;
35
+ /**
36
+ * Linear gradient backdrop via `expo-linear-gradient`. We forward `colors`,
37
+ * `start`, `end`, and `locations` straight through — the contract intentionally
38
+ * mirrors expo-linear-gradient's shape so the prop set is one-to-one on RN.
39
+ * The web impl converts the same fields to a CSS `linear-gradient(...)`.
40
+ */
41
+ export declare function Gradient({ colors, start, end, locations, children, ...rest }: GradientProps): import("react/jsx-runtime").JSX.Element;
42
+ export declare function Tabs({ defaultValue, children, ...rest }: TabsProps): import("react/jsx-runtime").JSX.Element;
43
+ export declare function TabsItem({ children }: TabsItemProps): import("react/jsx-runtime").JSX.Element;
44
+ export declare function Modal({ open, children, onClose, style, ...rest }: ModalProps & {
45
+ style?: unknown;
46
+ }): import("react/jsx-runtime").JSX.Element;
47
+ export declare function TextField({ defaultValue, placeholder, multiline, disabled, onChange, ...rest }: TextFieldProps): import("react/jsx-runtime").JSX.Element;
48
+ export declare function Checkbox({ label, defaultChecked, disabled, onChange, ...rest }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
49
+ export declare function ChoicePicker({ defaultValue, options, disabled, onChange, ...rest }: ChoicePickerProps): import("react/jsx-runtime").JSX.Element;
50
+ export declare function Slider({ defaultValue, min, max, step, disabled, onChange, ...rest }: SliderProps): import("react/jsx-runtime").JSX.Element;
51
+ export declare function DateTimeInput({ defaultValue, mode, disabled, onChange, ...rest }: DateTimeInputProps): import("react/jsx-runtime").JSX.Element;
52
+ /**
53
+ * Default component map for React Native; mirrors the web `bitBitBuiltins`
54
+ * name-for-name. Used as the fallback registry by `<BitBitView>` so a
55
+ * customer renders a view with zero registration. Spread to override.
56
+ */
57
+ export declare const bitBitBuiltins: ComponentMap;
58
+ //# sourceMappingURL=primitives.d.ts.map