@orbe-agro/client-core 5.6.200 → 5.6.202
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@ecme/assets/styles/app.css +82 -5
- package/dist/@ecme/assets/styles/tailwind/index.css +89 -6
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js +3 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js.map +1 -1
- package/dist/@ecme/components/template/Footer.js +1 -1
- package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.js +100 -0
- package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/ResizeHandles.js +37 -0
- package/dist/@ecme/components/template/OrbeAiWidget/ResizeHandles.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/index.js +5 -0
- package/dist/@ecme/components/template/OrbeAiWidget/index.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/useResizablePanel.js +77 -0
- package/dist/@ecme/components/template/OrbeAiWidget/useResizablePanel.js.map +1 -0
- package/dist/@ecme/components/view/ChatBox/ChatBox.js +7 -1
- package/dist/@ecme/components/view/ChatBox/ChatBox.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/MessageList.js +7 -4
- package/dist/@ecme/components/view/ChatBox/components/MessageList.js.map +1 -1
- package/dist/@ecme/configs/navigation.config/concepts.navigation.config.js +0 -16
- package/dist/@ecme/configs/navigation.config/concepts.navigation.config.js.map +1 -1
- package/dist/@ecme/configs/routes.config/conceptsRoute.js +0 -9
- package/dist/@ecme/configs/routes.config/conceptsRoute.js.map +1 -1
- package/dist/@ecme/index.js +3 -1
- package/dist/@ecme/services/AiService.js +24 -4
- package/dist/@ecme/services/AiService.js.map +1 -1
- package/dist/@ecme/services/axios/AxiosBase.js +30 -24
- package/dist/@ecme/services/axios/AxiosBase.js.map +1 -1
- package/dist/@ecme/services/index.js +3 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.js +23 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatLandingView.js +16 -16
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatLandingView.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js +7 -4
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ModelSelect.js +48 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ModelSelect.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js +6 -3
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/store/aiModelStore.js +15 -0
- package/dist/@ecme/views/concepts/ai/Chat/store/aiModelStore.js.map +1 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.d.ts.map +1 -1
- package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.d.ts +3 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/ResizeHandles.d.ts +9 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/ResizeHandles.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/index.d.ts +2 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/index.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/useResizablePanel.d.ts +19 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/useResizablePanel.d.ts.map +1 -0
- package/dist/@types/@ecme/components/view/ChatBox/ChatBox.d.ts.map +1 -1
- package/dist/@types/@ecme/components/view/ChatBox/components/MessageList.d.ts +3 -0
- package/dist/@types/@ecme/components/view/ChatBox/components/MessageList.d.ts.map +1 -1
- package/dist/@types/@ecme/configs/navigation.config/concepts.navigation.config.d.ts.map +1 -1
- package/dist/@types/@ecme/configs/routes.config/conceptsRoute.d.ts.map +1 -1
- package/dist/@types/@ecme/services/AiService.d.ts +12 -0
- package/dist/@types/@ecme/services/AiService.d.ts.map +1 -1
- package/dist/@types/@ecme/services/axios/AxiosBase.d.ts +12 -0
- package/dist/@types/@ecme/services/axios/AxiosBase.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.d.ts +7 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatView.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ModelSelect.d.ts +8 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ModelSelect.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useChatSend.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/store/aiModelStore.d.ts +25 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/store/aiModelStore.d.ts.map +1 -0
- package/dist/@types/base/components/forms/GenericForms/GenericArrayFormSection.d.ts +2 -2
- package/dist/@types/base/components/forms/GenericForms/GenericArrayFormSection.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/ticket/cadastros.submenu.d.ts.map +1 -1
- package/dist/base/assets/styles/init.css +88 -5
- package/dist/base/components/forms/GenericForms/GenericArrayFormSection.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/ticket/cadastros.submenu.js +3 -1
- package/dist/base/configs/navigation.config/submenu/ticket/cadastros.submenu.js.map +1 -1
- package/lib/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.tsx +2 -1
- package/lib/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.tsx +125 -0
- package/lib/@ecme/components/template/OrbeAiWidget/ResizeHandles.tsx +47 -0
- package/lib/@ecme/components/template/OrbeAiWidget/index.ts +1 -0
- package/lib/@ecme/components/template/OrbeAiWidget/useResizablePanel.ts +108 -0
- package/lib/@ecme/components/view/ChatBox/ChatBox.tsx +6 -0
- package/lib/@ecme/components/view/ChatBox/components/MessageList.tsx +21 -7
- package/lib/@ecme/configs/navigation.config/concepts.navigation.config.ts +0 -16
- package/lib/@ecme/configs/routes.config/conceptsRoute.ts +0 -9
- package/lib/@ecme/services/AiService.ts +40 -0
- package/lib/@ecme/services/axios/AxiosBase.ts +45 -24
- package/lib/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.tsx +24 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatLandingView.tsx +17 -17
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatView.tsx +11 -4
- package/lib/@ecme/views/concepts/ai/Chat/components/ModelSelect.tsx +66 -0
- package/lib/@ecme/views/concepts/ai/Chat/hooks/useChatSend.ts +5 -3
- package/lib/@ecme/views/concepts/ai/Chat/store/aiModelStore.ts +23 -0
- package/lib/base/components/forms/GenericForms/GenericArrayFormSection.tsx +1 -1
- package/lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts +2 -0
- package/package.json +1 -1
|
@@ -5106,6 +5106,9 @@ video {
|
|
|
5106
5106
|
.bottom-4{
|
|
5107
5107
|
bottom: 1rem;
|
|
5108
5108
|
}
|
|
5109
|
+
.bottom-6{
|
|
5110
|
+
bottom: 1.5rem;
|
|
5111
|
+
}
|
|
5109
5112
|
.bottom-full{
|
|
5110
5113
|
bottom: 100%;
|
|
5111
5114
|
}
|
|
@@ -5127,6 +5130,9 @@ video {
|
|
|
5127
5130
|
.right-4{
|
|
5128
5131
|
right: 1rem;
|
|
5129
5132
|
}
|
|
5133
|
+
.right-6{
|
|
5134
|
+
right: 1.5rem;
|
|
5135
|
+
}
|
|
5130
5136
|
.top-0{
|
|
5131
5137
|
top: 0px;
|
|
5132
5138
|
}
|
|
@@ -5148,9 +5154,15 @@ video {
|
|
|
5148
5154
|
.z-10{
|
|
5149
5155
|
z-index: 10;
|
|
5150
5156
|
}
|
|
5157
|
+
.z-20{
|
|
5158
|
+
z-index: 20;
|
|
5159
|
+
}
|
|
5151
5160
|
.z-30{
|
|
5152
5161
|
z-index: 30;
|
|
5153
5162
|
}
|
|
5163
|
+
.z-40{
|
|
5164
|
+
z-index: 40;
|
|
5165
|
+
}
|
|
5154
5166
|
.z-50{
|
|
5155
5167
|
z-index: 50;
|
|
5156
5168
|
}
|
|
@@ -5631,6 +5643,9 @@ video {
|
|
|
5631
5643
|
.max-h-full{
|
|
5632
5644
|
max-height: 100%;
|
|
5633
5645
|
}
|
|
5646
|
+
.min-h-0{
|
|
5647
|
+
min-height: 0px;
|
|
5648
|
+
}
|
|
5634
5649
|
.min-h-10{
|
|
5635
5650
|
min-height: 2.5rem;
|
|
5636
5651
|
}
|
|
@@ -5640,8 +5655,8 @@ video {
|
|
|
5640
5655
|
.min-h-14{
|
|
5641
5656
|
min-height: 3.5rem;
|
|
5642
5657
|
}
|
|
5643
|
-
.min-h-
|
|
5644
|
-
min-height:
|
|
5658
|
+
.min-h-28{
|
|
5659
|
+
min-height: 7rem;
|
|
5645
5660
|
}
|
|
5646
5661
|
.min-h-6{
|
|
5647
5662
|
min-height: 1.5rem;
|
|
@@ -5689,6 +5704,9 @@ video {
|
|
|
5689
5704
|
.w-1{
|
|
5690
5705
|
width: 0.25rem;
|
|
5691
5706
|
}
|
|
5707
|
+
.w-1\.5{
|
|
5708
|
+
width: 0.375rem;
|
|
5709
|
+
}
|
|
5692
5710
|
.w-1\/2{
|
|
5693
5711
|
width: 50%;
|
|
5694
5712
|
}
|
|
@@ -5936,6 +5954,9 @@ video {
|
|
|
5936
5954
|
.max-w-\[900px\]{
|
|
5937
5955
|
max-width: 900px;
|
|
5938
5956
|
}
|
|
5957
|
+
.max-w-\[9rem\]{
|
|
5958
|
+
max-width: 9rem;
|
|
5959
|
+
}
|
|
5939
5960
|
.max-w-full{
|
|
5940
5961
|
max-width: 100%;
|
|
5941
5962
|
}
|
|
@@ -6010,9 +6031,21 @@ video {
|
|
|
6010
6031
|
.cursor-default{
|
|
6011
6032
|
cursor: default;
|
|
6012
6033
|
}
|
|
6034
|
+
.cursor-ew-resize{
|
|
6035
|
+
cursor: ew-resize;
|
|
6036
|
+
}
|
|
6037
|
+
.cursor-nesw-resize{
|
|
6038
|
+
cursor: nesw-resize;
|
|
6039
|
+
}
|
|
6013
6040
|
.cursor-not-allowed{
|
|
6014
6041
|
cursor: not-allowed;
|
|
6015
6042
|
}
|
|
6043
|
+
.cursor-ns-resize{
|
|
6044
|
+
cursor: ns-resize;
|
|
6045
|
+
}
|
|
6046
|
+
.cursor-nwse-resize{
|
|
6047
|
+
cursor: nwse-resize;
|
|
6048
|
+
}
|
|
6016
6049
|
.cursor-pointer{
|
|
6017
6050
|
cursor: pointer;
|
|
6018
6051
|
}
|
|
@@ -7455,6 +7488,12 @@ video {
|
|
|
7455
7488
|
.ease-out{
|
|
7456
7489
|
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
|
|
7457
7490
|
}
|
|
7491
|
+
.\[animation-delay\:-0\.15s\]{
|
|
7492
|
+
animation-delay: -0.15s;
|
|
7493
|
+
}
|
|
7494
|
+
.\[animation-delay\:-0\.3s\]{
|
|
7495
|
+
animation-delay: -0.3s;
|
|
7496
|
+
}
|
|
7458
7497
|
.\[transform\:translateZ\(0\)\]{
|
|
7459
7498
|
transform: translateZ(0);
|
|
7460
7499
|
}
|
|
@@ -7588,6 +7627,9 @@ video {
|
|
|
7588
7627
|
.hover\:bg-primary:hover{
|
|
7589
7628
|
background-color: var(--primary);
|
|
7590
7629
|
}
|
|
7630
|
+
.hover\:bg-primary-deep:hover{
|
|
7631
|
+
background-color: var(--primary-deep);
|
|
7632
|
+
}
|
|
7591
7633
|
.hover\:bg-primary-mild:hover{
|
|
7592
7634
|
background-color: var(--primary-mild);
|
|
7593
7635
|
}
|
|
@@ -7603,6 +7645,9 @@ video {
|
|
|
7603
7645
|
.hover\:text-gray-300:hover{
|
|
7604
7646
|
color: var(--gray-300);
|
|
7605
7647
|
}
|
|
7648
|
+
.hover\:text-gray-700:hover{
|
|
7649
|
+
color: var(--gray-700);
|
|
7650
|
+
}
|
|
7606
7651
|
.hover\:text-gray-800:hover{
|
|
7607
7652
|
color: var(--gray-800);
|
|
7608
7653
|
}
|
|
@@ -7702,6 +7747,17 @@ video {
|
|
|
7702
7747
|
outline: 2px solid transparent;
|
|
7703
7748
|
outline-offset: 2px;
|
|
7704
7749
|
}
|
|
7750
|
+
.focus-visible\:ring-2:focus-visible{
|
|
7751
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
7752
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
7753
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
7754
|
+
}
|
|
7755
|
+
.focus-visible\:ring-primary:focus-visible{
|
|
7756
|
+
--tw-ring-color: var(--primary);
|
|
7757
|
+
}
|
|
7758
|
+
.focus-visible\:ring-offset-2:focus-visible{
|
|
7759
|
+
--tw-ring-offset-width: 2px;
|
|
7760
|
+
}
|
|
7705
7761
|
.active\:bg-gray-100:active{
|
|
7706
7762
|
background-color: var(--gray-100);
|
|
7707
7763
|
}
|
|
@@ -7793,6 +7849,27 @@ video {
|
|
|
7793
7849
|
.motion-safe\:animate-\[bounce_1s_ease-in-out_infinite\]{
|
|
7794
7850
|
animation: bounce 1s ease-in-out infinite;
|
|
7795
7851
|
}
|
|
7852
|
+
@keyframes bounce{
|
|
7853
|
+
0%, 100%{
|
|
7854
|
+
transform: translateY(-25%);
|
|
7855
|
+
animation-timing-function: cubic-bezier(0.8,0,1,1);
|
|
7856
|
+
}
|
|
7857
|
+
50%{
|
|
7858
|
+
transform: none;
|
|
7859
|
+
animation-timing-function: cubic-bezier(0,0,0.2,1);
|
|
7860
|
+
}
|
|
7861
|
+
}
|
|
7862
|
+
.motion-safe\:animate-bounce{
|
|
7863
|
+
animation: bounce 1s infinite;
|
|
7864
|
+
}
|
|
7865
|
+
@keyframes pulse{
|
|
7866
|
+
50%{
|
|
7867
|
+
opacity: .5;
|
|
7868
|
+
}
|
|
7869
|
+
}
|
|
7870
|
+
.motion-safe\:animate-pulse{
|
|
7871
|
+
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
7872
|
+
}
|
|
7796
7873
|
}
|
|
7797
7874
|
.dark\:border:is(.dark *){
|
|
7798
7875
|
border-width: 1px;
|
|
@@ -8149,6 +8226,9 @@ video {
|
|
|
8149
8226
|
.dark\:hover\:text-gray-100:hover:is(.dark *){
|
|
8150
8227
|
color: var(--gray-100);
|
|
8151
8228
|
}
|
|
8229
|
+
.dark\:hover\:text-gray-200:hover:is(.dark *){
|
|
8230
|
+
color: var(--gray-200);
|
|
8231
|
+
}
|
|
8152
8232
|
.dark\:hover\:text-white:hover:is(.dark *){
|
|
8153
8233
|
--tw-text-opacity: 1;
|
|
8154
8234
|
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
|
@@ -8529,9 +8609,6 @@ video {
|
|
|
8529
8609
|
.\32xl\:grid{
|
|
8530
8610
|
display: grid;
|
|
8531
8611
|
}
|
|
8532
|
-
.\32xl\:min-h-60{
|
|
8533
|
-
min-height: 15rem;
|
|
8534
|
-
}
|
|
8535
8612
|
.\32xl\:w-\[500px\]{
|
|
8536
8613
|
width: 500px;
|
|
8537
8614
|
}
|
|
@@ -1183,6 +1183,9 @@ video {
|
|
|
1183
1183
|
.bottom-4 {
|
|
1184
1184
|
bottom: 1rem;
|
|
1185
1185
|
}
|
|
1186
|
+
.bottom-6 {
|
|
1187
|
+
bottom: 1.5rem;
|
|
1188
|
+
}
|
|
1186
1189
|
.bottom-full {
|
|
1187
1190
|
bottom: 100%;
|
|
1188
1191
|
}
|
|
@@ -1204,6 +1207,9 @@ video {
|
|
|
1204
1207
|
.right-4 {
|
|
1205
1208
|
right: 1rem;
|
|
1206
1209
|
}
|
|
1210
|
+
.right-6 {
|
|
1211
|
+
right: 1.5rem;
|
|
1212
|
+
}
|
|
1207
1213
|
.top-0 {
|
|
1208
1214
|
top: 0px;
|
|
1209
1215
|
}
|
|
@@ -1225,9 +1231,15 @@ video {
|
|
|
1225
1231
|
.z-10 {
|
|
1226
1232
|
z-index: 10;
|
|
1227
1233
|
}
|
|
1234
|
+
.z-20 {
|
|
1235
|
+
z-index: 20;
|
|
1236
|
+
}
|
|
1228
1237
|
.z-30 {
|
|
1229
1238
|
z-index: 30;
|
|
1230
1239
|
}
|
|
1240
|
+
.z-40 {
|
|
1241
|
+
z-index: 40;
|
|
1242
|
+
}
|
|
1231
1243
|
.z-50 {
|
|
1232
1244
|
z-index: 50;
|
|
1233
1245
|
}
|
|
@@ -1708,6 +1720,9 @@ video {
|
|
|
1708
1720
|
.max-h-full {
|
|
1709
1721
|
max-height: 100%;
|
|
1710
1722
|
}
|
|
1723
|
+
.min-h-0 {
|
|
1724
|
+
min-height: 0px;
|
|
1725
|
+
}
|
|
1711
1726
|
.min-h-10 {
|
|
1712
1727
|
min-height: 2.5rem;
|
|
1713
1728
|
}
|
|
@@ -1717,8 +1732,8 @@ video {
|
|
|
1717
1732
|
.min-h-14 {
|
|
1718
1733
|
min-height: 3.5rem;
|
|
1719
1734
|
}
|
|
1720
|
-
.min-h-
|
|
1721
|
-
min-height:
|
|
1735
|
+
.min-h-28 {
|
|
1736
|
+
min-height: 7rem;
|
|
1722
1737
|
}
|
|
1723
1738
|
.min-h-6 {
|
|
1724
1739
|
min-height: 1.5rem;
|
|
@@ -1766,6 +1781,9 @@ video {
|
|
|
1766
1781
|
.w-1 {
|
|
1767
1782
|
width: 0.25rem;
|
|
1768
1783
|
}
|
|
1784
|
+
.w-1\.5 {
|
|
1785
|
+
width: 0.375rem;
|
|
1786
|
+
}
|
|
1769
1787
|
.w-1\/2 {
|
|
1770
1788
|
width: 50%;
|
|
1771
1789
|
}
|
|
@@ -2013,6 +2031,9 @@ video {
|
|
|
2013
2031
|
.max-w-\[900px\] {
|
|
2014
2032
|
max-width: 900px;
|
|
2015
2033
|
}
|
|
2034
|
+
.max-w-\[9rem\] {
|
|
2035
|
+
max-width: 9rem;
|
|
2036
|
+
}
|
|
2016
2037
|
.max-w-full {
|
|
2017
2038
|
max-width: 100%;
|
|
2018
2039
|
}
|
|
@@ -2089,9 +2110,21 @@ video {
|
|
|
2089
2110
|
.cursor-default {
|
|
2090
2111
|
cursor: default;
|
|
2091
2112
|
}
|
|
2113
|
+
.cursor-ew-resize {
|
|
2114
|
+
cursor: ew-resize;
|
|
2115
|
+
}
|
|
2116
|
+
.cursor-nesw-resize {
|
|
2117
|
+
cursor: nesw-resize;
|
|
2118
|
+
}
|
|
2092
2119
|
.cursor-not-allowed {
|
|
2093
2120
|
cursor: not-allowed;
|
|
2094
2121
|
}
|
|
2122
|
+
.cursor-ns-resize {
|
|
2123
|
+
cursor: ns-resize;
|
|
2124
|
+
}
|
|
2125
|
+
.cursor-nwse-resize {
|
|
2126
|
+
cursor: nwse-resize;
|
|
2127
|
+
}
|
|
2095
2128
|
.cursor-pointer {
|
|
2096
2129
|
cursor: pointer;
|
|
2097
2130
|
}
|
|
@@ -3534,6 +3567,12 @@ video {
|
|
|
3534
3567
|
.ease-out {
|
|
3535
3568
|
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
|
|
3536
3569
|
}
|
|
3570
|
+
.\[animation-delay\:-0\.15s\] {
|
|
3571
|
+
animation-delay: -0.15s;
|
|
3572
|
+
}
|
|
3573
|
+
.\[animation-delay\:-0\.3s\] {
|
|
3574
|
+
animation-delay: -0.3s;
|
|
3575
|
+
}
|
|
3537
3576
|
.\[transform\:translateZ\(0\)\] {
|
|
3538
3577
|
transform: translateZ(0);
|
|
3539
3578
|
}
|
|
@@ -3667,6 +3706,9 @@ video {
|
|
|
3667
3706
|
.hover\:bg-primary:hover {
|
|
3668
3707
|
background-color: var(--primary);
|
|
3669
3708
|
}
|
|
3709
|
+
.hover\:bg-primary-deep:hover {
|
|
3710
|
+
background-color: var(--primary-deep);
|
|
3711
|
+
}
|
|
3670
3712
|
.hover\:bg-primary-mild:hover {
|
|
3671
3713
|
background-color: var(--primary-mild);
|
|
3672
3714
|
}
|
|
@@ -3682,6 +3724,9 @@ video {
|
|
|
3682
3724
|
.hover\:text-gray-300:hover {
|
|
3683
3725
|
color: var(--gray-300);
|
|
3684
3726
|
}
|
|
3727
|
+
.hover\:text-gray-700:hover {
|
|
3728
|
+
color: var(--gray-700);
|
|
3729
|
+
}
|
|
3685
3730
|
.hover\:text-gray-800:hover {
|
|
3686
3731
|
color: var(--gray-800);
|
|
3687
3732
|
}
|
|
@@ -3781,6 +3826,17 @@ video {
|
|
|
3781
3826
|
outline: 2px solid transparent;
|
|
3782
3827
|
outline-offset: 2px;
|
|
3783
3828
|
}
|
|
3829
|
+
.focus-visible\:ring-2:focus-visible {
|
|
3830
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
3831
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
3832
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
|
|
3833
|
+
}
|
|
3834
|
+
.focus-visible\:ring-primary:focus-visible {
|
|
3835
|
+
--tw-ring-color: var(--primary);
|
|
3836
|
+
}
|
|
3837
|
+
.focus-visible\:ring-offset-2:focus-visible {
|
|
3838
|
+
--tw-ring-offset-width: 2px;
|
|
3839
|
+
}
|
|
3784
3840
|
.active\:bg-gray-100:active {
|
|
3785
3841
|
background-color: var(--gray-100);
|
|
3786
3842
|
}
|
|
@@ -3880,6 +3936,34 @@ video {
|
|
|
3880
3936
|
.motion-safe\:animate-\[bounce_1s_ease-in-out_infinite\] {
|
|
3881
3937
|
animation: bounce 1s ease-in-out infinite;
|
|
3882
3938
|
}
|
|
3939
|
+
|
|
3940
|
+
@keyframes bounce {
|
|
3941
|
+
|
|
3942
|
+
0%, 100% {
|
|
3943
|
+
transform: translateY(-25%);
|
|
3944
|
+
animation-timing-function: cubic-bezier(0.8,0,1,1);
|
|
3945
|
+
}
|
|
3946
|
+
|
|
3947
|
+
50% {
|
|
3948
|
+
transform: none;
|
|
3949
|
+
animation-timing-function: cubic-bezier(0,0,0.2,1);
|
|
3950
|
+
}
|
|
3951
|
+
}
|
|
3952
|
+
|
|
3953
|
+
.motion-safe\:animate-bounce {
|
|
3954
|
+
animation: bounce 1s infinite;
|
|
3955
|
+
}
|
|
3956
|
+
|
|
3957
|
+
@keyframes pulse {
|
|
3958
|
+
|
|
3959
|
+
50% {
|
|
3960
|
+
opacity: .5;
|
|
3961
|
+
}
|
|
3962
|
+
}
|
|
3963
|
+
|
|
3964
|
+
.motion-safe\:animate-pulse {
|
|
3965
|
+
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
3966
|
+
}
|
|
3883
3967
|
}
|
|
3884
3968
|
.dark\:border:is(.dark *) {
|
|
3885
3969
|
border-width: 1px;
|
|
@@ -4236,6 +4320,9 @@ video {
|
|
|
4236
4320
|
.dark\:hover\:text-gray-100:hover:is(.dark *) {
|
|
4237
4321
|
color: var(--gray-100);
|
|
4238
4322
|
}
|
|
4323
|
+
.dark\:hover\:text-gray-200:hover:is(.dark *) {
|
|
4324
|
+
color: var(--gray-200);
|
|
4325
|
+
}
|
|
4239
4326
|
.dark\:hover\:text-white:hover:is(.dark *) {
|
|
4240
4327
|
--tw-text-opacity: 1;
|
|
4241
4328
|
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
|
@@ -4725,10 +4812,6 @@ video {
|
|
|
4725
4812
|
display: grid;
|
|
4726
4813
|
}
|
|
4727
4814
|
|
|
4728
|
-
.\32xl\:min-h-60 {
|
|
4729
|
-
min-height: 15rem;
|
|
4730
|
-
}
|
|
4731
|
-
|
|
4732
4815
|
.\32xl\:w-\[500px\] {
|
|
4733
4816
|
width: 500px;
|
|
4734
4817
|
}
|
|
@@ -5,7 +5,9 @@ import Loading from "../../shared/Loading.js";
|
|
|
5
5
|
import { useLocation } from "react-router-dom";
|
|
6
6
|
import "../../../configs/index.js";
|
|
7
7
|
import GlobalLoading from "../../shared/loaders/GlobalLoading.js";
|
|
8
|
+
import "../../template/OrbeAiWidget/index.js";
|
|
8
9
|
import { protectedRoutes, publicRoutes } from "../../../configs/routes.config/routes.config.js";
|
|
10
|
+
import OrbeAiWidget from "../../template/OrbeAiWidget/OrbeAiWidget.js";
|
|
9
11
|
const layouts = {
|
|
10
12
|
[LAYOUT_COLLAPSIBLE_SIDE]: lazy(() => import("./components/CollapsibleSide.js")),
|
|
11
13
|
[LAYOUT_STACKED_SIDE]: lazy(() => import("./components/StackedSide.js")),
|
|
@@ -36,6 +38,7 @@ const PostLoginLayout = ({
|
|
|
36
38
|
}, [location.pathname, layoutType]);
|
|
37
39
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
38
40
|
/* @__PURE__ */ jsx(GlobalLoading, {}),
|
|
41
|
+
/* @__PURE__ */ jsx(OrbeAiWidget, {}),
|
|
39
42
|
/* @__PURE__ */ jsx(
|
|
40
43
|
Suspense,
|
|
41
44
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostLoginLayout.js","sources":["../../../../../lib/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.tsx"],"sourcesContent":["import { lazy, Suspense, useMemo } from \"react\";\nimport {\n LAYOUT_COLLAPSIBLE_SIDE,\n LAYOUT_STACKED_SIDE,\n LAYOUT_TOP_BAR_CLASSIC,\n LAYOUT_FRAMELESS_SIDE,\n LAYOUT_CONTENT_OVERLAY,\n LAYOUT_BLANK,\n} from \"@/constants/theme.constant\";\nimport Loading from \"@/components/shared/Loading\";\nimport type { CommonProps } from \"@/@types/common\";\nimport type { LazyExoticComponent, JSX } from \"react\";\nimport type { LayoutType } from \"@/@types/theme\";\nimport { LinkRenderer } from \"../Layouts\";\nimport { useLocation } from \"react-router-dom\";\nimport { Routes } from \"@/@types\";\nimport { protectedRoutes, publicRoutes } from \"@/configs\";\nimport
|
|
1
|
+
{"version":3,"file":"PostLoginLayout.js","sources":["../../../../../lib/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.tsx"],"sourcesContent":["import { lazy, Suspense, useMemo } from \"react\";\nimport {\n LAYOUT_COLLAPSIBLE_SIDE,\n LAYOUT_STACKED_SIDE,\n LAYOUT_TOP_BAR_CLASSIC,\n LAYOUT_FRAMELESS_SIDE,\n LAYOUT_CONTENT_OVERLAY,\n LAYOUT_BLANK,\n} from \"@/constants/theme.constant\";\nimport Loading from \"@/components/shared/Loading\";\nimport type { CommonProps } from \"@/@types/common\";\nimport type { LazyExoticComponent, JSX } from \"react\";\nimport type { LayoutType } from \"@/@types/theme\";\nimport { LinkRenderer } from \"../Layouts\";\nimport { useLocation } from \"react-router-dom\";\nimport { Routes } from \"@/@types\";\nimport { protectedRoutes, publicRoutes } from \"@/configs\";\nimport GlobalLoading from \"@/components/shared/loaders/GlobalLoading\";\nimport OrbeAiWidget from \"@/components/template/OrbeAiWidget\";\n\ntype Layouts = Record<\n string,\n LazyExoticComponent<<T extends CommonProps>(props: T) => JSX.Element>\n>;\n\ninterface PostLoginLayoutProps extends CommonProps {\n layoutType: LayoutType;\n linkRenderer?: LinkRenderer;\n pageTitle?: string;\n}\n\nconst layouts: Layouts = {\n [LAYOUT_COLLAPSIBLE_SIDE]: lazy(() => import(\"./components/CollapsibleSide\")),\n [LAYOUT_STACKED_SIDE]: lazy(() => import(\"./components/StackedSide\")),\n [LAYOUT_TOP_BAR_CLASSIC]: lazy(() => import(\"./components/TopBarClassic\")),\n [LAYOUT_FRAMELESS_SIDE]: lazy(() => import(\"./components/FrameLessSide\")),\n [LAYOUT_CONTENT_OVERLAY]: lazy(() => import(\"./components/ContentOverlay\")),\n [LAYOUT_BLANK]: lazy(() => import(\"./components/Blank\")),\n};\n\nconst findRouteByPath = (\n path: string,\n routes: Routes\n): Routes[0] | undefined => {\n for (const route of routes) {\n if (route.path === path) {\n return route;\n }\n }\n};\n\nconst PostLoginLayout = ({\n layoutType,\n children,\n linkRenderer,\n pageTitle,\n}: PostLoginLayoutProps) => {\n const location = useLocation();\n const AppLayout = useMemo(() => {\n const allRoutes = [...protectedRoutes, ...publicRoutes];\n const currentRoute = findRouteByPath(location.pathname, allRoutes);\n const layout = currentRoute?.meta?.layout ?? layoutType;\n return layouts[layout] ?? layouts[Object.keys(layouts)[0]];\n }, [location.pathname, layoutType]);\n\n return (\n <>\n <GlobalLoading />\n <OrbeAiWidget />\n <Suspense\n fallback={\n <div className=\"flex flex-auto flex-col h-[100vh]\">\n <Loading loading={true}/>\n </div>\n }\n >\n {/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */}\n {/* @ts-ignore */}\n <AppLayout linkRenderer={linkRenderer} pageTitle={pageTitle}>\n {children}\n </AppLayout>\n </Suspense>\n </>\n );\n};\n\nexport default PostLoginLayout;\n"],"names":[],"mappings":";;;;;;;;;;AA+BA,MAAM,UAAmB;AAAA,EACvB,CAAC,uBAAuB,GAAG,KAAK,MAAM,OAAO,iCAA8B,CAAC;AAAA,EAC5E,CAAC,mBAAmB,GAAG,KAAK,MAAM,OAAO,6BAA0B,CAAC;AAAA,EACpE,CAAC,sBAAsB,GAAG,KAAK,MAAM,OAAO,+BAA4B,CAAC;AAAA,EACzE,CAAC,qBAAqB,GAAG,KAAK,MAAM,OAAO,+BAA4B,CAAC;AAAA,EACxE,CAAC,sBAAsB,GAAG,KAAK,MAAM,OAAO,gCAA6B,CAAC;AAAA,EAC1E,CAAC,YAAY,GAAG,KAAK,MAAM,OAAO,uBAAoB,CAAC;AACzD;AAEA,MAAM,kBAAkB,CACtB,MACA,WAC0B;AAC1B,aAAW,SAAS,QAAQ;AAC1B,QAAI,MAAM,SAAS,MAAM;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,MAAM,kBAAkB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA4B;AAC1B,QAAM,WAAW,YAAA;AACjB,QAAM,YAAY,QAAQ,MAAM;AAC9B,UAAM,YAAY,CAAC,GAAG,iBAAiB,GAAG,YAAY;AACtD,UAAM,eAAe,gBAAgB,SAAS,UAAU,SAAS;AACjE,UAAM,SAAS,cAAc,MAAM,UAAU;AAC7C,WAAO,QAAQ,MAAM,KAAK,QAAQ,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;AAAA,EAC3D,GAAG,CAAC,SAAS,UAAU,UAAU,CAAC;AAElC,SACE,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,eAAA,EAAc;AAAA,wBACd,cAAA,EAAa;AAAA,IACd;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,8BACG,OAAA,EAAI,WAAU,qCACb,UAAA,oBAAC,SAAA,EAAQ,SAAS,KAAA,CAAK,EAAA,CACzB;AAAA,QAKF,UAAA,oBAAC,WAAA,EAAU,cAA4B,WACpC,SAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -3,7 +3,7 @@ import Container from "../shared/Container.js";
|
|
|
3
3
|
import classNames from "../../utils/classNames.js";
|
|
4
4
|
import { APP_NAME } from "../../constants/app.constant.js";
|
|
5
5
|
import { PAGE_CONTAINER_GUTTER_X } from "../../constants/theme.constant.js";
|
|
6
|
-
const version = true ? "5.6.
|
|
6
|
+
const version = true ? "5.6.202" : "0.0.0";
|
|
7
7
|
const FooterContent = () => {
|
|
8
8
|
return /* @__PURE__ */ jsxs("div", { className: "flex w-full flex-auto items-center justify-between", children: [
|
|
9
9
|
/* @__PURE__ */ jsxs("span", { children: [
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { AnimatePresence, motion } from "framer-motion";
|
|
4
|
+
import { TbMessageChatbot, TbArrowsMinimize, TbArrowsMaximize } from "react-icons/tb";
|
|
5
|
+
import { HiX } from "react-icons/hi";
|
|
6
|
+
import ChatView from "../../../views/concepts/ai/Chat/components/ChatView.js";
|
|
7
|
+
import ChatHistoryRenameDialog from "../../../views/concepts/ai/Chat/components/ChatHistoryRenameDialog.js";
|
|
8
|
+
import ModelSelect from "../../../views/concepts/ai/Chat/components/ModelSelect.js";
|
|
9
|
+
import useResizablePanel from "./useResizablePanel.js";
|
|
10
|
+
import ResizeHandles from "./ResizeHandles.js";
|
|
11
|
+
const iconButtonClass = "flex h-8 w-8 items-center justify-center rounded-full text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200";
|
|
12
|
+
const OrbeAiWidget = () => {
|
|
13
|
+
const [open, setOpen] = useState(false);
|
|
14
|
+
const [fullscreen, setFullscreen] = useState(false);
|
|
15
|
+
const { rect, startResize } = useResizablePanel();
|
|
16
|
+
const toggleOpen = () => setOpen((prev) => !prev);
|
|
17
|
+
const toggleFullscreen = () => setFullscreen((prev) => !prev);
|
|
18
|
+
const close = () => {
|
|
19
|
+
setOpen(false);
|
|
20
|
+
setFullscreen(false);
|
|
21
|
+
};
|
|
22
|
+
const panelStyle = fullscreen ? void 0 : {
|
|
23
|
+
top: rect.top,
|
|
24
|
+
left: rect.left,
|
|
25
|
+
width: rect.width,
|
|
26
|
+
height: rect.height
|
|
27
|
+
};
|
|
28
|
+
const panelVariantClass = fullscreen ? "inset-0 rounded-none border-0" : "rounded-2xl border shadow-2xl";
|
|
29
|
+
return /* @__PURE__ */ jsxs(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
className: `fixed bottom-6 right-6 flex flex-col items-end gap-3 print:hidden ${fullscreen ? "z-[9999]" : "z-40"}`,
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsx(AnimatePresence, { children: open && /* @__PURE__ */ jsxs(
|
|
35
|
+
motion.div,
|
|
36
|
+
{
|
|
37
|
+
initial: { opacity: 0, y: 24, scale: 0.96 },
|
|
38
|
+
animate: { opacity: 1, y: 0, scale: 1 },
|
|
39
|
+
exit: { opacity: 0, y: 24, scale: 0.96 },
|
|
40
|
+
transition: { duration: 0.2, ease: "easeOut" },
|
|
41
|
+
style: panelStyle,
|
|
42
|
+
className: `fixed flex flex-col overflow-hidden border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800 ${panelVariantClass}`,
|
|
43
|
+
children: [
|
|
44
|
+
!fullscreen && /* @__PURE__ */ jsx(ResizeHandles, { onResizeStart: startResize }),
|
|
45
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-700", children: [
|
|
46
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
47
|
+
/* @__PURE__ */ jsx("span", { className: "flex h-8 w-8 items-center justify-center rounded-full bg-primary text-white", children: /* @__PURE__ */ jsx(TbMessageChatbot, { size: 20 }) }),
|
|
48
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-gray-900 dark:text-gray-100", children: "Orbe AI" })
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
51
|
+
/* @__PURE__ */ jsx(ModelSelect, {}),
|
|
52
|
+
/* @__PURE__ */ jsx(
|
|
53
|
+
"button",
|
|
54
|
+
{
|
|
55
|
+
type: "button",
|
|
56
|
+
className: iconButtonClass,
|
|
57
|
+
onClick: toggleFullscreen,
|
|
58
|
+
"aria-label": fullscreen ? "Sair da tela cheia" : "Tela cheia",
|
|
59
|
+
children: fullscreen ? /* @__PURE__ */ jsx(TbArrowsMinimize, { size: 18 }) : /* @__PURE__ */ jsx(TbArrowsMaximize, { size: 18 })
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ jsx(
|
|
63
|
+
"button",
|
|
64
|
+
{
|
|
65
|
+
type: "button",
|
|
66
|
+
className: iconButtonClass,
|
|
67
|
+
onClick: close,
|
|
68
|
+
"aria-label": "Fechar chat Orbe AI",
|
|
69
|
+
children: /* @__PURE__ */ jsx(HiX, { size: 18 })
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
] })
|
|
73
|
+
] }),
|
|
74
|
+
/* @__PURE__ */ jsxs("div", { className: "min-h-0 flex-1 p-2", children: [
|
|
75
|
+
/* @__PURE__ */ jsx(ChatView, {}),
|
|
76
|
+
/* @__PURE__ */ jsx(ChatHistoryRenameDialog, {})
|
|
77
|
+
] })
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"orbe-ai-panel"
|
|
81
|
+
) }),
|
|
82
|
+
!fullscreen && /* @__PURE__ */ jsx(
|
|
83
|
+
"button",
|
|
84
|
+
{
|
|
85
|
+
type: "button",
|
|
86
|
+
className: "flex h-14 w-14 items-center justify-center rounded-full bg-primary text-white shadow-lg transition-colors hover:bg-primary-deep focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2",
|
|
87
|
+
onClick: toggleOpen,
|
|
88
|
+
"aria-label": open ? "Fechar chat Orbe AI" : "Abrir chat Orbe AI",
|
|
89
|
+
"aria-expanded": open,
|
|
90
|
+
children: open ? /* @__PURE__ */ jsx(HiX, { size: 24 }) : /* @__PURE__ */ jsx(TbMessageChatbot, { size: 26 })
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
export {
|
|
98
|
+
OrbeAiWidget as default
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=OrbeAiWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrbeAiWidget.js","sources":["../../../../../lib/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport {\n TbMessageChatbot,\n TbArrowsMaximize,\n TbArrowsMinimize,\n} from 'react-icons/tb'\nimport { HiX } from 'react-icons/hi'\nimport ChatView from '@/views/concepts/ai/Chat/components/ChatView'\nimport ChatHistoryRenameDialog from '@/views/concepts/ai/Chat/components/ChatHistoryRenameDialog'\nimport ModelSelect from '@/views/concepts/ai/Chat/components/ModelSelect'\nimport useResizablePanel from './useResizablePanel'\nimport ResizeHandles from './ResizeHandles'\n\nconst iconButtonClass =\n 'flex h-8 w-8 items-center justify-center rounded-full text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200'\n\nconst OrbeAiWidget = () => {\n const [open, setOpen] = useState(false)\n const [fullscreen, setFullscreen] = useState(false)\n const { rect, startResize } = useResizablePanel()\n\n const toggleOpen = () => setOpen((prev) => !prev)\n const toggleFullscreen = () => setFullscreen((prev) => !prev)\n const close = () => {\n setOpen(false)\n setFullscreen(false)\n }\n\n // Tela cheia: cobre o viewport inteiro (inset-0). Flutuante: usa o retângulo do resize.\n const panelStyle = fullscreen\n ? undefined\n : {\n top: rect.top,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n }\n const panelVariantClass = fullscreen\n ? 'inset-0 rounded-none border-0'\n : 'rounded-2xl border shadow-2xl'\n\n return (\n <div\n className={`fixed bottom-6 right-6 flex flex-col items-end gap-3 print:hidden ${\n fullscreen ? 'z-[9999]' : 'z-40'\n }`}\n >\n <AnimatePresence>\n {open && (\n <motion.div\n key=\"orbe-ai-panel\"\n initial={{ opacity: 0, y: 24, scale: 0.96 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 24, scale: 0.96 }}\n transition={{ duration: 0.2, ease: 'easeOut' }}\n style={panelStyle}\n className={`fixed flex flex-col overflow-hidden border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800 ${panelVariantClass}`}\n >\n {!fullscreen && (\n <ResizeHandles onResizeStart={startResize} />\n )}\n\n <div className=\"flex items-center justify-between border-b border-gray-200 px-4 py-3 dark:border-gray-700\">\n <div className=\"flex items-center gap-2\">\n <span className=\"flex h-8 w-8 items-center justify-center rounded-full bg-primary text-white\">\n <TbMessageChatbot size={20} />\n </span>\n <span className=\"font-semibold text-gray-900 dark:text-gray-100\">\n Orbe AI\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <ModelSelect />\n <button\n type=\"button\"\n className={iconButtonClass}\n onClick={toggleFullscreen}\n aria-label={\n fullscreen\n ? 'Sair da tela cheia'\n : 'Tela cheia'\n }\n >\n {fullscreen ? (\n <TbArrowsMinimize size={18} />\n ) : (\n <TbArrowsMaximize size={18} />\n )}\n </button>\n <button\n type=\"button\"\n className={iconButtonClass}\n onClick={close}\n aria-label=\"Fechar chat Orbe AI\"\n >\n <HiX size={18} />\n </button>\n </div>\n </div>\n\n <div className=\"min-h-0 flex-1 p-2\">\n <ChatView />\n <ChatHistoryRenameDialog />\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n\n {!fullscreen && (\n <button\n type=\"button\"\n className=\"flex h-14 w-14 items-center justify-center rounded-full bg-primary text-white shadow-lg transition-colors hover:bg-primary-deep focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2\"\n onClick={toggleOpen}\n aria-label={open ? 'Fechar chat Orbe AI' : 'Abrir chat Orbe AI'}\n aria-expanded={open}\n >\n {open ? <HiX size={24} /> : <TbMessageChatbot size={26} />}\n </button>\n )}\n </div>\n )\n}\n\nexport default OrbeAiWidget\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
const EDGES = [
|
|
3
|
+
{ direction: "top", className: "left-0 right-0 top-0 h-1.5 cursor-ns-resize" },
|
|
4
|
+
{ direction: "bottom", className: "bottom-0 left-0 right-0 h-1.5 cursor-ns-resize" },
|
|
5
|
+
{ direction: "left", className: "bottom-0 left-0 top-0 w-1.5 cursor-ew-resize" },
|
|
6
|
+
{ direction: "right", className: "bottom-0 right-0 top-0 w-1.5 cursor-ew-resize" }
|
|
7
|
+
];
|
|
8
|
+
const CORNERS = [
|
|
9
|
+
{ direction: "top-left", className: "left-0 top-0 cursor-nwse-resize" },
|
|
10
|
+
{ direction: "top-right", className: "right-0 top-0 cursor-nesw-resize" },
|
|
11
|
+
{ direction: "bottom-left", className: "bottom-0 left-0 cursor-nesw-resize" },
|
|
12
|
+
{ direction: "bottom-right", className: "bottom-0 right-0 cursor-nwse-resize" }
|
|
13
|
+
];
|
|
14
|
+
const ResizeHandles = ({ onResizeStart }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15
|
+
EDGES.map(({ direction, className }) => /* @__PURE__ */ jsx(
|
|
16
|
+
"span",
|
|
17
|
+
{
|
|
18
|
+
"aria-hidden": true,
|
|
19
|
+
onPointerDown: (event) => onResizeStart(event, direction),
|
|
20
|
+
className: `absolute z-20 ${className}`
|
|
21
|
+
},
|
|
22
|
+
direction
|
|
23
|
+
)),
|
|
24
|
+
CORNERS.map(({ direction, className }) => /* @__PURE__ */ jsx(
|
|
25
|
+
"span",
|
|
26
|
+
{
|
|
27
|
+
"aria-hidden": true,
|
|
28
|
+
onPointerDown: (event) => onResizeStart(event, direction),
|
|
29
|
+
className: `absolute z-30 h-3 w-3 ${className}`
|
|
30
|
+
},
|
|
31
|
+
direction
|
|
32
|
+
))
|
|
33
|
+
] });
|
|
34
|
+
export {
|
|
35
|
+
ResizeHandles as default
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=ResizeHandles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResizeHandles.js","sources":["../../../../../lib/@ecme/components/template/OrbeAiWidget/ResizeHandles.tsx"],"sourcesContent":["import type { PointerEvent as ReactPointerEvent } from 'react'\nimport type { ResizeDirection } from './useResizablePanel'\n\ntype ResizeHandlesProps = {\n onResizeStart: (\n event: ReactPointerEvent,\n direction: ResizeDirection,\n ) => void\n}\n\nconst EDGES: { direction: ResizeDirection; className: string }[] = [\n { direction: 'top', className: 'left-0 right-0 top-0 h-1.5 cursor-ns-resize' },\n { direction: 'bottom', className: 'bottom-0 left-0 right-0 h-1.5 cursor-ns-resize' },\n { direction: 'left', className: 'bottom-0 left-0 top-0 w-1.5 cursor-ew-resize' },\n { direction: 'right', className: 'bottom-0 right-0 top-0 w-1.5 cursor-ew-resize' },\n]\n\nconst CORNERS: { direction: ResizeDirection; className: string }[] = [\n { direction: 'top-left', className: 'left-0 top-0 cursor-nwse-resize' },\n { direction: 'top-right', className: 'right-0 top-0 cursor-nesw-resize' },\n { direction: 'bottom-left', className: 'bottom-0 left-0 cursor-nesw-resize' },\n { direction: 'bottom-right', className: 'bottom-0 right-0 cursor-nwse-resize' },\n]\n\n/** Alças transparentes de redimensionamento nas 4 bordas + 4 cantos do painel. */\nconst ResizeHandles = ({ onResizeStart }: ResizeHandlesProps) => (\n <>\n {EDGES.map(({ direction, className }) => (\n <span\n key={direction}\n aria-hidden\n onPointerDown={(event) => onResizeStart(event, direction)}\n className={`absolute z-20 ${className}`}\n />\n ))}\n {CORNERS.map(({ direction, className }) => (\n <span\n key={direction}\n aria-hidden\n onPointerDown={(event) => onResizeStart(event, direction)}\n className={`absolute z-30 h-3 w-3 ${className}`}\n />\n ))}\n </>\n)\n\nexport default ResizeHandles\n"],"names":[],"mappings":";AAUA,MAAM,QAA6D;AAAA,EAC/D,EAAE,WAAW,OAAO,WAAW,8CAAA;AAAA,EAC/B,EAAE,WAAW,UAAU,WAAW,iDAAA;AAAA,EAClC,EAAE,WAAW,QAAQ,WAAW,+CAAA;AAAA,EAChC,EAAE,WAAW,SAAS,WAAW,gDAAA;AACrC;AAEA,MAAM,UAA+D;AAAA,EACjE,EAAE,WAAW,YAAY,WAAW,kCAAA;AAAA,EACpC,EAAE,WAAW,aAAa,WAAW,mCAAA;AAAA,EACrC,EAAE,WAAW,eAAe,WAAW,qCAAA;AAAA,EACvC,EAAE,WAAW,gBAAgB,WAAW,sCAAA;AAC5C;AAGA,MAAM,gBAAgB,CAAC,EAAE,cAAA,MACrB,qBAAA,UAAA,EACK,UAAA;AAAA,EAAA,MAAM,IAAI,CAAC,EAAE,WAAW,gBACrB;AAAA,IAAC;AAAA,IAAA;AAAA,MAEG,eAAW;AAAA,MACX,eAAe,CAAC,UAAU,cAAc,OAAO,SAAS;AAAA,MACxD,WAAW,iBAAiB,SAAS;AAAA,IAAA;AAAA,IAHhC;AAAA,EAAA,CAKZ;AAAA,EACA,QAAQ,IAAI,CAAC,EAAE,WAAW,gBACvB;AAAA,IAAC;AAAA,IAAA;AAAA,MAEG,eAAW;AAAA,MACX,eAAe,CAAC,UAAU,cAAc,OAAO,SAAS;AAAA,MACxD,WAAW,yBAAyB,SAAS;AAAA,IAAA;AAAA,IAHxC;AAAA,EAAA,CAKZ;AAAA,EAAA,CACL;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|