cloud-ide-layout 1.0.204 → 1.0.207

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.
Files changed (14) hide show
  1. package/fesm2022/{cloud-ide-layout-cloud-ide-layout-DbmOIzcp.mjs → cloud-ide-layout-cloud-ide-layout-2qeSM8A1.mjs} +166 -43
  2. package/fesm2022/cloud-ide-layout-cloud-ide-layout-2qeSM8A1.mjs.map +1 -0
  3. package/fesm2022/{cloud-ide-layout-dashboard-manager.component-GSZtQgsb.mjs → cloud-ide-layout-dashboard-manager.component-CJHUNhoZ.mjs} +2 -2
  4. package/fesm2022/{cloud-ide-layout-dashboard-manager.component-GSZtQgsb.mjs.map → cloud-ide-layout-dashboard-manager.component-CJHUNhoZ.mjs.map} +1 -1
  5. package/fesm2022/{cloud-ide-layout-drawer-theme.component-CGKOAqaC.mjs → cloud-ide-layout-drawer-theme.component-C9IMuYmm.mjs} +2 -2
  6. package/fesm2022/{cloud-ide-layout-drawer-theme.component-CGKOAqaC.mjs.map → cloud-ide-layout-drawer-theme.component-C9IMuYmm.mjs.map} +1 -1
  7. package/fesm2022/{cloud-ide-layout-home-wrapper.component-DWW33pNY.mjs → cloud-ide-layout-home-wrapper.component-DxmyaTO-.mjs} +2 -2
  8. package/fesm2022/{cloud-ide-layout-home-wrapper.component-DWW33pNY.mjs.map → cloud-ide-layout-home-wrapper.component-DxmyaTO-.mjs.map} +1 -1
  9. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BmatY1F3.mjs → cloud-ide-layout-sidedrawer-notes.component-De3yMh-k.mjs} +2 -2
  10. package/fesm2022/{cloud-ide-layout-sidedrawer-notes.component-BmatY1F3.mjs.map → cloud-ide-layout-sidedrawer-notes.component-De3yMh-k.mjs.map} +1 -1
  11. package/fesm2022/cloud-ide-layout.mjs +1 -1
  12. package/index.d.ts +3 -0
  13. package/package.json +1 -1
  14. package/fesm2022/cloud-ide-layout-cloud-ide-layout-DbmOIzcp.mjs.map +0 -1
@@ -1630,6 +1630,9 @@ const DEFAULT_SETTINGS = {
1630
1630
  quietHoursEnabled: false,
1631
1631
  quietHoursStart: '22:00',
1632
1632
  quietHoursEnd: '08:00',
1633
+ channelInApp: true,
1634
+ channelEmail: true,
1635
+ channelSms: true,
1633
1636
  desktopNotifications: true,
1634
1637
  showPreview: true,
1635
1638
  groupNotifications: true
@@ -1863,6 +1866,9 @@ class NotificationSettingsComponent {
1863
1866
  quietHoursEnabled: [settings.quietHoursEnabled],
1864
1867
  quietHoursStart: [settings.quietHoursStart],
1865
1868
  quietHoursEnd: [settings.quietHoursEnd],
1869
+ channelInApp: [settings.channelInApp],
1870
+ channelEmail: [settings.channelEmail],
1871
+ channelSms: [settings.channelSms],
1866
1872
  desktopNotifications: [settings.desktopNotifications],
1867
1873
  showPreview: [settings.showPreview],
1868
1874
  groupNotifications: [settings.groupNotifications]
@@ -1929,12 +1935,62 @@ class NotificationSettingsComponent {
1929
1935
  <cide-ele-icon class="tw-text-white">settings</cide-ele-icon>
1930
1936
  </div>
1931
1937
  <div>
1932
- <h3 class="tw-m-0 tw-text-sm tw-font-semibold tw-text-gray-900 dark:tw-text-gray-100">Notification Settings</h3>
1938
+ <h3 class="tw-m-0 tw-text-sm tw-font-semibold">Notification Settings</h3>
1933
1939
  <p class="tw-m-0 tw-text-xs tw-text-gray-600 dark:tw-text-gray-400">Customize your notification preferences</p>
1934
1940
  </div>
1935
1941
  </div>
1936
1942
 
1937
1943
  <form [formGroup]="settingsForm" class="tw-space-y-6">
1944
+ <!-- Notification Channels -->
1945
+ <div class="tw-space-y-3">
1946
+ <h4 class="tw-text-xs tw-font-semibold tw-text-gray-700 dark:tw-text-gray-300 tw-uppercase tw-tracking-wide">Notification Channels</h4>
1947
+
1948
+ <!-- In-App Notifications -->
1949
+ <div class="tw-flex tw-items-center tw-justify-between tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
1950
+ <div class="tw-flex tw-items-center tw-gap-2">
1951
+ <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">notifications</cide-ele-icon>
1952
+ <div>
1953
+ <label class="tw-text-sm tw-font-medium">In-App Notifications</label>
1954
+ <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Receive notifications within the app</p>
1955
+ </div>
1956
+ </div>
1957
+ <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
1958
+ <input type="checkbox" formControlName="channelInApp" class="tw-sr-only tw-peer">
1959
+ <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
1960
+ </label>
1961
+ </div>
1962
+
1963
+ <!-- Email Notifications -->
1964
+ <div class="tw-flex tw-items-center tw-justify-between tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
1965
+ <div class="tw-flex tw-items-center tw-gap-2">
1966
+ <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">mail</cide-ele-icon>
1967
+ <div>
1968
+ <label class="tw-text-sm tw-font-medium">Email Notifications</label>
1969
+ <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Receive notifications via email</p>
1970
+ </div>
1971
+ </div>
1972
+ <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
1973
+ <input type="checkbox" formControlName="channelEmail" class="tw-sr-only tw-peer">
1974
+ <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
1975
+ </label>
1976
+ </div>
1977
+
1978
+ <!-- SMS Notifications -->
1979
+ <div class="tw-flex tw-items-center tw-justify-between tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
1980
+ <div class="tw-flex tw-items-center tw-gap-2">
1981
+ <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">sms</cide-ele-icon>
1982
+ <div>
1983
+ <label class="tw-text-sm tw-font-medium">SMS Notifications</label>
1984
+ <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Receive notifications via SMS</p>
1985
+ </div>
1986
+ </div>
1987
+ <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
1988
+ <input type="checkbox" formControlName="channelSms" class="tw-sr-only tw-peer">
1989
+ <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
1990
+ </label>
1991
+ </div>
1992
+ </div>
1993
+
1938
1994
  <!-- Sound Settings -->
1939
1995
  <div class="tw-space-y-3">
1940
1996
  <h4 class="tw-text-xs tw-font-semibold tw-text-gray-700 dark:tw-text-gray-300 tw-uppercase tw-tracking-wide">Sound Settings</h4>
@@ -1944,15 +2000,14 @@ class NotificationSettingsComponent {
1944
2000
  <div class="tw-flex tw-items-center tw-gap-2">
1945
2001
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">volume_up</cide-ele-icon>
1946
2002
  <div>
1947
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Enable Sound</label>
2003
+ <label class="tw-text-sm tw-font-medium">Enable Sound</label>
1948
2004
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Play sound when receiving notifications</p>
1949
2005
  </div>
1950
2006
  </div>
1951
2007
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
1952
2008
  <input
1953
2009
  type="checkbox"
1954
- [checked]="settingsForm.get('soundEnabled')?.value"
1955
- (change)="settingsForm.get('soundEnabled')?.setValue($any($event.target).checked)"
2010
+ formControlName="soundEnabled"
1956
2011
  class="tw-sr-only tw-peer">
1957
2012
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
1958
2013
  </label>
@@ -1961,7 +2016,7 @@ class NotificationSettingsComponent {
1961
2016
  @if (settingsForm.get('soundEnabled')?.value) {
1962
2017
  <!-- Sound Type -->
1963
2018
  <div class="tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
1964
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">Sound Type</label>
2019
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">Sound Type</label>
1965
2020
  <cide-ele-select
1966
2021
  formControlName="soundType"
1967
2022
  [options]="soundTypeOptions"
@@ -1972,7 +2027,7 @@ class NotificationSettingsComponent {
1972
2027
  <!-- Sound Volume -->
1973
2028
  <div class="tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
1974
2029
  <div class="tw-flex tw-items-center tw-justify-between tw-mb-2">
1975
- <label class="tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300">Volume</label>
2030
+ <label class="tw-text-xs tw-font-medium">Volume</label>
1976
2031
  <span class="tw-text-xs tw-text-gray-600 dark:tw-text-gray-400">{{ settingsForm.get('soundVolume')?.value }}%</span>
1977
2032
  </div>
1978
2033
  <div class="volume-slider-container">
@@ -2014,15 +2069,14 @@ class NotificationSettingsComponent {
2014
2069
  <div class="tw-flex tw-items-center tw-gap-2">
2015
2070
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">schedule</cide-ele-icon>
2016
2071
  <div>
2017
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Enable Quiet Hours</label>
2072
+ <label class="tw-text-sm tw-font-medium">Enable Quiet Hours</label>
2018
2073
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Mute notifications during specified hours</p>
2019
2074
  </div>
2020
2075
  </div>
2021
2076
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2022
2077
  <input
2023
2078
  type="checkbox"
2024
- [checked]="settingsForm.get('quietHoursEnabled')?.value"
2025
- (change)="settingsForm.get('quietHoursEnabled')?.setValue($any($event.target).checked)"
2079
+ formControlName="quietHoursEnabled"
2026
2080
  class="tw-sr-only tw-peer">
2027
2081
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2028
2082
  </label>
@@ -2031,7 +2085,7 @@ class NotificationSettingsComponent {
2031
2085
  @if (settingsForm.get('quietHoursEnabled')?.value) {
2032
2086
  <div class="tw-grid tw-grid-cols-2 tw-gap-3 tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2033
2087
  <div>
2034
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">Start Time</label>
2088
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">Start Time</label>
2035
2089
  <cide-ele-input
2036
2090
  type="time"
2037
2091
  formControlName="quietHoursStart"
@@ -2039,7 +2093,7 @@ class NotificationSettingsComponent {
2039
2093
  </cide-ele-input>
2040
2094
  </div>
2041
2095
  <div>
2042
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">End Time</label>
2096
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">End Time</label>
2043
2097
  <cide-ele-input
2044
2098
  type="time"
2045
2099
  formControlName="quietHoursEnd"
@@ -2059,15 +2113,14 @@ class NotificationSettingsComponent {
2059
2113
  <div class="tw-flex tw-items-center tw-gap-2">
2060
2114
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">snooze</cide-ele-icon>
2061
2115
  <div>
2062
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Enable Snooze</label>
2116
+ <label class="tw-text-sm tw-font-medium">Enable Snooze</label>
2063
2117
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Temporarily pause notifications</p>
2064
2118
  </div>
2065
2119
  </div>
2066
2120
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2067
2121
  <input
2068
2122
  type="checkbox"
2069
- [checked]="settingsForm.get('snoozeEnabled')?.value"
2070
- (change)="settingsForm.get('snoozeEnabled')?.setValue($any($event.target).checked)"
2123
+ formControlName="snoozeEnabled"
2071
2124
  class="tw-sr-only tw-peer">
2072
2125
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2073
2126
  </label>
@@ -2075,7 +2128,7 @@ class NotificationSettingsComponent {
2075
2128
 
2076
2129
  @if (settingsForm.get('snoozeEnabled')?.value) {
2077
2130
  <div class="tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2078
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">Snooze Duration (minutes)</label>
2131
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">Snooze Duration (minutes)</label>
2079
2132
  <cide-ele-input
2080
2133
  type="number"
2081
2134
  formControlName="snoozeDuration"
@@ -2096,15 +2149,14 @@ class NotificationSettingsComponent {
2096
2149
  <div class="tw-flex tw-items-center tw-gap-2">
2097
2150
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">desktop_windows</cide-ele-icon>
2098
2151
  <div>
2099
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Desktop Notifications</label>
2152
+ <label class="tw-text-sm tw-font-medium">Desktop Notifications</label>
2100
2153
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Show browser notifications</p>
2101
2154
  </div>
2102
2155
  </div>
2103
2156
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2104
2157
  <input
2105
2158
  type="checkbox"
2106
- [checked]="settingsForm.get('desktopNotifications')?.value"
2107
- (change)="settingsForm.get('desktopNotifications')?.setValue($any($event.target).checked)"
2159
+ formControlName="desktopNotifications"
2108
2160
  class="tw-sr-only tw-peer">
2109
2161
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2110
2162
  </label>
@@ -2134,7 +2186,8 @@ class NotificationSettingsComponent {
2134
2186
  </div>
2135
2187
  </form>
2136
2188
  </div>
2137
- `, isInline: true, styles: [":host{display:block}.notification-settings-container{color:#111827}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container{background-color:#fff!important;color:#111827!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container *{color:inherit}.volume-slider-container{position:relative;width:100%}.volume-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient(to right,#e5e7eb 0% 100%);outline:none;cursor:pointer;transition:background .3s ease}:root:not([data-theme=dark]):not(.dark-mode) .volume-slider{background:linear-gradient(to right,#e5e7eb 0% 100%)}:root[data-theme=dark] .volume-slider,:root.dark-mode .volume-slider{background:linear-gradient(to right,#374151 0% 100%)}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#2563eb;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003;transition:all .2s ease}.volume-slider::-webkit-slider-thumb:hover{background:#1d4ed8;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.volume-slider::-webkit-slider-thumb:active{transform:scale(1.2)}:root[data-theme=dark] .volume-slider::-webkit-slider-thumb,:root.dark-mode .volume-slider::-webkit-slider-thumb{background:#3b82f6;border-color:#1e293b}.volume-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#2563eb;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003;transition:all .2s ease}.volume-slider::-moz-range-thumb:hover{background:#1d4ed8;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.volume-slider::-moz-range-thumb:active{transform:scale(1.2)}:root[data-theme=dark] .volume-slider::-moz-range-thumb,:root.dark-mode .volume-slider::-moz-range-thumb{background:#3b82f6;border-color:#1e293b}.volume-slider{background-size:var(--slider-value, 0%) 100%;background-repeat:no-repeat}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-700{color:#374151!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-600{color:#4b5563!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-500{color:#6b7280!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-900{color:#111827!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-bg-gray-50{background-color:#f9fafb!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "step", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey", "treeView"], outputs: ["ngModelChange", "change", "searchChange"] }] });
2189
+
2190
+ `, isInline: true, styles: [":host{display:block}.volume-slider-container{position:relative;width:100%}.volume-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:#e5e7eb;outline:none;cursor:pointer;transition:background .3s ease}:host-context(.dark-mode) .volume-slider{background:#374151}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#2563eb;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003;transition:all .2s ease}.volume-slider::-webkit-slider-thumb:hover{background:#1d4ed8;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}:host-context(.dark-mode) .volume-slider::-webkit-slider-thumb{background:#3b82f6;border-color:#1e293b}.volume-slider{background-size:var(--slider-value, 0%) 100%;background-repeat:no-repeat}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CideIconComponent, selector: "cide-ele-icon", inputs: ["size", "type", "toolTip"] }, { kind: "component", type: CideEleButtonComponent, selector: "button[cideEleButton], a[cideEleButton], cide-ele-button", inputs: ["label", "variant", "size", "type", "shape", "elevation", "disabled", "id", "loading", "fullWidth", "leftIcon", "rightIcon", "customClass", "tooltip", "ariaLabel", "testId", "routerLink", "routerExtras", "preventDoubleClick", "animated"], outputs: ["btnClick", "doubleClick"] }, { kind: "component", type: CideInputComponent, selector: "cide-ele-input", inputs: ["fill", "label", "labelHide", "disabled", "clearInput", "labelPlacement", "labelDir", "placeholder", "leadingIcon", "trailingIcon", "helperText", "helperTextCollapse", "hideHelperAndErrorText", "errorText", "maxlength", "minlength", "required", "autocapitalize", "autocomplete", "type", "width", "id", "ngModel", "option", "min", "max", "step", "size"], outputs: ["ngModelChange"] }, { kind: "component", type: CideSelectComponent, selector: "cide-ele-select", inputs: ["label", "labelHide", "placeholder", "helperText", "errorText", "required", "disabled", "id", "ngModel", "size", "fill", "labelPlacement", "labelDir", "leadingIcon", "trailingIcon", "clearInput", "options", "multiple", "searchable", "showSearchInput", "loading", "valueKey", "labelKey", "treeView"], outputs: ["ngModelChange", "change", "searchChange"] }] });
2138
2191
  }
2139
2192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NotificationSettingsComponent, decorators: [{
2140
2193
  type: Component,
@@ -2153,12 +2206,62 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2153
2206
  <cide-ele-icon class="tw-text-white">settings</cide-ele-icon>
2154
2207
  </div>
2155
2208
  <div>
2156
- <h3 class="tw-m-0 tw-text-sm tw-font-semibold tw-text-gray-900 dark:tw-text-gray-100">Notification Settings</h3>
2209
+ <h3 class="tw-m-0 tw-text-sm tw-font-semibold">Notification Settings</h3>
2157
2210
  <p class="tw-m-0 tw-text-xs tw-text-gray-600 dark:tw-text-gray-400">Customize your notification preferences</p>
2158
2211
  </div>
2159
2212
  </div>
2160
2213
 
2161
2214
  <form [formGroup]="settingsForm" class="tw-space-y-6">
2215
+ <!-- Notification Channels -->
2216
+ <div class="tw-space-y-3">
2217
+ <h4 class="tw-text-xs tw-font-semibold tw-text-gray-700 dark:tw-text-gray-300 tw-uppercase tw-tracking-wide">Notification Channels</h4>
2218
+
2219
+ <!-- In-App Notifications -->
2220
+ <div class="tw-flex tw-items-center tw-justify-between tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2221
+ <div class="tw-flex tw-items-center tw-gap-2">
2222
+ <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">notifications</cide-ele-icon>
2223
+ <div>
2224
+ <label class="tw-text-sm tw-font-medium">In-App Notifications</label>
2225
+ <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Receive notifications within the app</p>
2226
+ </div>
2227
+ </div>
2228
+ <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2229
+ <input type="checkbox" formControlName="channelInApp" class="tw-sr-only tw-peer">
2230
+ <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2231
+ </label>
2232
+ </div>
2233
+
2234
+ <!-- Email Notifications -->
2235
+ <div class="tw-flex tw-items-center tw-justify-between tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2236
+ <div class="tw-flex tw-items-center tw-gap-2">
2237
+ <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">mail</cide-ele-icon>
2238
+ <div>
2239
+ <label class="tw-text-sm tw-font-medium">Email Notifications</label>
2240
+ <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Receive notifications via email</p>
2241
+ </div>
2242
+ </div>
2243
+ <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2244
+ <input type="checkbox" formControlName="channelEmail" class="tw-sr-only tw-peer">
2245
+ <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2246
+ </label>
2247
+ </div>
2248
+
2249
+ <!-- SMS Notifications -->
2250
+ <div class="tw-flex tw-items-center tw-justify-between tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2251
+ <div class="tw-flex tw-items-center tw-gap-2">
2252
+ <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">sms</cide-ele-icon>
2253
+ <div>
2254
+ <label class="tw-text-sm tw-font-medium">SMS Notifications</label>
2255
+ <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Receive notifications via SMS</p>
2256
+ </div>
2257
+ </div>
2258
+ <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2259
+ <input type="checkbox" formControlName="channelSms" class="tw-sr-only tw-peer">
2260
+ <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2261
+ </label>
2262
+ </div>
2263
+ </div>
2264
+
2162
2265
  <!-- Sound Settings -->
2163
2266
  <div class="tw-space-y-3">
2164
2267
  <h4 class="tw-text-xs tw-font-semibold tw-text-gray-700 dark:tw-text-gray-300 tw-uppercase tw-tracking-wide">Sound Settings</h4>
@@ -2168,15 +2271,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2168
2271
  <div class="tw-flex tw-items-center tw-gap-2">
2169
2272
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">volume_up</cide-ele-icon>
2170
2273
  <div>
2171
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Enable Sound</label>
2274
+ <label class="tw-text-sm tw-font-medium">Enable Sound</label>
2172
2275
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Play sound when receiving notifications</p>
2173
2276
  </div>
2174
2277
  </div>
2175
2278
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2176
2279
  <input
2177
2280
  type="checkbox"
2178
- [checked]="settingsForm.get('soundEnabled')?.value"
2179
- (change)="settingsForm.get('soundEnabled')?.setValue($any($event.target).checked)"
2281
+ formControlName="soundEnabled"
2180
2282
  class="tw-sr-only tw-peer">
2181
2283
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2182
2284
  </label>
@@ -2185,7 +2287,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2185
2287
  @if (settingsForm.get('soundEnabled')?.value) {
2186
2288
  <!-- Sound Type -->
2187
2289
  <div class="tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2188
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">Sound Type</label>
2290
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">Sound Type</label>
2189
2291
  <cide-ele-select
2190
2292
  formControlName="soundType"
2191
2293
  [options]="soundTypeOptions"
@@ -2196,7 +2298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2196
2298
  <!-- Sound Volume -->
2197
2299
  <div class="tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2198
2300
  <div class="tw-flex tw-items-center tw-justify-between tw-mb-2">
2199
- <label class="tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300">Volume</label>
2301
+ <label class="tw-text-xs tw-font-medium">Volume</label>
2200
2302
  <span class="tw-text-xs tw-text-gray-600 dark:tw-text-gray-400">{{ settingsForm.get('soundVolume')?.value }}%</span>
2201
2303
  </div>
2202
2304
  <div class="volume-slider-container">
@@ -2238,15 +2340,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2238
2340
  <div class="tw-flex tw-items-center tw-gap-2">
2239
2341
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">schedule</cide-ele-icon>
2240
2342
  <div>
2241
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Enable Quiet Hours</label>
2343
+ <label class="tw-text-sm tw-font-medium">Enable Quiet Hours</label>
2242
2344
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Mute notifications during specified hours</p>
2243
2345
  </div>
2244
2346
  </div>
2245
2347
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2246
2348
  <input
2247
2349
  type="checkbox"
2248
- [checked]="settingsForm.get('quietHoursEnabled')?.value"
2249
- (change)="settingsForm.get('quietHoursEnabled')?.setValue($any($event.target).checked)"
2350
+ formControlName="quietHoursEnabled"
2250
2351
  class="tw-sr-only tw-peer">
2251
2352
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2252
2353
  </label>
@@ -2255,7 +2356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2255
2356
  @if (settingsForm.get('quietHoursEnabled')?.value) {
2256
2357
  <div class="tw-grid tw-grid-cols-2 tw-gap-3 tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2257
2358
  <div>
2258
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">Start Time</label>
2359
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">Start Time</label>
2259
2360
  <cide-ele-input
2260
2361
  type="time"
2261
2362
  formControlName="quietHoursStart"
@@ -2263,7 +2364,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2263
2364
  </cide-ele-input>
2264
2365
  </div>
2265
2366
  <div>
2266
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">End Time</label>
2367
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">End Time</label>
2267
2368
  <cide-ele-input
2268
2369
  type="time"
2269
2370
  formControlName="quietHoursEnd"
@@ -2283,15 +2384,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2283
2384
  <div class="tw-flex tw-items-center tw-gap-2">
2284
2385
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">snooze</cide-ele-icon>
2285
2386
  <div>
2286
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Enable Snooze</label>
2387
+ <label class="tw-text-sm tw-font-medium">Enable Snooze</label>
2287
2388
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Temporarily pause notifications</p>
2288
2389
  </div>
2289
2390
  </div>
2290
2391
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2291
2392
  <input
2292
2393
  type="checkbox"
2293
- [checked]="settingsForm.get('snoozeEnabled')?.value"
2294
- (change)="settingsForm.get('snoozeEnabled')?.setValue($any($event.target).checked)"
2394
+ formControlName="snoozeEnabled"
2295
2395
  class="tw-sr-only tw-peer">
2296
2396
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2297
2397
  </label>
@@ -2299,7 +2399,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2299
2399
 
2300
2400
  @if (settingsForm.get('snoozeEnabled')?.value) {
2301
2401
  <div class="tw-p-3 tw-bg-gray-50 dark:tw-bg-gray-800/50 tw-rounded-lg tw-border tw-border-gray-200 dark:tw-border-gray-700">
2302
- <label class="tw-block tw-text-xs tw-font-medium tw-text-gray-700 dark:tw-text-gray-300 tw-mb-2">Snooze Duration (minutes)</label>
2402
+ <label class="tw-block tw-text-xs tw-font-medium tw-mb-2">Snooze Duration (minutes)</label>
2303
2403
  <cide-ele-input
2304
2404
  type="number"
2305
2405
  formControlName="snoozeDuration"
@@ -2320,15 +2420,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2320
2420
  <div class="tw-flex tw-items-center tw-gap-2">
2321
2421
  <cide-ele-icon class="tw-text-gray-600 dark:tw-text-gray-400">desktop_windows</cide-ele-icon>
2322
2422
  <div>
2323
- <label class="tw-text-sm tw-font-medium tw-text-gray-900 dark:tw-text-gray-100">Desktop Notifications</label>
2423
+ <label class="tw-text-sm tw-font-medium">Desktop Notifications</label>
2324
2424
  <p class="tw-m-0 tw-text-xs tw-text-gray-500 dark:tw-text-gray-400">Show browser notifications</p>
2325
2425
  </div>
2326
2426
  </div>
2327
2427
  <label class="tw-relative tw-inline-flex tw-items-center tw-cursor-pointer">
2328
2428
  <input
2329
2429
  type="checkbox"
2330
- [checked]="settingsForm.get('desktopNotifications')?.value"
2331
- (change)="settingsForm.get('desktopNotifications')?.setValue($any($event.target).checked)"
2430
+ formControlName="desktopNotifications"
2332
2431
  class="tw-sr-only tw-peer">
2333
2432
  <div class="tw-w-11 tw-h-6 tw-bg-gray-200 peer-focus:tw-outline-none peer-focus:tw-ring-4 peer-focus:tw-ring-blue-300 dark:peer-focus:tw-ring-blue-800 dark:peer-focus:tw-ring-offset-gray-800 tw-rounded-full peer dark:tw-bg-gray-700 peer-checked:after:tw-translate-x-full peer-checked:after:tw-border-white after:tw-content-[''] after:tw-absolute after:tw-top-[2px] after:tw-left-[2px] after:tw-bg-white after:tw-border-gray-300 after:tw-border after:tw-rounded-full after:tw-h-5 after:tw-w-5 after:tw-transition-all dark:tw-border-gray-600 peer-checked:tw-bg-blue-600"></div>
2334
2433
  </label>
@@ -2358,7 +2457,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
2358
2457
  </div>
2359
2458
  </form>
2360
2459
  </div>
2361
- `, styles: [":host{display:block}.notification-settings-container{color:#111827}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container{background-color:#fff!important;color:#111827!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container *{color:inherit}.volume-slider-container{position:relative;width:100%}.volume-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient(to right,#e5e7eb 0% 100%);outline:none;cursor:pointer;transition:background .3s ease}:root:not([data-theme=dark]):not(.dark-mode) .volume-slider{background:linear-gradient(to right,#e5e7eb 0% 100%)}:root[data-theme=dark] .volume-slider,:root.dark-mode .volume-slider{background:linear-gradient(to right,#374151 0% 100%)}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#2563eb;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003;transition:all .2s ease}.volume-slider::-webkit-slider-thumb:hover{background:#1d4ed8;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.volume-slider::-webkit-slider-thumb:active{transform:scale(1.2)}:root[data-theme=dark] .volume-slider::-webkit-slider-thumb,:root.dark-mode .volume-slider::-webkit-slider-thumb{background:#3b82f6;border-color:#1e293b}.volume-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#2563eb;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003;transition:all .2s ease}.volume-slider::-moz-range-thumb:hover{background:#1d4ed8;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.volume-slider::-moz-range-thumb:active{transform:scale(1.2)}:root[data-theme=dark] .volume-slider::-moz-range-thumb,:root.dark-mode .volume-slider::-moz-range-thumb{background:#3b82f6;border-color:#1e293b}.volume-slider{background-size:var(--slider-value, 0%) 100%;background-repeat:no-repeat}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-700{color:#374151!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-600{color:#4b5563!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-500{color:#6b7280!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-text-gray-900{color:#111827!important}:root:not([data-theme=dark]):not(.dark-mode) .notification-settings-container .tw-bg-gray-50{background-color:#f9fafb!important}\n"] }]
2460
+
2461
+ `, styles: [":host{display:block}.volume-slider-container{position:relative;width:100%}.volume-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:#e5e7eb;outline:none;cursor:pointer;transition:background .3s ease}:host-context(.dark-mode) .volume-slider{background:#374151}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#2563eb;cursor:pointer;border:2px solid #ffffff;box-shadow:0 2px 4px #0003;transition:all .2s ease}.volume-slider::-webkit-slider-thumb:hover{background:#1d4ed8;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}:host-context(.dark-mode) .volume-slider::-webkit-slider-thumb{background:#3b82f6;border-color:#1e293b}.volume-slider{background-size:var(--slider-value, 0%) 100%;background-repeat:no-repeat}\n"] }]
2362
2462
  }] });
2363
2463
 
2364
2464
  class CideLytHeaderWrapperComponent {
@@ -2516,6 +2616,7 @@ class CideLytHeaderWrapperComponent {
2516
2616
  authService = inject(AUTH_SERVICE_TOKEN);
2517
2617
  wsNotificationService = inject(WebSocketNotificationService);
2518
2618
  notificationApiService = inject(NotificationApiService);
2619
+ toastService = inject(NotificationService);
2519
2620
  floatingContainerService = inject(CideEleFloatingContainerService);
2520
2621
  notificationSettingsService = inject(NotificationSettingsService);
2521
2622
  sidebarService = inject(CideLytSidebarService);
@@ -2663,6 +2764,28 @@ class CideLytHeaderWrapperComponent {
2663
2764
  this.loadNotifications();
2664
2765
  // Play notification sound based on user settings
2665
2766
  this.playNotificationSound();
2767
+ // Push toast notification for real-time visibility
2768
+ const toastOptions = {
2769
+ title: notification.title,
2770
+ icon: this.getNotificationIcon(notification.type),
2771
+ duration: 5000
2772
+ };
2773
+ switch (notification.type) {
2774
+ case 'success':
2775
+ this.toastService.success(notification.message, toastOptions);
2776
+ break;
2777
+ case 'error':
2778
+ this.toastService.error(notification.message, toastOptions);
2779
+ break;
2780
+ case 'warning':
2781
+ this.toastService.warning(notification.message, toastOptions);
2782
+ break;
2783
+ case 'info':
2784
+ case 'system':
2785
+ default:
2786
+ this.toastService.info(notification.message, toastOptions);
2787
+ break;
2788
+ }
2666
2789
  },
2667
2790
  error: (error) => {
2668
2791
  console.error('[Notifications] Error in notification stream:', error);
@@ -5512,8 +5635,8 @@ class CideLytSidedrawerWrapperComponent {
5512
5635
  }
5513
5636
  ngOnInit() {
5514
5637
  // Initialize the component map (You'd likely populate this from a config or service)
5515
- this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-BmatY1F3.mjs').then(m => m.CideLytSidedrawerNotesComponent);
5516
- this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-CGKOAqaC.mjs').then(m => m.CideLytDrawerThemeComponent);
5638
+ this.componentMap['drowar_notes'] = () => import('./cloud-ide-layout-sidedrawer-notes.component-De3yMh-k.mjs').then(m => m.CideLytSidedrawerNotesComponent);
5639
+ this.componentMap['drawer_theme'] = () => import('./cloud-ide-layout-drawer-theme.component-C9IMuYmm.mjs').then(m => m.CideLytDrawerThemeComponent);
5517
5640
  }
5518
5641
  async loadComponent(configFor) {
5519
5642
  console.log('🔍 SIDEDRAWER - Loading component:', configFor, 'Current tab:', this.currentTabId);
@@ -7212,7 +7335,7 @@ const layoutControlPannelChildRoutes = [{
7212
7335
  },
7213
7336
  {
7214
7337
  path: "home",
7215
- loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-DWW33pNY.mjs').then(c => c.CideLytHomeWrapperComponent),
7338
+ loadComponent: () => import('./cloud-ide-layout-home-wrapper.component-DxmyaTO-.mjs').then(c => c.CideLytHomeWrapperComponent),
7216
7339
  canActivate: [authGuard],
7217
7340
  data: {
7218
7341
  sypg_page_code: "cide_lyt_home" // Used by RequestService to fetch tab properties
@@ -7220,7 +7343,7 @@ const layoutControlPannelChildRoutes = [{
7220
7343
  },
7221
7344
  {
7222
7345
  path: "dashboard-manager",
7223
- loadComponent: () => import('./cloud-ide-layout-dashboard-manager.component-GSZtQgsb.mjs').then(c => c.DashboardManagerComponent),
7346
+ loadComponent: () => import('./cloud-ide-layout-dashboard-manager.component-CJHUNhoZ.mjs').then(c => c.DashboardManagerComponent),
7224
7347
  canActivate: [authGuard],
7225
7348
  data: {
7226
7349
  sypg_page_code: "cide_lyt_dashboard_manager"
@@ -9044,4 +9167,4 @@ var floatingEntitySelection_component = /*#__PURE__*/Object.freeze({
9044
9167
  */
9045
9168
 
9046
9169
  export { AppStateHelperService as A, CideLytSharedWrapperComponent as C, ENVIRONMENT_CONFIG as E, NotificationSettingsService as N, RightsService as R, CideLytSidebarService as a, CideLytSidedrawerService as b, CideLytThemeService as c, CloudIdeLayoutService as d, CloudIdeLayoutComponent as e, CideLytSharedService as f, ComponentContextService as g, layoutControlPannelChildRoutes as h, CustomRouteReuseStrategy as i, AppStateService as j, CideLytUserStatusService as k, layoutRoutes as l, CacheManagerService as m, CideLytFileManagerService as n, CideLytFloatingEntityRightsSharingComponent as o, processThemeVariable as p, CideLytFloatingEntityRightsSharingService as q, CideLytFloatingEntitySelectionComponent as r, setCSSVariable as s, themeFactory as t, CideLytFloatingEntitySelectionService as u };
9047
- //# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-DbmOIzcp.mjs.map
9170
+ //# sourceMappingURL=cloud-ide-layout-cloud-ide-layout-2qeSM8A1.mjs.map