Skip to content

Commit 827c7f6

Browse files
committed
Merge branch 'main' into feat/ease-text
Resolved conflicts: - src/types.ts: combine border/shadow/color transition map keys; extend TextAnimateProps Omit with view-only properties (border, shadow, elevation). - example/src/demos/index.ts: merge all demos, add Text section. - skills/react-native-ease-refactor/SKILL.md: keep EaseText classification, include new animatable props and category keys (border, shadow, color). Adjustments: - EaseText: pass through transformPerspective for parity with EaseView. - useColorTransition: track duration/easing/delay in effect deps; drop exhaustive-deps disable; move initialColor into a ref. - TextColorDemo/TextPropsDemo: replace inline color styles with StyleSheet entries (no-inline-styles warnings). - Docs: add EaseText sections to README.md, docs/docs/usage.mdx and docs/docs/api-reference.mdx; refresh AGENTS.md TextAnimateProps Omit list.
2 parents cb430ba + e3621ba commit 827c7f6

61 files changed

Lines changed: 19977 additions & 7849 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,32 @@ jobs:
141141
with:
142142
xcode-version: ${{ env.XCODE_VERSION }}
143143

144-
145144
- name: Build example for iOS
146145
run: |
147146
yarn turbo run build:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}"
147+
148+
build-tvos:
149+
runs-on: macos-latest
150+
151+
env:
152+
XCODE_VERSION: 26
153+
LANG: en_US.UTF-8
154+
LC_ALL: en_US.UTF-8
155+
RCT_USE_RN_DEP: 1
156+
RCT_USE_PREBUILT_RNCORE: 1
157+
158+
steps:
159+
- name: Checkout
160+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
161+
162+
- name: Setup
163+
uses: ./.github/actions/setup
164+
165+
- name: Use appropriate Xcode version
166+
uses: maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
167+
with:
168+
xcode-version: ${{ env.XCODE_VERSION }}
169+
170+
- name: Run tvOS Expo integration build
171+
run: |
172+
bash ./scripts/test-expo-tv-project.sh

.github/workflows/docs-check.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Docs build check
2+
env:
3+
YARN_ENABLE_HARDENED_MODE: 0
4+
on:
5+
push:
6+
branches:
7+
- main
8+
paths:
9+
- '.github/workflows/docs-check.yml'
10+
- docs/**
11+
pull_request:
12+
paths:
13+
- '.github/workflows/docs-check.yml'
14+
- docs/**
15+
jobs:
16+
build:
17+
if: github.repository == 'AppAndFlow/react-native-ease'
18+
runs-on: ubuntu-latest
19+
env:
20+
WORKING_DIRECTORY: docs
21+
steps:
22+
- uses: actions/checkout@v4
23+
- name: Use Node.js 20.x
24+
uses: actions/setup-node@v4
25+
with:
26+
node-version: 20.x
27+
- name: Install docs deps
28+
working-directory: ${{ env.WORKING_DIRECTORY }}
29+
run: yarn install
30+
- name: Build docs
31+
working-directory: ${{ env.WORKING_DIRECTORY }}
32+
run: yarn build

.github/workflows/docs-deploy.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Docs publish
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths:
7+
- docs/**
8+
9+
jobs:
10+
publish:
11+
if: github.repository == 'AppAndFlow/react-native-ease'
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Check out
15+
uses: actions/checkout@v4
16+
17+
- name: Build docs
18+
run: >-
19+
git config --local user.email "action@github.com"
20+
&& git config --local user.name "GitHub Action"
21+
&& cd docs
22+
&& yarn
23+
&& yarn build
24+
25+
- name: Publish generated content to GitHub Pages
26+
uses: JamesIves/github-pages-deploy-action@releases/v3
27+
with:
28+
FOLDER: docs/build
29+
BRANCH: gh-pages
30+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,6 @@ android/generated
8585
# React Native Nitro Modules
8686
nitrogen/
8787
.playwright-cli/
88+
89+
# Uniwind generated types
90+
uniwind-types.d.ts

.prettierignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
example/uniwind-types.d.ts
2+
example/src/uniwind-types.d.ts

AGENTS.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ transition={{ type: 'spring', damping: 10 }} → transitionType="spring", tran
6060

6161
**Why not native text color animation:** Fabric's text rendering pipeline (`RCTParagraphComponentView` on iOS) manages text via `NSAttributedString` in the shadow tree. The `attributedText` is readonly — color can't be mutated from outside the Fabric commit cycle. Android's `ReactTextView.setTextColor()` works, but iOS doesn't. JS interpolation keeps behavior consistent cross-platform.
6262

63-
**TextAnimateProps:** `Omit<AnimateProps, 'borderRadius' | 'backgroundColor'>`same transform/opacity props as EaseView. Color is handled separately via `interpolateColor`.
63+
**TextAnimateProps:** `Omit<AnimateProps, 'borderRadius' | 'backgroundColor' | 'borderWidth' | 'borderColor' | 'shadowOpacity' | 'shadowRadius' | 'shadowColor' | 'shadowOffset' | 'elevation'>` — transform/opacity props only; view-only properties (border, background, shadow, elevation) are excluded. Color is handled separately via `interpolateColor`.
6464

6565
## Adding a New Animatable Property
6666

@@ -73,6 +73,12 @@ transition={{ type: 'spring', damping: 10 }} → transitionType="spring", tran
7373
7. Add tests and update README
7474
8. Add an example/demo in the example app (`example/src/App.tsx` or a new screen)
7575

76+
**Important:** When adding or changing props/features, also update:
77+
- `README.md` (props table + usage section)
78+
- `docs/docs/usage.mdx` (usage guide)
79+
- `docs/docs/api-reference.mdx` (API reference table)
80+
- `skills/react-native-ease-refactor/SKILL.md` (supported properties list, transition category keys, decision tree)
81+
7682
## Development Commands
7783

7884
```sh

CONTRIBUTING.md

Lines changed: 14 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ The [example app](/example/) demonstrates usage of the library. You need to run
2525

2626
It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example app. Changes to the library's JavaScript code will be reflected in the example app without a rebuild, but native code changes will require a rebuild of the example app.
2727

28-
If you want to use Android Studio or Xcode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/EaseExample.xcworkspace` in Xcode and find the source files at `Pods > Development Pods > react-native-ease`.
28+
If you want to use Android Studio or Xcode to edit the native code, you can open the `example/android` or `example/ios` directories respectively in those editors. To edit the Objective-C or Swift files, open `example/ios/Ease.xcworkspace` in Xcode and find the source files at `Pods > Development Pods > react-native-ease`.
2929

3030
To edit the Java or Kotlin files, open `example/android` in Android studio and find the source files at `react-native-ease` under `Android`.
3131

3232
You can use various commands from the root directory to work with the project.
3333

34-
To start the packager:
34+
To start the example app packager:
3535

3636
```sh
3737
yarn example start
@@ -49,44 +49,31 @@ To run the example app on iOS:
4949
yarn example ios
5050
```
5151

52-
To confirm that the app is running with the new architecture, you can check the Metro logs for a message like this:
53-
54-
```sh
55-
Running "EaseExample" with {"fabric":true,"initialProps":{"concurrentRoot":true},"rootTag":1}
56-
```
57-
58-
Note the `"fabric":true` and `"concurrentRoot":true` properties.
59-
60-
Make sure your code passes TypeScript:
61-
62-
```sh
63-
yarn typecheck
64-
```
65-
66-
To check for linting errors, run the following:
52+
To run linting and type checks:
6753

6854
```sh
6955
yarn lint
7056
```
7157

72-
To fix formatting errors, run the following:
58+
To check formatting:
7359

7460
```sh
75-
yarn lint --fix
61+
yarn format:check
7662
```
7763

78-
79-
8064
### Scripts
8165

82-
The `package.json` file contains various scripts for common tasks:
66+
The root `package.json` contains these common scripts:
8367

84-
- `yarn`: setup project by installing dependencies.
85-
- `yarn typecheck`: type-check files with TypeScript.
86-
- `yarn lint`: lint files with [ESLint](https://eslint.org/).
68+
- `yarn`: install dependencies for the workspace.
69+
- `yarn format:check`: check Prettier and clang-format.
70+
- `yarn format:write`: write Prettier and clang-format fixes.
71+
- `yarn lint`: run ESLint and TypeScript checks for the library and example app.
72+
- `yarn test`: run the Jest test suite.
73+
- `yarn prepare`: build the library with `react-native-builder-bob`.
8774
- `yarn example start`: start the Metro server for the example app.
88-
- `yarn example android`: run the example app on Android.
8975
- `yarn example ios`: run the example app on iOS.
76+
- `yarn example android`: run the example app on Android.
9077

9178
### Sending a pull request
9279

@@ -95,7 +82,7 @@ The `package.json` file contains various scripts for common tasks:
9582
When you're sending a pull request:
9683

9784
- Prefer small pull requests focused on one change.
98-
- Verify that linters and tests are passing.
85+
- Verify that formatting, linting, tests, and any relevant example app checks are passing.
9986
- Review the documentation to make sure it looks good.
10087
- Follow the pull request template when opening a pull request.
10188
- For pull requests that change the API or implementation, discuss with maintainers first by opening an issue.

Ease.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Pod::Spec.new do |s|
1010
s.license = package["license"]
1111
s.authors = package["author"]
1212

13-
s.platforms = { :ios => min_ios_version_supported }
13+
s.platforms = { :ios => min_ios_version_supported, :tvos => min_ios_version_supported }
1414
s.source = { :git => "https://github.com/janicduplessis/react-native-ease.git", :tag => "#{s.version}" }
1515

1616
s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"

0 commit comments

Comments
 (0)