Wydania

Changelog

Każde publiczne wydanie Native-UI, najnowsze na górze. Wersje sprzed 1.0 są zachowane dla transparentności.

13 wydań 26 zmian
  1. v2.0.0

    Stabilna

    Wydanie poprawiające dostępność, konfigurację i odporność

    • Dodano

      Accessibility, configuration and robustness release. Breaking: see the "Upgrading to 2.0" guide in Storybook for every change that needs code edits.

      • Removed (deprecated since 1.x): useThemeColors (use useColors), Button variant="destructive" (use danger), typography amount / amountLarge / amountSmall (use mono*), Card longPressHint (use accessibilityHint), Select selectedValue / onValueChange (use value / onChange), unused Select tokens (titlePadding*, cancelPaddingVertical, cancelMarginTop, minBottomPadding).
      • Peer ranges now start at verified versions: React 19, React Native 0.84, Reanimated 4 (required), Safe Area Context 5, DateTimePicker 9.
      • usePressableScale always uses Reanimated; its result no longer has isReanimated and animatedStyle is a Reanimated animated style.
      • Color: new onPrimary, onSuccess, onWarning, onError, onInfo tokens computed with WCAG contrast (minTextContrast, default 4.5). Light-mode primary buttons now use dark text where white was unreadable (1.7:1 on the default green). textInverse is an alias of onPrimary. The default light error is now #DC2626 (white on the old #EF4444 was 3.8:1). getContrastText uses WCAG luminance. New helpers: contrastRatio, resolveOnColor, withAlpha.
      • Config: labels + locale localise every string the library renders (useLabels); spacing, borderRadius and components override global scales and per-component tokens (theme.components). The spacing scale gains smPlus (12) and mdPlus (20).
      • Toast: the action button is reachable by screen readers, iOS announces messages, auto-dismiss is extended (or paused for actionable toasts) while a screen reader runs, announce and defaultDuration options.
      • Modal / BottomSheet: VoiceOver escape gesture closes them; BottomSheet adds drag-to-dismiss, keyboard avoidance, Footer layout (row / fill / stacked), backgroundColor.
      • Button: haptic, renderBackground (gradients), labelStyle, numberOfLines, accessibilityHint, testID; reports busy and keeps its width while loading.
      • HeaderBar titleAlign, titleStyle, backButtonStyle; EmptyState size, node icon, fill.
      • Every component reads its dimensions from theme.components.<name> (badge, checkbox, radio, switch, chip, input, textArea, searchBar, datePicker, card, listItem, listHeader, settingsRow, statTile, bottomTabBar, pressable, and more), accepts StyleProp styles and forwards testID. Defaults are unchanged.
      • Unicode glyphs (✕, ✓, ›, ▼) are replaced by SystemIcon, which renders identically on iOS and Android and mirrors in RTL. Required field labels are announced as "<label>, required".
      • New: SegmentedControl, KeyboardLiftedFooter / useKeyboardLift, SystemIcon, useScreenReaderEnabled.
      • parseDecimalInput handles thousands grouping ("1 234,56", "1.234.567", "1'234.50") and accepts { decimalSeparator }; trailing garbage now returns NaN instead of a truncated number.
      • react-native-reanimated is now declared as a required peer dependency (it was already imported unconditionally).
      • Readable text colors: new primaryText, successText, warningText, errorText, infoText tokens, and textPrimary / textSecondary / textTertiary are held to minTextContrast on every surface. In the default light theme accent-colored text (ghost and secondary buttons, active tabs, selected chips and options, focus borders) becomes a darker green (#00E67A was 1.7:1 on white) and textTertiary gets darker; dark-mode tertiary text gets lighter. <Text> / <Heading> resolve color="primary" and feedback keys to the readable variants. The Bloom violet accent moves from #7c5cff to #7658f3 so white labels reach AA. New helpers ensureReadable and textColorOf.
      • Storybook now runs every story as a Vitest browser test with axe, including color contrast, on every story (@storybook/addon-vitest, replacing the test runner).
      • Visual polish: new color tokens controlTrack, controlThumb, controlBorder (3:1 non-text contrast for Switch off tracks, ProgressBar tracks, field and checkbox borders), surfaceSelected (SegmentedControl thumb, visible in dark mode), inverseSurface / onInverseSurface / inversePrimaryText (toasts now use the inverse surface by default, components.toast.appearance: 'surface' restores the old card). textSecondary is kept a visible step above textTertiary.
      • BottomTabBar shows an animated pill behind the active icon (components.bottomTabBar.indicator). Sheets cap at components.bottomSheet.maxWidth (640) and center on wide screens. Select's option sheet is now a BottomSheet (handle, drag, VoiceOver escape, separators, Cancel button).
      • Icons: every component accepts the shared IconSlot (render function ({ color, size }), node, or emoji string; renderIconSlot). ErrorBoundary uses a drawn alert icon. SystemIcon gains plus, minus, search, more.
      • Keyboard focus: themed focus ring (useFocusRing, components.focusRing) on all pressable controls, shown only for keyboard focus on web.
      • MarqueeText defaults its text to the theme textPrimary (it rendered black, unreadable in dark mode); a style colour still wins.
      • withErrorBoundary names wrapped anonymous components withErrorBoundary(Component) (it produced withErrorBoundary()).
  2. v1.7.2

    Stabilna

    • Naprawiono

      Fix type checking against React Native 0.87 and newer. Box and Stack no longer assign to readonly style properties, and the ref of Input, TextArea and SearchBar is typed as the TextInput instance via ComponentRef<typeof TextInput>, which matches older React Native versions as well. Input, TextArea and PressableScale now declare their exported types explicitly, so the published declarations no longer depend on React Native internal type names.

  3. v1.7.1

    Stabilna

    • Naprawiono

      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.

  4. v1.7.0

    Stabilna

    • Dodano

      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.

  5. v1.6.0

    Stabilna

    • Dodano

      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.
  6. v1.5.0

    Stabilna

    • Dodano

      Code-quality audit fixes across the component library.

  7. v1.4.0

    Stabilna

    • Dodano

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

  8. v1.3.1

    Stabilna

    • Naprawiono

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

  9. v1.3.0

    Stabilna

    • Dodano

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

  10. v1.2.0

    Stabilna

    • Dodano

      Add new components and full unit-test coverage.

  11. v1.1.0

    Stabilna

    • Dodano

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

  12. v1.0.0

    Stabilna

    Wydanie stabilne

    • Dodano

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

    • Dodano

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

    • Dodano

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

    • Dodano

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

    • Dodano

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

    • Dodano

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

    • Zmieniono

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

    • Zmieniono

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

  13. v0.1.0

    Alpha

    Wydanie początkowe

    • Dodano

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

    • Dodano

      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.

    • Dodano

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

    • Dodano

      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.

    • Dodano

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

    • Dodano

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

    • Dodano

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

Expo React Native 0.84+ iOS Android TypeScript Accessible