@orbe-agro/client-core 5.6.201 → 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.
Files changed (88) hide show
  1. package/dist/@ecme/assets/styles/app.css +82 -5
  2. package/dist/@ecme/assets/styles/tailwind/index.css +89 -6
  3. package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js +3 -0
  4. package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js.map +1 -1
  5. package/dist/@ecme/components/template/Footer.js +1 -1
  6. package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.js +100 -0
  7. package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.js.map +1 -0
  8. package/dist/@ecme/components/template/OrbeAiWidget/ResizeHandles.js +37 -0
  9. package/dist/@ecme/components/template/OrbeAiWidget/ResizeHandles.js.map +1 -0
  10. package/dist/@ecme/components/template/OrbeAiWidget/index.js +5 -0
  11. package/dist/@ecme/components/template/OrbeAiWidget/index.js.map +1 -0
  12. package/dist/@ecme/components/template/OrbeAiWidget/useResizablePanel.js +77 -0
  13. package/dist/@ecme/components/template/OrbeAiWidget/useResizablePanel.js.map +1 -0
  14. package/dist/@ecme/components/view/ChatBox/ChatBox.js +7 -1
  15. package/dist/@ecme/components/view/ChatBox/ChatBox.js.map +1 -1
  16. package/dist/@ecme/components/view/ChatBox/components/MessageList.js +7 -4
  17. package/dist/@ecme/components/view/ChatBox/components/MessageList.js.map +1 -1
  18. package/dist/@ecme/configs/navigation.config/concepts.navigation.config.js +0 -16
  19. package/dist/@ecme/configs/navigation.config/concepts.navigation.config.js.map +1 -1
  20. package/dist/@ecme/configs/routes.config/conceptsRoute.js +0 -9
  21. package/dist/@ecme/configs/routes.config/conceptsRoute.js.map +1 -1
  22. package/dist/@ecme/index.js +3 -1
  23. package/dist/@ecme/services/AiService.js +24 -4
  24. package/dist/@ecme/services/AiService.js.map +1 -1
  25. package/dist/@ecme/services/axios/AxiosBase.js +30 -24
  26. package/dist/@ecme/services/axios/AxiosBase.js.map +1 -1
  27. package/dist/@ecme/services/index.js +3 -1
  28. package/dist/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.js +23 -0
  29. package/dist/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.js.map +1 -0
  30. package/dist/@ecme/views/concepts/ai/Chat/components/ChatLandingView.js +16 -16
  31. package/dist/@ecme/views/concepts/ai/Chat/components/ChatLandingView.js.map +1 -1
  32. package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js +7 -4
  33. package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js.map +1 -1
  34. package/dist/@ecme/views/concepts/ai/Chat/components/ModelSelect.js +48 -0
  35. package/dist/@ecme/views/concepts/ai/Chat/components/ModelSelect.js.map +1 -0
  36. package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js +6 -3
  37. package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js.map +1 -1
  38. package/dist/@ecme/views/concepts/ai/Chat/store/aiModelStore.js +15 -0
  39. package/dist/@ecme/views/concepts/ai/Chat/store/aiModelStore.js.map +1 -0
  40. package/dist/@types/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.d.ts.map +1 -1
  41. package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.d.ts +3 -0
  42. package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.d.ts.map +1 -0
  43. package/dist/@types/@ecme/components/template/OrbeAiWidget/ResizeHandles.d.ts +9 -0
  44. package/dist/@types/@ecme/components/template/OrbeAiWidget/ResizeHandles.d.ts.map +1 -0
  45. package/dist/@types/@ecme/components/template/OrbeAiWidget/index.d.ts +2 -0
  46. package/dist/@types/@ecme/components/template/OrbeAiWidget/index.d.ts.map +1 -0
  47. package/dist/@types/@ecme/components/template/OrbeAiWidget/useResizablePanel.d.ts +19 -0
  48. package/dist/@types/@ecme/components/template/OrbeAiWidget/useResizablePanel.d.ts.map +1 -0
  49. package/dist/@types/@ecme/components/view/ChatBox/ChatBox.d.ts.map +1 -1
  50. package/dist/@types/@ecme/components/view/ChatBox/components/MessageList.d.ts +3 -0
  51. package/dist/@types/@ecme/components/view/ChatBox/components/MessageList.d.ts.map +1 -1
  52. package/dist/@types/@ecme/configs/navigation.config/concepts.navigation.config.d.ts.map +1 -1
  53. package/dist/@types/@ecme/configs/routes.config/conceptsRoute.d.ts.map +1 -1
  54. package/dist/@types/@ecme/services/AiService.d.ts +12 -0
  55. package/dist/@types/@ecme/services/AiService.d.ts.map +1 -1
  56. package/dist/@types/@ecme/services/axios/AxiosBase.d.ts +12 -0
  57. package/dist/@types/@ecme/services/axios/AxiosBase.d.ts.map +1 -1
  58. package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.d.ts +7 -0
  59. package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.d.ts.map +1 -0
  60. package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatView.d.ts.map +1 -1
  61. package/dist/@types/@ecme/views/concepts/ai/Chat/components/ModelSelect.d.ts +8 -0
  62. package/dist/@types/@ecme/views/concepts/ai/Chat/components/ModelSelect.d.ts.map +1 -0
  63. package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useChatSend.d.ts.map +1 -1
  64. package/dist/@types/@ecme/views/concepts/ai/Chat/store/aiModelStore.d.ts +25 -0
  65. package/dist/@types/@ecme/views/concepts/ai/Chat/store/aiModelStore.d.ts.map +1 -0
  66. package/dist/@types/base/components/forms/GenericForms/GenericArrayFormSection.d.ts +2 -2
  67. package/dist/@types/base/components/forms/GenericForms/GenericArrayFormSection.d.ts.map +1 -1
  68. package/dist/base/assets/styles/init.css +88 -5
  69. package/dist/base/components/forms/GenericForms/GenericArrayFormSection.js.map +1 -1
  70. package/lib/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.tsx +2 -1
  71. package/lib/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.tsx +125 -0
  72. package/lib/@ecme/components/template/OrbeAiWidget/ResizeHandles.tsx +47 -0
  73. package/lib/@ecme/components/template/OrbeAiWidget/index.ts +1 -0
  74. package/lib/@ecme/components/template/OrbeAiWidget/useResizablePanel.ts +108 -0
  75. package/lib/@ecme/components/view/ChatBox/ChatBox.tsx +6 -0
  76. package/lib/@ecme/components/view/ChatBox/components/MessageList.tsx +21 -7
  77. package/lib/@ecme/configs/navigation.config/concepts.navigation.config.ts +0 -16
  78. package/lib/@ecme/configs/routes.config/conceptsRoute.ts +0 -9
  79. package/lib/@ecme/services/AiService.ts +40 -0
  80. package/lib/@ecme/services/axios/AxiosBase.ts +45 -24
  81. package/lib/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.tsx +24 -0
  82. package/lib/@ecme/views/concepts/ai/Chat/components/ChatLandingView.tsx +17 -17
  83. package/lib/@ecme/views/concepts/ai/Chat/components/ChatView.tsx +11 -4
  84. package/lib/@ecme/views/concepts/ai/Chat/components/ModelSelect.tsx +66 -0
  85. package/lib/@ecme/views/concepts/ai/Chat/hooks/useChatSend.ts +5 -3
  86. package/lib/@ecme/views/concepts/ai/Chat/store/aiModelStore.ts +23 -0
  87. package/lib/base/components/forms/GenericForms/GenericArrayFormSection.tsx +1 -1
  88. 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-40{
5644
- min-height: 10rem;
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-40 {
1721
- min-height: 10rem;
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 { useThemeStore } from \"@/store\";\nimport GlobalLoading from \"@/components/shared/loaders/GlobalLoading\";\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 <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,IACf;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;"}
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.201" : "0.0.0";
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,5 @@
1
+ import { default as default2 } from "./OrbeAiWidget.js";
2
+ export {
3
+ default2 as default
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}