This commit is contained in:
sion
2026-04-23 00:44:39 +08:00
parent 685202dd55
commit 8047cfaa76
209 changed files with 2660 additions and 5560 deletions

View File

@@ -1,92 +0,0 @@
{
"cmake" :
{
"generator" :
{
"multiConfig" : false,
"name" : "Ninja"
},
"paths" :
{
"cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe",
"cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe",
"ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe",
"root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
},
"version" :
{
"isDirty" : true,
"major" : 3,
"minor" : 22,
"patch" : 1,
"string" : "3.22.1-g37088a8-dirty",
"suffix" : "g37088a8"
}
},
"objects" :
[
{
"jsonFile" : "codemodel-v2-38fc593c901f4394c494.json",
"kind" : "codemodel",
"version" :
{
"major" : 2,
"minor" : 3
}
},
{
"jsonFile" : "cache-v2-73a14c1ca63f3ef94f50.json",
"kind" : "cache",
"version" :
{
"major" : 2,
"minor" : 0
}
},
{
"jsonFile" : "cmakeFiles-v1-b43cc898f77541085de5.json",
"kind" : "cmakeFiles",
"version" :
{
"major" : 1,
"minor" : 0
}
}
],
"reply" :
{
"client-agp" :
{
"cache-v2" :
{
"jsonFile" : "cache-v2-73a14c1ca63f3ef94f50.json",
"kind" : "cache",
"version" :
{
"major" : 2,
"minor" : 0
}
},
"cmakeFiles-v1" :
{
"jsonFile" : "cmakeFiles-v1-b43cc898f77541085de5.json",
"kind" : "cmakeFiles",
"version" :
{
"major" : 1,
"minor" : 0
}
},
"codemodel-v2" :
{
"jsonFile" : "codemodel-v2-38fc593c901f4394c494.json",
"kind" : "codemodel",
"version" :
{
"major" : 2,
"minor" : 3
}
}
}
}
}

View File

@@ -2,27 +2,27 @@ C/C++ Structured LogL
J
HD:\flutter\packages\flutter_tools\gradle\src\main\scripts\CMakeLists.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ”ºæàÚ3§ €†»õÏ3
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¿É œÛ3§ €†»õÏ3
}
{D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\additional_project_files.txt  •ºæàÚ3  …ÞõÞÚ3|
{D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\additional_project_files.txt  ÀÉ œÛ3  ªÜ¨‹Û3|
z
xD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\android_gradle_build.json  •ºæàÚ3Û šÞõÞÚ3<EFBFBD>
xD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\android_gradle_build.json  ÀÉ œÛ3Û ¼Ü¨‹Û3<EFBFBD>

}D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\android_gradle_build_mini.json  •ºæàÚ3ò ¸ÞõÞÚ3n
}D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\android_gradle_build_mini.json  ÀÉ œÛ3ò Ìܨ‹Û3n
l
jD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\build.ninja  •ºæàÚ3¯¬ ‡ÝõÞÚ3r
jD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\build.ninja  ÀÉ œÛ3¯¬ œÛ¨‹Û3r
p
nD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\build.ninja.txt  •ºæàÚ3w
nD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\build.ninja.txt  ÀÉ œÛ3w
u
sD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\build_file_index.txt  •ºæàÚ3
sD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\build_file_index.txt  ÀÉ œÛ3
H ÌܨÛ3x
v
v
tD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\compile_commands.json  ÁÉ œÛ3 |
z
z
xD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\compile_commands.json.bin  ÁÉ œÛ3
ƒ


~D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\metadata_generation_command.txt  ÁÉ œÛ3 ¢ ÌܨÛ3u
s
s
qD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\arm64-v8a\prefab_config.json  ÁÉ œÛ3
 ( ¿ÞõÞÚ3z
 ( Ìܨ‹Û3z

View File

@@ -1,92 +0,0 @@
{
"cmake" :
{
"generator" :
{
"multiConfig" : false,
"name" : "Ninja"
},
"paths" :
{
"cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe",
"cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe",
"ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe",
"root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
},
"version" :
{
"isDirty" : true,
"major" : 3,
"minor" : 22,
"patch" : 1,
"string" : "3.22.1-g37088a8-dirty",
"suffix" : "g37088a8"
}
},
"objects" :
[
{
"jsonFile" : "codemodel-v2-4ff30a6aeb3659ecdb49.json",
"kind" : "codemodel",
"version" :
{
"major" : 2,
"minor" : 3
}
},
{
"jsonFile" : "cache-v2-b19e54b3bce35aa998e2.json",
"kind" : "cache",
"version" :
{
"major" : 2,
"minor" : 0
}
},
{
"jsonFile" : "cmakeFiles-v1-4617961e6da48ad78ceb.json",
"kind" : "cmakeFiles",
"version" :
{
"major" : 1,
"minor" : 0
}
}
],
"reply" :
{
"client-agp" :
{
"cache-v2" :
{
"jsonFile" : "cache-v2-b19e54b3bce35aa998e2.json",
"kind" : "cache",
"version" :
{
"major" : 2,
"minor" : 0
}
},
"cmakeFiles-v1" :
{
"jsonFile" : "cmakeFiles-v1-4617961e6da48ad78ceb.json",
"kind" : "cmakeFiles",
"version" :
{
"major" : 1,
"minor" : 0
}
},
"codemodel-v2" :
{
"jsonFile" : "codemodel-v2-4ff30a6aeb3659ecdb49.json",
"kind" : "codemodel",
"version" :
{
"major" : 2,
"minor" : 3
}
}
}
}
}

View File

@@ -2,27 +2,27 @@ C/C++ Structured LogL
J
HD:\flutter\packages\flutter_tools\gradle\src\main\scripts\CMakeLists.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÚºæàÚ3§ €†»õÏ3<C38F>
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ´Ê œÛ3§ €†»õÏ3<C38F>

}D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\additional_project_files.txt  ÚºæàÚ3  ç‚öÞÚ3~
}D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\additional_project_files.txt  µÊ œÛ3  áþ¨‹Û3~
|
zD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\android_gradle_build.json  ÚºæàÚ3ß ì‚öÞÚ3„
zD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\android_gradle_build.json  µÊ œÛ3ß äþ¨‹Û3„
<EFBFBD>
D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\android_gradle_build_mini.json  ÚºæàÚ3ö ô‚öÞÚ3p
D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\android_gradle_build_mini.json  µÊ œÛ3ö éþ¨‹Û3p
n
lD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\build.ninja  ÚºæàÚ3¹¬ Ý€öÞÚ3t
lD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\build.ninja  µÊ œÛ3¹¬ ‚þ¨‹Û3t
r
pD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\build.ninja.txt  ÚºæàÚ3y
pD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\build.ninja.txt  µÊ œÛ3y
w
uD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\build_file_index.txt  ÚºæàÚ3
uD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\build_file_index.txt  µÊ œÛ3
H íþ¨Û3z
x
x
vD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\compile_commands.json  µÊ œÛ3 ~
|
|
zD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\compile_commands.json.bin  ¶Ê œÛ3

ƒ
ƒ
D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\metadata_generation_command.txt  ¶Ê œÛ3 ¬ êþ¨Û3w
u
u
sD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\armeabi-v7a\prefab_config.json  ¶Ê œÛ3
 ( ø‚öÞÚ3|
 ( ëþ¨‹Û3|

View File

@@ -1,92 +0,0 @@
{
"cmake" :
{
"generator" :
{
"multiConfig" : false,
"name" : "Ninja"
},
"paths" :
{
"cmake" : "D:/Android/Sdk/cmake/3.22.1/bin/cmake.exe",
"cpack" : "D:/Android/Sdk/cmake/3.22.1/bin/cpack.exe",
"ctest" : "D:/Android/Sdk/cmake/3.22.1/bin/ctest.exe",
"root" : "D:/Android/Sdk/cmake/3.22.1/share/cmake-3.22"
},
"version" :
{
"isDirty" : true,
"major" : 3,
"minor" : 22,
"patch" : 1,
"string" : "3.22.1-g37088a8-dirty",
"suffix" : "g37088a8"
}
},
"objects" :
[
{
"jsonFile" : "codemodel-v2-b72a30b21426bc55a175.json",
"kind" : "codemodel",
"version" :
{
"major" : 2,
"minor" : 3
}
},
{
"jsonFile" : "cache-v2-5408d0a8fad6d70b672e.json",
"kind" : "cache",
"version" :
{
"major" : 2,
"minor" : 0
}
},
{
"jsonFile" : "cmakeFiles-v1-0e3daad7a23f9a1bab87.json",
"kind" : "cmakeFiles",
"version" :
{
"major" : 1,
"minor" : 0
}
}
],
"reply" :
{
"client-agp" :
{
"cache-v2" :
{
"jsonFile" : "cache-v2-5408d0a8fad6d70b672e.json",
"kind" : "cache",
"version" :
{
"major" : 2,
"minor" : 0
}
},
"cmakeFiles-v1" :
{
"jsonFile" : "cmakeFiles-v1-0e3daad7a23f9a1bab87.json",
"kind" : "cmakeFiles",
"version" :
{
"major" : 1,
"minor" : 0
}
},
"codemodel-v2" :
{
"jsonFile" : "codemodel-v2-b72a30b21426bc55a175.json",
"kind" : "codemodel",
"version" :
{
"major" : 2,
"minor" : 3
}
}
}
}
}

View File

@@ -2,27 +2,27 @@ C/C++ Structured LogL
J
HD:\flutter\packages\flutter_tools\gradle\src\main\scripts\CMakeLists.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  „»æàÚ3§ €†»õÏ3|
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  žË œÛ3§ €†»õÏ3|
z
xD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\additional_project_files.txt  „»æàÚ3  Â¥öÞÚ3y
xD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\additional_project_files.txt  žË œÛ3  Ê›©‹Û3y
w
uD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\android_gradle_build.json  „»æàÚ3Õ Å¥öÞÚ3~
uD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\android_gradle_build.json  žË œÛ3Õ Ê›©‹Û3~
|
zD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\android_gradle_build_mini.json  „»æàÚ3ì Ê¥öÞÚ3k
zD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\android_gradle_build_mini.json  žË œÛ3ì Ê›©‹Û3k
i
gD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\build.ninja  „»æàÚ3 ¬ Ù¤öÞÚ3o
gD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\build.ninja  žË œÛ3 ¬ éš©‹Û3o
m
kD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\build.ninja.txt  „»æàÚ3t
kD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\build.ninja.txt  žË œÛ3t
r
pD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\build_file_index.txt  „»æàÚ3
pD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\build_file_index.txt  žË œÛ3
H ß©Û3u
s
s
qD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\compile_commands.json  žË œÛ3 y
w
w
uD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\compile_commands.json.bin  žË œÛ3

}
}
{D:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\metadata_generation_command.txt  žË œÛ3  Ù©Û3r
p
p
nD:\workspace\project\com-rattan-spccloud\flutter_monisuo\build\.cxx\release\f33272t1\x86_64\prefab_config.json  ŸË œÛ3
 ( Í¥öÞÚ3w
 ( Ü›©‹Û3w

View File

@@ -1 +1 @@
{"version":2,"files":[{"path":"D:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\.dart_tool\\package_config.json","hash":"8492f1af9d61d9cb356385ac5e730b1a"},{"path":"D:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\9a5d09bec60a9bd952a3f584c1b9bd3b\\dart_build_result.json","hash":"abad6946806a19160b529028b16df544"},{"path":"D:\\flutter\\packages\\flutter_tools\\lib\\src\\build_system\\targets\\native_assets.dart","hash":"f78c405bcece3968277b212042da9ed6"}]}
{"version":2,"files":[{"path":"D:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\.dart_tool\\package_config.json","hash":"8492f1af9d61d9cb356385ac5e730b1a"},{"path":"D:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\9a5d09bec60a9bd952a3f584c1b9bd3b\\dart_build_result.json","hash":"340979e72a4932089cf59f962bed749f"},{"path":"D:\\flutter\\packages\\flutter_tools\\lib\\src\\build_system\\targets\\native_assets.dart","hash":"f78c405bcece3968277b212042da9ed6"}]}

View File

@@ -1 +1 @@
{"build_start":"2026-04-20T03:04:58.279232","build_end":"2026-04-20T03:04:58.279232","dependencies":[],"code_assets":[],"data_assets":[]}
{"build_start":"2026-04-22T00:15:31.805657","build_end":"2026-04-22T00:15:31.805657","dependencies":[],"code_assets":[],"data_assets":[]}

View File

@@ -1 +0,0 @@
{"version":2,"files":[{"path":"D:\\flutter\\bin\\cache\\dart-sdk\\version","hash":"800169ad7335b889bf428af171476466"},{"path":"D:\\build_temp\\flutter_monisuo\\pubspec.yaml","hash":"e39ca35666e4265834ad07e86c910235"},{"path":"D:\\build_temp\\flutter_monisuo\\.dart_tool\\package_config.json","hash":"8492f1af9d61d9cb356385ac5e730b1a"},{"path":"d:\\build_temp\\flutter_monisuo\\.dart_tool\\package_config.json","hash":"8492f1af9d61d9cb356385ac5e730b1a"},{"path":"D:\\flutter\\packages\\flutter_tools\\lib\\src\\build_system\\targets\\native_assets.dart","hash":"f78c405bcece3968277b212042da9ed6"},{"path":"D:\\build_temp\\flutter_monisuo\\build\\a710e02815af03bf23068e9563234b44\\dart_build_result.json","hash":"aa09beae3d09be799be88eec9819065d"}]}

View File

@@ -1 +0,0 @@
{"inputs":[],"outputs":[]}

View File

@@ -1 +0,0 @@
D:\\build_temp\\flutter_monisuo\\build\\a710e02815af03bf23068e9563234b44\\dart_build_result.json:

View File

@@ -1 +0,0 @@
{"inputs":["D:\\flutter\\packages\\flutter_tools\\lib\\src\\build_system\\targets\\native_assets.dart","D:\\build_temp\\flutter_monisuo\\.dart_tool\\package_config.json"],"outputs":["D:\\build_temp\\flutter_monisuo\\build\\a710e02815af03bf23068e9563234b44\\dart_build_result.json","D:\\build_temp\\flutter_monisuo\\build\\a710e02815af03bf23068e9563234b44\\dart_build_result.json"]}

View File

@@ -1 +0,0 @@
{"build_start":"2026-04-20T02:47:22.829545","build_end":"2026-04-20T02:47:22.829545","dependencies":[],"code_assets":[],"data_assets":[]}

View File

@@ -1 +0,0 @@
{"inputs":[],"outputs":[]}

View File

@@ -1 +0,0 @@
["D:\\build_temp\\flutter_monisuo\\build\\a710e02815af03bf23068e9563234b44\\dart_build_result.json"]

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
#Tue Apr 21 02:14:48 CST 2026
#Wed Apr 22 12:54:14 CST 2026
base.0=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\dex\\release\\minifyReleaseWithR8\\classes.dex
renamed.0=classes.dex
path.0=classes.dex

View File

@@ -1,4 +1,4 @@
#Tue Apr 21 01:09:12 CST 2026
#Wed Apr 22 03:01:01 CST 2026
com.example.flutter_monisuo.app-appcompat-1.1.0-26\:/drawable-xhdpi-v4/abc_text_select_handle_left_mtrl_dark.png=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\merged_res\\release\\mergeReleaseResources\\drawable-xhdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat
com.example.flutter_monisuo.app-appcompat-1.1.0-26\:/color/abc_primary_text_material_light.xml=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\merged_res\\release\\mergeReleaseResources\\color_abc_primary_text_material_light.xml.flat
com.example.flutter_monisuo.app-appcompat-1.1.0-26\:/drawable-hdpi-v4/abc_text_select_handle_left_mtrl_dark.png=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\merged_res\\release\\mergeReleaseResources\\drawable-hdpi-v4_abc_text_select_handle_left_mtrl_dark.png.flat

View File

@@ -1,4 +1,4 @@
#Tue Apr 21 01:09:20 CST 2026
#Wed Apr 22 03:01:14 CST 2026
com.example.flutter_monisuo.app-main-0\:/mipmap-xhdpi/ic_launcher.png=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\packaged_res\\release\\packageReleaseResources\\mipmap-xhdpi-v4\\ic_launcher.png
com.example.flutter_monisuo.app-main-0\:/mipmap-xxhdpi/ic_launcher.png=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\packaged_res\\release\\packageReleaseResources\\mipmap-xxhdpi-v4\\ic_launcher.png
com.example.flutter_monisuo.app-main-0\:/drawable-v21/launch_background.xml=D\:\\workspace\\project\\com-rattan-spccloud\\flutter_monisuo\\build\\app\\intermediates\\packaged_res\\release\\packageReleaseResources\\drawable-v21\\launch_background.xml

View File

@@ -1 +1 @@
{"options":{"hasObfuscationDictionary":false,"hasClassObfuscationDictionary":false,"hasPackageObfuscationDictionary":false,"keepAttributes":{"isAnnotationDefaultKept":true,"isEnclosingMethodKept":true,"isExceptionsKept":false,"isInnerClassesKept":true,"isLocalVariableTableKept":false,"isLocalVariableTypeTableKept":false,"isMethodParametersKept":false,"isPermittedSubclassesKept":false,"isRuntimeInvisibleAnnotationsKept":true,"isRuntimeInvisibleParameterAnnotationsKept":true,"isRuntimeInvisibleTypeAnnotationsKept":true,"isRuntimeVisibleAnnotationsKept":true,"isRuntimeVisibleParameterAnnotationsKept":true,"isRuntimeVisibleTypeAnnotationsKept":true,"isSignatureKept":true,"isSourceDebugExtensionKept":false,"isSourceDirKept":false,"isSourceFileKept":false,"isStackMapTableKept":false},"isAccessModificationEnabled":true,"isFlattenPackageHierarchyEnabled":false,"isObfuscationEnabled":true,"isOptimizationsEnabled":true,"isProGuardCompatibilityModeEnabled":false,"isProtoLiteOptimizationEnabled":false,"isRepackageClassesEnabled":false,"isShrinkingEnabled":true,"apiModeling":{},"minApiLevel":"24","isDebugModeEnabled":false},"baselineProfileRewriting":{},"compilation":{"buildTimeNs":26972784900,"numberOfThreads":8},"dexFiles":[{"checksum":"8e655b4e8f95ac7bcca24e9527390c40a05343f0ea12cda9eb1804d248418ddf","startup":false}],"stats":{"noObfuscationPercentage":10.58,"noOptimizationPercentage":11.67,"noShrinkingPercentage":10.68},"featureSplits":{"featureSplits":[{"dexFiles":[]}],"isolatedSplits":false},"resourceOptimization":{"isOptimizedShrinkingEnabled":false},"version":"8.11.18"}
{"options":{"hasObfuscationDictionary":false,"hasClassObfuscationDictionary":false,"hasPackageObfuscationDictionary":false,"keepAttributes":{"isAnnotationDefaultKept":true,"isEnclosingMethodKept":true,"isExceptionsKept":false,"isInnerClassesKept":true,"isLocalVariableTableKept":false,"isLocalVariableTypeTableKept":false,"isMethodParametersKept":false,"isPermittedSubclassesKept":false,"isRuntimeInvisibleAnnotationsKept":true,"isRuntimeInvisibleParameterAnnotationsKept":true,"isRuntimeInvisibleTypeAnnotationsKept":true,"isRuntimeVisibleAnnotationsKept":true,"isRuntimeVisibleParameterAnnotationsKept":true,"isRuntimeVisibleTypeAnnotationsKept":true,"isSignatureKept":true,"isSourceDebugExtensionKept":false,"isSourceDirKept":false,"isSourceFileKept":false,"isStackMapTableKept":false},"isAccessModificationEnabled":true,"isFlattenPackageHierarchyEnabled":false,"isObfuscationEnabled":true,"isOptimizationsEnabled":true,"isProGuardCompatibilityModeEnabled":false,"isProtoLiteOptimizationEnabled":false,"isRepackageClassesEnabled":false,"isShrinkingEnabled":true,"apiModeling":{},"minApiLevel":"24","isDebugModeEnabled":false},"baselineProfileRewriting":{},"compilation":{"buildTimeNs":94495792601,"numberOfThreads":8},"dexFiles":[{"checksum":"8e655b4e8f95ac7bcca24e9527390c40a05343f0ea12cda9eb1804d248418ddf","startup":false}],"stats":{"noObfuscationPercentage":10.58,"noOptimizationPercentage":11.67,"noShrinkingPercentage":10.68},"featureSplits":{"featureSplits":[{"dexFiles":[]}],"isolatedSplits":false},"resourceOptimization":{"isOptimizedShrinkingEnabled":false},"version":"8.11.18"}

View File

@@ -1 +1 @@
2ac451d5eb7811c9fe091a50c5640a8b368da372
8d625816be2cd0ba8f6baa0ee550f79f40205db3

File diff suppressed because it is too large Load Diff

View File

@@ -1114,7 +1114,7 @@ library {
}
library {
digests {
sha256: "\352%\345\235\262*bF\367\265\257\215q\227\223`H\250`\217[C\250\250\311O\020E\324\223\372\006"
sha256: "7i\203e\\\bb\216\212\310\353\024\030\371\002\004&m\337\362\251\345\353\023\315\305\261i-P\000\a"
}
}
library_dependencies {

View File

@@ -64,6 +64,9 @@ class ApiEndpoints {
/// 撤销限价委托
static const String tradeCancel = '/api/trade/cancel';
/// 今日买入配额
static const String buyQuota = '/api/trade/buy-quota';
// ==================== 資產模塊 ====================
/// 獲取資產總覽
@@ -92,6 +95,9 @@ class ApiEndpoints {
/// 申請提現
static const String withdraw = '/api/fund/withdraw';
/// 提现前检查45天规则
static const String withdrawCheck = '/api/fund/withdraw/check';
/// 取消訂單
static const String cancelOrder = '/api/fund/cancel';

View File

@@ -122,20 +122,26 @@ class AccountTrade {
class AccountFlow {
final int id;
final int userId;
final String flowNo;
final String flowType;
final String amount;
final String balanceBefore;
final String balanceAfter;
final String coinCode;
final String relatedOrderNo;
final String remark;
final DateTime? createTime;
AccountFlow({
required this.id,
required this.userId,
required this.flowNo,
required this.flowType,
required this.amount,
required this.balanceBefore,
required this.balanceAfter,
required this.coinCode,
required this.relatedOrderNo,
required this.remark,
this.createTime,
});
@@ -144,10 +150,13 @@ class AccountFlow {
return AccountFlow(
id: json['id'] as int? ?? 0,
userId: json['userId'] as int? ?? 0,
flowNo: json['flowNo']?.toString() ?? '',
flowType: json['flowType']?.toString() ?? '',
amount: json['amount']?.toString() ?? '0.00',
balanceBefore: json['balanceBefore']?.toString() ?? '0.00',
balanceAfter: json['balanceAfter']?.toString() ?? '0.00',
coinCode: json['coinCode']?.toString() ?? 'USDT',
relatedOrderNo: json['relatedOrderNo']?.toString() ?? '',
remark: json['remark']?.toString() ?? '',
createTime: json['createTime'] != null
? DateTime.tryParse(json['createTime'])

View File

@@ -107,8 +107,7 @@ class Coin {
/// 格式化價格顯示
String get formattedPrice {
if (price >= 1000) return price.toStringAsFixed(2);
if (price >= 1) return price.toStringAsFixed(4);
return price.toStringAsFixed(6);
return price.toStringAsFixed(4);
}
/// 格式化漲跌幅

View File

@@ -47,6 +47,13 @@ class FundService {
);
}
/// 提现前检查45天规则
Future<ApiResponse<Map<String, dynamic>>> withdrawCheck() async {
return _client.get<Map<String, dynamic>>(
ApiEndpoints.withdrawCheck,
);
}
/// 申請提現
Future<ApiResponse<Map<String, dynamic>>> withdraw({
required String amount,

View File

@@ -14,16 +14,21 @@ class TradeService {
required String coinCode,
required String price,
required String quantity,
int orderType = 1, // 1=市价单, 2=限价单
int orderType = 1,
String? tradeCode,
}) async {
final data = <String, dynamic>{
'coinCode': coinCode,
'price': price,
'quantity': quantity,
'orderType': orderType,
};
if (tradeCode != null && tradeCode.isNotEmpty) {
data['tradeCode'] = tradeCode;
}
return _client.post<Map<String, dynamic>>(
ApiEndpoints.buy,
data: {
'coinCode': coinCode,
'price': price,
'quantity': quantity,
'orderType': orderType,
},
data: data,
);
}
@@ -88,4 +93,9 @@ class TradeService {
data: {'orderNo': orderNo},
);
}
/// 獲取今日買入配額
Future<ApiResponse<Map<String, dynamic>>> getBuyQuota() async {
return _client.get<Map<String, dynamic>>(ApiEndpoints.buyQuota);
}
}

View File

@@ -284,6 +284,17 @@ class AssetProvider extends ChangeNotifier {
}
}
/// 提现前检查45天规则
Future<Map<String, dynamic>?> withdrawCheck() async {
try {
final response = await _fundService.withdrawCheck();
if (response.success && response.data != null) {
return response.data;
}
} catch (_) {}
return null;
}
/// 刷新所有資產數據(带去重)
Future<void> refreshAll({bool force = false}) async {
if (_refreshAllCompleter != null && !_refreshAllCompleter!.isCompleted) {

View File

@@ -56,8 +56,8 @@ class _DepositPageState extends State<DepositPage> {
ToastUtils.showError('單筆最低充值 1000 USDT');
return;
}
if (n % 1000 != 0) {
ToastUtils.showError('充值金額必須為1000的整數倍');
if (n > 8000) {
ToastUtils.showError('單筆最高充值 8000 USDT');
return;
}
if (_isSubmitting) return;
@@ -273,7 +273,7 @@ class _DepositPageState extends State<DepositPage> {
size: 13, color: colorScheme.onSurfaceVariant),
const SizedBox(width: 6),
Text(
'單筆最低充值 1000 USDT',
'每人僅限充值一次,最低 1000 最高 8000 USDT',
style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
),

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:lucide_icons_flutter/lucide_icons.dart';
import 'package:provider/provider.dart';
import '../../../core/network/api_response.dart';
import '../../../core/theme/app_theme.dart';
import '../../../core/theme/app_spacing.dart';
import '../../../core/utils/toast_utils.dart';
@@ -82,6 +83,28 @@ class _WithdrawPageState extends State<WithdrawPage> {
}
if (_isSubmitting) return;
// 45天规则检查
try {
final checkResult = await context.read<AssetProvider>().withdrawCheck();
if (checkResult != null && checkResult['isWithin45Days'] == true) {
if (!mounted) return;
final days = checkResult['depositDays'] ?? 0;
final confirmed = await showDialog<bool>(
context: context,
builder: (ctx) => AlertDialog(
title: const Text('本金未滿45天提示'),
content: Text('您的充值本金尚未滿45天$days天)。'
'本金部分提現可能受到限制,是否繼續?'),
actions: [
TextButton(onPressed: () => Navigator.pop(ctx, false), child: const Text('取消')),
TextButton(onPressed: () => Navigator.pop(ctx, true), child: const Text('確認提現')),
],
),
);
if (confirmed != true) return;
}
} catch (_) {}
setState(() => _isSubmitting = true);
try {
final response = await context.read<AssetProvider>().withdraw(

View File

@@ -6,11 +6,12 @@ import '../../../core/theme/app_color_scheme.dart';
import '../../../core/theme/app_theme_extension.dart';
import '../../../core/theme/app_spacing.dart';
import '../../../data/models/account_models.dart';
import '../../../core/network/api_response.dart';
import '../../../data/services/asset_service.dart';
import '../../../data/services/bonus_service.dart';
import '../../../providers/asset_provider.dart';
import '../../components/coin_icon.dart';
/// 賬單頁面 — 代幣盈虧賬單 + 新人福利賬單 + 推廣福利賬單
/// 賬單頁面 — 充提記錄 + 新人福利 + 推廣福利
class BillsPage extends StatefulWidget {
const BillsPage({super.key});
@@ -22,6 +23,7 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
late TabController _tabController;
List<AccountTrade> _holdings = [];
List<Map<String, dynamic>> _welfareRecords = [];
List<AccountFlow> _flowRecords = [];
bool _isLoading = true;
@override
@@ -42,10 +44,16 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
try {
final provider = context.read<AssetProvider>();
final bonusService = context.read<BonusService>();
final assetService = context.read<AssetService>();
// 並行加載持倉和福利記錄
await provider.loadTradeAccount(force: true);
final welfareResponse = await bonusService.getWelfareStatus();
final results = await Future.wait([
provider.loadTradeAccount(force: true),
bonusService.getWelfareStatus(),
assetService.getFlow(pageNum: 1, pageSize: 50),
]);
final welfareResponse = results[1] as ApiResponse;
final flowResponse = results[2] as ApiResponse<Map<String, dynamic>>;
if (mounted) {
setState(() {
@@ -53,6 +61,12 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
if (welfareResponse.success && welfareResponse.data != null) {
_welfareRecords = _parseWelfareRecords(welfareResponse.data!);
}
if (flowResponse.success && flowResponse.data != null) {
final list = flowResponse.data!['list'] as List<dynamic>? ?? [];
_flowRecords = list
.map((e) => AccountFlow.fromJson(e as Map<String, dynamic>))
.toList();
}
_isLoading = false;
});
}
@@ -69,12 +83,10 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
List<Map<String, dynamic>> _parseWelfareRecords(Map<String, dynamic> data) {
final records = <Map<String, dynamic>>[];
// 新人福利
final newUser = data['newUserBonus'] as Map<String, dynamic>?;
if (newUser != null) {
final claimed = newUser['claimed'] as bool? ?? false;
final eligible = newUser['eligible'] as bool? ?? false;
// 狀態: 1=已領取, 0=可領取(待領取), 2=不可用(未解鎖)
final int status;
if (claimed) {
status = 1;
@@ -92,7 +104,6 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
});
}
// 推廣福利列表
final referralRewards = data['referralRewards'] as List<dynamic>? ?? [];
for (var r in referralRewards) {
final map = r as Map<String, dynamic>;
@@ -100,7 +111,6 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
final milestones = map['milestones'] as List<dynamic>? ?? [];
final claimableCount = map['claimableCount'] as int? ?? 0;
// 每個 milestone 生成一條記錄
for (var m in milestones) {
final ms = m as Map<String, dynamic>;
final earned = ms['earned'] as bool? ?? false;
@@ -109,11 +119,11 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
final int status;
if (earned) {
status = 1; // 已領取
status = 1;
} else if (claimable) {
status = 0; // 可領取
status = 0;
} else {
status = 2; // 未達標
status = 2;
}
records.add({
'type': 'referral',
@@ -124,7 +134,6 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
});
}
// 如果沒有 milestone 但有 claimableCount也生成記錄
if (milestones.isEmpty && claimableCount > 0) {
records.add({
'type': 'referral',
@@ -158,13 +167,15 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
centerTitle: true,
bottom: TabBar(
controller: _tabController,
isScrollable: true,
labelColor: colorScheme.primary,
unselectedLabelColor: colorScheme.onSurfaceVariant,
indicatorColor: colorScheme.primary,
labelStyle: AppTextStyles.headlineMedium(context).copyWith(fontWeight: FontWeight.w600),
unselectedLabelStyle: AppTextStyles.headlineMedium(context),
tabAlignment: TabAlignment.start,
tabs: const [
Tab(text: '代幣盈虧'),
Tab(text: '充提記錄'),
Tab(text: '新人福利'),
Tab(text: '推廣福利'),
],
@@ -175,7 +186,7 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
: TabBarView(
controller: _tabController,
children: [
_buildCoinProfitTab(),
_buildFlowTab(),
_buildWelfareTab('new_user'),
_buildWelfareTab('referral'),
],
@@ -184,161 +195,261 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
}
// ============================================
// 代幣盈虧賬單
// 充提記錄
// ============================================
Widget _buildCoinProfitTab() {
final colorScheme = Theme.of(context).colorScheme;
if (_holdings.isEmpty) {
return _buildEmptyState(LucideIcons.wallet, '暫無持倉記錄');
Widget _buildFlowTab() {
if (_flowRecords.isEmpty) {
return _buildEmptyState(LucideIcons.receipt, '暫無流水記錄');
}
// 彙總統計
double totalCost = 0;
double totalValue = 0;
double totalProfit = 0;
for (var h in _holdings) {
totalCost += double.tryParse(h.totalCost) ?? 0;
totalValue += double.tryParse(h.currentValue) ?? 0;
totalProfit += double.tryParse(h.profit) ?? 0;
}
final profitRate = totalCost > 0 ? (totalProfit / totalCost * 100) : 0.0;
final isProfit = totalProfit >= 0;
final profitColor = isProfit ? context.appColors.up : context.appColors.down;
return RefreshIndicator(
onRefresh: _loadData,
child: ListView(
child: ListView.builder(
padding: const EdgeInsets.all(AppSpacing.md),
children: [
// 彙總卡片
Container(
padding: const EdgeInsets.all(AppSpacing.lg),
decoration: BoxDecoration(
color: _isDark ? AppColorScheme.darkSurfaceContainer : AppColorScheme.lightSurfaceLowest,
borderRadius: BorderRadius.circular(AppRadius.xl),
border: Border.all(
color: _isDark
? AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15)
: AppColorScheme.lightOutlineVariant.withValues(alpha: 0.5),
),
),
child: Column(
children: [
Text('總盈虧 (USDT)', style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
const SizedBox(height: AppSpacing.xs),
Text(
'${isProfit ? '+' : ''}${totalProfit.toStringAsFixed(2)}',
style: AppTextStyles.displaySmall(context).copyWith(
fontWeight: FontWeight.bold,
color: profitColor,
),
),
const SizedBox(height: AppSpacing.sm),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_buildSummaryItem('總成本', totalCost.toStringAsFixed(2)),
Container(width: 1, height: 16, color: colorScheme.outlineVariant.withValues(alpha: 0.3)),
_buildSummaryItem('總市值', totalValue.toStringAsFixed(2)),
Container(width: 1, height: 16, color: colorScheme.outlineVariant.withValues(alpha: 0.3)),
_buildSummaryItem('收益率', '${profitRate >= 0 ? '+' : ''}${profitRate.toStringAsFixed(2)}%'),
],
),
],
),
itemCount: _flowRecords.length,
itemBuilder: (context, index) => _buildFlowCard(_flowRecords[index]),
),
);
}
IconData _flowIcon(String flowType) {
switch (flowType) {
case '1':
return LucideIcons.arrowDownToLine;
case '2':
return LucideIcons.arrowUpFromLine;
case '3':
case '4':
return LucideIcons.repeat;
case '5':
return LucideIcons.shoppingCart;
case '6':
return LucideIcons.tag;
case '7':
return LucideIcons.gift;
default:
return LucideIcons.circleDot;
}
}
Color _flowIconColor(String flowType) {
switch (flowType) {
case '1':
case '3':
case '6':
return context.appColors.up;
case '2':
case '4':
case '5':
return context.appColors.down;
case '7':
return Theme.of(context).colorScheme.primary;
default:
return Theme.of(context).colorScheme.onSurfaceVariant;
}
}
Color _flowAmountColor(bool isPositive) {
return isPositive ? context.appColors.up : context.appColors.down;
}
Widget _buildFlowCard(AccountFlow flow) {
final colorScheme = Theme.of(context).colorScheme;
final amount = double.tryParse(flow.amount) ?? 0;
final isPositive = amount >= 0;
final iconColor = _flowIconColor(flow.flowType);
final amountColor = _flowAmountColor(isPositive);
final balanceBefore = double.tryParse(flow.balanceBefore) ?? 0;
final balanceAfter = double.tryParse(flow.balanceAfter) ?? 0;
return GestureDetector(
onTap: () => _showFlowDetail(flow),
child: Container(
margin: const EdgeInsets.only(bottom: AppSpacing.sm),
padding: const EdgeInsets.all(AppSpacing.md),
decoration: BoxDecoration(
color: _isDark ? AppColorScheme.darkSurfaceContainer : AppColorScheme.lightSurfaceLowest,
borderRadius: BorderRadius.circular(AppRadius.lg),
border: Border.all(
color: _isDark
? AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15)
: AppColorScheme.lightOutlineVariant.withValues(alpha: 0.5),
),
const SizedBox(height: AppSpacing.md),
// 各幣種盈虧明細
..._holdings.map((h) => _buildCoinProfitCard(h)),
],
),
);
}
Widget _buildSummaryItem(String label, String value) {
final colorScheme = Theme.of(context).colorScheme;
return Padding(
padding: const EdgeInsets.symmetric(horizontal: AppSpacing.md),
child: Column(
children: [
Text(label, style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
const SizedBox(height: 2),
Text(value, style: AppTextStyles.labelMedium(context).copyWith(
fontWeight: FontWeight.w600,
)),
],
),
);
}
Widget _buildCoinProfitCard(AccountTrade h) {
final colorScheme = Theme.of(context).colorScheme;
final profit = double.tryParse(h.profit) ?? 0;
final isProfit = profit >= 0;
final profitColor = isProfit ? context.appColors.up : context.appColors.down;
return Container(
margin: const EdgeInsets.only(bottom: AppSpacing.sm),
padding: const EdgeInsets.all(AppSpacing.md),
decoration: BoxDecoration(
color: _isDark ? AppColorScheme.darkSurfaceContainer : AppColorScheme.lightSurfaceLowest,
borderRadius: BorderRadius.circular(AppRadius.lg),
border: Border.all(
color: _isDark
? AppColorScheme.darkOutlineVariant.withValues(alpha: 0.15)
: AppColorScheme.lightOutlineVariant.withValues(alpha: 0.5),
),
),
child: Column(
children: [
// 幣名 + 盈虧金額
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
child: Row(
children: [
Container(
width: 40,
height: 40,
decoration: BoxDecoration(
color: iconColor.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(AppRadius.md),
),
child: Icon(_flowIcon(flow.flowType), size: 18, color: iconColor),
),
const SizedBox(width: AppSpacing.sm),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CoinIcon(symbol: h.coinCode, size: 32),
const SizedBox(width: AppSpacing.sm),
Text(h.coinCode, style: AppTextStyles.headlineMedium(context).copyWith(
fontWeight: FontWeight.bold,
)),
const SizedBox(width: AppSpacing.xs),
Text('x ${double.tryParse(h.quantity)?.toStringAsFixed(4) ?? h.quantity}',
style: AppTextStyles.bodySmall(context).copyWith(color: colorScheme.onSurfaceVariant),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
flow.flowTypeText,
style: AppTextStyles.headlineMedium(context).copyWith(
fontWeight: FontWeight.w600,
),
),
Text(
'${isPositive ? '+' : ''}${amount.toStringAsFixed(2)} ${flow.coinCode}',
style: AppTextStyles.headlineMedium(context).copyWith(
color: amountColor,
fontWeight: FontWeight.bold,
),
),
],
),
const SizedBox(height: 4),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'餘額 ${balanceBefore.toStringAsFixed(2)}${balanceAfter.toStringAsFixed(2)}',
style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
Text(
_formatTime(flow.createTime),
style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
],
),
],
),
Text(
'${isProfit ? '+' : ''}${profit.toStringAsFixed(2)} USDT',
style: AppTextStyles.headlineMedium(context).copyWith(
color: profitColor,
fontWeight: FontWeight.bold,
),
const SizedBox(width: 4),
Icon(
LucideIcons.chevronRight,
size: 16,
color: colorScheme.onSurfaceVariant.withValues(alpha: 0.4),
),
],
),
),
);
}
void _showFlowDetail(AccountFlow flow) {
final colorScheme = Theme.of(context).colorScheme;
final amount = double.tryParse(flow.amount) ?? 0;
final isPositive = amount >= 0;
final amountColor = _flowAmountColor(isPositive);
final iconColor = _flowIconColor(flow.flowType);
final balanceBefore = double.tryParse(flow.balanceBefore) ?? 0;
final balanceAfter = double.tryParse(flow.balanceAfter) ?? 0;
showModalBottomSheet(
context: context,
backgroundColor: _isDark ? AppColorScheme.darkSurfaceContainer : AppColorScheme.lightSurfaceLowest,
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.vertical(top: Radius.circular(AppRadius.xl)),
),
builder: (context) => SafeArea(
child: Padding(
padding: const EdgeInsets.all(AppSpacing.lg),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Center(
child: Container(
width: 40,
height: 4,
margin: const EdgeInsets.only(bottom: AppSpacing.md),
decoration: BoxDecoration(
color: colorScheme.outlineVariant.withValues(alpha: 0.4),
borderRadius: BorderRadius.circular(2),
),
),
),
Center(
child: Container(
width: 56,
height: 56,
decoration: BoxDecoration(
color: iconColor.withValues(alpha: 0.1),
borderRadius: BorderRadius.circular(AppRadius.lg),
),
child: Icon(_flowIcon(flow.flowType), size: 24, color: iconColor),
),
),
const SizedBox(height: AppSpacing.md),
Center(
child: Text(
'${isPositive ? '+' : ''}${amount.toStringAsFixed(2)} ${flow.coinCode}',
style: AppTextStyles.displaySmall(context).copyWith(
color: amountColor,
fontWeight: FontWeight.bold,
),
),
),
Center(
child: Text(
flow.flowTypeText,
style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
),
const SizedBox(height: AppSpacing.lg),
_buildDetailRow('流水號', flow.flowNo.isNotEmpty ? flow.flowNo : '-'),
_buildDetailRow('幣種', flow.coinCode),
_buildDetailRow(
'變動前餘額',
'${balanceBefore.toStringAsFixed(2)} ${flow.coinCode}',
),
_buildDetailRow(
'變動後餘額',
'${balanceAfter.toStringAsFixed(2)} ${flow.coinCode}',
),
if (flow.relatedOrderNo.isNotEmpty)
_buildDetailRow('關聯訂單', flow.relatedOrderNo),
if (flow.remark.isNotEmpty)
_buildDetailRow('備註', flow.remark),
_buildDetailRow('時間', _formatTimeFull(flow.createTime)),
const SizedBox(height: AppSpacing.md),
],
),
const SizedBox(height: AppSpacing.sm),
// 明細行
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('均價: ${h.avgPrice}', style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
Text('市值: ${h.currentValue} USDT', style: AppTextStyles.bodySmall(context).copyWith(
color: colorScheme.onSurfaceVariant,
)),
Text(h.formattedProfitRate, style: AppTextStyles.bodySmall(context).copyWith(
color: profitColor,
fontWeight: FontWeight.w600,
)),
],
),
),
);
}
Widget _buildDetailRow(String label, String value) {
final colorScheme = Theme.of(context).colorScheme;
return Padding(
padding: const EdgeInsets.symmetric(vertical: AppSpacing.xs),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
label,
style: AppTextStyles.bodyMedium(context).copyWith(
color: colorScheme.onSurfaceVariant,
),
),
Flexible(
child: Text(
value,
style: AppTextStyles.bodyMedium(context).copyWith(
fontWeight: FontWeight.w500,
),
textAlign: TextAlign.right,
),
),
],
),
@@ -375,7 +486,6 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
final amount = double.tryParse(record['amount']?.toString() ?? '0') ?? 0;
final status = record['status'] as int? ?? 0;
// status: 0=待領取, 1=已領取, 2=未達標
String statusText;
Color statusColor;
switch (status) {
@@ -477,9 +587,18 @@ class _BillsPageState extends State<BillsPage> with SingleTickerProviderStateMix
String _formatTime(dynamic time) {
if (time == null) return '-';
if (time is DateTime) {
return '${time.year}-${time.month.toString().padLeft(2, '0')}-${time.day.toString().padLeft(2, '0')} '
return '${time.month.toString().padLeft(2, '0')}-${time.day.toString().padLeft(2, '0')} '
'${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}';
}
return time.toString();
}
String _formatTimeFull(dynamic time) {
if (time == null) return '-';
if (time is DateTime) {
return '${time.year}-${time.month.toString().padLeft(2, '0')}-${time.day.toString().padLeft(2, '0')} '
'${time.hour.toString().padLeft(2, '0')}:${time.minute.toString().padLeft(2, '0')}:${time.second.toString().padLeft(2, '0')}';
}
return time.toString();
}
}

View File

@@ -305,7 +305,7 @@ class _WelfareCenterPageState extends State<WelfareCenterPage> {
),
const SizedBox(height: 12),
Text(
'+100 USDT',
'+${newUserBonus?['amount'] ?? '100'} USDT',
style: AppTextStyles.displayLarge(context).copyWith(
fontWeight: FontWeight.w800,
color: claimed ? Theme.of(context).colorScheme.onSurfaceVariant : profitGreen,
@@ -809,7 +809,7 @@ class _WelfareCenterPageState extends State<WelfareCenterPage> {
style: AppTextStyles.headlineSmall(context),
),
const SizedBox(height: 8),
_buildRuleItem('新用戶首次充值完成後可領取 100 USDT一次性'),
_buildRuleItem('充值金額每滿 1,000 USDT 獎勵 100 USDT如充值 3,000 領取 300'),
_buildRuleItem('邀請好友累計充值每滿 1,000 USDT獎勵 100 USDT最多8次/人)'),
_buildRuleItem('好友推廣的用戶充值每滿 1,000 USDT額外獎勵 50 USDT最多8次/人)'),
_buildRuleItem('獎勵直接發放至資金賬戶'),
@@ -843,7 +843,7 @@ class _WelfareCenterPageState extends State<WelfareCenterPage> {
if (response.success) {
context.read<AssetProvider>().refreshAll(force: true);
context.read<AppEventBus>().fire(AppEventType.assetChanged);
ToastUtils.showSuccess('領取成功!100 USDT 已到賬');
ToastUtils.showSuccess('領取成功!獎勵已到賬');
_loadData();
} else {
ToastUtils.showError(response.message ?? '領取失敗');
@@ -865,7 +865,7 @@ class _WelfareCenterPageState extends State<WelfareCenterPage> {
if (response.success) {
context.read<AssetProvider>().refreshAll(force: true);
context.read<AppEventBus>().fire(AppEventType.assetChanged);
ToastUtils.showSuccess('領取成功!100 USDT 已到賬');
ToastUtils.showSuccess('領取成功!獎勵已到賬');
_loadData();
} else {
ToastUtils.showError(response.message ?? '領取失敗');

View File

@@ -117,8 +117,7 @@ class PriceCard extends StatelessWidget {
String _fmt(double? v) {
if (v == null) return '--';
if (v >= 1000) return v.toStringAsFixed(2);
if (v >= 1) return v.toStringAsFixed(4);
return v.toStringAsFixed(6);
return v.toStringAsFixed(4);
}
String _fmtVol(double? v) {

View File

@@ -55,6 +55,15 @@ class SplitTradeForm extends StatefulWidget {
class _SplitTradeFormState extends State<SplitTradeForm>
with SingleTickerProviderStateMixin {
late TabController _tabController;
double _currentPercent = 0.0;
String _fmtAvailable(String raw) {
final v = double.tryParse(raw);
if (v == null || v == 0) return '0';
if (v >= 1) return v.toStringAsFixed(2);
if (v >= 0.01) return v.toStringAsFixed(4);
return v.toStringAsFixed(6);
}
@override
void initState() {
@@ -256,11 +265,21 @@ class _SplitTradeFormState extends State<SplitTradeForm>
),
const SizedBox(height: AppSpacing.xs),
// 可用余额
Text(
'可用: $available ${_isBuy ? 'USDT' : (widget.coin?.code ?? '')}',
style: AppTextStyles.bodySmall(context)
.copyWith(color: context.colors.onSurfaceVariant),
// 可用余额 + 手续费
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'可用: ${_fmtAvailable(available)} ${_isBuy ? 'USDT' : (widget.coin?.code ?? '')}',
style: AppTextStyles.bodySmall(context)
.copyWith(color: context.colors.onSurfaceVariant),
),
Text(
'手续费: 0%',
style: AppTextStyles.bodySmall(context)
.copyWith(color: context.colors.onSurfaceVariant),
),
],
),
const SizedBox(height: AppSpacing.sm),
@@ -276,7 +295,29 @@ class _SplitTradeFormState extends State<SplitTradeForm>
_pctBtn(context, '100%', 1.0, onFillPercent),
],
),
const SizedBox(height: AppSpacing.sm),
const SizedBox(height: 2),
// 滑块选择仓位
SliderTheme(
data: SliderThemeData(
trackHeight: 3,
thumbShape: const RoundSliderThumbShape(enabledThumbRadius: 6),
overlayShape: const RoundSliderOverlayShape(overlayRadius: 12),
activeTrackColor: accentColor,
inactiveTrackColor: context.colors.surfaceContainerHighest,
thumbColor: accentColor,
),
child: Slider(
value: _currentPercent.clamp(0.0, 1.0),
onChanged: (v) {
setState(() => _currentPercent = v);
onFillPercent(v);
},
min: 0.0,
max: 1.0,
),
),
const SizedBox(height: AppSpacing.xs),
// 提交按钮
SizedBox(
@@ -296,7 +337,7 @@ class _SplitTradeFormState extends State<SplitTradeForm>
child: FittedBox(
fit: BoxFit.scaleDown,
child: Text(
'${_isBuy ? '' : ''} ${widget.coin?.code ?? ''}',
'${_isBuy ? '' : ''} ${widget.coin?.code ?? ''}',
style: AppTextStyles.labelLarge(context)
.copyWith(color: Colors.white, fontWeight: FontWeight.w700),
),
@@ -308,20 +349,26 @@ class _SplitTradeFormState extends State<SplitTradeForm>
}
Widget _pctBtn(BuildContext context, String label, double pct, ValueChanged<double> onTap) {
final isActive = (_currentPercent - pct).abs() < 0.01;
return Expanded(
child: GestureDetector(
onTap: () => onTap(pct),
onTap: () {
setState(() => _currentPercent = pct);
onTap(pct);
},
child: Container(
height: 28,
height: 26,
decoration: BoxDecoration(
color: context.colors.surfaceContainerHighest.withValues(alpha: 0.4),
color: isActive
? context.colors.primary.withValues(alpha: 0.15)
: context.colors.surfaceContainerHighest.withValues(alpha: 0.4),
borderRadius: BorderRadius.circular(AppRadius.sm),
),
child: Center(
child: Text(label,
style: AppTextStyles.bodySmall(context).copyWith(
color: context.colors.onSurfaceVariant,
fontWeight: FontWeight.w500)),
color: isActive ? context.colors.primary : context.colors.onSurfaceVariant,
fontWeight: isActive ? FontWeight.w600 : FontWeight.w500)),
),
),
),

View File

@@ -37,6 +37,7 @@ class _TradePageState extends State<TradePage>
bool _isSellSubmitting = false;
int _orderType = 1;
double _realtimePrice = 0;
double _currentBuyPercent = 0.0;
final _buyPriceController = TextEditingController();
final _buyQuantityController = TextEditingController();
@@ -695,10 +696,9 @@ class _TradePageState extends State<TradePage>
if (_selectedCoin == null) return false;
final qty = double.tryParse(_buyQuantityController.text) ?? 0;
if (qty <= 0) return false;
final price = double.tryParse(_buyPriceController.text) ?? 0;
final amount = price * qty;
// 只要有余额就可以买,后端会微调价格确保成交
final available = double.tryParse(_availableUsdt) ?? 0;
return amount <= available;
return available > 0;
}
bool _canSell() {
@@ -710,13 +710,12 @@ class _TradePageState extends State<TradePage>
}
void _buyFillPercent(double pct) {
_currentBuyPercent = pct;
final price = _orderType == 1 ? _realtimePrice : (double.tryParse(_buyPriceController.text) ?? 0);
final available = double.tryParse(_availableUsdt) ?? 0;
if (price <= 0) return;
// 100%时留极小余量防精度误差
final safePct = pct >= 1.0 ? 0.9999 : pct;
final qty = (available / price) * safePct;
_buyQuantityController.text = qty < 0.0001 ? '' : ((qty * 10000).truncateToDouble() / 10000).toStringAsFixed(4);
final qty = (available / price * pct * 10000).truncateToDouble() / 10000;
_buyQuantityController.text = qty < 0.0001 ? '' : qty.toStringAsFixed(4);
setState(() {});
}
@@ -732,11 +731,24 @@ class _TradePageState extends State<TradePage>
final priceController = isBuy ? _buyPriceController : _sellPriceController;
final qtyController = isBuy ? _buyQuantityController : _sellQuantityController;
final price = priceController.text;
String price = priceController.text;
final quantity = qtyController.text;
final coinCode = _selectedCoin!.code;
final typeLabel = _orderType == 1 ? '市价单' : '限价单';
// 买入时:按所选仓位百分比重算价格,确保 价格×数量=仓位金额
if (isBuy && _currentBuyPercent > 0) {
final available = double.tryParse(_availableUsdt) ?? 0;
final qty = double.tryParse(quantity) ?? 0;
if (qty > 0 && available > 0) {
final positionAmount = available * _currentBuyPercent;
final adjustedPrice = positionAmount / qty;
price = adjustedPrice.toStringAsFixed(8);
}
}
final displayAmount = ((double.tryParse(price) ?? 0) * (double.tryParse(quantity) ?? 0)).toStringAsFixed(2);
final confirmed = await showDialog<bool>(
context: context,
builder: (ctx) => ConfirmDialog(
@@ -744,7 +756,7 @@ class _TradePageState extends State<TradePage>
coinCode: coinCode,
price: price,
quantity: quantity,
amount: ((double.tryParse(price) ?? 0) * (double.tryParse(quantity) ?? 0)).toStringAsFixed(2),
amount: displayAmount,
),
);
@@ -757,20 +769,39 @@ class _TradePageState extends State<TradePage>
try {
final tradeService = context.read<TradeService>();
final response = isBuy
var response = isBuy
? await tradeService.buy(coinCode: coinCode, price: price, quantity: quantity, orderType: _orderType)
: await tradeService.sell(coinCode: coinCode, price: price, quantity: quantity, orderType: _orderType);
if (!mounted) return;
// 买入次数用完 → 弹出交易码输入框重试
if (isBuy && !response.success &&
(response.message?.contains('次數') == true || response.message?.contains('交易碼') == true)) {
final code = await _showTradeCodeDialog(response.message ?? '請輸入交易碼');
if (code != null && code.isNotEmpty && mounted) {
response = await tradeService.buy(
coinCode: coinCode, price: price, quantity: quantity,
orderType: _orderType, tradeCode: code,
);
} else {
return;
}
}
if (!mounted) return;
if (response.success) {
qtyController.clear();
context.read<AssetProvider>().refreshAll(force: true);
context.read<AppEventBus>().fire(AppEventType.assetChanged);
_loadPendingOrders();
final msg = _orderType == 2
? '$typeLabel委托成功: $quantity $coinCode @ $price USDT'
: '$typeLabel: $quantity $coinCode @ $price USDT';
final resultAmount = response.data?['amount'];
final resultQty = response.data?['quantity'];
final resultPrice = response.data?['price'];
final msg = isBuy
? '買入 ${resultQty ?? quantity} $coinCode\n成交金額: ${resultAmount != null ? (double.tryParse(resultAmount.toString())?.toStringAsFixed(2) ?? displayAmount) : displayAmount} USDT'
: '賣出 ${resultQty ?? quantity} $coinCode\n成交金額: ${resultAmount != null ? (double.tryParse(resultAmount.toString())?.toStringAsFixed(2) ?? displayAmount) : displayAmount} USDT';
_showResultDialog(true, isBuy ? '買入成功' : '賣出成功', msg);
} else {
_showResultDialog(false, '交易失敗', response.message ?? '請稍後重試');
@@ -787,6 +818,51 @@ class _TradePageState extends State<TradePage>
}
}
Future<String?> _showTradeCodeDialog(String hint) {
final controller = TextEditingController();
return showDialog<String>(
context: context,
barrierDismissible: false,
builder: (ctx) => AlertDialog(
title: const Text('需要交易碼'),
content: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(hint, style: AppTextStyles.bodySmall(ctx)),
const SizedBox(height: AppSpacing.md),
TextField(
controller: controller,
autofocus: true,
textCapitalization: TextCapitalization.characters,
style: AppTextStyles.headlineMedium(ctx),
keyboardType: TextInputType.text,
decoration: InputDecoration(
hintText: '請輸入交易碼',
filled: true,
fillColor: ctx.colors.surfaceContainerHighest.withValues(alpha: 0.3),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(AppRadius.sm),
borderSide: BorderSide.none,
),
),
),
],
),
actions: [
TextButton(
onPressed: () => Navigator.of(ctx).pop(null),
child: const Text('取消'),
),
ElevatedButton(
onPressed: () => Navigator.of(ctx).pop(controller.text.trim()),
child: const Text('確認'),
),
],
),
);
}
void _showResultDialog(bool success, String title, String message) {
showDialog(
context: context,

View File

@@ -1 +0,0 @@
import{D as e,Dt as t,G as n,H as r,Tt as i,w as a}from"./iconify-DYZHDLa8.js";import{t as o}from"./ui-vendor-Za4p7XTd.js";import{J as s}from"./index-Uji7rFqr.js";var c=e({__name:`AlertDescription`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`div`,{"data-slot":`alert-description`,class:t(i(s)(`text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed`,o.class))},[n(e.$slots,`default`)],2))}}),l=e({__name:`AlertTitle`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`div`,{"data-slot":`alert-title`,class:t(i(s)(`col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight`,o.class))},[n(e.$slots,`default`)],2))}}),u=o(`relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90`}},defaultVariants:{variant:`default`}}),d=e({__name:`Alert`,props:{class:{type:[Boolean,null,String,Object,Array]},variant:{}},setup(e){let o=e;return(c,l)=>(r(),a(`div`,{"data-slot":`alert`,class:t(i(s)(i(u)({variant:e.variant}),o.class)),role:`alert`},[n(c.$slots,`default`)],2))}});export{l as n,c as r,d as t};

View File

@@ -1 +0,0 @@
import{C as e,D as t,G as n,H as r,I as i,S as a,Tt as o,gt as s,it as c,tt as l}from"./iconify-DYZHDLa8.js";import{E as u,w as d}from"./vue-vendor-DjtlKxRy.js";import{J as f}from"./index-Uji7rFqr.js";import{r as p}from"./button-BuRmTYve.js";import{t as m}from"./useForwardExpose-B0BXtanw.js";import{r as h}from"./AvatarImage-2cn_wg2h.js";var g=t({__name:`AvatarFallback`,props:{delayMs:{type:Number,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let i=t,u=h();m();let f=s(i.delayMs===void 0);return l(e=>{if(i.delayMs&&d){let t=window.setTimeout(()=>{f.value=!0},i.delayMs);e(()=>{window.clearTimeout(t)})}}),(t,i)=>f.value&&o(u).imageLoadingStatus.value!==`loaded`?(r(),a(o(p),{key:0,"as-child":t.asChild,as:t.as},{default:c(()=>[n(t.$slots,`default`)]),_:3},8,[`as-child`,`as`])):e(`v-if`,!0)}}),_=t({__name:`AvatarFallback`,props:{delayMs:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,s=u(t,`class`);return(e,l)=>(r(),a(o(g),i({"data-slot":`avatar-fallback`},o(s),{class:o(f)(`bg-muted flex size-full items-center justify-center rounded-full`,t.class)}),{default:c(()=>[n(e.$slots,`default`)]),_:3},16,[`class`]))}});export{_ as t};

View File

@@ -1 +0,0 @@
import{B as e,D as t,Dt as n,G as r,H as i,I as a,S as o,St as s,Tt as c,at as l,b as u,d,et as f,gt as p,it as m,tt as h,z as g}from"./iconify-DYZHDLa8.js";import{w as _}from"./vue-vendor-DjtlKxRy.js";import{J as v}from"./index-Uji7rFqr.js";import{O as y}from"./Teleport-BIYegdAM.js";import{r as b}from"./button-BuRmTYve.js";import{t as x}from"./useForwardExpose-B0BXtanw.js";var[S,C]=y(`AvatarRoot`),w=t({__name:`AvatarRoot`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return x(),C({imageLoadingStatus:p(`idle`)}),(e,t)=>(i(),o(c(b),{"as-child":e.asChild,as:e.as},{default:m(()=>[r(e.$slots,`default`)]),_:3},8,[`as-child`,`as`]))}});function T(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?`loaded`:`loading`):`error`:`idle`}function E(t,{referrerPolicy:n,crossOrigin:r}={}){let i=p(!1),a=p(null),o=u(()=>i.value?(!a.value&&_&&(a.value=new window.Image),a.value):null),s=p(T(o.value,t.value)),c=e=>()=>{i.value&&(s.value=e)};return g(()=>{i.value=!0,h(e=>{let i=o.value;if(!i)return;s.value=T(i,t.value);let a=c(`loaded`),l=c(`error`);i.addEventListener(`load`,a),i.addEventListener(`error`,l),n?.value&&(i.referrerPolicy=n.value),typeof r?.value==`string`&&(i.crossOrigin=r.value),e(()=>{i.removeEventListener(`load`,a),i.removeEventListener(`error`,l)})})}),e(()=>{i.value=!1}),s}var D=t({__name:`AvatarImage`,props:{src:{type:String,required:!0},referrerPolicy:{type:null,required:!1},crossOrigin:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`img`}},emits:[`loadingStatusChange`],setup(e,{emit:t}){let n=e,a=t,{src:u,referrerPolicy:p,crossOrigin:h}=s(n);x();let g=S(),_=E(u,{referrerPolicy:p,crossOrigin:h});return f(_,e=>{a(`loadingStatusChange`,e),e!==`idle`&&(g.imageLoadingStatus.value=e)},{immediate:!0}),(e,t)=>l((i(),o(c(b),{role:`img`,"as-child":e.asChild,as:e.as,src:c(u),referrerpolicy:c(p),crossorigin:c(h)},{default:m(()=>[r(e.$slots,`default`)]),_:3},8,[`as-child`,`as`,`src`,`referrerpolicy`,`crossorigin`])),[[d,c(_)===`loaded`]])}}),O=t({__name:`Avatar`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e;return(e,a)=>(i(),o(c(w),{"data-slot":`avatar`,class:n(c(v)(`relative flex size-8 shrink-0 overflow-hidden rounded-full`,t.class))},{default:m(()=>[r(e.$slots,`default`)]),_:3},8,[`class`]))}}),k=t({__name:`AvatarImage`,props:{src:{},referrerPolicy:{},crossOrigin:{},asChild:{type:Boolean},as:{}},setup(e){let t=e;return(e,n)=>(i(),o(c(D),a({"data-slot":`avatar-image`},t,{class:`aspect-square size-full`}),{default:m(()=>[r(e.$slots,`default`)]),_:3},16))}});export{O as n,S as r,k as t};

View File

@@ -1 +0,0 @@
import{D as e,G as t,H as n,I as r,S as i,Tt as a,it as o}from"./iconify-DYZHDLa8.js";import{t as s}from"./ui-vendor-Za4p7XTd.js";import{E as c}from"./vue-vendor-DjtlKxRy.js";import{J as l}from"./index-Uji7rFqr.js";import{r as u}from"./button-BuRmTYve.js";var d=s(`inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden`,{variants:{variant:{default:`border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90`,secondary:`border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90`,destructive:`border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground`}},defaultVariants:{variant:`default`}}),f=e({__name:`Badge`,props:{asChild:{type:Boolean},as:{},variant:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e,f=c(s,`class`);return(c,p)=>(n(),i(a(u),r({"data-slot":`badge`,class:a(l)(a(d)({variant:e.variant}),s.class)},a(f)),{default:o(()=>[t(c.$slots,`default`)]),_:3},16,[`class`]))}});export{f as t};

View File

@@ -1 +0,0 @@
import{D as e,Dt as t,G as n,H as r,Tt as i,w as a}from"./iconify-DYZHDLa8.js";import{J as o}from"./index-Uji7rFqr.js";var s=e({__name:`Card`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(r(),a(`div`,{"data-slot":`card`,class:t(i(o)(`bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm`,s.class))},[n(e.$slots,`default`)],2))}});export{s as t};

View File

@@ -1 +0,0 @@
import{D as e,Dt as t,G as n,H as r,Tt as i,w as a}from"./iconify-DYZHDLa8.js";import{J as o}from"./index-Uji7rFqr.js";var s=e({__name:`CardContent`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(r(),a(`div`,{"data-slot":`card-content`,class:t(i(o)(`px-6`,s.class))},[n(e.$slots,`default`)],2))}});export{s as t};

View File

@@ -1 +0,0 @@
import{D as e,Dt as t,G as n,H as r,Tt as i,w as a}from"./iconify-DYZHDLa8.js";import{J as o}from"./index-Uji7rFqr.js";var s=e({__name:`CardHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(r(),a(`div`,{"data-slot":`card-header`,class:t(i(o)(`@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6`,s.class))},[n(e.$slots,`default`)],2))}}),c=e({__name:`CardDescription`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(r(),a(`p`,{"data-slot":`card-description`,class:t(i(o)(`text-muted-foreground text-sm`,s.class))},[n(e.$slots,`default`)],2))}}),l=e({__name:`CardTitle`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let s=e;return(e,c)=>(r(),a(`h3`,{"data-slot":`card-title`,class:t(i(o)(`leading-none font-semibold`,s.class))},[n(e.$slots,`default`)],2))}});export{c as n,s as r,l as t};

View File

@@ -1 +0,0 @@
import{C as e,D as t,E as n,G as r,H as i,I as a,Ot as o,S as s,Tt as c,b as l,f as u,it as d,k as f,p,q as m}from"./iconify-DYZHDLa8.js";import{o as h}from"./SelectValue-Dhq6ao6U.js";import{E as g,y as _}from"./vue-vendor-DjtlKxRy.js";import{J as v}from"./index-Uji7rFqr.js";import{n as y,r as b}from"./VisuallyHidden-CeN_p2Md.js";import{O as x,T as S,g as C,y as w}from"./Teleport-BIYegdAM.js";import{r as T}from"./button-BuRmTYve.js";import{t as E}from"./useForwardExpose-B0BXtanw.js";import{t as D}from"./VisuallyHiddenInput-dn3LBkPE.js";import{t as O}from"./RovingFocusItem-BIHcXQd-.js";function k(e,t){return S(e)?!1:Array.isArray(e)?e.some(e=>b(e,t)):b(e,t)}var[A,j]=x(`CheckboxGroupRoot`);function M(e){return e===`indeterminate`}function N(e){return M(e)?`indeterminate`:e?`checked`:`unchecked`}var[P,F]=x(`CheckboxRoot`),I=t({inheritAttrs:!1,__name:`CheckboxRoot`,props:{defaultValue:{type:null,required:!1},modelValue:{type:null,required:!1,default:void 0},disabled:{type:Boolean,required:!1},value:{type:null,required:!1,default:`on`},id:{type:String,required:!1},trueValue:{type:null,required:!1,default:()=>!0},falseValue:{type:null,required:!1,default:()=>!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`},name:{type:String,required:!1},required:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(t,{emit:n}){let o=t,f=n,{forwardRef:h,currentElement:g}=E(),v=A(null),x=_(o,`modelValue`,f,{defaultValue:o.defaultValue??o.falseValue,passive:o.modelValue===void 0}),C=l(()=>v?.disabled.value||o.disabled),w=l(()=>b(x.value,o.trueValue)),j=l(()=>S(v?.modelValue.value)?x.value===`indeterminate`?`indeterminate`:w.value:k(v.modelValue.value,o.value));function P(){if(S(v?.modelValue.value))x.value===`indeterminate`?x.value=o.trueValue:x.value=w.value?o.falseValue:o.trueValue;else{let e=[...v.modelValue.value||[]];if(k(e,o.value)){let t=e.findIndex(e=>b(e,o.value));e.splice(t,1)}else e.push(o.value);v.modelValue.value=e}}let I=y(g),L=l(()=>o.id&&g.value?document.querySelector(`[for="${o.id}"]`)?.innerText:void 0);return F({disabled:C,state:j}),(t,n)=>(i(),s(m(c(v)?.rovingFocus.value?c(O):c(T)),a(t.$attrs,{id:t.id,ref:c(h),role:`checkbox`,"as-child":t.asChild,as:t.as,type:t.as===`button`?`button`:void 0,"aria-checked":c(M)(j.value)?`mixed`:j.value,"aria-required":t.required,"aria-label":t.$attrs[`aria-label`]||L.value,"data-state":c(N)(j.value),"data-disabled":C.value?``:void 0,disabled:C.value,focusable:c(v)?.rovingFocus.value?!C.value:void 0,onKeydown:u(p(()=>{},[`prevent`]),[`enter`]),onClick:P}),{default:d(()=>[r(t.$slots,`default`,{modelValue:c(x),state:j.value}),c(I)&&t.name&&!c(v)?(i(),s(c(D),{key:0,type:`checkbox`,checked:!!j.value,name:t.name,value:t.value,disabled:C.value,required:t.required},null,8,[`checked`,`name`,`value`,`disabled`,`required`])):e(`v-if`,!0)]),_:3},16,[`id`,`as-child`,`as`,`type`,`aria-checked`,`aria-required`,`aria-label`,`data-state`,`data-disabled`,`disabled`,`focusable`,`onKeydown`]))}}),L=t({__name:`CheckboxIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let{forwardRef:t}=E(),o=P();return(e,l)=>(i(),s(c(C),{present:e.forceMount||c(M)(c(o).state.value)||c(o).state.value===!0},{default:d(()=>[n(c(T),a({ref:c(t),"data-state":c(N)(c(o).state.value),"data-disabled":c(o).disabled.value?``:void 0,style:{pointerEvents:`none`},"as-child":e.asChild,as:e.as},e.$attrs),{default:d(()=>[r(e.$slots,`default`)]),_:3},16,[`data-state`,`data-disabled`,`as-child`,`as`])]),_:3},8,[`present`]))}}),R=t({__name:`Checkbox`,props:{defaultValue:{},modelValue:{},disabled:{type:Boolean},value:{},id:{},trueValue:{},falseValue:{},asChild:{type:Boolean},as:{},name:{},required:{type:Boolean},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(e,{emit:t}){let l=e,u=t,p=w(g(l,`class`),u);return(e,t)=>(i(),s(c(I),a({"data-slot":`checkbox`},c(p),{class:c(v)(`peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50`,l.class)}),{default:d(t=>[n(c(L),{"data-slot":`checkbox-indicator`,class:`grid place-content-center text-current transition-none`},{default:d(()=>[r(e.$slots,`default`,o(f(t)),()=>[n(c(h),{class:`size-3.5`})])]),_:2},1024)]),_:3},16,[`class`]))}});export{R as t};

View File

@@ -1 +0,0 @@
import{D as e,G as t,H as n,I as r,S as i,Tt as a,it as o}from"./iconify-DYZHDLa8.js";import{u as s}from"./DialogTitle-CMQDEO8n.js";var c=e({__name:`DialogClose`,props:{asChild:{type:Boolean},as:{}},setup(e){let c=e;return(e,l)=>(n(),i(a(s),r({"data-slot":`dialog-close`},c),{default:o(()=>[t(e.$slots,`default`)]),_:3},16))}});export{c as t};

View File

@@ -1 +0,0 @@
import{D as e,G as t,H as n,I as r,S as i,Tt as a,it as o}from"./iconify-DYZHDLa8.js";import{E as s}from"./vue-vendor-DjtlKxRy.js";import{J as c}from"./index-Uji7rFqr.js";import{b as l}from"./Teleport-BIYegdAM.js";import{r as u}from"./button-BuRmTYve.js";import{t as d}from"./useForwardExpose-B0BXtanw.js";import{f}from"./DialogTitle-CMQDEO8n.js";var p=e({__name:`DialogDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`p`}},setup(e){let s=e;d();let c=f();return(e,l)=>(n(),i(a(u),r(s,{id:a(c).descriptionId}),{default:o(()=>[t(e.$slots,`default`)]),_:3},16,[`id`]))}}),m=e({__name:`DialogDescription`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let u=e,d=l(s(u,`class`));return(e,s)=>(n(),i(a(p),r({"data-slot":`dialog-description`},a(d),{class:a(c)(`text-muted-foreground text-sm`,u.class)}),{default:o(()=>[t(e.$slots,`default`)]),_:3},16,[`class`]))}});export{p as n,m as t};

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{D as e,E as t,G as n,H as r,I as i,Ot as a,S as o,Tt as s,gt as c,it as l,k as u}from"./iconify-DYZHDLa8.js";import{E as d}from"./vue-vendor-DjtlKxRy.js";import{J as f}from"./index-Uji7rFqr.js";import{O as p,_ as m,b as h,d as g,g as _,l as v}from"./Teleport-BIYegdAM.js";import{r as y}from"./button-BuRmTYve.js";import{t as b}from"./useForwardExpose-B0BXtanw.js";var[x,S]=p([`MenuCheckboxItem`,`MenuRadioItem`],`MenuItemIndicatorContext`),C=e({__name:`MenuItemIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){let i=x({modelValue:c(!1)});return(e,a)=>(r(),o(s(_),{present:e.forceMount||s(g)(s(i).modelValue.value)||s(i).modelValue.value===!0},{default:l(()=>[t(s(y),{as:e.as,"as-child":e.asChild,"data-state":s(v)(s(i).modelValue.value)},{default:l(()=>[n(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-state`])]),_:3},8,[`present`]))}}),[w,T]=p(`MenuGroup`),E=e({__name:`MenuGroup`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,a=m(void 0,`reka-menu-group`);return T({id:a}),(e,c)=>(r(),o(s(y),i({role:`group`},t,{"aria-labelledby":s(a)}),{default:l(()=>[n(e.$slots,`default`)]),_:3},16,[`aria-labelledby`]))}}),D=e({__name:`MenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`div`}},setup(e){let t=e,a=w({id:``});return(e,c)=>(r(),o(s(y),i(t,{id:s(a).id||void 0}),{default:l(()=>[n(e.$slots,`default`)]),_:3},16,[`id`]))}}),O=e({__name:`MenuSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return(e,a)=>(r(),o(s(y),i(t,{role:`separator`,"aria-orientation":`horizontal`}),{default:l(()=>[n(e.$slots,`default`)]),_:3},16))}}),k=e({__name:`DropdownMenuItemIndicator`,props:{forceMount:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return b(),(e,i)=>(r(),o(s(C),a(u(t)),{default:l(()=>[n(e.$slots,`default`)]),_:3},16))}}),A=e({__name:`DropdownMenuLabel`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return b(),(e,i)=>(r(),o(s(D),a(u(t)),{default:l(()=>[n(e.$slots,`default`)]),_:3},16))}}),j=e({__name:`DropdownMenuSeparator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e;return b(),(e,i)=>(r(),o(s(O),a(u(t)),{default:l(()=>[n(e.$slots,`default`)]),_:3},16))}}),M=e({__name:`DropdownMenuSeparator`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,n=d(t,`class`);return(e,a)=>(r(),o(s(j),i({"data-slot":`dropdown-menu-separator`},s(n),{class:s(f)(`bg-border -mx-1 my-1 h-px`,t.class)}),null,16,[`class`]))}}),N=e({__name:`DropdownMenuLabel`,props:{asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]},inset:{type:Boolean}},setup(e){let t=e,a=h(d(t,`class`,`inset`));return(c,u)=>(r(),o(s(A),i({"data-slot":`dropdown-menu-label`,"data-inset":e.inset?``:void 0},s(a),{class:s(f)(`px-2 py-1.5 text-sm font-medium data-[inset]:pl-8`,t.class)}),{default:l(()=>[n(c.$slots,`default`)]),_:3},16,[`data-inset`,`class`]))}});export{S as a,E as i,M as n,k as r,N as t};

View File

@@ -1 +0,0 @@
import{D as e,E as t,G as n,H as r,I as i,Ot as a,S as o,St as s,Tt as c,b as l,it as u,k as d,x as f}from"./iconify-DYZHDLa8.js";import{t as p}from"./circle-CK69KO4g.js";import{E as m,y as h}from"./vue-vendor-DjtlKxRy.js";import{J as g}from"./index-Uji7rFqr.js";import{O as _,b as v,l as y,x as b,y as x}from"./Teleport-BIYegdAM.js";import{a as S}from"./DropdownMenuTrigger-GJTdpRDr.js";import{t as C}from"./useForwardExpose-B0BXtanw.js";import{a as w,i as T,r as E}from"./DropdownMenuLabel-BHmU9FEw.js";var[D,O]=_(`MenuRadioGroup`),k=e({__name:`MenuRadioGroup`,props:{modelValue:{type:null,required:!1,default:``},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,s=t,l=v(m(i,[`modelValue`])),f=h(i,`modelValue`,s);return O({modelValue:f,onValueChange:e=>{f.value=e}}),(e,t)=>(r(),o(T,a(d(c(l))),{default:u(()=>[n(e.$slots,`default`,{modelValue:c(f)})]),_:3},16))}}),A=e({__name:`MenuRadioItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let a=e,d=t,f=v(m(a,[`value`])),{value:p}=s(a),h=D(),g=l(()=>h.modelValue.value===p?.value);return w({modelValue:g}),(e,t)=>(r(),o(S,i({role:`menuitemradio`},c(f),{"aria-checked":g.value,"data-state":c(y)(g.value),onSelect:t[0]||=async e=>{d(`select`,e),c(h).onValueChange(c(p))}}),{default:u(()=>[n(e.$slots,`default`)]),_:3},16,[`aria-checked`,`data-state`]))}}),j=e({__name:`DropdownMenuRadioGroup`,props:{modelValue:{type:null,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,s=b(t);return C(),(e,t)=>(r(),o(c(k),a(d({...i,...c(s)})),{default:u(()=>[n(e.$slots,`default`)]),_:3},16))}}),M=e({__name:`DropdownMenuRadioItem`,props:{value:{type:null,required:!0},disabled:{type:Boolean,required:!1},textValue:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`select`],setup(e,{emit:t}){let i=x(e,t);return C(),(e,t)=>(r(),o(c(A),a(d(c(i))),{default:u(()=>[n(e.$slots,`default`)]),_:3},16))}}),N=e({__name:`DropdownMenuRadioGroup`,props:{modelValue:{},asChild:{type:Boolean},as:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let a=x(e,t);return(e,t)=>(r(),o(c(j),i({"data-slot":`dropdown-menu-radio-group`},c(a)),{default:u(()=>[n(e.$slots,`default`)]),_:3},16))}}),P={class:`pointer-events-none absolute left-2 flex size-3.5 items-center justify-center`},F=e({__name:`DropdownMenuRadioItem`,props:{value:{},disabled:{type:Boolean},textValue:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`select`],setup(e,{emit:a}){let s=e,l=a,d=x(m(s,`class`),l);return(e,a)=>(r(),o(c(M),i({"data-slot":`dropdown-menu-radio-item`},c(d),{class:c(g)(`focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,s.class)}),{default:u(()=>[f(`span`,P,[t(c(E),null,{default:u(()=>[n(e.$slots,`indicator-icon`,{},()=>[t(c(p),{class:`size-2 fill-current`})])]),_:3})]),n(e.$slots,`default`)]),_:3},16,[`class`]))}});export{N as n,F as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{D as e,Dt as t,H as n,Tt as r,at as i,dt as a,u as o,w as s}from"./iconify-DYZHDLa8.js";import{y as c}from"./vue-vendor-DjtlKxRy.js";import{J as l}from"./index-Uji7rFqr.js";var u=e({__name:`Input`,props:{defaultValue:{},modelValue:{},class:{type:[Boolean,null,String,Object,Array]}},emits:[`update:modelValue`],setup(e,{emit:u}){let d=e,f=c(d,`modelValue`,u,{passive:!0,defaultValue:d.defaultValue});return(e,c)=>i((n(),s(`input`,{"onUpdate:modelValue":c[0]||=e=>a(f)?f.value=e:null,"data-slot":`input`,class:t(r(l)(`file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`,`focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]`,`aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,d.class))},null,2)),[[o,r(f)]])}});export{u as t};

View File

@@ -1 +0,0 @@
import{D as e,G as t,H as n,I as r,S as i,Tt as a,it as o}from"./iconify-DYZHDLa8.js";import{E as s}from"./vue-vendor-DjtlKxRy.js";import{J as c}from"./index-Uji7rFqr.js";import{r as l}from"./button-BuRmTYve.js";import{t as u}from"./useForwardExpose-B0BXtanw.js";var d=e({__name:`Label`,props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`label`}},setup(e){let s=e;return u(),(e,c)=>(n(),i(a(l),r(s,{onMousedown:c[0]||=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()}}),{default:o(()=>[t(e.$slots,`default`)]),_:3},16))}}),f=e({__name:`Label`,props:{for:{},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let l=e,u=s(l,`class`);return(e,s)=>(n(),i(a(d),r({"data-slot":`label`},a(u),{class:a(c)(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,l.class)}),{default:o(()=>[t(e.$slots,`default`)]),_:3},16,[`class`]))}});export{f as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{D as e,E as t,G as n,H as r,S as i,St as a,Tt as o,gt as s,it as c}from"./iconify-DYZHDLa8.js";import{y as l}from"./vue-vendor-DjtlKxRy.js";import{D as u,O as d}from"./Teleport-BIYegdAM.js";import{r as f}from"./button-BuRmTYve.js";import{o as p,u as m}from"./PopperContent-BqlvlxQe.js";var h=`rovingFocusGroup.onEntryFocus`,g={bubbles:!1,cancelable:!0},_={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function v(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}function y(e,t,n){let r=v(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return _[r]}function b(e,t=!1){let n=u();for(let r of e)if(r===n||(r.focus({preventScroll:t}),u()!==n))return}function x(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var[S,C]=d(`RovingFocusGroup`),w=e({__name:`RovingFocusGroup`,props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`entryFocus`,`update:currentTabStopId`],setup(e,{expose:u,emit:d}){let _=e,v=d,{loop:y,orientation:x,dir:S}=a(_),w=m(S),T=l(_,`currentTabStopId`,v,{defaultValue:_.defaultCurrentTabStopId,passive:_.currentTabStopId===void 0}),E=s(!1),D=s(!1),O=s(0),{getItems:k,CollectionSlot:A}=p({isProvider:!0});function j(e){let t=!D.value;if(e.currentTarget&&e.target===e.currentTarget&&t&&!E.value){let t=new CustomEvent(h,g);if(e.currentTarget.dispatchEvent(t),v(`entryFocus`,t),!t.defaultPrevented){let e=k().map(e=>e.ref).filter(e=>e.dataset.disabled!==``);b([e.find(e=>e.getAttribute(`data-active`)===``),e.find(e=>e.getAttribute(`data-highlighted`)===``),e.find(e=>e.id===T.value),...e].filter(Boolean),_.preventScrollOnEntryFocus)}}D.value=!1}function M(){setTimeout(()=>{D.value=!1},1)}return u({getItems:k}),C({loop:y,dir:w,orientation:x,currentTabStopId:T,onItemFocus:e=>{T.value=e},onItemShiftTab:()=>{E.value=!0},onFocusableItemAdd:()=>{O.value++},onFocusableItemRemove:()=>{O.value--}}),(e,a)=>(r(),i(o(A),null,{default:c(()=>[t(o(f),{tabindex:E.value||O.value===0?-1:0,"data-orientation":o(x),as:e.as,"as-child":e.asChild,dir:o(w),style:{outline:`none`},onMousedown:a[0]||=e=>D.value=!0,onMouseup:M,onFocus:j,onBlur:a[1]||=e=>E.value=!1},{default:c(()=>[n(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`as`,`as-child`,`dir`])]),_:3}))}});export{x as a,y as i,S as n,b as r,w as t};

View File

@@ -1 +0,0 @@
import{B as e,D as t,E as n,G as r,H as i,L as a,S as o,Tt as s,b as c,it as l,z as u}from"./iconify-DYZHDLa8.js";import{_ as d}from"./Teleport-BIYegdAM.js";import{r as f}from"./button-BuRmTYve.js";import{o as p}from"./PopperContent-BqlvlxQe.js";import{a as m,i as h,n as g,r as _}from"./RovingFocusGroup-DF8fLFe7.js";var v=t({__name:`RovingFocusItem`,props:{tabStopId:{type:String,required:!1},focusable:{type:Boolean,required:!1,default:!0},active:{type:Boolean,required:!1},allowShiftKey:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(t){let v=t,y=g(),b=d(),x=c(()=>v.tabStopId||b),S=c(()=>y.currentTabStopId.value===x.value),{getItems:C,CollectionItem:w}=p();u(()=>{v.focusable&&y.onFocusableItemAdd()}),e(()=>{v.focusable&&y.onFocusableItemRemove()});function T(e){if(e.key===`Tab`&&e.shiftKey){y.onItemShiftTab();return}if(e.target!==e.currentTarget)return;let t=h(e,y.orientation.value,y.dir.value);if(t!==void 0){if(e.metaKey||e.ctrlKey||e.altKey||!v.allowShiftKey&&e.shiftKey)return;e.preventDefault();let n=[...C().map(e=>e.ref).filter(e=>e.dataset.disabled!==``)];if(t===`last`)n.reverse();else if(t===`prev`||t===`next`){t===`prev`&&n.reverse();let r=n.indexOf(e.currentTarget);n=y.loop.value?m(n,r+1):n.slice(r+1)}a(()=>_(n))}}return(e,t)=>(i(),o(s(w),null,{default:l(()=>[n(s(f),{tabindex:S.value?0:-1,"data-orientation":s(y).orientation.value,"data-active":e.active?``:void 0,"data-disabled":e.focusable?void 0:``,as:e.as,"as-child":e.asChild,onMousedown:t[0]||=t=>{e.focusable?s(y).onItemFocus(x.value):t.preventDefault()},onFocus:t[1]||=e=>s(y).onItemFocus(x.value),onKeydown:T},{default:l(()=>[r(e.$slots,`default`)]),_:3},8,[`tabindex`,`data-orientation`,`data-active`,`data-disabled`,`as`,`as-child`])]),_:3}))}});export{v as t};

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{D as e,G as t,H as n,I as r,Ot as i,S as a,Tt as o,b as s,it as c,k as l}from"./iconify-DYZHDLa8.js";import{E as u}from"./vue-vendor-DjtlKxRy.js";import{J as d}from"./index-Uji7rFqr.js";import{r as f}from"./button-BuRmTYve.js";var p=e({__name:`BaseSeparator`,props:{orientation:{type:String,required:!1,default:`horizontal`},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let i=e,l=[`horizontal`,`vertical`];function u(e){return l.includes(e)}let d=s(()=>u(i.orientation)?i.orientation:`horizontal`),p=s(()=>d.value===`vertical`?i.orientation:void 0),m=s(()=>i.decorative?{role:`none`}:{"aria-orientation":p.value,role:`separator`});return(e,i)=>(n(),a(o(f),r({as:e.as,"as-child":e.asChild,"data-orientation":d.value},m.value),{default:c(()=>[t(e.$slots,`default`)]),_:3},16,[`as`,`as-child`,`data-orientation`]))}}),m=e({__name:`Separator`,props:{orientation:{type:String,required:!1,default:`horizontal`},decorative:{type:Boolean,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let r=e;return(e,o)=>(n(),a(p,i(l(r)),{default:c(()=>[t(e.$slots,`default`)]),_:3},16))}}),h=e({__name:`Separator`,props:{orientation:{default:`horizontal`},decorative:{type:Boolean,default:!0},asChild:{type:Boolean},as:{},class:{type:[Boolean,null,String,Object,Array]}},setup(e){let t=e,i=u(t,`class`);return(e,s)=>(n(),a(o(m),r({"data-slot":`separator`},o(i),{class:o(d)(`bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,t.class)}),null,16,[`class`]))}});export{m as n,h as t};

View File

@@ -1 +0,0 @@
import{D as e,Dt as t,G as n,H as r,Tt as i,w as a,x as o}from"./iconify-DYZHDLa8.js";import{J as s}from"./index-Uji7rFqr.js";var c={"data-slot":`table-container`,class:`relative w-full overflow-auto`},l=e({__name:`Table`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let l=e;return(e,u)=>(r(),a(`div`,c,[o(`table`,{"data-slot":`table`,class:t(i(s)(`w-full caption-bottom text-sm`,l.class))},[n(e.$slots,`default`)],2)]))}}),u=e({__name:`TableBody`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`tbody`,{"data-slot":`table-body`,class:t(i(s)(`[&_tr:last-child]:border-0`,o.class))},[n(e.$slots,`default`)],2))}}),d=e({__name:`TableCell`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`td`,{"data-slot":`table-cell`,class:t(i(s)(`p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,o.class))},[n(e.$slots,`default`)],2))}}),f=e({__name:`TableHeader`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`thead`,{"data-slot":`table-header`,class:t(i(s)(`[&_tr]:border-b`,o.class))},[n(e.$slots,`default`)],2))}}),p=e({__name:`TableRow`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`tr`,{"data-slot":`table-row`,class:t(i(s)(`hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors`,o.class))},[n(e.$slots,`default`)],2))}}),m=e({__name:`TableHead`,props:{class:{type:[Boolean,null,String,Object,Array]}},setup(e){let o=e;return(e,c)=>(r(),a(`th`,{"data-slot":`table-head`,class:t(i(s)(`text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,o.class))},[n(e.$slots,`default`)],2))}});export{u as a,d as i,p as n,l as o,f as r,m as t};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{Ct as e,D as t,G as n,H as r,S as i,Tt as a,b as o,it as s}from"./iconify-DYZHDLa8.js";import{u as c}from"./vue-vendor-DjtlKxRy.js";import{r as l}from"./button-BuRmTYve.js";function u(e){return typeof e==`string`?`'${e}'`:new d().serialize(e)}var d=function(){class e{#e=new Map;compare(e,t){let n=typeof e,r=typeof t;return n===`string`&&r===`string`?e.localeCompare(t):n===`number`&&r===`number`?e-t:String.prototype.localeCompare.call(this.serialize(e,!0),this.serialize(t,!0))}serialize(e,t){if(e===null)return`null`;switch(typeof e){case`string`:return t?e:`'${e}'`;case`bigint`:return`${e}n`;case`object`:return this.$object(e);case`function`:return this.$function(e)}return String(e)}serializeObject(e){let t=Object.prototype.toString.call(e);if(t!==`[object Object]`)return this.serializeBuiltInType(t.length<10?`unknown:${t}`:t.slice(8,-1),e);let n=e.constructor,r=n===Object||n===void 0?``:n.name;if(r!==``&&globalThis[r]===n)return this.serializeBuiltInType(r,e);if(typeof e.toJSON==`function`){let t=e.toJSON();return r+(typeof t==`object`&&t?this.$object(t):`(${this.serialize(t)})`)}return this.serializeObjectEntries(r,Object.entries(e))}serializeBuiltInType(e,t){let n=this[`$`+e];if(n)return n.call(this,t);if(typeof t?.entries==`function`)return this.serializeObjectEntries(e,t.entries());throw Error(`Cannot serialize ${e}`)}serializeObjectEntries(e,t){let n=Array.from(t).sort((e,t)=>this.compare(e[0],t[0])),r=`${e}{`;for(let e=0;e<n.length;e++){let[t,i]=n[e];r+=`${this.serialize(t,!0)}:${this.serialize(i)}`,e<n.length-1&&(r+=`,`)}return r+`}`}$object(e){let t=this.#e.get(e);return t===void 0&&(this.#e.set(e,`#${this.#e.size}`),t=this.serializeObject(e),this.#e.set(e,t)),t}$function(e){let t=Function.prototype.toString.call(e);return t.slice(-15)===`[native code] }`?`${e.name||``}()[native]`:`${e.name}(${e.length})${t.replace(/\s*\n\s*/g,``)}`}$Array(e){let t=`[`;for(let n=0;n<e.length;n++)t+=this.serialize(e[n]),n<e.length-1&&(t+=`,`);return t+`]`}$Date(e){try{return`Date(${e.toISOString()})`}catch{return`Date(null)`}}$ArrayBuffer(e){return`ArrayBuffer[${new Uint8Array(e).join(`,`)}]`}$Set(e){return`Set${this.$Array(Array.from(e).sort((e,t)=>this.compare(e,t)))}`}$Map(e){return this.serializeObjectEntries(`Map`,e.entries())}}for(let t of[`Error`,`RegExp`,`URL`])e.prototype[`$`+t]=function(e){return`${t}(${e})`};for(let t of[`Int8Array`,`Uint8Array`,`Uint8ClampedArray`,`Int16Array`,`Uint16Array`,`Int32Array`,`Uint32Array`,`Float32Array`,`Float64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`,`)}]`};for(let t of[`BigInt64Array`,`BigUint64Array`])e.prototype[`$`+t]=function(e){return`${t}[${e.join(`n,`)}${e.length>0?`n`:``}]`};return e}();function f(e,t){return e===t||u(e)===u(t)}function p(t){return o(()=>e(t)?!!c(t)?.closest(`form`):!0)}var m=t({__name:`VisuallyHidden`,props:{feature:{type:String,required:!1,default:`focusable`},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`span`}},setup(e){return(e,t)=>(r(),i(a(l),{as:e.as,"as-child":e.asChild,"aria-hidden":e.feature===`focusable`?`true`:void 0,"data-hidden":e.feature===`fully-hidden`?``:void 0,tabindex:e.feature===`fully-hidden`?`-1`:void 0,style:{position:`absolute`,border:0,width:`1px`,height:`1px`,padding:0,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,clipPath:`inset(50%)`,whiteSpace:`nowrap`,wordWrap:`normal`,top:`-1px`,left:`-1px`}},{default:s(()=>[n(e.$slots,`default`)]),_:3},8,[`as`,`as-child`,`aria-hidden`,`data-hidden`,`tabindex`]))}});export{p as n,f as r,m as t};

View File

@@ -1 +0,0 @@
import{C as e,D as t,H as n,I as r,S as i,W as a,b as o,et as s,h as c,w as l}from"./iconify-DYZHDLa8.js";import{t as u}from"./VisuallyHidden-CeN_p2Md.js";import{s as d}from"./PopperContent-BqlvlxQe.js";var f=t({inheritAttrs:!1,__name:`VisuallyHiddenInputBubble`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(e){let t=e,{primitiveElement:a,currentElement:c}=d();return s(o(()=>t.checked??t.value),(e,t)=>{if(!c.value)return;let n=c.value,r=window.HTMLInputElement.prototype,i=Object.getOwnPropertyDescriptor(r,`value`).set;if(i&&e!==t){let t=new Event(`input`,{bubbles:!0}),r=new Event(`change`,{bubbles:!0});i.call(n,e),n.dispatchEvent(t),n.dispatchEvent(r)}}),(e,o)=>(n(),i(u,r({ref_key:`primitiveElement`,ref:a},{...t,...e.$attrs},{as:`input`}),null,16))}}),p=t({inheritAttrs:!1,__name:`VisuallyHiddenInput`,props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:`fully-hidden`}},setup(t){let s=t,u=o(()=>typeof s.value==`object`&&Array.isArray(s.value)&&s.value.length===0&&s.required),d=o(()=>typeof s.value==`string`||typeof s.value==`number`||typeof s.value==`boolean`||s.value===null||s.value===void 0?[{name:s.name,value:s.value}]:typeof s.value==`object`&&Array.isArray(s.value)?s.value.flatMap((e,t)=>typeof e==`object`?Object.entries(e).map(([e,n])=>({name:`${s.name}[${t}][${e}]`,value:n})):{name:`${s.name}[${t}]`,value:e}):s.value!==null&&typeof s.value==`object`&&!Array.isArray(s.value)?Object.entries(s.value).map(([e,t])=>({name:`${s.name}[${e}]`,value:t})):[]);return(t,o)=>(n(),l(c,null,[e(` We render single input if it's required `),u.value?(n(),i(f,r({key:t.name},{...s,...t.$attrs},{name:t.name,value:t.value}),null,16,[`name`,`value`])):(n(!0),l(c,{key:1},a(d.value,e=>(n(),i(f,r({key:e.name},{ref_for:!0},{...s,...t.$attrs},{name:e.name,value:e.value}),null,16,[`name`,`value`]))),128))],2112))}});export{p as t};

View File

@@ -1 +0,0 @@
import{At as e,D as t,E as n,G as r,H as i,T as a,it as o,w as s,x as c}from"./iconify-DYZHDLa8.js";import{n as l}from"./button-BuRmTYve.js";import{t as u}from"./route-block-DB3S2hJK.js";var d={class:`max-w-2xl mx-auto text-center`},f={class:`font-bold text-8xl`},p={class:`mt-4 text-2xl font-bold`},m={class:`text-stone-400`},h={class:`mt-8`},g={class:`flex justify-center gap-2`},_=t({__name:`custom-error`,props:{code:{},subtitle:{},error:{}},setup(t){return(u,_)=>{let v=l;return i(),s(`div`,d,[c(`h1`,f,e(t.code),1),c(`h2`,p,e(t.subtitle),1),c(`p`,m,e(t.error),1),c(`footer`,h,[r(u.$slots,`default`,{},()=>[c(`div`,g,[n(v,{variant:`outline`,onClick:_[0]||=e=>u.$router.back()},{default:o(()=>[..._[2]||=[a(` Go Back `,-1)]]),_:1}),n(v,{onClick:_[1]||=e=>u.$router.push(`/`)},{default:o(()=>[..._[3]||=[a(` Back to Home `,-1)]]),_:1})])])])])}}}),v={class:`flex items-center justify-center h-screen`},y=t({__name:`[...path]`,setup(e){return(e,t)=>(i(),s(`div`,v,[n(_,{code:404,subtitle:`Page Not Found`,error:`The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.`})]))}});typeof u==`function`&&u(y);var b=y;export{b as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{H as e,K as t,S as n}from"./iconify-DYZHDLa8.js";import{K as r}from"./index-Uji7rFqr.js";import{t as i}from"./route-block-DB3S2hJK.js";var a={};function o(r,i){let a=t(`router-view`);return e(),n(a)}typeof i==`function`&&i(a);var s=r(a,[[`render`,o]]);export{s as default};

View File

@@ -1 +0,0 @@
import{H as e,K as t,S as n}from"./iconify-DYZHDLa8.js";import{K as r}from"./index-Uji7rFqr.js";var i={};function a(r,i){let a=t(`router-view`);return e(),n(a)}var o=r(i,[[`render`,a]]);export{o as default};

View File

@@ -1 +0,0 @@
import{A as e,D as t,Dt as n,G as r,H as i,I as a,S as o,Tt as s,h as c,it as l,m as u,y as d}from"./iconify-DYZHDLa8.js";import{t as f}from"./ui-vendor-Za4p7XTd.js";import{J as p}from"./index-Uji7rFqr.js";function m(e){return e?e.flatMap(e=>e.type===c?m(e.children):[e]):[]}var h=t({name:`PrimitiveSlot`,inheritAttrs:!1,setup(e,{attrs:t,slots:n}){return()=>{if(!n.default)return null;let e=m(n.default()),r=e.findIndex(e=>e.type!==u);if(r===-1)return e;let i=e[r];delete i.props?.ref;let o=i.props?a(t,i.props):t,s=d({...i,props:{}},o);return e.length===1?s:(e[r]=s,e)}}}),g=[`area`,`img`,`input`],_=t({name:`Primitive`,inheritAttrs:!1,props:{asChild:{type:Boolean,default:!1},as:{type:[String,Object],default:`div`}},setup(t,{attrs:n,slots:r}){let i=t.asChild?`template`:t.as;return typeof i==`string`&&g.includes(i)?()=>e(i,n):i===`template`?()=>e(h,n,{default:r.default}):()=>e(t.as,n,{default:r.default})}}),v=t({__name:`Button`,props:{variant:{},size:{},class:{type:[Boolean,null,String,Object,Array]},asChild:{type:Boolean},as:{default:`button`}},setup(e){let t=e;return(a,c)=>(i(),o(s(_),{"data-slot":`button`,as:e.as,"as-child":e.asChild,class:n(s(p)(s(y)({variant:e.variant,size:e.size}),t.class))},{default:l(()=>[r(a.$slots,`default`)]),_:3},8,[`as`,`as-child`,`class`]))}}),y=f(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary/90`,destructive:`bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60`,outline:`border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-9 px-4 py-2 has-[>svg]:px-3`,sm:`h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5`,lg:`h-10 rounded-md px-6 has-[>svg]:px-4`,icon:`size-9`,"icon-sm":`size-8`,"icon-lg":`size-10`}},defaultVariants:{variant:`default`,size:`default`}});export{m as a,h as i,v as n,_ as r,y as t};

View File

@@ -1 +0,0 @@
import{t as e}from"./createLucideIcon-KbkxXQD8.js";var t=e(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]);export{t};

View File

@@ -1 +0,0 @@
import{t as e}from"./createLucideIcon-KbkxXQD8.js";var t=e(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]);export{t};

View File

@@ -1 +0,0 @@
import{t as e}from"./createLucideIcon-KbkxXQD8.js";var t=e(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),n=e(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),r=e(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),i=e(`circle-plus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]);export{t as i,r as n,n as r,i as t};

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
import{A as e}from"./iconify-DYZHDLa8.js";var t=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},n=e=>e===``,r=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),i=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),o=e=>{let t=a(e);return t.charAt(0).toUpperCase()+t.slice(1)},s={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},c=({name:a,iconNode:c,absoluteStrokeWidth:l,"absolute-stroke-width":u,strokeWidth:d,"stroke-width":f,size:p=s.width,color:m=s.stroke,...h},{slots:g})=>e(`svg`,{...s,...h,width:p,height:p,stroke:m,"stroke-width":n(l)||n(u)||l===!0||u===!0?Number(d||f||s[`stroke-width`])*24/Number(p):d||f||s[`stroke-width`],class:r(`lucide`,h.class,...a?[`lucide-${i(o(a))}-icon`,`lucide-${i(a)}`]:[`lucide-icon`]),...!g.default&&!t(h)&&{"aria-hidden":`true`}},[...c.map(t=>e(...t)),...g.default?[g.default()]:[]]),l=(t,n)=>(r,{slots:i,attrs:a})=>e(c,{...a,...r,iconNode:n,name:t},i);export{l as t};

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More