lupine.components 1.1.55 → 1.1.56
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.
- package/LICENSE +21 -21
- package/package.json +1 -1
- package/src/component-pool/aspect-ratio/aspect-ratio-demo.tsx +103 -103
- package/src/component-pool/avatar/avatar-demo.tsx +127 -127
- package/src/component-pool/badge/badge-demo.tsx +152 -152
- package/src/component-pool/breadcrumbs/breadcrumbs-demo.tsx +105 -105
- package/src/component-pool/card/card-demo.tsx +179 -179
- package/src/component-pool/carousel/carousel-demo.tsx +191 -191
- package/src/component-pool/cascader/cascader-demo.tsx +127 -127
- package/src/component-pool/charts/area-chart-demo.tsx +106 -106
- package/src/component-pool/charts/area-chart.tsx +254 -254
- package/src/component-pool/charts/bar-chart-demo.tsx +107 -107
- package/src/component-pool/charts/bar-chart.tsx +223 -223
- package/src/component-pool/charts/chart-utils.ts +182 -182
- package/src/component-pool/charts/column-chart-demo.tsx +111 -111
- package/src/component-pool/charts/column-chart.tsx +230 -230
- package/src/component-pool/charts/donut-chart-demo.tsx +112 -112
- package/src/component-pool/charts/donut-chart.tsx +6 -6
- package/src/component-pool/charts/gauge-chart-demo.tsx +101 -101
- package/src/component-pool/charts/gauge-chart.tsx +117 -117
- package/src/component-pool/charts/index.ts +19 -19
- package/src/component-pool/charts/line-chart-demo.tsx +109 -109
- package/src/component-pool/charts/line-chart.tsx +233 -233
- package/src/component-pool/charts/pie-chart-demo.tsx +133 -133
- package/src/component-pool/charts/pie-chart.tsx +142 -142
- package/src/component-pool/charts/radar-chart-demo.tsx +88 -88
- package/src/component-pool/charts/radar-chart.tsx +231 -231
- package/src/component-pool/charts/scatter-chart-demo.tsx +88 -88
- package/src/component-pool/charts/scatter-chart.tsx +237 -237
- package/src/component-pool/copy-button/copy-button-demo.tsx +71 -71
- package/src/component-pool/date-picker/date-picker-demo.tsx +84 -84
- package/src/component-pool/date-picker/date-picker.tsx +437 -437
- package/src/component-pool/date-picker/index.ts +2 -2
- package/src/component-pool/floating-icon-menu/floating-icon-menu-demo.tsx +94 -94
- package/src/component-pool/floating-icon-menu/floating-icon-menu.tsx +241 -241
- package/src/component-pool/floating-icon-menu/index.ts +2 -2
- package/src/component-pool/h-editor/h-editor-demo.tsx +112 -112
- package/src/component-pool/h-editor/h-editor.ts +862 -862
- package/src/component-pool/h-editor/index.ts +2 -2
- package/src/component-pool/i-editor/i-editor-demo.tsx +72 -72
- package/src/component-pool/i-editor/i-editor-frames.ts +42 -42
- package/src/component-pool/i-editor/i-editor-styles.ts +22 -22
- package/src/component-pool/i-editor/i-editor.ts +3869 -3869
- package/src/component-pool/i-editor/index.ts +2 -2
- package/src/component-pool/map-wrapper/map-wrapper-demo.tsx +55 -55
- package/src/component-pool/p-editor/index.ts +4 -4
- package/src/component-pool/p-editor/p-editor-demo.tsx +51 -51
- package/src/component-pool/p-editor/p-editor-styles.ts +44 -44
- package/src/component-pool/p-editor/p-editor-types.ts +4 -4
- package/src/component-pool/p-editor/p-editor-utils.ts +38 -38
- package/src/component-pool/p-editor/p-editor.ts +2477 -2477
- package/src/component-pool/pdf-viewer/index.ts +2 -2
- package/src/component-pool/pdf-viewer/pdf-viewer-demo.tsx +116 -116
- package/src/component-pool/pdf-viewer/pdf-viewer.tsx +56 -56
- package/src/component-pool/picker-helper.tsx +222 -222
- package/src/component-pool/pull-to-refresh/pull-to-refresh-demo.tsx +99 -99
- package/src/component-pool/qrcode/index.ts +3 -3
- package/src/component-pool/qrcode/qrcode-demo.tsx +102 -102
- package/src/component-pool/qrcode/qrcode.tsx +169 -169
- package/src/component-pool/radial-progress/index.ts +2 -2
- package/src/component-pool/radial-progress/radial-progress-demo.tsx +84 -84
- package/src/component-pool/radial-progress/radial-progress.tsx +118 -118
- package/src/component-pool/range/gauge-demo.tsx +113 -113
- package/src/component-pool/range/gauge.tsx +392 -392
- package/src/component-pool/range/range-demo.tsx +97 -97
- package/src/component-pool/search-input/index.ts +2 -2
- package/src/component-pool/search-input/search-input-demo.tsx +50 -50
- package/src/component-pool/search-input/search-input.tsx +125 -125
- package/src/component-pool/skeleton/skeleton-card.tsx +114 -114
- package/src/component-pool/skeleton/skeleton-demo.tsx +55 -55
- package/src/component-pool/svg-icons.ts +95 -95
- package/src/component-pool/svg-props.tsx +144 -144
- package/src/component-pool/tag-input/index.ts +2 -2
- package/src/component-pool/tag-input/tag-input-demo.tsx +47 -47
- package/src/component-pool/tag-input/tag-input.tsx +166 -166
- package/src/component-pool/time-picker/index.ts +2 -2
- package/src/component-pool/time-picker/time-picker-demo.tsx +80 -80
- package/src/component-pool/time-picker/time-picker.tsx +311 -311
- package/src/component-pool/timeline/timeline-demo.tsx +75 -75
- package/src/component-pool/tooltip/tooltip-demo.tsx +144 -144
- package/src/component-pool/tour/tour-demo.tsx +92 -92
- package/src/component-pool/youtube-player/index.ts +2 -2
- package/src/component-pool/youtube-player/youtube-player-demo.tsx +57 -57
- package/src/component-pool/youtube-player/youtube-player.tsx +116 -116
- package/src/components/action-sheet-color.tsx +269 -269
- package/src/components/action-sheet-date.tsx +299 -299
- package/src/components/action-sheet-demo.tsx +216 -216
- package/src/components/action-sheet-theme.tsx +150 -150
- package/src/components/action-sheet-time.tsx +157 -157
- package/src/components/input-number.tsx +206 -206
- package/src/components/input-with-title-demo.tsx +42 -42
- package/src/components/loading-spin.tsx +74 -74
- package/src/components/message-box-demo.tsx +107 -107
- package/src/components/mobile-components/mobile-side-menu-demo.tsx +47 -47
- package/src/components/modal-demo.tsx +56 -56
- package/src/components/notice-message-demo.tsx +57 -57
- package/src/components/paging-link-demo.tsx +430 -430
- package/src/components/popup-menu-demo.tsx +172 -172
- package/src/components/progress-demo.tsx +53 -53
- package/src/components/radio-label-demo.tsx +41 -41
- package/src/components/redirect-demo.tsx +36 -36
- package/src/components/resizable-splitter-demo.tsx +104 -104
- package/src/components/select-angle-demo.tsx +32 -32
- package/src/components/select-with-title-demo.tsx +53 -53
- package/src/components/slide-tab-component-demo.tsx +86 -86
- package/src/components/spinner-demo.tsx +52 -52
- package/src/components/stars-component-demo.tsx +36 -36
- package/src/components/switch-option-component.tsx +74 -74
- package/src/components/switch-option-demo.tsx +36 -36
- package/src/components/tabs-demo.tsx +42 -42
- package/src/components/text-glow-demo.tsx +46 -46
- package/src/components/text-scale-demo.tsx +41 -41
- package/src/components/text-wave-demo.tsx +48 -48
- package/src/components/toggle-button-demo.tsx +230 -230
- package/src/demo/demo-page.tsx +271 -271
- package/src/demo/demo-registry.ts +143 -143
- package/src/demo/demo-render-page.tsx +94 -94
- package/src/demo/demo-types.ts +22 -22
- package/src/demo/mock/demo-icons.ts +72 -72
- package/src/demo/mock/responsive-demo-mock-pages.tsx +197 -197
- package/src/demo/mock/side-menu-mock.tsx +113 -113
- package/src/demo/mock/user-settings-mock.tsx +310 -310
- package/src/frames/responsive-frame-demo.tsx +120 -120
- package/src/frames/slider-frame-demo.tsx +111 -111
- package/src/frames/slider-helper.tsx +194 -194
- package/src/lib/button-async-lock.tsx +43 -43
- package/src/lib/canvas/canvas-drawing.ts +503 -503
- package/src/lib/canvas/canvas-geometry.ts +255 -255
- package/src/lib/canvas/canvas-helper.tsx +176 -176
- package/src/lib/canvas/canvas-image.ts +110 -110
- package/src/lib/canvas/canvas-types.ts +93 -93
- package/src/lib/canvas/index.ts +5 -5
- package/src/lib/disable-console.ts +11 -11
- package/src/lib/disable-debug.ts +8 -8
- package/src/lib/support-safe-area.ts +25 -25
- package/tsconfig.json +113 -113
|
@@ -1,179 +1,179 @@
|
|
|
1
|
-
import { Card } from './card';
|
|
2
|
-
import { Avatar } from '../avatar';
|
|
3
|
-
import { DemoStory } from '../../demo/demo-types';
|
|
4
|
-
import { MediaQueryRange } from 'lupine.components';
|
|
5
|
-
|
|
6
|
-
export const cardDemo: DemoStory<any> = {
|
|
7
|
-
id: 'cardDemo',
|
|
8
|
-
text: 'Card',
|
|
9
|
-
args: {
|
|
10
|
-
hoverable: true,
|
|
11
|
-
},
|
|
12
|
-
argTypes: {
|
|
13
|
-
hoverable: {
|
|
14
|
-
control: 'boolean',
|
|
15
|
-
description: 'Whether the card shows a hover effect',
|
|
16
|
-
},
|
|
17
|
-
},
|
|
18
|
-
render: (args: any) => {
|
|
19
|
-
const css = {
|
|
20
|
-
display: 'flex',
|
|
21
|
-
flexDirection: 'column',
|
|
22
|
-
gap: '32px',
|
|
23
|
-
padding: '24px',
|
|
24
|
-
'.section-title': {
|
|
25
|
-
fontSize: '20px',
|
|
26
|
-
fontWeight: 'bold',
|
|
27
|
-
marginBottom: '16px',
|
|
28
|
-
color: 'var(--primary-color)',
|
|
29
|
-
borderBottom: '2px solid var(--secondary-border-color)',
|
|
30
|
-
paddingBottom: '8px',
|
|
31
|
-
},
|
|
32
|
-
'.card-grid': {
|
|
33
|
-
display: 'grid',
|
|
34
|
-
gap: '16px',
|
|
35
|
-
gridTemplateColumns: 'repeat(4, 1fr)',
|
|
36
|
-
[MediaQueryRange.DesktopBelow]: {
|
|
37
|
-
gridTemplateColumns: 'repeat(3, 1fr)',
|
|
38
|
-
},
|
|
39
|
-
[MediaQueryRange.MobileBelow]: {
|
|
40
|
-
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
41
|
-
},
|
|
42
|
-
[MediaQueryRange.ExtraSmallBelow]: {
|
|
43
|
-
gridTemplateColumns: '1fr',
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
'.demo-row': {
|
|
47
|
-
display: 'flex',
|
|
48
|
-
flexWrap: 'wrap',
|
|
49
|
-
gap: '24px',
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const productItems = [
|
|
54
|
-
{ id: 1, title: 'Premium Violin Stand', price: '$49.99', img: 'https://picsum.photos/seed/v1/400/300' },
|
|
55
|
-
{ id: 2, title: 'Professional Bow', price: '$129.00', img: 'https://picsum.photos/seed/v2/400/500' },
|
|
56
|
-
{ id: 3, title: 'Silk String Set', price: '$25.00', img: 'https://picsum.photos/seed/v3/400/300' },
|
|
57
|
-
{ id: 4, title: 'Rosin High Grade', price: '$12.50', img: 'https://picsum.photos/seed/v4/400/300' },
|
|
58
|
-
{ id: 5, title: 'Violin Case Carbon', price: '$299.00', img: 'https://picsum.photos/seed/v5/400/200' },
|
|
59
|
-
{ id: 6, title: 'Shoulder Rest', price: '$35.00', img: 'https://picsum.photos/seed/v6/400/300' },
|
|
60
|
-
];
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<div css={css}>
|
|
64
|
-
{/* Responsive Grid Section */}
|
|
65
|
-
<section>
|
|
66
|
-
<div class='section-title'>Responsive Product Grid (4 → 3 → 2 → 1)</div>
|
|
67
|
-
<div class='card-grid'>
|
|
68
|
-
{productItems.map((item) => (
|
|
69
|
-
<Card
|
|
70
|
-
hoverable={args.hoverable}
|
|
71
|
-
cover={<img src={item.img} alt={item.title} />}
|
|
72
|
-
title={item.title}
|
|
73
|
-
description='High-quality accessory for professional musicians.'
|
|
74
|
-
footer={
|
|
75
|
-
<div
|
|
76
|
-
style={{ display: 'flex', justifyContent: 'space-between', width: '100%', alignItems: 'center' }}
|
|
77
|
-
>
|
|
78
|
-
<span style={{ fontWeight: 'bold', color: 'var(--success-color, #2ecc71)' }}>{item.price}</span>
|
|
79
|
-
<button
|
|
80
|
-
style={{
|
|
81
|
-
padding: '4px 12px',
|
|
82
|
-
borderRadius: '4px',
|
|
83
|
-
border: 'none',
|
|
84
|
-
backgroundColor: 'var(--primary-accent-color, #1890ff)',
|
|
85
|
-
color: 'var(--primary-bg-color, #fff)',
|
|
86
|
-
cursor: 'pointer',
|
|
87
|
-
}}
|
|
88
|
-
>
|
|
89
|
-
Buy
|
|
90
|
-
</button>
|
|
91
|
-
</div>
|
|
92
|
-
}
|
|
93
|
-
/>
|
|
94
|
-
))}
|
|
95
|
-
</div>
|
|
96
|
-
</section>
|
|
97
|
-
|
|
98
|
-
{/* Profile Layouts */}
|
|
99
|
-
<section>
|
|
100
|
-
<div class='section-title'>Profile Layouts</div>
|
|
101
|
-
<div class='demo-row'>
|
|
102
|
-
<Card
|
|
103
|
-
style={{ width: '300px' }}
|
|
104
|
-
hoverable={args.hoverable}
|
|
105
|
-
avatar={<Avatar src='https://picsum.photos/seed/p1/150' size='lg' online />}
|
|
106
|
-
title='John Doe'
|
|
107
|
-
description='Senior Violin Instructor at Lupine Academy. 15+ years of experience in classical music.'
|
|
108
|
-
extra={
|
|
109
|
-
<button
|
|
110
|
-
style={{ background: 'none', border: 'none', color: 'var(--primary-color)', cursor: 'pointer' }}
|
|
111
|
-
>
|
|
112
|
-
Follow
|
|
113
|
-
</button>
|
|
114
|
-
}
|
|
115
|
-
/>
|
|
116
|
-
|
|
117
|
-
<Card
|
|
118
|
-
style={{ width: '300px' }}
|
|
119
|
-
hoverable={args.hoverable}
|
|
120
|
-
horizontal
|
|
121
|
-
avatar={<Avatar src='https://picsum.photos/seed/p2/150' size='md' status='away' />}
|
|
122
|
-
title='Jane Smith'
|
|
123
|
-
description='Orchestra Conductor'
|
|
124
|
-
/>
|
|
125
|
-
</div>
|
|
126
|
-
</section>
|
|
127
|
-
|
|
128
|
-
{/* Horizontal Card */}
|
|
129
|
-
<section>
|
|
130
|
-
<div class='section-title'>Horizontal Product (Responsive)</div>
|
|
131
|
-
<Card
|
|
132
|
-
hoverable={args.hoverable}
|
|
133
|
-
horizontal
|
|
134
|
-
cover={<img src='https://picsum.photos/seed/b1/400/300' />}
|
|
135
|
-
title='Lupine Master Collection Book'
|
|
136
|
-
description='The ultimate guide to mastering Lupine.js framework. Includes deep dives into reactive state, SSR, and component design patterns. Essential for modern web developers.'
|
|
137
|
-
footer={
|
|
138
|
-
<div style={{ gap: '12px', display: 'flex' }}>
|
|
139
|
-
<button
|
|
140
|
-
style={{
|
|
141
|
-
padding: '8px 16px',
|
|
142
|
-
borderRadius: '6px',
|
|
143
|
-
border: '1px solid var(--primary-accent-color, #1890ff)',
|
|
144
|
-
color: 'var(--primary-accent-color, #1890ff)',
|
|
145
|
-
background: 'transparent',
|
|
146
|
-
}}
|
|
147
|
-
>
|
|
148
|
-
Preview
|
|
149
|
-
</button>
|
|
150
|
-
<button
|
|
151
|
-
style={{
|
|
152
|
-
padding: '8px 16px',
|
|
153
|
-
borderRadius: '6px',
|
|
154
|
-
border: 'none',
|
|
155
|
-
background: 'var(--primary-accent-color, #1890ff)',
|
|
156
|
-
color: 'var(--primary-bg-color, #fff)',
|
|
157
|
-
}}
|
|
158
|
-
>
|
|
159
|
-
Add to Cart
|
|
160
|
-
</button>
|
|
161
|
-
</div>
|
|
162
|
-
}
|
|
163
|
-
/>
|
|
164
|
-
</section>
|
|
165
|
-
</div>
|
|
166
|
-
);
|
|
167
|
-
},
|
|
168
|
-
code: `import { Card } from 'lupine.components/component-pool';
|
|
169
|
-
|
|
170
|
-
<Card
|
|
171
|
-
title="Card Title"
|
|
172
|
-
description="Card description goes here."
|
|
173
|
-
cover={<img src="..." />}
|
|
174
|
-
footer={<button>Action</button>}
|
|
175
|
-
/>
|
|
176
|
-
|
|
177
|
-
<Card horizontal title="Row Item" avatar={<Avatar src="..." />} />
|
|
178
|
-
`,
|
|
179
|
-
};
|
|
1
|
+
import { Card } from './card';
|
|
2
|
+
import { Avatar } from '../avatar';
|
|
3
|
+
import { DemoStory } from '../../demo/demo-types';
|
|
4
|
+
import { MediaQueryRange } from 'lupine.components';
|
|
5
|
+
|
|
6
|
+
export const cardDemo: DemoStory<any> = {
|
|
7
|
+
id: 'cardDemo',
|
|
8
|
+
text: 'Card',
|
|
9
|
+
args: {
|
|
10
|
+
hoverable: true,
|
|
11
|
+
},
|
|
12
|
+
argTypes: {
|
|
13
|
+
hoverable: {
|
|
14
|
+
control: 'boolean',
|
|
15
|
+
description: 'Whether the card shows a hover effect',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
render: (args: any) => {
|
|
19
|
+
const css = {
|
|
20
|
+
display: 'flex',
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
gap: '32px',
|
|
23
|
+
padding: '24px',
|
|
24
|
+
'.section-title': {
|
|
25
|
+
fontSize: '20px',
|
|
26
|
+
fontWeight: 'bold',
|
|
27
|
+
marginBottom: '16px',
|
|
28
|
+
color: 'var(--primary-color)',
|
|
29
|
+
borderBottom: '2px solid var(--secondary-border-color)',
|
|
30
|
+
paddingBottom: '8px',
|
|
31
|
+
},
|
|
32
|
+
'.card-grid': {
|
|
33
|
+
display: 'grid',
|
|
34
|
+
gap: '16px',
|
|
35
|
+
gridTemplateColumns: 'repeat(4, 1fr)',
|
|
36
|
+
[MediaQueryRange.DesktopBelow]: {
|
|
37
|
+
gridTemplateColumns: 'repeat(3, 1fr)',
|
|
38
|
+
},
|
|
39
|
+
[MediaQueryRange.MobileBelow]: {
|
|
40
|
+
gridTemplateColumns: 'repeat(2, 1fr)',
|
|
41
|
+
},
|
|
42
|
+
[MediaQueryRange.ExtraSmallBelow]: {
|
|
43
|
+
gridTemplateColumns: '1fr',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
'.demo-row': {
|
|
47
|
+
display: 'flex',
|
|
48
|
+
flexWrap: 'wrap',
|
|
49
|
+
gap: '24px',
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const productItems = [
|
|
54
|
+
{ id: 1, title: 'Premium Violin Stand', price: '$49.99', img: 'https://picsum.photos/seed/v1/400/300' },
|
|
55
|
+
{ id: 2, title: 'Professional Bow', price: '$129.00', img: 'https://picsum.photos/seed/v2/400/500' },
|
|
56
|
+
{ id: 3, title: 'Silk String Set', price: '$25.00', img: 'https://picsum.photos/seed/v3/400/300' },
|
|
57
|
+
{ id: 4, title: 'Rosin High Grade', price: '$12.50', img: 'https://picsum.photos/seed/v4/400/300' },
|
|
58
|
+
{ id: 5, title: 'Violin Case Carbon', price: '$299.00', img: 'https://picsum.photos/seed/v5/400/200' },
|
|
59
|
+
{ id: 6, title: 'Shoulder Rest', price: '$35.00', img: 'https://picsum.photos/seed/v6/400/300' },
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<div css={css}>
|
|
64
|
+
{/* Responsive Grid Section */}
|
|
65
|
+
<section>
|
|
66
|
+
<div class='section-title'>Responsive Product Grid (4 → 3 → 2 → 1)</div>
|
|
67
|
+
<div class='card-grid'>
|
|
68
|
+
{productItems.map((item) => (
|
|
69
|
+
<Card
|
|
70
|
+
hoverable={args.hoverable}
|
|
71
|
+
cover={<img src={item.img} alt={item.title} />}
|
|
72
|
+
title={item.title}
|
|
73
|
+
description='High-quality accessory for professional musicians.'
|
|
74
|
+
footer={
|
|
75
|
+
<div
|
|
76
|
+
style={{ display: 'flex', justifyContent: 'space-between', width: '100%', alignItems: 'center' }}
|
|
77
|
+
>
|
|
78
|
+
<span style={{ fontWeight: 'bold', color: 'var(--success-color, #2ecc71)' }}>{item.price}</span>
|
|
79
|
+
<button
|
|
80
|
+
style={{
|
|
81
|
+
padding: '4px 12px',
|
|
82
|
+
borderRadius: '4px',
|
|
83
|
+
border: 'none',
|
|
84
|
+
backgroundColor: 'var(--primary-accent-color, #1890ff)',
|
|
85
|
+
color: 'var(--primary-bg-color, #fff)',
|
|
86
|
+
cursor: 'pointer',
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
Buy
|
|
90
|
+
</button>
|
|
91
|
+
</div>
|
|
92
|
+
}
|
|
93
|
+
/>
|
|
94
|
+
))}
|
|
95
|
+
</div>
|
|
96
|
+
</section>
|
|
97
|
+
|
|
98
|
+
{/* Profile Layouts */}
|
|
99
|
+
<section>
|
|
100
|
+
<div class='section-title'>Profile Layouts</div>
|
|
101
|
+
<div class='demo-row'>
|
|
102
|
+
<Card
|
|
103
|
+
style={{ width: '300px' }}
|
|
104
|
+
hoverable={args.hoverable}
|
|
105
|
+
avatar={<Avatar src='https://picsum.photos/seed/p1/150' size='lg' online />}
|
|
106
|
+
title='John Doe'
|
|
107
|
+
description='Senior Violin Instructor at Lupine Academy. 15+ years of experience in classical music.'
|
|
108
|
+
extra={
|
|
109
|
+
<button
|
|
110
|
+
style={{ background: 'none', border: 'none', color: 'var(--primary-color)', cursor: 'pointer' }}
|
|
111
|
+
>
|
|
112
|
+
Follow
|
|
113
|
+
</button>
|
|
114
|
+
}
|
|
115
|
+
/>
|
|
116
|
+
|
|
117
|
+
<Card
|
|
118
|
+
style={{ width: '300px' }}
|
|
119
|
+
hoverable={args.hoverable}
|
|
120
|
+
horizontal
|
|
121
|
+
avatar={<Avatar src='https://picsum.photos/seed/p2/150' size='md' status='away' />}
|
|
122
|
+
title='Jane Smith'
|
|
123
|
+
description='Orchestra Conductor'
|
|
124
|
+
/>
|
|
125
|
+
</div>
|
|
126
|
+
</section>
|
|
127
|
+
|
|
128
|
+
{/* Horizontal Card */}
|
|
129
|
+
<section>
|
|
130
|
+
<div class='section-title'>Horizontal Product (Responsive)</div>
|
|
131
|
+
<Card
|
|
132
|
+
hoverable={args.hoverable}
|
|
133
|
+
horizontal
|
|
134
|
+
cover={<img src='https://picsum.photos/seed/b1/400/300' />}
|
|
135
|
+
title='Lupine Master Collection Book'
|
|
136
|
+
description='The ultimate guide to mastering Lupine.js framework. Includes deep dives into reactive state, SSR, and component design patterns. Essential for modern web developers.'
|
|
137
|
+
footer={
|
|
138
|
+
<div style={{ gap: '12px', display: 'flex' }}>
|
|
139
|
+
<button
|
|
140
|
+
style={{
|
|
141
|
+
padding: '8px 16px',
|
|
142
|
+
borderRadius: '6px',
|
|
143
|
+
border: '1px solid var(--primary-accent-color, #1890ff)',
|
|
144
|
+
color: 'var(--primary-accent-color, #1890ff)',
|
|
145
|
+
background: 'transparent',
|
|
146
|
+
}}
|
|
147
|
+
>
|
|
148
|
+
Preview
|
|
149
|
+
</button>
|
|
150
|
+
<button
|
|
151
|
+
style={{
|
|
152
|
+
padding: '8px 16px',
|
|
153
|
+
borderRadius: '6px',
|
|
154
|
+
border: 'none',
|
|
155
|
+
background: 'var(--primary-accent-color, #1890ff)',
|
|
156
|
+
color: 'var(--primary-bg-color, #fff)',
|
|
157
|
+
}}
|
|
158
|
+
>
|
|
159
|
+
Add to Cart
|
|
160
|
+
</button>
|
|
161
|
+
</div>
|
|
162
|
+
}
|
|
163
|
+
/>
|
|
164
|
+
</section>
|
|
165
|
+
</div>
|
|
166
|
+
);
|
|
167
|
+
},
|
|
168
|
+
code: `import { Card } from 'lupine.components/component-pool';
|
|
169
|
+
|
|
170
|
+
<Card
|
|
171
|
+
title="Card Title"
|
|
172
|
+
description="Card description goes here."
|
|
173
|
+
cover={<img src="..." />}
|
|
174
|
+
footer={<button>Action</button>}
|
|
175
|
+
/>
|
|
176
|
+
|
|
177
|
+
<Card horizontal title="Row Item" avatar={<Avatar src="..." />} />
|
|
178
|
+
`,
|
|
179
|
+
};
|