@mindees/atlas 0.13.0 โ†’ 0.14.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.
package/README.md CHANGED
@@ -6,10 +6,13 @@ The Atlas component library โ€” MindeesNative's batteries-included UI primitives
6
6
  > separate, pre-existing React Native + Expo UI kit on npm. Atlas is this
7
7
  > framework's own component library.
8
8
 
9
- > Status: ๐Ÿงช **Experimental** โ€” Phase 12A/12B are implemented and tested:
10
- > accessible, signals-native UI primitives, a structural theme subpath, and a
11
- > virtualized recycling `List`. Web rendering is real through the Helix DOM backend;
12
- > native Atlas rendering is still tied to the broader native app bridge research track.
9
+ > Status: ๐Ÿงช **Experimental** (pre-1.0) โ€” v0.13.0. A 27+ component library plus 12+
10
+ > hooks: accessible, signals-native UI primitives, design-token theming with dark
11
+ > mode, a full-screen portal/overlay layer, a virtualized recycling `List`, a
12
+ > gesture system, an animation engine, and an animated stack navigator over the
13
+ > Quantum router. Web rendering is real through the Helix DOM backend; the **same**
14
+ > serializable tree now renders + is interactive on a real Android emulator
15
+ > (QuickJS bridge) and a real iOS simulator (JavaScriptCore bridge), all CI-verified.
13
16
  > See the repository [STATUS.md](../../STATUS.md).
14
17
 
15
18
  ## What works today
@@ -17,17 +20,39 @@ The Atlas component library โ€” MindeesNative's batteries-included UI primitives
17
20
  - **Primitives** โ€” `View`, `Text`, `Image`, `TextInput`, `Pressable`, `Button`,
18
21
  `Stack`, `Row`, `Column`, `Spacer`, and `ScrollView` return renderer-agnostic
19
22
  `MindeesNode` trees over `@mindees/core` `createElement`.
23
+ - **Components (27+)** โ€” beyond the primitives: `Card`, `Switch`, `Badge`, `Avatar`,
24
+ `Chip`, `Divider`, `ProgressBar`, `ActivityIndicator`, `SafeAreaView`,
25
+ `KeyboardAvoidingView`, `Checkbox`, `RadioGroup`, `Skeleton`, `Tabs`, `Accordion`,
26
+ `Stepper`, and `SegmentedControl` โ€” all accessible and signals-native.
27
+ - **Overlays** โ€” `@mindees/atlas` exports `Modal`, `Toast`, and `FocusScope`; these
28
+ render into a full-screen portal layer that overlaps the app (web today; the native
29
+ hosts have a matching overlay layer).
30
+ - **Hooks (12+)** โ€” state/effect hooks `useToggle`, `useCounter`, `usePrevious`,
31
+ `useReducer`, `useAsync`, `usePersistentSignal`, `useDebounce`, `useInterval`,
32
+ `useTimeout`, plus `useForm` and the device hooks `useWindowDimensions`,
33
+ `useColorScheme`, `useSafeAreaInsets`, and `useKeyboard` (RN-parity environment).
20
34
  - **Styling** โ€” `StyleObject`, `StyleInput`, and `flattenStyle` normalize a curated
21
35
  cross-platform style subset; numeric web styles lower to `px` through the renderer.
22
36
  - **Accessibility** โ€” typed `role` / `aria-*` helpers lower into host props, and
23
37
  `Image` requires a `label` unless explicitly marked decorative.
24
38
  - **Interaction** โ€” `Pressable` and `usePressable` use real DOM events on web
25
39
  (`click`, pointer, focus, Enter, Space), with reactive hover/press/focus state.
26
- - **Theme** โ€” `@mindees/atlas/theme` exports `ThemeTokens`, `defaultTokens`, and
27
- `createTheme()`; token selection uses `@mindees/core` selector isolation.
40
+ - **Gestures + motion** โ€” `GestureView` attaches pan/press gestures; `motion` /
41
+ `animateTo` drive spring/interpolated animations on the same scene.
42
+ - **Theming** โ€” design tokens in two tiers: primitive scales (`space`, `radius`,
43
+ `fontSize`, `palette`, โ€ฆ) and semantic `tokens`/`Theme` (`bg`/`surface`/`text`/
44
+ `primary`/โ€ฆ). `useTheme` returns a reactive theme driven by `useColorScheme`, so
45
+ **dark mode** is a fine-grained token-set swap โ€” only the color nodes update. The
46
+ `@mindees/atlas/theme` subpath additionally exports a structural `createTheme()`
47
+ with `@mindees/core` selector isolation.
28
48
  - **List** โ€” `@mindees/atlas/list` exports `List`, `createList`, and `computeWindow`.
29
49
  It renders a fixed pool of recycled row regions for fixed-height virtualization;
30
50
  variable-height measurement is a ๐Ÿ”ฌ research track.
51
+ - **Keyed iteration** โ€” `@mindees/atlas/for` exports `For`, a keyed region for
52
+ efficient list reconciliation (reused/disposed by key).
53
+ - **Stack navigator** โ€” `@mindees/atlas/stack` exports `createStackNavigator`, an
54
+ animated stack over the Quantum router: push slides/fades a screen in, an edge
55
+ swipe-back gesture drives the pop interactively, and surviving screens keep state.
31
56
 
32
57
  ## Quick start
33
58
 
@@ -42,7 +67,7 @@ const primary = theme.select((tokens) => tokens.colors.primary)
42
67
  export const Screen = Column({
43
68
  gap: 12,
44
69
  children: [
45
- Text({ children: 'Atlas works on the Helix DOM backend today.' }),
70
+ Text({ children: 'One Atlas tree โ€” web, Android, and iOS.' }),
46
71
  Button({ title: 'Save', style: () => ({ backgroundColor: primary(), padding: 12 }) }),
47
72
  List({
48
73
  items: ['One', 'Two', 'Three'],
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ import { Maturity, NotImplementedError, PackageInfo, notImplemented } from "@min
16
16
  /** The npm package name. */
17
17
  declare const name = "@mindees/atlas";
18
18
  /** The package version. All `@mindees/*` packages share one locked version line. */
19
- declare const VERSION = "0.13.0";
19
+ declare const VERSION = "0.14.0";
20
20
  /** Current maturity of this package. See the repository `STATUS.md`. */
21
21
  declare const maturity: Maturity;
22
22
  /**
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ import { NotImplementedError, notImplemented } from "@mindees/core";
15
15
  /** The npm package name. */
16
16
  const name = "@mindees/atlas";
17
17
  /** The package version. All `@mindees/*` packages share one locked version line. */
18
- const VERSION = "0.13.0";
18
+ const VERSION = "0.14.0";
19
19
  /** Current maturity of this package. See the repository `STATUS.md`. */
20
20
  const maturity = "experimental";
21
21
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["/**\n * `@mindees/atlas` (Atlas) โ€” accessible, signals-native UI primitives. Function components\n * over `@mindees/core`'s `createElement` that return renderer-agnostic `MindeesNode` trees:\n * web rendering is real via the Helix DOM backend; native is a labeled ๐Ÿ”ฌ research track (the\n * same serializable tree, interpreted by a native host later). A curated cross-platform\n * `StyleObject`, typed accessibility, and a structural theme (on the `@mindees/atlas/theme`\n * subpath). The virtualized recycling `List` is on the `@mindees/atlas/list` subpath.\n *\n * @module\n */\n\nimport type { Maturity, PackageInfo } from '@mindees/core'\nimport { NotImplementedError, notImplemented } from '@mindees/core'\n\n/** The npm package name. */\nexport const name = '@mindees/atlas'\n\n/** The package version. All `@mindees/*` packages share one locked version line. */\nexport const VERSION = '0.13.0'\n\n/** Current maturity of this package. See the repository `STATUS.md`. */\nexport const maturity: Maturity = 'experimental'\n\n/**\n * Static identity + maturity metadata for this package. Frozen so the\n * self-reported identity tooling introspects cannot be mutated at runtime,\n * matching the `readonly` fields of {@link PackageInfo}.\n */\nexport const info: PackageInfo = Object.freeze({ name, version: VERSION, maturity })\n\nexport { type A11yProps, type A11yState, type Role, toA11yProps } from './a11y'\nexport {\n Accordion,\n type AccordionProps,\n type AccordionSection,\n ActivityIndicator,\n type ActivityIndicatorProps,\n Avatar,\n type AvatarProps,\n Badge,\n type BadgeProps,\n Card,\n type CardProps,\n Checkbox,\n type CheckboxProps,\n Chip,\n type ChipProps,\n Divider,\n type DividerProps,\n KeyboardAvoidingView,\n type KeyboardAvoidingViewProps,\n ProgressBar,\n type ProgressBarProps,\n RadioGroup,\n type RadioGroupProps,\n type RadioOption,\n SafeAreaView,\n type SafeAreaViewProps,\n type Segment,\n SegmentedControl,\n type SegmentedControlProps,\n Skeleton,\n type SkeletonProps,\n Stepper,\n type StepperProps,\n Switch,\n type SwitchProps,\n type TabItem,\n Tabs,\n type TabsProps,\n} from './components'\nexport {\n type ColorScheme,\n getEnvironment,\n type KeyboardState,\n type PlatformEnvironment,\n type SafeAreaInsets,\n setEnvironment,\n useColorScheme,\n useKeyboard,\n useSafeAreaInsets,\n useWindowDimensions,\n type WindowDimensions,\n} from './environment'\nexport { type Field, type FormApi, type UseFormOptions, useForm } from './form'\nexport { type AttachableGesture, GestureView, type GestureViewProps } from './gesture'\nexport {\n type AsyncState,\n type Counter,\n type PersistentSignalOptions,\n type SignalStorage,\n type Toggle,\n useAsync,\n useCounter,\n useDebounce,\n useInterval,\n usePersistentSignal,\n usePrevious,\n useReducer,\n useTimeout,\n useToggle,\n} from './hooks'\nexport { type BaseProps, type Reactive, resolveStyle, toHostProps } from './host'\nexport { animateTo, motion } from './motion'\nexport {\n FocusScope,\n type FocusScopeProps,\n Modal,\n type ModalProps,\n Toast,\n type ToastProps,\n} from './overlay'\nexport {\n Button,\n type ButtonProps,\n Column,\n Image,\n type ImageProps,\n type InteractionState,\n Pressable,\n type PressableProps,\n Row,\n ScrollView,\n type ScrollViewProps,\n Spacer,\n type SpacerProps,\n Stack,\n type StackProps,\n Text,\n TextInput,\n type TextInputProps,\n type TextProps,\n usePressable,\n View,\n type ViewProps,\n} from './primitives'\nexport { flattenStyle, type StyleInput, type StyleObject, type StyleValue } from './style'\nexport {\n duration,\n easing,\n fontSize,\n fontWeight,\n getTheme,\n lineHeight,\n palette,\n radius,\n space,\n type Theme,\n type ThemeColors,\n tokens,\n useTheme,\n} from './tokens'\nexport type { Maturity, PackageInfo }\nexport { NotImplementedError, notImplemented }\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,OAAO;;AAGpB,MAAa,UAAU;;AAGvB,MAAa,WAAqB;;;;;;AAOlC,MAAa,OAAoB,OAAO,OAAO;CAAE;CAAM,SAAS;CAAS;AAAS,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["/**\n * `@mindees/atlas` (Atlas) โ€” accessible, signals-native UI primitives. Function components\n * over `@mindees/core`'s `createElement` that return renderer-agnostic `MindeesNode` trees:\n * web rendering is real via the Helix DOM backend; native is a labeled ๐Ÿ”ฌ research track (the\n * same serializable tree, interpreted by a native host later). A curated cross-platform\n * `StyleObject`, typed accessibility, and a structural theme (on the `@mindees/atlas/theme`\n * subpath). The virtualized recycling `List` is on the `@mindees/atlas/list` subpath.\n *\n * @module\n */\n\nimport type { Maturity, PackageInfo } from '@mindees/core'\nimport { NotImplementedError, notImplemented } from '@mindees/core'\n\n/** The npm package name. */\nexport const name = '@mindees/atlas'\n\n/** The package version. All `@mindees/*` packages share one locked version line. */\nexport const VERSION = '0.14.0'\n\n/** Current maturity of this package. See the repository `STATUS.md`. */\nexport const maturity: Maturity = 'experimental'\n\n/**\n * Static identity + maturity metadata for this package. Frozen so the\n * self-reported identity tooling introspects cannot be mutated at runtime,\n * matching the `readonly` fields of {@link PackageInfo}.\n */\nexport const info: PackageInfo = Object.freeze({ name, version: VERSION, maturity })\n\nexport { type A11yProps, type A11yState, type Role, toA11yProps } from './a11y'\nexport {\n Accordion,\n type AccordionProps,\n type AccordionSection,\n ActivityIndicator,\n type ActivityIndicatorProps,\n Avatar,\n type AvatarProps,\n Badge,\n type BadgeProps,\n Card,\n type CardProps,\n Checkbox,\n type CheckboxProps,\n Chip,\n type ChipProps,\n Divider,\n type DividerProps,\n KeyboardAvoidingView,\n type KeyboardAvoidingViewProps,\n ProgressBar,\n type ProgressBarProps,\n RadioGroup,\n type RadioGroupProps,\n type RadioOption,\n SafeAreaView,\n type SafeAreaViewProps,\n type Segment,\n SegmentedControl,\n type SegmentedControlProps,\n Skeleton,\n type SkeletonProps,\n Stepper,\n type StepperProps,\n Switch,\n type SwitchProps,\n type TabItem,\n Tabs,\n type TabsProps,\n} from './components'\nexport {\n type ColorScheme,\n getEnvironment,\n type KeyboardState,\n type PlatformEnvironment,\n type SafeAreaInsets,\n setEnvironment,\n useColorScheme,\n useKeyboard,\n useSafeAreaInsets,\n useWindowDimensions,\n type WindowDimensions,\n} from './environment'\nexport { type Field, type FormApi, type UseFormOptions, useForm } from './form'\nexport { type AttachableGesture, GestureView, type GestureViewProps } from './gesture'\nexport {\n type AsyncState,\n type Counter,\n type PersistentSignalOptions,\n type SignalStorage,\n type Toggle,\n useAsync,\n useCounter,\n useDebounce,\n useInterval,\n usePersistentSignal,\n usePrevious,\n useReducer,\n useTimeout,\n useToggle,\n} from './hooks'\nexport { type BaseProps, type Reactive, resolveStyle, toHostProps } from './host'\nexport { animateTo, motion } from './motion'\nexport {\n FocusScope,\n type FocusScopeProps,\n Modal,\n type ModalProps,\n Toast,\n type ToastProps,\n} from './overlay'\nexport {\n Button,\n type ButtonProps,\n Column,\n Image,\n type ImageProps,\n type InteractionState,\n Pressable,\n type PressableProps,\n Row,\n ScrollView,\n type ScrollViewProps,\n Spacer,\n type SpacerProps,\n Stack,\n type StackProps,\n Text,\n TextInput,\n type TextInputProps,\n type TextProps,\n usePressable,\n View,\n type ViewProps,\n} from './primitives'\nexport { flattenStyle, type StyleInput, type StyleObject, type StyleValue } from './style'\nexport {\n duration,\n easing,\n fontSize,\n fontWeight,\n getTheme,\n lineHeight,\n palette,\n radius,\n space,\n type Theme,\n type ThemeColors,\n tokens,\n useTheme,\n} from './tokens'\nexport type { Maturity, PackageInfo }\nexport { NotImplementedError, notImplemented }\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,OAAO;;AAGpB,MAAa,UAAU;;AAGvB,MAAa,WAAqB;;;;;;AAOlC,MAAa,OAAoB,OAAO,OAAO;CAAE;CAAM,SAAS;CAAS;AAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindees/atlas",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "MindeesNative Atlas - accessible, signals-native UI primitives + a virtualized recycling list. Renderer-agnostic (web real, native research track).",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "type": "module",
@@ -39,12 +39,12 @@
39
39
  "directory": "packages/atlas"
40
40
  },
41
41
  "dependencies": {
42
- "@mindees/core": "0.13.0",
43
- "@mindees/router": "0.13.0"
42
+ "@mindees/core": "0.14.0",
43
+ "@mindees/router": "0.14.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "happy-dom": "20.9.0",
47
- "@mindees/renderer": "0.13.0"
47
+ "@mindees/renderer": "0.14.0"
48
48
  },
49
49
  "scripts": {
50
50
  "build": "tsdown",