diff --git a/main/uis/Button/index.tsx b/main/uis/Button/index.tsx index f9d2d7be..7e1ce7e2 100644 --- a/main/uis/Button/index.tsx +++ b/main/uis/Button/index.tsx @@ -347,6 +347,7 @@ export function Button({ style={[ style, css` + flex-direction: row; border-radius: ${borderRadius + 'px'}; `, ]} diff --git a/main/uis/EditText/index.tsx b/main/uis/EditText/index.tsx index 2c652f38..54226959 100644 --- a/main/uis/EditText/index.tsx +++ b/main/uis/EditText/index.tsx @@ -53,20 +53,17 @@ type CustomRenderType = export type EditTextProps = { testID?: TextInputProps['testID']; inputRef?: MutableRefObject | RefObject; - required?: boolean; - style?: StyleProp; styles?: EditTextStyles; // Components - label?: string | RenderType; - error?: string | RenderType; startElement?: JSX.Element | CustomRenderType; endElement?: JSX.Element | CustomRenderType; - + required?: boolean; + label?: string | RenderType; + error?: string | RenderType; direction?: 'row' | 'column'; decoration?: 'underline' | 'boxed'; - value?: TextInputProps['value']; multiline?: TextInputProps['multiline']; onChange?: TextInputProps['onChange']; diff --git a/main/uis/Icon/index.tsx b/main/uis/Icon/index.tsx index 2df3c658..bb6a6d9b 100644 --- a/main/uis/Icon/index.tsx +++ b/main/uis/Icon/index.tsx @@ -3782,14 +3782,14 @@ export const doobooIconList = [ export type IconNames = typeof doobooIconList; export type IconName = IconNames[number]; -type Props = { +export type IconProps = { name: IconName; size?: number; color?: string; style?: ViewStyle; }; -const Ico: FC = createIconSetFromIcoMoon( +const Ico: FC = createIconSetFromIcoMoon( collectingFontIconSelection, 'doobooui', require('./doobooui.ttf'), diff --git a/main/uis/LoadingIndicator/index.tsx b/main/uis/LoadingIndicator/index.tsx index fe5f9416..0d5a6273 100644 --- a/main/uis/LoadingIndicator/index.tsx +++ b/main/uis/LoadingIndicator/index.tsx @@ -13,14 +13,14 @@ type Styles = { image?: ImageStyle; }; -type Props { +type Props = { style?: StyleProp; styles?: Styles; color?: string; size?: ActivityIndicator['props']['size']; imgSource?: string | ImageSourcePropType; customElement?: JSX.Element | (() => JSX.Element); -} +}; export function LoadingIndicator({ customElement, diff --git a/main/uis/NetworkImage/index.tsx b/main/uis/NetworkImage/index.tsx index 4f99e3c7..982cb5b5 100644 --- a/main/uis/NetworkImage/index.tsx +++ b/main/uis/NetworkImage/index.tsx @@ -18,13 +18,13 @@ const Container = styled.View` align-items: center; `; -interface Props { +type Props = { style?: StyleProp; url: string | undefined; loadingSource?: ImageSourcePropType | JSX.Element; imageProps?: Partial; shouldFixImageRatio?: boolean; -} +}; function NetworkImage(props: Props): JSX.Element { const {themeType} = useTheme(); diff --git a/stories/modals/AlertDialogStories/AlertDialog.stories.tsx b/stories/modals/AlertDialogStories/AlertDialog.stories.tsx index 1fbb4fab..3041d756 100644 --- a/stories/modals/AlertDialogStories/AlertDialog.stories.tsx +++ b/stories/modals/AlertDialogStories/AlertDialog.stories.tsx @@ -3,6 +3,7 @@ import type {Meta, StoryObj} from '@storybook/react'; import {DoobooProvider} from '../../../main'; import type AlertDialog from '../../../main/modals/AlertDialog'; +import {StoryContainer} from '../../GlobalStyles'; import Component from './AlertDialogBasicStory'; @@ -13,7 +14,9 @@ const meta = { decorators: [ (Story) => ( - + + + ), ], diff --git a/stories/modals/SnackbarStories/Snackbar.stories.tsx b/stories/modals/SnackbarStories/Snackbar.stories.tsx index 36f79944..1497eb2e 100644 --- a/stories/modals/SnackbarStories/Snackbar.stories.tsx +++ b/stories/modals/SnackbarStories/Snackbar.stories.tsx @@ -3,6 +3,7 @@ import type {Meta, StoryObj} from '@storybook/react'; import {DoobooProvider} from '../../../main'; import type Snackbar from '../../../main/modals/Snackbar'; +import {StoryContainer} from '../../GlobalStyles'; import Component from './SnackbarBasicStory'; @@ -13,7 +14,9 @@ const meta = { decorators: [ (Story) => ( - + + + ), ], diff --git a/stories/packages/CalendarCarousel.stories.tsx b/stories/packages/CalendarCarousel.stories.tsx new file mode 100644 index 00000000..d420f76b --- /dev/null +++ b/stories/packages/CalendarCarousel.stories.tsx @@ -0,0 +1,60 @@ +import type {ComponentProps} from 'react'; +import type {Meta, StoryObj} from '@storybook/react'; + +import {DoobooProvider} from '../../main'; +import CalendarCarousel from '../../packages/CalendarCarousel'; +import {StoryContainer} from '../GlobalStyles'; + +const meta = { + title: 'CalendarCarousel', + component: (props) => ( + + // } + // headerIconRight={ + // + // } + // locale={ko} + // style={css` + // margin-top: 80px; + // `} + /> + ), + argTypes: { + initialSelectedDate: { + control: 'date', + }, + showNextDates: { + control: 'boolean', + }, + showPrevDates: { + control: 'boolean', + }, + width: { + control: 'number', + }, + }, + decorators: [ + (Story) => ( + + + + + + ), + ], +} satisfies Meta>; + +export default meta; + +type Story = StoryObj; + +export const Basic: Story = { + args: {}, +}; diff --git a/stories/packages/CalendarCarouselStories/CalendarCarousel.stories.tsx b/stories/packages/CalendarCarouselStories/CalendarCarousel.stories.tsx deleted file mode 100644 index c07b48c0..00000000 --- a/stories/packages/CalendarCarouselStories/CalendarCarousel.stories.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import type {ComponentProps} from 'react'; -import type {Meta, StoryObj} from '@storybook/react'; - -import {DoobooProvider} from '../../../main'; -import type CalendarCarousel from '../../../packages/CalendarCarousel'; - -import Component from './CalendarCarouselBasicStory'; - -const meta = { - title: 'CalendarCarousel', - component: Component, - argTypes: {}, - decorators: [ - (Story) => ( - - - - ), - ], -} satisfies Meta>; - -export default meta; - -type Story = StoryObj; - -export const Basic: Story = { - args: {}, -}; diff --git a/stories/packages/CalendarCarouselStories/CalendarCarouselBasicStory.tsx b/stories/packages/CalendarCarouselStories/CalendarCarouselBasicStory.tsx deleted file mode 100644 index bc2cb650..00000000 --- a/stories/packages/CalendarCarouselStories/CalendarCarouselBasicStory.tsx +++ /dev/null @@ -1,55 +0,0 @@ -// Caveat: Expo web needs React to be imported -import React from 'react'; -import {useTheme} from '@dooboo-ui/theme'; -import {css} from '@emotion/native'; -import {ko} from 'date-fns/locale'; - -import {Icon} from '../../../main/uis/Icon'; -import CalendarCarousel from '../../../packages/CalendarCarousel'; -import {StoryWrapper} from '../../Common'; - -function CalendarCarouselBasicStory(): JSX.Element { - const {theme} = useTheme(); - - //TODO: Add more detailed example for CalendarCarousel - // const [currentDate, setCurrentDate] = useState(date); - // const [selectedDate, setSelectedDate] = useState(); - // const monthFormatter = new Intl.DateTimeFormat('default', {month: 'long'}); - // const markedDayEvents = [ - // { - // selectedEventDate: new Date(2020, 7, 7), - // events: 'Walk Dog with Neighbor', - // }, - // { - // selectedEventDate: new Date(2020, 7, 17), - // events: 'Birthday Party for Jessie', - // }, - // { - // selectedEventDate: new Date(2020, 7, 27), - // events: 'Cooking for Mom', - // }, - // ]; - - return ( - - - } - headerIconRight={ - - } - initialSelectedDate={new Date(2024, 11, 4)} - locale={ko} - showNextDates={true} - showPrevDates={true} - style={css` - margin-top: 80px; - `} - width={350} - /> - - ); -} - -export default CalendarCarouselBasicStory; diff --git a/stories/packages/PinchZoomStories/PinchZoom.stories.tsx b/stories/packages/PinchZoom.stories.tsx similarity index 60% rename from stories/packages/PinchZoomStories/PinchZoom.stories.tsx rename to stories/packages/PinchZoom.stories.tsx index 2a99d48b..047b3957 100644 --- a/stories/packages/PinchZoomStories/PinchZoom.stories.tsx +++ b/stories/packages/PinchZoom.stories.tsx @@ -1,10 +1,11 @@ import type {ComponentProps} from 'react'; import type {Meta, StoryObj} from '@storybook/react'; -import {DoobooProvider} from '../../../main'; -import type {PinchZoom} from '../../../packages/PinchZoom'; +import {DoobooProvider} from '../../main'; +import type {PinchZoom} from '../../packages/PinchZoom/lib'; +import {StoryContainer} from '../GlobalStyles'; -import Component from './PinchZoomImageListStory'; +import Component from './PinchZoomStories/PinchZoomImageListStory'; const meta = { title: 'PinchZoom', @@ -14,7 +15,9 @@ const meta = { decorators: [ (Story) => ( - + + + ), ], diff --git a/stories/uis/EditText.stories.tsx b/stories/uis/EditText.stories.tsx new file mode 100644 index 00000000..2854486d --- /dev/null +++ b/stories/uis/EditText.stories.tsx @@ -0,0 +1,55 @@ +import type {ComponentProps} from 'react'; +import {action} from '@storybook/addon-actions'; +import type {Meta, StoryObj} from '@storybook/react'; + +import {DoobooProvider, EditText} from '../../main'; +import {StoryWrapper} from '../Common'; + +const meta = { + title: 'EditText', + component: (props) => , + argTypes: { + required: {type: 'boolean'}, + label: {type: 'string'}, + error: {type: 'string'}, + value: {type: 'string'}, + multiline: {type: 'boolean'}, + placeholder: {type: 'string'}, + placeholderColor: {type: 'string'}, + editable: {type: 'boolean'}, + secureTextEntry: {type: 'boolean'}, + numberOfLines: {type: 'number'}, + maxLength: {type: 'number'}, + hideCounter: {type: 'boolean'}, + direction: { + control: 'select', + options: ['row', 'column'], + }, + decoration: { + control: 'select', + options: ['underline', 'boxed'], + }, + }, + decorators: [ + (Story) => ( + + + + + + ), + ], +} satisfies Meta>; + +export default meta; + +type Story = StoryObj; + +export const Basic: Story = { + args: { + onChangeText: (text: string) => action(text), + direction: 'column', + decoration: 'boxed', + editable: true, + }, +}; diff --git a/stories/uis/EditTextStories/EditText.stories.tsx b/stories/uis/EditTextStories/EditText.stories.tsx deleted file mode 100644 index 46f45d7f..00000000 --- a/stories/uis/EditTextStories/EditText.stories.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import type {ComponentProps} from 'react'; -import type {Meta, StoryObj} from '@storybook/react'; - -import type {EditText} from '../../../main'; -import {DoobooProvider} from '../../../main'; -import {StoryWrapper} from '../../Common'; - -import Component from './EditTextBasicStory'; - -const meta = { - title: 'EditText', - component: Component, - argTypes: {}, - decorators: [ - (Story) => ( - - - - - - ), - ], -} satisfies Meta>; - -export default meta; - -type Story = StoryObj; - -export const Basic: Story = { - args: {}, -}; diff --git a/stories/uis/EditTextStories/EditTextBasicStory.tsx b/stories/uis/EditTextStories/EditTextBasicStory.tsx deleted file mode 100644 index 7c547430..00000000 --- a/stories/uis/EditTextStories/EditTextBasicStory.tsx +++ /dev/null @@ -1,225 +0,0 @@ -// Caveat: Expo web needs React to be imported -import React, {useState} from 'react'; -import {useTheme} from '@dooboo-ui/theme'; -import {css} from '@emotion/native'; -import {boolean} from '@storybook/addon-knobs'; - -import {Button, Icon} from '../../../main'; -import type {EditTextStatus} from '../../../main/uis/EditText'; -import {EditText} from '../../../main/uis/EditText'; -import {Typography} from '../../../main/uis/Typography'; - -export default function EditTextBasicStory(): JSX.Element { - const {theme} = useTheme(); - const [text, setText] = useState(''); - - const onTextChanged = (str: string): void => setText(str); - - const renderCustomLabel = (status: EditTextStatus): JSX.Element => { - return ( - - Custom label [{status}] - - ); - }; - - return ( - <> - onTextChanged(str)} - placeholder="Basic text input" - secureTextEntry={boolean('secureTextEntry', false)} - style={{marginTop: 20}} - value={text} - /> - - onTextChanged(str)} - placeholder="Secure text input" - secureTextEntry={true} - style={{marginTop: 20}} - value={text} - /> - - onTextChanged('')} - text={ - - } - type="text" - /> - ) : null - } - label="Column" - maxLength={240} - onChangeText={(str) => onTextChanged(str)} - placeholder="direction: column" - secureTextEntry={boolean('secureTextEntry', false)} - startElement={ -