@popsure/dirty-swan 0.59.0-alpha → 0.59.0-beta-2

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 (176) hide show
  1. package/dist/cjs/index.js +87 -93
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/lib/components/button/index.d.ts +1 -1
  4. package/dist/cjs/lib/components/cards/card/index.d.ts +4 -1
  5. package/dist/cjs/lib/components/cards/card/index.stories.d.ts +2 -1
  6. package/dist/cjs/lib/components/cards/infoCard/index.d.ts +9 -7
  7. package/dist/cjs/lib/components/cards/infoCard/index.stories.d.ts +23 -17
  8. package/dist/cjs/lib/components/input/currency/input.stories.d.ts +1 -0
  9. package/dist/cjs/lib/components/input/input.stories.d.ts +2 -1
  10. package/dist/cjs/lib/components/input/stories/config.d.ts +1 -0
  11. package/dist/cjs/lib/components/table/components/TableCell/BaseCell/BaseCell.d.ts +1 -1
  12. package/dist/cjs/lib/scss/public/borders.stories.d.ts +13 -0
  13. package/dist/esm/{Calendar-2d7e51b5.js → Calendar-5ad3eccf.js} +2 -2
  14. package/dist/esm/Calendar-5ad3eccf.js.map +1 -0
  15. package/dist/esm/{TableSection-5277dae1.js → TableSection-018d8e8f.js} +1 -1
  16. package/dist/esm/{TableSection-5277dae1.js.map → TableSection-018d8e8f.js.map} +1 -1
  17. package/dist/esm/components/accordion/index.js +2 -2
  18. package/dist/esm/components/accordion/index.js.map +1 -1
  19. package/dist/esm/components/button/index.js +4 -5
  20. package/dist/esm/components/button/index.js.map +1 -1
  21. package/dist/esm/components/button/index.stories.js +5 -9
  22. package/dist/esm/components/button/index.stories.js.map +1 -1
  23. package/dist/esm/components/cards/card/index.js +6 -6
  24. package/dist/esm/components/cards/card/index.js.map +1 -1
  25. package/dist/esm/components/cards/card/index.stories.js +8 -3
  26. package/dist/esm/components/cards/card/index.stories.js.map +1 -1
  27. package/dist/esm/components/cards/cardButton/index.js +6 -4
  28. package/dist/esm/components/cards/cardButton/index.js.map +1 -1
  29. package/dist/esm/components/cards/cardButton/index.stories.js +2 -2
  30. package/dist/esm/components/cards/cardButton/index.stories.js.map +1 -1
  31. package/dist/esm/components/cards/index.js +7 -21
  32. package/dist/esm/components/cards/index.js.map +1 -1
  33. package/dist/esm/components/cards/infoCard/index.js +34 -8
  34. package/dist/esm/components/cards/infoCard/index.js.map +1 -1
  35. package/dist/esm/components/cards/infoCard/index.stories.js +44 -31
  36. package/dist/esm/components/cards/infoCard/index.stories.js.map +1 -1
  37. package/dist/esm/components/comparisonTable/components/AccordionItem/AccordionItem.js +1 -1
  38. package/dist/esm/components/comparisonTable/components/Chevron.js +1 -1
  39. package/dist/esm/components/comparisonTable/components/Chevron.js.map +1 -1
  40. package/dist/esm/components/comparisonTable/components/Row/index.js +1 -1
  41. package/dist/esm/components/comparisonTable/components/TableArrows/index.js +1 -1
  42. package/dist/esm/components/comparisonTable/components/TableInfoButton/index.js +3 -3
  43. package/dist/esm/components/comparisonTable/components/TableInfoButton/index.js.map +1 -1
  44. package/dist/esm/components/comparisonTable/components/TableRating/index.js +1 -1
  45. package/dist/esm/components/comparisonTable/components/TableTrueFalse.js +2 -2
  46. package/dist/esm/components/comparisonTable/components/TableTrueFalse.js.map +1 -1
  47. package/dist/esm/components/comparisonTable/index.js +2 -2
  48. package/dist/esm/components/comparisonTable/index.js.map +1 -1
  49. package/dist/esm/components/dateSelector/components/Calendar.js +1 -1
  50. package/dist/esm/components/dateSelector/index.js +1 -1
  51. package/dist/esm/components/dateSelector/index.stories.js +1 -1
  52. package/dist/esm/components/dateSelector/index.test.js +1 -1
  53. package/dist/esm/components/icon/icons/BasketballSports.js +2 -2
  54. package/dist/esm/components/icon/icons/BasketballSports.js.map +1 -1
  55. package/dist/esm/components/icon/icons/BookOpen.js +2 -2
  56. package/dist/esm/components/icon/icons/BookOpen.js.map +1 -1
  57. package/dist/esm/components/icon/icons/Heart.js +2 -2
  58. package/dist/esm/components/icon/icons/Heart.js.map +1 -1
  59. package/dist/esm/components/icon/icons/Info.js +2 -2
  60. package/dist/esm/components/icon/icons/Info.js.map +1 -1
  61. package/dist/esm/components/icon/icons/Star.js +2 -2
  62. package/dist/esm/components/icon/icons/Star.js.map +1 -1
  63. package/dist/esm/components/icon/icons.stories.js +1 -1
  64. package/dist/esm/components/icon/index.stories.js +1 -1
  65. package/dist/esm/components/input/currency/input.stories.js +1 -1
  66. package/dist/esm/components/input/index.js +5 -5
  67. package/dist/esm/components/input/index.js.map +1 -1
  68. package/dist/esm/components/input/input.stories.js +3 -3
  69. package/dist/esm/components/input/input.stories.js.map +1 -1
  70. package/dist/esm/components/input/toggle/index.js +1 -1
  71. package/dist/esm/components/modal/index.stories.js +7 -7
  72. package/dist/esm/components/modal/index.stories.js.map +1 -1
  73. package/dist/esm/components/segmentedControl/index.js +1 -1
  74. package/dist/esm/components/table/Table.js +4 -5
  75. package/dist/esm/components/table/Table.js.map +1 -1
  76. package/dist/esm/components/table/Table.stories.js +1 -1
  77. package/dist/esm/components/table/Table.test.js +1 -1
  78. package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.js +3 -3
  79. package/dist/esm/components/table/components/TableCell/BaseCell/BaseCell.js.map +1 -1
  80. package/dist/esm/components/table/components/TableCell/ButtonCell/ButtonCell.js +2 -2
  81. package/dist/esm/components/table/components/TableCell/ButtonCell/ButtonCell.js.map +1 -1
  82. package/dist/esm/components/table/components/TableCell/TableCell.js +1 -1
  83. package/dist/esm/components/table/components/TableCell/TableCell.js.map +1 -1
  84. package/dist/esm/components/table/components/TableContents/TableContents.js +6 -5
  85. package/dist/esm/components/table/components/TableContents/TableContents.js.map +1 -1
  86. package/dist/esm/components/table/components/TableContents/TableContents.test.js +1 -1
  87. package/dist/esm/components/table/components/TableControls/TableControls.js +4 -3
  88. package/dist/esm/components/table/components/TableControls/TableControls.js.map +1 -1
  89. package/dist/esm/components/table/components/TableSection/TableSection.js +1 -1
  90. package/dist/esm/components/table/components/TableSection/TableSection.test.js +1 -1
  91. package/dist/esm/{config-4b5ffe4f.js → config-bc609993.js} +3 -2
  92. package/dist/esm/config-bc609993.js.map +1 -0
  93. package/dist/esm/{index-d2e06251.js → index-7427c96f.js} +11 -11
  94. package/dist/esm/{index-d2e06251.js.map → index-7427c96f.js.map} +1 -1
  95. package/dist/esm/index.js +3 -3
  96. package/dist/esm/lib/components/button/index.d.ts +1 -1
  97. package/dist/esm/lib/components/cards/card/index.d.ts +4 -1
  98. package/dist/esm/lib/components/cards/card/index.stories.d.ts +2 -1
  99. package/dist/esm/lib/components/cards/infoCard/index.d.ts +9 -7
  100. package/dist/esm/lib/components/cards/infoCard/index.stories.d.ts +23 -17
  101. package/dist/esm/lib/components/input/currency/input.stories.d.ts +1 -0
  102. package/dist/esm/lib/components/input/input.stories.d.ts +2 -1
  103. package/dist/esm/lib/components/input/stories/config.d.ts +1 -0
  104. package/dist/esm/lib/components/table/components/TableCell/BaseCell/BaseCell.d.ts +1 -1
  105. package/dist/esm/lib/scss/public/borders.stories.d.ts +13 -0
  106. package/dist/esm/scss/public/borders.stories.js +86 -0
  107. package/dist/esm/scss/public/borders.stories.js.map +1 -0
  108. package/dist/index.css +212 -122
  109. package/dist/index.css.map +1 -1
  110. package/dist/lib/scss/index.scss +1 -0
  111. package/dist/lib/scss/private/base/_typography.scss +21 -52
  112. package/dist/lib/scss/private/borders/_index.scss +1 -0
  113. package/dist/lib/scss/private/borders/default.scss +61 -0
  114. package/dist/lib/scss/private/components/_buttons.scss +105 -63
  115. package/dist/lib/scss/private/components/_cards.scss +2 -1
  116. package/dist/lib/scss/private/components/_input.scss +32 -26
  117. package/dist/lib/scss/private/components/_spinner.scss +2 -2
  118. package/dist/lib/scss/public/borders.stories.tsx +124 -0
  119. package/dist/lib/scss/public/colors/default.scss +1 -0
  120. package/dist/lib/scss/public/shadows.scss +5 -5
  121. package/package.json +1 -1
  122. package/src/lib/components/accordion/index.tsx +1 -0
  123. package/src/lib/components/accordion/style.module.scss +0 -4
  124. package/src/lib/components/button/index.stories.tsx +22 -57
  125. package/src/lib/components/button/index.tsx +7 -9
  126. package/src/lib/components/cards/card/index.stories.tsx +60 -1
  127. package/src/lib/components/cards/card/index.tsx +13 -3
  128. package/src/lib/components/cards/card/style.module.scss +87 -10
  129. package/src/lib/components/cards/cardButton/index.stories.tsx +2 -2
  130. package/src/lib/components/cards/cardButton/index.tsx +4 -2
  131. package/src/lib/components/cards/cardButton/style.module.scss +4 -0
  132. package/src/lib/components/cards/infoCard/index.stories.tsx +164 -40
  133. package/src/lib/components/cards/infoCard/index.tsx +72 -37
  134. package/src/lib/components/cards/infoCard/style.module.scss +46 -33
  135. package/src/lib/components/comparisonTable/components/AccordionItem/AccordionItem.module.scss +2 -2
  136. package/src/lib/components/comparisonTable/components/Chevron.tsx +1 -1
  137. package/src/lib/components/comparisonTable/components/Row/style.module.scss +0 -4
  138. package/src/lib/components/comparisonTable/components/TableArrows/style.module.scss +6 -5
  139. package/src/lib/components/comparisonTable/components/TableInfoButton/index.tsx +2 -2
  140. package/src/lib/components/comparisonTable/components/TableInfoButton/style.module.scss +3 -4
  141. package/src/lib/components/comparisonTable/components/TableRating/style.module.scss +2 -2
  142. package/src/lib/components/comparisonTable/components/TableTrueFalse.tsx +2 -2
  143. package/src/lib/components/comparisonTable/index.tsx +1 -1
  144. package/src/lib/components/comparisonTable/style.module.scss +6 -2
  145. package/src/lib/components/dateSelector/components/Calendar.tsx +1 -1
  146. package/src/lib/components/input/index.tsx +2 -1
  147. package/src/lib/components/input/input.stories.tsx +3 -1
  148. package/src/lib/components/input/stories/config.ts +4 -1
  149. package/src/lib/components/input/style.module.scss +8 -4
  150. package/src/lib/components/input/toggle/styles.module.scss +8 -4
  151. package/src/lib/components/modal/index.stories.tsx +23 -23
  152. package/src/lib/components/segmentedControl/style.module.scss +1 -1
  153. package/src/lib/components/table/Table.module.scss +18 -0
  154. package/src/lib/components/table/Table.tsx +1 -2
  155. package/src/lib/components/table/components/TableCell/BaseCell/BaseCell.module.scss +0 -10
  156. package/src/lib/components/table/components/TableCell/BaseCell/BaseCell.tsx +6 -9
  157. package/src/lib/components/table/components/TableCell/ButtonCell/ButtonCell.module.scss +1 -2
  158. package/src/lib/components/table/components/TableCell/ButtonCell/ButtonCell.tsx +1 -1
  159. package/src/lib/components/table/components/TableCell/TableCell.tsx +1 -1
  160. package/src/lib/components/table/components/TableContents/TableContents.module.scss +19 -0
  161. package/src/lib/components/table/components/TableContents/TableContents.tsx +3 -1
  162. package/src/lib/components/table/components/TableControls/TableControls.module.scss +7 -3
  163. package/src/lib/components/table/components/TableControls/TableControls.tsx +38 -25
  164. package/src/lib/scss/index.scss +1 -0
  165. package/src/lib/scss/private/base/_typography.scss +21 -52
  166. package/src/lib/scss/private/borders/_index.scss +1 -0
  167. package/src/lib/scss/private/borders/default.scss +61 -0
  168. package/src/lib/scss/private/components/_buttons.scss +105 -63
  169. package/src/lib/scss/private/components/_cards.scss +2 -1
  170. package/src/lib/scss/private/components/_input.scss +32 -26
  171. package/src/lib/scss/private/components/_spinner.scss +2 -2
  172. package/src/lib/scss/public/borders.stories.tsx +124 -0
  173. package/src/lib/scss/public/colors/default.scss +1 -0
  174. package/src/lib/scss/public/shadows.scss +5 -5
  175. package/dist/esm/Calendar-2d7e51b5.js.map +0 -1
  176. package/dist/esm/config-4b5ffe4f.js.map +0 -1
@@ -0,0 +1,124 @@
1
+ import classNames from "classnames";
2
+
3
+ const borders = [
4
+ {
5
+ name: 'Strong Default',
6
+ className: 'border-strong-default',
7
+ variable: '$border-strong-default',
8
+ description: '1px solid neutral-400',
9
+ },
10
+ {
11
+ name: 'Strong Hover',
12
+ className: 'border-strong-hover',
13
+ variable: '$border-strong-hover',
14
+ description: '1px solid neutral-600',
15
+ },
16
+ {
17
+ name: 'Strong Active',
18
+ className: 'border-strong-active',
19
+ variable: '$border-strong-active',
20
+ description: '1px solid neutral-900',
21
+ },
22
+ {
23
+ name: 'Medium Default',
24
+ className: 'border-medium-default',
25
+ variable: '$border-medium-default',
26
+ description: '1px solid neutral-300',
27
+ },
28
+ {
29
+ name: 'Medium Hover',
30
+ className: 'border-medium-hover',
31
+ variable: '$border-medium-hover',
32
+ description: '1px solid neutral-500',
33
+ },
34
+ {
35
+ name: 'Medium Active',
36
+ className: 'border-medium-active',
37
+ variable: '$border-medium-active',
38
+ description: '1px solid neutral-800',
39
+ },
40
+ {
41
+ name: 'Soft Default',
42
+ className: 'border-soft-default',
43
+ variable: '$border-soft-default',
44
+ description: '1px solid neutral-200',
45
+ },
46
+ {
47
+ name: 'Soft Hover',
48
+ className: 'border-soft-hover',
49
+ variable: '$border-soft-hover',
50
+ description: '1px solid neutral-400',
51
+ },
52
+ {
53
+ name: 'Soft Active',
54
+ className: 'border-soft-active',
55
+ variable: '$border-soft-active',
56
+ description: '1px solid neutral-600',
57
+ },
58
+ {
59
+ name: 'Focus',
60
+ className: 'border-focus',
61
+ variable: '$border-focus',
62
+ description: '2px solid neutral-900',
63
+ },
64
+ ];
65
+
66
+ export const Borders = () => (
67
+ <div className="bg-white">
68
+ <h2 className="p-h2 mb24">Border Tokens</h2>
69
+ <table style={{ width: '100%', borderCollapse: 'collapse' }}>
70
+ <thead>
71
+ <tr
72
+ style={{
73
+ height: '40px',
74
+ lineHeight: '40px',
75
+ textAlign: 'left',
76
+ borderBottom: '1px solid #e7e7ed',
77
+ }}
78
+ >
79
+ <th className="pl16 fw-bold">Preview</th>
80
+ <th className="pl16 fw-bold">Name</th>
81
+ <th className="pl16 fw-bold">CSS Class</th>
82
+ <th className="pl16 fw-bold">SCSS Variable</th>
83
+ <th className="pl16 fw-bold">Description</th>
84
+ </tr>
85
+ </thead>
86
+ <tbody>
87
+ {borders.map((border) => (
88
+ <tr key={border.className} style={{ height: '80px' }}>
89
+ <td className="px24" style={{ verticalAlign: 'middle' }}>
90
+ <div
91
+ className={classNames('br8 bg-neutral-200', border.className)}
92
+ style={{ width: '64px', height: '64px' }}
93
+ />
94
+ </td>
95
+ <td className="p16" style={{ verticalAlign: 'middle' }}>
96
+ {border.name}
97
+ </td>
98
+ <td className="p16" style={{ verticalAlign: 'middle' }}>
99
+ {border.className}
100
+ </td>
101
+ <td className="p16" style={{ verticalAlign: 'middle' }}>
102
+ {border.variable}
103
+ </td>
104
+ <td className="p16" style={{ verticalAlign: 'middle' }}>
105
+ {border.description}
106
+ </td>
107
+ </tr>
108
+ ))}
109
+ </tbody>
110
+ </table>
111
+ </div>
112
+ );
113
+
114
+ export default {
115
+ title: 'CSS/Base',
116
+ component: Borders,
117
+ parameters: {
118
+ docs: {
119
+ description: {
120
+ component: 'Border tokens for consistent border styling across the design system. Includes strong, medium, and soft variants with default, hover, active, and focus states.',
121
+ },
122
+ },
123
+ },
124
+ };
@@ -92,6 +92,7 @@ $colors: (
92
92
  'neutral-100': $ds-neutral-100,
93
93
  'neutral-300': $ds-neutral-300,
94
94
  'neutral-400': $ds-neutral-400,
95
+ 'neutral-500': $ds-neutral-500,
95
96
  'neutral-600': $ds-neutral-600,
96
97
  'neutral-700': $ds-neutral-700,
97
98
  'neutral-800': $ds-neutral-800,
@@ -1,8 +1,8 @@
1
- $bs-xs: 0 2px 12px rgba($ds-neutral-900, 0.03);
2
- $bs-sm: 0 2px 20px 0 rgba($ds-neutral-900, 0.04);
3
- $bs-md: 0 2px 28px rgba($ds-neutral-900, 0.08);
4
- $bs-lg: 0 2px 32px rgba($ds-neutral-900, 0.1);
5
- $bs-xl: 0 2px 50px rgba($ds-neutral-900, 0.18);
1
+ $bs-xs: 0 2px 12px rgba(#26262e, 0.03);
2
+ $bs-sm: 0 2px 20px 0 rgba(#26262e, 0.04);
3
+ $bs-md: 0 2px 28px rgba(#26262e, 0.08);
4
+ $bs-lg: 0 2px 32px rgba(#26262e, 0.1);
5
+ $bs-xl: 0 2px 50px rgba(#26262e, 0.18);
6
6
 
7
7
  .bs-xs {
8
8
  box-shadow: $bs-xs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@popsure/dirty-swan",
3
- "version": "0.59.0-alpha",
3
+ "version": "0.59.0-beta-2",
4
4
  "author": "Vincent Audoire <vincent@getpopsure.com>",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -88,6 +88,7 @@ const Accordion = ({
88
88
  title={question}
89
89
  titleVariant="small"
90
90
  density='compact'
91
+ variant='transparent'
91
92
  icon={icon}
92
93
  classNames={{
93
94
  icon: classnamesUtil(
@@ -65,8 +65,4 @@
65
65
  &:hover {
66
66
  outline: 0 solid transparent!important;
67
67
  }
68
-
69
- &:focus-visible {
70
- outline: 2px solid $ds-purple-600!important;
71
- }
72
68
  }
@@ -37,7 +37,7 @@ const story = {
37
37
  args: {
38
38
  children: 'Click me',
39
39
  disabled: false,
40
- variant: 'filledColor',
40
+ variant: 'filledBlack',
41
41
  loading: false,
42
42
  hideLabel: false,
43
43
  className: 'wmn3',
@@ -80,8 +80,8 @@ ButtonStory.storyName = "Button";
80
80
  export const ButtonVariants = ({ children, onClick }: ButtonProps) => (
81
81
  <div>
82
82
  <h3 className='p-h3 mb24'>Filled variants</h3>
83
- <div className='d-flex gap16 p24 bg-neutral-300 br8'>
84
- {[ "filledColor", "filledGray", "filledWhite", "filledBlack"].map((variant) => (
83
+ <div className='d-flex gap16 p24 bg-neutral-100 br8'>
84
+ {[ "filledBlack", "filledGray", "filledWhite"].map((variant) => (
85
85
  <div key={variant}>
86
86
  <h4 className='p-h4 mb16'>
87
87
  {variant}
@@ -95,9 +95,9 @@ export const ButtonVariants = ({ children, onClick }: ButtonProps) => (
95
95
  </div>
96
96
 
97
97
  <h3 className='p-h3 my24'>Text variants</h3>
98
- <div className='d-flex gap16 p24 bg-neutral-300 br8'>
99
- {["textColor", "textWhite"].map((variant, index) => (
100
- <div key={variant} className={variant === "textWhite" ? "bg-purple-600 px32 br8" : ""}>
98
+ <div className='d-flex gap16 p24 bg-neutral-100 br8'>
99
+ {["textBlack", "textWhite"].map((variant, index) => (
100
+ <div key={variant} className={variant === "textWhite" ? "bg-neutral-800 px32 pb16 br8" : ""}>
101
101
  <h4 className={`p-h4 mb16 ${variant === "textWhite" ? "tc-white" : ''}`}>
102
102
  {variant}
103
103
  </h4>
@@ -110,23 +110,11 @@ export const ButtonVariants = ({ children, onClick }: ButtonProps) => (
110
110
  </div>
111
111
 
112
112
  <h3 className='p-h3 my24'>Outline variants</h3>
113
- <div className='d-flex gap16 p24 bg-purple-600 br8'>
114
- <div>
115
- <h4 className='p-h4 mb16 tc-white'>
116
- outlineWhite
117
- </h4>
118
-
119
- <Button onClick={onClick} variant={'outlineWhite'}>
120
- {children}
121
- </Button>
122
- </div>
123
- </div>
124
-
125
- <h3 className='p-h3 my24'>State variants</h3>
126
- <div className='d-flex gap16 p24 bg-neutral-300 br8'>
127
- {["filledSuccess", "filledError"].map((variant) => (
128
- <div key={variant}>
129
- <h4 className='p-h4 mb16'>
113
+ <div className='d-flex gap16 p24 bg-neutral-100 br8'>
114
+ {["outlineGray", "outlineWhite"].map((variant, index) => (
115
+ <div key={variant} className={variant === "outlineWhite" ? "bg-neutral-800 px32 py16 br8" : "px32 py16"}>
116
+ <div>
117
+ <h4 className={`p-h4 mb16 ${variant === "outlineWhite" ? "tc-white" : ''}`}>
130
118
  {variant}
131
119
  </h4>
132
120
 
@@ -134,43 +122,20 @@ export const ButtonVariants = ({ children, onClick }: ButtonProps) => (
134
122
  {children}
135
123
  </Button>
136
124
  </div>
125
+ </div>
137
126
  ))}
138
127
  </div>
139
- </div>
140
- );
141
-
142
- export const ButtonOnBackgrounds = ({ onClick }: ButtonProps) => (
143
- <div>
144
- <div className='p24 bg-white br8'>
145
- <h3 className='p-h3 mb16'>On white</h3>
146
- <div className='d-flex gap16'>
147
- {[ "filledColor", "filledGray", "textColor"].map((variant) => (
148
- <Button key={variant} onClick={onClick} variant={variant as ButtonVariant}>
149
- {variant}
150
- </Button>
151
- ))}
152
- </div>
153
- </div>
154
-
155
- <div className='p24 bg-neutral-100 br8'>
156
- <h3 className='p-h3 mb16'>On grey</h3>
157
- <div className='d-flex gap16'>
158
- {[ "filledColor", "filledWhite", "textColor"].map((variant) => (
159
- <Button key={variant} onClick={onClick} variant={variant as ButtonVariant}>
160
- {variant}
161
- </Button>
162
- ))}
163
- </div>
164
- </div>
128
+
129
+ <h3 className='p-h3 my24'>State variants</h3>
130
+ <div className='d-flex gap16 p24 bg-neutral-100 br8'>
131
+ <div>
132
+ <h4 className='p-h4 mb16'>
133
+ filledError
134
+ </h4>
165
135
 
166
- <div className='p24 bg-purple-600 br8'>
167
- <h3 className='p-h3 mb16 tc-white'>On primary</h3>
168
- <div className='d-flex gap16'>
169
- {["filledWhite", "outlineWhite", "textWhite"].map((variant) => (
170
- <Button key={variant} onClick={onClick} variant={variant as ButtonVariant}>
171
- {variant}
172
- </Button>
173
- ))}
136
+ <Button onClick={onClick} variant="filledError">
137
+ {children}
138
+ </Button>
174
139
  </div>
175
140
  </div>
176
141
  </div>
@@ -2,25 +2,23 @@ import classNames from 'classnames';
2
2
  import React, { ReactElement, ReactNode } from 'react';
3
3
 
4
4
  type ButtonVariant =
5
- | 'filledColor'
5
+ | 'filledBlack'
6
6
  | 'filledGray'
7
7
  | 'filledWhite'
8
- | 'filledBlack'
9
- | 'textColor'
8
+ | 'textBlack'
10
9
  | 'textWhite'
10
+ | 'outlineGray'
11
11
  | 'outlineWhite'
12
- | 'filledSuccess'
13
12
  | 'filledError';
14
13
 
15
14
  const buttonTypeClassNameMap: { [K in ButtonVariant]: string } = {
16
- filledColor: 'p-btn--primary',
15
+ filledBlack: 'p-btn--secondary-black',
17
16
  filledGray: 'p-btn--secondary-grey',
18
17
  filledWhite: 'p-btn--secondary-white',
19
- filledBlack: 'p-btn--secondary-black',
20
- textColor: 'p-btn--secondary',
18
+ textBlack: 'p-btn--text-black',
21
19
  textWhite: 'p-btn--secondary-inverted',
22
20
  outlineWhite: 'p-btn--outline-white',
23
- filledSuccess: 'p-btn--success',
21
+ outlineGray: 'p-btn--outline-grey',
24
22
  filledError: 'p-btn--danger',
25
23
  };
26
24
 
@@ -55,7 +53,7 @@ const Button = React.forwardRef((
55
53
  className,
56
54
  loading = false,
57
55
  children,
58
- variant = 'filledColor',
56
+ variant = 'filledBlack',
59
57
  leftIcon,
60
58
  rightIcon,
61
59
  hideLabel,
@@ -2,7 +2,7 @@ import { Card, CardProps } from '.';
2
2
  import { illustrations } from '../../../util/images';
3
3
  import { Button } from '../../button';
4
4
  import { Badge } from '../../badge';
5
- import { CheckIcon, InfoIcon, MehIcon, PlusCircleIcon, XIcon } from '../../icon';
5
+ import { BasketballSportsIcon, CheckIcon, InfoIcon, MehIcon, PlusCircleIcon, XIcon } from '../../icon';
6
6
 
7
7
  const story = {
8
8
  title: 'JSX/Cards/Card',
@@ -120,6 +120,65 @@ export const CardStory = ({
120
120
  </div>
121
121
  );
122
122
 
123
+ export const CardVariants = ({
124
+ description,
125
+ onClick,
126
+ title,
127
+ }: CardProps) => (
128
+ <div className='d-flex fd-column gap24 p24 bg-neutral-50'>
129
+ <div>
130
+ <h4 className='p-h4 mb16'>default</h4>
131
+ <Card
132
+ description={description}
133
+ icon={<BasketballSportsIcon size={24} />}
134
+ onClick={onClick}
135
+ title={title}
136
+ variant='default'
137
+ />
138
+ </div>
139
+ <div>
140
+ <h4 className='p-h4 mb16'>transparent</h4>
141
+ <Card
142
+ description={description}
143
+ icon={<BasketballSportsIcon size={24} />}
144
+ onClick={onClick}
145
+ title={title}
146
+ variant='transparent'
147
+ />
148
+ </div>
149
+ <div>
150
+ <h4 className='p-h4 mb16'>outline</h4>
151
+ <Card
152
+ description={description}
153
+ icon={<BasketballSportsIcon size={24} />}
154
+ onClick={onClick}
155
+ title={title}
156
+ variant='outline'
157
+ />
158
+ </div>
159
+ <div>
160
+ <h4 className='p-h4 mb16'>secondary</h4>
161
+ <Card
162
+ description={description}
163
+ icon={<BasketballSportsIcon size={24} />}
164
+ onClick={onClick}
165
+ title={title}
166
+ variant='secondary'
167
+ />
168
+ </div>
169
+ <div>
170
+ <h4 className='p-h4 mb16'>primary</h4>
171
+ <Card
172
+ description={description}
173
+ icon={<BasketballSportsIcon size={24} />}
174
+ onClick={onClick}
175
+ title={title}
176
+ variant='primary'
177
+ />
178
+ </div>
179
+ </div>
180
+ );
181
+
123
182
  CardStory.storyName = "Card";
124
183
 
125
184
  export const CardAsOtherComponents = () => (
@@ -9,13 +9,15 @@ type CardDefaultAsType = typeof cardDefaultAs;
9
9
  type DensityType = 'balanced' | 'compact' | 'spacious';
10
10
  type TitleVariantType = 'small' | 'medium' | 'large';
11
11
  type VerticalAlignmentType = 'top' | 'center' | 'bottom';
12
+ type CardVariant = 'default' | 'transparent' | 'outline' | 'secondary' | 'primary';
12
13
 
13
14
  type CardOwnProps<E extends ElementType = CardDefaultAsType> = {
14
15
  as?: E;
15
16
  children?: ReactNode;
16
17
  classNames?: {
17
18
  buttonWrapper?: string;
18
- wrapper?: string;
19
+ wrapper?: string
20
+ contentWrapper?: string;
19
21
  label?: string;
20
22
  title?: string;
21
23
  description?: string;
@@ -35,6 +37,7 @@ type CardOwnProps<E extends ElementType = CardDefaultAsType> = {
35
37
  actionIcon?: ReactNode;
36
38
  showActionIcon?: boolean;
37
39
  verticalAlignment?: VerticalAlignmentType;
40
+ variant?: CardVariant
38
41
  }
39
42
 
40
43
  export type CardProps<E extends ElementType = CardDefaultAsType> = CardOwnProps<E> &
@@ -56,6 +59,7 @@ const Card = <E extends ElementType = CardDefaultAsType>({
56
59
  titleVariant = 'large',
57
60
  showActionIcon,
58
61
  verticalAlignment = 'center',
62
+ variant = 'default',
59
63
  ...rest
60
64
  }: CardProps<E>) => {
61
65
  const hideActionIcon = typeof actionIcon !== 'undefined' && !actionIcon;
@@ -82,7 +86,7 @@ const Card = <E extends ElementType = CardDefaultAsType>({
82
86
  <div
83
87
  className={classNamesUtil(
84
88
  'd-flex fd-column jc-center w100 ta-left br8',
85
- { 'bs-sm': dropShadow },
89
+ { 'bs-sm': dropShadow && variant === 'default' },
86
90
  {
87
91
  compact: 'p16',
88
92
  balanced: 'p24',
@@ -94,6 +98,7 @@ const Card = <E extends ElementType = CardDefaultAsType>({
94
98
  bottom: 'jc-end',
95
99
  }[verticalAlignment as VerticalAlignmentType],
96
100
  styles?.wrapper,
101
+ styles?.[`wrapper--${variant}`],
97
102
  classNames?.wrapper
98
103
  )}
99
104
  >
@@ -117,7 +122,12 @@ const Card = <E extends ElementType = CardDefaultAsType>({
117
122
  )}
118
123
 
119
124
  <div className="d-flex jc-between w100">
120
- <div className="d-flex jc-center gap8 fd-column tc-neutral-900 w100">
125
+ <div
126
+ className={classNamesUtil(
127
+ classNames?.contentWrapper || '',
128
+ "d-flex jc-center gap8 fd-column tc-neutral-900 w100"
129
+ )}
130
+ >
121
131
  {label && (
122
132
  <h4 className={classNamesUtil('p-p--small', classNames?.label)}>
123
133
  {label}
@@ -1,4 +1,32 @@
1
1
  @use '../../../scss/public/colors' as *;
2
+ @use '../../../scss/private/borders/default' as *;
3
+
4
+ .wrapper {
5
+ background-color: $ds-white;
6
+ border: 1px solid transparent;
7
+ transition: all 0.2s ease-in-out;
8
+
9
+ &--default {
10
+ background-color: $ds-white;
11
+ }
12
+
13
+ &--transparent {
14
+ background-color: transparent;
15
+ }
16
+
17
+ &--outline {
18
+ background-color: $ds-white;
19
+ border: $border-strong-default;
20
+ }
21
+
22
+ &--secondary {
23
+ background-color: $ds-purple-200;
24
+ }
25
+
26
+ &--primary {
27
+ background-color: $ds-orange-300;
28
+ }
29
+ }
2
30
 
3
31
  .button {
4
32
  background-color: transparent;
@@ -7,25 +35,73 @@
7
35
  transition: all 0.2s ease-in-out;
8
36
  text-decoration: none;
9
37
  border-radius: 8px;
38
+ border: 1px solid transparent;
39
+ outline: 1px solid transparent;
10
40
 
11
- &:hover {
12
- outline: 1px solid $ds-purple-600;
13
- color: $ds-purple-600;
41
+ &:hover .wrapper {
42
+ &--default {
43
+ border: $border-strong-default;
44
+ }
45
+
46
+ &--transparent {
47
+ background-color: transparent;
48
+ border-color: transparent;
49
+ }
50
+
51
+ &--outline {
52
+ background-color: $ds-white;
53
+ border: $border-strong-active;
54
+ }
55
+
56
+ &--secondary {
57
+ background-color: $ds-purple-200;
58
+ border-color: $ds-purple-500;
59
+ }
60
+
61
+ &--primary {
62
+ background-color: $ds-orange-300;
63
+ border-color: $ds-orange-600;
64
+ }
14
65
  }
15
66
 
16
- &:focus-visible {
17
- outline: 2px solid $ds-purple-600;
18
- color: $ds-purple-600;
67
+ &:focus .wrapper,
68
+ &:focus-visible .wrapper {
69
+ &--default {
70
+ border-color: $ds-neutral-900;
71
+ box-shadow: inset 0 0 0 1px $ds-neutral-900;
72
+ }
73
+
74
+ &--outline {
75
+ box-shadow: inset 0 0 0 1px $ds-neutral-900;
76
+ border-color: $ds-neutral-900;
77
+ }
78
+
79
+ &--transparent {
80
+ background-color: $ds-neutral-200;
81
+ box-shadow: none;
82
+ }
83
+
84
+ &--primary {
85
+ border-color: $ds-orange-700;
86
+ box-shadow: inset 0 0 0 1px $ds-orange-700;
87
+ }
88
+
89
+ &--secondary {
90
+ border-color: $ds-purple-700;
91
+ box-shadow: inset 0 0 0 1px $ds-purple-700;
92
+ }
93
+ }
94
+
95
+ &:focus-visible .wrapper {
96
+ border-color: $ds-neutral-900;
97
+ box-shadow: inset 0 0 0 1px $ds-neutral-900;
19
98
  }
20
- }
21
99
 
22
- .wrapper {
23
- background-color: $ds-white;
24
100
  }
25
101
 
26
102
  .icon {
27
103
  margin-right: 12px;
28
- color: $ds-purple-600;
104
+ color: $ds-neutral-900;
29
105
 
30
106
  &balanced {
31
107
  margin-right: 16px;
@@ -37,6 +113,7 @@
37
113
  }
38
114
 
39
115
  .actionIcon {
116
+ color: $ds-neutral-900;
40
117
  margin-left: 12px;
41
118
 
42
119
  &balanced {
@@ -28,8 +28,8 @@ const story = {
28
28
  },
29
29
  },
30
30
  args: {
31
- title: 'Risky Sports',
32
- description: 'Mountain or rock climbing, Bouldering, Martial arts, Extreme sports, Scuba diving, Sky diving, Bungee jumping, Mountain or rock climbing, Bouldering, Martial arts,',
31
+ title: 'Label',
32
+ description: 'Honest, simple insurance',
33
33
  disabled: false,
34
34
  className: '',
35
35
  href: 'https://feather-insurance.com/',
@@ -29,7 +29,9 @@ export const CardButton = ({
29
29
  className,
30
30
  { [styles.containerDisabled]: disabled }
31
31
  ),
32
- description: 'tc-purple-600 p-p',
32
+ label: 'tc-neutral-700',
33
+ description: 'tc-neutral-900 p-p',
34
+ contentWrapper: styles.contentWrapper
33
35
  }}
34
36
  density='compact'
35
37
  label={title}
@@ -37,7 +39,7 @@ export const CardButton = ({
37
39
  actionIcon={
38
40
  <ChevronRightIcon
39
41
  size={20}
40
- color={'purple-600'}
42
+ color={'neutral-900'}
41
43
  className={styles.chevronRight}
42
44
  />
43
45
  }
@@ -1,4 +1,8 @@
1
1
  .containerDisabled {
2
2
  pointer-events: none;
3
3
  opacity: 0.25;
4
+ }
5
+
6
+ .contentWrapper {
7
+ gap: 4px!important;
4
8
  }