File size: 8,367 Bytes
18e58fa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>LexRAG โ€” Legal Intelligence Terminal | UAE & India Law AI</title>
  <meta name="description" content="LexRAG is a professional legal research AI for UAE and Indian law, taxation, and compliance. Hybrid RAG with multi-provider LLM streaming.">
  <meta name="keywords" content="legal AI, RAG, UAE law, Indian law, GST, VAT, legal research, compliance, tax AI, retrieval augmented generation">
  <meta property="og:title" content="LexRAG โ€” Legal Intelligence Terminal">
  <meta property="og:description" content="Enterprise hybrid RAG for UAE & Indian law, taxation and compliance.">
  <meta property="og:url" content="https://github.com/eulogik/LexRAG">
  <meta name="author" content="Evolucent AI / Eulogik">
  <link rel="stylesheet" href="/ui/style.css?v=4">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
</head>
<body>

<!-- โ”€โ”€ SETTINGS PANEL โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -->
<div id="settings-overlay" class="overlay hidden" onclick="closeSettings()"></div>
<aside id="settings-panel" class="settings-panel hidden">
  <div class="settings-header">
    <span>Settings</span>
    <button class="icon-btn" onclick="closeSettings()">โœ•</button>
  </div>

  <!-- Tabs -->
  <div class="settings-tabs">
    <button class="tab-btn active" onclick="switchSettingsTab('general', this)">General</button>
    <button class="tab-btn"        onclick="switchSettingsTab('models',  this)">Models</button>
    <button class="tab-btn"        onclick="switchSettingsTab('custom',  this)">Custom</button>
  </div>

  <!-- General Tab -->
  <div id="stab-general" class="stab-content">
    <div class="settings-section">
      <label class="settings-label">Default Provider</label>
      <div id="s-provider-pills" class="pill-group"></div>
    </div>
    <div class="settings-section">
      <label class="settings-label">Default Model</label>
      <select id="s-model-select" class="select-input"></select>
    </div>
    <div class="settings-section">
      <label class="settings-label">Jurisdiction Lock</label>
      <p class="settings-hint">When set to "Auto", the system detects India/UAE/Both from your query.</p>
      <div class="pill-group" id="s-jur-pills">
        <button class="pill-btn active" data-jur="null" onclick="setJurSetting(this)">Auto-detect</button>
        <button class="pill-btn" data-jur="India"       onclick="setJurSetting(this)">๐Ÿ‡ฎ๐Ÿ‡ณ India only</button>
        <button class="pill-btn" data-jur="UAE"         onclick="setJurSetting(this)">๐Ÿ‡ฆ๐Ÿ‡ช UAE only</button>
        <button class="pill-btn" data-jur="Both"        onclick="setJurSetting(this)">๐ŸŒ Always Both</button>
      </div>
    </div>
  </div>

  <!-- Models Tab -->
  <div id="stab-models" class="stab-content hidden">
    <div class="settings-section">
      <p class="settings-hint">Toggle which models appear in the chat model selector. At least one must remain active per provider.</p>
    </div>
    <div id="s-models-list"></div>
  </div>

  <!-- Custom Tab -->
  <div id="stab-custom" class="stab-content hidden">
    <div class="settings-section">
      <label class="settings-label">Add Custom Model</label>
      <p class="settings-hint">Add a model ID from Groq or OpenRouter to your active catalog.</p>
      <div class="form-row">
        <select id="c-provider" class="select-input" style="flex:1">
          <option value="groq">Groq</option>
          <option value="openrouter">OpenRouter</option>
        </select>
      </div>
      <input id="c-model-id"   class="text-input" placeholder="Model ID (e.g. llama3-8b-8192)" style="margin-top:.5rem">
      <input id="c-model-name" class="text-input" placeholder="Display name (e.g. Llama 3 8B)" style="margin-top:.5rem">
      <button class="btn-add" onclick="addCustomModel()">Add Model</button>
    </div>

    <div class="settings-section">
      <label class="settings-label">Custom Models</label>
      <div id="s-custom-list"></div>
    </div>
  </div>

  <div class="settings-footer">
    <button class="btn-save" onclick="saveSettings()">Save Changes</button>
  </div>
</aside>

<!-- โ”€โ”€ MAIN LAYOUT โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ -->
<div class="layout">

  <!-- Sidebar -->
  <nav class="sidebar">
    <div class="sidebar-top">
      <div class="logo">
        <span class="logo-name">LexRAG</span>
        <span class="logo-sub">By <a href="https://evolucentai.com" target="_blank" style="color:inherit;text-decoration:underline;text-decoration-style:dotted;">Evolucent AI</a></span>
      </div>
      <button class="new-chat-btn" onclick="newChat()"><span>+</span> New Chat</button>
    </div>

    <div class="sidebar-sessions">
      <div class="section-label">Recent</div>
      <div id="session-list"></div>
    </div>

    <div class="sidebar-bottom">
      <button class="settings-trigger" onclick="openSettings()">
        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
          <circle cx="12" cy="12" r="3"/>
          <path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>
        </svg>
        Settings
      </button>
    </div>
  </nav>

  <!-- Chat Area -->
  <main class="chat-area">
    <div id="messages" class="messages"></div>

    <!-- Empty State -->
    <div id="empty-state" class="empty-state">
      <div class="empty-logo">โš–</div>
      <h2>LexRAG</h2>
      <p>Legal intelligence for UAE and Indian law, taxation, and compliance.</p>
      <div class="suggestion-chips">
        <button class="chip" onclick="useSuggestion(this)">GST on online gaming contest prizes</button>
        <button class="chip" onclick="useSuggestion(this)">UAE VAT on financial services</button>
        <button class="chip" onclick="useSuggestion(this)">TDS under Section 194B on winnings</button>
        <button class="chip" onclick="useSuggestion(this)">UAE Corporate Tax free zone treatment</button>
      </div>
    </div>

    <!-- Input Row -->
    <div class="input-row">
      <div class="input-shell">
        <textarea
          id="query-input"
          class="query-input"
          placeholder="Ask about law, tax, or regulations..."
          rows="1"
          onkeydown="handleKey(event)"
          oninput="autoResize(this)"
        ></textarea>
        <div class="input-controls">
          <div class="model-selector" id="model-selector" onclick="toggleModelDropdown(event)">
            <span id="model-label">Groq ยท Llama 3.3</span>
            <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"/></svg>
            <div id="model-dropdown" class="model-dropdown hidden"></div>
          </div>
          <button id="send-btn" class="send-btn" onclick="sendMessage()">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>
          </button>
        </div>
      </div>
    </div>
  </main>
</div>

<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="/ui/app.js?v=3"></script>
</body>
</html>