import React from 'react' import { type Meta, type StoryObj } from '@storybook/react-vite' import { DocsTemplate } from '../../../.storybook' import ToggleTable from './ToggleTable' import { ToggleProviderContext } from '../ToggleProvider/ToggleProvider' import { mockToggles, StandaloneToggleTableDemo, ToggleTableDemo, } from './toggle-stories-helper' const meta: Meta = { title: '[Internal Components]/DevTools/ToggleTable', component: ToggleTable, parameters: { layout: 'padded', docs: { page: () => ( ⚠️ {' '} INTERNAL USE ONLY: The ToggleTable{' '} component is designed exclusively for internal library use within DevTools and is not exported via the module.ts file. This component should not be used directly outside of the component library.

The ToggleTable component is a sophisticated table interface designed for managing feature toggles in development environments. It provides a comprehensive view of all feature toggles with advanced functionality for developers and administrators.

This component is primarily used in DevTools to allow developers to view, group, and override feature toggle values locally during development and testing. It integrates seamlessly with the{' '} ToggleProvider context to display live toggle data while providing local override capabilities. } infoBullets={[ Internal Use Only: This component is not part of the public API and should only be used within DevTools for development and debugging purposes. , Application Grouping: Toggles are automatically organized by application (Library, PXM, Predict, Shelf, Admin) for easy navigation. , Local Overrides: Developers can toggle switches to override CDN values locally using localStorage for testing purposes. , Visual Indicators: Rows are highlighted when local values differ from CDN values, making it easy to spot overrides. , Responsive Design: Table adapts to different screen sizes while maintaining functionality and readability. , Search Integration: Works with StandardTable search and filtering capabilities for quick toggle discovery. , Context Integration: Seamlessly consumes toggle data from ToggleProvider context when available. , ]} /> ), }, }, argTypes: { data: { description: 'Array of toggle data with key, enabled, and application properties', control: 'object', }, rerenderCallout: { description: 'Callback function to trigger re-renders when toggle values change', action: 'rerender', }, }, } export default meta type Story = StoryObj export const Default: Story = { render: () => ( ), } export const MinimalData: Story = { render: () => { const minimalData = [ { key: 'feature-a', enabled: true, application: 'Library' }, { key: 'feature-b', enabled: false, application: 'Library' }, { key: 'feature-c', enabled: true, application: 'PXM' }, ] return ( ({ ...item, name: item.key .split('-') .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) .join(' '), }))} title='Minimal Toggle Data' showDescription={false} /> ) }, } export const SingleApplication: Story = { render: () => { const libraryToggles = mockToggles.filter( (toggle) => toggle.application === 'Library', ) return ( ) }, } export const EmptyState: Story = { render: () => ( ), } export const LoadingState: Story = { render: () => ( ), }