@anker-in/ui 0.1.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.
- package/README.md +83 -0
- package/dist/DemoRoom-CZyrsxWe.d.mts +30 -0
- package/dist/DemoRoom-CZyrsxWe.d.ts +30 -0
- package/dist/demo-room.css +33 -0
- package/dist/demo-room.css.map +1 -0
- package/dist/demo-room.d.mts +198 -0
- package/dist/demo-room.d.ts +198 -0
- package/dist/demo-room.js +1727 -0
- package/dist/demo-room.js.map +1 -0
- package/dist/demo-room.mjs +1713 -0
- package/dist/demo-room.mjs.map +1 -0
- package/dist/index.css +33 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.mts +283 -0
- package/dist/index.d.ts +283 -0
- package/dist/index.js +3077 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3052 -0
- package/dist/index.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/theme.d.mts +126 -0
- package/dist/theme.d.ts +126 -0
- package/dist/theme.js +147 -0
- package/dist/theme.js.map +1 -0
- package/dist/theme.mjs +144 -0
- package/dist/theme.mjs.map +1 -0
- package/package.json +83 -0
package/README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# @anker-dtc/ui
|
|
2
|
+
|
|
3
|
+
React UI components with Tailwind CSS for Anker DTC projects.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### For Production (via npm/pnpm)
|
|
8
|
+
|
|
9
|
+
When installing from npm registry, all dependencies will be automatically installed:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add @anker-dtc/ui
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### For Development (via pnpm link)
|
|
16
|
+
|
|
17
|
+
When using `pnpm link` for local development, you need to manually install the required dependencies in your Next.js project:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Required dependencies
|
|
21
|
+
pnpm add antd antd-mobile swiper dayjs clsx tailwind-merge @anker-in/headless-ui
|
|
22
|
+
|
|
23
|
+
# Also install dom-helpers if you encounter Module not found errors
|
|
24
|
+
pnpm add dom-helpers
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Usage
|
|
28
|
+
|
|
29
|
+
### Import Components
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
import { DemoRoom } from '@anker-dtc/ui/demo-room'
|
|
33
|
+
import '@anker-dtc/ui/styles.css'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Next.js Configuration
|
|
37
|
+
|
|
38
|
+
Add `@anker-dtc/ui` to `transpilePackages` in your `next.config.js`:
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
module.exports = {
|
|
42
|
+
transpilePackages: ['@anker-dtc/ui'],
|
|
43
|
+
// ... other config
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Available Exports
|
|
48
|
+
|
|
49
|
+
- `@anker-dtc/ui` - Main components
|
|
50
|
+
- `@anker-dtc/ui/demo-room` - Demo room components
|
|
51
|
+
- `@anker-dtc/ui/theme` - Theme configuration
|
|
52
|
+
- `@anker-dtc/ui/styles.css` - CSS styles
|
|
53
|
+
|
|
54
|
+
## Development
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
# Install dependencies
|
|
58
|
+
pnpm install
|
|
59
|
+
|
|
60
|
+
# Build the package
|
|
61
|
+
pnpm build
|
|
62
|
+
|
|
63
|
+
# Run tests
|
|
64
|
+
pnpm test
|
|
65
|
+
|
|
66
|
+
# Type check
|
|
67
|
+
pnpm type-check
|
|
68
|
+
|
|
69
|
+
# Lint
|
|
70
|
+
pnpm lint
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Link for Local Development
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# In this package directory
|
|
77
|
+
pnpm link --global
|
|
78
|
+
|
|
79
|
+
# In your Next.js project
|
|
80
|
+
pnpm link --global @anker-dtc/ui
|
|
81
|
+
|
|
82
|
+
# Don't forget to install the required dependencies (see above)
|
|
83
|
+
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
interface DemoRoomProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
layoutClassName?: string;
|
|
5
|
+
/**
|
|
6
|
+
* 谷歌地图 API Key
|
|
7
|
+
*/
|
|
8
|
+
googleMapsApiKey?: string;
|
|
9
|
+
/**
|
|
10
|
+
* API 配置
|
|
11
|
+
*/
|
|
12
|
+
apiConfig: {
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
locale?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 团队编码或品牌站点(二选一)
|
|
19
|
+
*/
|
|
20
|
+
teamCode?: string;
|
|
21
|
+
brandWebsite?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Callback when user clicks "Schedule Now" button
|
|
24
|
+
* @param demoRoomCode - The demo room code
|
|
25
|
+
*/
|
|
26
|
+
onSchedule?: (demoRoomCode: string) => void;
|
|
27
|
+
}
|
|
28
|
+
declare const DemoRoom: React.FC<DemoRoomProps>;
|
|
29
|
+
|
|
30
|
+
export { DemoRoom as D, type DemoRoomProps as a };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
interface DemoRoomProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
layoutClassName?: string;
|
|
5
|
+
/**
|
|
6
|
+
* 谷歌地图 API Key
|
|
7
|
+
*/
|
|
8
|
+
googleMapsApiKey?: string;
|
|
9
|
+
/**
|
|
10
|
+
* API 配置
|
|
11
|
+
*/
|
|
12
|
+
apiConfig: {
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
apiKey: string;
|
|
15
|
+
locale?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* 团队编码或品牌站点(二选一)
|
|
19
|
+
*/
|
|
20
|
+
teamCode?: string;
|
|
21
|
+
brandWebsite?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Callback when user clicks "Schedule Now" button
|
|
24
|
+
* @param demoRoomCode - The demo room code
|
|
25
|
+
*/
|
|
26
|
+
onSchedule?: (demoRoomCode: string) => void;
|
|
27
|
+
}
|
|
28
|
+
declare const DemoRoom: React.FC<DemoRoomProps>;
|
|
29
|
+
|
|
30
|
+
export { DemoRoom as D, type DemoRoomProps as a };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/* src/components/DemoRoom/components/RoomsList.module.css */
|
|
2
|
+
.antdMobileScope {
|
|
3
|
+
all: unset;
|
|
4
|
+
display: block;
|
|
5
|
+
position: absolute;
|
|
6
|
+
box-sizing: border-box;
|
|
7
|
+
font-family:
|
|
8
|
+
-apple-system,
|
|
9
|
+
BlinkMacSystemFont,
|
|
10
|
+
"Segoe UI",
|
|
11
|
+
Roboto,
|
|
12
|
+
"Helvetica Neue",
|
|
13
|
+
Arial,
|
|
14
|
+
sans-serif;
|
|
15
|
+
font-size: 14px;
|
|
16
|
+
line-height: 1.5;
|
|
17
|
+
color: #333;
|
|
18
|
+
--adm-color-primary: #1677ff;
|
|
19
|
+
--adm-color-text: #333333;
|
|
20
|
+
--adm-font-size-main: 14px;
|
|
21
|
+
}
|
|
22
|
+
.antdMobileScope *,
|
|
23
|
+
.antdMobileScope *::before,
|
|
24
|
+
.antdMobileScope *::after {
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
}
|
|
27
|
+
.antd-mobile-isolated-container .antdMobileScope :not([class*=adm-]) {
|
|
28
|
+
all: unset;
|
|
29
|
+
}
|
|
30
|
+
.antd-mobile-isolated-container .antdMobileScope [class*=adm-] {
|
|
31
|
+
all: revert;
|
|
32
|
+
}
|
|
33
|
+
/*# sourceMappingURL=demo-room.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/DemoRoom/components/RoomsList.module.css"],"sourcesContent":["/* antd-mobile 样式隔离 - 使用更强的隔离策略 */\n.antdMobileScope {\n /* 重置所有继承样式,但保持布局相关属性 */\n all: unset;\n\n /* 恢复必要的属性 */\n display: block;\n position: absolute;\n box-sizing: border-box;\n\n /* 阻止继承字体样式 */\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n font-size: 14px;\n line-height: 1.5;\n color: #333;\n\n /* 重置 CSS 变量影响 */\n --adm-color-primary: #1677ff;\n --adm-color-text: #333333;\n --adm-font-size-main: 14px;\n}\n\n/* 确保 antd-mobile 组件内部样式正常工作 */\n.antdMobileScope *,\n.antdMobileScope *::before,\n.antdMobileScope *::after {\n box-sizing: border-box;\n}\n\n/* 阻止全局样式继承 */\n.antd-mobile-isolated-container .antdMobileScope :not([class*=\"adm-\"]) {\n all: unset;\n}\n\n/* 保持 antd-mobile 组件样式 */\n.antd-mobile-isolated-container .antdMobileScope [class*=\"adm-\"] {\n all: revert;\n}\n"],"mappings":";AACA,CAAC;AAEC,OAAK;AAGL,WAAS;AACT,YAAU;AACV,cAAY;AAGZ;AAAA,IAAa,aAAa;AAAA,IAAE,kBAAkB;AAAA,IAAE,UAAU;AAAA,IAAE,MAAM;AAAA,IAAE,gBAAgB;AAAA,IAAE,KAAK;AAAA,IAAE;AAC7F,aAAW;AACX,eAAa;AACb,SAAO;AAGP,uBAAqB;AACrB,oBAAkB;AAClB,wBAAsB;AACxB;AAGA,CAtBC,gBAsBgB;AACjB,CAvBC,gBAuBgB,CAAC;AAClB,CAxBC,gBAwBgB,CAAC;AAChB,cAAY;AACd;AAGA,CAAC,+BAA+B,CA7B/B,gBA6BgD,KAAK,CAAC;AACrD,OAAK;AACP;AAGA,CALC,+BAK+B,CAlC/B,gBAkCgD,CAAC;AAChD,OAAK;AACP;","names":[]}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export { D as DemoRoom, a as DemoRoomProps } from './DemoRoom-CZyrsxWe.mjs';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
interface HelpNavTab {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
showNewTag?: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface HelpNavProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
/**
|
|
11
|
+
* 标签页数组
|
|
12
|
+
*/
|
|
13
|
+
tabs?: HelpNavTab[];
|
|
14
|
+
/**
|
|
15
|
+
* 当前激活的标签页 ID
|
|
16
|
+
*/
|
|
17
|
+
activeTabId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* 标签页切换回调
|
|
20
|
+
*/
|
|
21
|
+
onTabChange?: (tabId: string) => void;
|
|
22
|
+
/**
|
|
23
|
+
* "New" 标签的背景色
|
|
24
|
+
* @default "#3ADB67"
|
|
25
|
+
*/
|
|
26
|
+
newTagColor?: string;
|
|
27
|
+
/**
|
|
28
|
+
* 激活标签的底部边框色
|
|
29
|
+
* @default "#3ADB67"
|
|
30
|
+
*/
|
|
31
|
+
activeBorderColor?: string;
|
|
32
|
+
}
|
|
33
|
+
declare const HelpNav: React.FC<HelpNavProps>;
|
|
34
|
+
|
|
35
|
+
interface EventCardButton {
|
|
36
|
+
label: string;
|
|
37
|
+
variant?: 'primary' | 'secondary';
|
|
38
|
+
onClick?: () => void;
|
|
39
|
+
}
|
|
40
|
+
interface EventCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
41
|
+
/**
|
|
42
|
+
* Event title
|
|
43
|
+
*/
|
|
44
|
+
title: string;
|
|
45
|
+
/**
|
|
46
|
+
* Event description
|
|
47
|
+
*/
|
|
48
|
+
description?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Background image URL
|
|
51
|
+
*/
|
|
52
|
+
backgroundImage?: string;
|
|
53
|
+
aspectRatio?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Card variant - determines styling
|
|
56
|
+
*/
|
|
57
|
+
variant?: 'large' | 'medium' | 'product';
|
|
58
|
+
/**
|
|
59
|
+
* Buttons/actions for the card
|
|
60
|
+
*/
|
|
61
|
+
buttons?: EventCardButton[];
|
|
62
|
+
/**
|
|
63
|
+
* Additional subtitle (for product variant)
|
|
64
|
+
*/
|
|
65
|
+
subtitle?: string;
|
|
66
|
+
}
|
|
67
|
+
declare const EventCard: React.FC<EventCardProps>;
|
|
68
|
+
|
|
69
|
+
interface UpcomingEventsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
70
|
+
/**
|
|
71
|
+
* Section title
|
|
72
|
+
* @default "Upcoming Events"
|
|
73
|
+
*/
|
|
74
|
+
title?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Array of event cards to display
|
|
77
|
+
*/
|
|
78
|
+
events?: EventCardProps[];
|
|
79
|
+
/**
|
|
80
|
+
* Show "View More" button
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
83
|
+
showViewMore?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Callback when "View More" is clicked
|
|
86
|
+
*/
|
|
87
|
+
onViewMore?: () => void;
|
|
88
|
+
}
|
|
89
|
+
declare const UpcomingEvents: React.FC<UpcomingEventsProps>;
|
|
90
|
+
|
|
91
|
+
interface StudioLocation {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
address: string;
|
|
95
|
+
city: string;
|
|
96
|
+
state: string;
|
|
97
|
+
zipCode: string;
|
|
98
|
+
country: string;
|
|
99
|
+
lat: number;
|
|
100
|
+
lng: number;
|
|
101
|
+
availableTime?: string;
|
|
102
|
+
euifyMakeModel?: string;
|
|
103
|
+
}
|
|
104
|
+
interface StudioMapProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
105
|
+
/**
|
|
106
|
+
* 谷歌地图 API Key
|
|
107
|
+
*/
|
|
108
|
+
googleMapsApiKey: string;
|
|
109
|
+
/**
|
|
110
|
+
* 工作室位置数据
|
|
111
|
+
*/
|
|
112
|
+
locations?: StudioLocation[];
|
|
113
|
+
/**
|
|
114
|
+
* 默认中心点
|
|
115
|
+
*/
|
|
116
|
+
defaultCenter?: {
|
|
117
|
+
lat: number;
|
|
118
|
+
lng: number;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* 默认缩放级别
|
|
122
|
+
*/
|
|
123
|
+
defaultZoom?: number;
|
|
124
|
+
/**
|
|
125
|
+
* 地图高度
|
|
126
|
+
*/
|
|
127
|
+
mapHeight?: string;
|
|
128
|
+
/**
|
|
129
|
+
* 点击 Schedule Now 的回调
|
|
130
|
+
*/
|
|
131
|
+
onSchedule?: (location: StudioLocation) => void;
|
|
132
|
+
}
|
|
133
|
+
declare const StudioMap: React.FC<StudioMapProps>;
|
|
134
|
+
|
|
135
|
+
interface StudioCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
136
|
+
/**
|
|
137
|
+
* Demo room code (unique identifier)
|
|
138
|
+
*/
|
|
139
|
+
code: string;
|
|
140
|
+
/**
|
|
141
|
+
* Studio name
|
|
142
|
+
*/
|
|
143
|
+
name: string;
|
|
144
|
+
/**
|
|
145
|
+
* Available time
|
|
146
|
+
*/
|
|
147
|
+
availableTime: string;
|
|
148
|
+
/**
|
|
149
|
+
* Full address
|
|
150
|
+
*/
|
|
151
|
+
address: string;
|
|
152
|
+
city: string;
|
|
153
|
+
state: string;
|
|
154
|
+
zipCode: string;
|
|
155
|
+
country?: string;
|
|
156
|
+
/**
|
|
157
|
+
* Available euifyMake models
|
|
158
|
+
*/
|
|
159
|
+
euifyMakeModel: string;
|
|
160
|
+
/**
|
|
161
|
+
* Callback when "Schedule Now" is clicked, receives demo room code
|
|
162
|
+
*/
|
|
163
|
+
onSchedule?: (code: string) => void;
|
|
164
|
+
}
|
|
165
|
+
declare const StudioCard: React.FC<StudioCardProps>;
|
|
166
|
+
|
|
167
|
+
interface EasyStep {
|
|
168
|
+
/**
|
|
169
|
+
* Step number (1-4)
|
|
170
|
+
*/
|
|
171
|
+
stepNumber: number;
|
|
172
|
+
/**
|
|
173
|
+
* Step title
|
|
174
|
+
*/
|
|
175
|
+
title: string;
|
|
176
|
+
/**
|
|
177
|
+
* Step description
|
|
178
|
+
*/
|
|
179
|
+
description: string;
|
|
180
|
+
/**
|
|
181
|
+
* Map image URL for this step
|
|
182
|
+
*/
|
|
183
|
+
mapImage: string;
|
|
184
|
+
}
|
|
185
|
+
interface EasyStepsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
186
|
+
/**
|
|
187
|
+
* Section title
|
|
188
|
+
* @default "Schedule in 4 Easy Steps"
|
|
189
|
+
*/
|
|
190
|
+
title?: string;
|
|
191
|
+
/**
|
|
192
|
+
* Array of steps to display
|
|
193
|
+
*/
|
|
194
|
+
steps?: EasyStep[];
|
|
195
|
+
}
|
|
196
|
+
declare const EasySteps: React.FC<EasyStepsProps>;
|
|
197
|
+
|
|
198
|
+
export { type EasyStep, EasySteps, type EasyStepsProps, EventCard, type EventCardButton, type EventCardProps, HelpNav, type HelpNavProps, type HelpNavTab, StudioCard, type StudioCardProps, type StudioLocation, StudioMap, type StudioMapProps, UpcomingEvents, type UpcomingEventsProps };
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export { D as DemoRoom, a as DemoRoomProps } from './DemoRoom-CZyrsxWe.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
interface HelpNavTab {
|
|
5
|
+
id: string;
|
|
6
|
+
label: string;
|
|
7
|
+
showNewTag?: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface HelpNavProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
/**
|
|
11
|
+
* 标签页数组
|
|
12
|
+
*/
|
|
13
|
+
tabs?: HelpNavTab[];
|
|
14
|
+
/**
|
|
15
|
+
* 当前激活的标签页 ID
|
|
16
|
+
*/
|
|
17
|
+
activeTabId?: string;
|
|
18
|
+
/**
|
|
19
|
+
* 标签页切换回调
|
|
20
|
+
*/
|
|
21
|
+
onTabChange?: (tabId: string) => void;
|
|
22
|
+
/**
|
|
23
|
+
* "New" 标签的背景色
|
|
24
|
+
* @default "#3ADB67"
|
|
25
|
+
*/
|
|
26
|
+
newTagColor?: string;
|
|
27
|
+
/**
|
|
28
|
+
* 激活标签的底部边框色
|
|
29
|
+
* @default "#3ADB67"
|
|
30
|
+
*/
|
|
31
|
+
activeBorderColor?: string;
|
|
32
|
+
}
|
|
33
|
+
declare const HelpNav: React.FC<HelpNavProps>;
|
|
34
|
+
|
|
35
|
+
interface EventCardButton {
|
|
36
|
+
label: string;
|
|
37
|
+
variant?: 'primary' | 'secondary';
|
|
38
|
+
onClick?: () => void;
|
|
39
|
+
}
|
|
40
|
+
interface EventCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
41
|
+
/**
|
|
42
|
+
* Event title
|
|
43
|
+
*/
|
|
44
|
+
title: string;
|
|
45
|
+
/**
|
|
46
|
+
* Event description
|
|
47
|
+
*/
|
|
48
|
+
description?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Background image URL
|
|
51
|
+
*/
|
|
52
|
+
backgroundImage?: string;
|
|
53
|
+
aspectRatio?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Card variant - determines styling
|
|
56
|
+
*/
|
|
57
|
+
variant?: 'large' | 'medium' | 'product';
|
|
58
|
+
/**
|
|
59
|
+
* Buttons/actions for the card
|
|
60
|
+
*/
|
|
61
|
+
buttons?: EventCardButton[];
|
|
62
|
+
/**
|
|
63
|
+
* Additional subtitle (for product variant)
|
|
64
|
+
*/
|
|
65
|
+
subtitle?: string;
|
|
66
|
+
}
|
|
67
|
+
declare const EventCard: React.FC<EventCardProps>;
|
|
68
|
+
|
|
69
|
+
interface UpcomingEventsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
70
|
+
/**
|
|
71
|
+
* Section title
|
|
72
|
+
* @default "Upcoming Events"
|
|
73
|
+
*/
|
|
74
|
+
title?: string;
|
|
75
|
+
/**
|
|
76
|
+
* Array of event cards to display
|
|
77
|
+
*/
|
|
78
|
+
events?: EventCardProps[];
|
|
79
|
+
/**
|
|
80
|
+
* Show "View More" button
|
|
81
|
+
* @default true
|
|
82
|
+
*/
|
|
83
|
+
showViewMore?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Callback when "View More" is clicked
|
|
86
|
+
*/
|
|
87
|
+
onViewMore?: () => void;
|
|
88
|
+
}
|
|
89
|
+
declare const UpcomingEvents: React.FC<UpcomingEventsProps>;
|
|
90
|
+
|
|
91
|
+
interface StudioLocation {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
address: string;
|
|
95
|
+
city: string;
|
|
96
|
+
state: string;
|
|
97
|
+
zipCode: string;
|
|
98
|
+
country: string;
|
|
99
|
+
lat: number;
|
|
100
|
+
lng: number;
|
|
101
|
+
availableTime?: string;
|
|
102
|
+
euifyMakeModel?: string;
|
|
103
|
+
}
|
|
104
|
+
interface StudioMapProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
105
|
+
/**
|
|
106
|
+
* 谷歌地图 API Key
|
|
107
|
+
*/
|
|
108
|
+
googleMapsApiKey: string;
|
|
109
|
+
/**
|
|
110
|
+
* 工作室位置数据
|
|
111
|
+
*/
|
|
112
|
+
locations?: StudioLocation[];
|
|
113
|
+
/**
|
|
114
|
+
* 默认中心点
|
|
115
|
+
*/
|
|
116
|
+
defaultCenter?: {
|
|
117
|
+
lat: number;
|
|
118
|
+
lng: number;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* 默认缩放级别
|
|
122
|
+
*/
|
|
123
|
+
defaultZoom?: number;
|
|
124
|
+
/**
|
|
125
|
+
* 地图高度
|
|
126
|
+
*/
|
|
127
|
+
mapHeight?: string;
|
|
128
|
+
/**
|
|
129
|
+
* 点击 Schedule Now 的回调
|
|
130
|
+
*/
|
|
131
|
+
onSchedule?: (location: StudioLocation) => void;
|
|
132
|
+
}
|
|
133
|
+
declare const StudioMap: React.FC<StudioMapProps>;
|
|
134
|
+
|
|
135
|
+
interface StudioCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
136
|
+
/**
|
|
137
|
+
* Demo room code (unique identifier)
|
|
138
|
+
*/
|
|
139
|
+
code: string;
|
|
140
|
+
/**
|
|
141
|
+
* Studio name
|
|
142
|
+
*/
|
|
143
|
+
name: string;
|
|
144
|
+
/**
|
|
145
|
+
* Available time
|
|
146
|
+
*/
|
|
147
|
+
availableTime: string;
|
|
148
|
+
/**
|
|
149
|
+
* Full address
|
|
150
|
+
*/
|
|
151
|
+
address: string;
|
|
152
|
+
city: string;
|
|
153
|
+
state: string;
|
|
154
|
+
zipCode: string;
|
|
155
|
+
country?: string;
|
|
156
|
+
/**
|
|
157
|
+
* Available euifyMake models
|
|
158
|
+
*/
|
|
159
|
+
euifyMakeModel: string;
|
|
160
|
+
/**
|
|
161
|
+
* Callback when "Schedule Now" is clicked, receives demo room code
|
|
162
|
+
*/
|
|
163
|
+
onSchedule?: (code: string) => void;
|
|
164
|
+
}
|
|
165
|
+
declare const StudioCard: React.FC<StudioCardProps>;
|
|
166
|
+
|
|
167
|
+
interface EasyStep {
|
|
168
|
+
/**
|
|
169
|
+
* Step number (1-4)
|
|
170
|
+
*/
|
|
171
|
+
stepNumber: number;
|
|
172
|
+
/**
|
|
173
|
+
* Step title
|
|
174
|
+
*/
|
|
175
|
+
title: string;
|
|
176
|
+
/**
|
|
177
|
+
* Step description
|
|
178
|
+
*/
|
|
179
|
+
description: string;
|
|
180
|
+
/**
|
|
181
|
+
* Map image URL for this step
|
|
182
|
+
*/
|
|
183
|
+
mapImage: string;
|
|
184
|
+
}
|
|
185
|
+
interface EasyStepsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
186
|
+
/**
|
|
187
|
+
* Section title
|
|
188
|
+
* @default "Schedule in 4 Easy Steps"
|
|
189
|
+
*/
|
|
190
|
+
title?: string;
|
|
191
|
+
/**
|
|
192
|
+
* Array of steps to display
|
|
193
|
+
*/
|
|
194
|
+
steps?: EasyStep[];
|
|
195
|
+
}
|
|
196
|
+
declare const EasySteps: React.FC<EasyStepsProps>;
|
|
197
|
+
|
|
198
|
+
export { type EasyStep, EasySteps, type EasyStepsProps, EventCard, type EventCardButton, type EventCardProps, HelpNav, type HelpNavProps, type HelpNavTab, StudioCard, type StudioCardProps, type StudioLocation, StudioMap, type StudioMapProps, UpcomingEvents, type UpcomingEventsProps };
|