@dafaz-ui/react 3.0.5 → 4.0.0

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.
@@ -21,6 +21,10 @@ export const RadioItemUI = styled(RadioGroup.Item, {
21
21
  borderBottom: '2px solid $dafaz600',
22
22
  transition: 'border 0.1s linear',
23
23
 
24
+ '&:disabled': {
25
+ cursor: 'not-allowed',
26
+ },
27
+
24
28
  '&:focus,&[data-state="checked"]': {
25
29
  backgroundColor: '$dafaz600',
26
30
  borderColor: '$dafaz600',
@@ -108,6 +112,12 @@ export const Label = styled('label', {
108
112
  cursor: 'pointer',
109
113
 
110
114
  variants: {
115
+ disabled: {
116
+ true: {
117
+ opacity: 0.5,
118
+ cursor: 'not-allowed',
119
+ },
120
+ },
111
121
  size: {
112
122
  lg: {
113
123
  fontSize: '$xl',
@@ -121,6 +131,7 @@ export const Label = styled('label', {
121
131
  },
122
132
  },
123
133
  defaultVariants: {
134
+ disabled: false,
124
135
  size: 'md',
125
136
  },
126
137
  })
@@ -5,15 +5,21 @@ interface Item {
5
5
  id: string
6
6
  label: string
7
7
  value: string
8
+ disabled: boolean
8
9
  }
9
10
 
10
11
  interface RadioGroupProps extends RadioUIProps {
11
12
  items: Item[]
12
13
  }
13
14
 
14
- export function Radio({ items, size, ...props }: RadioGroupProps) {
15
+ export function Radio({
16
+ items,
17
+ size,
18
+ disabled = false,
19
+ ...props
20
+ }: RadioGroupProps) {
15
21
  return (
16
- <RadioUI {...props}>
22
+ <RadioUI disabled={disabled} {...props}>
17
23
  {items.map((item) => {
18
24
  return (
19
25
  <RadioItem
@@ -21,6 +27,7 @@ export function Radio({ items, size, ...props }: RadioGroupProps) {
21
27
  label={item.label}
22
28
  value={item.value}
23
29
  size={size}
30
+ disabled={disabled}
24
31
  />
25
32
  )
26
33
  })}
@@ -8,6 +8,11 @@ export const RadioUI = styled(RadioGroup.Root, {
8
8
  flexDirection: 'column',
9
9
  gap: '$4',
10
10
 
11
+ '&:disabled': {
12
+ opacity: 0.5,
13
+ cursor: 'not-allowed',
14
+ },
15
+
11
16
  variants: {
12
17
  size: {
13
18
  lg: {},
@@ -0,0 +1,36 @@
1
+ import { SelectUI, SelectUIProps, OptionUI } from './styles'
2
+
3
+ interface Item {
4
+ id: string
5
+ label: string
6
+ value: string
7
+ }
8
+
9
+ interface SelectProps {
10
+ items: Item[]
11
+ placeholder?: string
12
+ }
13
+
14
+ export function Select({
15
+ size,
16
+ placeholder,
17
+ items,
18
+ ...props
19
+ }: SelectUIProps & SelectProps) {
20
+ return (
21
+ <SelectUI size={size} {...props} defaultValue="">
22
+ <OptionUI className="placeholder" value="">
23
+ {placeholder}
24
+ </OptionUI>
25
+ {items.map((item) => {
26
+ return (
27
+ <OptionUI key={item.id} value={item.value}>
28
+ {item.label}
29
+ </OptionUI>
30
+ )
31
+ })}
32
+ </SelectUI>
33
+ )
34
+ }
35
+
36
+ Select.displayName = 'Select'
@@ -0,0 +1,83 @@
1
+ import type { ComponentProps } from 'react'
2
+ import { styled } from '../../styles'
3
+
4
+ export const SelectUI = styled('select', {
5
+ gap: '$2',
6
+ overflow: 'hidden',
7
+
8
+ background: 'transparent',
9
+ border: 'none',
10
+
11
+ fontFamily: '$app',
12
+ color: '$white',
13
+ fontWeight: '$regular',
14
+ cursor: 'pointer',
15
+
16
+ boxSizing: 'border-box',
17
+ borderRadius: '$md',
18
+ borderBottom: '2px solid $dafaz600',
19
+ transition: 'border 0.2s linear',
20
+
21
+ width: '100%',
22
+ margin: 0,
23
+ padding: '$1 $2',
24
+
25
+ '&:focus': {
26
+ outline: 0,
27
+ borderBottom: '2px solid $dafaz400',
28
+ },
29
+
30
+ '&:disabled': {
31
+ opacity: 0.5,
32
+ cursor: 'not-allowed',
33
+ },
34
+
35
+ variants: {
36
+ size: {
37
+ lg: {
38
+ fontSize: '$xl',
39
+ },
40
+ md: {
41
+ fontSize: '$lg',
42
+ },
43
+ sm: {
44
+ fontSize: '$md',
45
+ },
46
+ },
47
+ },
48
+
49
+ defaultVariants: {
50
+ size: 'md',
51
+ },
52
+ })
53
+
54
+ export interface SelectUIProps extends ComponentProps<typeof SelectUI> {
55
+ size?: 'sm' | 'md' | 'lg'
56
+ }
57
+
58
+ export const OptionUI = styled('option', {
59
+ backgroundColor: '$gray800',
60
+
61
+ '&.placeholder': {
62
+ backgroundColor: '$gray400',
63
+ },
64
+
65
+ variants: {
66
+ size: {
67
+ lg: {
68
+ fontSize: '$xl',
69
+ },
70
+ md: {
71
+ fontSize: '$lg',
72
+ },
73
+ sm: {
74
+ fontSize: '$md',
75
+ },
76
+ },
77
+ },
78
+ defaultVariants: {
79
+ size: 'md',
80
+ },
81
+ })
82
+
83
+ export interface OptionUIProps extends ComponentProps<typeof OptionUI> {}
@@ -30,7 +30,7 @@ export const TextAreaUI = styled('textarea', {
30
30
  },
31
31
 
32
32
  '&::placeholder': {
33
- fontSize: '$xl',
33
+ fontSize: '$lg',
34
34
  fontWeight: '$regular',
35
35
  color: '$white',
36
36
  opacity: 0.75,
package/src/index.tsx CHANGED
@@ -3,6 +3,7 @@ export * from './components/Button'
3
3
  export * from './components/CheckBox'
4
4
  export * from './components/Heading'
5
5
  export * from './components/Radio'
6
+ export * from './components/Select'
6
7
  export * from './components/Text'
7
8
  export * from './components/TextArea'
8
9
  export * from './components/TextInput'