@mongoosejs/studio 0.2.13 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/backend/actions/ChatMessage/executeScript.js +5 -1
- package/backend/actions/ChatThread/createChatMessage.js +4 -1
- package/backend/actions/ChatThread/streamChatMessage.js +4 -2
- package/backend/actions/Dashboard/updateDashboard.js +2 -2
- package/backend/actions/Task/getTaskOverview.js +102 -0
- package/backend/actions/Task/getTasks.js +85 -45
- package/backend/actions/Task/index.js +1 -0
- package/eslint.config.js +4 -1
- package/frontend/public/app.js +25025 -762
- package/frontend/public/dark-theme.css +365 -0
- package/frontend/public/images/mongoose-studio.svg +4 -0
- package/frontend/public/index.html +21 -1
- package/frontend/public/style.css +5 -7
- package/frontend/public/theme-variables.css +294 -0
- package/frontend/public/tw.css +348 -213
- package/frontend/src/_util/dateRange.js +82 -0
- package/frontend/src/ace-editor/ace-editor.html +4 -0
- package/frontend/src/ace-editor/ace-editor.js +95 -0
- package/frontend/src/aceEditor.js +69 -0
- package/frontend/src/api.js +6 -0
- package/frontend/src/chat/chat-message/chat-message.html +1 -1
- package/frontend/src/chat/chat-message/chat-message.js +1 -1
- package/frontend/src/chat/chat-message-script/chat-message-script.html +54 -42
- package/frontend/src/chat/chat-message-script/chat-message-script.js +6 -55
- package/frontend/src/chat/chat.html +68 -39
- package/frontend/src/chat/chat.js +26 -2
- package/frontend/src/clone-document/clone-document.html +7 -2
- package/frontend/src/clone-document/clone-document.js +1 -8
- package/frontend/src/create-dashboard/create-dashboard.html +11 -6
- package/frontend/src/create-dashboard/create-dashboard.js +0 -7
- package/frontend/src/create-document/create-document.html +15 -9
- package/frontend/src/create-document/create-document.js +5 -12
- package/frontend/src/dashboard/dashboard.html +14 -12
- package/frontend/src/dashboard/dashboard.js +21 -4
- package/frontend/src/dashboard/edit-dashboard/edit-dashboard.html +13 -7
- package/frontend/src/dashboard/edit-dashboard/edit-dashboard.js +16 -23
- package/frontend/src/dashboard-result/dashboard-chart/dashboard-chart.html +19 -17
- package/frontend/src/dashboard-result/dashboard-chart/dashboard-chart.js +97 -2
- package/frontend/src/dashboard-result/dashboard-map/dashboard-map.js +27 -3
- package/frontend/src/dashboard-result/dashboard-result.html +3 -3
- package/frontend/src/dashboard-result/dashboard-result.js +3 -0
- package/frontend/src/dashboard-result/dashboard-table/dashboard-table.html +34 -0
- package/frontend/src/dashboard-result/dashboard-table/dashboard-table.js +37 -0
- package/frontend/src/dashboards/dashboards.html +101 -109
- package/frontend/src/dashboards/dashboards.js +25 -1
- package/frontend/src/detail-default/detail-default.html +2 -2
- package/frontend/src/detail-default/detail-default.js +24 -3
- package/frontend/src/document/confirm-changes/confirm-changes.html +1 -1
- package/frontend/src/document/confirm-delete/confirm-delete.html +1 -1
- package/frontend/src/document/document.css +1 -1
- package/frontend/src/document/document.html +28 -28
- package/frontend/src/document/execute-script/execute-script.html +20 -21
- package/frontend/src/document/execute-script/execute-script.js +1 -43
- package/frontend/src/document-details/document-details.css +4 -9
- package/frontend/src/document-details/document-details.html +34 -33
- package/frontend/src/document-details/document-details.js +2 -53
- package/frontend/src/document-details/document-property/document-property.html +12 -12
- package/frontend/src/edit-array/edit-array.html +7 -6
- package/frontend/src/edit-array/edit-array.js +10 -50
- package/frontend/src/edit-boolean/edit-boolean.html +12 -12
- package/frontend/src/edit-date/edit-date.html +2 -2
- package/frontend/src/edit-default/edit-default.html +1 -1
- package/frontend/src/edit-string/edit-string.html +3 -3
- package/frontend/src/edit-subdocument/edit-subdocument.html +5 -3
- package/frontend/src/edit-subdocument/edit-subdocument.js +1 -15
- package/frontend/src/export-query-results/export-query-results.html +3 -3
- package/frontend/src/json-node/json-node.html +3 -3
- package/frontend/src/list-json/json-node.html +1 -1
- package/frontend/src/models/document-search/document-search.html +3 -3
- package/frontend/src/models/model-switcher/model-switcher.html +53 -0
- package/frontend/src/models/model-switcher/model-switcher.js +123 -0
- package/frontend/src/models/models.css +3 -10
- package/frontend/src/models/models.html +146 -80
- package/frontend/src/models/models.js +116 -7
- package/frontend/src/navbar/navbar.html +157 -97
- package/frontend/src/navbar/navbar.js +31 -12
- package/frontend/src/routes.js +1 -1
- package/frontend/src/splash/splash.html +5 -5
- package/frontend/src/task-by-name/task-by-name.html +77 -7
- package/frontend/src/task-by-name/task-by-name.js +84 -9
- package/frontend/src/task-single/task-single.html +29 -29
- package/frontend/src/task-single/task-single.js +10 -10
- package/frontend/src/tasks/task-details/task-details.html +43 -43
- package/frontend/src/tasks/task-details/task-details.js +9 -3
- package/frontend/src/tasks/tasks.html +36 -35
- package/frontend/src/tasks/tasks.js +27 -143
- package/frontend/src/team/new-invitation/new-invitation.html +8 -8
- package/frontend/src/team/team.html +27 -27
- package/frontend/src/update-document/update-document.html +7 -2
- package/frontend/src/update-document/update-document.js +2 -11
- package/package.json +3 -1
- package/tailwind.config.js +75 -11
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<async-button
|
|
15
15
|
type="submit"
|
|
16
16
|
@click="getWorkspaceCustomerPortalLink"
|
|
17
|
-
class="inline-flex items-center justify-center rounded-md border border-transparent bg-
|
|
17
|
+
class="inline-flex items-center justify-center rounded-md border border-transparent bg-primary py-1 px-2 text-sm font-medium text-primary-text shadow-sm hover:bg-primary-hover focus:outline-none focus:ring-2 focus:ring-forest-green-500 focus:ring-offset-2">
|
|
18
18
|
View in Stripe
|
|
19
19
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4 ml-1">
|
|
20
20
|
<path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" />
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div v-else-if="workspace && !workspace.subscriptionTier" class="mt-4 flex justify-between items-center">
|
|
26
26
|
<div>
|
|
27
27
|
<span class="font-bold">No active subscription</span>
|
|
28
|
-
<div class="text-sm text-
|
|
28
|
+
<div class="text-sm text-content-secondary">
|
|
29
29
|
You won't be able to invite your team until you activate a subscription
|
|
30
30
|
</div>
|
|
31
31
|
</div>
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<a
|
|
34
34
|
:href="paymentLink"
|
|
35
35
|
target="_blank"
|
|
36
|
-
class="inline-flex items-center justify-center rounded-md border border-transparent bg-
|
|
36
|
+
class="inline-flex items-center justify-center rounded-md border border-transparent bg-primary py-1 px-2 text-sm font-medium text-primary-text shadow-sm hover:bg-primary-hover focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2">
|
|
37
37
|
Subscribe With Stripe
|
|
38
38
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-4 h-4 ml-1">
|
|
39
39
|
<path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" />
|
|
@@ -52,21 +52,21 @@
|
|
|
52
52
|
<ul v-else role="list" class="divide-y divide-gray-100">
|
|
53
53
|
<li class="flex justify-between gap-x-6 py-5" v-for="user in users">
|
|
54
54
|
<div class="flex min-w-0 gap-x-4">
|
|
55
|
-
<img class="size-12 flex-none rounded-full bg-
|
|
55
|
+
<img class="size-12 flex-none rounded-full bg-page" :src="user.picture ?? 'images/logo.svg'" alt="">
|
|
56
56
|
<div class="min-w-0 flex-auto">
|
|
57
|
-
<p class="text-sm/6 font-semibold text-
|
|
57
|
+
<p class="text-sm/6 font-semibold text-content">
|
|
58
58
|
{{user.name || user.githubUsername}}
|
|
59
59
|
<span v-if="user.isFreeUser" class="ml-1 inline-flex items-center rounded-md bg-green-50 px-2 py-1 text-xs font-medium text-green-700 ring-1 ring-inset ring-green-600/20">Free</span>
|
|
60
60
|
</p>
|
|
61
|
-
<p class="mt-1 truncate text-xs/5 text-
|
|
61
|
+
<p class="mt-1 truncate text-xs/5 text-content-tertiary">{{user.email ?? 'No Email'}}</p>
|
|
62
62
|
</div>
|
|
63
63
|
</div>
|
|
64
64
|
<div class="hidden shrink-0 sm:flex sm:flex-col sm:items-end">
|
|
65
|
-
<p class="text-sm/6 text-
|
|
65
|
+
<p class="text-sm/6 text-content capitalize">{{getRolesForUser(user).join(', ')}}</p>
|
|
66
66
|
<div class="flex gap-3">
|
|
67
67
|
<button
|
|
68
68
|
type="button"
|
|
69
|
-
class="mt-1 text-xs/5 text-
|
|
69
|
+
class="mt-1 text-xs/5 text-content-tertiary cursor-pointer disabled:cursor-not-allowed disabled:text-gray-300"
|
|
70
70
|
:disabled="getRolesForUser(user).includes('owner')"
|
|
71
71
|
@click="openEditModal(user)">
|
|
72
72
|
Edit
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
@click="showNewInvitationModal = true"
|
|
94
94
|
:disabled="status === 'loading'"
|
|
95
95
|
:tier="workspace?.subscriptionTier"
|
|
96
|
-
class="block rounded-md bg-
|
|
96
|
+
class="block rounded-md bg-primary px-3 py-2 text-center text-sm font-semibold text-primary-text shadow-sm hover:bg-primary-hover disabled:bg-page0 disabled:cursor-not-allowed focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary">
|
|
97
97
|
New Invitation
|
|
98
98
|
<svg class="inline w-4 h-4 ml-1" v-if="workspace && !workspace.subscriptionTier" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
|
99
99
|
<path fill-rule="evenodd" d="M12 1.5a5.25 5.25 0 00-5.25 5.25v3a3 3 0 00-3 3v6.75a3 3 0 003 3h10.5a3 3 0 003-3v-6.75a3 3 0 00-3-3v-3c0-2.9-2.35-5.25-5.25-5.25zm3.75 8.25v-3a3.75 3.75 0 10-7.5 0v3h7.5z" clip-rule="evenodd" />
|
|
@@ -110,26 +110,26 @@
|
|
|
110
110
|
<table class="min-w-full divide-y divide-gray-300">
|
|
111
111
|
<thead>
|
|
112
112
|
<tr>
|
|
113
|
-
<th scope="col" class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-
|
|
114
|
-
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-
|
|
115
|
-
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-
|
|
116
|
-
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-
|
|
113
|
+
<th scope="col" class="py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-content sm:pl-0">GitHub Username</th>
|
|
114
|
+
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-content">Email</th>
|
|
115
|
+
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-content">Status</th>
|
|
116
|
+
<th scope="col" class="px-3 py-3.5 text-left text-sm font-semibold text-content">Role</th>
|
|
117
117
|
</tr>
|
|
118
118
|
</thead>
|
|
119
|
-
<tbody class="divide-y divide-gray-200 bg-
|
|
119
|
+
<tbody class="divide-y divide-gray-200 bg-surface">
|
|
120
120
|
<tr v-for="invitation in invitations">
|
|
121
121
|
<td class="whitespace-nowrap py-5 pl-4 pr-3 text-sm sm:pl-0">
|
|
122
122
|
{{invitation.githubUsername}}
|
|
123
123
|
</td>
|
|
124
|
-
<td class="whitespace-nowrap px-3 py-5 text-sm text-
|
|
124
|
+
<td class="whitespace-nowrap px-3 py-5 text-sm text-content-tertiary">
|
|
125
125
|
{{invitation.email}}
|
|
126
126
|
</td>
|
|
127
|
-
<td class="whitespace-nowrap px-3 py-5 text-sm text-
|
|
128
|
-
<span class="inline-flex items-center rounded-md bg-
|
|
127
|
+
<td class="whitespace-nowrap px-3 py-5 text-sm text-content-tertiary">
|
|
128
|
+
<span class="inline-flex items-center rounded-md bg-page px-2 py-1 text-xs font-medium text-content-secondary ring-1 ring-inset ring-gray-600/20">
|
|
129
129
|
Pending
|
|
130
130
|
</span>
|
|
131
131
|
</td>
|
|
132
|
-
<td class="whitespace-nowrap px-3 py-5 text-sm text-
|
|
132
|
+
<td class="whitespace-nowrap px-3 py-5 text-sm text-content-tertiary">
|
|
133
133
|
{{invitation.roles.join(', ')}}
|
|
134
134
|
</td>
|
|
135
135
|
</tr>
|
|
@@ -143,8 +143,8 @@
|
|
|
143
143
|
<svg class="mx-auto size-12 text-gray-400" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
|
144
144
|
<path vector-effect="non-scaling-stroke" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z" />
|
|
145
145
|
</svg>
|
|
146
|
-
<h3 class="mt-2 text-sm font-semibold text-
|
|
147
|
-
<p class="mt-1 text-sm text-
|
|
146
|
+
<h3 class="mt-2 text-sm font-semibold text-content">No invitations</h3>
|
|
147
|
+
<p class="mt-1 text-sm text-content-tertiary">You have no outstanding invitations</p>
|
|
148
148
|
</div>
|
|
149
149
|
</div>
|
|
150
150
|
</div>
|
|
@@ -165,32 +165,32 @@
|
|
|
165
165
|
</div>
|
|
166
166
|
|
|
167
167
|
<div>
|
|
168
|
-
<div class="text-sm/6 font-semibold text-
|
|
168
|
+
<div class="text-sm/6 font-semibold text-content">
|
|
169
169
|
{{showEditModal.user.name || showEditModal.user.githubUsername}}
|
|
170
170
|
</div>
|
|
171
|
-
<div class="text-xs/5 text-
|
|
171
|
+
<div class="text-xs/5 text-content-tertiary">
|
|
172
172
|
{{showEditModal.user.email ?? 'No Email'}}
|
|
173
173
|
</div>
|
|
174
174
|
</div>
|
|
175
175
|
|
|
176
176
|
<div>
|
|
177
|
-
<label for="editRole" class="block text-sm/6 font-medium text-
|
|
177
|
+
<label for="editRole" class="block text-sm/6 font-medium text-content">Role</label>
|
|
178
178
|
<div class="mt-2 grid grid-cols-1">
|
|
179
179
|
<select
|
|
180
180
|
id="editRole"
|
|
181
181
|
name="editRole"
|
|
182
182
|
v-model="showEditModal.role"
|
|
183
|
-
class="col-start-1 row-start-1 w-full appearance-none rounded-md bg-
|
|
183
|
+
class="col-start-1 row-start-1 w-full appearance-none rounded-md bg-surface py-1.5 pl-3 pr-8 text-base text-content outline outline-1 -outline-offset-1 outline-edge-strong focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-primary sm:text-sm/6">
|
|
184
184
|
<option value="admin" :disabled="disableRoleOption('admin')">Admin</option>
|
|
185
185
|
<option value="member" :disabled="disableRoleOption('member')">Member</option>
|
|
186
186
|
<option value="readonly" :disabled="disableRoleOption('readonly')">Read-only</option>
|
|
187
187
|
<option value="dashboards" :disabled="disableRoleOption('dashboards')">Dashboards Only</option>
|
|
188
188
|
</select>
|
|
189
|
-
<svg class="pointer-events-none col-start-1 row-start-1 mr-2 size-5 self-center justify-self-end text-
|
|
189
|
+
<svg class="pointer-events-none col-start-1 row-start-1 mr-2 size-5 self-center justify-self-end text-content-tertiary sm:size-4" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-slot="icon">
|
|
190
190
|
<path fill-rule="evenodd" d="M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" />
|
|
191
191
|
</svg>
|
|
192
192
|
</div>
|
|
193
|
-
<div v-if="!workspace?.subscriptionTier" class="mt-2 text-sm text-
|
|
193
|
+
<div v-if="!workspace?.subscriptionTier" class="mt-2 text-sm text-content-secondary">
|
|
194
194
|
You can only assign the "Dashboards Only" role until you activate a subscription.
|
|
195
195
|
</div>
|
|
196
196
|
</div>
|
|
@@ -199,7 +199,7 @@
|
|
|
199
199
|
<async-button
|
|
200
200
|
@click="updateWorkspaceMember"
|
|
201
201
|
:disabled="showEditModal.role === showEditModal.originalRole"
|
|
202
|
-
class="border-0 mt-0 flex w-full items-center justify-center gap-3 rounded-md bg-
|
|
202
|
+
class="border-0 mt-0 flex w-full items-center justify-center gap-3 rounded-md bg-primary hover:bg-primary-hover px-3 py-1.5 text-primary-text focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary">
|
|
203
203
|
<span class="text-sm font-semibold leading-6">Save</span>
|
|
204
204
|
</async-button>
|
|
205
205
|
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
<div>
|
|
2
2
|
<div class="mb-2">
|
|
3
|
-
<
|
|
3
|
+
<ace-editor
|
|
4
|
+
v-model="editorValue"
|
|
5
|
+
mode="javascript"
|
|
6
|
+
:line-numbers="true"
|
|
7
|
+
class="h-[300px] w-full"
|
|
8
|
+
/>
|
|
4
9
|
</div>
|
|
5
|
-
<button @click="updateDocument()" class="rounded-md bg-
|
|
10
|
+
<button @click="updateDocument()" class="rounded-md bg-primary px-2.5 py-1.5 text-sm font-semibold text-primary-text shadow-sm hover:bg-primary-hover focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-teal-600">Submit</button>
|
|
6
11
|
<div v-if="errors.length > 0" class="rounded-md bg-red-50 p-4 mt-1">
|
|
7
12
|
<div class="flex">
|
|
8
13
|
<div class="flex-shrink-0">
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
const api = require('../api');
|
|
4
|
-
|
|
5
4
|
const { BSON, EJSON } = require('mongodb/lib/bson');
|
|
6
5
|
|
|
7
6
|
const ObjectId = new Proxy(BSON.ObjectId, {
|
|
@@ -21,13 +20,13 @@ module.exports = app => app.component('update-document', {
|
|
|
21
20
|
template,
|
|
22
21
|
data: function() {
|
|
23
22
|
return {
|
|
24
|
-
|
|
23
|
+
editorValue: '{\n \n}',
|
|
25
24
|
errors: []
|
|
26
25
|
};
|
|
27
26
|
},
|
|
28
27
|
methods: {
|
|
29
28
|
async updateDocument() {
|
|
30
|
-
const data = EJSON.serialize(eval(`(${this.
|
|
29
|
+
const data = EJSON.serialize(eval(`(${this.editorValue})`));
|
|
31
30
|
try {
|
|
32
31
|
if (this.multiple) {
|
|
33
32
|
const ids = this.document.map(x => x._id);
|
|
@@ -52,13 +51,5 @@ module.exports = app => app.component('update-document', {
|
|
|
52
51
|
throw err;
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
|
-
},
|
|
56
|
-
mounted: function() {
|
|
57
|
-
this.$refs.codeEditor.value = '{\n \n}';
|
|
58
|
-
this.editor = CodeMirror.fromTextArea(this.$refs.codeEditor, {
|
|
59
|
-
mode: 'javascript',
|
|
60
|
-
lineNumbers: true,
|
|
61
|
-
smartIndent: false
|
|
62
|
-
});
|
|
63
54
|
}
|
|
64
55
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mongoosejs/studio",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "A Mongoose-native MongoDB UI with schema-aware autocomplete, AI-assisted queries, and dashboards that understand your models - not just your data.",
|
|
5
5
|
"homepage": "https://mongoosestudio.app/",
|
|
6
6
|
"repository": {
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"@ai-sdk/anthropic": "2.x",
|
|
13
13
|
"@ai-sdk/google": "2.x",
|
|
14
14
|
"@ai-sdk/openai": "2.x",
|
|
15
|
+
"ace-builds": "^1.43.6",
|
|
15
16
|
"ai": "5.x",
|
|
16
17
|
"archetype": "0.13.1",
|
|
17
18
|
"csv-stringify": "6.3.0",
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
"extrovert": "^0.2.0",
|
|
20
21
|
"marked": "15.0.12",
|
|
21
22
|
"node-inspect-extracted": "3.x",
|
|
23
|
+
"regexp.escape": "^2.0.1",
|
|
22
24
|
"tailwindcss": "3.4.0",
|
|
23
25
|
"vue": "3.x",
|
|
24
26
|
"vue-toastification": "^2.0.0-rc.5",
|
package/tailwind.config.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module.exports = {
|
|
4
4
|
mode: 'jit',
|
|
5
|
+
darkMode: 'class',
|
|
5
6
|
content: ['./frontend/src/**/*.html', './frontend/src/**/*.js', './frontend/src/**/**/*.html', './frontend/src/**/**/*.js'],
|
|
6
7
|
corePlugins: {
|
|
7
8
|
container: true
|
|
@@ -10,6 +11,30 @@ module.exports = {
|
|
|
10
11
|
theme: {
|
|
11
12
|
extend: {
|
|
12
13
|
colors: {
|
|
14
|
+
/* Semantic tokens – swap automatically in .dark via CSS variables */
|
|
15
|
+
'primary': {
|
|
16
|
+
DEFAULT: 'var(--color-primary)',
|
|
17
|
+
'hover': 'var(--color-primary-hover)',
|
|
18
|
+
'subtle': 'var(--color-primary-subtle)',
|
|
19
|
+
'text': 'var(--color-primary-text)',
|
|
20
|
+
},
|
|
21
|
+
'surface': {
|
|
22
|
+
DEFAULT: 'var(--color-surface)',
|
|
23
|
+
'hover': 'var(--color-surface-hover)',
|
|
24
|
+
},
|
|
25
|
+
'page': 'var(--color-page)',
|
|
26
|
+
'muted': 'var(--color-muted)',
|
|
27
|
+
'subtle': 'var(--color-subtle)',
|
|
28
|
+
'content': {
|
|
29
|
+
DEFAULT: 'var(--color-content)',
|
|
30
|
+
'secondary': 'var(--color-content-secondary)',
|
|
31
|
+
'tertiary': 'var(--color-content-tertiary)',
|
|
32
|
+
'disabled': 'var(--color-content-disabled)',
|
|
33
|
+
},
|
|
34
|
+
'edge': {
|
|
35
|
+
DEFAULT: 'var(--color-edge)',
|
|
36
|
+
'strong': 'var(--color-edge-strong)',
|
|
37
|
+
},
|
|
13
38
|
'puerto-rico': {
|
|
14
39
|
'50': '#eefffb',
|
|
15
40
|
'100': '#c6fff3',
|
|
@@ -24,17 +49,17 @@ module.exports = {
|
|
|
24
49
|
'950': '#003432',
|
|
25
50
|
},
|
|
26
51
|
'teal': {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
52
|
+
'50': '#eefffc',
|
|
53
|
+
'100': '#c5fffa',
|
|
54
|
+
'200': '#8bfff5',
|
|
55
|
+
'300': '#4afef0',
|
|
56
|
+
'400': '#15ece2',
|
|
57
|
+
'500': '#00d0c9',
|
|
58
|
+
'600': '#00a8a5',
|
|
59
|
+
'700': '#008080',
|
|
60
|
+
'800': '#066769',
|
|
61
|
+
'900': '#0a5757',
|
|
62
|
+
'950': '#003235',
|
|
38
63
|
},
|
|
39
64
|
'ultramarine': {
|
|
40
65
|
'50': '#f1f5ff',
|
|
@@ -74,6 +99,45 @@ module.exports = {
|
|
|
74
99
|
'800': '#8d2727',
|
|
75
100
|
'900': '#752727',
|
|
76
101
|
'950': '#3f1010',
|
|
102
|
+
},
|
|
103
|
+
'merlot': {
|
|
104
|
+
'50': '#fef3f2',
|
|
105
|
+
'100': '#fde8e6',
|
|
106
|
+
'200': '#fad3d1',
|
|
107
|
+
'300': '#f6adab',
|
|
108
|
+
'400': '#ef807d',
|
|
109
|
+
'500': '#e54e4f',
|
|
110
|
+
'600': '#d12d36',
|
|
111
|
+
'700': '#b0202b',
|
|
112
|
+
'800': '#931e2b',
|
|
113
|
+
'900': '#7f1d2b',
|
|
114
|
+
'950': '#460b12',
|
|
115
|
+
},
|
|
116
|
+
'shark': {
|
|
117
|
+
'50': '#fafafa',
|
|
118
|
+
'100': '#f3f4f6',
|
|
119
|
+
'200': '#e1e5ea',
|
|
120
|
+
'300': '#d0d6dc',
|
|
121
|
+
'400': '#98a5b3',
|
|
122
|
+
'500': '#687583',
|
|
123
|
+
'600': '#495664',
|
|
124
|
+
'700': '#38424d',
|
|
125
|
+
'800': '#212529',
|
|
126
|
+
'900': '#15191e',
|
|
127
|
+
'950': '#070a0d',
|
|
128
|
+
},
|
|
129
|
+
'steel-blue': {
|
|
130
|
+
'50': '#f4f7fb',
|
|
131
|
+
'100': '#e9eef5',
|
|
132
|
+
'200': '#cedae9',
|
|
133
|
+
'300': '#a2bbd7',
|
|
134
|
+
'400': '#7097c0',
|
|
135
|
+
'500': '#4f7cac',
|
|
136
|
+
'600': '#3b618e',
|
|
137
|
+
'700': '#314e73',
|
|
138
|
+
'800': '#2c4360',
|
|
139
|
+
'900': '#293a51',
|
|
140
|
+
'950': '#1b2536',
|
|
77
141
|
}
|
|
78
142
|
}
|
|
79
143
|
}
|