@triagly/sdk 0.1.1-beta.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/README.md +451 -0
- package/dist/api.d.ts +17 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +1340 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +1351 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/dist/types.d.ts +64 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/ui.d.ts +58 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/utils.d.ts +73 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +72 -0
- package/themes/README.md +256 -0
- package/themes/dark.css +52 -0
- package/themes/gradient.css +76 -0
- package/themes/index.d.ts +12 -0
- package/themes/minimal.css +65 -0
- package/themes/ocean.css +52 -0
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { FeedbackMetadata } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Collect browser and page metadata
|
|
4
|
+
*/
|
|
5
|
+
export declare function collectMetadata(customMetadata?: Record<string, any>): FeedbackMetadata;
|
|
6
|
+
/**
|
|
7
|
+
* Capture screenshot of current page
|
|
8
|
+
*/
|
|
9
|
+
export declare function captureScreenshot(): Promise<string | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Simple rate limiter using localStorage
|
|
12
|
+
*/
|
|
13
|
+
export declare class RateLimiter {
|
|
14
|
+
private key;
|
|
15
|
+
private maxAttempts;
|
|
16
|
+
private windowMs;
|
|
17
|
+
constructor(key: string, maxAttempts?: number, windowMs?: number);
|
|
18
|
+
canProceed(): boolean;
|
|
19
|
+
recordAttempt(): void;
|
|
20
|
+
getTimeUntilReset(): number;
|
|
21
|
+
private getData;
|
|
22
|
+
private setData;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate unique ID
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateId(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Console log capture for debugging
|
|
30
|
+
*/
|
|
31
|
+
export interface ConsoleLog {
|
|
32
|
+
level: 'error' | 'warn' | 'log';
|
|
33
|
+
message: string;
|
|
34
|
+
timestamp: string;
|
|
35
|
+
stack?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare class ConsoleLogger {
|
|
38
|
+
private buffer;
|
|
39
|
+
private maxLogs;
|
|
40
|
+
private levels;
|
|
41
|
+
private originalConsole;
|
|
42
|
+
private isActive;
|
|
43
|
+
constructor(maxLogs?: number, levels?: ('error' | 'warn' | 'log')[]);
|
|
44
|
+
/**
|
|
45
|
+
* Start capturing console logs
|
|
46
|
+
*/
|
|
47
|
+
start(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Stop capturing and restore original console methods
|
|
50
|
+
*/
|
|
51
|
+
stop(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Capture a log entry
|
|
54
|
+
*/
|
|
55
|
+
private captureLog;
|
|
56
|
+
/**
|
|
57
|
+
* Sanitize sensitive data from logs
|
|
58
|
+
*/
|
|
59
|
+
private sanitize;
|
|
60
|
+
/**
|
|
61
|
+
* Get all captured logs
|
|
62
|
+
*/
|
|
63
|
+
getLogs(): ConsoleLog[];
|
|
64
|
+
/**
|
|
65
|
+
* Clear all captured logs
|
|
66
|
+
*/
|
|
67
|
+
clear(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get logs count
|
|
70
|
+
*/
|
|
71
|
+
getCount(): number;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,wBAAgB,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAYtF;AA0BD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBhE;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAsB;IAMlF,UAAU,IAAI,OAAO;IAgBrB,aAAa,IAAI,IAAI;IAerB,iBAAiB,IAAI,MAAM;IAc3B,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,OAAO;CAOhB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,eAAe,CAIrB;IACF,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,OAAO,GAAE,MAAW,EAAE,MAAM,GAAE,CAAC,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,EAAsB;IAY1F;;OAEG;IACH,KAAK,IAAI,IAAI;IA6Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,OAAO,CAAC,UAAU;IAiDlB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAoBhB;;OAEG;IACH,OAAO,IAAI,UAAU,EAAE;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB"}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@triagly/sdk",
|
|
3
|
+
"version": "0.1.1-beta.1",
|
|
4
|
+
"description": "JavaScript SDK for Triagly - Turn user feedback into GitHub issues instantly",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.esm.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"browser": "dist/index.min.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"themes",
|
|
12
|
+
"README.md"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "rollup -c",
|
|
16
|
+
"dev": "rollup -c -w",
|
|
17
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
18
|
+
"prepare": "husky",
|
|
19
|
+
"release": "standard-version",
|
|
20
|
+
"release:minor": "standard-version --release-as minor",
|
|
21
|
+
"release:major": "standard-version --release-as major",
|
|
22
|
+
"release:patch": "standard-version --release-as patch",
|
|
23
|
+
"release:first": "standard-version --first-release",
|
|
24
|
+
"release:beta": "standard-version --prerelease beta",
|
|
25
|
+
"release:alpha": "standard-version --prerelease alpha",
|
|
26
|
+
"publish:latest": "npm publish --access public",
|
|
27
|
+
"publish:beta": "npm publish --access public --tag beta",
|
|
28
|
+
"publish:alpha": "npm publish --access public --tag alpha",
|
|
29
|
+
"ship": "pnpm release && git push --follow-tags origin main && pnpm publish:latest",
|
|
30
|
+
"ship:beta": "pnpm release:beta && git push --follow-tags origin main && pnpm publish:beta",
|
|
31
|
+
"prepublishOnly": "pnpm build"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"feedback",
|
|
35
|
+
"github",
|
|
36
|
+
"issues",
|
|
37
|
+
"bug-tracking",
|
|
38
|
+
"user-feedback",
|
|
39
|
+
"widget",
|
|
40
|
+
"triagly",
|
|
41
|
+
"feedback-widget",
|
|
42
|
+
"screenshot",
|
|
43
|
+
"bug-report"
|
|
44
|
+
],
|
|
45
|
+
"author": "Joshua Colvin",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"homepage": "https://triagly.com",
|
|
48
|
+
"bugs": {
|
|
49
|
+
"url": "https://github.com/joshuacolvin/triagly/issues"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/joshuacolvin/triagly.git",
|
|
54
|
+
"directory": "sdk/js"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@commitlint/cli": "^20.1.0",
|
|
58
|
+
"@commitlint/config-conventional": "^20.0.0",
|
|
59
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
60
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
61
|
+
"@types/node": "^24.8.1",
|
|
62
|
+
"husky": "^9.1.7",
|
|
63
|
+
"rollup": "^4.52.5",
|
|
64
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
65
|
+
"standard-version": "^9.5.0",
|
|
66
|
+
"tslib": "^2.6.2",
|
|
67
|
+
"typescript": "^5.3.3"
|
|
68
|
+
},
|
|
69
|
+
"publishConfig": {
|
|
70
|
+
"access": "public"
|
|
71
|
+
}
|
|
72
|
+
}
|
package/themes/README.md
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Triagly SDK Themes
|
|
2
|
+
|
|
3
|
+
Pre-built themes for the Triagly feedback widget.
|
|
4
|
+
|
|
5
|
+
## Available Themes
|
|
6
|
+
|
|
7
|
+
### 🎨 **Default** (Built-in)
|
|
8
|
+
No additional CSS needed. Clean blue theme with rounded corners.
|
|
9
|
+
|
|
10
|
+
**Preview:** Standard indigo button, white modal, clean design
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
### 🌙 **Dark**
|
|
15
|
+
Dark mode theme with high contrast, perfect for dark websites.
|
|
16
|
+
|
|
17
|
+
**Preview:** Dark gray button and modal, light text
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/dark.css">
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Uses:** Pure CSS variables - easy to customize further
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
### ✨ **Minimal**
|
|
28
|
+
Clean, minimal design with outlined button and subtle styling.
|
|
29
|
+
|
|
30
|
+
**Preview:** Transparent button with border, minimal shadows
|
|
31
|
+
|
|
32
|
+
```html
|
|
33
|
+
<link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/minimal.css">
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Uses:** CSS variables + border styling (can't use box-shadow inset in variables)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
### 🌈 **Gradient**
|
|
41
|
+
Beautiful purple gradient design for modern websites.
|
|
42
|
+
|
|
43
|
+
**Preview:** Purple gradient button and header, smooth animations
|
|
44
|
+
|
|
45
|
+
```html
|
|
46
|
+
<link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/gradient.css">
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Uses:** Direct CSS rules (gradients can't be stored in CSS variables)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### 🌊 **Ocean**
|
|
54
|
+
Fresh blue/teal ocean theme with calming colors.
|
|
55
|
+
|
|
56
|
+
**Preview:** Cyan/blue colors, light and airy design
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/ocean.css">
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Uses:** Pure CSS variables - easy to customize further
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Usage
|
|
67
|
+
|
|
68
|
+
### CDN (Easiest)
|
|
69
|
+
|
|
70
|
+
```html
|
|
71
|
+
<!-- Include theme before SDK -->
|
|
72
|
+
<link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/dark.css">
|
|
73
|
+
|
|
74
|
+
<script type="module">
|
|
75
|
+
import Triagly from 'https://unpkg.com/@triagly/sdk';
|
|
76
|
+
|
|
77
|
+
const triagly = new Triagly({
|
|
78
|
+
projectId: 'your-project-id',
|
|
79
|
+
apiUrl: 'https://your-api.com',
|
|
80
|
+
});
|
|
81
|
+
</script>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### NPM
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm install @triagly/sdk
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```javascript
|
|
91
|
+
import Triagly from '@triagly/sdk';
|
|
92
|
+
import '@triagly/sdk/themes/dark.css';
|
|
93
|
+
|
|
94
|
+
const triagly = new Triagly({
|
|
95
|
+
projectId: 'your-project-id',
|
|
96
|
+
apiUrl: 'https://your-api.com',
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Important Notes
|
|
103
|
+
|
|
104
|
+
### CSS Variable Limitations
|
|
105
|
+
|
|
106
|
+
**What works in CSS variables:**
|
|
107
|
+
- ✅ Colors: `#ff0066`, `rgb()`, `rgba()`
|
|
108
|
+
- ✅ Sizes: `12px`, `1rem`, `500px`
|
|
109
|
+
- ✅ Simple shadows: `0 4px 12px rgba(0,0,0,0.3)`
|
|
110
|
+
|
|
111
|
+
**What doesn't work in CSS variables:**
|
|
112
|
+
- ❌ Gradients: `linear-gradient()`, `radial-gradient()`
|
|
113
|
+
- ❌ Inset shadows: `0 0 0 2px #color inset`
|
|
114
|
+
- ❌ Multiple backgrounds
|
|
115
|
+
|
|
116
|
+
For these effects, themes use direct CSS rules with `!important`.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Custom Theme
|
|
121
|
+
|
|
122
|
+
Create your own theme using CSS custom properties:
|
|
123
|
+
|
|
124
|
+
```css
|
|
125
|
+
:root {
|
|
126
|
+
/* Button */
|
|
127
|
+
--triagly-button-bg: #your-color;
|
|
128
|
+
--triagly-button-bg-hover: #your-hover-color;
|
|
129
|
+
--triagly-button-text: #ffffff;
|
|
130
|
+
--triagly-button-radius: 8px;
|
|
131
|
+
|
|
132
|
+
/* Modal */
|
|
133
|
+
--triagly-modal-bg: #ffffff;
|
|
134
|
+
--triagly-modal-radius: 12px;
|
|
135
|
+
|
|
136
|
+
/* And more... see full list below */
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### All Available CSS Variables
|
|
141
|
+
|
|
142
|
+
```css
|
|
143
|
+
:root {
|
|
144
|
+
/* Button */
|
|
145
|
+
--triagly-button-bg
|
|
146
|
+
--triagly-button-bg-hover
|
|
147
|
+
--triagly-button-text
|
|
148
|
+
--triagly-button-radius
|
|
149
|
+
--triagly-button-shadow
|
|
150
|
+
--triagly-button-shadow-hover
|
|
151
|
+
|
|
152
|
+
/* Modal */
|
|
153
|
+
--triagly-modal-bg
|
|
154
|
+
--triagly-modal-radius
|
|
155
|
+
--triagly-modal-shadow
|
|
156
|
+
--triagly-modal-max-width
|
|
157
|
+
|
|
158
|
+
/* Overlay */
|
|
159
|
+
--triagly-overlay-bg
|
|
160
|
+
|
|
161
|
+
/* Header */
|
|
162
|
+
--triagly-header-bg
|
|
163
|
+
--triagly-header-border
|
|
164
|
+
--triagly-header-text
|
|
165
|
+
|
|
166
|
+
/* Form */
|
|
167
|
+
--triagly-form-bg
|
|
168
|
+
--triagly-label-text
|
|
169
|
+
--triagly-input-bg
|
|
170
|
+
--triagly-input-border
|
|
171
|
+
--triagly-input-border-focus
|
|
172
|
+
--triagly-input-text
|
|
173
|
+
--triagly-input-radius
|
|
174
|
+
|
|
175
|
+
/* Buttons */
|
|
176
|
+
--triagly-btn-primary-bg
|
|
177
|
+
--triagly-btn-primary-bg-hover
|
|
178
|
+
--triagly-btn-primary-text
|
|
179
|
+
--triagly-btn-secondary-bg
|
|
180
|
+
--triagly-btn-secondary-bg-hover
|
|
181
|
+
--triagly-btn-secondary-text
|
|
182
|
+
--triagly-btn-radius
|
|
183
|
+
|
|
184
|
+
/* Status Messages */
|
|
185
|
+
--triagly-success-bg
|
|
186
|
+
--triagly-success-text
|
|
187
|
+
--triagly-error-bg
|
|
188
|
+
--triagly-error-text
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Dynamic Theme Switching
|
|
195
|
+
|
|
196
|
+
Switch themes at runtime:
|
|
197
|
+
|
|
198
|
+
```javascript
|
|
199
|
+
function applyTheme(themeName) {
|
|
200
|
+
// Remove existing theme
|
|
201
|
+
document.getElementById('triagly-theme')?.remove();
|
|
202
|
+
|
|
203
|
+
// Add new theme
|
|
204
|
+
if (themeName !== 'default') {
|
|
205
|
+
const link = document.createElement('link');
|
|
206
|
+
link.id = 'triagly-theme';
|
|
207
|
+
link.rel = 'stylesheet';
|
|
208
|
+
link.href = `https://unpkg.com/@triagly/sdk/themes/${themeName}.css`;
|
|
209
|
+
document.head.appendChild(link);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Apply dark theme
|
|
214
|
+
applyTheme('dark');
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Automatic Dark Mode
|
|
220
|
+
|
|
221
|
+
Match system dark mode preference:
|
|
222
|
+
|
|
223
|
+
```javascript
|
|
224
|
+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)');
|
|
225
|
+
|
|
226
|
+
function applyAutoTheme() {
|
|
227
|
+
if (prefersDark.matches) {
|
|
228
|
+
// Load dark theme
|
|
229
|
+
import('@triagly/sdk/themes/dark.css');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Apply on load
|
|
234
|
+
applyAutoTheme();
|
|
235
|
+
|
|
236
|
+
// Listen for changes
|
|
237
|
+
prefersDark.addEventListener('change', applyAutoTheme);
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Contributing Themes
|
|
243
|
+
|
|
244
|
+
Want to contribute a theme?
|
|
245
|
+
|
|
246
|
+
1. Create a new `.css` file in `themes/`
|
|
247
|
+
2. Use the CSS custom properties
|
|
248
|
+
3. Add documentation here
|
|
249
|
+
4. Submit a PR!
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
**More Info:**
|
|
254
|
+
- [Main Documentation](../README.md)
|
|
255
|
+
- [Styling Guide](../docs/guides/STYLING.md)
|
|
256
|
+
|
package/themes/dark.css
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triagly SDK - Dark Theme
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* <link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/dark.css">
|
|
6
|
+
*
|
|
7
|
+
* Or import in JavaScript:
|
|
8
|
+
* import '@triagly/sdk/themes/dark.css';
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
:root {
|
|
12
|
+
/* Button */
|
|
13
|
+
--triagly-button-bg: #1f2937;
|
|
14
|
+
--triagly-button-bg-hover: #374151;
|
|
15
|
+
--triagly-button-text: #f9fafb;
|
|
16
|
+
--triagly-button-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
|
|
17
|
+
--triagly-button-shadow-hover: 0 6px 16px rgba(0, 0, 0, 0.5);
|
|
18
|
+
|
|
19
|
+
/* Modal */
|
|
20
|
+
--triagly-modal-bg: #1f2937;
|
|
21
|
+
--triagly-modal-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
|
|
22
|
+
|
|
23
|
+
/* Overlay */
|
|
24
|
+
--triagly-overlay-bg: rgba(0, 0, 0, 0.8);
|
|
25
|
+
|
|
26
|
+
/* Header */
|
|
27
|
+
--triagly-header-bg: #111827;
|
|
28
|
+
--triagly-header-border: #374151;
|
|
29
|
+
--triagly-header-text: #f9fafb;
|
|
30
|
+
|
|
31
|
+
/* Form */
|
|
32
|
+
--triagly-form-bg: #1f2937;
|
|
33
|
+
--triagly-label-text: #e5e7eb;
|
|
34
|
+
--triagly-input-bg: #111827;
|
|
35
|
+
--triagly-input-border: #374151;
|
|
36
|
+
--triagly-input-border-focus: #6366f1;
|
|
37
|
+
--triagly-input-text: #f9fafb;
|
|
38
|
+
|
|
39
|
+
/* Buttons */
|
|
40
|
+
--triagly-btn-primary-bg: #6366f1;
|
|
41
|
+
--triagly-btn-primary-bg-hover: #4f46e5;
|
|
42
|
+
--triagly-btn-secondary-bg: #374151;
|
|
43
|
+
--triagly-btn-secondary-bg-hover: #4b5563;
|
|
44
|
+
--triagly-btn-secondary-text: #f9fafb;
|
|
45
|
+
|
|
46
|
+
/* Status */
|
|
47
|
+
--triagly-success-bg: #064e3b;
|
|
48
|
+
--triagly-success-text: #6ee7b7;
|
|
49
|
+
--triagly-error-bg: #7f1d1d;
|
|
50
|
+
--triagly-error-text: #fca5a5;
|
|
51
|
+
}
|
|
52
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triagly SDK - Gradient Theme
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* <link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/gradient.css">
|
|
6
|
+
*
|
|
7
|
+
* Or import in JavaScript:
|
|
8
|
+
* import '@triagly/sdk/themes/gradient.css';
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
:root {
|
|
12
|
+
/* Colors for gradient */
|
|
13
|
+
--triagly-button-text: #ffffff;
|
|
14
|
+
--triagly-button-radius: 30px;
|
|
15
|
+
--triagly-button-shadow: 0 4px 20px rgba(102, 126, 234, 0.4);
|
|
16
|
+
--triagly-button-shadow-hover: 0 8px 25px rgba(102, 126, 234, 0.5);
|
|
17
|
+
|
|
18
|
+
/* Modal */
|
|
19
|
+
--triagly-modal-bg: #ffffff;
|
|
20
|
+
--triagly-modal-radius: 24px;
|
|
21
|
+
--triagly-modal-shadow: 0 25px 80px rgba(0, 0, 0, 0.3);
|
|
22
|
+
|
|
23
|
+
/* Overlay */
|
|
24
|
+
--triagly-overlay-bg: rgba(0, 0, 0, 0.6);
|
|
25
|
+
|
|
26
|
+
/* Header */
|
|
27
|
+
--triagly-header-border: transparent;
|
|
28
|
+
--triagly-header-text: #ffffff;
|
|
29
|
+
|
|
30
|
+
/* Form */
|
|
31
|
+
--triagly-form-bg: #ffffff;
|
|
32
|
+
--triagly-label-text: #374151;
|
|
33
|
+
--triagly-input-bg: #f9fafb;
|
|
34
|
+
--triagly-input-border: #e5e7eb;
|
|
35
|
+
--triagly-input-border-focus: #667eea;
|
|
36
|
+
--triagly-input-text: #111827;
|
|
37
|
+
--triagly-input-radius: 12px;
|
|
38
|
+
|
|
39
|
+
/* Buttons */
|
|
40
|
+
--triagly-btn-primary-text: #ffffff;
|
|
41
|
+
--triagly-btn-secondary-bg: #f3f4f6;
|
|
42
|
+
--triagly-btn-secondary-bg-hover: #e5e7eb;
|
|
43
|
+
--triagly-btn-radius: 12px;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Gradient backgrounds (can't use CSS variables for gradients) */
|
|
47
|
+
.triagly-button {
|
|
48
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.triagly-button:hover {
|
|
52
|
+
background: linear-gradient(135deg, #764ba2 0%, #667eea 100%) !important;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.triagly-header {
|
|
56
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.triagly-btn-primary {
|
|
60
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.triagly-btn-primary:hover:not(:disabled) {
|
|
64
|
+
background: linear-gradient(135deg, #764ba2 0%, #667eea 100%) !important;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Special styling for close button on gradient header */
|
|
68
|
+
.triagly-close {
|
|
69
|
+
color: rgba(255, 255, 255, 0.8) !important;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.triagly-close:hover {
|
|
73
|
+
background: rgba(255, 255, 255, 0.2) !important;
|
|
74
|
+
color: #ffffff !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triagly SDK Themes
|
|
3
|
+
*
|
|
4
|
+
* Pre-built themes for the Triagly feedback widget.
|
|
5
|
+
* Import these CSS files to apply different visual styles.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
declare module '@triagly/sdk/themes/dark.css';
|
|
9
|
+
declare module '@triagly/sdk/themes/minimal.css';
|
|
10
|
+
declare module '@triagly/sdk/themes/gradient.css';
|
|
11
|
+
declare module '@triagly/sdk/themes/ocean.css';
|
|
12
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triagly SDK - Minimal Theme
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* <link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/minimal.css">
|
|
6
|
+
*
|
|
7
|
+
* Or import in JavaScript:
|
|
8
|
+
* import '@triagly/sdk/themes/minimal.css';
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
:root {
|
|
12
|
+
/* Button */
|
|
13
|
+
--triagly-button-bg: transparent;
|
|
14
|
+
--triagly-button-bg-hover: #f9fafb;
|
|
15
|
+
--triagly-button-text: #111827;
|
|
16
|
+
|
|
17
|
+
/* Modal */
|
|
18
|
+
--triagly-modal-bg: #ffffff;
|
|
19
|
+
--triagly-modal-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
|
|
20
|
+
|
|
21
|
+
/* Overlay */
|
|
22
|
+
--triagly-overlay-bg: rgba(0, 0, 0, 0.3);
|
|
23
|
+
|
|
24
|
+
/* Header */
|
|
25
|
+
--triagly-header-bg: #fafafa;
|
|
26
|
+
--triagly-header-border: #e5e7eb;
|
|
27
|
+
--triagly-header-text: #111827;
|
|
28
|
+
|
|
29
|
+
/* Form */
|
|
30
|
+
--triagly-form-bg: #ffffff;
|
|
31
|
+
--triagly-label-text: #6b7280;
|
|
32
|
+
--triagly-input-bg: #fafafa;
|
|
33
|
+
--triagly-input-border: #e5e7eb;
|
|
34
|
+
--triagly-input-border-focus: #d1d5db;
|
|
35
|
+
--triagly-input-text: #111827;
|
|
36
|
+
|
|
37
|
+
/* Buttons */
|
|
38
|
+
--triagly-btn-primary-bg: #111827;
|
|
39
|
+
--triagly-btn-primary-bg-hover: #374151;
|
|
40
|
+
--triagly-btn-secondary-bg: transparent;
|
|
41
|
+
--triagly-btn-secondary-bg-hover: #f9fafb;
|
|
42
|
+
--triagly-btn-secondary-text: #6b7280;
|
|
43
|
+
|
|
44
|
+
/* Borders */
|
|
45
|
+
--triagly-btn-radius: 6px;
|
|
46
|
+
--triagly-modal-radius: 8px;
|
|
47
|
+
--triagly-button-radius: 6px;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Button with border (can't use inset shadow in variable) */
|
|
51
|
+
.triagly-button {
|
|
52
|
+
border: 2px solid #e5e7eb !important;
|
|
53
|
+
box-shadow: none !important;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.triagly-button:hover {
|
|
57
|
+
border-color: #6366f1 !important;
|
|
58
|
+
box-shadow: none !important;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Secondary button with border */
|
|
62
|
+
.triagly-btn-secondary {
|
|
63
|
+
border: 1px solid #e5e7eb !important;
|
|
64
|
+
}
|
|
65
|
+
|
package/themes/ocean.css
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triagly SDK - Ocean Theme
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* <link rel="stylesheet" href="https://unpkg.com/@triagly/sdk/themes/ocean.css">
|
|
6
|
+
*
|
|
7
|
+
* Or import in JavaScript:
|
|
8
|
+
* import '@triagly/sdk/themes/ocean.css';
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
:root {
|
|
12
|
+
/* Button */
|
|
13
|
+
--triagly-button-bg: #0ea5e9;
|
|
14
|
+
--triagly-button-bg-hover: #0284c7;
|
|
15
|
+
--triagly-button-text: #ffffff;
|
|
16
|
+
--triagly-button-shadow: 0 4px 12px rgba(14, 165, 233, 0.3);
|
|
17
|
+
--triagly-button-shadow-hover: 0 6px 16px rgba(14, 165, 233, 0.4);
|
|
18
|
+
|
|
19
|
+
/* Modal */
|
|
20
|
+
--triagly-modal-bg: #ffffff;
|
|
21
|
+
--triagly-modal-shadow: 0 20px 60px rgba(6, 182, 212, 0.2);
|
|
22
|
+
|
|
23
|
+
/* Overlay */
|
|
24
|
+
--triagly-overlay-bg: rgba(6, 78, 59, 0.3);
|
|
25
|
+
|
|
26
|
+
/* Header */
|
|
27
|
+
--triagly-header-bg: #ecfeff;
|
|
28
|
+
--triagly-header-border: #06b6d4;
|
|
29
|
+
--triagly-header-text: #0e7490;
|
|
30
|
+
|
|
31
|
+
/* Form */
|
|
32
|
+
--triagly-form-bg: #ffffff;
|
|
33
|
+
--triagly-label-text: #0e7490;
|
|
34
|
+
--triagly-input-bg: #f0fdfa;
|
|
35
|
+
--triagly-input-border: #99f6e4;
|
|
36
|
+
--triagly-input-border-focus: #06b6d4;
|
|
37
|
+
--triagly-input-text: #164e63;
|
|
38
|
+
|
|
39
|
+
/* Buttons */
|
|
40
|
+
--triagly-btn-primary-bg: #0ea5e9;
|
|
41
|
+
--triagly-btn-primary-bg-hover: #0284c7;
|
|
42
|
+
--triagly-btn-secondary-bg: #ecfeff;
|
|
43
|
+
--triagly-btn-secondary-bg-hover: #cffafe;
|
|
44
|
+
--triagly-btn-secondary-text: #0e7490;
|
|
45
|
+
|
|
46
|
+
/* Status */
|
|
47
|
+
--triagly-success-bg: #ccfbf1;
|
|
48
|
+
--triagly-success-text: #0f766e;
|
|
49
|
+
--triagly-error-bg: #fecdd3;
|
|
50
|
+
--triagly-error-text: #be123c;
|
|
51
|
+
}
|
|
52
|
+
|