diff --git a/package.json b/package.json
index 086847b..e92d67b 100644
--- a/package.json
+++ b/package.json
@@ -23,6 +23,7 @@
"dist/"
],
"dependencies": {
+ "@feewee/h5app-common": "^0.1.5",
"@modern-js/plugin-tailwindcss": "2.48.5",
"@modern-js/runtime": "2.48.5",
"ahooks": "^3.7.11",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5aee30c..a0c7cdc 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,6 +5,9 @@ settings:
excludeLinksFromLockfile: false
dependencies:
+ '@feewee/h5app-common':
+ specifier: ^0.1.5
+ version: 0.1.5(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.3)
'@modern-js/plugin-tailwindcss':
specifier: 2.48.5
version: 2.48.5(@modern-js/runtime@2.48.5)(tailwindcss@3.4.3)
@@ -1826,6 +1829,22 @@ packages:
- supports-color
dev: true
+ /@feewee/h5app-common@0.1.5(react-dom@18.2.0)(react@18.2.0)(tailwindcss@3.4.3):
+ resolution: {integrity: sha512-x2ow9qBrPZcQfFKI83XHD1vIOsPNcn6vzqb6t2DrDNVUCsnzufpk+a1BNSLVgCndHxhfCt2QHpPfwb5gXnMteg==}
+ engines: {node: '>=18', npm: '>=6.9.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ tailwindcss: ~3.3.3
+ dependencies:
+ '@nutui/icons-react': 1.0.4
+ '@nutui/nutui-react': 2.6.0(react-dom@18.2.0)(react@18.2.0)
+ clsx: 2.1.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ tailwindcss: 3.4.3
+ dev: false
+
/@humanwhocodes/config-array@0.11.14:
resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
@@ -2536,6 +2555,34 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
+ /@nutui/icons-react@1.0.4:
+ resolution: {integrity: sha512-nLFYpJvMBkKzT+PpfMaYoO6vJXMTM0yxAragTkEHt9HAFNjdTdvByCSRfUazHHdLdr1AJxS9h62VB1+jmBEtWA==}
+ dev: false
+
+ /@nutui/nutui-react@2.6.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-4/nfZ/br4mu7m+8qm4EsaO++Mxlxr5tpAEmEsgFghaxeZ2lZLcftJ7e7INzk8tV3IJuKMq7eA/J/BLbbrJldIA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@babel/runtime': 7.24.4
+ '@nutui/icons-react': 1.0.4
+ '@nutui/touch-emulator': 1.0.0
+ '@react-spring/web': 9.6.1(react-dom@18.2.0)(react@18.2.0)
+ '@use-gesture/react': 10.2.20(react@18.2.0)
+ async-validator: 4.2.5
+ classnames: 2.5.1
+ lodash.isequal: 4.5.0
+ lodash.kebabcase: 4.1.1
+ react: 18.2.0
+ react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0)
+ transitivePeerDependencies:
+ - react-dom
+ dev: false
+
+ /@nutui/touch-emulator@1.0.0:
+ resolution: {integrity: sha512-k2hvI/9LlRA7Ph1Chni27pTuvPmKPt+/I10sWWd2sWzqiCOYRerD79eIwCMRGUF/q6WVDEKVnv00t9CEUL4sPA==}
+ dev: false
+
/@pkgjs/parseargs@0.11.0:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -2581,6 +2628,60 @@ packages:
webpack: 5.91.0(esbuild@0.17.19)
dev: true
+ /@react-spring/animated@9.6.1(react@18.2.0):
+ resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@react-spring/shared': 9.6.1(react@18.2.0)
+ '@react-spring/types': 9.6.1
+ react: 18.2.0
+ dev: false
+
+ /@react-spring/core@9.6.1(react@18.2.0):
+ resolution: {integrity: sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@react-spring/animated': 9.6.1(react@18.2.0)
+ '@react-spring/rafz': 9.6.1
+ '@react-spring/shared': 9.6.1(react@18.2.0)
+ '@react-spring/types': 9.6.1
+ react: 18.2.0
+ dev: false
+
+ /@react-spring/rafz@9.6.1:
+ resolution: {integrity: sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ==}
+ dev: false
+
+ /@react-spring/shared@9.6.1(react@18.2.0):
+ resolution: {integrity: sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@react-spring/rafz': 9.6.1
+ '@react-spring/types': 9.6.1
+ react: 18.2.0
+ dev: false
+
+ /@react-spring/types@9.6.1:
+ resolution: {integrity: sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q==}
+ dev: false
+
+ /@react-spring/web@9.6.1(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-X2zR6q2Z+FjsWfGAmAXlQaoUHbPmfuCaXpuM6TcwXPpLE1ZD4A1eys/wpXboFQmDkjnrlTmKvpVna1MjWpZ5Hw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@react-spring/animated': 9.6.1(react@18.2.0)
+ '@react-spring/core': 9.6.1(react@18.2.0)
+ '@react-spring/shared': 9.6.1(react@18.2.0)
+ '@react-spring/types': 9.6.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/@redux-devtools/extension@3.3.0(redux@4.2.1):
resolution: {integrity: sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==}
peerDependencies:
@@ -3564,6 +3665,19 @@ packages:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
+ /@use-gesture/core@10.2.20:
+ resolution: {integrity: sha512-4lFhHc8so4yIHkBEs641DnEsBxPyhJ5GEjB4PURFDH4p/FcZriH6w99knZgI63zN/MBFfylMyb8+PDuj6RIXKQ==}
+ dev: false
+
+ /@use-gesture/react@10.2.20(react@18.2.0):
+ resolution: {integrity: sha512-KnJq9ZSqprWA6uNhWTUHZqTCh+rfa0j8ehTzqeBhktUPrmTj7yVOBvEQ/vSFU/7d72cGgWSsJ0f5T6GQCHXnvg==}
+ peerDependencies:
+ react: '>= 16.8.0'
+ dependencies:
+ '@use-gesture/core': 10.2.20
+ react: 18.2.0
+ dev: false
+
/@web3-storage/multipart-parser@1.0.0:
resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==}
@@ -3970,6 +4084,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /async-validator@4.2.5:
+ resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+ dev: false
+
/asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
@@ -4378,6 +4496,10 @@ packages:
safe-buffer: 5.2.1
dev: true
+ /classnames@2.5.1:
+ resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
+ dev: false
+
/clean-css@5.3.3:
resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
engines: {node: '>= 10.0'}
@@ -5004,6 +5126,13 @@ packages:
utila: 0.4.0
dev: true
+ /dom-helpers@5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+ dependencies:
+ '@babel/runtime': 7.24.4
+ csstype: 3.1.3
+ dev: false
+
/dom-serializer@1.4.1:
resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==}
dependencies:
@@ -7108,9 +7237,12 @@ packages:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
dev: true
+ /lodash.isequal@4.5.0:
+ resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+ dev: false
+
/lodash.kebabcase@4.1.1:
resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
- dev: true
/lodash.memoize@4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
@@ -8649,6 +8781,20 @@ packages:
react: 18.2.0
dev: false
+ /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+ dependencies:
+ '@babel/runtime': 7.24.4
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/react@18.2.0:
resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==}
engines: {node: '>=0.10.0'}
diff --git a/src/routes/demo/page.tsx b/src/routes/demo/page.tsx
new file mode 100644
index 0000000..86a7288
--- /dev/null
+++ b/src/routes/demo/page.tsx
@@ -0,0 +1,16 @@
+import { Helmet } from '@modern-js/runtime/head';
+import { ListRow } from '@feewee/h5app-common';
+
+const Index = () => (
+ <>
+
src/routes/page.tsx