sample.xml 55 KB

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