sample.xml 55 KB

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