@anker-in/headless-ui 0.0.27-alpha.0 → 0.0.27-alpha.10

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 (233) hide show
  1. package/dist/cjs/biz-components/AccordionCards/index.d.ts +25 -0
  2. package/dist/cjs/biz-components/AccordionCards/index.js +2 -0
  3. package/dist/cjs/biz-components/AccordionCards/index.js.map +7 -0
  4. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js +1 -1
  5. package/dist/cjs/biz-components/BrandEquity/BrandEquity.js.map +2 -2
  6. package/dist/cjs/biz-components/Category/index.js +1 -1
  7. package/dist/cjs/biz-components/Category/index.js.map +2 -2
  8. package/dist/cjs/biz-components/Evaluate/index.d.ts +1 -0
  9. package/dist/cjs/biz-components/Evaluate/index.js +1 -1
  10. package/dist/cjs/biz-components/Evaluate/index.js.map +3 -3
  11. package/dist/cjs/biz-components/Graphic/index.d.ts +15 -0
  12. package/dist/cjs/biz-components/Graphic/index.js +2 -0
  13. package/dist/cjs/biz-components/Graphic/index.js.map +7 -0
  14. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js +1 -1
  15. package/dist/cjs/biz-components/HeroBanner/HeroBanner.js.map +2 -2
  16. package/dist/cjs/biz-components/HeroBanner/types.d.ts +1 -1
  17. package/dist/cjs/biz-components/HeroBanner/types.js.map +1 -1
  18. package/dist/cjs/biz-components/Marquee/index.js +1 -1
  19. package/dist/cjs/biz-components/Marquee/index.js.map +3 -3
  20. package/dist/cjs/biz-components/MemberEquity/index.js +30 -30
  21. package/dist/cjs/biz-components/MemberEquity/index.js.map +2 -2
  22. package/dist/cjs/biz-components/ShelfDisplay/index.js +9 -9
  23. package/dist/cjs/biz-components/ShelfDisplay/index.js.map +2 -2
  24. package/dist/cjs/biz-components/Slogan/index.js +1 -1
  25. package/dist/cjs/biz-components/Slogan/index.js.map +2 -2
  26. package/dist/cjs/biz-components/index.d.ts +3 -1
  27. package/dist/cjs/biz-components/index.js +1 -1
  28. package/dist/cjs/biz-components/index.js.map +3 -3
  29. package/dist/cjs/components/badge.d.ts +1 -1
  30. package/dist/cjs/components/badge.js +1 -1
  31. package/dist/cjs/components/badge.js.map +2 -2
  32. package/dist/cjs/components/button.d.ts +1 -1
  33. package/dist/cjs/components/button.js +1 -1
  34. package/dist/cjs/components/button.js.map +2 -2
  35. package/dist/cjs/components/card.js +1 -1
  36. package/dist/cjs/components/card.js.map +2 -2
  37. package/dist/cjs/components/carousel.js +1 -1
  38. package/dist/cjs/components/carousel.js.map +2 -2
  39. package/dist/cjs/components/container.js +1 -1
  40. package/dist/cjs/components/container.js.map +2 -2
  41. package/dist/cjs/components/dialog.js +1 -1
  42. package/dist/cjs/components/dialog.js.map +2 -2
  43. package/dist/cjs/components/gird.js +1 -1
  44. package/dist/cjs/components/gird.js.map +2 -2
  45. package/dist/cjs/components/heading.d.ts +1 -1
  46. package/dist/cjs/components/heading.js +1 -1
  47. package/dist/cjs/components/heading.js.map +2 -2
  48. package/dist/cjs/components/text.js +1 -1
  49. package/dist/cjs/components/text.js.map +2 -2
  50. package/dist/cjs/helpers/utils.js +1 -1
  51. package/dist/cjs/helpers/utils.js.map +2 -2
  52. package/dist/cjs/stories/accordionCards.stories.d.ts +28 -0
  53. package/dist/cjs/stories/accordionCards.stories.js +2 -0
  54. package/dist/cjs/stories/accordionCards.stories.js.map +7 -0
  55. package/dist/cjs/stories/badge.stories.d.ts +17 -2
  56. package/dist/cjs/stories/badge.stories.js +1 -1
  57. package/dist/cjs/stories/badge.stories.js.map +2 -2
  58. package/dist/cjs/stories/button.stories.d.ts +3 -1
  59. package/dist/cjs/stories/button.stories.js +1 -1
  60. package/dist/cjs/stories/button.stories.js.map +3 -3
  61. package/dist/cjs/stories/container.stories.js +6 -6
  62. package/dist/cjs/stories/container.stories.js.map +2 -2
  63. package/dist/cjs/stories/dialog.stories.js +1 -1
  64. package/dist/cjs/stories/dialog.stories.js.map +2 -2
  65. package/dist/cjs/stories/evaluate.stories.js +1 -1
  66. package/dist/cjs/stories/evaluate.stories.js.map +2 -2
  67. package/dist/cjs/stories/graphic.stories.d.ts +49 -0
  68. package/dist/cjs/stories/graphic.stories.js +2 -0
  69. package/dist/cjs/stories/graphic.stories.js.map +7 -0
  70. package/dist/cjs/stories/heading.stories.d.ts +3 -2
  71. package/dist/cjs/stories/heading.stories.js +1 -1
  72. package/dist/cjs/stories/heading.stories.js.map +2 -2
  73. package/dist/cjs/stories/text.stories.js +1 -1
  74. package/dist/cjs/stories/text.stories.js.map +2 -2
  75. package/dist/esm/biz-components/AccordionCards/index.d.ts +25 -0
  76. package/dist/esm/biz-components/AccordionCards/index.js +2 -0
  77. package/dist/esm/biz-components/AccordionCards/index.js.map +7 -0
  78. package/dist/esm/biz-components/BrandEquity/BrandEquity.js +1 -1
  79. package/dist/esm/biz-components/BrandEquity/BrandEquity.js.map +2 -2
  80. package/dist/esm/biz-components/Category/index.js +1 -1
  81. package/dist/esm/biz-components/Category/index.js.map +2 -2
  82. package/dist/esm/biz-components/Evaluate/index.d.ts +1 -0
  83. package/dist/esm/biz-components/Evaluate/index.js +1 -1
  84. package/dist/esm/biz-components/Evaluate/index.js.map +3 -3
  85. package/dist/esm/biz-components/Graphic/index.d.ts +15 -0
  86. package/dist/esm/biz-components/Graphic/index.js +2 -0
  87. package/dist/esm/biz-components/Graphic/index.js.map +7 -0
  88. package/dist/esm/biz-components/HeroBanner/HeroBanner.js +1 -1
  89. package/dist/esm/biz-components/HeroBanner/HeroBanner.js.map +2 -2
  90. package/dist/esm/biz-components/HeroBanner/types.d.ts +1 -1
  91. package/dist/esm/biz-components/Marquee/index.js +1 -1
  92. package/dist/esm/biz-components/Marquee/index.js.map +3 -3
  93. package/dist/esm/biz-components/MemberEquity/index.js +29 -29
  94. package/dist/esm/biz-components/MemberEquity/index.js.map +2 -2
  95. package/dist/esm/biz-components/ShelfDisplay/index.js +9 -9
  96. package/dist/esm/biz-components/ShelfDisplay/index.js.map +2 -2
  97. package/dist/esm/biz-components/Slogan/index.js +1 -1
  98. package/dist/esm/biz-components/Slogan/index.js.map +2 -2
  99. package/dist/esm/biz-components/index.d.ts +3 -1
  100. package/dist/esm/biz-components/index.js +1 -1
  101. package/dist/esm/biz-components/index.js.map +2 -2
  102. package/dist/esm/components/badge.d.ts +1 -1
  103. package/dist/esm/components/badge.js +1 -1
  104. package/dist/esm/components/badge.js.map +2 -2
  105. package/dist/esm/components/button.d.ts +1 -1
  106. package/dist/esm/components/button.js +1 -1
  107. package/dist/esm/components/button.js.map +2 -2
  108. package/dist/esm/components/card.js +1 -1
  109. package/dist/esm/components/card.js.map +2 -2
  110. package/dist/esm/components/carousel.js +1 -1
  111. package/dist/esm/components/carousel.js.map +2 -2
  112. package/dist/esm/components/container.js +1 -1
  113. package/dist/esm/components/container.js.map +2 -2
  114. package/dist/esm/components/dialog.js +1 -1
  115. package/dist/esm/components/dialog.js.map +2 -2
  116. package/dist/esm/components/gird.js +1 -1
  117. package/dist/esm/components/gird.js.map +2 -2
  118. package/dist/esm/components/heading.d.ts +1 -1
  119. package/dist/esm/components/heading.js +1 -1
  120. package/dist/esm/components/heading.js.map +2 -2
  121. package/dist/esm/components/text.js +1 -1
  122. package/dist/esm/components/text.js.map +2 -2
  123. package/dist/esm/helpers/utils.js +1 -1
  124. package/dist/esm/helpers/utils.js.map +2 -2
  125. package/dist/esm/stories/accordionCards.stories.d.ts +28 -0
  126. package/dist/esm/stories/accordionCards.stories.js +2 -0
  127. package/dist/esm/stories/accordionCards.stories.js.map +7 -0
  128. package/dist/esm/stories/badge.stories.d.ts +17 -2
  129. package/dist/esm/stories/badge.stories.js +1 -1
  130. package/dist/esm/stories/badge.stories.js.map +3 -3
  131. package/dist/esm/stories/button.stories.d.ts +3 -1
  132. package/dist/esm/stories/button.stories.js +1 -1
  133. package/dist/esm/stories/button.stories.js.map +3 -3
  134. package/dist/esm/stories/container.stories.js +6 -6
  135. package/dist/esm/stories/container.stories.js.map +2 -2
  136. package/dist/esm/stories/dialog.stories.js +1 -1
  137. package/dist/esm/stories/dialog.stories.js.map +2 -2
  138. package/dist/esm/stories/evaluate.stories.js +1 -1
  139. package/dist/esm/stories/evaluate.stories.js.map +2 -2
  140. package/dist/esm/stories/graphic.stories.d.ts +49 -0
  141. package/dist/esm/stories/graphic.stories.js +2 -0
  142. package/dist/esm/stories/graphic.stories.js.map +7 -0
  143. package/dist/esm/stories/heading.stories.d.ts +3 -2
  144. package/dist/esm/stories/heading.stories.js +1 -1
  145. package/dist/esm/stories/heading.stories.js.map +2 -2
  146. package/dist/esm/stories/text.stories.js +2 -2
  147. package/dist/esm/stories/text.stories.js.map +2 -2
  148. package/package.json +5 -4
  149. package/style.css +180 -70
  150. package/src/biz-components/BrandEquity/BrandEquity.tsx +0 -77
  151. package/src/biz-components/BrandEquity/index.ts +0 -1
  152. package/src/biz-components/Category/index.tsx +0 -57
  153. package/src/biz-components/Evaluate/index.tsx +0 -85
  154. package/src/biz-components/HeroBanner/HeroBanner.tsx +0 -103
  155. package/src/biz-components/HeroBanner/index.tsx +0 -1
  156. package/src/biz-components/HeroBanner/types.ts +0 -28
  157. package/src/biz-components/Marquee/index.tsx +0 -79
  158. package/src/biz-components/MemberEquity/index.tsx +0 -114
  159. package/src/biz-components/MemberEquity/types.ts +0 -26
  160. package/src/biz-components/Shelf/Shelf.tsx +0 -22
  161. package/src/biz-components/Shelf/index.ts +0 -1
  162. package/src/biz-components/Shelf/types.ts +0 -6
  163. package/src/biz-components/ShelfDisplay/index.tsx +0 -142
  164. package/src/biz-components/Slogan/index.tsx +0 -53
  165. package/src/biz-components/Slogan/types.ts +0 -25
  166. package/src/biz-components/index.ts +0 -11
  167. package/src/components/alert.tsx +0 -124
  168. package/src/components/avatar.tsx +0 -126
  169. package/src/components/badge.tsx +0 -27
  170. package/src/components/button.tsx +0 -183
  171. package/src/components/card.tsx +0 -51
  172. package/src/components/carousel.tsx +0 -352
  173. package/src/components/checkbox.tsx +0 -42
  174. package/src/components/color.tsx +0 -77
  175. package/src/components/container.tsx +0 -28
  176. package/src/components/dialog.tsx +0 -98
  177. package/src/components/drawer.tsx +0 -115
  178. package/src/components/drop-down.tsx +0 -182
  179. package/src/components/gird.tsx +0 -90
  180. package/src/components/heading.tsx +0 -80
  181. package/src/components/index.ts +0 -26
  182. package/src/components/input-number.tsx +0 -216
  183. package/src/components/input.tsx +0 -79
  184. package/src/components/link.tsx +0 -99
  185. package/src/components/picture.tsx +0 -100
  186. package/src/components/popover.tsx +0 -31
  187. package/src/components/radio.tsx +0 -85
  188. package/src/components/skeleton.tsx +0 -41
  189. package/src/components/tabs.tsx +0 -78
  190. package/src/components/text.tsx +0 -99
  191. package/src/components/theme.tsx +0 -20
  192. package/src/helpers/component-props.ts +0 -17
  193. package/src/helpers/constants.ts +0 -0
  194. package/src/helpers/index.ts +0 -2
  195. package/src/helpers/utils.ts +0 -16
  196. package/src/icons/spinner.tsx +0 -26
  197. package/src/index.ts +0 -1
  198. package/src/shared/Styles.tsx +0 -94
  199. package/src/stories/HeroBanner.stories.tsx +0 -86
  200. package/src/stories/MemberEquity.stories.tsx +0 -107
  201. package/src/stories/alert.stories.tsx +0 -41
  202. package/src/stories/avatar.stories.tsx +0 -83
  203. package/src/stories/badge.stories.tsx +0 -40
  204. package/src/stories/brandEquity.stories.tsx +0 -73
  205. package/src/stories/button.stories.tsx +0 -145
  206. package/src/stories/card.stories.tsx +0 -97
  207. package/src/stories/carousel.stories.tsx +0 -161
  208. package/src/stories/category.stories.tsx +0 -52
  209. package/src/stories/checkbox.stories.tsx +0 -93
  210. package/src/stories/container.stories.tsx +0 -97
  211. package/src/stories/dialog.stories.tsx +0 -74
  212. package/src/stories/drawer.stories.tsx +0 -88
  213. package/src/stories/drop-down.stories.tsx +0 -83
  214. package/src/stories/evaluate.stories.tsx +0 -53
  215. package/src/stories/grid.stories.tsx +0 -190
  216. package/src/stories/heading.stories.tsx +0 -96
  217. package/src/stories/input-number.stories.tsx +0 -52
  218. package/src/stories/input.stories.tsx +0 -64
  219. package/src/stories/link.stories.tsx +0 -142
  220. package/src/stories/marquee.stories.tsx +0 -102
  221. package/src/stories/picture.stories.tsx +0 -51
  222. package/src/stories/popover.stories.tsx +0 -41
  223. package/src/stories/radio.stories.tsx +0 -55
  224. package/src/stories/shelf.stories.tsx +0 -35
  225. package/src/stories/shelfDisplay.stories.tsx +0 -69
  226. package/src/stories/skeleton.stories.tsx +0 -67
  227. package/src/stories/slogan.stories.tsx +0 -99
  228. package/src/stories/tabs.stories.tsx +0 -179
  229. package/src/stories/text.stories.tsx +0 -130
  230. package/src/styles/global.css +0 -4
  231. package/src/styles/index.css +0 -0
  232. package/src/types/index.ts +0 -0
  233. package/src/types/props.ts +0 -5
@@ -1,77 +0,0 @@
1
- import React from 'react'
2
-
3
- import { cn } from '../../helpers/utils'
4
- import Picture from '../../components/picture'
5
- import { withStyles } from '../../shared/Styles.js'
6
- import type { ComponentCommonProps } from '../../types/props.js'
7
-
8
- export interface BrandEquityItem {
9
- icon?: React.ReactNode
10
- title: string
11
- description: string
12
- avatarList?: string[]
13
- }
14
-
15
- export interface BrandEquityProps extends ComponentCommonProps {
16
- items: BrandEquityItem[]
17
- itemShape?: 'round' | 'square'
18
- className?: string
19
- theme?: 'light' | 'dark'
20
- }
21
-
22
- const BrandEquity: React.FC<BrandEquityProps> = ({ items = [], itemShape = 'square', style = '', className = '' }) => {
23
- return (
24
- <div className={cn('brand-equity-wrapper w-full', className)}>
25
- <div
26
- className={cn(
27
- 'grid gap-3 px-4',
28
- 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',
29
- 'md:gap-4',
30
- 'lg:px-[140px] xl:px-[175px] 2xl:px-[268px]'
31
- )}
32
- >
33
- {items.map((item, index) => (
34
- <div
35
- key={index}
36
- className={cn(
37
- 'brand-equity-item',
38
- 'bg-white p-4 flex flex-col',
39
- 'lg:p-6',
40
- 'gap-12 lg:gap-16',
41
- itemShape === 'round' ? 'rounded-[16px]' : 'rounded-none'
42
- )}
43
- >
44
- <div className="flex justify-between items-center gap-3">
45
- <h3 className="text-sm font-semibold text-[#1D1D1F] leading-[1.2] tracking-[-0.02em] 2xl:text-lg">
46
- {item.title}
47
- </h3>
48
- {item.avatarList?.length ? (
49
- <div className="flex -space-x-2">
50
- {item.avatarList.map((avatarUrl: string, index: number) => (
51
- <div
52
- key={index}
53
- className={cn(
54
- 'size-[30px] rounded-full border-2 border-white overflow-hidden',
55
- 'relative inline-block',
56
- 'xl:size-[36px]'
57
- )}
58
- >
59
- <Picture source={avatarUrl} className="w-full h-full object-cover" />
60
- </div>
61
- ))}
62
- </div>
63
- ) : (
64
- <span className="text-[#1D1D1F]">{item.icon}</span>
65
- )}
66
- </div>
67
- <p className="font-bold text-xl text-[#1D1D1F] leading-[1.2] tracking-[-0.04em] 2xl:text-2xl">
68
- {item.description}
69
- </p>
70
- </div>
71
- ))}
72
- </div>
73
- </div>
74
- )
75
- }
76
-
77
- export default withStyles(BrandEquity)
@@ -1 +0,0 @@
1
- export { default } from './BrandEquity.js'
@@ -1,57 +0,0 @@
1
- import React from 'react'
2
- import { cn } from '../../helpers/utils'
3
- import Picture from '../../components/picture'
4
-
5
- export interface CategoryItem {
6
- /** 产品图片*/
7
- img: string
8
- title: string
9
- }
10
-
11
- export interface CategoryProps {
12
- products: CategoryItem[]
13
- className?: string
14
- /** 主题色*/
15
- theme?: 'light' | 'dark'
16
- /** 卡片形状 */
17
- shape?: 'round' | 'square'
18
- }
19
-
20
- const Category: React.FC<CategoryProps> = ({
21
- className = '',
22
- shape = 'square',
23
- products = [],
24
- }) => {
25
- return (
26
- <>
27
- <div className={cn('w-full', className)}>
28
- <div className={cn('flex overflow-hidden', 'md:px-[140px] lg:px-[268px]')}>
29
- <div className={cn('w-full flex', 'gap-3 md:gap-4 overflow-x-auto overflow-y-hidden')}>
30
- {products?.map((item, index) => {
31
- return (
32
- <div
33
- key={index}
34
- className={cn(
35
- 'bg-[#EAEAEC] p-4 flex flex-col min-w-[167px] max-w-[167px] box-border overflow-hidden',
36
- 'md:min-w-[205px] md:max-w-[205px] lg:min-w-[264px] lg:max-w-[264px] md:p-6 lg:p-8',
37
- shape === 'round' ? 'rounded-[16px]' : 'rounded-none'
38
- )}
39
- >
40
- <Picture
41
- className="w-full object-cover"
42
- source={item?.img}
43
- />
44
- <p className="flex-1 text-sm text-center font-semibold lg:text-lg">
45
- {item?.title}
46
- </p>
47
- </div>
48
- )
49
- })}
50
- </div>
51
- </div>
52
- </div>
53
- </>
54
- )
55
- }
56
-
57
- export default Category
@@ -1,85 +0,0 @@
1
- import React from 'react'
2
- import { cn } from '../../helpers/utils'
3
- import Picture from '../../components/picture'
4
- import { Avatar, AvatarImage, AvatarFallback } from '../../components/avatar'
5
-
6
- export interface EvaluateItem {
7
- /** 产品图片*/
8
- img: string
9
- title: string
10
- subTitle: string
11
- description: string
12
- avatar?: string
13
- }
14
-
15
- export interface EvaluateProps {
16
- products: EvaluateItem[]
17
- className?: string
18
- /** 主题色*/
19
- theme?: 'light' | 'dark'
20
- /** 形状 */
21
- shape?: 'round' | 'square'
22
- }
23
-
24
- const Evaluate: React.FC<EvaluateProps> = ({
25
- className = '',
26
- shape = 'square',
27
- products = [],
28
- }) => {
29
- return (
30
- <>
31
- <div className={cn('w-full', className)}>
32
- <div className={cn('flex overflow-hidden', 'md:px-[140px] lg:px-[268px]')}>
33
- <div className={cn('w-full flex', 'gap-3 md:gap-4 overflow-x-auto overflow-y-hidden')}>
34
- {products?.map((item, index) => {
35
- return (
36
- <div
37
- key={index}
38
- className={cn(
39
- 'bg-[#EAEAEC] p-4 flex flex-col min-w-[288px] max-w-[288px] box-border overflow-hidden',
40
- 'md:min-w-[316px] md:max-w-[316px] lg:min-w-[404px] lg:max-w-[404px] lg:pt-4 lg:px-6 lg:pb-6',
41
- shape === 'round' ? 'rounded-2xl' : 'rounded-none'
42
- )}
43
- >
44
- <div className={cn('mb-8 w-full flex justify-between md:mb-11 lg:mb-16')}>
45
- <div className="flex-1">
46
- <h4 className="text-sm font-semibold md:text-lg">{item?.title}</h4>
47
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none">
48
- <path
49
- d="M7.32745 1.36274C7.60256 0.805304 8.39744 0.805305 8.67255 1.36274L10.1766 4.41035C10.2859 4.63171 10.4971 4.78514 10.7413 4.82063L14.1046 5.30934C14.7197 5.39873 14.9654 6.15471 14.5202 6.58861L12.0866 8.96084C11.9098 9.13315 11.8292 9.3814 11.8709 9.62469L12.4454 12.9743C12.5505 13.587 11.9074 14.0542 11.3572 13.765L8.349 12.1835C8.13051 12.0686 7.86949 12.0686 7.65099 12.1835L4.64282 13.765C4.0926 14.0542 3.44953 13.587 3.55461 12.9743L4.12912 9.62469C4.17085 9.3814 4.09019 9.13315 3.91342 8.96084L1.47976 6.58861C1.03462 6.15471 1.28025 5.39873 1.89542 5.30934L5.25866 4.82063C5.50294 4.78514 5.71412 4.63171 5.82336 4.41035L7.32745 1.36274Z"
50
- fill="#F77234"
51
- />
52
- </svg>
53
- </div>
54
- <div className="size-10 overflow-hidden lg:size-12">
55
- <Avatar className="w-full h-full">
56
- <AvatarImage src={item?.avatar} />
57
- <AvatarFallback>{item?.title}</AvatarFallback>
58
- </Avatar>
59
- </div>
60
- </div>
61
- <p className="flex-1 line-clamp-6 font-bold text-xl text-[#1D1D1F] lg:text-2xl">
62
- {item?.description || ''}
63
- </p>
64
- <div className={cn('mt-11 p-3 flex items-center bg-[#F7F8F9] overflow-hidden', shape === 'round' ? 'rounded-[8px]' : 'rounded-none')}>
65
- <div className="flex items-center mr-3 size-12 md:size-16 lg:size-20">
66
- <Picture
67
- className="w-full object-cover"
68
- source={item?.img}
69
- />
70
- </div>
71
- <p className="flex-1 text-sm font-semibold line-clamp-2 lg:text-lg">
72
- {item?.subTitle || ''}
73
- </p>
74
- </div>
75
- </div>
76
- )
77
- })}
78
- </div>
79
- </div>
80
- </div>
81
- </>
82
- )
83
- }
84
-
85
- export default Evaluate
@@ -1,103 +0,0 @@
1
- import React from "react"
2
- import type { HeroBannerProps } from "./types.js"
3
- import { Button, Text } from "../../components/index.js"
4
- import { cn } from "../../helpers/index.js"
5
- import { withStyles } from "../../shared/Styles.js"
6
-
7
- const HeroBanner = React.forwardRef<HTMLDivElement, HeroBannerProps>(
8
- ({
9
- title,
10
- subtitle,
11
- background,
12
- primaryButton,
13
- secondaryButton,
14
- theme = "light",
15
- className,
16
- products = []
17
- }, ref) => {
18
- const textColorClass = theme === "dark" ? "text-white" : "text-[#1D1D1F]"
19
- const dividerColorClass = theme === "dark" ? "bg-white" : "bg-[#1D1D1F]"
20
-
21
- return (
22
- <div
23
- ref={ref}
24
- className={cn(
25
- "relative flex min-h-[720px] w-full flex-col justify-between overflow-hidden bg-cover bg-center bg-no-repeat",
26
- className
27
- )}
28
- style={{ backgroundImage: `url(${background})` }}
29
- >
30
- {/* 内容区域 */}
31
- <div className="relative z-10 flex flex-col gap-8 px-32 pt-[307px]">
32
- <div className="max-w-[686px] space-y-4">
33
- <h1 className={cn(
34
- "hero-banner-title font-mont text-[64px] font-bold leading-none tracking-[-0.04em]",
35
- textColorClass
36
- )}>
37
- {title}
38
- </h1>
39
- <p className={cn(
40
- "hero-banner-subtitle text-lg font-medium leading-[1.2] tracking-[-0.02em]",
41
- textColorClass
42
- )}>
43
- {subtitle}
44
- </p>
45
- </div>
46
-
47
- {/* 按钮组 */}
48
- <div className="flex items-center gap-4">
49
- {secondaryButton && (
50
- <Button
51
- size="lg"
52
- variant="nature"
53
- theme={theme}
54
- className="hero-banner-primary-button"
55
- {...secondaryButton}
56
- >
57
- {secondaryButton.text}
58
- </Button>
59
- )}
60
- {primaryButton && (
61
- <Button
62
- size="lg"
63
- variant="secondary"
64
- theme={theme}
65
- {...primaryButton}
66
- className="hero-banner-secondary-button bg-transparent border-black text-black hover:bg-black hover:text-white"
67
- >
68
- {primaryButton.text}
69
- </Button>
70
- )}
71
- </div>
72
- </div>
73
-
74
- {/* 底部产品列表 */}
75
- {products.length > 0 && (
76
- <div className="relative z-10 flex items-center gap-3 px-32 pb-6">
77
- {products.map((product, index) => (
78
- <React.Fragment key={index}>
79
- <Text
80
- className={cn(
81
- "hero-banner-product-text text-sm font-medium leading-[1.2] tracking-[-0.02em]",
82
- theme === "dark" ? "text-white" : "text-[#1D1D1F]"
83
- )}
84
- >
85
- {product.title}
86
- </Text>
87
- {index < products.length - 1 && (
88
- <div className={cn("h-4 w-px", dividerColorClass)} />
89
- )}
90
- </React.Fragment>
91
- ))}
92
- </div>
93
- )}
94
- </div>
95
- )
96
- }
97
- )
98
-
99
- HeroBanner.displayName = "HeroBanner"
100
-
101
- export default withStyles(HeroBanner)
102
-
103
-
@@ -1 +0,0 @@
1
- export { default } from './HeroBanner.js'
@@ -1,28 +0,0 @@
1
- import type { ButtonProps } from "../../components/button"
2
-
3
- export interface HeroBannerProps {
4
- /** 主标题 */
5
- title: string
6
- /** 副标题/描述文本 */
7
- subtitle: string
8
- /** 背景图片URL */
9
- background: string
10
- /** 主按钮文本和配置 */
11
- primaryButton?: {
12
- text: string
13
- } & Omit<ButtonProps, 'children'>
14
- /** 次要按钮文本和配置 */
15
- secondaryButton?: {
16
- text: string
17
- } & Omit<ButtonProps, 'children'>
18
- /** 自定义类名 */
19
- className?: string
20
- /** 主题 */
21
- theme?: "light" | "dark"
22
- /** 底部产品列表 */
23
- products?: Array<{
24
- title: string
25
- active?: boolean
26
- }>
27
- }
28
-
@@ -1,79 +0,0 @@
1
- import React from 'react'
2
- import { cn } from '../../helpers/utils.js'
3
- import { default as FastMarquee } from 'react-fast-marquee'
4
- import { type MarqueeProps as FastMarqueeProps } from 'react-fast-marquee'
5
- import { Picture, Text } from '../../components'
6
-
7
- const Marquee = React.forwardRef<HTMLDivElement, FastMarqueeProps>(
8
- ({children, ...props}, ref) => {
9
- return (
10
- <FastMarquee
11
- ref={ref}
12
- {...props}
13
- >
14
- {children}
15
- </FastMarquee>
16
- )
17
- }
18
- )
19
-
20
- Marquee.displayName = 'Marquee'
21
-
22
- interface MarqueeListProps {
23
- children?: React.ReactNode;
24
- className?: string;
25
- }
26
-
27
- const MarqueeList = React.forwardRef<
28
- HTMLDivElement,
29
- MarqueeListProps
30
- >(({ className, children, ...props }, ref) => {
31
- return (
32
- <div className={cn("flex gap-6 items-center md:gap-16", className)} ref={ref}>
33
- {children}
34
- </div>
35
- )
36
- })
37
-
38
- MarqueeList.displayName = 'MarqueeList'
39
-
40
- interface MarqueeImageContentProps {
41
- image: string
42
- className?: string;
43
- }
44
-
45
- const MarqueeImageContent = ({ image, className }: MarqueeImageContentProps) => {
46
- return (
47
- <Picture
48
- source={image}
49
- className={cn("aspect-w-[120] w-[72px] aspect-h-[80] md:w-[120px]", className)}
50
- imgClassName="object-cover"
51
- />
52
- )
53
- }
54
-
55
- MarqueeImageContent.displayName = 'MarqueeImageContent'
56
-
57
- interface MarqueeTextContentProps {
58
- text: string
59
- className?: string;
60
- }
61
-
62
- const MarqueeTextContent = React.forwardRef<
63
- HTMLDivElement,
64
- MarqueeTextContentProps
65
- >(({ text, className }, ref) => {
66
- return (
67
- <Text
68
- as="div"
69
- ref={ref}
70
- html={text}
71
- className={cn("size-14 text-nowrap flex items-center justify-center leading-[1.2] text-lines-2 font-medium", className)}
72
- />
73
- )
74
- })
75
-
76
- MarqueeTextContent.displayName = 'MarqueeTextContent'
77
-
78
- export { Marquee, MarqueeList, MarqueeImageContent, MarqueeTextContent }
79
- export type { FastMarqueeProps, MarqueeListProps, MarqueeImageContentProps, MarqueeTextContentProps }
@@ -1,114 +0,0 @@
1
- import React from 'react';
2
- import { Button } from '../../components/index.js';
3
- import { withStyles } from '../../shared/Styles.js';
4
- import type { MemberEquityProps } from './types.js';
5
-
6
- const MemberEquity: React.FC<MemberEquityProps> = ({
7
- title,
8
- description,
9
- backgroundImage,
10
- primaryButton,
11
- secondaryButton,
12
- shape = 'square',
13
- theme = 'light',
14
- className = '',
15
- }) => {
16
-
17
- const handleButtonPrimaryClick = () => {
18
- // 执行主按钮的点击事件
19
-
20
- }
21
-
22
- const handleButtonSecondaryClick = () => {
23
- // 执行副按钮的点击事件
24
- }
25
-
26
- return (
27
- <section
28
- data-ui-component-id="MemberEquity"
29
- className={`
30
- relative w-full overflow-hidden bg-[#242426]
31
- ${shape === 'round' ? 'rounded-none sm:rounded-lg md:rounded-xl lg:rounded-2xl' : ''}
32
- ${className}
33
- `}
34
- >
35
-
36
- <div
37
- className="absolute inset-0 w-full h-full"
38
- style={{
39
- backgroundImage: `
40
- radial-gradient(circle at 70% 176%, rgba(84, 85, 87, 0) 72%, rgba(84, 85, 87, 1) 100%),
41
- url(${backgroundImage})
42
- `,
43
- backgroundSize: 'cover',
44
- backgroundPosition: 'center',
45
- }}
46
- />
47
- <div className={`
48
- relative w-full mx-auto
49
- aspect-[343/200] xs:aspect-[343/200]
50
- sm:aspect-[343/200]
51
- md:aspect-[592/336]
52
- lg:aspect-[800/448]
53
- xl:aspect-[1000/560]
54
- flex items-center
55
- `}>
56
- <div className={`
57
- w-full px-4 sm:px-6 md:px-[76px] lg:px-[111px] xl:px-[139px]
58
- flex flex-col gap-4 sm:gap-5 md:gap-6 lg:gap-7 xl:gap-8
59
- `}>
60
- <div className="flex flex-col gap-2 sm:gap-2 md:gap-3 lg:gap-3 xl:gap-4">
61
- <h2 className={`
62
- member-equity-title font-mont font-bold text-white tracking-[-0.04em]
63
- text-xl sm:text-2xl md:text-3xl lg:text-4xl xl:text-[32px]
64
- leading-[1.2]
65
- max-w-[280px] sm:max-w-[300px] md:max-w-[400px] lg:max-w-[500px] xl:max-w-[547px]
66
- `}>
67
- {title}
68
- </h2>
69
- <p className={`
70
- member-equity-description font-pingfang font-semibold text-white tracking-[-0.02em]
71
- text-sm sm:text-sm md:text-base lg:text-lg xl:text-lg
72
- leading-[1.4]
73
- max-w-[260px] sm:max-w-[286px] md:max-w-[350px] lg:max-w-[426px] xl:max-w-[547px]
74
- `}>
75
- {description}
76
- </p>
77
- </div>
78
-
79
- {/* 按钮组 */}
80
- <div className="flex items-center gap-3 sm:gap-3 md:gap-4 lg:gap-4 xl:gap-4">
81
- <Button
82
- theme={theme}
83
- variant="primary"
84
- onClick={handleButtonPrimaryClick}
85
- className={`
86
- member-equity-button-primary bg-transparent border-white border-[1px] text-white text-xs sm:text-sm md:text-sm lg:text-base xl:text-base
87
- px-4 sm:px-5 md:px-6 lg:px-7 xl:px-7 hover:bg-white hover:text-black
88
- py-2 sm:py-[10px] md:py-[11px] lg:py-[12px] xl:py-[14px]
89
- ${shape === 'round' ? 'rounded-[16px] sm:rounded-[19px] md:rounded-[20px] lg:rounded-[22px] xl:rounded-[24px]' : ''}
90
- `}
91
- >
92
- {primaryButton.text}
93
- </Button>
94
- <Button
95
- theme={theme}
96
- variant="secondary"
97
- onClick={handleButtonSecondaryClick}
98
- className={`
99
- member-equity-button-secondary text-xs sm:text-sm md:text-sm lg:text-base xl:text-base
100
- px-4 sm:px-5 md:px-6 lg:px-7 xl:px-7
101
- py-2 sm:py-[10px] md:py-[11px] lg:py-[12px] xl:py-[14px]
102
- ${shape === 'round' ? 'rounded-[16px] sm:rounded-[19px] md:rounded-[20px] lg:rounded-[22px] xl:rounded-[24px]' : ''}
103
- `}
104
- >
105
- {secondaryButton.text}
106
- </Button>
107
- </div>
108
- </div>
109
- </div>
110
- </section>
111
- );
112
- };
113
-
114
- export default withStyles(MemberEquity);
@@ -1,26 +0,0 @@
1
- import type { ComponentCommonProps } from '../../types/props.js';
2
-
3
- export interface MemberEquityProps extends ComponentCommonProps {
4
- /** 标题 */
5
- title: string;
6
- /** 描述文本 */
7
- description: string;
8
- /** 背景图片 URL */
9
- backgroundImage: string;
10
- /** 主按钮配置 */
11
- primaryButton: {
12
- text: string;
13
- href: string;
14
- };
15
- /** 副按钮配置 */
16
- secondaryButton: {
17
- text: string;
18
- href: string;
19
- };
20
- /** 形状 */
21
- shape?: 'round' | 'square';
22
- /** 主题 */
23
- theme?: 'light' | 'dark';
24
- /** 自定义类名 */
25
- className?: string;
26
- }
@@ -1,22 +0,0 @@
1
- /**
2
- * 这是一个demo 模版
3
- */
4
- import { withStyles } from '../../shared/Styles.js'
5
- import type { ShelfProps } from './types.js'
6
-
7
- const Shelf = (props: ShelfProps) => {
8
- console.log('~ Shelf props', props)
9
- return (
10
- <div>
11
- <h1 className="text-2xl font-bold">{props.title}</h1>
12
- <h2>{props.subtitle}</h2>
13
- <div>
14
- {props.products.map(product => (
15
- <div key={product.sku}>{product.name}</div>
16
- ))}
17
- </div>
18
- </div>
19
- )
20
- }
21
-
22
- export default withStyles(Shelf)
@@ -1 +0,0 @@
1
- export { default } from './Shelf.js'
@@ -1,6 +0,0 @@
1
- export type ShelfProps = {
2
- id: string
3
- title: string
4
- subtitle: string
5
- products: any[]
6
- }