@lunit/oui 1.3.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/assets/ic-copy-coordinates-outlined-20px.js +1 -1
  2. package/dist/components/Alert/Alert.utils.js +3 -3
  3. package/dist/components/Chip/Chip.utils.js +3 -3
  4. package/dist/components/TextField/TextArea.types.d.ts +2 -1
  5. package/dist/components/TextField/TextInput.js +5 -1
  6. package/dist/components/TextField/TextInput.styled.js +2 -1
  7. package/dist/components/TextField/TextInput.types.d.ts +6 -2
  8. package/dist/components/TextField/TextInput.utils.d.ts +3 -3
  9. package/dist/components/TextField/TextInput.utils.js +4 -2
  10. package/dist/components/TextField/components/Buttons.d.ts +7 -1
  11. package/dist/components/TextField/components/Buttons.js +15 -1
  12. package/dist/components/TextField/components/FileInput.d.ts +4 -0
  13. package/dist/components/TextField/components/FileInput.js +30 -0
  14. package/dist/components/Toggle/Toggle.d.ts +3 -0
  15. package/dist/components/Toggle/Toggle.js +16 -0
  16. package/dist/components/Toggle/Toggle.styled.d.ts +7 -0
  17. package/dist/components/Toggle/Toggle.styled.js +90 -0
  18. package/dist/components/Toggle/Toggle.types.d.ts +18 -0
  19. package/dist/components/Toggle/Toggle.types.js +1 -0
  20. package/dist/components/Toggle/index.d.ts +4 -0
  21. package/dist/components/Toggle/index.js +2 -0
  22. package/dist/components/UploadManager/UploadManager.js +2 -2
  23. package/dist/components/index.d.ts +1 -0
  24. package/dist/components/index.js +1 -0
  25. package/dist/icons/index.d.ts +1 -1
  26. package/dist/icons/index.js +1 -1
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.js +1 -0
  29. package/dist/presentations/Accordion/Accordion.d.ts +3 -0
  30. package/dist/presentations/Accordion/Accordion.js +21 -0
  31. package/dist/presentations/Accordion/Accordion.styled.d.ts +22 -0
  32. package/dist/presentations/Accordion/Accordion.styled.js +39 -0
  33. package/dist/presentations/Accordion/Accordion.types.d.ts +22 -0
  34. package/dist/presentations/Accordion/Accordion.types.js +1 -0
  35. package/dist/presentations/Accordion/index.d.ts +2 -0
  36. package/dist/presentations/Accordion/index.js +2 -0
  37. package/dist/presentations/AnalysisBar/AnalysisBar.d.ts +3 -0
  38. package/dist/presentations/AnalysisBar/AnalysisBar.js +26 -0
  39. package/dist/presentations/AnalysisBar/AnalysisBar.styled.d.ts +31 -0
  40. package/dist/presentations/AnalysisBar/AnalysisBar.styled.js +103 -0
  41. package/dist/presentations/AnalysisBar/AnalysisBar.types.d.ts +11 -0
  42. package/dist/presentations/AnalysisBar/AnalysisBar.types.js +1 -0
  43. package/dist/presentations/AnalysisBar/AnalysisBar.utils.d.ts +5 -0
  44. package/dist/presentations/AnalysisBar/AnalysisBar.utils.js +34 -0
  45. package/dist/presentations/AnalysisBar/HeatmapGraphIcon/HeatmapGraphSVG.d.ts +3 -0
  46. package/dist/presentations/AnalysisBar/HeatmapGraphIcon/HeatmapGraphSVG.js +3 -0
  47. package/dist/presentations/AnalysisBar/HeatmapGraphIcon/index.d.ts +7 -0
  48. package/dist/presentations/AnalysisBar/HeatmapGraphIcon/index.js +8 -0
  49. package/dist/presentations/AnalysisBar/index.d.ts +4 -0
  50. package/dist/presentations/AnalysisBar/index.js +2 -0
  51. package/dist/presentations/FreeText/FreeText.d.ts +3 -0
  52. package/dist/presentations/FreeText/FreeText.js +27 -0
  53. package/dist/presentations/FreeText/FreeText.types.d.ts +9 -0
  54. package/dist/presentations/FreeText/FreeText.types.js +1 -0
  55. package/dist/presentations/FreeText/index.d.ts +4 -0
  56. package/dist/presentations/FreeText/index.js +2 -0
  57. package/dist/presentations/Histogram/Histogram.d.ts +3 -0
  58. package/dist/presentations/Histogram/Histogram.js +15 -0
  59. package/dist/presentations/Histogram/Histogram.styled.d.ts +23 -0
  60. package/dist/presentations/Histogram/Histogram.styled.js +47 -0
  61. package/dist/presentations/Histogram/Histogram.types.d.ts +27 -0
  62. package/dist/presentations/Histogram/Histogram.types.js +1 -0
  63. package/dist/presentations/Histogram/Histogram.utils.d.ts +23 -0
  64. package/dist/presentations/Histogram/Histogram.utils.js +45 -0
  65. package/dist/presentations/Histogram/HistogramCharts.d.ts +3 -0
  66. package/dist/presentations/Histogram/HistogramCharts.js +20 -0
  67. package/dist/presentations/Histogram/HistogramTabs.d.ts +3 -0
  68. package/dist/presentations/Histogram/HistogramTabs.js +27 -0
  69. package/dist/presentations/Histogram/index.d.ts +4 -0
  70. package/dist/presentations/Histogram/index.js +2 -0
  71. package/dist/presentations/HorizonDivider/HorizonDivider.d.ts +3 -0
  72. package/dist/presentations/HorizonDivider/HorizonDivider.js +6 -0
  73. package/dist/presentations/HorizonDivider/HorizonDivider.types.d.ts +4 -0
  74. package/dist/presentations/HorizonDivider/HorizonDivider.types.js +1 -0
  75. package/dist/presentations/HorizonDivider/index.d.ts +4 -0
  76. package/dist/presentations/HorizonDivider/index.js +2 -0
  77. package/dist/presentations/Score/Score.d.ts +3 -0
  78. package/dist/presentations/Score/Score.js +9 -0
  79. package/dist/presentations/Score/Score.types.d.ts +13 -0
  80. package/dist/presentations/Score/Score.types.js +1 -0
  81. package/dist/presentations/Score/index.d.ts +4 -0
  82. package/dist/presentations/Score/index.js +2 -0
  83. package/dist/presentations/Statistic/Statistic.d.ts +3 -0
  84. package/dist/presentations/Statistic/Statistic.js +12 -0
  85. package/dist/presentations/Statistic/Statistic.styled.d.ts +11 -0
  86. package/dist/presentations/Statistic/Statistic.styled.js +17 -0
  87. package/dist/presentations/Statistic/Statistic.types.d.ts +11 -0
  88. package/dist/presentations/Statistic/Statistic.types.js +1 -0
  89. package/dist/presentations/Statistic/index.d.ts +4 -0
  90. package/dist/presentations/Statistic/index.js +2 -0
  91. package/dist/presentations/ToggleControl/ToggleControl.d.ts +3 -0
  92. package/dist/presentations/ToggleControl/ToggleControl.js +22 -0
  93. package/dist/presentations/ToggleControl/ToggleControl.styled.d.ts +15 -0
  94. package/dist/presentations/ToggleControl/ToggleControl.styled.js +27 -0
  95. package/dist/presentations/ToggleControl/ToggleControl.types.d.ts +21 -0
  96. package/dist/presentations/ToggleControl/ToggleControl.types.js +1 -0
  97. package/dist/presentations/ToggleControl/index.d.ts +4 -0
  98. package/dist/presentations/ToggleControl/index.js +2 -0
  99. package/dist/presentations/ToggleControlGroup/ToggleControlGroup.d.ts +3 -0
  100. package/dist/presentations/ToggleControlGroup/ToggleControlGroup.js +32 -0
  101. package/dist/presentations/ToggleControlGroup/ToggleControlGroup.styled.d.ts +4 -0
  102. package/dist/presentations/ToggleControlGroup/ToggleControlGroup.styled.js +9 -0
  103. package/dist/presentations/ToggleControlGroup/ToggleControlGroup.types.d.ts +21 -0
  104. package/dist/presentations/ToggleControlGroup/ToggleControlGroup.types.js +1 -0
  105. package/dist/presentations/ToggleControlGroup/index.d.ts +2 -0
  106. package/dist/presentations/ToggleControlGroup/index.js +2 -0
  107. package/dist/presentations/index.d.ts +9 -0
  108. package/dist/presentations/index.js +9 -0
  109. package/dist/presentations/presentations.styled.d.ts +3 -0
  110. package/dist/presentations/presentations.styled.js +91 -0
  111. package/dist/presentations/presentations.types.d.ts +12 -0
  112. package/dist/presentations/presentations.types.js +1 -0
  113. package/package.json +3 -1
@@ -0,0 +1,13 @@
1
+ import { PresentationElementSize } from '../presentations.types';
2
+ interface ScoreProps {
3
+ componentType: 'score';
4
+ title: string;
5
+ size?: PresentationElementSize;
6
+ metrics: {
7
+ value: string;
8
+ scoreType?: 'positive' | 'negative';
9
+ color?: string;
10
+ isFullColored?: boolean;
11
+ };
12
+ }
13
+ export type { ScoreProps };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import Score from './Score';
2
+ import { ScoreProps } from './Score.types';
3
+ export { Score };
4
+ export type { ScoreProps };
@@ -0,0 +1,2 @@
1
+ import Score from './Score';
2
+ export { Score };
@@ -0,0 +1,3 @@
1
+ import { StatisticProps } from './Statistic.types';
2
+ declare const Statistic: ({ componentType, title, layout, metrics, size, symbol, color, ...rest }: StatisticProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default Statistic;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box } from '@mui/material';
3
+ import { Container, HorizontalStatisticContainer, VerticalStatisticContainer, } from './Statistic.styled';
4
+ import { PresentationSymbolIcon, PresentationTypography } from '../presentations.styled';
5
+ const Statistic = ({ componentType = 'statistic', title, layout = 'vertical', metrics = '', size = 'medium', symbol, color, ...rest }) => {
6
+ return (_jsx(Container, { ...rest, sx: { width: '100%' }, children: layout === 'horizontal' ? (_jsxs(HorizontalStatisticContainer, { children: [_jsxs(Box, { sx: {
7
+ display: 'flex',
8
+ alignItems: 'center',
9
+ gap: '6px',
10
+ }, children: [symbol && (_jsx(PresentationSymbolIcon, { symbol: symbol, color: color })), _jsx(PresentationTypography, { size: size, children: title })] }), _jsx(PresentationTypography, { size: size, children: metrics })] })) : (_jsx(VerticalStatisticContainer, { title: title, metrics: metrics })) }));
11
+ };
12
+ export default Statistic;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export declare const Container: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
+ ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
4
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
5
+ export declare const HorizontalStatisticContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
6
+ ref?: ((instance: HTMLDivElement | null) => void) | React.RefObject<HTMLDivElement> | null | undefined;
7
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
8
+ export declare const VerticalStatisticContainer: ({ title, metrics, }: {
9
+ title: string;
10
+ metrics: string;
11
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, styled, Typography } from '@mui/material';
3
+ import theme from '../../theme';
4
+ export const Container = styled(Box)(({ theme }) => ({
5
+ display: 'flex',
6
+ }));
7
+ export const HorizontalStatisticContainer = styled(Box)({
8
+ display: 'flex',
9
+ flexDirection: 'row',
10
+ alignItems: 'center',
11
+ justifyContent: 'space-between',
12
+ gap: '6px',
13
+ width: '100%',
14
+ });
15
+ export const VerticalStatisticContainer = ({ title, metrics, }) => {
16
+ return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: '6px' }, children: [_jsx(Typography, { variant: "body8", color: theme.palette.neutralGrey[40], children: title }), _jsx(Typography, { variant: "body5", color: theme.palette.neutralGrey[0], children: metrics })] }));
17
+ };
@@ -0,0 +1,11 @@
1
+ import { BoxProps } from '@mui/material';
2
+ import { PresentationSymbolProps } from '../presentations.types';
3
+ export interface StatisticProps extends BoxProps {
4
+ componentType: 'statistic';
5
+ title: string;
6
+ layout?: 'horizontal' | 'vertical';
7
+ metrics?: string;
8
+ size?: 'small-dimmed' | 'small' | 'small-bold' | 'medium' | 'medium-bold' | 'large-bold';
9
+ symbol?: PresentationSymbolProps['symbol'];
10
+ color?: string;
11
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import Statistic from './Statistic';
2
+ import type { StatisticProps } from './Statistic.types';
3
+ export { Statistic };
4
+ export type { StatisticProps };
@@ -0,0 +1,2 @@
1
+ import Statistic from './Statistic';
2
+ export { Statistic };
@@ -0,0 +1,3 @@
1
+ import type { ToggleControlProps } from './ToggleControl.types';
2
+ declare const ToggleControl: ({ componentType, title, size, symbol, tooltip, color, isParent, disabled, bar, checked, isDimmed, onChange, }: ToggleControlProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default ToggleControl;
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { v4 as uuidV4 } from 'uuid';
3
+ import { Box } from '@mui/material';
4
+ import { ToggleControlContainer, ToggleControlOuter } from './ToggleControl.styled';
5
+ import { AnalysisBar } from '../AnalysisBar';
6
+ import { StyledToggle } from '../../components/Toggle/Toggle.styled';
7
+ import { PresentationSymbolIcon, PresentationTypography } from '../presentations.styled';
8
+ import { FreeText } from '../FreeText';
9
+ import { Statistic } from '../Statistic';
10
+ import { Tooltip } from '../../components';
11
+ import { Information } from '../../icons';
12
+ import theme from '../../theme';
13
+ const ToggleControl = ({ componentType = 'toggle', title, size = 'medium', symbol, tooltip = [], color, isParent = false, disabled = false, bar, checked, isDimmed = false, onChange, }) => {
14
+ const handleChange = (event) => {
15
+ onChange && onChange(event);
16
+ };
17
+ return (_jsxs(ToggleControlOuter, { "data-toggle-name": `toggle-control-${title?.replace(/\s/g, '-')}`, hasBar: !!bar, style: { marginBottom: isParent ? '4px' : '0' }, children: [_jsxs(ToggleControlContainer, { className: "toggle-inner-container", size: size, children: [_jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: '6px' }, className: "toggle-label", children: [!!tooltip.length && (_jsx(Tooltip, { arrow: true, size: "large", title: _jsx(Box, { sx: { display: 'flex', flexDirection: 'column', gap: '8px' }, children: tooltip.map((item) => (_jsxs(Box, { children: [item.componentType === 'freeText' && (_jsx(FreeText, { componentType: item.componentType, size: item.size, content: item.content })), item.componentType === 'statistic' && (_jsx(Statistic, { componentType: item.componentType, title: item.title, size: item.size, layout: item.layout, symbol: item.symbol, color: item.color }))] }, uuidV4()))) }), children: _jsx(Box, { sx: {
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ }, children: _jsx(Information, {}) }) })), symbol && (_jsx(PresentationSymbolIcon, { symbol: symbol, color: color, isDimmed: isDimmed || !checked })), _jsx(PresentationTypography, { size: size, sx: { color: checked && !isDimmed ? 'inherit' : theme.palette.neutralGrey[65] }, children: title })] }), _jsx(StyledToggle, { disabled: disabled, checked: checked, onChange: handleChange })] }), bar && (_jsx(Box, { sx: { paddingRight: '16px' }, children: _jsx(AnalysisBar, { isDimmed: isDimmed || !checked, componentType: bar.componentType, expressionValue: bar.expressionValue, expressionLevels: bar.expressionLevels, caption: bar.caption, segments: bar.segments }) }))] }));
21
+ };
22
+ export default ToggleControl;
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { PresentationElementSize } from '../presentations.types';
3
+ interface ToggleControlContainerProps {
4
+ size?: PresentationElementSize;
5
+ isGrouped?: boolean;
6
+ }
7
+ export declare const ToggleControlOuter: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
8
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
9
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
10
+ hasBar: boolean;
11
+ }, {}, {}>;
12
+ export declare const ToggleControlContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
13
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
14
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & ToggleControlContainerProps, {}, {}>;
15
+ export {};
@@ -0,0 +1,27 @@
1
+ import { Box, styled } from '@mui/material';
2
+ const getPadding = (size) => {
3
+ if (size === 'large-bold') {
4
+ return '14px 16px 14px 0';
5
+ }
6
+ return '0 16px 0 0';
7
+ };
8
+ export const ToggleControlOuter = styled(Box, { shouldForwardProp: (prop) => prop !== 'hasBar' })(({ hasBar }) => ({
9
+ display: 'flex',
10
+ flexDirection: 'column',
11
+ alignItems: 'flex-start',
12
+ gap: hasBar ? '10px' : '8px',
13
+ width: '100%',
14
+ height: hasBar ? 'auto' : '20px',
15
+ }));
16
+ export const ToggleControlContainer = styled(Box, {
17
+ shouldForwardProp: (prop) => !['size'].includes(prop.toString()),
18
+ })(({ size }) => {
19
+ return {
20
+ width: '100%',
21
+ display: 'flex',
22
+ justifyContent: 'space-between',
23
+ gap: '34px',
24
+ padding: getPadding(size),
25
+ alignItems: 'center',
26
+ };
27
+ });
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import { FreeTextProps } from '../FreeText';
3
+ import type { AnalysisBarProps } from '../AnalysisBar';
4
+ import type { PresentationElementSize, PresentationSymbol } from '../presentations.types';
5
+ import { StatisticProps } from '../Statistic';
6
+ export interface ToggleControlSpec {
7
+ componentType: 'toggle';
8
+ title: string;
9
+ size?: PresentationElementSize;
10
+ symbol?: PresentationSymbol;
11
+ color?: string;
12
+ checked: boolean;
13
+ tooltip?: (StatisticProps | FreeTextProps)[];
14
+ bar?: AnalysisBarProps;
15
+ }
16
+ export interface ToggleControlProps extends ToggleControlSpec {
17
+ isParent?: boolean;
18
+ isDimmed?: boolean;
19
+ disabled?: boolean;
20
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
21
+ }
@@ -0,0 +1,4 @@
1
+ import ToggleControl from './ToggleControl';
2
+ import type { ToggleControlProps, ToggleControlSpec } from './ToggleControl.types';
3
+ export { ToggleControl };
4
+ export type { ToggleControlProps, ToggleControlSpec };
@@ -0,0 +1,2 @@
1
+ import ToggleControl from './ToggleControl';
2
+ export { ToggleControl };
@@ -0,0 +1,3 @@
1
+ import type { ToggleControlGroupProps } from './ToggleControlGroup.types';
2
+ declare const ToggleControlGroup: ({ componentType, size, title, tooltip, bar, childToggles, disabled, checked, behavior, onChange, }: ToggleControlGroupProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default ToggleControlGroup;
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { v4 as uuidV4 } from 'uuid';
4
+ import { filter as _filter } from 'lodash';
5
+ import { ToggleControlGroupContainer } from './ToggleControlGroup.styled';
6
+ import ToggleControl from '../ToggleControl/ToggleControl';
7
+ const ToggleControlGroup = ({ componentType = 'toggleGroup', size = 'medium', title, tooltip = [], bar, childToggles, disabled, checked, behavior = 'multi', onChange, }) => {
8
+ const [toggleChecked, setToggleChecked] = useState(checked || _filter(childToggles, (child) => child.checked).length > 0);
9
+ const [childrenChecked, setChildrenChecked] = useState(childToggles?.map((child) => child.checked) || []);
10
+ const handleToggleChange = (event) => {
11
+ setToggleChecked(!toggleChecked);
12
+ onChange(event);
13
+ };
14
+ const handleMultiChange = (index) => {
15
+ const newState = [...childrenChecked];
16
+ newState[index] = !newState[index];
17
+ setChildrenChecked(newState);
18
+ };
19
+ const handleExclusiveChange = (index, event) => {
20
+ const newState = Array(childrenChecked.length).fill(false);
21
+ setChildrenChecked(newState);
22
+ newState[index] = event.target.checked;
23
+ setChildrenChecked(newState);
24
+ };
25
+ return (_jsxs(ToggleControlGroupContainer, { children: [_jsx(ToggleControl, { isParent: true, componentType: "toggle", bar: bar, disabled: disabled, size: size, title: title, tooltip: tooltip, checked: toggleChecked, onChange: handleToggleChange }), childToggles?.map((child, index) => {
26
+ return (_jsx(ToggleControl, { componentType: "toggle", title: child.title, size: size, tooltip: child.tooltip, symbol: child.symbol, color: child.color, isDimmed: !toggleChecked, checked: childrenChecked[index], disabled: !toggleChecked, onChange: (event) => {
27
+ behavior === 'multi' ? handleMultiChange(index) : handleExclusiveChange(index, event);
28
+ child.onChange(event);
29
+ } }, uuidV4()));
30
+ })] }));
31
+ };
32
+ export default ToggleControlGroup;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare const ToggleControlGroupContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
4
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
@@ -0,0 +1,9 @@
1
+ import { Box, styled } from '@mui/material';
2
+ export const ToggleControlGroupContainer = styled(Box)(() => {
3
+ return {
4
+ display: 'flex',
5
+ flexDirection: 'column',
6
+ alignItems: 'flex-start',
7
+ gap: '8px',
8
+ };
9
+ });
@@ -0,0 +1,21 @@
1
+ /// <reference types="react" />
2
+ import type { AnalysisBarProps } from '../AnalysisBar';
3
+ import { FreeTextProps } from '../FreeText';
4
+ import type { PresentationElementSize } from '../presentations.types';
5
+ import { StatisticProps } from '../Statistic';
6
+ import type { ToggleControlProps } from '../ToggleControl';
7
+ export type ToggleControlGroupBehavior = 'exclusive' | 'multi';
8
+ export interface ToggleGroupControlSpec {
9
+ componentType: 'toggleGroup';
10
+ title: string;
11
+ behavior?: ToggleControlGroupBehavior;
12
+ size?: PresentationElementSize;
13
+ tooltip?: (StatisticProps | FreeTextProps)[];
14
+ bar?: AnalysisBarProps;
15
+ checked: boolean;
16
+ childToggles: ToggleControlProps[];
17
+ }
18
+ export interface ToggleControlGroupProps extends ToggleGroupControlSpec {
19
+ onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
20
+ disabled?: boolean;
21
+ }
@@ -0,0 +1,2 @@
1
+ import ToggleControlGroup from './ToggleControlGroup';
2
+ export { ToggleControlGroup };
@@ -0,0 +1,2 @@
1
+ import ToggleControlGroup from './ToggleControlGroup';
2
+ export { ToggleControlGroup };
@@ -0,0 +1,9 @@
1
+ export * from './Accordion';
2
+ export * from './AnalysisBar';
3
+ export * from './FreeText';
4
+ export * from './Histogram';
5
+ export * from './HorizonDivider';
6
+ export * from './Score';
7
+ export * from './Statistic';
8
+ export * from './ToggleControl';
9
+ export * from './ToggleControlGroup';
@@ -0,0 +1,9 @@
1
+ export * from './Accordion';
2
+ export * from './AnalysisBar';
3
+ export * from './FreeText';
4
+ export * from './Histogram';
5
+ export * from './HorizonDivider';
6
+ export * from './Score';
7
+ export * from './Statistic';
8
+ export * from './ToggleControl';
9
+ export * from './ToggleControlGroup';
@@ -0,0 +1,3 @@
1
+ import type { PresentationSymbolProps, PresentationTypographyProps } from './presentations.types';
2
+ export declare const PresentationTypography: (props: PresentationTypographyProps) => import("react/jsx-runtime").JSX.Element;
3
+ export declare const PresentationSymbolIcon: ({ symbol, color, isDimmed, }: PresentationSymbolProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,91 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Typography } from '@mui/material';
3
+ import theme from '../theme';
4
+ export const PresentationTypography = (props) => {
5
+ const { size, ...rest } = props;
6
+ if (size === 'small-dimmed') {
7
+ return (_jsx(Typography, { variant: "body_m2", sx: { color: theme.palette.neutralGrey[40] }, ...rest }));
8
+ }
9
+ if (size === 'small') {
10
+ return (_jsx(Typography, { variant: "body8", ...rest }));
11
+ }
12
+ if (size === 'small-bold') {
13
+ return (_jsx(Typography, { variant: "body8", sx: { fontWeight: 'bold' }, ...rest }));
14
+ }
15
+ if (size === 'medium') {
16
+ return (_jsx(Typography, { variant: "body5", ...rest }));
17
+ }
18
+ if (size === 'medium-bold') {
19
+ return (_jsx(Typography, { variant: "body_b1", ...rest }));
20
+ }
21
+ if (size === 'large-bold') {
22
+ return (_jsx(Typography, { variant: "h9", ...rest }));
23
+ }
24
+ return _jsx(Typography, { ...rest });
25
+ };
26
+ export const PresentationSymbolIcon = ({ symbol, color = 'black', isDimmed = false, }) => {
27
+ if (symbol === 'circle') {
28
+ return (_jsx("div", { style: {
29
+ height: '100%',
30
+ width: '10px',
31
+ display: 'flex',
32
+ opacity: isDimmed ? 0.5 : 1,
33
+ }, children: _jsx("span", { style: {
34
+ height: '6px',
35
+ width: '6px',
36
+ backgroundColor: color,
37
+ borderRadius: '50%',
38
+ border: '1px solid black',
39
+ } }) }));
40
+ }
41
+ if (symbol === 'rectangle') {
42
+ return (_jsx("div", { style: {
43
+ height: '100%',
44
+ width: '10px',
45
+ display: 'flex',
46
+ opacity: isDimmed ? 0.5 : 1,
47
+ }, children: _jsx("span", { style: {
48
+ height: '10px',
49
+ width: '10px',
50
+ backgroundColor: color,
51
+ } }) }));
52
+ }
53
+ if (symbol === 'border-circle') {
54
+ return (_jsx("div", { style: {
55
+ height: '100%',
56
+ width: '10px',
57
+ display: 'flex',
58
+ opacity: isDimmed ? 0.5 : 1,
59
+ }, children: _jsx("span", { style: {
60
+ height: '10px',
61
+ width: '10px',
62
+ backgroundColor: color,
63
+ borderRadius: '50%',
64
+ border: '1px solid black',
65
+ } }) }));
66
+ }
67
+ if (symbol === 'border-rectangle') {
68
+ return (_jsx("div", { style: {
69
+ height: '100%',
70
+ width: '10px',
71
+ display: 'flex',
72
+ opacity: isDimmed ? 0.5 : 1,
73
+ }, children: _jsx("span", { style: {
74
+ height: '10px',
75
+ width: '10px',
76
+ backgroundColor: color,
77
+ border: '1px solid black',
78
+ } }) }));
79
+ }
80
+ // Fallback
81
+ return (_jsx("div", { style: {
82
+ height: '100%',
83
+ width: '10px',
84
+ display: 'flex',
85
+ opacity: isDimmed ? 0.5 : 1,
86
+ }, children: _jsx("span", { style: {
87
+ height: '10px',
88
+ width: '10px',
89
+ backgroundColor: 'black',
90
+ } }) }));
91
+ };
@@ -0,0 +1,12 @@
1
+ import { TypographyProps } from '@mui/material';
2
+ export type PresentationElementSize = 'small-dimmed' | 'small' | 'small-bold' | 'medium' | 'medium-bold' | 'large-bold';
3
+ export type PresentationSymbol = 'circle' | 'rectangle' | 'border-circle' | 'border-rectangle';
4
+ interface PresentationSymbolProps {
5
+ symbol?: PresentationSymbol;
6
+ color?: string;
7
+ isDimmed?: boolean;
8
+ }
9
+ interface PresentationTypographyProps extends TypographyProps {
10
+ size?: PresentationElementSize;
11
+ }
12
+ export type { PresentationSymbolProps, PresentationTypographyProps };
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lunit/oui",
3
- "version": "1.3.0",
3
+ "version": "2.0.1",
4
4
  "validate-branch-name": {
5
5
  "pattern": "^(main|develop)|(feature|fix|release|hotfix|qe)/.+$",
6
6
  "errorMsg": "The branch name is not correct. Please check the pattern. (ex. feature/add-something)"
@@ -77,6 +77,7 @@
77
77
  "terser-webpack-plugin": "^5.2.5",
78
78
  "tinycolor2": "^1.6.0",
79
79
  "typescript": "^4.9.5",
80
+ "victory": "^37.3.6",
80
81
  "web-vitals": "^2.1.4",
81
82
  "webpack": "^5.64.4",
82
83
  "webpack-dev-server": "^4.6.0",
@@ -196,6 +197,7 @@
196
197
  "storybook": "^7.6.6",
197
198
  "ts-loader": "^9.5.1",
198
199
  "typescript-eslint": "^8.18.1",
200
+ "uuid": "^11.1.0",
199
201
  "webpack-cli": "^5.1.4",
200
202
  "webpack-node-externals": "^3.0.0"
201
203
  },