已关闭
fix: 修改nativewind三方库77分支AI文档质量扫描整改 #20
fanwangah创建于 8月3日关闭于 28 天前
fix: 修改nativewind三方库77分支AI文档质量扫描整改 #20
已关闭
fanwangah创建于 8月3日关闭于 28 天前
从已删除 :br_rnoh0.77合入到CPF-RN/rntpc_nativewindbr_rnoh0.77
共 5 个文件变更+186-118
MREADME.md+4-48
@@ -40,19 +40,6 @@ npx tailwindcss init
40 40 
41### **在你的 tailwind.config.js 文件中添加所有组件文件的路径。**41### **在你的 tailwind.config.js 文件中添加所有组件文件的路径。**
42 42 
43-- V2.0.11
44- 
45-```diff
46-module.exports = {
47-- content: [],
48-+ content: ["./App.{js,jsx,ts,tsx}", "./screens/**/*.{js,jsx,ts,tsx}"],
49- theme: {
50- extend: {},
51- },
52- plugins: [],
53-}
54-```
55- 
56- V4.1.2443- V4.1.24
57 44 
58```diff45```diff
@@ -69,15 +56,6 @@ module.exports = {
69 56 
70### **修改你的 babel.config.js**57### **修改你的 babel.config.js**
71 58 
72-- V2.0.11
73- 
74-```diff
75-module.exports = {
76-- plugins: [],
77-+ plugins: ["@react-native-oh-tpl/nativewind/babel"],
78-};
79-```
80- 
81- V4.1.2459- V4.1.24
82 60 
83```diff61```diff
@@ -124,28 +102,6 @@ const config = getDefaultConfig(__dirname)
124 102 
125> [!WARNING] 使用时 import 的库名不变。103> [!WARNING] 使用时 import 的库名不变。
126 104 
127-- V2.0.11
128- 
129-```jsx
130-import React from 'react';
131-import { Text, View } from 'react-native';
132-import { styled } from 'nativewind';
133- 
134-const StyledView = styled(View)
135-const StyledText = styled(Text)
136-const NativewindDemo = () => {
137- return (
138- <StyledView className="flex-1 items-center justify-center">
139- <StyledText className="font-bold">
140- Hello,World.
141- </StyledText>
142- </StyledView>
143- )
144-}
145- 
146-export default NativewindDemo
147-```
148- 
149- V4.1.24<sup>+</sup>105- V4.1.24<sup>+</sup>
150 106 
151```jsx107```jsx
@@ -175,16 +131,16 @@ export default function App() {
175 131 
176| Name | Description | Type | Required | Platform | HarmonyOS Support |132| Name | Description | Type | Required | Platform | HarmonyOS Support |
177| -------------------------------- | ------------------------------------------------------------ | --------- | -------- | -------- | ----------------- |133| -------------------------------- | ------------------------------------------------------------ | --------- | -------- | -------- | ----------------- |
178-| withNativeWind<sup>4.1.24+</sup> | `withNativeWind` 是一个高阶组件,用于更新你的 Metro 配置文件,以提供 NativeWind 框架支持。 | component | no | All | yes |134+| withNativeWind | `withNativeWind` 是一个高阶组件,用于更新你的 Metro 配置文件,以提供 NativeWind 框架支持。 | component | no | All | yes |
179-| remapProps<sup>4.1.24+</sup> | NativeWind 提供了 `remapProps` 工具函数,简化对带有多个 `style` 属性的第三方组件的开发操作。 | component | no | All | yes |135+| remapProps | NativeWind 提供了 `remapProps` 工具函数,简化对带有多个 `style` 属性的第三方组件的开发操作。 | component | no | All | yes |
180-| cssInterop<sup>4.1.24+</sup> | 该函数会给组件打上标记,这样组件渲染时,运行时就能识别并将组件的 `className` 字符串转换为样式。 | component | no | All | yes |136+| cssInterop | 该函数会给组件打上标记,这样组件渲染时,运行时就能识别并将组件的 `className` 字符串转换为样式。 | component | no | All | yes |
181 137 
182### API138### API
183 139 
184| Name | Description | Type | Required | Platform | HarmonyOS Support |140| Name | Description | Type | Required | Platform | HarmonyOS Support |
185| ----------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------- | ----------------- |141| ----------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------- | ----------------- |
186| useColorScheme() | 用于获取设备的配色方案信息。 | () =>{colorScheme,setColorScheme} | no | All | yes |142| useColorScheme() | 用于获取设备的配色方案信息。 | () =>{colorScheme,setColorScheme} | no | All | yes |
187-| var<sup>4.1.24+</sup> | `vars` 是一个函数,接收一组 CSS 变量键值对象作为参数,并返回一个可在 React Native 组件中使用的样式对象。 | function | no | All | yes |143+| vars | `vars` 是一个函数,接收一组 CSS 变量键值对象作为参数,并返回一个可在 React Native 组件中使用的样式对象。 | function | no | All | yes |
188 144 
189## 遗留问题145## 遗留问题
190 146 
@@ -40,19 +40,6 @@ npx tailwindcss init
40 40 
41### **Add the file paths of all components to your `tailwind.config.js` file**41### **Add the file paths of all components to your `tailwind.config.js` file**
42 42 
43-- V2.0.11
44- 
45-```diff
46-module.exports = {
47-- content: [],
48-+ content: ["./App.{js,jsx,ts,tsx}", "./screens/**/*.{js,jsx,ts,tsx}"],
49- theme: {
50- extend: {},
51- },
52- plugins: [],
53-}
54-```
55- 
56- V4.1.2443- V4.1.24
57 44 
58```diff45```diff
@@ -69,15 +56,6 @@ module.exports = {
69 56 
70### **Modify your `babel.config.js`**57### **Modify your `babel.config.js`**
71 58 
72-- V2.0.11
73- 
74-```diff
75-module.exports = {
76-- plugins: [],
77-+ plugins: ["@react-native-oh-tpl/nativewind/babel"],
78-};
79-```
80- 
81- V4.1.2459- V4.1.24
82 60 
83```diff61```diff
@@ -124,28 +102,6 @@ The following code shows the basic use scenario of the repository:
124 102 
125> [!WARNING] The name of the imported repository remains unchanged.103> [!WARNING] The name of the imported repository remains unchanged.
126 104 
127-- V2.0.11
128- 
129-```jsx
130-import React from 'react';
131-import { Text, View } from 'react-native';
132-import { styled } from 'nativewind';
133- 
134-const StyledView = styled(View)
135-const StyledText = styled(Text)
136-const NativewindDemo = () => {
137- return (
138- <StyledView className="flex-1 items-center justify-center">
139- <StyledText className="font-bold">
140- Hello,World.
141- </StyledText>
142- </StyledView>
143- )
144-}
145- 
146-export default NativewindDemo
147-```
148- 
149- V4.1.24<sup>+</sup>105- V4.1.24<sup>+</sup>
150 106 
151```jsx107```jsx
@@ -175,16 +131,16 @@ export default function App() {
175 131 
176| Name | Description | Type | Required | Platform | HarmonyOS Support |132| Name | Description | Type | Required | Platform | HarmonyOS Support |
177| -------------------------------- | ------------------------------------------------------------ | --------- | -------- | -------- | ----------------- |133| -------------------------------- | ------------------------------------------------------------ | --------- | -------- | -------- | ----------------- |
178-| withNativeWind<sup>4.1.24+</sup> | withNativeWind is a higher order component that updates your Metro configuration to support NativeWind | component | no | All | yes |134+| withNativeWind | withNativeWind is a higher order component that updates your Metro configuration to support NativeWind | component | no | All | yes |
179-| remapProps<sup>4.1.24+</sup> | Nativewind provides the remapProps utility to simplify working with third-party components with multiple "style" props. | component | no | All | yes |135+| remapProps | Nativewind provides the remapProps utility to simplify working with third-party components with multiple "style" props. | component | no | All | yes |
180-| cssInterop<sup>4.1.24+</sup> | This function "tags" components so that when its rendered, the runtime will know to resolve component className strings into styles. | component | no | All | yes |136+| cssInterop | This function "tags" components so that when its rendered, the runtime will know to resolve component className strings into styles. | component | no | All | yes |
181 137 
182### API138### API
183 139 
184| Name | Description | Type | Required | Platform | HarmonyOS Support |140| Name | Description | Type | Required | Platform | HarmonyOS Support |
185| ----------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------- | ----------------- |141| ----------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -------- | -------- | ----------------- |
186| useColorScheme() | provides access to the devices color scheme. | () =>{colorScheme,setColorScheme} | no | All | yes |142| useColorScheme() | provides access to the devices color scheme. | () =>{colorScheme,setColorScheme} | no | All | yes |
187-| var<sup>4.1.24+</sup> | vars is a function that takes a dictionary of CSS variables and returns a style object that can be used in React Native components. | function | no | All | yes |143+| vars | vars is a function that takes a dictionary of CSS variables and returns a style object that can be used in React Native components. | function | no | All | yes |
188 144 
189## Known Issues145## Known Issues
190 146 
@@ -13,13 +13,6 @@
13 "deliveryWithInstall": true,13 "deliveryWithInstall": true,
14 "installationFree": false,14 "installationFree": false,
15 "pages": "$profile:main_pages",15 "pages": "$profile:main_pages",
cpf-manager
cpf-managercpf-manager8月3日

【AI-Review】【严重】【业务功能】【功能实现错误】删除 INTERNET 权限导致 Metro 开发服务器连接失败

● 问题:本 PR 删除了 requestPermissions 中的 ohos.permission.INTERNET 权限(原第18-22行)。但 example/harmony/entry/src/main/ets/pages/Index.ets 的 RNApp 配置中,jsBundleProvider 使用 AnyJSBundleProvider 按顺序尝试多个 provider,第一个就是 new MetroJSBundleProvider()。MetroJSBundleProvider 通过 HTTP 连接本地 Metro dev server(localhost:8081)拉取 JS bundle。HarmonyOS 中任何 TCP/HTTP 网络访问(包括 localhost 回环连接)均要求声明 ohos.permission.INTERNET,否则 socket 创建失败。

● 影响:严重。开发执行 npm start(scripts 中定义为 hdc rport tcp:8081 tcp:8081 && react-native start)启动 Metro dev server 后,应用启动时 MetroJSBundleProvider 因缺少 INTERNET 权限无法连接 localhost:8081,JS bundle 加载失败。虽然 AnyJSBundleProvider 会回退到 FileJSBundleProvider 和 ResourceJSBundleProvider,但这要求设备上已存在预打包的 bundle.harmony.js,Metro 的热重载开发流程被破坏。

● 建议:恢复 requestPermissions 中的 ohos.permission.INTERNET 权限声明。如确实需要在某些场景移除,应同步移除 Index.ets 中的 MetroJSBundleProvider 并确保打包流程始终生成 bundle.harmony.js。

likedislike
16- // below property is supported from 5.0.0 - it is needed by bundleManager.canOpenLink to check if the app can open some url
17- // "querySchemes": ["maps", "http", "https", "customDomain"],
18- "requestPermissions": [
19- {
20- "name": "ohos.permission.INTERNET"
21- },
22- ],
23 "metadata": [16 "metadata": [
24 {17 {
25 "name": "OPTLazyForEach",18 "name": "OPTLazyForEach",
@@ -0,0 +1,3 @@
1+{
2+ "presets": ["@react-native-ohos/nativewind/babel"]
cpf-manager
cpf-managercpf-manager8月3日

【AI-Review】【一般】【软件设计】【冗余重复代码】.babelrc 与 babel.config.js 配置重复导致 nativewind babel 预设被重复应用

● 问题:新增的 example/src/.babelrc 声明 "presets": ["@react-native-ohos/nativewind/babel"],但已存在的 example/babel.config.js 已经在 presets 中包含了 '@react-native-ohos/nativewind/babel'。Babel 7 中 babel.config.js 是项目级配置(应用于所有文件),.babelrc 是目录级相对配置(应用于该目录及子目录的文件),两者对 example/src/ 下的文件会合并生效——presets 数组会被拼接,最终对 example/src/index.tsx 的 @react-native-ohos/nativewind/babel 预设被应用两次。

● 影响:一般。nativewind babel 预设(实际指向 react-native-css-interop/babel,即 babel-plugin.ts)的 Program visitor 会在每次应用时遍历 AST 并尝试插入 createInteropElement 导入,重复应用可能导致多余的 AST 遍历开销,并增加构建行为的不确定性。同时两处配置维护负担增加,后续修改易遗漏其中一处。

● 建议:删除 example/src/.babelrc 文件。example/babel.config.js 已完整配置了 module:@react-native/babel-preset、@react-native-ohos/nativewind/babel 预设和 react-native-reanimated/plugin 插件,无需额外的 .babelrc。

likedislike
3+}
@@ -1,18 +1,178 @@
1-/*1+import "../../../global.css"
cpf-manager
cpf-managercpf-manager8月3日

【AI-Review】【致命】【基础代码问题】【代码逻辑错误】global.css 导入路径错误导致 Metro 打包失败

● 问题:第1行 import "../../../global.css" 的相对路径多退了两级目录。index.tsx 位于 example/src/ 目录下,../../../ 从 example/src/ 出发依次退到 example/ → 仓库根 → 仓库根的父目录,最终解析为 <仓库根父目录>/global.css,该文件不存在。实际 global.css 位于 example/global.css(已通过仓库文件系统确认),从 example/src/index.tsx 引用的正确路径应为 ../global.css。metro.config.js 中 withNativeWind(config2, { input: './global.css' }) 的 input 基于 example/ 解析为 example/global.css,withCssInterop 的 resolveRequest 先调用原始 resolver 解析模块路径,再与 options.input 比对——原始 resolver 解析 ../../../global.css 时找不到文件即抛出 "Unable to resolve module" 错误,不会进入虚拟模块替换分支。

● 影响:致命。Metro bundler 无法解析该导入,打包直接失败,应用无法启动。开发执行 npm run dev(react-native bundle-harmony)或 npm start(Metro dev server)均会报模块解析错误。

● 建议:将第1行改为 import "../global.css",与 base 版本一致。base 版本(commit 3a4acd5)使用的是 import "../global.css",本次 PR 改为 ../../../global.css 属于回归。

likedislike
2- * Copyright (c) 2025 Huawei Device Co., Ltd. All rights reserved2+import { Text, View, ScrollView, Button, TextInput, TouchableOpacity, StyleSheet } from 'react-native';
3- * Use of this source code is governed by a MIT license that can be3+import { vars, useColorScheme, remapProps, cssInterop } from 'nativewind';
4- * found in the LICENSE file.4+import { Tester, TestCase, TestSuite } from '@rnoh/testerino';
5- */
6 5 
7-import "../global.css"
8-import { Text, View } from "react-native";
9-
10export default function App() {6export default function App() {
11- return (7+ 
12- <View className="flex-1 items-center justify-center bg-white">8+ const { colorScheme, setColorScheme } = useColorScheme();
13- <Text className="text-xl font-bold text-blue-500">9+ const theme = vars({
14- Welcome to Nativewind!10+ "--theme-fg": "green",
15- </Text>11+ });
16- </View>12+ type ThirdPartyButtonProps = {
13+ buttonStyle?: any;
14+ labelStyle?: any;
15+ children?: React.ReactNode;
cpf-manager
cpf-managercpf-manager8月3日

【AI-Review】【一般】【基础代码问题】【代码逻辑错误】使用 React.ReactNode 类型未导入 React 命名空间

● 问题:第15行 children?: React.ReactNode; 引用了 React 命名空间,但本文件 import 部分(第1-4行)未导入 React。example/tsconfig.json extends @react-native/typescript-config(基于 @tsconfig/react-native,strict: true,未设置 allowUmdGlobalAccess)。@types/react 通过 export as namespace React 声明 UMD 全局,在模块文件(含 import/export 的文件)中 UMD 全局不会自动可用,TypeScript 报 TS2686:"'React' refers to a UMD global, but the current file is a module."。jsx: "react-native" 仅免除 JSX 对 React 的作用域要求,不影响类型注解中的命名空间引用。本仓库 example/src/ 目录下也无其他文件采用 "使用 React. 但不导入" 的写法。

● 影响:一般。TypeScript 类型检查报错,IDE 标红,tsc --noEmit 失败。Metro 打包使用 Babel 转译会忽略类型错误不影响运行,但类型检查流程被破坏。

● 建议:在第1-4行的 import 区域添加 import React from 'react';,或将类型改为 import('react').ReactNode,或直接 import { ReactNode } from 'react' 后使用 ReactNode。

likedislike
16+ [key: string]: any;
17+ };
18+ const ThirdPartyButton = ({ buttonStyle, labelStyle, children, ...props }: ThirdPartyButtonProps) => (
cpf-manager
cpf-managercpf-manager8月3日

【AI-Review】【一般】【软件设计】【其他软件设计问题】组件定义与 cssInterop/remapProps 调用放在 render 函数内部导致每次渲染重建组件

● 问题:ThirdPartyButton(第18行)、CustomizedButton(第23行 remapProps)、MyInput(第27行)、OverridenTextInput(第28行 remapProps)以及两个 cssInterop 调用(第30行 cssInterop(TextInput, ...)、第45行 cssInterop(Tester, ...))全部定义在 App() 函数体内。每次 App 渲染时,这些组件都会被重新创建为新的函数对象,React 会将其视为全新的组件类型,触发子树卸载并重新挂载。触发路径:用户点击第88-91行 "点击切换主题" Button → setColorScheme(...) → App 重新渲染 → ThirdPartyButton/CustomizedButton/MyInput/OverridenTextInput 重新创建 → React 卸载旧子树并挂载新子树 → 所有子组件内部状态丢失。

● 影响:一般。每次切换主题时,TextInput 中已输入的内容、Tester/TestCase 的内部状态全部丢失,组件被销毁重建。同时 cssInterop(TextInput, ...) 和 cssInterop(Tester, ...) 在每次渲染时重复调用,对全局组件反复注册 interop 映射,产生不必要的开销。

● 建议:将 ThirdPartyButton、CustomizedButton、MyInput、OverridenTextInput 的定义以及 cssInterop、remapProps 调用移到 App() 函数外部(模块级别),useColorScheme 和 vars 可保留在组件内或按需提取。参考 nativewind 官方文档,cssInterop 和 remapProps 应在模块级别调用一次。

likedislike
19+ <TouchableOpacity style={buttonStyle} {...props}>
20+ <Text style={labelStyle}>{children}</Text>
21+ </TouchableOpacity>
17 );22 );
18-}23+ const CustomizedButton = remapProps(ThirdPartyButton, {
24+ buttonClass: "buttonStyle",
25+ labelClass: "labelStyle",
26+ });
27+ const MyInput = (props) => <TextInput {...props} />;
cpf-manager
cpf-managercpf-manager8月3日

【AI-Review】【一般】【基础代码问题】【代码逻辑错误】MyInput 的 props 参数缺少类型标注触发隐式 any

● 问题:第27行 const MyInput = (props) => <TextInput {...props} />; 中 props 参数未声明类型。example/tsconfig.json extends @react-native/typescript-config,其 strict: true 启用 noImplicitAny,未标注类型的参数会被推断为 any 并报 TS7066:"'props' implicitly has an 'any' type."。同一文件中 ThirdPartyButton(第18行)已为 props 定义了 ThirdPartyButtonProps 类型,MyInput 未保持一致。

● 影响:一般。TypeScript 类型检查报错 TS7066,tsc --noEmit 失败。

● 建议:为 MyInput 的 props 添加类型标注,例如 const MyInput = (props: TextInputProps) => <TextInput {...props} />;(需从 'react-native' 导入 TextInputProps),或至少标注为 React.ComponentProps<typeof TextInput>。

likedislike
28+ const OverridenTextInput = remapProps(MyInput, { className: "style" });
29+ 
30+ cssInterop(TextInput, {
31+ className: {
32+ target: "style",
33+ nativeStyleToProp: {
34+ textAlign: true,
35+ },
36+ },
37+ placeholderClassName: {
38+ target: false,
39+ nativeStyleToProp: {
40+ color: "placeholderTextColor",
41+ },
42+ }
43+ });
44+ 
45+ cssInterop(Tester, {
46+ className: {
47+ target: "style",
48+ nativeStyleToProp: {
49+ textAlign: true,
50+ },
51+ }
52+ });
53+ return (
54+ <Tester className="flex-1 bg-black pt-20">
55+ <ScrollView>
56+ <Text className="text-4xl text-white font-bold">withNativeWind桥接</Text>
57+ <TestSuite name='hooks:withNativeWind()'>
58+ <TestCase itShould='withNativeWind()'>
59+ <View>
60+ <TextInput
61+ className="h-10 w-full p-2.5 border border-red-300 rounded-md
62+ text-base
63+ text-orange-700
64+ bg-red-500
65+ shadow
66+ "
67+ placeholderClassName="text-green-700"
68+ placeholder="placeholder"
69+ />
70+ </View>
71+ </TestCase>
72+ </TestSuite>
73+ 
74+ <Text className="text-4xl text-white font-bold">vars</Text>
75+ <TestSuite name='设置CSS 变量'>
76+ <View className="h-10"></View>
77+ <View style={vars({ '--brand-color': 'red' })}>
78+ <Text className="text-[--brand-color]" >
79+ Welcome to Nativewind!
80+ </Text>
81+ </View>
82+ <View className="h-10"></View>
83+ <View className="flex-1 justify-center items-center gap-10" style={theme}>
84+ <Text className="text-[--theme-fg]">Variables!!!</Text>
85+ </View>
86+ <View className="h-10"></View>
87+ </TestSuite>
88+ 
89+ <Text className="text-4xl text-white font-bold">useColorScheme</Text>
90+ <TestSuite name='hooks:useColorScheme()'>
91+ <TestCase tags={['C_API']} itShould='useColorScheme()'>
92+ <View style={{ height: 120, alignItems: 'center', justifyContent: 'center' }}>
93+ <View className='dark:bg-black w-60 h-8 rounded-md'>
94+ <Text className='dark:text-white leading-6 text-center' >{'light:白底黑字;dark:黑底白字'}</Text>
95+ </View>
96+ <View className='w-48 h-8 rounded-md'>
97+ <Text className='leading-6 text-center' >{colorScheme}</Text>
98+ </View>
99+ <Button
100+ title='点击切换主题'
101+ onPress={() => {
102+ setColorScheme(colorScheme === 'light' ? 'dark' : 'light')
103+ }}
104+ />
105+ </View>
106+ </TestCase>
107+ </TestSuite>
108+ <Text className="text-4xl text-white font-bold">remapProps</Text>
109+ <TestSuite name='hooks:remapProps()'>
110+ <TestCase itShould='remapProps()'>
111+ <View className="p-10">
112+ <CustomizedButton buttonClass="bg-blue-500 p-2" labelClass="text-white font-bold">
113+ 按钮
114+ </CustomizedButton>
115+ </View>
116+ <View className="px-10">
117+ <OverridenTextInput
118+ className="
119+ h-10
120+ w-full
121+ p-2
122+ border
123+ border-gray-300
124+ rounded-md
125+ text-base
126+ text-black
127+ bg-white
128+ shadow
129+ "
130+ placeholder="placeholder" keyboardType="numeric" />
131+ </View>
132+ <View className="h-10"></View>
133+ </TestCase>
134+ </TestSuite>
135+ <Text className="text-4xl text-white font-bold">cssInterop</Text>
136+ <TestSuite name='hooks:cssInterop()'>
137+ <TestCase itShould='cssInterop()'>
138+ <View className="p-10">
139+ <TextInput
140+ className="h-10 w-full p-2.5 border border-red-300 rounded-md
141+ text-base
142+ text-orange-700
143+ bg-white
144+ shadow
145+ "
146+ placeholderClassName="text-green-700"
147+ placeholder="placeholder"
148+ />
149+ </View>
150+ </TestCase>
151+ </TestSuite>
152+ <Text className="text-4xl text-white font-bold">withNativeWind</Text>
153+ <TestSuite name='hooks:withNativeWind()'>
154+ <TestCase itShould='withNativeWind()'>
155+ <View style={styles.button}>
156+ <Text style={styles.buttonText}>纯 StyleSheet 文本</Text>
157+ </View>
158+ </TestCase>
159+ </TestSuite>
160+ </ScrollView>
161+ </Tester>
162+ );
163+}
164+ 
165+const styles = StyleSheet.create({
166+ button: {
167+ backgroundColor: "#10B981",
168+ paddingVertical: 12,
169+ paddingHorizontal: 24,
170+ borderRadius: 6,
171+ alignItems: "center",
172+ },
173+ buttonText: {
174+ color: "#ffffff",
175+ fontWeight: "600",
176+ fontSize: 16,
177+ },
178+});