@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 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 };