Versions

Journal des modifications

Chaque version publique de Native-UI, la plus récente en premier. Les versions antérieures à la 1.0 sont conservées pour la transparence.

11 versions 24 modifications
  1. v1.7.1

    Stable

    • Corrigé

      Add the react-native condition to the root exports entry so Metro resolves the TypeScript source instead of the dist bundles. Metro in React Native 0.84 enables package exports by default, and an exports map takes precedence over the top-level react-native field, so consumers were bundling both dist flavours (.mjs and .js) at once and needed per-app resolveRequest workarounds.

  2. v1.7.0

    Stable

    • Ajouté

      Add the Bloom theme variant and a theme config key. NativeUIProvider now accepts theme: 'default' | 'bloom' | ThemeVariant. A theme variant bundles a complete visual identity (colour palette, corner radii, elevation, type density, and default fonts) behind one name and restyles every component. The new Bloom variant is a soft, rounded look: violet/pink accents, rounded corners, purple-tinted neutrals, and Outfit + Plus Jakarta Sans typography. The original look ships unchanged as the Aurora ('default') variant, so existing apps are unaffected. FontFamilies gains an optional display group so a variant can pair a heading family with a separate body family. New exports: THEME_VARIANTS, defaultThemeVariant, bloomThemeVariant, resolveThemeVariant, defaultColorPalette, bloomColorPalette, BLOOM_PRESETS, bloomFontFamilies, and the types ThemeVariant, ThemeVariantName, ColorPalette, TextRamp, SemanticRamp, NeutralRamp, BloomPreset, BorderRadiusScale.

  3. v1.6.0

    Stable

    • Ajouté

      Add the ActionTile component, a decimal input parser, and a long-value fix for StatTile.

      • New components
      • ActionTile - compact tappable tile with a tinted icon chip and a label below, built for quick-action grids on dashboards and home screens. Supports tones (primary/success/warning/error/neutral), a disabled state, accessibilityLabel override, debounced press handling and light haptics, matching the other interactive controls.
      • New utilities
      • parseDecimalInput - parses a user-entered number accepting both comma and dot as the decimal separator (European keyboards), returning NaN for empty or non-numeric input so callers can validate.
      • Fixes
      • StatTile now renders long values on a single shrink-to-fit line (numberOfLines={1}, adjustsFontSizeToFit, minimumFontScale={0.7}) instead of overflowing.
      • Tests & Storybook
      • Added unit coverage for ActionTile and parseDecimalInput, a long-value test for StatTile, and an ActionTile Storybook page with a quick-actions grid.
  4. v1.5.0

    Stable

    • Ajouté

      Code-quality audit fixes across the component library.

      • Accessibility
      • Input / TextArea now append their error message to the accessible label and TextArea exposes a disabled accessibility state.
      • Switch makes the entire label/subtitle row tappable and exposes the subtitle in the accessible name; the inner native switch is hidden from assistive tech when wrapped.
      • Modal and BottomSheet backdrops are now exposed as a dismiss button (or hidden when non-dismissable), and decorative handles/glyphs in BottomSheet, Select, ListItem and Checkbox are hidden from screen readers.
      • API
      • Input and TextArea now forward refs to the underlying TextInput.
      • Radio accepts a style prop and triggers light haptics on press, matching Checkbox/Switch.
      • Box now extends ViewProps, fixing the previously mistyped accessibilityRole and untyped passthrough props.
      • The selectedValue / onValueChange aliases on Select are marked @deprecated.
      • Performance
      • Button, IconButton, Switch, Checkbox and Radio are wrapped in React.memo, with memoized styles and a shared useDebouncedPress hook for press handling.
      • Select uses useWindowDimensions and memoized callbacks instead of inline closures.
      • Types
      • elevation tokens are now strongly typed via the exported Elevation type, removing as ViewStyle casts throughout the library. A new public useDebouncedPress hook is exported for consumers.
      • Docs
      • The Storybook dashboard now documents PhotoToPuzzle, the first production app built on Native-UI, with a production-usage card linking to https://polprog.pl/apps/PhotoToPuzzle/.
  5. v1.4.0

    Stable

    • Ajouté

      feat(DatePickerInput): Full-featured cross-platform date/time picker

      • Added mode prop supporting date, time, and datetime modes
      • Added disabled, placeholder, testID, icon props
      • Implemented controlled open/close via isOpen / onOpen / onClose
      • Added clearable / onClear props for clearing selected value
      • Android datetime mode: two-step picker flow (date → time)
      • iOS: compact native picker with placeholder-first flow support
      • DEV-only console warning when peer dependency is missing
      • Created DateRangePickerInput composite component for date range selection
      • Storybook story with playground and multiple variants
  6. v1.3.1

    Stable

    • Corrigé

      Code quality sweep: performance, accessibility, and DRY improvements across 10 components.

      • Performance
      • ListItem - wrapped in React.memo
      • Chip - handlePress stabilised with useCallback.
      • SettingsRow / SettingsSwitchRow - merged iconColorMap memoised with useMemo.
      • Select - SelectRow.onPress closure replaced with stable value + onSelect props, eliminating per-option re-renders.
      • Countdown - onExpire moved to a ref to avoid unnecessary effect re-runs.
      • Accessibility
      • Modal - replaced incorrect accessibilityRole="alert" with accessibilityViewIsModal.
      • BottomSheet / Select sheet - replaced hardcoded paddingBottom: 34 with useSafeAreaInsets().bottom.
      • Select - replaced hardcoded maxHeight: 320 with 40% of window height for better scaling with large text sizes.
      • DRY / Maintainability
      • Extracted shared FieldLabel and FieldError components; refactored Input, TextArea, and Select to use them.
  7. v1.3.0

    Stable

    • Ajouté

      Component bug fixes, single-responsibility refactors, and a test-coverage push past 90%.

      • Fixes
      • SearchBar - honour parent-driven resets even when the debounce timer is in flight.
      • BottomTabBar - hide the badge for 0, negative, and empty-string counts.
      • Countdown - clear the interval the moment the counter expires instead of leaking timers.
      • BottomSheet - respect theme.reduceAnimations on exit, not only on enter.
      • Toast - treat duration: 0 as sticky rather than collapsing to the default 3 s timeout.
      • ErrorBoundary - treat resetKeys transitioning between defined and undefined (and back) as a reset trigger.
      • Refactor
      • Extracted helpers, hooks, and subcomponents across SearchBar, BottomTabBar, Countdown, BottomSheet, Toast, and ErrorBoundary for clearer single-responsibility boundaries.
      • Tests & infrastructure
      • Added suites for Avatar, Skeleton, ScreenContainer, Modal, BottomSheet, ConfettiOverlay, Select, InputPrompt, Divider, Heading, SectionLabel, PaginationDots, MarqueeText, PressableScale, responsive tokens, useResponsiveSpacing, and ThemeProvider.
      • Centralised React Native and Reanimated jest mocks, injected __DEV__ globally.
  8. v1.2.0

    Stable

    • Ajouté

      Add new components and full unit-test coverage.

      • New components
      • BottomTabBar - iOS-style bottom tab rail with badges, safe-area insets, accessibility roles (tab/tablist) and accessibilityState.selected.
      • Countdown - self-ticking countdown with hms/hm/ms/auto format variants, expiredLabel, onExpire callback and renderLabel transform.
      • StatTile - compact metric tile with label / value / optional caption, supporting tones (neutral/primary/success/warning/error), sizes (sm/md/lg), mono digits and align.
      • Tests & infrastructure
      • Added Jest + React Testing Library coverage for every component that can render in jsdom (Badge, BottomTabBar, Button, Card, Checkbox, Chip, Countdown, EmptyState, ErrorBoundary, HeaderBar, IconButton, Input, ListHeader, ListItem, ListSection, ListSwitchItem, ProgressBar, Radio, SearchBar, Section, SettingsRow, Spinner, StatTile, Switch, TextArea) plus export-shape tests for native-only components (Avatar, BottomSheet, ConfettiOverlay, InputPrompt, Modal, ScreenContainer, Select, Skeleton, Toast).
      • Raised the Jest coverage threshold to 50% across branches, functions, lines and statements (previously 25% for branches/functions).
      • Extended the react-native jsdom mock to expose aria-label / aria-selected / aria-disabled on TouchableOpacity and Pressable, and to suppress onValueChange on a disabled Switch.
      • Storybook
      • Added stories for BottomTabBar, Countdown and StatTile with play-tests for interaction flows.
      • Fixed play-tests for BottomTabBar (use role="tab") and IconButton (honour the 300 ms press debounce, allow pointer-events: none clicks on the disabled-state assertion).
      • Enabled MSW integration in the Storybook preview.
  9. v1.1.0

    Stable

    • Ajouté

      Added semantic tokens layer, strict TypeScript, ESLint a11y rules, and changesets for automated versioning.

  10. v1.0.0

    Stable

    Version stable

    • Ajouté

      Optional react-native-reanimated peer dependency: PressableScale gracefully falls back to an animated Animated.View when reanimated is not installed.

    • Ajouté

      usePressableScale headless hook for building custom pressables that reuse the library's press-scale animation curve.

    • Ajouté

      toast singleton facade so toasts can be triggered from anywhere without threading the useToast hook through the component tree.

    • Ajouté

      Monorepo tooling: husky pre-commit + pre-push hooks, lint-staged, jest coverageThreshold, Changesets-powered release flow.

    • Ajouté

      CONTRIBUTING.md, expanded README theming guide, documented tree-shaking and subpath import guarantees.

    • Ajouté

      Additional unit tests (Badge, Toast facade, usePressableScale, exports surface) - suite now at 188 tests.

    • Modifié

      package.json declares "sideEffects": false and ships per-component subpath exports (@polprog/native-ui/components/Button, etc.) to guarantee tree-shakeability.

    • Modifié

      README logo uses the compact Bracket-N logotype with dark-mode variant via <picture>.

  11. v0.1.0

    Alpha

    Version initiale

    • Ajouté

      Complete design system aligned 1:1 with platform-native metrics (platform defaults on Android).

    • Ajouté

      Typography scale tuned to the iOS system text styles (largeTitle 34/41, headline 17/22, body 17/22, footnote 13/18, caption2 11/13) with accurate letter-spacing.

    • Ajouté

      Primitive components: Box, VStack, HStack, Text, Heading, Divider, PressableScale.

    • Ajouté

      Component library: Button, Card, Checkbox, Chip, HeaderBar, IconButton, Input, InputPrompt, ListItem, ListSection, ListSwitchItem, Radio, ScreenContainer, SearchBar, Section, SettingsRow, Select, Skeleton, Spinner, Switch, TextArea, Toast, Avatar.

    • Ajouté

      Theme engine with NativeUIProvider, colour presets, dark/light mode, high-contrast mode, font-scale tiers.

    • Ajouté

      Full ESM + CJS + .d.ts output via tsup.

    • Ajouté

      178 unit tests covering tokens, primitives, components, and exports.

Expo React Native 0.74+ iOS Android Web TypeScript Accessible