data-primals-engine 1.5.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +924 -913
  2. package/client/README.md +136 -136
  3. package/client/index.js +0 -1
  4. package/client/public/doc/API.postman_collection.json +213 -213
  5. package/client/public/react.svg +9 -9
  6. package/client/src/AddWidgetTypeModal.jsx +47 -47
  7. package/client/src/App.css +42 -42
  8. package/client/src/App.jsx +92 -150
  9. package/client/src/App.scss +7 -1
  10. package/client/src/AssistantChat.jsx +362 -363
  11. package/client/src/Button.jsx +12 -12
  12. package/client/src/Dashboard.jsx +480 -480
  13. package/client/src/DashboardHtmlViewItem.jsx +146 -146
  14. package/client/src/DashboardView.jsx +654 -654
  15. package/client/src/DataEditor.jsx +383 -383
  16. package/client/src/DataLayout.jsx +779 -806
  17. package/client/src/DataTable.jsx +782 -822
  18. package/client/src/DataTable.scss +186 -186
  19. package/client/src/GeolocationField.jsx +93 -93
  20. package/client/src/HistoryDialog.jsx +307 -285
  21. package/client/src/HistoryDialog.scss +319 -319
  22. package/client/src/HtmlViewBuilderModal.jsx +90 -90
  23. package/client/src/HtmlViewBuilderModal.scss +17 -17
  24. package/client/src/HtmlViewCard.jsx +43 -43
  25. package/client/src/ModelCreatorField.jsx +950 -950
  26. package/client/src/ModelList.jsx +7 -2
  27. package/client/src/Notification.jsx +136 -136
  28. package/client/src/PackGallery.jsx +391 -391
  29. package/client/src/PackGallery.scss +231 -231
  30. package/client/src/Pagination.jsx +143 -143
  31. package/client/src/RelationField.jsx +354 -354
  32. package/client/src/RelationSelectorWidget.jsx +172 -172
  33. package/client/src/RelationValue.jsx +2 -1
  34. package/client/src/contexts/CommandContext.jsx +260 -0
  35. package/client/src/contexts/ModelContext.jsx +4 -1
  36. package/client/src/contexts/UIContext.jsx +72 -72
  37. package/client/src/filter.js +263 -262
  38. package/client/src/index.css +90 -90
  39. package/package.json +11 -10
  40. package/perf/artillery-hooks.js +37 -37
  41. package/perf/setup.yml +25 -25
  42. package/src/constants.js +4 -0
  43. package/src/core.js +8 -1
  44. package/src/engine.js +335 -293
  45. package/src/events.js +140 -21
  46. package/src/filter.js +274 -274
  47. package/src/index.js +3 -0
  48. package/src/modules/assistant/assistant.js +323 -192
  49. package/src/modules/assistant/constants.js +2 -1
  50. package/src/modules/auth-google/index.js +50 -50
  51. package/src/modules/auth-microsoft/index.js +81 -81
  52. package/src/modules/data/data.core.js +118 -118
  53. package/src/modules/data/data.history.js +555 -531
  54. package/src/modules/data/data.operations.js +145 -26
  55. package/src/modules/data/data.relations.js +686 -686
  56. package/src/modules/data/data.routes.js +1879 -1879
  57. package/src/modules/data/data.validation.js +2 -2
  58. package/src/modules/file.js +247 -247
  59. package/src/modules/user.js +1 -0
  60. package/src/modules/workflow.js +2 -2
  61. package/src/openai.jobs.js +3 -2
  62. package/src/packs.js +2 -2
  63. package/src/providers.js +2 -2
  64. package/src/services/stripe.js +196 -196
  65. package/src/sso.js +193 -193
  66. package/src/workers/import-export-worker.js +1 -1
  67. package/test/data.history.integration.test.js +72 -0
  68. package/test/data.integration.test.js +92 -1
  69. package/test/events.test.js +108 -10
  70. package/test/model.integration.test.js +377 -377
@@ -1,231 +1,231 @@
1
- .pack-gallery-container {
2
- width: 100%;
3
- max-width: 90vw;
4
- height: 80vh;
5
- display: flex;
6
- flex-direction: column;
7
-
8
- .gallery-header {
9
- display: flex;
10
- flex-wrap: wrap;
11
- gap: 1rem ;
12
- justify-content: space-between;
13
- align-items: center;
14
- padding-bottom: 1rem;
15
- border-bottom: 1px solid #e0e0e0;
16
- margin-bottom: 1rem;
17
-
18
- h1 {
19
- margin: 0;
20
- flex: 1; // Permet au titre de prendre l'espace disponible
21
- min-width: 200px; // Empêche le titre de devenir trop petit
22
- }
23
-
24
- .header-actions {
25
- display: flex;
26
- gap: 1rem;
27
- align-items: center;
28
-
29
- .sort-options {
30
- display: flex;
31
- gap: 0.5rem;
32
- align-items: center;
33
- flex-wrap: wrap; // Pour le responsive
34
-
35
- .btn.active {
36
- color: white;
37
- }
38
- }
39
-
40
- .add-pack-button {
41
- white-space: nowrap; // Empêche le texte du bouton de se casser
42
- }
43
- }
44
- }
45
-
46
- .pack-list {
47
- display: grid;
48
- gap: 1rem;
49
- padding: 0.5rem;
50
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
51
- @media only screen and (min-width: 480px) {
52
- overflow-y: auto;
53
- }
54
- }
55
-
56
- .pack-card {
57
- border: 1px solid #ddd;
58
- border-radius: 8px;
59
- padding: 1rem;
60
- cursor: pointer;
61
- transition: box-shadow 0.2s, transform 0.2s;
62
- background-color: #fff;
63
-
64
- &:hover {
65
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
66
- transform: translateY(-3px);
67
- }
68
-
69
- .pack-card-header {
70
- display: flex;
71
- justify-content: space-between;
72
- align-items: center;
73
- margin-bottom: 0.5rem;
74
- h3 {
75
- margin: 0;
76
- font-size: 1.2em;
77
- color: var(--primary-color);
78
- display: flex;
79
- align-items: center;
80
- gap: 0.5rem;
81
- }
82
- .pack-stars {
83
- display: flex;
84
- align-items: center;
85
- gap: 0.3rem;
86
- color: #f0ad4e;
87
- }
88
- }
89
-
90
- .pack-description {
91
- font-size: 0.9em;
92
- color: #666;
93
- min-height: 50px;
94
- }
95
-
96
- .pack-card-footer {
97
- margin-top: 1rem;
98
- padding-top: 0.5rem;
99
- border-top: 1px solid #eee;
100
- display: flex;
101
- justify-content: space-between;
102
- align-items: center;
103
- font-size: 0.8em;
104
- color: #888;
105
- .pack-author {
106
- display: flex;
107
- align-items: center;
108
- gap: 0.3rem;
109
- }
110
- .pack-tags {
111
- display: flex;
112
- flex-wrap: wrap;
113
- gap: 0.5rem;
114
- .tag {
115
- background-color: #f0f0f0;
116
- padding: 2px 6px;
117
- border-radius: 4px;
118
- display: flex;
119
- align-items: center;
120
- gap: 0.2rem;
121
- }
122
- }
123
- }
124
- }
125
-
126
- .pack-detail {
127
- display: flex;
128
- flex-direction: column;
129
- height: 100%;
130
- .back-button {
131
- align-self: flex-start;
132
- margin-bottom: 1rem;
133
- }
134
- .pack-detail-header {
135
- display: flex;
136
- justify-content: space-between;
137
- align-items: center;
138
- h1 { margin: 0; }
139
-
140
- .pack-detail-actions {
141
- display: flex;
142
- align-items: center;
143
- gap: 1rem;
144
- }
145
-
146
- .owner-actions {
147
- display: flex;
148
- align-items: center;
149
- gap: 1rem; /* Espace entre l'indicateur et la case à cocher */
150
- padding: 0.25rem 0.75rem;
151
- border: 1px solid #e0e0e0;
152
- border-radius: 8px;
153
- background-color: #fafafa;
154
- .my-pack-indicator {
155
- display: flex;
156
- align-items: center;
157
- gap: 0.4rem;
158
- }
159
- }
160
- }
161
- .pack-meta {
162
- display: flex;
163
- gap: 1rem;
164
- color: #777;
165
- margin: 0.5rem 0 1rem 0;
166
- span {
167
- display: flex;
168
- align-items: center;
169
- gap: 0.4rem;
170
- }
171
- }
172
- .pack-content {
173
- flex-grow: 1;
174
- overflow-y: auto;
175
- padding-right: 1rem;
176
- h2 {
177
- border-bottom: 1px solid #eee;
178
- padding-bottom: 0.3rem;
179
- margin-top: 1.5rem;
180
- }
181
- .data-preview {
182
- background-color: #2d2d2d;
183
- color: #f1f1f1;
184
- padding: 1rem;
185
- border-radius: 4px;
186
- max-height: 300px;
187
- overflow: auto;
188
- pre {
189
- margin: 0;
190
- font-size: 0.85em;
191
- }
192
- }
193
- }
194
- }
195
- }
196
-
197
- // À ajouter à la fin de votre fichier CSS
198
- .manual-install-dialog {
199
- width: 100%;
200
-
201
- p {
202
- margin-top: 0;
203
- color: #666;
204
- font-size: 0.9em;
205
- }
206
-
207
- textarea {
208
- width: 100%;
209
- padding: 1rem;
210
- border: 1px solid #ddd;
211
- border-radius: 4px;
212
- font-family: monospace;
213
- resize: vertical;
214
- min-height: 300px;
215
- background-color: #f9f9f9;
216
- color: #333;
217
-
218
- &:focus {
219
- outline: none;
220
- border-color: var(--primary-color);
221
- box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb), 0.2);
222
- }
223
- }
224
-
225
- .dialog-actions {
226
- display: flex;
227
- justify-content: flex-end;
228
- gap: 0.5rem;
229
- margin-top: 1rem;
230
- }
231
- }
1
+ .pack-gallery-container {
2
+ width: 100%;
3
+ max-width: 90vw;
4
+ height: 80vh;
5
+ display: flex;
6
+ flex-direction: column;
7
+
8
+ .gallery-header {
9
+ display: flex;
10
+ flex-wrap: wrap;
11
+ gap: 1rem ;
12
+ justify-content: space-between;
13
+ align-items: center;
14
+ padding-bottom: 1rem;
15
+ border-bottom: 1px solid #e0e0e0;
16
+ margin-bottom: 1rem;
17
+
18
+ h1 {
19
+ margin: 0;
20
+ flex: 1; // Permet au titre de prendre l'espace disponible
21
+ min-width: 200px; // Empêche le titre de devenir trop petit
22
+ }
23
+
24
+ .header-actions {
25
+ display: flex;
26
+ gap: 1rem;
27
+ align-items: center;
28
+
29
+ .sort-options {
30
+ display: flex;
31
+ gap: 0.5rem;
32
+ align-items: center;
33
+ flex-wrap: wrap; // Pour le responsive
34
+
35
+ .btn.active {
36
+ color: white;
37
+ }
38
+ }
39
+
40
+ .add-pack-button {
41
+ white-space: nowrap; // Empêche le texte du bouton de se casser
42
+ }
43
+ }
44
+ }
45
+
46
+ .pack-list {
47
+ display: grid;
48
+ gap: 1rem;
49
+ padding: 0.5rem;
50
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
51
+ @media only screen and (min-width: 480px) {
52
+ overflow-y: auto;
53
+ }
54
+ }
55
+
56
+ .pack-card {
57
+ border: 1px solid #ddd;
58
+ border-radius: 8px;
59
+ padding: 1rem;
60
+ cursor: pointer;
61
+ transition: box-shadow 0.2s, transform 0.2s;
62
+ background-color: #fff;
63
+
64
+ &:hover {
65
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
66
+ transform: translateY(-3px);
67
+ }
68
+
69
+ .pack-card-header {
70
+ display: flex;
71
+ justify-content: space-between;
72
+ align-items: center;
73
+ margin-bottom: 0.5rem;
74
+ h3 {
75
+ margin: 0;
76
+ font-size: 1.2em;
77
+ color: var(--primary-color);
78
+ display: flex;
79
+ align-items: center;
80
+ gap: 0.5rem;
81
+ }
82
+ .pack-stars {
83
+ display: flex;
84
+ align-items: center;
85
+ gap: 0.3rem;
86
+ color: #f0ad4e;
87
+ }
88
+ }
89
+
90
+ .pack-description {
91
+ font-size: 0.9em;
92
+ color: #666;
93
+ min-height: 50px;
94
+ }
95
+
96
+ .pack-card-footer {
97
+ margin-top: 1rem;
98
+ padding-top: 0.5rem;
99
+ border-top: 1px solid #eee;
100
+ display: flex;
101
+ justify-content: space-between;
102
+ align-items: center;
103
+ font-size: 0.8em;
104
+ color: #888;
105
+ .pack-author {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 0.3rem;
109
+ }
110
+ .pack-tags {
111
+ display: flex;
112
+ flex-wrap: wrap;
113
+ gap: 0.5rem;
114
+ .tag {
115
+ background-color: #f0f0f0;
116
+ padding: 2px 6px;
117
+ border-radius: 4px;
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 0.2rem;
121
+ }
122
+ }
123
+ }
124
+ }
125
+
126
+ .pack-detail {
127
+ display: flex;
128
+ flex-direction: column;
129
+ height: 100%;
130
+ .back-button {
131
+ align-self: flex-start;
132
+ margin-bottom: 1rem;
133
+ }
134
+ .pack-detail-header {
135
+ display: flex;
136
+ justify-content: space-between;
137
+ align-items: center;
138
+ h1 { margin: 0; }
139
+
140
+ .pack-detail-actions {
141
+ display: flex;
142
+ align-items: center;
143
+ gap: 1rem;
144
+ }
145
+
146
+ .owner-actions {
147
+ display: flex;
148
+ align-items: center;
149
+ gap: 1rem; /* Espace entre l'indicateur et la case à cocher */
150
+ padding: 0.25rem 0.75rem;
151
+ border: 1px solid #e0e0e0;
152
+ border-radius: 8px;
153
+ background-color: #fafafa;
154
+ .my-pack-indicator {
155
+ display: flex;
156
+ align-items: center;
157
+ gap: 0.4rem;
158
+ }
159
+ }
160
+ }
161
+ .pack-meta {
162
+ display: flex;
163
+ gap: 1rem;
164
+ color: #777;
165
+ margin: 0.5rem 0 1rem 0;
166
+ span {
167
+ display: flex;
168
+ align-items: center;
169
+ gap: 0.4rem;
170
+ }
171
+ }
172
+ .pack-content {
173
+ flex-grow: 1;
174
+ overflow-y: auto;
175
+ padding-right: 1rem;
176
+ h2 {
177
+ border-bottom: 1px solid #eee;
178
+ padding-bottom: 0.3rem;
179
+ margin-top: 1.5rem;
180
+ }
181
+ .data-preview {
182
+ background-color: #2d2d2d;
183
+ color: #f1f1f1;
184
+ padding: 1rem;
185
+ border-radius: 4px;
186
+ max-height: 300px;
187
+ overflow: auto;
188
+ pre {
189
+ margin: 0;
190
+ font-size: 0.85em;
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+
197
+ // À ajouter à la fin de votre fichier CSS
198
+ .manual-install-dialog {
199
+ width: 100%;
200
+
201
+ p {
202
+ margin-top: 0;
203
+ color: #666;
204
+ font-size: 0.9em;
205
+ }
206
+
207
+ textarea {
208
+ width: 100%;
209
+ padding: 1rem;
210
+ border: 1px solid #ddd;
211
+ border-radius: 4px;
212
+ font-family: monospace;
213
+ resize: vertical;
214
+ min-height: 300px;
215
+ background-color: #f9f9f9;
216
+ color: #333;
217
+
218
+ &:focus {
219
+ outline: none;
220
+ border-color: var(--primary-color);
221
+ box-shadow: 0 0 0 2px rgba(var(--primary-color-rgb), 0.2);
222
+ }
223
+ }
224
+
225
+ .dialog-actions {
226
+ display: flex;
227
+ justify-content: flex-end;
228
+ gap: 0.5rem;
229
+ margin-top: 1rem;
230
+ }
231
+ }