sample.xml 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Enhanced UI Layout Definition Format Sample v1.3 -->
  3. <ui-layout-def xmlns="ui-layout-definition"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="ui-layout-definition ui-layout-def.xsd"
  6. version="1.3"
  7. schema-version="1.3"
  8. min-version="1.0"
  9. max-version="2.0"
  10. target-platform="avalonia"
  11. accessibility-compliance="wcag-aa">
  12. <!-- ENHANCED: v1.3 Validation Rules with Custom Validators and Profiles -->
  13. <validation-rules>
  14. <validation-include src="wcag-validation.xml" important="true" min-version="1.3" />
  15. <validation-include src="performance-rules.xml" important="true" min-version="1.3" />
  16. <validation-include src="security-rules.xml" important="true" min-version="1.3" />
  17. <validation-include src="view-validation.xml" important="true" min-version="1.2" />
  18. <!-- Custom Business Rule Validator -->
  19. <custom-validator name="BusinessRuleValidator" version="1.0" category="business-rules">
  20. <description>Validates business-specific constraints</description>
  21. <implementation>
  22. <script language="javascript">
  23. function validate(element, context) {
  24. // Custom validation logic
  25. return element.hasAttribute('required') ? element.value.length > 0 : true;
  26. }
  27. </script>
  28. </implementation>
  29. <parameter name="strict-mode" type="bool" default-value="false" required="false"
  30. description="Enable strict business rule validation" />
  31. <test-case name="required-field" description="Should validate required fields">
  32. <input><TextBox required="true" text="" /></input>
  33. <expected-result>fail</expected-result>
  34. <expected-message>Required field cannot be empty</expected-message>
  35. </test-case>
  36. </custom-validator>
  37. <!-- Production Validation Profile -->
  38. <validation-profile name="ProductionProfile" version="1.0" target-platform="avalonia" enabled="true">
  39. <description>Production-ready validation with accessibility and performance checks</description>
  40. <profile-rule rule-name="BusinessRuleValidator" enabled="true" severity="error"
  41. configuration="strict-mode=true" />
  42. <profile-rule rule-name="accessibility-compliance" enabled="true" severity="warning" />
  43. <profile-group group-name="performance-validation" enabled="true" override-severity="warning" />
  44. <configuration stop-on-first-error="false" max-errors="100" parallel-execution="true" cache-results="true">
  45. <setting key="accessibility-level" value="wcag-aa" scope="profile" />
  46. <setting key="performance-threshold" value="2000ms" scope="profile" />
  47. <exclusion pattern="*.test.xml" type="file" reason="Test files excluded from production validation" />
  48. </configuration>
  49. </validation-profile>
  50. </validation-rules>
  51. <!-- ENHANCED: v1.3 Pattern Definitions with Advanced Features -->
  52. <patterns>
  53. <pattern-include src="avalonia-controls.xml" important="true" platform="avalonia" min-version="1.3" />
  54. <pattern-include src="accessibility-controls.xml" important="true" min-version="1.3" />
  55. <pattern-include src="performance-controls.xml" important="false" min-version="1.3" />
  56. <!-- Enhanced Control with v1.3 Features -->
  57. <control name="EnhancedDataGrid" type="data" category="avalonia-data" schema-version="1.3">
  58. <description>High-performance data grid with virtualization and accessibility</description>
  59. <constraints>
  60. <allowed-parents>Panel,ScrollViewer,Border</allowed-parents>
  61. <allowed-children>columns</allowed-children>
  62. <container>true</container>
  63. <platform-constraints>
  64. <platform-constraint platform="avalonia" min-version="11.0" feature-required="virtualization" />
  65. </platform-constraints>
  66. <performance-hints virtualization-supported="true" memory-intensive="true"
  67. recommended-max-items="10000" />
  68. </constraints>
  69. <attributes>
  70. <attribute name="items-source" type="binding" default="" category="data"
  71. description="Collection of items to display" />
  72. <attribute name="virtualization-enabled" type="bool" default="true" category="performance"
  73. description="Enable row virtualization for large datasets" />
  74. <attribute name="accessibility-mode" type="enum" values="standard,enhanced,full" default="enhanced"
  75. category="accessibility" description="Level of accessibility support" />
  76. <attribute name="performance-mode" type="enum" values="standard,optimized,maximum" default="optimized"
  77. category="performance" description="Performance optimization level" />
  78. </attributes>
  79. <validation>
  80. <rule name="max-columns" type="range" pattern="count(columns/column) &lt;= 50"
  81. message="Maximum 50 columns allowed for performance" severity="warning" />
  82. <rule name="accessibility-headers" type="custom" message="Column headers required for accessibility"
  83. severity="error" />
  84. </validation>
  85. <accessibility>
  86. <requirement standard="wcag" level="aa" description="Table headers and navigation" required="true" />
  87. <requirement standard="section-508" level="aa" description="Keyboard navigation support" required="true" />
  88. </accessibility>
  89. <data-binding supports-two-way="true" supports-commands="true" supports-validation="true">
  90. <bindable-property name="ItemsSource" type="collection" mode="OneWay" dependency-property="true" />
  91. <bindable-property name="SelectedItem" type="object" mode="TwoWay" dependency-property="true" />
  92. <bindable-property name="IsLoading" type="bool" mode="OneWay" default-value="false" />
  93. </data-binding>
  94. <behavior>
  95. <event name="selection-changed" async="false" accessibility-event="true" />
  96. <event name="loading-started" async="true" />
  97. <event name="loading-completed" async="true" />
  98. <command name="RefreshCommand" can-execute-property="CanRefresh" async="true" />
  99. <gesture name="swipe-refresh" type="swipe" platform-specific="mobile" />
  100. </behavior>
  101. </control>
  102. <!-- Responsive Layout Wireframe -->
  103. <wireframe name="ResponsiveAppLayout" type="base-layout" schema-version="1.3">
  104. <description>Responsive application layout with accessibility and performance optimization</description>
  105. <responsive>
  106. <breakpoint name="mobile" max-width="768" orientation="any" template-override="MobileLayout" />
  107. <breakpoint name="tablet" min-width="769" max-width="1024" orientation="any" />
  108. <breakpoint name="desktop" min-width="1025" orientation="any" />
  109. </responsive>
  110. <theme-support>
  111. <theme-variant name="light" type="light" />
  112. <theme-variant name="dark" type="dark" />
  113. <theme-variant name="high-contrast" type="high-contrast" resource-override="hc-resources.xml" />
  114. </theme-support>
  115. <template>
  116. <Grid name="rootContainer">
  117. <grid-definitions>
  118. <row-definitions>
  119. <row-definition height="Auto" shared-size-group="Header" />
  120. <row-definition height="*" />
  121. <row-definition height="Auto" shared-size-group="Footer" />
  122. </row-definitions>
  123. <column-definitions>
  124. <column-definition width="Auto" min-width="200" />
  125. <column-definition width="*" />
  126. </column-definitions>
  127. </grid-definitions>
  128. <slot name="header-content" grid-row="0" grid-column="0" grid-column-span="2"
  129. accessibility-landmark="banner" />
  130. <slot name="sidebar-content" grid-row="1" grid-column="0"
  131. accessibility-landmark="navigation" conditional="screen-width > 768" />
  132. <slot name="main-content" grid-row="1" grid-column="1" required="true"
  133. accessibility-landmark="main" />
  134. <slot name="footer-content" grid-row="2" grid-column="0" grid-column-span="2"
  135. accessibility-landmark="contentinfo" />
  136. </Grid>
  137. </template>
  138. </wireframe>
  139. </patterns>
  140. <!-- ENHANCED: v1.3 Advanced View Definitions -->
  141. <views>
  142. <view-include src="business-views.xml" important="true" min-version="1.2" />
  143. <!-- Modern AI-Enhanced Application View -->
  144. <view name="ModernDashboardView" type="ai-assisted" category="ai-enhanced"
  145. schema-version="1.3" platform="avalonia" singleton="true" lazy-loading="false"
  146. cacheable="true" priority="high">
  147. <description>AI-enhanced dashboard with real-time analytics and collaboration</description>
  148. <metadata>
  149. <model-class>DashboardModel</model-class>
  150. <view-model-class>ModernDashboardViewModel</view-model-class>
  151. <controller-class>DashboardController</controller-class>
  152. <permissions>dashboard.read,analytics.view,ai.interact</permissions>
  153. <author>Development Team</author>
  154. <version>2.0.0</version>
  155. <created-date>2024-01-15</created-date>
  156. <modified-date>2024-03-10</modified-date>
  157. <documentation-url>https://docs.company.com/dashboard</documentation-url>
  158. <tags>
  159. <tag>ai-enhanced</tag>
  160. <tag>real-time</tag>
  161. <tag>analytics</tag>
  162. <tag>collaborative</tag>
  163. </tags>
  164. </metadata>
  165. <!-- Advanced State Management -->
  166. <state-management pattern="redux" persistence="distributed">
  167. <state name="initializing" initial="true" data-snapshot="InitializingState"
  168. description="Loading dashboard components" />
  169. <state name="loading-data" final="false" data-snapshot="LoadingState"
  170. description="Fetching analytics data" />
  171. <state name="ready" final="false" data-snapshot="ReadyState"
  172. description="Dashboard fully loaded and interactive" />
  173. <state name="ai-processing" final="false" data-snapshot="AIProcessingState"
  174. description="AI analysis in progress" />
  175. <state name="error" final="false" data-snapshot="ErrorState"
  176. description="Error state with recovery options" />
  177. <transition from="initializing" to="loading-data" trigger="components-loaded"
  178. condition="user.isAuthenticated" action="startDataLoad" />
  179. <transition from="loading-data" to="ready" trigger="data-loaded"
  180. condition="data.isValid && data.count > 0" action="finalizeLoad" />
  181. <transition from="ready" to="ai-processing" trigger="ai-analysis-requested"
  182. action="startAIAnalysis" />
  183. <transition from="ai-processing" to="ready" trigger="ai-analysis-complete"
  184. action="displayAIResults" />
  185. <transition from="*" to="error" trigger="critical-error" action="handleError" />
  186. </state-management>
  187. <!-- Comprehensive Accessibility -->
  188. <accessibility level="aaa" tested="true">
  189. <compliance standard="wcag" level="aaa" verified="true" />
  190. <compliance standard="section-508" level="aa" verified="true" />
  191. <compliance standard="ada" level="aa" verified="false" />
  192. <feature name="screen-reader" type="screen-reader" required="true"
  193. implementation="Full NVDA, JAWS, and VoiceOver compatibility" />
  194. <feature name="voice-control" type="voice-control" required="false"
  195. implementation="Dragon NaturallySpeaking and Windows Speech Recognition" />
  196. <feature name="high-contrast" type="high-contrast" required="true"
  197. implementation="Windows High Contrast and custom themes" />
  198. <feature name="magnification" type="magnification" required="true"
  199. implementation="Support for 200-500% zoom levels" />
  200. <feature name="eye-tracking" type="eye-tracking" required="false"
  201. implementation="Tobii Eye Tracker integration" />
  202. </accessibility>
  203. <!-- Performance Optimization -->
  204. <performance target-load-time="1000" memory-limit="150MB">
  205. <metric name="first-contentful-paint" type="load-time" target="800ms" critical="true" />
  206. <metric name="time-to-interactive" type="load-time" target="1200ms" critical="true" />
  207. <metric name="memory-usage" type="memory-usage" target="100MB" critical="false" />
  208. <metric name="cpu-usage" type="cpu-usage" target="5%" critical="false" />
  209. <metric name="frame-rate" type="frame-rate" target="60fps" critical="false" />
  210. <optimization technique="lazy-loading" description="Load widgets on demand" impact="high" />
  211. <optimization technique="virtualization" description="Virtualize large data grids" impact="high" />
  212. <optimization technique="caching" description="Cache dashboard configurations" impact="medium" />
  213. <optimization technique="code-splitting" description="Split AI components separately" impact="medium" />
  214. <optimization technique="preloading" description="Preload critical dashboard data" impact="low" />
  215. </performance>
  216. <!-- Security Framework -->
  217. <security level="high" audit-required="true">
  218. <permission name="dashboard-read" type="read" required="true" scope="view" />
  219. <permission name="analytics-access" type="read" required="true" scope="data" />
  220. <permission name="ai-interact" type="execute" required="false" scope="global" />
  221. <permission name="export-data" type="custom" required="false" scope="data" />
  222. <vulnerability-protection type="xss" protection="input-sanitization" severity="high" />
  223. <vulnerability-protection type="injection" protection="parameterized-queries" severity="critical" />
  224. <vulnerability-protection type="csrf" protection="anti-forgery-tokens" severity="high" />
  225. <vulnerability-protection type="data-exposure" protection="data-masking" severity="medium" />
  226. <data-protection encryption="true" gdpr-compliant="true" />
  227. </security>
  228. <!-- Advanced Localization -->
  229. <localization default-culture="en-US" fallback-culture="en" rtl-support="true">
  230. <supported-culture code="ar-SA" name="Arabic (Saudi Arabia)" completion="85" verified="false" />
  231. <supported-culture code="he-IL" name="Hebrew (Israel)" completion="90" verified="true" />
  232. <supported-culture code="zh-CN" name="Chinese (Simplified)" completion="95" verified="true" />
  233. <supported-culture code="ja-JP" name="Japanese" completion="80" verified="false" />
  234. <supported-culture code="de-DE" name="German" completion="100" verified="true" />
  235. <resource-bundle name="DashboardResources" path="Resources/Dashboard" type="resx" />
  236. <resource-bundle name="AIResources" path="Resources/AI" type="json" />
  237. <resource-bundle name="CommonResources" path="Resources/Common" type="resx" />
  238. </localization>
  239. <!-- Comprehensive Testing -->
  240. <testing coverage-target="95" strategy="e2e">
  241. <test-scenario name="dashboard-load" type="functional" priority="critical" automated="true">
  242. <step action="navigate-to-dashboard" expected="dashboard-container-visible" />
  243. <step action="wait-for-data-load" expected="charts-populated" />
  244. <step action="verify-ai-suggestions" expected="ai-panel-active" />
  245. </test-scenario>
  246. <test-scenario name="accessibility-navigation" type="accessibility" priority="high" automated="true">
  247. <step action="tab-through-controls" expected="all-interactive-elements-reachable" />
  248. <step action="screen-reader-announcements" expected="proper-aria-labels-announced" />
  249. <step action="high-contrast-mode" expected="all-content-visible" />
  250. </test-scenario>
  251. <test-scenario name="performance-benchmark" type="performance" priority="high" automated="true">
  252. <step action="measure-load-time" expected="under-1000ms" />
  253. <step action="measure-memory-usage" expected="under-150mb" />
  254. <step action="measure-frame-rate" expected="above-30fps" />
  255. </test-scenario>
  256. <test-scenario name="ai-interaction" type="functional" priority="medium" automated="true">
  257. <step action="request-ai-analysis" expected="ai-processing-indicator-shown" />
  258. <step action="wait-for-ai-results" expected="insights-displayed" />
  259. <step action="interact-with-suggestions" expected="actions-executed" />
  260. </test-scenario>
  261. <automation framework="playwright" selector-strategy="accessibility" page-object-model="true" />
  262. </testing>
  263. <!-- Dependencies -->
  264. <dependencies>
  265. <service-ref name="DashboardService" interface="IDashboardService" scope="scoped" required="true" />
  266. <service-ref name="AIAnalyticsService" interface="IAIService" scope="singleton" required="false" />
  267. <service-ref name="NotificationService" interface="INotificationService" scope="transient" required="true" />
  268. <library-ref name="ChartingLibrary" version="3.2.1" source="nuget" optional="false" />
  269. <library-ref name="AILibrary" version="1.5.0" source="internal" optional="true" />
  270. </dependencies>
  271. <!-- Data Context -->
  272. <data-context>
  273. <property name="dashboardData" type="DashboardData" scope="view" nullable="false"
  274. validation="NotNull" observable="true" />
  275. <property name="aiInsights" type="AIInsightCollection" scope="view" nullable="true"
  276. default-value="null" observable="true" />
  277. <property name="userPreferences" type="UserPreferences" scope="session" nullable="false"
  278. persistent="true" observable="true" />
  279. <property name="realTimeData" type="RealTimeDataStream" scope="distributed" nullable="true"
  280. observable="true" />
  281. </data-context>
  282. <!-- Windows -->
  283. <windows>
  284. <window-ref name="MainDashboard" role="main" default="true" lazy-load="false"
  285. cache-lifetime="3600" priority="critical" />
  286. <window-ref name="AIInsightsPanel" role="preview" default="false" lazy-load="true"
  287. priority="normal" />
  288. <window-ref name="SettingsDialog" role="utility" default="false" lazy-load="true"
  289. priority="low" />
  290. </windows>
  291. <!-- Navigation -->
  292. <navigation>
  293. <action name="show-dashboard" target="MainDashboard" async="false"
  294. confirmation-required="false" permission="dashboard-read" />
  295. <action name="show-ai-insights" target="AIInsightsPanel" async="true"
  296. confirmation-required="false" permission="ai-interact" />
  297. <action name="export-data" target="MainDashboard" async="true"
  298. confirmation-required="true" permission="export-data" />
  299. <action name="show-settings" target="SettingsDialog" async="false"
  300. confirmation-required="false" />
  301. </navigation>
  302. <!-- Behaviors -->
  303. <behaviors>
  304. <behavior name="refresh-dashboard" scope="view" async="true" debounce="1000" cancellable="true" />
  305. <behavior name="ai-analyze" scope="view" async="true" throttle="5000" cancellable="true" />
  306. <behavior name="save-preferences" scope="session" async="false" />
  307. <behavior name="export-dashboard" scope="application" async="true" cancellable="true" />
  308. </behaviors>
  309. <!-- Communication -->
  310. <communication>
  311. <publishes>
  312. <event name="dashboard-loaded" data="dashboard-id,load-time" async="false"
  313. broadcast="false" persistent="false" />
  314. <event name="ai-analysis-requested" data="analysis-type,parameters" async="true"
  315. broadcast="true" persistent="true" />
  316. <event name="data-exported" data="export-format,file-path" async="false"
  317. broadcast="false" persistent="true" />
  318. </publishes>
  319. <subscribes>
  320. <event name="data-updated" source="DataService" handler="refresh-dashboard"
  321. async="true" debounce="2000" filter="dashboard-relevant" />
  322. <event name="user-preferences-changed" source="SettingsView" handler="apply-preferences"
  323. async="false" />
  324. <event name="ai-model-updated" source="AIService" handler="refresh-ai-capabilities"
  325. async="true" />
  326. </subscribes>
  327. <real-time>
  328. <connection name="dashboard-updates" protocol="signalr" endpoint="/dashboardHub"
  329. auto-reconnect="true" />
  330. <connection name="ai-stream" protocol="websocket" endpoint="/ai-insights"
  331. auto-reconnect="true" />
  332. </real-time>
  333. </communication>
  334. </view>
  335. </views>
  336. <!-- ENHANCED: Window Includes with Conditional Loading -->
  337. <window-includes>
  338. <window-include src="avalonia-windows.xml" important="true" platform="avalonia" min-version="1.3" />
  339. <window-include src="accessibility-windows.xml" important="false" min-version="1.3" />
  340. <window-include src="mobile-responsive-windows.xml" important="false" platform="mobile" />
  341. </window-includes>
  342. <!-- ENHANCED: Modern Dashboard Window with v1.3 Features -->
  343. <window name="MainDashboard" title="AI-Enhanced Analytics Dashboard"
  344. wireframe="ResponsiveAppLayout" view="ModernDashboardView"
  345. target-platform="avalonia" schema-version="1.3">
  346. <attributes>
  347. <attribute name="width" value="1400" />
  348. <attribute name="height" value="900" />
  349. <attribute name="min-width" value="800" />
  350. <attribute name="min-height" value="600" />
  351. <attribute name="window-state" value="Maximized" />
  352. <attribute name="can-resize" value="true" />
  353. <attribute name="system-decorations" value="Full" />
  354. </attributes>
  355. <view-properties>
  356. <role>main</role>
  357. <default>true</default>
  358. <modal>false</modal>
  359. <data-context-binding>dashboardData</data-context-binding>
  360. </view-properties>
  361. <!-- Advanced Data Binding -->
  362. <data-binding>
  363. <data-context source="ModernDashboardViewModel" type="ViewModels.ModernDashboardViewModel" mode="TwoWay" />
  364. <view-model class="ModernDashboardViewModel" assembly="Dashboard.ViewModels"
  365. namespace="Dashboard.ViewModels" />
  366. <binding-properties>
  367. <property control="loadingIndicator" property="IsVisible" binding-path="IsLoading"
  368. mode="OneWay" converter="BooleanToVisibilityConverter" />
  369. <property control="dataGrid" property="ItemsSource" binding-path="DashboardItems"
  370. mode="OneWay" validation-rule="NotNullValidator" />
  371. <property control="aiPanel" property="Insights" binding-path="AIInsights"
  372. mode="OneWay" converter="InsightCollectionConverter" />
  373. </binding-properties>
  374. </data-binding>
  375. <!-- Comprehensive Accessibility -->
  376. <accessibility compliance-level="wcag-aa">
  377. <screen-reader window-title="Analytics Dashboard"
  378. description="Main dashboard displaying real-time analytics with AI insights"
  379. landmark-role="main" />
  380. <keyboard-navigation tab-order-start="1" focus-trap="false" escape-closes="false" />
  381. <color-contrast high-contrast-support="true" minimum-ratio="4.5" />
  382. </accessibility>
  383. <slot-overrides>
  384. <!-- Enhanced Header with AI Assistant -->
  385. <slot name="header-content">
  386. <Grid name="headerGrid">
  387. <grid-definitions>
  388. <column-definitions>
  389. <column-definition width="*" />
  390. <column-definition width="Auto" />
  391. <column-definition width="Auto" />
  392. </column-definitions>
  393. </grid-definitions>
  394. <StackPanel name="titlePanel" grid-column="0" orientation="horizontal" spacing="10">
  395. <TextBlock name="titleText" text="Analytics Dashboard" font-size="18" font-weight="Bold"
  396. aria-label="Dashboard title" />
  397. <ProgressBar name="loadingIndicator" width="100" height="4"
  398. is-indeterminate="true" is-visible="{Binding IsLoading}"
  399. aria-label="Loading progress" />
  400. </StackPanel>
  401. <StackPanel name="aiPanel" grid-column="1" orientation="horizontal" spacing="5">
  402. <Button name="aiAssistantButton" text="AI Assistant"
  403. command="{Binding ShowAIAssistantCommand}"
  404. aria-label="Open AI Assistant panel"
  405. tooltip="Get AI-powered insights and suggestions" />
  406. <InfoBar name="aiStatusInfo" severity="Informational"
  407. message="{Binding AIStatus}" is-open="{Binding ShowAIStatus}"
  408. aria-live="polite" />
  409. </StackPanel>
  410. <StackPanel name="userPanel" grid-column="2" orientation="horizontal" spacing="5">
  411. <Button name="settingsButton" text="Settings"
  412. command="{Binding ShowSettingsCommand}"
  413. aria-label="Open application settings" />
  414. <Button name="profileButton" text="{Binding CurrentUser.Name}"
  415. command="{Binding ShowProfileCommand}"
  416. aria-label="User profile menu" />
  417. </StackPanel>
  418. </Grid>
  419. </slot>
  420. <!-- Responsive Sidebar with Performance Optimization -->
  421. <slot name="sidebar-content" visibility-binding="ScreenWidth"
  422. visibility-value="GreaterThan:768" visibility-converter="ComparisonConverter">
  423. <NavigationView name="mainNavigation" is-pane-open="true" display-mode="Left"
  424. aria-label="Main navigation menu">
  425. <NavigationView.MenuItems>
  426. <NavigationViewItem name="dashboardNav" content="Dashboard" icon="Home"
  427. command="{Binding NavigateToDashboardCommand}"
  428. aria-label="Navigate to dashboard overview" />
  429. <NavigationViewItem name="analyticsNav" content="Analytics" icon="BarChart"
  430. command="{Binding NavigateToAnalyticsCommand}"
  431. aria-label="Navigate to detailed analytics" />
  432. <NavigationViewItem name="reportsNav" content="Reports" icon="Document"
  433. command="{Binding NavigateToReportsCommand}"
  434. aria-label="Navigate to reports section" />
  435. <NavigationViewItem name="aiInsightsNav" content="AI Insights" icon="Lightbulb"
  436. command="{Binding NavigateToAIInsightsCommand}"
  437. aria-label="Navigate to AI-powered insights"
  438. badge="{Binding NewInsightsCount}" />
  439. </NavigationView.MenuItems>
  440. </NavigationView>
  441. </slot>
  442. <!-- Main Content with Advanced Data Visualization -->
  443. <slot name="main-content">
  444. <Grid name="contentGrid">
  445. <grid-definitions>
  446. <row-definitions>
  447. <row-definition height="Auto" />
  448. <row-definition height="*" />
  449. <row-definition height="Auto" />
  450. </row-definitions>
  451. </grid-definitions>
  452. <!-- Filter and Search Panel -->
  453. <Border name="filterPanel" grid-row="0" background="LightGray" padding="10"
  454. corner-radius="5" margin="5" aria-label="Dashboard filters">
  455. <Grid>
  456. <grid-definitions>
  457. <column-definitions>
  458. <column-definition width="Auto" />
  459. <column-definition width="*" />
  460. <column-definition width="Auto" />
  461. <column-definition width="Auto" />
  462. </column-definitions>
  463. </grid-definitions>
  464. <TextBlock name="filterLabel" grid-column="0" text="Filters:"
  465. vertical-alignment="Center" margin="0,0,10,0"
  466. aria-label="Filter controls" />
  467. <AutoCompleteBox name="searchBox" grid-column="1" placeholder-text="Search dashboard items..."
  468. text="{Binding SearchText, Mode=TwoWay}"
  469. items-source="{Binding SearchSuggestions}"
  470. minimum-prefix-length="2" filter-mode="Contains"
  471. aria-label="Search dashboard content"
  472. aria-description="Type to search and filter dashboard items" />
  473. <DatePicker name="dateFilter" grid-column="2"
  474. selected-date="{Binding FilterDate, Mode=TwoWay}"
  475. aria-label="Filter by date" margin="10,0,0,0" />
  476. <Button name="refreshButton" grid-column="3" text="Refresh"
  477. command="{Binding RefreshCommand}"
  478. aria-label="Refresh dashboard data" margin="10,0,0,0" />
  479. </Grid>
  480. </Border>
  481. <!-- Enhanced Data Grid with Virtualization -->
  482. <EnhancedDataGrid name="dashboardGrid" grid-row="1"
  483. items-source="{Binding DashboardItems}"
  484. selected-item="{Binding SelectedItem, Mode=TwoWay}"
  485. virtualization-enabled="true"
  486. accessibility-mode="enhanced"
  487. performance-mode="optimized"
  488. aria-label="Dashboard data grid"
  489. aria-description="Tabular view of dashboard metrics with sorting and filtering">
  490. <columns>
  491. <DataGridTextColumn header="Metric" binding="{Binding Name}" width="200"
  492. is-read-only="true" aria-label="Metric name" />
  493. <DataGridTextColumn header="Value" binding="{Binding Value}" width="150"
  494. is-read-only="true" aria-label="Current value" />
  495. <DataGridTextColumn header="Change" binding="{Binding Change}" width="100"
  496. is-read-only="true" aria-label="Change from previous period" />
  497. <DataGridTextColumn header="Trend" binding="{Binding Trend}" width="100"
  498. is-read-only="true" aria-label="Trend indicator" />
  499. <DataGridTemplateColumn header="Actions" width="150" aria-label="Available actions">
  500. <DataGridTemplateColumn.CellTemplate>
  501. <DataTemplate>
  502. <StackPanel orientation="horizontal" spacing="5">
  503. <Button content="Details" command="{Binding ShowDetailsCommand}"
  504. aria-label="Show metric details" />
  505. <Button content="Chart" command="{Binding ShowChartCommand}"
  506. aria-label="Show metric chart" />
  507. </StackPanel>
  508. </DataTemplate>
  509. </DataGridTemplateColumn.CellTemplate>
  510. </DataGridTemplateColumn>
  511. </columns>
  512. </EnhancedDataGrid>
  513. <!-- AI Insights Panel -->
  514. <Expander name="aiInsightsExpander" grid-row="2" header="AI Insights"
  515. is-expanded="{Binding ShowAIInsights}"
  516. aria-label="AI-powered insights and recommendations">
  517. <ScrollViewer name="insightsScroller" max-height="200">
  518. <ItemsRepeater name="insightsList" items-source="{Binding AIInsights}">
  519. <ItemsRepeater.ItemTemplate>
  520. <DataTemplate>
  521. <Border background="LightBlue" padding="10" margin="5" corner-radius="5">
  522. <StackPanel spacing="5">
  523. <TextBlock text="{Binding Title}" font-weight="Bold"
  524. aria-label="Insight title" />
  525. <TextBlock text="{Binding Description}" text-wrapping="Wrap"
  526. aria-label="Insight description" />
  527. <StackPanel orientation="horizontal" spacing="5">
  528. <Button content="Apply" command="{Binding ApplyCommand}"
  529. aria-label="Apply this recommendation" />
  530. <Button content="Dismiss" command="{Binding DismissCommand}"
  531. aria-label="Dismiss this insight" />
  532. </StackPanel>
  533. </StackPanel>
  534. </Border>
  535. </DataTemplate>
  536. </ItemsRepeater.ItemTemplate>
  537. </ItemsRepeater>
  538. </ScrollViewer>
  539. </Expander>
  540. </Grid>
  541. </slot>
  542. <!-- Enhanced Footer with Real-time Status -->
  543. <slot name="footer-content">
  544. <Grid name="footerGrid">
  545. <grid-definitions>
  546. <column-definitions>
  547. <column-definition width="*" />
  548. <column-definition width="Auto" />
  549. <column-definition width="Auto" />
  550. <column-definition width="Auto" />
  551. </column-definitions>
  552. </grid-definitions>
  553. <TextBlock name="statusText" grid-column="0"
  554. text="{Binding StatusMessage}"
  555. aria-live="polite" aria-label="Application status" />
  556. <TextBlock name="connectionStatus" grid-column="1"
  557. text="{Binding ConnectionStatus}" margin="10,0"
  558. aria-label="Connection status" />
  559. <TextBlock name="lastUpdate" grid-column="2"
  560. text="{Binding LastUpdateTime, StringFormat='Last updated: {0:HH:mm:ss}'}"
  561. margin="10,0" aria-label="Last data update time" />
  562. <TextBlock name="versionInfo" grid-column="3"
  563. text="v2.0.0" margin="10,0"
  564. aria-label="Application version" />
  565. </Grid>
  566. </slot>
  567. </slot-overrides>
  568. </window>
  569. <!-- AI Insights Panel Window -->
  570. <window name="AIInsightsPanel" title="AI Insights" view="ModernDashboardView"
  571. target-platform="avalonia" schema-version="1.3">
  572. <attributes>
  573. <attribute name="width" value="400" />
  574. <attribute name="height" value="600" />
  575. <attribute name="can-resize" value="true" />
  576. <attribute name="show-in-taskbar" value="false" />
  577. <attribute name="topmost" value="false" />
  578. </attributes>
  579. <view-properties>
  580. <role>preview</role>
  581. <modal>false</modal>
  582. <data-context-binding>aiInsights</data-context-binding>
  583. <parent-window>MainDashboard</parent-window>
  584. </view-properties>
  585. <accessibility compliance-level="wcag-aa">
  586. <screen-reader window-title="AI Insights Panel"
  587. description="Detailed view of AI-generated insights and recommendations"
  588. landmark-role="complementary" />
  589. <keyboard-navigation tab-order-start="1" focus-trap="false" escape-closes="true" />
  590. </accessibility>
  591. <ScrollViewer name="insightsContainer" vertical-scroll-bar-visibility="Auto">
  592. <StackPanel name="insightsPanel" spacing="10" margin="10">
  593. <TextBlock name="panelTitle" text="AI-Powered Insights" font-size="16" font-weight="Bold"
  594. aria-label="AI insights panel title" />
  595. <ItemsRepeater name="detailedInsightsList" items-source="{Binding AIInsights}">
  596. <ItemsRepeater.ItemTemplate>
  597. <DataTemplate>
  598. <Border background="White" border-brush="Gray" border-thickness="1"
  599. padding="15" margin="5" corner-radius="8">
  600. <StackPanel spacing="10">
  601. <Grid>
  602. <grid-definitions>
  603. <column-definitions>
  604. <column-definition width="*" />
  605. <column-definition width="Auto" />
  606. </column-definitions>
  607. </grid-definitions>
  608. <TextBlock grid-column="0" text="{Binding Title}" font-weight="Bold"
  609. font-size="14" aria-label="Insight title" />
  610. <TextBlock grid-column="1" text="{Binding Confidence, StringFormat='Confidence: {0:P0}'}"
  611. font-size="12" foreground="Gray" aria-label="AI confidence level" />
  612. </Grid>
  613. <TextBlock text="{Binding Description}" text-wrapping="Wrap"
  614. aria-label="Detailed insight description" />
  615. <TextBlock text="{Binding Impact}" text-wrapping="Wrap"
  616. font-style="Italic" foreground="DarkBlue"
  617. aria-label="Expected impact" />
  618. <StackPanel orientation="horizontal" spacing="10">
  619. <Button content="Apply Recommendation"
  620. command="{Binding ApplyRecommendationCommand}"
  621. style="AccentButtonStyle"
  622. aria-label="Apply this AI recommendation" />
  623. <Button content="Learn More"
  624. command="{Binding LearnMoreCommand}"
  625. aria-label="Learn more about this insight" />
  626. <Button content="Provide Feedback"
  627. command="{Binding ProvideFeedbackCommand}"
  628. aria-label="Provide feedback on this insight" />
  629. </StackPanel>
  630. <TextBlock text="{Binding GeneratedAt, StringFormat='Generated: {0:g}'}"
  631. font-size="10" foreground="Gray"
  632. aria-label="Insight generation timestamp" />
  633. </StackPanel>
  634. </Border>
  635. </DataTemplate>
  636. </ItemsRepeater.ItemTemplate>
  637. </ItemsRepeater>
  638. <Button name="refreshInsightsButton" content="Refresh AI Insights"
  639. command="{Binding RefreshAIInsightsCommand}"
  640. horizontal-alignment="Center" margin="20"
  641. aria-label="Request new AI insights" />
  642. </StackPanel>
  643. </ScrollViewer>
  644. </window>
  645. <!-- Settings Dialog with Advanced Configuration -->
  646. <window name="SettingsDialog" title="Application Settings"
  647. wireframe="DialogLayout" view="ModernDashboardView"
  648. target-platform="avalonia" schema-version="1.3">
  649. <attributes>
  650. <attribute name="width" value="600" />
  651. <attribute name="height" value="500" />
  652. <attribute name="can-resize" value="true" />
  653. <attribute name="modal" value="true" />
  654. <attribute name="show-in-taskbar" value="false" />
  655. <attribute name="window-startup-location" value="CenterOwner" />
  656. </attributes>
  657. <view-properties>
  658. <role>utility</role>
  659. <modal>true</modal>
  660. <data-context-binding>userPreferences</data-context-binding>
  661. <parent-window>MainDashboard</parent-window>
  662. </view-properties>
  663. <data-binding>
  664. <data-context source="SettingsViewModel" type="ViewModels.SettingsViewModel" mode="TwoWay" />
  665. <binding-properties>
  666. <property control="themeComboBox" property="SelectedItem" binding-path="SelectedTheme"
  667. mode="TwoWay" validation-rule="NotNullValidator" />
  668. <property control="languageComboBox" property="SelectedItem" binding-path="PreferredLanguage"
  669. mode="TwoWay" />
  670. <property control="accessibilityToggle" property="IsChecked" binding-path="HighContrastMode"
  671. mode="TwoWay" />
  672. </binding-properties>
  673. </data-binding>
  674. <accessibility compliance-level="wcag-aa">
  675. <screen-reader window-title="Application Settings Dialog"
  676. description="Configure application preferences and accessibility options"
  677. landmark-role="dialog" />
  678. <keyboard-navigation tab-order-start="1" focus-trap="true" escape-closes="true" />
  679. </accessibility>
  680. <TabControl name="settingsTabs" selected-index="0"
  681. aria-label="Settings categories">
  682. <TabItem name="generalTab" header="General"
  683. aria-label="General application settings">
  684. <StackPanel spacing="15" margin="20">
  685. <TextBlock text="General Settings" font-size="16" font-weight="Bold"
  686. aria-label="General settings section" />
  687. <Grid>
  688. <grid-definitions>
  689. <column-definitions>
  690. <column-definition width="150" />
  691. <column-definition width="*" />
  692. </column-definitions>
  693. <row-definitions>
  694. <row-definition height="Auto" />
  695. <row-definition height="Auto" />
  696. <row-definition height="Auto" />
  697. <row-definition height="Auto" />
  698. </row-definitions>
  699. </grid-definitions>
  700. <TextBlock grid-row="0" grid-column="0" text="Theme:"
  701. vertical-alignment="Center" aria-label="Theme selection" />
  702. <ComboBox name="themeComboBox" grid-row="0" grid-column="1"
  703. selected-item="{Binding SelectedTheme, Mode=TwoWay}"
  704. aria-label="Select application theme">
  705. <ComboBoxItem content="Light Theme" />
  706. <ComboBoxItem content="Dark Theme" />
  707. <ComboBoxItem content="High Contrast" />
  708. <ComboBoxItem content="System Default" />
  709. </ComboBox>
  710. <TextBlock grid-row="1" grid-column="0" text="Language:"
  711. vertical-alignment="Center" margin="0,10,0,0"
  712. aria-label="Language selection" />
  713. <ComboBox name="languageComboBox" grid-row="1" grid-column="1" margin="0,10,0,0"
  714. selected-item="{Binding PreferredLanguage, Mode=TwoWay}"
  715. aria-label="Select application language">
  716. <ComboBoxItem content="English" />
  717. <ComboBoxItem content="German" />
  718. <ComboBoxItem content="French" />
  719. <ComboBoxItem content="Spanish" />
  720. <ComboBoxItem content="Chinese (Simplified)" />
  721. <ComboBoxItem content="Arabic" />
  722. <ComboBoxItem content="Hebrew" />
  723. </ComboBox>
  724. <TextBlock grid-row="2" grid-column="0" text="Auto-save:"
  725. vertical-alignment="Center" margin="0,10,0,0"
  726. aria-label="Auto-save settings" />
  727. <StackPanel grid-row="2" grid-column="1" orientation="horizontal"
  728. spacing="10" margin="0,10,0,0">
  729. <ToggleSwitch name="autoSaveToggle"
  730. is-checked="{Binding AutoSaveEnabled, Mode=TwoWay}"
  731. aria-label="Enable automatic saving" />
  732. <NumericUpDown name="autoSaveInterval" minimum="1" maximum="60"
  733. value="{Binding AutoSaveInterval, Mode=TwoWay}"
  734. suffix=" minutes" width="100"
  735. aria-label="Auto-save interval in minutes" />
  736. </StackPanel>
  737. <TextBlock grid-row="3" grid-column="0" text="Notifications:"
  738. vertical-alignment="Center" margin="0,10,0,0"
  739. aria-label="Notification settings" />
  740. <StackPanel grid-row="3" grid-column="1" spacing="5" margin="0,10,0,0">
  741. <CheckBox name="desktopNotifications"
  742. content="Desktop notifications"
  743. is-checked="{Binding DesktopNotificationsEnabled, Mode=TwoWay}"
  744. aria-label="Enable desktop notifications" />
  745. <CheckBox name="soundNotifications"
  746. content="Sound notifications"
  747. is-checked="{Binding SoundNotificationsEnabled, Mode=TwoWay}"
  748. aria-label="Enable sound notifications" />
  749. </StackPanel>
  750. </Grid>
  751. </StackPanel>
  752. </TabItem>
  753. <TabItem name="accessibilityTab" header="Accessibility"
  754. aria-label="Accessibility settings">
  755. <StackPanel spacing="15" margin="20">
  756. <TextBlock text="Accessibility Settings" font-size="16" font-weight="Bold"
  757. aria-label="Accessibility settings section" />
  758. <Grid>
  759. <grid-definitions>
  760. <column-definitions>
  761. <column-definition width="200" />
  762. <column-definition width="*" />
  763. </column-definitions>
  764. <row-definitions>
  765. <row-definition height="Auto" />
  766. <row-definition height="Auto" />
  767. <row-definition height="Auto" />
  768. <row-definition height="Auto" />
  769. <row-definition height="Auto" />
  770. </row-definitions>
  771. </grid-definitions>
  772. <TextBlock grid-row="0" grid-column="0" text="High Contrast Mode:"
  773. vertical-alignment="Center" aria-label="High contrast mode" />
  774. <ToggleSwitch name="accessibilityToggle" grid-row="0" grid-column="1"
  775. is-checked="{Binding HighContrastMode, Mode=TwoWay}"
  776. aria-label="Enable high contrast mode" />
  777. <TextBlock grid-row="1" grid-column="0" text="Font Size:"
  778. vertical-alignment="Center" margin="0,10,0,0"
  779. aria-label="Font size adjustment" />
  780. <Slider name="fontSizeSlider" grid-row="1" grid-column="1"
  781. minimum="12" maximum="24" value="{Binding FontSize, Mode=TwoWay}"
  782. tick-frequency="2" is-snap-to-tick-enabled="true"
  783. margin="0,10,0,0" aria-label="Adjust font size" />
  784. <TextBlock grid-row="2" grid-column="0" text="Screen Reader:"
  785. vertical-alignment="Center" margin="0,10,0,0"
  786. aria-label="Screen reader optimization" />
  787. <CheckBox name="screenReaderOptimized" grid-row="2" grid-column="1"
  788. content="Optimize for screen readers" margin="0,10,0,0"
  789. is-checked="{Binding ScreenReaderOptimized, Mode=TwoWay}"
  790. aria-label="Enable screen reader optimizations" />
  791. <TextBlock grid-row="3" grid-column="0" text="Keyboard Navigation:"
  792. vertical-alignment="Center" margin="0,10,0,0"
  793. aria-label="Keyboard navigation settings" />
  794. <CheckBox name="enhancedKeyboardNav" grid-row="3" grid-column="1"
  795. content="Enhanced keyboard navigation" margin="0,10,0,0"
  796. is-checked="{Binding EnhancedKeyboardNavigation, Mode=TwoWay}"
  797. aria-label="Enable enhanced keyboard navigation" />
  798. <TextBlock grid-row="4" grid-column="0" text="Animation:"
  799. vertical-alignment="Center" margin="0,10,0,0"
  800. aria-label="Animation preferences" />
  801. <CheckBox name="reduceAnimations" grid-row="4" grid-column="1"
  802. content="Reduce animations" margin="0,10,0,0"
  803. is-checked="{Binding ReduceAnimations, Mode=TwoWay}"
  804. aria-label="Reduce or disable animations" />
  805. </Grid>
  806. </StackPanel>
  807. </TabItem>
  808. <TabItem name="performanceTab" header="Performance"
  809. aria-label="Performance settings">
  810. <StackPanel spacing="15" margin="20">
  811. <TextBlock text="Performance Settings" font-size="16" font-weight="Bold"
  812. aria-label="Performance settings section" />
  813. <Grid>
  814. <grid-definitions>
  815. <column-definitions>
  816. <column-definition width="200" />
  817. <column-definition width="*" />
  818. </column-definitions>
  819. <row-definitions>
  820. <row-definition height="Auto" />
  821. <row-definition height="Auto" />
  822. <row-definition height="Auto" />
  823. <row-definition height="Auto" />
  824. </row-definitions>
  825. </grid-definitions>
  826. <TextBlock grid-row="0" grid-column="0" text="Data Virtualization:"
  827. vertical-alignment="Center" aria-label="Data virtualization" />
  828. <ToggleSwitch name="virtualizationToggle" grid-row="0" grid-column="1"
  829. is-checked="{Binding VirtualizationEnabled, Mode=TwoWay}"
  830. aria-label="Enable data virtualization for large datasets" />
  831. <TextBlock grid-row="1" grid-column="0" text="Cache Size:"
  832. vertical-alignment="Center" margin="0,10,0,0"
  833. aria-label="Memory cache size" />
  834. <StackPanel grid-row="1" grid-column="1" orientation="horizontal"
  835. spacing="10" margin="0,10,0,0">
  836. <Slider name="cacheSizeSlider" minimum="50" maximum="500"
  837. value="{Binding CacheSize, Mode=TwoWay}" width="200"
  838. aria-label="Set cache size in megabytes" />
  839. <TextBlock text="{Binding CacheSize, StringFormat='{0} MB'}"
  840. vertical-alignment="Center" />
  841. </StackPanel>
  842. <TextBlock grid-row="2" grid-column="0" text="Background Updates:"
  843. vertical-alignment="Center" margin="0,10,0,0"
  844. aria-label="Background update frequency" />
  845. <ComboBox name="updateFrequencyCombo" grid-row="2" grid-column="1" margin="0,10,0,0"
  846. selected-item="{Binding UpdateFrequency, Mode=TwoWay}"
  847. aria-label="Select background update frequency">
  848. <ComboBoxItem content="Real-time" />
  849. <ComboBoxItem content="Every 30 seconds" />
  850. <ComboBoxItem content="Every minute" />
  851. <ComboBoxItem content="Every 5 minutes" />
  852. <ComboBoxItem content="Manual only" />
  853. </ComboBox>
  854. <TextBlock grid-row="3" grid-column="0" text="AI Processing:"
  855. vertical-alignment="Center" margin="0,10,0,0"
  856. aria-label="AI processing settings" />
  857. <StackPanel grid-row="3" grid-column="1" spacing="5" margin="0,10,0,0">
  858. <CheckBox name="enableAIProcessing"
  859. content="Enable AI analysis"
  860. is-checked="{Binding AIProcessingEnabled, Mode=TwoWay}"
  861. aria-label="Enable AI-powered analysis" />
  862. <CheckBox name="localAIProcessing"
  863. content="Prefer local processing"
  864. is-checked="{Binding PreferLocalAI, Mode=TwoWay}"
  865. aria-label="Prefer local AI processing over cloud" />
  866. </StackPanel>
  867. </Grid>
  868. </StackPanel>
  869. </TabItem>
  870. <TabItem name="securityTab" header="Security"
  871. aria-label="Security and privacy settings">
  872. <StackPanel spacing="15" margin="20">
  873. <TextBlock text="Security & Privacy" font-size="16" font-weight="Bold"
  874. aria-label="Security and privacy settings section" />
  875. <Grid>
  876. <grid-definitions>
  877. <column-definitions>
  878. <column-definition width="200" />
  879. <column-definition width="*" />
  880. </column-definitions>
  881. <row-definitions>
  882. <row-definition height="Auto" />
  883. <row-definition height="Auto" />
  884. <row-definition height="Auto" />
  885. <row-definition height="Auto" />
  886. </row-definitions>
  887. </grid-definitions>
  888. <TextBlock grid-row="0" grid-column="0" text="Data Encryption:"
  889. vertical-alignment="Center" aria-label="Data encryption" />
  890. <ToggleSwitch name="encryptionToggle" grid-row="0" grid-column="1"
  891. is-checked="{Binding DataEncryptionEnabled, Mode=TwoWay}"
  892. aria-label="Enable data encryption" />
  893. <TextBlock grid-row="1" grid-column="0" text="Session Timeout:"
  894. vertical-alignment="Center" margin="0,10,0,0"
  895. aria-label="Session timeout setting" />
  896. <NumericUpDown name="sessionTimeout" grid-row="1" grid-column="1"
  897. minimum="5" maximum="480" value="{Binding SessionTimeout, Mode=TwoWay}"
  898. suffix=" minutes" margin="0,10,0,0"
  899. aria-label="Set session timeout in minutes" />
  900. <TextBlock grid-row="2" grid-column="0" text="Audit Logging:"
  901. vertical-alignment="Center" margin="0,10,0,0"
  902. aria-label="Audit logging settings" />
  903. <CheckBox name="auditLogging" grid-row="2" grid-column="1"
  904. content="Enable audit logging" margin="0,10,0,0"
  905. is-checked="{Binding AuditLoggingEnabled, Mode=TwoWay}"
  906. aria-label="Enable security audit logging" />
  907. <TextBlock grid-row="3" grid-column="0" text="GDPR Compliance:"
  908. vertical-alignment="Center" margin="0,10,0,0"
  909. aria-label="GDPR compliance settings" />
  910. <StackPanel grid-row="3" grid-column="1" spacing="5" margin="0,10,0,0">
  911. <CheckBox name="gdprMode"
  912. content="GDPR compliance mode"
  913. is-checked="{Binding GDPRComplianceEnabled, Mode=TwoWay}"
  914. aria-label="Enable GDPR compliance features" />
  915. <Button name="dataExportButton" content="Export My Data"
  916. command="{Binding ExportUserDataCommand}"
  917. aria-label="Export personal data" />
  918. </StackPanel>
  919. </Grid>
  920. </StackPanel>
  921. </TabItem>
  922. </TabControl>
  923. <!-- Dialog Buttons -->
  924. <StackPanel orientation="horizontal" horizontal-alignment="Right"
  925. spacing="10" margin="20">
  926. <Button name="saveButton" content="Save Changes"
  927. command="{Binding SaveSettingsCommand}"
  928. style="AccentButtonStyle"
  929. aria-label="Save all settings changes" />
  930. <Button name="cancelButton" content="Cancel"
  931. command="{Binding CancelCommand}"
  932. aria-label="Cancel without saving changes" />
  933. <Button name="resetButton" content="Reset to Defaults"
  934. command="{Binding ResetToDefaultsCommand}"
  935. aria-label="Reset all settings to default values" />
  936. </StackPanel>
  937. </window>
  938. </ui-layout-def>