Skip to content

Commit 34aeaa2

Browse files
oleksandrkitsclaude
andcommitted
feat: Complete Intercom integration with admin UI configuration
- Add Intercom configuration page under System Settings > Config - Implement toggle to enable/disable Intercom widget via UI - Use DreamFactory lookup keys API for storing configuration - Remove dependency on environment variables - Widget enabled by default for new installations - Commercial customers can disable without code changes - Add custom attributes: license key, tier, version tracking - Simplify UI to match other config pages styling 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent f260e19 commit 34aeaa2

17 files changed

Lines changed: 291 additions & 20 deletions

.env.example

Lines changed: 0 additions & 8 deletions
This file was deleted.

dist/553.9d5b8a59eea3781c.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/assets/i18n/en.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,10 @@
299299
"global-lookup-keys": {
300300
"nav": "Global Lookup Keys",
301301
"header": "{{nav.system-settings.config.global-lookup-keys.nav}}"
302+
},
303+
"intercom": {
304+
"nav": "Intercom",
305+
"header": "{{nav.system-settings.config.intercom.nav}}"
302306
}
303307
},
304308
"scheduler": {

dist/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99
<body class="mat-typography">
1010
<df-root></df-root>
1111
<script type="text/javascript" src="https://assets.calendly.com/assets/external/widget.js"></script>
12-
<script src="runtime.3d63899d8c69e4c5.js" type="module"></script><script src="polyfills.def0190516b19e6b.js" type="module"></script><script src="main.c17a78bc0141daa1.js" type="module"></script></body>
12+
<script src="runtime.ebf101c7776cbd38.js" type="module"></script><script src="polyfills.def0190516b19e6b.js" type="module"></script><script src="main.ef06993666317ccc.js" type="module"></script></body>
1313
</html>

dist/main.c17a78bc0141daa1.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

dist/main.ef06993666317ccc.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/runtime.3d63899d8c69e4c5.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

dist/runtime.ebf101c7776cbd38.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<div class="intercom-config-container">
2+
<p>
3+
Control whether the Intercom chat widget is displayed to users.
4+
When disabled, no Intercom resources will be loaded and the widget will not appear.
5+
</p>
6+
7+
<div class="config-section">
8+
<div class="loading-spinner" *ngIf="loading">
9+
<mat-spinner diameter="30"></mat-spinner>
10+
<span>Loading configuration...</span>
11+
</div>
12+
13+
<mat-slide-toggle
14+
*ngIf="!loading"
15+
[(ngModel)]="intercomEnabled"
16+
(change)="onToggleChange()"
17+
[disabled]="saving"
18+
color="primary"
19+
class="toggle-control">
20+
{{ intercomEnabled ? 'Intercom Widget Enabled' : 'Intercom Widget Disabled' }}
21+
</mat-slide-toggle>
22+
23+
<div class="saving-indicator" *ngIf="saving">
24+
<mat-spinner diameter="20"></mat-spinner>
25+
<span>Saving...</span>
26+
</div>
27+
</div>
28+
</div>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// .intercom-config-container {
2+
// .config-section {
3+
// .loading-spinner {
4+
// display: flex;
5+
// align-items: center;
6+
// gap: 10px;
7+
// margin-bottom: 20px;
8+
9+
// mat-spinner {
10+
// flex-shrink: 0;
11+
// }
12+
// }
13+
14+
// .toggle-control {
15+
// margin-bottom: 20px;
16+
// }
17+
18+
// .saving-indicator {
19+
// display: flex;
20+
// align-items: center;
21+
// gap: 10px;
22+
// margin-top: 20px;
23+
24+
// mat-spinner {
25+
// flex-shrink: 0;
26+
// }
27+
// }
28+
// }
29+
// }

0 commit comments

Comments
 (0)