summaryrefslogtreecommitdiff
path: root/app/components/switch/switch.story.tsx
blob: bbd29eea4ba338f568784b2ca90acd829785acc6 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/* eslint-disable react-native/no-inline-styles */
/* eslint-disable react-native/no-color-literals */

import * as React from 'react'
import { View, ViewStyle } from 'react-native'
import { storiesOf } from '@storybook/react-native'
import { StoryScreen, Story, UseCase } from '../../../storybook/views'
import { Toggle } from 'react-powerplug'
import { Switch } from './switch'

declare let module

const styleArray: ViewStyle[] = [{ borderColor: '#686868' }]

const trackOffStyle: ViewStyle[] = [
  { backgroundColor: '#686868' },
  {
    height: 80,
    borderRadius: 0,
  },
]
const trackOnStyle: ViewStyle[] = [
  {
    backgroundColor: '#b1008e',
    borderColor: '#686868',
  },
  {
    height: 80,
    borderRadius: 0,
  },
]
const thumbOffStyle: ViewStyle[] = [
  {
    backgroundColor: '#b1008e',
    borderColor: '#686868',
  },
  {
    height: 80,
    borderRadius: 0,
  },
]
const thumbOnStyle: ViewStyle[] = [
  { backgroundColor: '#f0c' },
  {
    height: 80,
    borderRadius: 0,
    borderColor: '#686868',
  },
]

storiesOf('Switch', module)
  .addDecorator((fn) => <StoryScreen>{fn()}</StoryScreen>)
  .add('Behaviour', () => (
    <Story>
      <UseCase
        text="The Toggle Switch"
        usage="Use the switch to represent on/off states."
      >
        <Toggle initial={false}>
          {({ on, toggle }) => <Switch value={on} onToggle={toggle} />}
        </Toggle>
      </UseCase>
      <UseCase text="value = true" usage="This is permanently on.">
        <Switch value={true} />
      </UseCase>
      <UseCase text="value = false" usage="This is permanantly off.">
        <Switch value={false} />
      </UseCase>
    </Story>
  ))
  .add('Styling', () => (
    <Story>
      <UseCase text="Custom Styling" usage="Promise me this won't happen.">
        <Toggle initial={false}>
          {({ on, toggle }) => (
            <View>
              <Switch
                trackOnStyle={{
                  backgroundColor: 'green',
                  borderColor: 'black',
                }}
                trackOffStyle={{
                  backgroundColor: 'red',
                  borderColor: 'maroon',
                }}
                thumbOnStyle={{ backgroundColor: 'cyan' }}
                thumbOffStyle={{ backgroundColor: 'pink' }}
                value={on}
                onToggle={toggle}
              />
            </View>
          )}
        </Toggle>
      </UseCase>

      <UseCase text="Style array" usage="This either.">
        <Toggle initial={false}>
          {({ on, toggle }) => (
            <View>
              <Switch
                style={styleArray}
                trackOffStyle={trackOffStyle}
                trackOnStyle={trackOnStyle}
                thumbOffStyle={thumbOffStyle}
                thumbOnStyle={thumbOnStyle}
                // trackOnStyle={{ backgroundColor: "green", borderColor: "black" }}
                // trackOffStyle={{ backgroundColor: "red", borderColor: "maroon" }}
                // thumbOnStyle={{ backgroundColor: "cyan" }}
                // thumbOffStyle={{ backgroundColor: "pink" }}

                value={on}
                onToggle={toggle}
              />
            </View>
          )}
        </Toggle>
      </UseCase>
    </Story>
  ))