@open-dy/vibecoding-sdk-taro 0.0.1-beta.1

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 (239) hide show
  1. package/dist/adapters/interest-card/eslint/eslint-plugin-custom-navigation.mjs +290 -0
  2. package/dist/adapters/interest-card/eslint/taro.mjs +55 -0
  3. package/dist/adapters/interest-card/runtime/microapp.d.ts +7 -0
  4. package/dist/adapters/interest-card/runtime/microapp.js +8 -0
  5. package/dist/adapters/interest-card/runtime/microapp.js.map +1 -0
  6. package/dist/adapters/interest-card/types/taro.d.ts +28 -0
  7. package/dist/build/config-overrides.d.ts +19 -0
  8. package/dist/build/config-overrides.js +35 -0
  9. package/dist/build/config-overrides.js.map +1 -0
  10. package/dist/build/index.d.ts +1 -0
  11. package/dist/build/index.js +2 -0
  12. package/dist/build/index.js.map +1 -0
  13. package/dist/build/plugins/app-config.cjs +43 -0
  14. package/dist/build/plugins/vite-depend-card.d.ts +29 -0
  15. package/dist/build/plugins/vite-depend-card.js +250 -0
  16. package/dist/build/plugins/vite-depend-card.js.map +1 -0
  17. package/dist/build/plugins/vite-image-asset-import.d.ts +10 -0
  18. package/dist/build/plugins/vite-image-asset-import.js +150 -0
  19. package/dist/build/plugins/vite-image-asset-import.js.map +1 -0
  20. package/dist/build/plugins/vite-inline-json.d.ts +4 -0
  21. package/dist/build/plugins/vite-inline-json.js +129 -0
  22. package/dist/build/plugins/vite-inline-json.js.map +1 -0
  23. package/dist/build/plugins/vite-taro-source-location.d.ts +13 -0
  24. package/dist/build/plugins/vite-taro-source-location.js +159 -0
  25. package/dist/build/plugins/vite-taro-source-location.js.map +1 -0
  26. package/dist/build/taro.d.ts +53 -0
  27. package/dist/build/taro.js +729 -0
  28. package/dist/build/taro.js.map +1 -0
  29. package/dist/components/miniapp-open-card.d.ts +19 -0
  30. package/dist/components/miniapp-open-card.js +3 -0
  31. package/dist/components/miniapp-open-card.js.map +1 -0
  32. package/dist/eslint/eslint-plugin-microapp-pages.mjs +659 -0
  33. package/dist/eslint/server.mjs +69 -0
  34. package/dist/eslint/taro.mjs +553 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.js +3 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/internal/runtime/douyin-open-button.d.ts +29 -0
  39. package/dist/internal/runtime/iframe-auth/identity.d.ts +20 -0
  40. package/dist/internal/runtime/iframe-auth/identity.js +156 -0
  41. package/dist/internal/runtime/iframe-auth/identity.js.map +1 -0
  42. package/dist/internal/runtime/iframe-auth/index.d.ts +2 -0
  43. package/dist/internal/runtime/iframe-auth/index.js +3 -0
  44. package/dist/internal/runtime/iframe-auth/index.js.map +1 -0
  45. package/dist/internal/runtime/iframe-auth/sync.d.ts +2 -0
  46. package/dist/internal/runtime/iframe-auth/sync.js +23 -0
  47. package/dist/internal/runtime/iframe-auth/sync.js.map +1 -0
  48. package/dist/lib/measure.d.ts +21 -0
  49. package/dist/lib/measure.js +101 -0
  50. package/dist/lib/measure.js.map +1 -0
  51. package/dist/lib/platform.d.ts +2 -0
  52. package/dist/lib/platform.js +11 -0
  53. package/dist/lib/platform.js.map +1 -0
  54. package/dist/lib/utils.d.ts +2 -0
  55. package/dist/lib/utils.js +6 -0
  56. package/dist/lib/utils.js.map +1 -0
  57. package/dist/reference/llms.txt +36 -0
  58. package/dist/reference/sdk-api/build/taro/BuildContext.md +53 -0
  59. package/dist/reference/sdk-api/build/taro/CreateMicroappTaroConfigOptions.md +62 -0
  60. package/dist/reference/sdk-api/build/taro/createMicroappTaroConfig.md +66 -0
  61. package/dist/reference/sdk-api/build/taro/index.md +11 -0
  62. package/dist/reference/sdk-api/runtime/CreateMicroappClientOptions.md +47 -0
  63. package/dist/reference/sdk-api/runtime/createMicroappClient.md +378 -0
  64. package/dist/reference/sdk-api/runtime/index.md +10 -0
  65. package/dist/reference/sdk-api.json +1534 -0
  66. package/dist/reference/sdk-api.md +43 -0
  67. package/dist/runtime/client.d.ts +63 -0
  68. package/dist/runtime/client.js +194 -0
  69. package/dist/runtime/client.js.map +1 -0
  70. package/dist/runtime/closed-domain-request-header.d.ts +4 -0
  71. package/dist/runtime/closed-domain-request-header.js +8 -0
  72. package/dist/runtime/closed-domain-request-header.js.map +1 -0
  73. package/dist/runtime/default-client.d.ts +57 -0
  74. package/dist/runtime/default-client.js +21 -0
  75. package/dist/runtime/default-client.js.map +1 -0
  76. package/dist/runtime/default-iframe-auth.d.ts +8 -0
  77. package/dist/runtime/default-iframe-auth.js +10 -0
  78. package/dist/runtime/default-iframe-auth.js.map +1 -0
  79. package/dist/runtime/douyin-container-request.d.ts +11 -0
  80. package/dist/runtime/douyin-container-request.js +301 -0
  81. package/dist/runtime/douyin-container-request.js.map +1 -0
  82. package/dist/runtime/douyin-login-request.d.ts +32 -0
  83. package/dist/runtime/douyin-login-request.js +400 -0
  84. package/dist/runtime/douyin-login-request.js.map +1 -0
  85. package/dist/runtime/globals.d.ts +342 -0
  86. package/dist/runtime/index.d.ts +4 -0
  87. package/dist/runtime/index.js +4 -0
  88. package/dist/runtime/index.js.map +1 -0
  89. package/dist/runtime/network-url.d.ts +3 -0
  90. package/dist/runtime/network-url.js +53 -0
  91. package/dist/runtime/network-url.js.map +1 -0
  92. package/dist/types/taro.d.ts +1 -0
  93. package/dist/ui/accordion.d.ts +17 -0
  94. package/dist/ui/accordion.js +60 -0
  95. package/dist/ui/accordion.js.map +1 -0
  96. package/dist/ui/alert-dialog.d.ts +33 -0
  97. package/dist/ui/alert-dialog.js +96 -0
  98. package/dist/ui/alert-dialog.js.map +1 -0
  99. package/dist/ui/alert.d.ts +11 -0
  100. package/dist/ui/alert.js +49 -0
  101. package/dist/ui/alert.js.map +1 -0
  102. package/dist/ui/aspect-ratio.d.ts +5 -0
  103. package/dist/ui/aspect-ratio.js +10 -0
  104. package/dist/ui/aspect-ratio.js.map +1 -0
  105. package/dist/ui/avatar.d.ts +14 -0
  106. package/dist/ui/avatar.js +50 -0
  107. package/dist/ui/avatar.js.map +1 -0
  108. package/dist/ui/badge.d.ts +8 -0
  109. package/dist/ui/badge.js +27 -0
  110. package/dist/ui/badge.js.map +1 -0
  111. package/dist/ui/button-group.d.ts +14 -0
  112. package/dist/ui/button-group.js +52 -0
  113. package/dist/ui/button-group.js.map +1 -0
  114. package/dist/ui/button.d.ts +30 -0
  115. package/dist/ui/button.js +75 -0
  116. package/dist/ui/button.js.map +1 -0
  117. package/dist/ui/calendar.d.ts +29 -0
  118. package/dist/ui/calendar.js +141 -0
  119. package/dist/ui/calendar.js.map +1 -0
  120. package/dist/ui/card.d.ts +12 -0
  121. package/dist/ui/card.js +38 -0
  122. package/dist/ui/card.js.map +1 -0
  123. package/dist/ui/carousel.d.ts +30 -0
  124. package/dist/ui/carousel.js +60 -0
  125. package/dist/ui/carousel.js.map +1 -0
  126. package/dist/ui/checkbox.d.ts +9 -0
  127. package/dist/ui/checkbox.js +20 -0
  128. package/dist/ui/checkbox.js.map +1 -0
  129. package/dist/ui/collapsible.d.ts +18 -0
  130. package/dist/ui/collapsible.js +53 -0
  131. package/dist/ui/collapsible.js.map +1 -0
  132. package/dist/ui/combobox.d.ts +55 -0
  133. package/dist/ui/combobox.js +165 -0
  134. package/dist/ui/combobox.js.map +1 -0
  135. package/dist/ui/dialog.d.ts +26 -0
  136. package/dist/ui/dialog.js +54 -0
  137. package/dist/ui/dialog.js.map +1 -0
  138. package/dist/ui/drawer.d.ts +21 -0
  139. package/dist/ui/drawer.js +57 -0
  140. package/dist/ui/drawer.js.map +1 -0
  141. package/dist/ui/dropdown-menu.d.ts +52 -0
  142. package/dist/ui/dropdown-menu.js +112 -0
  143. package/dist/ui/dropdown-menu.js.map +1 -0
  144. package/dist/ui/empty.d.ts +12 -0
  145. package/dist/ui/empty.js +35 -0
  146. package/dist/ui/empty.js.map +1 -0
  147. package/dist/ui/field.d.ts +26 -0
  148. package/dist/ui/field.js +117 -0
  149. package/dist/ui/field.js.map +1 -0
  150. package/dist/ui/helpers.d.ts +6 -0
  151. package/dist/ui/helpers.js +23 -0
  152. package/dist/ui/helpers.js.map +1 -0
  153. package/dist/ui/index.d.ts +47 -0
  154. package/dist/ui/index.js +48 -0
  155. package/dist/ui/index.js.map +1 -0
  156. package/dist/ui/input-group.d.ts +17 -0
  157. package/dist/ui/input-group.js +122 -0
  158. package/dist/ui/input-group.js.map +1 -0
  159. package/dist/ui/input-otp.d.ts +18 -0
  160. package/dist/ui/input-otp.js +48 -0
  161. package/dist/ui/input-otp.js.map +1 -0
  162. package/dist/ui/input.d.ts +5 -0
  163. package/dist/ui/input.js +8 -0
  164. package/dist/ui/input.js.map +1 -0
  165. package/dist/ui/item.d.ts +22 -0
  166. package/dist/ui/item.js +83 -0
  167. package/dist/ui/item.js.map +1 -0
  168. package/dist/ui/label.d.ts +3 -0
  169. package/dist/ui/label.js +8 -0
  170. package/dist/ui/label.js.map +1 -0
  171. package/dist/ui/menubar.d.ts +65 -0
  172. package/dist/ui/menubar.js +244 -0
  173. package/dist/ui/menubar.js.map +1 -0
  174. package/dist/ui/navigation-menu.d.ts +27 -0
  175. package/dist/ui/navigation-menu.js +72 -0
  176. package/dist/ui/navigation-menu.js.map +1 -0
  177. package/dist/ui/pagination.d.ts +17 -0
  178. package/dist/ui/pagination.js +28 -0
  179. package/dist/ui/pagination.js.map +1 -0
  180. package/dist/ui/popover.d.ts +27 -0
  181. package/dist/ui/popover.js +139 -0
  182. package/dist/ui/popover.js.map +1 -0
  183. package/dist/ui/portal.d.ts +5 -0
  184. package/dist/ui/portal.js +18 -0
  185. package/dist/ui/portal.js.map +1 -0
  186. package/dist/ui/progress.d.ts +45 -0
  187. package/dist/ui/progress.js +67 -0
  188. package/dist/ui/progress.js.map +1 -0
  189. package/dist/ui/radio-group.d.ts +12 -0
  190. package/dist/ui/radio-group.js +29 -0
  191. package/dist/ui/radio-group.js.map +1 -0
  192. package/dist/ui/resizable.d.ts +20 -0
  193. package/dist/ui/resizable.js +244 -0
  194. package/dist/ui/resizable.js.map +1 -0
  195. package/dist/ui/scroll-area.d.ts +8 -0
  196. package/dist/ui/scroll-area.js +34 -0
  197. package/dist/ui/scroll-area.js.map +1 -0
  198. package/dist/ui/select.d.ts +35 -0
  199. package/dist/ui/select.js +136 -0
  200. package/dist/ui/select.js.map +1 -0
  201. package/dist/ui/separator.d.ts +5 -0
  202. package/dist/ui/separator.js +8 -0
  203. package/dist/ui/separator.js.map +1 -0
  204. package/dist/ui/sheet.d.ts +26 -0
  205. package/dist/ui/sheet.js +67 -0
  206. package/dist/ui/sheet.js.map +1 -0
  207. package/dist/ui/skeleton.d.ts +3 -0
  208. package/dist/ui/skeleton.js +8 -0
  209. package/dist/ui/skeleton.js.map +1 -0
  210. package/dist/ui/slider.d.ts +12 -0
  211. package/dist/ui/slider.js +94 -0
  212. package/dist/ui/slider.js.map +1 -0
  213. package/dist/ui/sonner.d.ts +6 -0
  214. package/dist/ui/sonner.js +13 -0
  215. package/dist/ui/sonner.js.map +1 -0
  216. package/dist/ui/spinner.d.ts +3 -0
  217. package/dist/ui/spinner.js +9 -0
  218. package/dist/ui/spinner.js.map +1 -0
  219. package/dist/ui/switch.d.ts +11 -0
  220. package/dist/ui/switch.js +33 -0
  221. package/dist/ui/switch.js.map +1 -0
  222. package/dist/ui/table.d.ts +13 -0
  223. package/dist/ui/table.js +54 -0
  224. package/dist/ui/table.js.map +1 -0
  225. package/dist/ui/tabs.d.ts +23 -0
  226. package/dist/ui/tabs.js +61 -0
  227. package/dist/ui/tabs.js.map +1 -0
  228. package/dist/ui/tailwind.css +2 -0
  229. package/dist/ui/textarea.d.ts +3 -0
  230. package/dist/ui/textarea.js +13 -0
  231. package/dist/ui/textarea.js.map +1 -0
  232. package/dist/ui/theme.css +234 -0
  233. package/dist/ui/toggle-group.d.ts +19 -0
  234. package/dist/ui/toggle-group.js +73 -0
  235. package/dist/ui/toggle-group.js.map +1 -0
  236. package/dist/ui/toggle.d.ts +14 -0
  237. package/dist/ui/toggle.js +41 -0
  238. package/dist/ui/toggle.js.map +1 -0
  239. package/package.json +97 -0
@@ -0,0 +1,342 @@
1
+ /// <reference types="@tarojs/taro" />
2
+ /// <reference path="../internal/runtime/douyin-open-button.d.ts" />
3
+
4
+ declare const PROJECT_DOMAIN: string | undefined;
5
+ declare const DOUYIN_CLOUD_ENV_ID: string;
6
+ declare const DOUYIN_CLOUD_DEV_ENV_ID: string;
7
+ declare const DOUYIN_CLOUD_SERVICE_ID: string;
8
+ declare const AUDIT_DOUYIN_CLOUD_ENV_ID: string;
9
+ declare const AUDIT_DOUYIN_CLOUD_SERVICE_ID: string;
10
+ declare const OPEN_CARD_ID: string;
11
+ declare const UPLOAD_URL: string;
12
+ declare const DOWNLOAD_URL: string;
13
+
14
+ declare namespace Taro {
15
+ interface ShareAppMessageReturnObject {
16
+ channel?: string;
17
+ success?: () => void;
18
+ fail?: (error?: unknown) => void;
19
+ }
20
+
21
+ interface ShareAppMessageObject {
22
+ channel?: string;
23
+ success?: () => void;
24
+ fail?: (error?: unknown) => void;
25
+ }
26
+
27
+ interface AppConfig {
28
+ isDependCard?: boolean;
29
+ }
30
+ }
31
+
32
+ type DouyinCallContainerSuccessResult<T = unknown> = {
33
+ data?: T | string;
34
+ body?: T | string;
35
+ statusCode: number;
36
+ headers?: Record<string, unknown>;
37
+ header?: Record<string, unknown>;
38
+ errMsg?: string;
39
+ };
40
+
41
+ type DouyinCallContainerFailResult = {
42
+ errMsg?: string;
43
+ };
44
+
45
+ type DouyinCloudInstance = {
46
+ callContainer?: <T = unknown>(options: {
47
+ path: string;
48
+ id?: string;
49
+ usePrefetchCache?: boolean;
50
+ init?: {
51
+ method?: string;
52
+ header?: Record<string, unknown>;
53
+ timeout?: number;
54
+ body?: unknown;
55
+ };
56
+ success?: (result: DouyinCallContainerSuccessResult<T>) => void;
57
+ fail?: (result: DouyinCallContainerFailResult) => void;
58
+ }) => void;
59
+ uploadFile: (params: {
60
+ cloudPath: string;
61
+ filePath: string;
62
+ timeout?: number;
63
+ success?: (res: { errMsg: string }) => void;
64
+ fail?: (res: { errMsg: string; errNo: number }) => void;
65
+ }) => void;
66
+ downloadFile: (params: {
67
+ cloudPath: string;
68
+ filePath?: string;
69
+ timeout?: number;
70
+ success?: (res: {
71
+ tempFilePath: string;
72
+ filePath: string;
73
+ errMsg: string;
74
+ }) => void;
75
+ fail?: (res: { errMsg: string; errNo: number }) => void;
76
+ }) => void;
77
+ };
78
+
79
+ interface EventSourceTask {
80
+ close: () => void;
81
+ onClose: (cb: () => void) => void;
82
+ onOpen: (cb: () => void) => void;
83
+ onError: (cb: () => void) => void;
84
+ onMessage: (cb: (chunk: { data: string; id: number }) => void) => void;
85
+ readonly readyState: 0 | 1 | 2;
86
+ }
87
+
88
+ type SceneActivityScene = "bind" | "receive";
89
+
90
+ type SceneActivityEventType =
91
+ | "bind" // 绑定福利
92
+ | "receive" // 领取福利
93
+ | "autoReceive" // 复访自动领取(基础库 3.32.0+)
94
+ | "toUse"; // 复访“去使用”点击(基础库 3.32.0+)
95
+
96
+ type SceneActivityFailResult = {
97
+ errMsg?: string;
98
+ errNo?: number; // 21001 / 21011 / 21021 / 21041 等,详见官方错误码表
99
+ };
100
+
101
+ type SceneActivityBindResult = {
102
+ mainTitle?: string; // 主标题
103
+ subTitle?: string; // 副标题
104
+ imageUrl?: string; // 封面图片
105
+ leftButtonText?: string; // 关闭按钮文案
106
+ rightButtonText?: string; // 引导标题文案
107
+ extra?: string; // 福利信息(透传字符串)
108
+ errMsg?: string; // "SceneActivityContext.bind:ok"
109
+ };
110
+
111
+ type SceneActivityQueryResult = {
112
+ activityList: string[]; // 复访福利活动 id 列表
113
+ errMsg?: string; // "SceneActivityContext.query:ok"
114
+ };
115
+
116
+ type SceneActivityReceiveResult = {
117
+ welfareId?: string; // 复访营销活动 id
118
+ errMsg?: string; // "SceneActivityContext.receive:ok"
119
+ };
120
+
121
+ type SceneActivityEvent = {
122
+ eventType: SceneActivityEventType;
123
+ data: {
124
+ welfareId: string;
125
+ };
126
+ };
127
+
128
+ type SceneActivityContext = {
129
+ query: (options?: {
130
+ success?: (result: SceneActivityQueryResult) => void;
131
+ fail?: (result: SceneActivityFailResult) => void;
132
+ complete?: () => void;
133
+ }) => void;
134
+ checkScene: (options: { scene: SceneActivityScene }) => boolean;
135
+ bind: (options: {
136
+ activityId?: string; // 留空时基础库默认选择最后创建的活动
137
+ success?: (result: SceneActivityBindResult) => void;
138
+ fail?: (result: SceneActivityFailResult) => void;
139
+ complete?: () => void;
140
+ }) => void;
141
+ jump: (options?: {
142
+ success?: (result: { errMsg?: string }) => void;
143
+ fail?: (result: SceneActivityFailResult) => void; // 21041:需先调用 bind
144
+ complete?: () => void;
145
+ }) => void;
146
+ receive: (options?: {
147
+ success?: (result: SceneActivityReceiveResult) => void;
148
+ fail?: (result: SceneActivityFailResult) => void;
149
+ complete?: () => void;
150
+ }) => void;
151
+ on: (cb: (event: SceneActivityEvent) => void) => void; // 监听复访营销活动状态变更
152
+ };
153
+
154
+ type DouyinMiniProgramRuntime = {
155
+ getEnvInfoSync?: () => { microapp?: { envType?: string } };
156
+ getEnvInfoSync?: () => { microapp?: { envType?: string } }
157
+ getSystemInfoSync?: () => { platform: string }
158
+ getLaunchOptionsSync?: () => {
159
+ refererInfo?: {
160
+ extraData?: {
161
+ version?: unknown
162
+ }
163
+ }
164
+ }
165
+ createCloud?: (options: {
166
+ envID: string;
167
+ serviceID?: string;
168
+ }) => DouyinCloudInstance;
169
+ login?: (options: {
170
+ success?: (result: { code?: string; errMsg?: string }) => void;
171
+ fail?: (result: { errMsg?: string }) => void;
172
+ }) => void;
173
+ createEventSource(params: any, timeout?: number): EventSourceTask;
174
+ canIUseVideoFormat?: (options: {
175
+ format: "H.265"; // 视频编码格式,目前仅支持 H.265​
176
+ success?: (result: {
177
+ errMsg: string;
178
+ result: boolean; // 表示是否支持特定编码格式的视频​
179
+ }) => void;
180
+ fail?: (result: { errMsg?: string }) => void;
181
+ complete?: () => void;
182
+ }) => void;
183
+ prerenderVideo?: (options: {
184
+ size?: number; // 预渲染资源大小,单位 byte,取值范围(0,10M]​。默认400*1024
185
+ src: string; // 视频资源地址​
186
+ success?: (result: { errMsg: string }) => void;
187
+ fail?: (result: { errMsg?: string }) => void;
188
+ complete?: () => void;
189
+ }) => void;
190
+ navigateToVideoView?: (options: {
191
+ videoId?: string; // 被分享视频的 id,通过 onShareAppMessage extra.withVideoId=true 获取
192
+ encryptedId?: string; // 加密后的抖音开放平台视频 id,与 videoId 二选一;同传时按 encryptedId 处理
193
+ success?: (result: { errMsg: string }) => void;
194
+ fail?: (result: { errMsg?: string; errCode?: number }) => void;
195
+ complete?: () => void;
196
+ }) => void;
197
+ createSceneActivityContext?: () => SceneActivityContext; // 基础库 3.27.0+;同步返回侧边栏复访营销活动实例
198
+ getSidebarActivity?: (options?: {
199
+ success?: (result: { activityList: string[]; errMsg?: string }) => void;
200
+ fail?: (result: { errMsg?: string; errorCode?: number; errorType?: string }) => void;
201
+ complete?: () => void;
202
+ }) => void; // 基础库 3.6.0+;获取生效中侧边栏活动 id 列表,可配合 tt.navigateToScene 使用
203
+ navigateToScene?: (options: {
204
+ scene: "sidebar"; // 目前仅支持跳转「侧边栏」场景
205
+ activity: string; // 活动 id;不填或填错会兜底样式
206
+ success?: (result: { code: 0 | 1; errMsg?: string }) => void; // code 0=成功跳转,1=用户取消
207
+ fail?: (result: { errMsg?: string; errorCode?: number; errorType?: string }) => void;
208
+ complete?: () => void;
209
+ }) => void; // 基础库 3.6.0+;跳转到指定入口场景,目前仅支持 sidebar
210
+ startFacialRecognitionVerify?: (options: {
211
+ ticket: string; // 由服务端 /api/apps/facial_recognition/v3/get_ticket 获取,30 天有效
212
+ scene: string; // 火山引擎为该小程序分配的业务场景值(microapp_xxx)
213
+ certAppId: "1128" | "2329" | string; // 1128=抖音;2329=抖音极速版(抖音火山版 8663 已下线)
214
+ success?: (result: { verifyResult: string; errMsg: string }) => void; // verifyResult 为中台 auth_ticket
215
+ fail?: (result: { errMsg?: string; errNo?: number }) => void; // 错误码见 SOP:10101/21101~21113/10200/10208/10301/10104 等
216
+ complete?: () => void;
217
+ }) => void; // 基础库 2.52.0+;活体人脸识别,仅抖音/抖音极速版 22.4+ 支持
218
+ showDouyinOpenAuth?: (options: {
219
+ // 抖音开放平台已开通的 scope,例如 { im: 0, "im.media": 2 }
220
+ // value: 0=必选(用户不可取消),1=非必选默认选中,2=非必选默认不选中
221
+ // 每次调用为「全量授权」,不支持增量,需要把所有需要的 scope 一起传入
222
+ scopes: Record<string, 0 | 1 | 2>;
223
+ success?: (result: {
224
+ ticket: string; // 即开放平台 authCode,需服务端换 access_token
225
+ grantPermissions: string[]; // 用户实际授权的 scope 列表
226
+ errMsg: string; // "showDouyinOpenAuth:ok"
227
+ }) => void;
228
+ fail?: (result: {
229
+ errMsg?: string; // "showDouyinOpenAuth:fail ..."
230
+ // 常见错误码:
231
+ // 20000 scopes 为空/内部错误;20001 参数错误;
232
+ // 10200/21105 用户拒绝授权;21104 该 scope 未配置使用场景;
233
+ // 21100 登录失败、21101 取票失败、21102 拉 scope 失败、21103 取 code 失败;
234
+ // 10301 当前宿主不支持;10403 unknown error
235
+ errNo?: number;
236
+ }) => void;
237
+ complete?: () => void;
238
+ }) => void; // 基础库 1.93.0+;仅抖音宿主,调起抖音开放能力授权弹窗
239
+ getCustomButtonBoundingClientRect?: (options?: {
240
+ measurementUnit?: "px" | "rpx"; // 默认 px
241
+ }) => {
242
+ // 左上角 logo/返回按钮位置;不存在或获取时机太早时为 undefined
243
+ leftIcon?: {
244
+ width: number;
245
+ height: number;
246
+ top: number; // 上边界坐标
247
+ right: number; // 右边界坐标
248
+ bottom: number; // 下边界坐标
249
+ left: number; // 左边界坐标
250
+ };
251
+ // 右上角反馈+more+close 胶囊位置;不存在或获取时机太早时为 undefined
252
+ capsule?: {
253
+ width: number;
254
+ height: number;
255
+ top: number;
256
+ right: number;
257
+ bottom: number;
258
+ left: number;
259
+ };
260
+ // 自定义导航栏可绘制区域
261
+ customNavigation?: {
262
+ width: number; // 可绘制区域宽度
263
+ height: number; // 可绘制区域高度
264
+ marginLeft: number; // 距可使用窗口的左边距
265
+ marginRight: number; // 距可使用窗口的右边距
266
+ marginTop: number; // 距可使用窗口的上边距
267
+ centerLineToTop: number; // 中线到顶部的距离
268
+ };
269
+ }; // 同步方法,仅自定义导航栏下返回真实数据,建议在 onReady 后调用
270
+ };
271
+
272
+ declare module "@tarojs/components" {
273
+ // 保留 @tarojs/components 原有导出
274
+ export * from "@tarojs/components/types/index";
275
+ import type { ComponentType } from "react";
276
+ import type {
277
+ CommonEventFunction,
278
+ StandardProps,
279
+ } from "@tarojs/components/types/common";
280
+
281
+ export interface ChannelVideoProps extends StandardProps {
282
+ itemId: string;
283
+ loop?: boolean;
284
+ objectFit?: "contain" | "cover";
285
+ preload?: boolean;
286
+ onPlay?: CommonEventFunction;
287
+ onPause?: CommonEventFunction;
288
+ onWaiting?: CommonEventFunction;
289
+ onStop?: CommonEventFunction;
290
+ onEnd?: CommonEventFunction;
291
+ onProgress?: CommonEventFunction<{
292
+ currentTime: number;
293
+ }>;
294
+ onError?: CommonEventFunction<{
295
+ errorCode?: number;
296
+ errorMsg?: string;
297
+ errorType?: string;
298
+ }>;
299
+ }
300
+
301
+ export const ChannelVideo: ComponentType<ChannelVideoProps>;
302
+ }
303
+
304
+ declare module "*.png";
305
+ declare module "*.gif";
306
+ declare module "*.jpg";
307
+ declare module "*.jpeg";
308
+ declare module "*.svg";
309
+ declare module "*.css";
310
+ declare module "*.less";
311
+ declare module "*.scss";
312
+ declare module "*.sass";
313
+ declare module "*.styl";
314
+
315
+ declare namespace NodeJS {
316
+ interface ProcessEnv {
317
+ /** NODE 内置环境变量, 会影响到最终构建生成产物 */
318
+ NODE_ENV: "development" | "production";
319
+ /** 当前构建的平台 */
320
+ TARO_ENV:
321
+ | "weapp"
322
+ | "swan"
323
+ | "alipay"
324
+ | "h5"
325
+ | "rn"
326
+ | "tt"
327
+ | "quickapp"
328
+ | "qq"
329
+ | "jd";
330
+ /**
331
+ * 当前构建的小程序 appid
332
+ * @description 若不同环境有不同的小程序,可通过在 env 文件中配置环境变量`TARO_APP_ID`来方便快速切换 appid, 而不必手动去修改 dist/project.config.json 文件
333
+ * @see https://taro-docs.jd.com/docs/next/env-mode-config#特殊环境变量-taro_app_id
334
+ */
335
+ TARO_APP_ID: string;
336
+ DOUYIN_CLOUD_ENV_ID?: string;
337
+ DOUYIN_CLOUD_DEV_ENV_ID?: string;
338
+ DOUYIN_CLOUD_SERVICE_ID?: string;
339
+ AUDIT_DOUYIN_CLOUD_ENV_ID?: string;
340
+ AUDIT_DOUYIN_CLOUD_SERVICE_ID?: string;
341
+ }
342
+ }
@@ -0,0 +1,4 @@
1
+ export { createMicroappClient } from './default-client.js';
2
+ export { type CreateMicroappClientOptions } from './client.js';
3
+ export { clearDouyinLoginAuth } from './douyin-login-request.js';
4
+ export { syncIframeAuth } from './default-iframe-auth.js';
@@ -0,0 +1,4 @@
1
+ export { createMicroappClient } from './default-client.js';
2
+ export { clearDouyinLoginAuth } from './douyin-login-request.js';
3
+ export { syncIframeAuth } from './default-iframe-auth.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const createUrl: (url: string) => string;
2
+ export declare const appendGetQuery: (url: string, data?: Record<string, any>, method?: string) => string;
3
+ export declare const createContainerPath: (url: string) => string;
@@ -0,0 +1,53 @@
1
+ export const createUrl = (url) => {
2
+ if (url.startsWith('http://') || url.startsWith('https://')) {
3
+ return url;
4
+ }
5
+ return `${PROJECT_DOMAIN}${url}`;
6
+ };
7
+ const encodeExistingQuery = (url) => {
8
+ const qIndex = url.indexOf('?');
9
+ if (qIndex === -1)
10
+ return url;
11
+ const path = url.slice(0, qIndex);
12
+ const query = url.slice(qIndex + 1);
13
+ const encodedQuery = query
14
+ .split('&')
15
+ .filter(Boolean)
16
+ .map(part => {
17
+ const eqIndex = part.indexOf('=');
18
+ if (eqIndex === -1)
19
+ return encodeURIComponent(decodeURIComponent(part));
20
+ const k = part.slice(0, eqIndex);
21
+ const v = part.slice(eqIndex + 1);
22
+ return `${encodeURIComponent(decodeURIComponent(k))}=${encodeURIComponent(decodeURIComponent(v))}`;
23
+ })
24
+ .join('&');
25
+ return `${path}?${encodedQuery}`;
26
+ };
27
+ export const appendGetQuery = (url, data, method) => {
28
+ if ((method ?? 'GET').toUpperCase() !== 'GET' || !data) {
29
+ const result = encodeExistingQuery(url);
30
+ // console.log('[appendGetQuery] path:', result)
31
+ return result;
32
+ }
33
+ const queryString = Object.entries(data)
34
+ .filter(([, value]) => value !== undefined && value !== null)
35
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
36
+ .join('&');
37
+ const base = encodeExistingQuery(url);
38
+ if (!queryString) {
39
+ // console.log('[appendGetQuery] path:', base)
40
+ return base;
41
+ }
42
+ const result = `${base}${base.includes('?') ? '&' : '?'}${queryString}`;
43
+ // console.log('[appendGetQuery] path:', result)
44
+ return result;
45
+ };
46
+ export const createContainerPath = (url) => {
47
+ if (!url.startsWith('http://') && !url.startsWith('https://')) {
48
+ return url;
49
+ }
50
+ const parsedUrl = new URL(url);
51
+ return `${parsedUrl.pathname}${parsedUrl.search}`;
52
+ };
53
+ //# sourceMappingURL=network-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-url.js","sourceRoot":"","sources":["../../src/runtime/network-url.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAU,EAAE;IAC/C,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,GAAG,cAAc,GAAG,GAAG,EAAE,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAU,EAAE;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,CAAA;IAE7B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACnC,MAAM,YAAY,GAAG,KAAK;SACvB,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,OAAO,KAAK,CAAC,CAAC;YAAE,OAAO,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAA;QACvE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAA;QACjC,OAAO,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACpG,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,OAAO,GAAG,IAAI,IAAI,YAAY,EAAE,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAW,EACX,IAA0B,EAC1B,MAAe,EACP,EAAE;IACV,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACvC,gDAAgD;QAChD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;SACxF,IAAI,CAAC,GAAG,CAAC,CAAA;IAEZ,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,8CAA8C;QAC9C,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,WAAW,EAAE,CAAA;IACvE,gDAAgD;IAChD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAU,EAAE;IACzD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IAC9B,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,CAAA;AACnD,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ /// <reference path="../runtime/globals.d.ts" />
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { type ViewProps } from "@tarojs/components";
3
+ declare function Accordion({ className, type, value: valueProp, defaultValue, onValueChange, children, disabled, multiple, ...props }: ViewProps & {
4
+ type?: "single" | "multiple";
5
+ value?: string | string[];
6
+ defaultValue?: string | string[];
7
+ disabled?: boolean;
8
+ multiple?: boolean;
9
+ onValueChange?: (value: string | string[]) => void;
10
+ }): React.JSX.Element;
11
+ declare function AccordionItem({ className, value, children, disabled, ...props }: ViewProps & {
12
+ value: string;
13
+ disabled?: boolean;
14
+ }): React.JSX.Element;
15
+ declare function AccordionTrigger({ className, children, ...props }: ViewProps): React.JSX.Element;
16
+ declare function AccordionContent({ className, children, ...props }: ViewProps): React.JSX.Element | null;
17
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { View } from "@tarojs/components";
4
+ import { cn } from "../lib/utils.js";
5
+ import { ChevronDown, ChevronUp } from "@open-dy/lucide-taro";
6
+ const AccordionContext = React.createContext({ value: [], toggle: () => { }, disabled: false });
7
+ function Accordion({ className, type = "single", value: valueProp, defaultValue, onValueChange, children, disabled = false, multiple = false, ...props }) {
8
+ const [internal, setInternal] = React.useState(defaultValue
9
+ ? Array.isArray(defaultValue)
10
+ ? defaultValue
11
+ : [defaultValue]
12
+ : []);
13
+ const controlled = valueProp !== undefined;
14
+ const current = React.useMemo(() => controlled
15
+ ? Array.isArray(valueProp)
16
+ ? valueProp
17
+ : [valueProp]
18
+ : internal, [controlled, valueProp, internal]);
19
+ const isMultiple = multiple || type === "multiple";
20
+ const toggle = React.useCallback((val) => {
21
+ if (disabled)
22
+ return;
23
+ let next;
24
+ if (isMultiple) {
25
+ next = current.includes(val)
26
+ ? current.filter((v) => v !== val)
27
+ : [...current, val];
28
+ }
29
+ else {
30
+ next = current.includes(val) ? [] : [val];
31
+ }
32
+ if (!controlled)
33
+ setInternal(next);
34
+ onValueChange?.(isMultiple ? next : next[0] ?? "");
35
+ }, [current, isMultiple, controlled, onValueChange, disabled]);
36
+ return (_jsx(AccordionContext.Provider, { value: { value: current, toggle, disabled }, children: _jsx(View, { "data-slot": "accordion", className: cn("flex w-full flex-col", className), ...props, children: children }) }));
37
+ }
38
+ const AccordionItemContext = React.createContext({ value: "", disabled: false });
39
+ function AccordionItem({ className, value, children, disabled = false, ...props }) {
40
+ const itemContext = React.useMemo(() => ({ value, disabled }), [value, disabled]);
41
+ return (_jsx(AccordionItemContext.Provider, { value: itemContext, children: _jsx(View, { "data-slot": "accordion-item", className: cn("not-last:border-b", className), ...props, children: children }) }));
42
+ }
43
+ function AccordionTrigger({ className, children, ...props }) {
44
+ const { value, toggle, disabled: accordionDisabled } = React.useContext(AccordionContext);
45
+ const { value: itemValue, disabled: itemDisabled } = React.useContext(AccordionItemContext);
46
+ const isOpen = value.includes(itemValue);
47
+ const isDisabled = accordionDisabled || itemDisabled;
48
+ return (_jsx(View, { className: "flex", children: _jsxs(View, { "data-slot": "accordion-trigger", "aria-expanded": isOpen, "aria-disabled": isDisabled, className: cn("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50", className), onClick: () => { if (!isDisabled)
49
+ toggle(itemValue); }, ...props, children: [children, isOpen ? (_jsx(ChevronUp, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none ml-auto size-4 shrink-0 text-muted-foreground" })) : (_jsx(ChevronDown, { "data-slot": "accordion-trigger-icon", className: "pointer-events-none ml-auto size-4 shrink-0 text-muted-foreground" }))] }) }));
50
+ }
51
+ function AccordionContent({ className, children, ...props }) {
52
+ const { value } = React.useContext(AccordionContext);
53
+ const { value: itemValue } = React.useContext(AccordionItemContext);
54
+ const isOpen = value.includes(itemValue);
55
+ if (!isOpen)
56
+ return null;
57
+ return (_jsx(View, { "data-slot": "accordion-content", className: "overflow-hidden text-sm", ...props, children: _jsx(View, { className: cn("pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), children: children }) }));
58
+ }
59
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
60
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/ui/accordion.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import * as React from "react";
2
+ import { type ViewProps } from "@tarojs/components";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ import { buttonVariants } from "./button.js";
5
+ type AlertDialogTriggerRenderProps = Omit<ViewProps, "children"> & {
6
+ "data-slot": "alert-dialog-trigger";
7
+ };
8
+ type AlertDialogTriggerProps = Omit<ViewProps, "children"> & {
9
+ children?: React.ReactNode;
10
+ render?: React.ReactElement | ((props: AlertDialogTriggerRenderProps) => React.ReactNode);
11
+ };
12
+ type AlertDialogActionProps = ViewProps & VariantProps<typeof buttonVariants>;
13
+ declare function AlertDialog({ open: openProp, defaultOpen, onOpenChange, children, }: {
14
+ open?: boolean;
15
+ defaultOpen?: boolean;
16
+ onOpenChange?: (open: boolean) => void;
17
+ children?: React.ReactNode;
18
+ }): React.JSX.Element;
19
+ declare function AlertDialogTrigger({ children, render, onClick, ...props }: AlertDialogTriggerProps): React.JSX.Element;
20
+ declare function AlertDialogPortal({ children }: {
21
+ children?: React.ReactNode;
22
+ }): React.JSX.Element;
23
+ declare function AlertDialogOverlay({ className, ...props }: ViewProps): React.JSX.Element;
24
+ declare function AlertDialogContent({ className, children, size, ...props }: ViewProps & {
25
+ size?: "default" | "sm";
26
+ }): React.JSX.Element | null;
27
+ declare function AlertDialogHeader({ className, ...props }: ViewProps): React.JSX.Element;
28
+ declare function AlertDialogFooter({ className, ...props }: ViewProps): React.JSX.Element;
29
+ declare function AlertDialogTitle({ className, ...props }: ViewProps): React.JSX.Element;
30
+ declare function AlertDialogDescription({ className, ...props }: ViewProps): React.JSX.Element;
31
+ declare function AlertDialogAction({ className, variant, size, onClick, ...props }: AlertDialogActionProps): React.JSX.Element;
32
+ declare function AlertDialogCancel({ className, variant, size, onClick, ...props }: AlertDialogActionProps): React.JSX.Element;
33
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { View } from "@tarojs/components";
4
+ import { cn } from "../lib/utils.js";
5
+ import { Button, buttonVariants } from "./button.js";
6
+ const AlertDialogContext = React.createContext({ open: false, onOpenChange: () => { } });
7
+ const AlertDialogContentContext = React.createContext({
8
+ size: "default",
9
+ hasMedia: false,
10
+ });
11
+ function AlertDialog({ open: openProp, defaultOpen, onOpenChange, children, }) {
12
+ const [internal, setInternal] = React.useState(defaultOpen ?? false);
13
+ const controlled = openProp !== undefined;
14
+ const open = controlled ? openProp : internal;
15
+ return (_jsx(AlertDialogContext.Provider, { value: {
16
+ open,
17
+ onOpenChange: (v) => {
18
+ if (!controlled)
19
+ setInternal(v);
20
+ onOpenChange?.(v);
21
+ },
22
+ }, children: children }));
23
+ }
24
+ function AlertDialogTrigger({ children, render, onClick, ...props }) {
25
+ const { onOpenChange } = React.useContext(AlertDialogContext);
26
+ const handleClick = (event) => {
27
+ event.stopPropagation();
28
+ onClick?.(event);
29
+ onOpenChange(true);
30
+ };
31
+ const triggerProps = {
32
+ "data-slot": "alert-dialog-trigger",
33
+ onClick: handleClick,
34
+ ...props,
35
+ };
36
+ if (render) {
37
+ if (typeof render === "function") {
38
+ return _jsx(_Fragment, { children: render(triggerProps) });
39
+ }
40
+ if (React.isValidElement(render)) {
41
+ const element = render;
42
+ return React.cloneElement(element, {
43
+ ...triggerProps,
44
+ onClick: (event) => {
45
+ element.props.onClick?.(event);
46
+ handleClick(event);
47
+ },
48
+ });
49
+ }
50
+ }
51
+ return (_jsx(View, { ...triggerProps, children: children }));
52
+ }
53
+ function AlertDialogPortal({ children }) {
54
+ return _jsx(_Fragment, { children: children });
55
+ }
56
+ function AlertDialogOverlay({ className, ...props }) {
57
+ return (_jsx(View, { "data-slot": "alert-dialog-overlay", className: cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs", className), ...props }));
58
+ }
59
+ function AlertDialogContent({ className, children, size = "default", ...props }) {
60
+ const ctx = React.useContext(AlertDialogContext);
61
+ const hasMedia = React.useMemo(() => React.Children.toArray(children).some((child) => React.isValidElement(child) &&
62
+ child.props["data-slot"] === "alert-dialog-media"), [children]);
63
+ if (!ctx.open)
64
+ return null;
65
+ return (_jsxs(View, { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogContentContext.Provider, { value: { size, hasMedia }, children: _jsx(View, { "data-slot": "alert-dialog-content", className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none", size === "sm" ? "max-w-xs" : "max-w-xs sm:max-w-sm", className), ...props, children: children }) })] }));
66
+ }
67
+ function AlertDialogHeader({ className, ...props }) {
68
+ const { size, hasMedia } = React.useContext(AlertDialogContentContext);
69
+ return (_jsx(View, { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center", hasMedia && "grid-rows-[auto_auto_1fr] gap-x-4", size === "default" && "sm:place-items-start sm:text-left", size === "default" && hasMedia && "sm:grid-rows-[auto_1fr]", className), ...props }));
70
+ }
71
+ function AlertDialogFooter({ className, ...props }) {
72
+ const { size } = React.useContext(AlertDialogContentContext);
73
+ return (_jsx(View, { "data-slot": "alert-dialog-footer", className: cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4", size === "sm" && "grid grid-cols-2", size !== "sm" && "sm:flex-row sm:justify-end", className), ...props }));
74
+ }
75
+ function AlertDialogTitle({ className, ...props }) {
76
+ return (_jsx(View, { "data-slot": "alert-dialog-title", className: cn("text-lg font-semibold", className), ...props }));
77
+ }
78
+ function AlertDialogDescription({ className, ...props }) {
79
+ return (_jsx(View, { "data-slot": "alert-dialog-description", className: cn("text-sm text-muted-foreground", className), ...props }));
80
+ }
81
+ function AlertDialogAction({ className, variant = "default", size = "default", onClick, ...props }) {
82
+ const { onOpenChange } = React.useContext(AlertDialogContext);
83
+ return (_jsx(Button, { "data-slot": "alert-dialog-action", className: cn(buttonVariants({ variant, size }), "w-full sm:w-auto", className), onClick: (event) => {
84
+ onOpenChange(false);
85
+ onClick?.(event);
86
+ }, ...props }));
87
+ }
88
+ function AlertDialogCancel({ className, variant = "outline", size = "default", onClick, ...props }) {
89
+ const { onOpenChange } = React.useContext(AlertDialogContext);
90
+ return (_jsx(View, { "data-slot": "alert-dialog-cancel", className: cn(buttonVariants({ variant, size }), "mt-2 w-full sm:mt-0 sm:w-auto", className), onClick: (event) => {
91
+ onOpenChange(false);
92
+ onClick?.(event);
93
+ }, ...props }));
94
+ }
95
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
96
+ //# sourceMappingURL=alert-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../../src/ui/alert-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAkB,MAAM,oBAAoB,CAAA;AAGzD,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEjD,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAG3C,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAA;AAE3C,MAAM,yBAAyB,GAAG,KAAK,CAAC,aAAa,CAGlD;IACD,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAA;AAmBF,SAAS,WAAW,CAAC,EACnB,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,QAAQ,GAMT;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,KAAK,CAAC,CAAA;IACpE,MAAM,UAAU,GAAG,QAAQ,KAAK,SAAS,CAAA;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;IAE7C,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAC1B,KAAK,EAAE;YACL,IAAI;YACJ,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;gBAClB,IAAI,CAAC,UAAU;oBAAE,WAAW,CAAC,CAAC,CAAC,CAAA;gBAC/B,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC;SACF,YAEA,QAAQ,GACmB,CAC/B,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,QAAQ,EACR,MAAM,EACN,OAAO,EACP,GAAG,KAAK,EACgB;IACxB,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,CAAC,KAAmC,EAAE,EAAE;QAC1D,KAAK,CAAC,eAAe,EAAE,CAAA;QACvB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAChB,YAAY,CAAC,IAAI,CAAC,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,YAAY,GAAkC;QAClD,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,WAAW;QACpB,GAAG,KAAK;KACT,CAAA;IAED,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,4BAAG,MAAM,CAAC,YAAY,CAAC,GAAI,CAAA;QACpC,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAEd,CAAA;YAEF,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE;gBACjC,GAAG,YAAY;gBACf,OAAO,EAAE,CAAC,KAAmC,EAAE,EAAE;oBAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;oBAC9B,WAAW,CAAC,KAAK,CAAC,CAAA;gBACpB,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CACL,KAAC,IAAI,OAAK,YAAY,YACnB,QAAQ,GACJ,CACR,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAkC;IACrE,OAAO,4BAAG,QAAQ,GAAI,CAAA;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAa;IAC5D,OAAO,CACL,KAAC,IAAI,iBACO,sBAAsB,EAChC,SAAS,EAAE,EAAE,CACX,+FAA+F,EAC/F,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,IAAI,GAAG,SAAS,EAChB,GAAG,KAAK,EACgC;IACxC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAEhD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC5B,GAAG,EAAE,CACH,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;QAC1B,KAAK,CAAC,KAAkC,CAAC,WAAW,CAAC,KAAK,oBAAoB,CAClF,EACH,CAAC,QAAQ,CAAC,CACX,CAAA;IAED,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAE1B,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAC,qDAAqD,aACnE,KAAC,kBAAkB,KAAG,EACtB,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAC3D,KAAC,IAAI,iBACO,sBAAsB,EAChC,SAAS,EAAE,EAAE,CACX,kNAAkN,EAClN,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,EACnD,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACJ,GAC4B,IAChC,CACR,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAa;IAC3D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IACtE,OAAO,CACL,KAAC,IAAI,iBACO,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,QAAQ,IAAI,mCAAmC,EAC/C,IAAI,KAAK,SAAS,IAAI,mCAAmC,EACzD,IAAI,KAAK,SAAS,IAAI,QAAQ,IAAI,yBAAyB,EAC3D,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAa;IAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAA;IAC5D,OAAO,CACL,KAAC,IAAI,iBACO,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CACX,+EAA+E,EAC/E,IAAI,KAAK,IAAI,IAAI,kBAAkB,EACnC,IAAI,KAAK,IAAI,IAAI,4BAA4B,EAC7C,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAa;IAC1D,OAAO,CACL,KAAC,IAAI,iBACO,oBAAoB,EAC9B,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,KAC7C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAa;IAChE,OAAO,CACL,KAAC,IAAI,iBACO,0BAA0B,EACpC,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,OAAO,EACP,GAAG,KAAK,EACe;IACvB,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC7D,OAAO,CACL,KAAC,MAAM,iBACK,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,kBAAkB,EAAE,SAAS,CAAC,EAC/E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,OAAO,EACP,GAAG,KAAK,EACe;IACvB,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC7D,OAAO,CACL,KAAC,IAAI,iBACO,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CACX,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACjC,+BAA+B,EAC/B,SAAS,CACV,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,CAAA"}