@escalated-dev/escalated 0.7.0 → 0.8.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.
- package/LICENSE +21 -21
- package/README.md +36 -1
- package/package.json +16 -7
- package/src/components/ActiveChatsPanel.vue +246 -0
- package/src/components/ActivityTimeline.stories.js +55 -55
- package/src/components/ActivityTimeline.vue +83 -83
- package/src/components/AdminDashboard.stories.js +1423 -1095
- package/src/components/AgentLoadIndicator.stories.js +37 -37
- package/src/components/AgentLoadIndicator.vue +49 -49
- package/src/components/AgentPerformanceCard.vue +44 -44
- package/src/components/ArticleEditor.vue +82 -82
- package/src/components/AssigneeSelect.vue +37 -37
- package/src/components/AttachmentList.vue +13 -1
- package/src/components/AuditLogEntry.vue +95 -95
- package/src/components/BulkActionBar.vue +166 -166
- package/src/components/CategoryTree.vue +89 -89
- package/src/components/ChartWidget.vue +46 -46
- package/src/components/ChatActionBar.vue +226 -0
- package/src/components/ChatBubble.vue +162 -0
- package/src/components/ChatComposer.vue +308 -0
- package/src/components/ChatQueue.vue +222 -0
- package/src/components/ChatThread.vue +197 -0
- package/src/components/CollisionWarning.stories.js +30 -30
- package/src/components/CollisionWarning.vue +68 -68
- package/src/components/ConditionalFieldRules.vue +135 -135
- package/src/components/ContextPanel.vue +66 -66
- package/src/components/ContextPanelSection.vue +65 -65
- package/src/components/CustomFieldRenderer.vue +159 -159
- package/src/components/EscalatedLayout.vue +35 -6
- package/src/components/FileDropzone.vue +57 -57
- package/src/components/FollowButton.stories.js +30 -30
- package/src/components/FollowButton.vue +88 -88
- package/src/components/KeyboardShortcutHelp.vue +213 -213
- package/src/components/KnowledgePanel.vue +122 -122
- package/src/components/KpiCard.stories.js +32 -32
- package/src/components/KpiCard.vue +88 -88
- package/src/components/MacroDropdown.vue +150 -150
- package/src/components/MentionDropdown.vue +154 -0
- package/src/components/MetricComparison.vue +89 -0
- package/src/components/PercentileChart.vue +67 -0
- package/src/components/PeriodSelector.vue +98 -0
- package/src/components/PermissionMatrix.vue +107 -107
- package/src/components/PinnedNotes.vue +129 -129
- package/src/components/PluginSlot.vue +68 -62
- package/src/components/PresenceIndicator.vue +46 -2
- package/src/components/PriorityBadge.stories.js +33 -33
- package/src/components/PriorityBadge.vue +46 -46
- package/src/components/ReplyComposer.vue +81 -18
- package/src/components/ReplyThread.vue +40 -2
- package/src/components/ReportChart.vue +395 -0
- package/src/components/ReportExportButton.vue +108 -0
- package/src/components/SatisfactionRating.vue +180 -180
- package/src/components/SaveViewDialog.vue +172 -0
- package/src/components/SavedViewSidebar.vue +208 -0
- package/src/components/ScheduleEditor.vue +104 -104
- package/src/components/SideConversation.vue +165 -165
- package/src/components/SideConversationList.vue +147 -147
- package/src/components/SkillTagManager.vue +83 -79
- package/src/components/SlaComplianceChart.vue +46 -53
- package/src/components/SlaTimer.stories.js +35 -35
- package/src/components/SlaTimer.vue +62 -62
- package/src/components/SnoozeButton.vue +247 -0
- package/src/components/StatsCard.stories.js +24 -24
- package/src/components/StatsCard.vue +58 -58
- package/src/components/StatusBadge.stories.js +53 -53
- package/src/components/StatusBadge.vue +78 -78
- package/src/components/TagSelect.vue +84 -84
- package/src/components/TicketFilters.vue +270 -225
- package/src/components/TicketLinkPanel.vue +193 -193
- package/src/components/TicketList.vue +655 -594
- package/src/components/TicketMergeDialog.vue +157 -157
- package/src/components/TicketSplitDialog.vue +98 -0
- package/src/components/TotpInput.stories.js +9 -9
- package/src/components/TotpInput.vue +81 -81
- package/src/components/TwoFactorSetup.vue +113 -113
- package/src/components/VariableTokenInput.vue +111 -0
- package/src/components/WorkflowActionConfig.vue +287 -0
- package/src/components/WorkflowActionList.vue +350 -0
- package/src/components/WorkflowConditionBuilder.vue +265 -0
- package/src/components/WorkflowTriggerSelector.vue +125 -0
- package/src/composables/useChat.js +187 -0
- package/src/composables/useI18n.js +30 -8
- package/src/composables/useKeyboardShortcuts.js +46 -46
- package/src/composables/useMentions.js +134 -0
- package/src/composables/usePluginExtensions.js +159 -159
- package/src/composables/usePluginHooks.js +65 -65
- package/src/composables/useRealtime.js +182 -0
- package/src/defineEscalatedPlugin.js +76 -76
- package/src/index.js +84 -72
- package/src/locales/README.md +13 -0
- package/src/locales/ar.json +727 -0
- package/src/locales/de.json +678 -430
- package/src/locales/en.json +717 -455
- package/src/locales/es.json +679 -430
- package/src/locales/fr.json +680 -431
- package/src/locales/index.js +12 -2
- package/src/locales/it.json +727 -0
- package/src/locales/ja.json +727 -0
- package/src/locales/ko.json +727 -0
- package/src/locales/nl.json +727 -0
- package/src/locales/pl.json +727 -0
- package/src/locales/pt-BR.json +727 -0
- package/src/locales/ru.json +727 -0
- package/src/locales/tr.json +727 -0
- package/src/locales/zh-CN.json +727 -0
- package/src/pages/Admin/ApiTokens/Index.vue +381 -381
- package/src/pages/Admin/AuditLog/Index.vue +154 -154
- package/src/pages/Admin/BusinessHours/Form.vue +172 -172
- package/src/pages/Admin/BusinessHours/Index.vue +113 -113
- package/src/pages/Admin/CannedResponses/Index.vue +127 -127
- package/src/pages/Admin/Capacity/Index.vue +134 -134
- package/src/pages/Admin/CustomFields/Form.vue +195 -195
- package/src/pages/Admin/CustomFields/Index.vue +134 -134
- package/src/pages/Admin/CustomObjects/Form.vue +202 -202
- package/src/pages/Admin/CustomObjects/Index.vue +127 -127
- package/src/pages/Admin/CustomObjects/Records.vue +228 -228
- package/src/pages/Admin/Departments/Form.vue +75 -75
- package/src/pages/Admin/Departments/Index.vue +110 -109
- package/src/pages/Admin/EscalationRules/Form.vue +157 -157
- package/src/pages/Admin/EscalationRules/Index.vue +178 -178
- package/src/pages/Admin/Import/Connect.vue +0 -1
- package/src/pages/Admin/Import/Index.vue +1 -1
- package/src/pages/Admin/Import/Progress.vue +1 -1
- package/src/pages/Admin/KnowledgeBase/Articles/Form.vue +142 -142
- package/src/pages/Admin/KnowledgeBase/Articles/Index.vue +195 -195
- package/src/pages/Admin/KnowledgeBase/Categories/Index.vue +193 -193
- package/src/pages/Admin/Macros/Index.vue +448 -448
- package/src/pages/Admin/Plugins/Index.vue +327 -327
- package/src/pages/Admin/Reports/AgentDetail.vue +132 -0
- package/src/pages/Admin/Reports/AgentMetrics.vue +115 -115
- package/src/pages/Admin/Reports/AgentRanking.vue +246 -0
- package/src/pages/Admin/Reports/Cohorts.vue +180 -0
- package/src/pages/Admin/Reports/Comparison.vue +141 -0
- package/src/pages/Admin/Reports/CsatReport.vue +127 -127
- package/src/pages/Admin/Reports/Dashboard.vue +36 -21
- package/src/pages/Admin/Reports/ResolutionTimes.vue +164 -0
- package/src/pages/Admin/Reports/ResponseTimes.vue +164 -0
- package/src/pages/Admin/Reports/SlaReport.vue +162 -166
- package/src/pages/Admin/Reports/SlaTrends.vue +183 -0
- package/src/pages/Admin/Reports.vue +206 -206
- package/src/pages/Admin/Roles/Form.vue +71 -71
- package/src/pages/Admin/Roles/Index.vue +122 -122
- package/src/pages/Admin/Settings/CsatSettings.vue +165 -165
- package/src/pages/Admin/Settings/DataRetention.vue +182 -182
- package/src/pages/Admin/Settings/EmailSettings.vue +243 -243
- package/src/pages/Admin/Settings/Sandbox.vue +135 -135
- package/src/pages/Admin/Settings/SsoSettings.vue +218 -218
- package/src/pages/Admin/Settings/TwoFactor.vue +110 -110
- package/src/pages/Admin/Settings.vue +1008 -468
- package/src/pages/Admin/Skills/Form.vue +193 -53
- package/src/pages/Admin/Skills/Index.vue +105 -94
- package/src/pages/Admin/SlaPolicies/Form.vue +118 -118
- package/src/pages/Admin/SlaPolicies/Index.vue +121 -120
- package/src/pages/Admin/Statuses/Form.vue +114 -114
- package/src/pages/Admin/Statuses/Index.vue +153 -153
- package/src/pages/Admin/Tags/Index.vue +191 -191
- package/src/pages/Admin/Tickets/Index.vue +126 -91
- package/src/pages/Admin/Tickets/Show.vue +29 -0
- package/src/pages/Admin/Users/Index.vue +145 -0
- package/src/pages/Admin/Webhooks/DeliveryLog.vue +120 -120
- package/src/pages/Admin/Webhooks/Form.vue +110 -110
- package/src/pages/Admin/Webhooks/Index.vue +136 -136
- package/src/pages/Admin/Workflows/Builder.vue +207 -0
- package/src/pages/Admin/Workflows/Index.vue +235 -0
- package/src/pages/Admin/Workflows/Logs.vue +286 -0
- package/src/pages/Agent/TicketIndex.vue +112 -88
- package/src/pages/Agent/TicketShow.vue +192 -60
- package/src/pages/Customer/Create.vue +1 -1
- package/src/pages/Customer/Index.vue +26 -1
- package/src/pages/Customer/KnowledgeBase/Article.vue +4 -2
- package/src/pages/Customer/KnowledgeBase/Index.vue +151 -151
- package/src/pages/Customer/Show.vue +69 -63
- package/src/pages/Guest/Create.vue +40 -15
- package/src/pages/Guest/Show.vue +124 -93
- package/src/plugin.js +26 -1
- package/src/utils/mentionHighlight.js +24 -0
- package/src/utils/sanitizeHtml.js +78 -64
- package/src/widget/EscalatedWidget.vue +804 -0
- package/src/widget/index.js +254 -0
- package/src/pages/Admin/Automations/Form.vue +0 -184
- package/src/pages/Admin/Automations/Index.vue +0 -129
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
<script setup>
|
|
2
|
-
import EscalatedLayout from '../../../components/EscalatedLayout.vue';
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<template>
|
|
6
|
-
<EscalatedLayout title="Sandbox Environment">
|
|
7
|
-
<div class="mx-auto max-w-2xl space-y-6">
|
|
8
|
-
<!-- Info -->
|
|
9
|
-
<div class="rounded-xl border border-[var(--esc-panel-border)] bg-[var(--esc-panel-surface)] p-6">
|
|
10
|
-
<h3 class="mb-4 text-sm font-semibold text-[var(--esc-panel-text)]">Sandbox Environment</h3>
|
|
11
|
-
<p class="text-sm text-[var(--esc-panel-text-tertiary)]">
|
|
12
|
-
A sandbox environment allows you to test configuration changes, automations, and workflows without
|
|
13
|
-
affecting your production data. Changes made in a sandbox can be promoted to production once
|
|
14
|
-
validated.
|
|
15
|
-
</p>
|
|
16
|
-
<div
|
|
17
|
-
class="mt-4 rounded-lg border border-[var(--esc-panel-border)] bg-[var(--esc-panel-surface-alt)] p-4"
|
|
18
|
-
>
|
|
19
|
-
<h4 class="mb-2 text-sm font-medium text-[var(--esc-panel-text-secondary)]">Key Features</h4>
|
|
20
|
-
<ul class="space-y-2 text-sm text-[var(--esc-panel-text-muted)]">
|
|
21
|
-
<li class="flex items-start gap-2">
|
|
22
|
-
<svg
|
|
23
|
-
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
24
|
-
fill="none"
|
|
25
|
-
stroke="currentColor"
|
|
26
|
-
stroke-width="1.5"
|
|
27
|
-
viewBox="0 0 24 24"
|
|
28
|
-
>
|
|
29
|
-
<path
|
|
30
|
-
stroke-linecap="round"
|
|
31
|
-
stroke-linejoin="round"
|
|
32
|
-
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
33
|
-
/>
|
|
34
|
-
</svg>
|
|
35
|
-
Isolated copy of your helpdesk configuration
|
|
36
|
-
</li>
|
|
37
|
-
<li class="flex items-start gap-2">
|
|
38
|
-
<svg
|
|
39
|
-
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
40
|
-
fill="none"
|
|
41
|
-
stroke="currentColor"
|
|
42
|
-
stroke-width="1.5"
|
|
43
|
-
viewBox="0 0 24 24"
|
|
44
|
-
>
|
|
45
|
-
<path
|
|
46
|
-
stroke-linecap="round"
|
|
47
|
-
stroke-linejoin="round"
|
|
48
|
-
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
49
|
-
/>
|
|
50
|
-
</svg>
|
|
51
|
-
Test automations, triggers, and SLA policies safely
|
|
52
|
-
</li>
|
|
53
|
-
<li class="flex items-start gap-2">
|
|
54
|
-
<svg
|
|
55
|
-
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
56
|
-
fill="none"
|
|
57
|
-
stroke="currentColor"
|
|
58
|
-
stroke-width="1.5"
|
|
59
|
-
viewBox="0 0 24 24"
|
|
60
|
-
>
|
|
61
|
-
<path
|
|
62
|
-
stroke-linecap="round"
|
|
63
|
-
stroke-linejoin="round"
|
|
64
|
-
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
65
|
-
/>
|
|
66
|
-
</svg>
|
|
67
|
-
Promote validated changes to production
|
|
68
|
-
</li>
|
|
69
|
-
<li class="flex items-start gap-2">
|
|
70
|
-
<svg
|
|
71
|
-
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
72
|
-
fill="none"
|
|
73
|
-
stroke="currentColor"
|
|
74
|
-
stroke-width="1.5"
|
|
75
|
-
viewBox="0 0 24 24"
|
|
76
|
-
>
|
|
77
|
-
<path
|
|
78
|
-
stroke-linecap="round"
|
|
79
|
-
stroke-linejoin="round"
|
|
80
|
-
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
81
|
-
/>
|
|
82
|
-
</svg>
|
|
83
|
-
Sandboxes auto-expire after 30 days
|
|
84
|
-
</li>
|
|
85
|
-
</ul>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<!-- Status -->
|
|
90
|
-
<div class="rounded-xl border border-[var(--esc-panel-border)] bg-[var(--esc-panel-surface)] p-6">
|
|
91
|
-
<h3 class="mb-4 text-sm font-semibold text-[var(--esc-panel-text)]">Sandbox Status</h3>
|
|
92
|
-
<div class="rounded-lg border border-dashed border-[var(--esc-panel-active)] px-6 py-8 text-center">
|
|
93
|
-
<svg
|
|
94
|
-
class="mx-auto mb-3 h-10 w-10 text-[var(--esc-panel-text-muted)]"
|
|
95
|
-
fill="none"
|
|
96
|
-
stroke="currentColor"
|
|
97
|
-
stroke-width="1.5"
|
|
98
|
-
viewBox="0 0 24 24"
|
|
99
|
-
>
|
|
100
|
-
<path
|
|
101
|
-
stroke-linecap="round"
|
|
102
|
-
stroke-linejoin="round"
|
|
103
|
-
d="M21 7.5l-2.25-1.313M21 7.5v2.25m0-2.25l-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3l2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75l2.25-1.313M12 21.75V19.5m0 2.25l-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25"
|
|
104
|
-
/>
|
|
105
|
-
</svg>
|
|
106
|
-
<p class="text-sm text-[var(--esc-panel-text-muted)]">No sandbox active.</p>
|
|
107
|
-
<p class="mt-1 text-xs text-[var(--esc-panel-text-muted)]">
|
|
108
|
-
Create a sandbox to start testing changes safely.
|
|
109
|
-
</p>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
|
|
113
|
-
<!-- Create Button -->
|
|
114
|
-
<div class="flex justify-end">
|
|
115
|
-
<div class="group relative">
|
|
116
|
-
<button
|
|
117
|
-
type="button"
|
|
118
|
-
disabled
|
|
119
|
-
class="cursor-not-allowed rounded-lg bg-gradient-to-r from-[var(--esc-panel-accent)]/50 to-[var(--esc-panel-accent-secondary)]/50 px-5 py-2 text-sm font-medium text-white/50 shadow-lg shadow-[var(--esc-panel-bg)]/20"
|
|
120
|
-
>
|
|
121
|
-
Create Sandbox
|
|
122
|
-
</button>
|
|
123
|
-
<div
|
|
124
|
-
class="pointer-events-none absolute bottom-full left-1/2 mb-2 -translate-x-1/2 rounded-lg bg-neutral-800 px-3 py-2 text-xs text-[var(--esc-panel-text-secondary)] opacity-0 shadow-lg transition-opacity group-hover:opacity-100"
|
|
125
|
-
>
|
|
126
|
-
Coming soon — requires infrastructure setup
|
|
127
|
-
<div
|
|
128
|
-
class="absolute left-1/2 top-full -translate-x-1/2 border-4 border-transparent border-t-neutral-800"
|
|
129
|
-
></div>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
</EscalatedLayout>
|
|
135
|
-
</template>
|
|
1
|
+
<script setup>
|
|
2
|
+
import EscalatedLayout from '../../../components/EscalatedLayout.vue';
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<template>
|
|
6
|
+
<EscalatedLayout title="Sandbox Environment">
|
|
7
|
+
<div class="mx-auto max-w-2xl space-y-6">
|
|
8
|
+
<!-- Info -->
|
|
9
|
+
<div class="rounded-xl border border-[var(--esc-panel-border)] bg-[var(--esc-panel-surface)] p-6">
|
|
10
|
+
<h3 class="mb-4 text-sm font-semibold text-[var(--esc-panel-text)]">Sandbox Environment</h3>
|
|
11
|
+
<p class="text-sm text-[var(--esc-panel-text-tertiary)]">
|
|
12
|
+
A sandbox environment allows you to test configuration changes, automations, and workflows without
|
|
13
|
+
affecting your production data. Changes made in a sandbox can be promoted to production once
|
|
14
|
+
validated.
|
|
15
|
+
</p>
|
|
16
|
+
<div
|
|
17
|
+
class="mt-4 rounded-lg border border-[var(--esc-panel-border)] bg-[var(--esc-panel-surface-alt)] p-4"
|
|
18
|
+
>
|
|
19
|
+
<h4 class="mb-2 text-sm font-medium text-[var(--esc-panel-text-secondary)]">Key Features</h4>
|
|
20
|
+
<ul class="space-y-2 text-sm text-[var(--esc-panel-text-muted)]">
|
|
21
|
+
<li class="flex items-start gap-2">
|
|
22
|
+
<svg
|
|
23
|
+
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
24
|
+
fill="none"
|
|
25
|
+
stroke="currentColor"
|
|
26
|
+
stroke-width="1.5"
|
|
27
|
+
viewBox="0 0 24 24"
|
|
28
|
+
>
|
|
29
|
+
<path
|
|
30
|
+
stroke-linecap="round"
|
|
31
|
+
stroke-linejoin="round"
|
|
32
|
+
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
33
|
+
/>
|
|
34
|
+
</svg>
|
|
35
|
+
Isolated copy of your helpdesk configuration
|
|
36
|
+
</li>
|
|
37
|
+
<li class="flex items-start gap-2">
|
|
38
|
+
<svg
|
|
39
|
+
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
40
|
+
fill="none"
|
|
41
|
+
stroke="currentColor"
|
|
42
|
+
stroke-width="1.5"
|
|
43
|
+
viewBox="0 0 24 24"
|
|
44
|
+
>
|
|
45
|
+
<path
|
|
46
|
+
stroke-linecap="round"
|
|
47
|
+
stroke-linejoin="round"
|
|
48
|
+
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
49
|
+
/>
|
|
50
|
+
</svg>
|
|
51
|
+
Test automations, triggers, and SLA policies safely
|
|
52
|
+
</li>
|
|
53
|
+
<li class="flex items-start gap-2">
|
|
54
|
+
<svg
|
|
55
|
+
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
56
|
+
fill="none"
|
|
57
|
+
stroke="currentColor"
|
|
58
|
+
stroke-width="1.5"
|
|
59
|
+
viewBox="0 0 24 24"
|
|
60
|
+
>
|
|
61
|
+
<path
|
|
62
|
+
stroke-linecap="round"
|
|
63
|
+
stroke-linejoin="round"
|
|
64
|
+
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
65
|
+
/>
|
|
66
|
+
</svg>
|
|
67
|
+
Promote validated changes to production
|
|
68
|
+
</li>
|
|
69
|
+
<li class="flex items-start gap-2">
|
|
70
|
+
<svg
|
|
71
|
+
class="mt-0.5 h-4 w-4 shrink-0 text-[var(--esc-panel-text-muted)]"
|
|
72
|
+
fill="none"
|
|
73
|
+
stroke="currentColor"
|
|
74
|
+
stroke-width="1.5"
|
|
75
|
+
viewBox="0 0 24 24"
|
|
76
|
+
>
|
|
77
|
+
<path
|
|
78
|
+
stroke-linecap="round"
|
|
79
|
+
stroke-linejoin="round"
|
|
80
|
+
d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
81
|
+
/>
|
|
82
|
+
</svg>
|
|
83
|
+
Sandboxes auto-expire after 30 days
|
|
84
|
+
</li>
|
|
85
|
+
</ul>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<!-- Status -->
|
|
90
|
+
<div class="rounded-xl border border-[var(--esc-panel-border)] bg-[var(--esc-panel-surface)] p-6">
|
|
91
|
+
<h3 class="mb-4 text-sm font-semibold text-[var(--esc-panel-text)]">Sandbox Status</h3>
|
|
92
|
+
<div class="rounded-lg border border-dashed border-[var(--esc-panel-active)] px-6 py-8 text-center">
|
|
93
|
+
<svg
|
|
94
|
+
class="mx-auto mb-3 h-10 w-10 text-[var(--esc-panel-text-muted)]"
|
|
95
|
+
fill="none"
|
|
96
|
+
stroke="currentColor"
|
|
97
|
+
stroke-width="1.5"
|
|
98
|
+
viewBox="0 0 24 24"
|
|
99
|
+
>
|
|
100
|
+
<path
|
|
101
|
+
stroke-linecap="round"
|
|
102
|
+
stroke-linejoin="round"
|
|
103
|
+
d="M21 7.5l-2.25-1.313M21 7.5v2.25m0-2.25l-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3l2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75l2.25-1.313M12 21.75V19.5m0 2.25l-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25"
|
|
104
|
+
/>
|
|
105
|
+
</svg>
|
|
106
|
+
<p class="text-sm text-[var(--esc-panel-text-muted)]">No sandbox active.</p>
|
|
107
|
+
<p class="mt-1 text-xs text-[var(--esc-panel-text-muted)]">
|
|
108
|
+
Create a sandbox to start testing changes safely.
|
|
109
|
+
</p>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<!-- Create Button -->
|
|
114
|
+
<div class="flex justify-end">
|
|
115
|
+
<div class="group relative">
|
|
116
|
+
<button
|
|
117
|
+
type="button"
|
|
118
|
+
disabled
|
|
119
|
+
class="cursor-not-allowed rounded-lg bg-gradient-to-r from-[var(--esc-panel-accent)]/50 to-[var(--esc-panel-accent-secondary)]/50 px-5 py-2 text-sm font-medium text-white/50 shadow-lg shadow-[var(--esc-panel-bg)]/20"
|
|
120
|
+
>
|
|
121
|
+
Create Sandbox
|
|
122
|
+
</button>
|
|
123
|
+
<div
|
|
124
|
+
class="pointer-events-none absolute bottom-full left-1/2 mb-2 -translate-x-1/2 rounded-lg bg-neutral-800 px-3 py-2 text-xs text-[var(--esc-panel-text-secondary)] opacity-0 shadow-lg transition-opacity group-hover:opacity-100"
|
|
125
|
+
>
|
|
126
|
+
Coming soon — requires infrastructure setup
|
|
127
|
+
<div
|
|
128
|
+
class="absolute left-1/2 top-full -translate-x-1/2 border-4 border-transparent border-t-neutral-800"
|
|
129
|
+
></div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
</EscalatedLayout>
|
|
135
|
+
</template>
|