@pheem49/mint 1.7.1 → 1.8.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/.github/workflows/release.yml +1 -1
- package/Cargo.lock +34 -3
- package/Cargo.toml +2 -2
- package/README.md +40 -0
- package/Release_Note.md +95 -0
- package/assets/Mint_CLI.png +0 -0
- package/crates/mint-cli/Cargo.toml +1 -0
- package/crates/mint-cli/src/agent.rs +142 -48
- package/crates/mint-cli/src/main.rs +231 -22
- package/crates/mint-core/src/api_server.rs +71 -4
- package/crates/mint-core/src/browser.rs +401 -0
- package/crates/mint-core/src/chat.rs +79 -0
- package/crates/mint-core/src/config.rs +69 -1
- package/crates/mint-core/src/lib.rs +6 -1
- package/crates/mint-core/src/orchestration.rs +137 -1
- package/crates/mint-core/src/skills.rs +113 -4
- package/crates/mint-core/src/workflows.rs +9 -22
- package/package.json +2 -1
- package/src/renderer/src/App.tsx +1 -1
- package/src/renderer/src/components/ChatPanel.tsx +197 -47
- package/src/renderer/src/components/DashboardSidebar.tsx +71 -12
- package/src/renderer/src/components/ImageStudioPanel.tsx +18 -4
- package/src/renderer/src/components/MintDashboard.tsx +239 -7
- package/src/renderer/src/components/PicturesLibrary.tsx +1 -3
- package/src/renderer/src/components/Settings/AudioTab.tsx +97 -0
- package/src/renderer/src/components/Settings/AutomationTab.tsx +195 -0
- package/src/renderer/src/components/Settings/GeneralTab.tsx +950 -0
- package/src/renderer/src/components/Settings/MemoryTab.tsx +60 -0
- package/src/renderer/src/components/Settings/PluginsTab.tsx +632 -0
- package/src/renderer/src/components/Settings/ShortcutsTab.tsx +30 -0
- package/src/renderer/src/components/Settings/ThemeTab.tsx +129 -0
- package/src/renderer/src/components/SettingsWindow.tsx +175 -970
- package/src/renderer/src/components/WorkflowBuilderPanel.tsx +536 -0
- package/src/renderer/src/components/WorkflowsWindow.tsx +46 -0
- package/src/renderer/src/components/WorkspacePanel.tsx +66 -9
- package/src/renderer/src/css/image-studio.css +15 -4
- package/src/renderer/src/css/settings.css +75 -6
- package/src/renderer/src/css/styles.css +419 -49
- package/src/renderer/src/css/workflows.css +542 -0
- package/src/renderer/src/env.d.ts +2 -0
- package/src/renderer/src/index.css +13 -1
- package/src/renderer/src/tauri.ts +140 -2
- package/src/renderer/src-web/components/ChatPanel.tsx +190 -46
- package/src/renderer/src-web/components/DashboardSidebar.tsx +17 -1
- package/src/renderer/src-web/components/ImageStudioPanel.tsx +18 -4
- package/src/renderer/src-web/components/MintDashboard.tsx +197 -3
- package/src/renderer/src-web/components/PicturesLibrary.tsx +1 -3
- package/src/renderer/src-web/components/Settings/AudioTab.tsx +97 -0
- package/src/renderer/src-web/components/Settings/AutomationTab.tsx +196 -0
- package/src/renderer/src-web/components/Settings/GeneralTab.tsx +948 -0
- package/src/renderer/src-web/components/Settings/MemoryTab.tsx +60 -0
- package/src/renderer/src-web/components/Settings/PluginsTab.tsx +632 -0
- package/src/renderer/src-web/components/Settings/ShortcutsTab.tsx +30 -0
- package/src/renderer/src-web/components/Settings/ThemeTab.tsx +129 -0
- package/src/renderer/src-web/components/SettingsWindow.tsx +187 -976
- package/src/renderer/src-web/css/image-studio.css +15 -4
- package/src/renderer/src-web/css/settings.css +75 -6
- package/src/renderer/src-web/css/styles.css +394 -50
- package/src/renderer/src-web/env.d.ts +2 -0
- package/src/renderer/src-web/index.css +12 -1
- package/src/renderer/src-web/tauri.ts +60 -2
- package/src-tauri/src/browser.rs +1 -141
- package/src-tauri/src/headless.rs +3 -2
- package/src-tauri/src/lib.rs +195 -111
- package/src-tauri/src/workflows.rs +56 -4
- package/src-tauri/tauri.conf.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { DEFAULT_CONFIG } from '../SettingsWindow'
|
|
3
|
+
|
|
4
|
+
interface ThemeTabProps {
|
|
5
|
+
config: typeof DEFAULT_CONFIG
|
|
6
|
+
updateField: (field: keyof typeof DEFAULT_CONFIG, value: any) => void
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export default function ThemeTab({ config, updateField }: ThemeTabProps) {
|
|
10
|
+
return (
|
|
11
|
+
<div className="tab-pane active">
|
|
12
|
+
<section className="setting-section">
|
|
13
|
+
<div className="section-heading">
|
|
14
|
+
<div>
|
|
15
|
+
<p className="section-kicker">Appearance</p>
|
|
16
|
+
<h2 className="section-title">Theme</h2>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
<div className="theme-grid" style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '12px' }}>
|
|
20
|
+
{(['dark', 'light', 'midnight', 'custom'] as const).map(t => (
|
|
21
|
+
<button
|
|
22
|
+
key={t}
|
|
23
|
+
className={`theme-card ${config.theme === t ? 'active' : ''}`}
|
|
24
|
+
onClick={() => updateField('theme', t)}
|
|
25
|
+
>
|
|
26
|
+
<div className={`theme-preview ${t}-preview`}></div>
|
|
27
|
+
<span style={{ textTransform: 'capitalize' }}>{t}</span>
|
|
28
|
+
</button>
|
|
29
|
+
))}
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
{config.theme === 'custom' && (
|
|
33
|
+
<div className="custom-theme-panel" style={{ marginTop: '15px' }}>
|
|
34
|
+
<div className="setting-row">
|
|
35
|
+
<label>Background Gradient</label>
|
|
36
|
+
<div className="color-range" style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>
|
|
37
|
+
<input type="color" value={config.customBgStart} onChange={(e) => updateField('customBgStart', e.target.value)} />
|
|
38
|
+
<span style={{ display: 'inline-flex', alignItems: 'center', color: 'var(--text-soft)' }}>
|
|
39
|
+
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round">
|
|
40
|
+
<line x1="5" y1="12" x2="19" y2="12"></line>
|
|
41
|
+
<polyline points="12 5 19 12 12 19"></polyline>
|
|
42
|
+
</svg>
|
|
43
|
+
</span>
|
|
44
|
+
<input type="color" value={config.customBgEnd} onChange={(e) => updateField('customBgEnd', e.target.value)} />
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
<div className="setting-row">
|
|
48
|
+
<label>Panel Background</label>
|
|
49
|
+
<input type="color" value={config.customPanelBg} onChange={(e) => updateField('customPanelBg', e.target.value)} />
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
)}
|
|
53
|
+
</section>
|
|
54
|
+
|
|
55
|
+
<section className="setting-section">
|
|
56
|
+
<div className="section-heading">
|
|
57
|
+
<div>
|
|
58
|
+
<p className="section-kicker">Color</p>
|
|
59
|
+
<h2 className="section-title">Accent & Text</h2>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<div className="color-section">
|
|
63
|
+
<div>
|
|
64
|
+
<label>Accent Color</label>
|
|
65
|
+
<div className="color-presets">
|
|
66
|
+
{['#8b5cf6', '#06b6d4', '#10b981', '#f59e0b', '#ef4444', '#ec4899'].map(c => (
|
|
67
|
+
<button
|
|
68
|
+
key={c}
|
|
69
|
+
className="color-dot"
|
|
70
|
+
style={{ backgroundColor: c, border: config.accentColor === c ? '2px solid white' : 'none' }}
|
|
71
|
+
onClick={() => updateField('accentColor', c)}
|
|
72
|
+
/>
|
|
73
|
+
))}
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
<div className="color-inputs" style={{ display: 'flex', gap: '15px', marginTop: '12px' }}>
|
|
77
|
+
<div>
|
|
78
|
+
<label>Custom Accent</label>
|
|
79
|
+
<input type="color" value={config.accentColor} onChange={(e) => updateField('accentColor', e.target.value)} style={{ display: 'block', marginTop: '4px' }} />
|
|
80
|
+
</div>
|
|
81
|
+
<div>
|
|
82
|
+
<label>System Text</label>
|
|
83
|
+
<input type="color" value={config.systemTextColor} onChange={(e) => updateField('systemTextColor', e.target.value)} style={{ display: 'block', marginTop: '4px' }} />
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</section>
|
|
88
|
+
|
|
89
|
+
<section className="setting-section">
|
|
90
|
+
<div className="section-heading">
|
|
91
|
+
<div>
|
|
92
|
+
<p className="section-kicker">Surface</p>
|
|
93
|
+
<h2 className="section-title">Interface Style</h2>
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
<div className="form-grid">
|
|
97
|
+
<div className="setting-row">
|
|
98
|
+
<label>Glass Blur</label>
|
|
99
|
+
<select value={config.glassBlur} onChange={(e) => updateField('glassBlur', e.target.value)}>
|
|
100
|
+
<option value="blur(4px)">Low (4px)</option>
|
|
101
|
+
<option value="blur(16px)">Medium (16px) - Default</option>
|
|
102
|
+
<option value="blur(32px)">High (32px)</option>
|
|
103
|
+
<option value="none">Off (Solid)</option>
|
|
104
|
+
</select>
|
|
105
|
+
</div>
|
|
106
|
+
<div className="setting-row">
|
|
107
|
+
<label>Font Family</label>
|
|
108
|
+
<select value={config.fontFamily} onChange={(e) => updateField('fontFamily', e.target.value)}>
|
|
109
|
+
<option value="'Outfit', sans-serif">Outfit (Default)</option>
|
|
110
|
+
<option value="'Mali', cursive">Mali (Cute Thai Font)</option>
|
|
111
|
+
<option value="'Prompt', sans-serif">Prompt (Modern Thai)</option>
|
|
112
|
+
<option value="'Sarabun', sans-serif">Sarabun (Formal Thai)</option>
|
|
113
|
+
</select>
|
|
114
|
+
</div>
|
|
115
|
+
<div className="setting-row">
|
|
116
|
+
<label>Font Size</label>
|
|
117
|
+
<select value={config.fontSize} onChange={(e) => updateField('fontSize', e.target.value)}>
|
|
118
|
+
<option value="16px">Small</option>
|
|
119
|
+
<option value="18px">Medium (Default)</option>
|
|
120
|
+
<option value="22px">Large</option>
|
|
121
|
+
<option value="26px">Extra Large</option>
|
|
122
|
+
<option value="30px">Extra Extra Large</option>
|
|
123
|
+
</select>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</section>
|
|
127
|
+
</div>
|
|
128
|
+
)
|
|
129
|
+
}
|