korbit-ai[bot] commented on code in PR #33081:
URL: https://github.com/apache/superset/pull/33081#discussion_r2039331427


##########
superset-frontend/src/components/Alert/types.ts:
##########
@@ -16,12 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { Checkbox as AntCheckbox } from 'antd-v5';
-import type {
-  CheckboxProps as AntCheckboxProps,
-  CheckboxChangeEvent as AntCheckboxChangeEvent,
-} from 'antd-v5/es/checkbox';
+import type { PropsWithChildren } from 'react';
+import type { AlertProps as AntdAlertProps } from 'antd-v5/es/alert';
 
-export type CheckboxProps = AntCheckboxProps;
-export type CheckboxChangeEvent = AntCheckboxChangeEvent;
-export default AntCheckbox;
+export type AlertProps = PropsWithChildren<
+  Omit<AntdAlertProps, 'children'> & { roomBelow?: boolean }
+>;

Review Comment:
   ### Missing roomBelow property documentation <sub>![category 
Documentation](https://img.shields.io/badge/Documentation-7c3aed)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   The `roomBelow` property lacks documentation explaining its purpose and 
impact on the Alert component.
   
   ###### Why this matters
   Other developers may not understand when to use this property or what visual 
effect it has on the component.
   
   ###### Suggested change ∙ *Feature Preview*
   export type AlertProps = PropsWithChildren<
     Omit<AntdAlertProps, 'children'> & {
       /** Adds margin to the bottom of the alert when true */
       roomBelow?: boolean
     }
   >;
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/98774b62-f971-45c9-accb-637afa581402/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/98774b62-f971-45c9-accb-637afa581402?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/98774b62-f971-45c9-accb-637afa581402?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/98774b62-f971-45c9-accb-637afa581402?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/98774b62-f971-45c9-accb-637afa581402)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:17724e81-7bb7-4ed7-b24f-97082f9e0101 -->
   
   
   [](17724e81-7bb7-4ed7-b24f-97082f9e0101)



##########
superset-frontend/src/components/Layout/types.ts:
##########
@@ -16,5 +16,4 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-export * from './CronPicker';
+export type { LayoutProps, SiderProps } from 'antd-v5/es/layout';

Review Comment:
   ### Missing Type Abstraction Layer <sub>![category 
Design](https://img.shields.io/badge/Design-0d9488)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   Direct re-export of third-party types without abstraction or interface 
definition. This creates tight coupling to the antd-v5 library and makes it 
harder to change UI libraries in the future.
   
   ###### Why this matters
   If the project needs to switch UI libraries or upgrade to a significantly 
different version, all components using these types directly will need 
modifications. This violates the Dependency Inversion Principle.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   // Create local interface definitions
   export interface SupersetLayoutProps {
     // Define only the properties actually needed by the application
     className?: string;
     style?: React.CSSProperties;
     // ... other necessary props
   }
   
   export interface SupersetSiderProps {
     // Define only the properties actually needed by the application
     width?: number | string;
     collapsible?: boolean;
     // ... other necessary props
   }
   
   // Optionally provide type mapping if needed
   export type AntdLayoutProps = LayoutProps;
   export type AntdSiderProps = SiderProps;
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/1ff6beb1-9123-41a9-a46f-03bb620fda05/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/1ff6beb1-9123-41a9-a46f-03bb620fda05?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/1ff6beb1-9123-41a9-a46f-03bb620fda05?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/1ff6beb1-9123-41a9-a46f-03bb620fda05?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/1ff6beb1-9123-41a9-a46f-03bb620fda05)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:e664f1b4-ec15-4d05-96cf-3eb261d0a316 -->
   
   
   [](e664f1b4-ec15-4d05-96cf-3eb261d0a316)



##########
superset-frontend/src/components/Datasource/index.tsx:
##########
@@ -20,3 +20,4 @@ import ChangeDatasourceModal from './ChangeDatasourceModal';
 import DatasourceModal from './DatasourceModal';
 
 export { ChangeDatasourceModal, DatasourceModal };
+export type { DatasourceModalProps, ChangeDatasourceModalProps } from 
'./types';

Review Comment:
   ### Unconsolidated exports <sub>![category 
Design](https://img.shields.io/badge/Design-0d9488)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   Multiple export statements are used when a single consolidated export 
statement would be cleaner and more maintainable.
   
   ###### Why this matters
   Multiple export statements increase cognitive load when reading the code and 
make maintenance more difficult. They also make it less obvious what the 
module's public interface is at a glance.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   export { 
       ChangeDatasourceModal, 
       DatasourceModal,
       type DatasourceModalProps, 
       type ChangeDatasourceModalProps 
   } from './types';
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/4a095cff-d818-4fa5-bce6-3e5b5cc1d59f/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/4a095cff-d818-4fa5-bce6-3e5b5cc1d59f?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/4a095cff-d818-4fa5-bce6-3e5b5cc1d59f?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/4a095cff-d818-4fa5-bce6-3e5b5cc1d59f?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/4a095cff-d818-4fa5-bce6-3e5b5cc1d59f)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:6065aa67-606b-471a-9846-f79990f5bc61 -->
   
   
   [](6065aa67-606b-471a-9846-f79990f5bc61)



##########
superset-frontend/src/components/Form/Form.tsx:
##########
@@ -17,18 +17,16 @@
  * under the License.
  */
 import { Form as AntdForm } from 'antd-v5';
-import { FormProps, FormInstance, FormItemProps } from 'antd-v5/es/form';
+import { FormProps } from './types';
 
-function Form(props: FormProps) {
+function CustomForm(props: FormProps) {
   return <AntdForm {...props} />;
 }
 
-export default Object.assign(Form, {
+export const Form = Object.assign(CustomForm, {

Review Comment:
   ### Generic wrapper component name <sub>![category 
Readability](https://img.shields.io/badge/Readability-0284c7)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   The function name 'CustomForm' is less clear than naming it 'FormWrapper' or 
'EnhancedForm' to indicate its role as a wrapper component around AntdForm.
   
   ###### Why this matters
   Using 'Custom' as a prefix is too generic and doesn't convey the component's 
purpose of wrapping the Ant Design Form component with additional functionality.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   function FormWrapper(props: FormProps) {
     return <AntdForm {...props} />;
   }
   
   export const Form = Object.assign(FormWrapper, {
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/31e62ffd-8655-415b-a0fc-e449298ae49b/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/31e62ffd-8655-415b-a0fc-e449298ae49b?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/31e62ffd-8655-415b-a0fc-e449298ae49b?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/31e62ffd-8655-415b-a0fc-e449298ae49b?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/31e62ffd-8655-415b-a0fc-e449298ae49b)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:920c2c99-2d3b-4a4b-bb56-3c9eb72e72c9 -->
   
   
   [](920c2c99-2d3b-4a4b-bb56-3c9eb72e72c9)



##########
superset-frontend/src/components/IconButton/IconButton.stories.tsx:
##########
@@ -17,7 +17,7 @@
  * under the License.
  */
 import { Meta, StoryObj } from '@storybook/react';
-import { IconButton } from 'src/components/IconButton';
+import { IconButton } from '.';

Review Comment:
   ### Unclear Import Source <sub>![category 
Readability](https://img.shields.io/badge/Readability-0284c7)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   Using a bare dot import makes it less immediately clear which file is being 
imported from.
   
   ###### Why this matters
   Bare dot imports reduce code navigability and make it harder for developers 
to quickly understand the source of imports, especially in larger codebases.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   import { IconButton } from './IconButton';
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/3c612d6a-55c3-4467-a68c-bcc30f39b629/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/3c612d6a-55c3-4467-a68c-bcc30f39b629?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/3c612d6a-55c3-4467-a68c-bcc30f39b629?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/3c612d6a-55c3-4467-a68c-bcc30f39b629?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/3c612d6a-55c3-4467-a68c-bcc30f39b629)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:3314a89b-8760-4bc7-b691-779700ba751c -->
   
   
   [](3314a89b-8760-4bc7-b691-779700ba751c)



##########
superset-frontend/src/components/CertifiedBadge/types.ts:
##########
@@ -0,0 +1,25 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { IconType } from 'src/components/Icons/types';
+
+export interface CertifiedBadgeProps {
+  certifiedBy?: string;
+  details?: string;
+  size?: IconType['iconSize'];
+}

Review Comment:
   ### Missing interface property documentation <sub>![category 
Documentation](https://img.shields.io/badge/Documentation-7c3aed)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   The interface properties lack documentation explaining their purpose and 
constraints.
   
   ###### Why this matters
   Without property documentation, developers must guess the intended usage and 
limitations of these optional parameters, potentially leading to incorrect 
implementation.
   
   ###### Suggested change ∙ *Feature Preview*
   export interface CertifiedBadgeProps {
     /** The entity or person who certified this item */
     certifiedBy?: string;
     /** Additional certification information or context */
     details?: string;
     /** Size of the certification badge icon */
     size?: IconType['iconSize'];
   }
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2fb69b0b-1f86-4dd1-88de-31e3adc4c6e1/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2fb69b0b-1f86-4dd1-88de-31e3adc4c6e1?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2fb69b0b-1f86-4dd1-88de-31e3adc4c6e1?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2fb69b0b-1f86-4dd1-88de-31e3adc4c6e1?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2fb69b0b-1f86-4dd1-88de-31e3adc4c6e1)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:a83a980c-19c3-4c56-8317-54449572920d -->
   
   
   [](a83a980c-19c3-4c56-8317-54449572920d)



##########
superset-frontend/src/components/DatePicker/types.ts:
##########
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+export type { RangePickerProps } from 'antd-v5/es/date-picker';
+export type { DatePickerProps } from 'antd-v5';

Review Comment:
   ### Inconsistent antd type import paths <sub>![category 
Readability](https://img.shields.io/badge/Readability-0284c7)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   Inconsistent import paths for related types from the same library. 
RangePickerProps uses a specific path while DatePickerProps uses the root 
import.
   
   ###### Why this matters
   Having different import styles for related types from the same library makes 
the code harder to maintain and understand, as developers need to remember 
different import patterns.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   export type { RangePickerProps, DatePickerProps } from 
'antd-v5/es/date-picker';
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/f7e848f2-92f0-4049-81fe-218351a25174/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/f7e848f2-92f0-4049-81fe-218351a25174?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/f7e848f2-92f0-4049-81fe-218351a25174?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/f7e848f2-92f0-4049-81fe-218351a25174?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/f7e848f2-92f0-4049-81fe-218351a25174)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:54aab6c6-77af-4169-b643-0abac4eefcc6 -->
   
   
   [](54aab6c6-77af-4169-b643-0abac4eefcc6)



##########
superset-frontend/src/components/Collapse/types.ts:
##########
@@ -0,0 +1,23 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import type { CollapseProps as AntdCollapseProps } from 'antd-v5';
+
+export interface CollapseProps extends AntdCollapseProps {
+  animateArrows?: boolean;
+}

Review Comment:
   ### Missing property documentation in interface <sub>![category 
Documentation](https://img.shields.io/badge/Documentation-7c3aed)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   The interface CollapseProps extends AntdCollapseProps but lacks 
documentation for the additional property animateArrows
   
   ###### Why this matters
   Without property documentation, developers will need to look at 
implementation details to understand the purpose and behavior of the 
animateArrows property
   
   ###### Suggested change ∙ *Feature Preview*
   export interface CollapseProps extends AntdCollapseProps {
     /** Controls whether arrow indicators animate during expand/collapse 
transitions */
     animateArrows?: boolean;
   }
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/cd43a0f6-506d-4341-8fc5-29b9ef70675c/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/cd43a0f6-506d-4341-8fc5-29b9ef70675c?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/cd43a0f6-506d-4341-8fc5-29b9ef70675c?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/cd43a0f6-506d-4341-8fc5-29b9ef70675c?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/cd43a0f6-506d-4341-8fc5-29b9ef70675c)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:d38616cf-1f21-45fa-bffa-dbe6a6723055 -->
   
   
   [](d38616cf-1f21-45fa-bffa-dbe6a6723055)



##########
superset-frontend/src/components/FlashProvider/types.ts:
##########
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+type FlashMessageType = 'info' | 'alert' | 'danger' | 'warning' | 'success';
+export type FlashMessage = [FlashMessageType, string];

Review Comment:
   ### Unclear tuple type parameters <sub>![category 
Readability](https://img.shields.io/badge/Readability-0284c7)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   The tuple type definition is not as descriptive as it could be for 
understanding what the string represents.
   
   ###### Why this matters
   Using a tuple type with a generic 'string' makes it harder to understand at 
a glance what the string value represents in the context of a flash message.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   export type FlashMessage = {
     type: FlashMessageType;
     message: string;
   };
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2eb5e7d7-0bbc-4bf6-bf6f-e1ddc4ad4e5c/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2eb5e7d7-0bbc-4bf6-bf6f-e1ddc4ad4e5c?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2eb5e7d7-0bbc-4bf6-bf6f-e1ddc4ad4e5c?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2eb5e7d7-0bbc-4bf6-bf6f-e1ddc4ad4e5c?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/2eb5e7d7-0bbc-4bf6-bf6f-e1ddc4ad4e5c)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:f8883eff-6a1a-45e5-9943-168d2a761198 -->
   
   
   [](f8883eff-6a1a-45e5-9943-168d2a761198)



##########
superset-frontend/src/components/FlashProvider/types.ts:
##########
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+type FlashMessageType = 'info' | 'alert' | 'danger' | 'warning' | 'success';

Review Comment:
   ### Missing export for dependent type <sub>![category 
Readability](https://img.shields.io/badge/Readability-0284c7)</sub>
   
   <details>
     <summary>Tell me more</summary>
   
   ###### What is the issue?
   The FlashMessageType is not exported despite being used in an exported type.
   
   ###### Why this matters
   Not exporting the type makes it harder for other developers to understand 
what values are valid for FlashMessageType when importing FlashMessage.
   
   ###### Suggested change ∙ *Feature Preview*
   ```typescript
   export type FlashMessageType = 'info' | 'alert' | 'danger' | 'warning' | 
'success';
   ```
   
   
   ###### Provide feedback to improve future suggestions
   [![Nice 
Catch](https://img.shields.io/badge/👍%20Nice%20Catch-71BC78)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/35e16e76-181b-4d8a-986d-a6cfb0d8c1e8/upvote)
 
[![Incorrect](https://img.shields.io/badge/👎%20Incorrect-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/35e16e76-181b-4d8a-986d-a6cfb0d8c1e8?what_not_true=true)
  [![Not in 
Scope](https://img.shields.io/badge/👎%20Out%20of%20PR%20scope-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/35e16e76-181b-4d8a-986d-a6cfb0d8c1e8?what_out_of_scope=true)
 [![Not in coding 
standard](https://img.shields.io/badge/👎%20Not%20in%20our%20standards-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/35e16e76-181b-4d8a-986d-a6cfb0d8c1e8?what_not_in_standard=true)
 
[![Other](https://img.shields.io/badge/👎%20Other-white)](https://app.korbit.ai/feedback/aa91ff46-6083-4491-9416-b83dd1994b51/35e16e76-181b-4d8a-986d-a6cfb0d8c1e8)
   </details>
   
   <sub>
   
   💬 Looking for more details? Reply to this comment to chat with Korbit.
   </sub>
   
   <!--- korbi internal id:ab270d39-ac9b-46a3-b2d6-e4ab45e6e0a0 -->
   
   
   [](ab270d39-ac9b-46a3-b2d6-e4ab45e6e0a0)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to