@dalexto/lexsys-registry 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.js +12 -3
  2. package/package.json +2 -2
  3. package/templates/blocks/AuthForm/AuthForm.tsx +9 -5
  4. package/templates/blocks/AuthForm/AuthForm.types.ts +3 -3
  5. package/templates/blocks/AuthForm/AuthForm.variants.ts +8 -2
  6. package/templates/blocks/CommandPalette/CommandPalette.tsx +15 -12
  7. package/templates/blocks/CommandPalette/CommandPalette.types.ts +2 -2
  8. package/templates/blocks/CommandPalette/CommandPalette.variants.ts +6 -6
  9. package/templates/blocks/DataTable/DataTable.tsx +2 -2
  10. package/templates/blocks/DataTable/DataTable.types.ts +2 -2
  11. package/templates/blocks/DataTable/DataTable.variants.ts +5 -4
  12. package/templates/blocks/FilterToolbar/FilterToolbar.tsx +12 -5
  13. package/templates/blocks/FilterToolbar/FilterToolbar.types.ts +4 -4
  14. package/templates/blocks/FilterToolbar/FilterToolbar.variants.ts +11 -5
  15. package/templates/blocks/FormField/FormField.tsx +1 -1
  16. package/templates/blocks/FormField/FormField.types.ts +1 -1
  17. package/templates/blocks/FormField/FormField.variants.ts +1 -1
  18. package/templates/blocks/PageHeader/PageHeader.tsx +2 -2
  19. package/templates/blocks/PageHeader/PageHeader.types.ts +2 -2
  20. package/templates/blocks/PageHeader/PageHeader.variants.ts +6 -5
  21. package/templates/blocks/SettingsPanel/SettingsPanel.tsx +1 -1
  22. package/templates/blocks/SettingsPanel/SettingsPanel.types.ts +1 -1
  23. package/templates/blocks/Sidebar/Sidebar.tsx +1048 -22
  24. package/templates/blocks/Sidebar/Sidebar.types.ts +185 -1
  25. package/templates/blocks/Sidebar/Sidebar.utils.ts +34 -0
  26. package/templates/blocks/Sidebar/Sidebar.variants.ts +445 -25
  27. package/templates/blocks/StatsCard/StatsCard.tsx +1 -1
  28. package/templates/blocks/StatsCard/StatsCard.types.ts +1 -1
  29. package/templates/blocks/StatsCard/StatsCard.variants.ts +7 -6
  30. package/templates/primitives/DatePicker/DatePicker.tsx +11 -1
  31. package/templates/primitives/DatePicker/DatePicker.types.ts +4 -1
  32. package/templates/primitives/DatePicker/DatePicker.variants.ts +11 -2
  33. package/templates/primitives/Toolbar/Toolbar.variants.ts +4 -2
  34. package/templates/styles/theme.css +14 -1
  35. package/templates/styles/tokens.css +147 -29
  36. package/templates/templates/DashboardShell/DashboardShell.variants.ts +19 -4
  37. package/templates/templates/SettingsPageLayout/SettingsPageLayout.tsx +2 -2
  38. package/templates/templates/SettingsPageLayout/SettingsPageLayout.types.ts +2 -2
  39. package/templates/templates/SettingsPageLayout/SettingsPageLayout.variants.ts +16 -7
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generated by @dalexto/lexsys-tokens.
5
5
  * Manual changes will be overwritten.
6
- * Last generated: 2026-06-06T12:57:40.698Z
6
+ * Last generated: 2026-06-07T16:48:33.996Z
7
7
  */
8
8
 
9
9
  :root {
@@ -72,6 +72,11 @@
72
72
  --spacing-twix-selection-control-sm: var(--lex-size-selection-control-sm);
73
73
  --spacing-twix-selection-control-md: var(--lex-size-selection-control-md);
74
74
  --spacing-twix-selection-control-lg: var(--lex-size-selection-control-lg);
75
+ --spacing-twix-icon-xs: var(--lex-size-icon-xs);
76
+ --spacing-twix-icon-sm: var(--lex-size-icon-sm);
77
+ --spacing-twix-icon-md: var(--lex-size-icon-md);
78
+ --spacing-twix-icon-lg: var(--lex-size-icon-lg);
79
+ --spacing-twix-icon-xl: var(--lex-size-icon-xl);
75
80
  --spacing-twix-area-swipe-sm: var(--lex-size-area-swipe-sm);
76
81
  --spacing-twix-area-swipe-md: var(--lex-size-area-swipe-md);
77
82
  --spacing-twix-area-swipe-lg: var(--lex-size-area-swipe-lg);
@@ -100,12 +105,20 @@
100
105
  --spacing-twix-overlay-list-max-height: var(--lex-size-overlay-list-max-height);
101
106
  --spacing-twix-overlay-viewport-max-height: var(--lex-size-overlay-viewport-max-height);
102
107
  --spacing-twix-sidebar-width: var(--lex-size-sidebar-width);
108
+ --spacing-twix-sidebar-width-collapsed: var(--lex-size-sidebar-width-collapsed);
103
109
  --spacing-twix-command-palette-list-max-height: var(--lex-size-command-palette-list-max-height);
104
110
  --duration-twix-control: var(--lex-duration-control);
105
111
  --duration-twix-surface: var(--lex-duration-surface);
112
+ --duration-twix-overlay-enter: var(--lex-duration-overlay-enter);
113
+ --duration-twix-overlay-exit: var(--lex-duration-overlay-exit);
114
+ --duration-twix-layout: var(--lex-duration-layout);
106
115
  --ease-twix-control: var(--lex-easing-control);
107
116
  --ease-twix-surface: var(--lex-easing-surface);
117
+ --ease-twix-ease-in: var(--lex-easing-ease-in);
118
+ --ease-twix-ease-out: var(--lex-easing-ease-out);
119
+ --ease-twix-layout: var(--lex-easing-layout);
108
120
  --twix-motion-offset-entry-y: var(--lex-motion-offset-entry-y);
121
+ --twix-motion-offset-slide-panel: var(--lex-motion-offset-slide-panel);
109
122
  --text-twix-family-sans: var(--lex-typography-family-sans);
110
123
  --text-twix-family-serif: var(--lex-typography-family-serif);
111
124
  --text-twix-family-mono: var(--lex-typography-family-mono);
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Generated by @dalexto/lexsys-tokens.
5
5
  * Manual changes will be overwritten.
6
- * Last generated: 2026-06-06T12:57:40.698Z
6
+ * Last generated: 2026-06-07T16:48:33.996Z
7
7
  */
8
8
 
9
9
  :root {
@@ -186,6 +186,11 @@
186
186
  --lex-size-selection-control-sm: var(--lex-size-3);
187
187
  --lex-size-selection-control-md: var(--lex-size-4);
188
188
  --lex-size-selection-control-lg: var(--lex-size-5);
189
+ --lex-size-icon-xs: var(--lex-size-2);
190
+ --lex-size-icon-sm: var(--lex-size-3);
191
+ --lex-size-icon-md: var(--lex-size-4);
192
+ --lex-size-icon-lg: var(--lex-size-5);
193
+ --lex-size-icon-xl: var(--lex-size-6);
189
194
  --lex-size-area-swipe-sm: var(--lex-size-12);
190
195
  --lex-size-area-swipe-md: var(--lex-size-16);
191
196
  --lex-size-area-swipe-lg: var(--lex-size-20);
@@ -214,6 +219,7 @@
214
219
  --lex-size-overlay-list-max-height: var(--lex-size-panel-height-sm);
215
220
  --lex-size-overlay-viewport-max-height: var(--lex-layout-viewport-full);
216
221
  --lex-size-sidebar-width: var(--lex-size-64);
222
+ --lex-size-sidebar-width-collapsed: var(--lex-size-16);
217
223
  --lex-size-command-palette-list-max-height: var(--lex-size-64);
218
224
  --lex-font-family-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
219
225
  --lex-font-family-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
@@ -253,13 +259,15 @@
253
259
  --lex-letter-spacing-wider: 0.05em;
254
260
  --lex-letter-spacing-widest: 0.1em;
255
261
  --lex-duration-instant: 0ms;
256
- --lex-duration-fastest: 100ms;
257
262
  --lex-duration-fast: 150ms;
258
- --lex-duration-normal: 200ms;
259
- --lex-duration-slow: 300ms;
263
+ --lex-duration-normal: 250ms;
264
+ --lex-duration-slow: 350ms;
260
265
  --lex-duration-slower: 500ms;
261
266
  --lex-duration-control: var(--lex-duration-fast);
262
- --lex-duration-surface: var(--lex-duration-fast);
267
+ --lex-duration-surface: var(--lex-duration-normal);
268
+ --lex-duration-overlay-enter: var(--lex-duration-slow);
269
+ --lex-duration-overlay-exit: var(--lex-duration-fast);
270
+ --lex-duration-layout: var(--lex-duration-slow);
263
271
  --lex-easing-linear: cubic-bezier(0, 0, 1, 1);
264
272
  --lex-easing-standard: cubic-bezier(0.2, 0, 0, 1);
265
273
  --lex-easing-enter: cubic-bezier(0, 0, 0.2, 1);
@@ -267,7 +275,11 @@
267
275
  --lex-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
268
276
  --lex-easing-control: var(--lex-easing-standard);
269
277
  --lex-easing-surface: var(--lex-easing-standard);
278
+ --lex-easing-ease-in: var(--lex-easing-enter);
279
+ --lex-easing-ease-out: var(--lex-easing-exit);
280
+ --lex-easing-layout: var(--lex-easing-standard);
270
281
  --lex-motion-offset-entry-y: var(--lex-space-2);
282
+ --lex-motion-offset-slide-panel: var(--lex-size-64);
271
283
  --lex-aspect-ratio-1-1: 1;
272
284
  --lex-aspect-ratio-4-3: 1.333333;
273
285
  --lex-aspect-ratio-3-2: 1.5;
@@ -602,7 +614,7 @@
602
614
  --lex-accordion-panel-font-line-height: var(--lex-typography-body-sm-line-height);
603
615
  --lex-accordion-focus-ring-color: var(--lex-border-focus);
604
616
  --lex-accordion-focus-ring-width: var(--lex-outline-width-inset);
605
- --lex-accordion-transition-duration: var(--lex-duration-control);
617
+ --lex-accordion-transition-duration: var(--lex-duration-surface);
606
618
  --lex-accordion-transition-easing: var(--lex-easing-control);
607
619
  --lex-alert-dialog-backdrop-background: var(--lex-color-text-primary);
608
620
  --lex-alert-dialog-backdrop-opacity: 0.56;
@@ -645,8 +657,8 @@
645
657
  --lex-alert-dialog-focus-ring-offset-color: var(--lex-color-background-base);
646
658
  --lex-alert-dialog-focus-ring-width: var(--lex-outline-width-focus);
647
659
  --lex-alert-dialog-focus-ring-offset: var(--lex-outline-offset-focus);
648
- --lex-alert-dialog-transition-duration: var(--lex-duration-control);
649
- --lex-alert-dialog-transition-easing: var(--lex-easing-control);
660
+ --lex-alert-dialog-transition-duration: var(--lex-duration-overlay-enter);
661
+ --lex-alert-dialog-transition-easing: var(--lex-easing-ease-in);
650
662
  --lex-alert-radius: var(--lex-radius-surface);
651
663
  --lex-alert-padding: var(--lex-space-surface-sm);
652
664
  --lex-alert-gap: var(--lex-space-surface-gap-sm);
@@ -667,6 +679,9 @@
667
679
  --lex-alert-danger-background: var(--lex-color-feedback-danger-background);
668
680
  --lex-alert-danger-foreground: var(--lex-color-feedback-danger-foreground);
669
681
  --lex-alert-danger-border-color: var(--lex-color-feedback-danger-foreground);
682
+ --lex-auth-form-root-foreground: var(--lex-color-text-primary);
683
+ --lex-auth-form-content-gap: var(--lex-space-surface-sm);
684
+ --lex-auth-form-footer-gap: var(--lex-space-surface-gap-md);
670
685
  --lex-autocomplete-background: var(--lex-color-background-base);
671
686
  --lex-autocomplete-foreground: var(--lex-color-text-primary);
672
687
  --lex-autocomplete-border-color: var(--lex-border-default);
@@ -705,7 +720,7 @@
705
720
  --lex-autocomplete-invalid-border-color: var(--lex-action-danger-base);
706
721
  --lex-autocomplete-invalid-ring-color: var(--lex-action-danger-base);
707
722
  --lex-autocomplete-invalid-ring-width: var(--lex-outline-width-focus);
708
- --lex-autocomplete-transition-duration: var(--lex-duration-control);
723
+ --lex-autocomplete-transition-duration: var(--lex-duration-surface);
709
724
  --lex-autocomplete-transition-easing: var(--lex-easing-control);
710
725
  --lex-avatar-background: var(--lex-color-background-subtle);
711
726
  --lex-avatar-foreground: var(--lex-color-text-secondary);
@@ -894,8 +909,21 @@
894
909
  --lex-combobox-invalid-border-color: var(--lex-action-danger-base);
895
910
  --lex-combobox-invalid-ring-color: var(--lex-action-danger-base);
896
911
  --lex-combobox-invalid-ring-width: var(--lex-outline-width-focus);
897
- --lex-combobox-transition-duration: var(--lex-duration-control);
912
+ --lex-combobox-transition-duration: var(--lex-duration-surface);
898
913
  --lex-combobox-transition-easing: var(--lex-easing-control);
914
+ --lex-command-palette-root-gap: var(--lex-space-control-gap-md);
915
+ --lex-command-palette-list-max-height: var(--lex-size-command-palette-list-max-height);
916
+ --lex-command-palette-group-label-padding-x: var(--lex-space-control-x-sm);
917
+ --lex-command-palette-group-label-padding-y: var(--lex-space-control-y-xs);
918
+ --lex-command-palette-item-gap: var(--lex-space-control-gap-sm);
919
+ --lex-command-palette-item-padding-x: var(--lex-space-control-x-sm);
920
+ --lex-command-palette-item-padding-y: var(--lex-space-control-y-sm);
921
+ --lex-command-palette-item-radius: var(--lex-radius-control);
922
+ --lex-command-palette-item-foreground: var(--lex-color-text-primary);
923
+ --lex-command-palette-item-hover-background: var(--lex-action-secondary-hover);
924
+ --lex-command-palette-item-description-foreground: var(--lex-color-text-secondary);
925
+ --lex-command-palette-empty-padding-x: var(--lex-space-control-x-sm);
926
+ --lex-command-palette-empty-padding-y: var(--lex-space-surface-sm);
899
927
  --lex-context-menu-radius: var(--lex-radius-surface);
900
928
  --lex-context-menu-popup-background: var(--lex-color-background-base);
901
929
  --lex-context-menu-popup-foreground: var(--lex-color-text-primary);
@@ -921,7 +949,7 @@
921
949
  --lex-context-menu-focus-ring-offset-color: var(--lex-color-background-base);
922
950
  --lex-context-menu-focus-ring-width: var(--lex-outline-width-focus);
923
951
  --lex-context-menu-focus-ring-offset: var(--lex-outline-offset-focus);
924
- --lex-context-menu-transition-duration: var(--lex-duration-control);
952
+ --lex-context-menu-transition-duration: var(--lex-duration-surface);
925
953
  --lex-context-menu-transition-easing: var(--lex-easing-control);
926
954
  --lex-collapsible-background: var(--lex-color-background-surface);
927
955
  --lex-collapsible-foreground: var(--lex-color-text-primary);
@@ -933,7 +961,7 @@
933
961
  --lex-collapsible-trigger-gap: var(--lex-space-control-gap-sm);
934
962
  --lex-collapsible-trigger-padding-x: var(--lex-space-surface-md);
935
963
  --lex-collapsible-trigger-padding-y: var(--lex-space-surface-sm);
936
- --lex-collapsible-trigger-icon-size: var(--lex-size-selection-control-md);
964
+ --lex-collapsible-trigger-icon-size: var(--lex-size-icon-md);
937
965
  --lex-collapsible-trigger-font-size: var(--lex-typography-label-sm-font-size);
938
966
  --lex-collapsible-trigger-font-weight: var(--lex-typography-label-sm-font-weight);
939
967
  --lex-collapsible-trigger-font-line-height: var(--lex-typography-label-sm-line-height);
@@ -944,6 +972,17 @@
944
972
  --lex-collapsible-panel-font-line-height: var(--lex-typography-body-sm-line-height);
945
973
  --lex-collapsible-transition-duration: var(--lex-duration-surface);
946
974
  --lex-collapsible-transition-easing: var(--lex-easing-surface);
975
+ --lex-dashboard-shell-root-background: var(--lex-color-background-base);
976
+ --lex-dashboard-shell-root-foreground: var(--lex-color-text-primary);
977
+ --lex-dashboard-shell-main-background: var(--lex-color-background-base);
978
+ --lex-dashboard-shell-header-padding-x: var(--lex-space-control-x-md);
979
+ --lex-dashboard-shell-header-padding-y: var(--lex-space-control-x-sm);
980
+ --lex-dashboard-shell-header-background: var(--lex-color-background-base);
981
+ --lex-dashboard-shell-header-border-color: var(--lex-border-default);
982
+ --lex-dashboard-shell-content-padding: var(--lex-space-surface-sm);
983
+ --lex-dashboard-shell-content-background: var(--lex-color-background-base);
984
+ --lex-data-table-root-gap: var(--lex-space-surface-sm);
985
+ --lex-data-table-footer-gap: var(--lex-space-surface-gap-md);
947
986
  --lex-date-picker-calendar-background: var(--lex-color-background-base);
948
987
  --lex-date-picker-calendar-foreground: var(--lex-color-text-primary);
949
988
  --lex-date-picker-calendar-border-color: var(--lex-border-default);
@@ -951,6 +990,7 @@
951
990
  --lex-date-picker-calendar-padding: var(--lex-space-surface-md);
952
991
  --lex-date-picker-calendar-gap: var(--lex-space-surface-gap-sm);
953
992
  --lex-date-picker-calendar-width: var(--lex-size-panel-width-sm);
993
+ --lex-date-picker-calendar-grid-gap: var(--lex-space-surface-gap-sm);
954
994
  --lex-date-picker-header-foreground: var(--lex-color-text-primary);
955
995
  --lex-date-picker-header-font-size: var(--lex-typography-heading-xs-font-size);
956
996
  --lex-date-picker-header-font-weight: var(--lex-typography-heading-xs-font-weight);
@@ -982,6 +1022,9 @@
982
1022
  --lex-date-picker-focus-ring-offset: var(--lex-outline-offset-focus);
983
1023
  --lex-date-picker-transition-duration: var(--lex-duration-control);
984
1024
  --lex-date-picker-transition-easing: var(--lex-easing-control);
1025
+ --lex-date-picker-trigger-input-embedded-height: var(--lex-size-control-sm);
1026
+ --lex-date-picker-trigger-input-embedded-background: transparent;
1027
+ --lex-date-picker-trigger-input-embedded-padding-x: var(--lex-space-control-x-sm);
985
1028
  --lex-dialog-backdrop-background: var(--lex-color-text-primary);
986
1029
  --lex-dialog-backdrop-opacity: 0.48;
987
1030
  --lex-dialog-backdrop-z-index: var(--lex-elevation-backdrop-z-index);
@@ -1023,8 +1066,8 @@
1023
1066
  --lex-dialog-focus-ring-offset-color: var(--lex-color-background-base);
1024
1067
  --lex-dialog-focus-ring-width: var(--lex-outline-width-focus);
1025
1068
  --lex-dialog-focus-ring-offset: var(--lex-outline-offset-focus);
1026
- --lex-dialog-transition-duration: var(--lex-duration-control);
1027
- --lex-dialog-transition-easing: var(--lex-easing-control);
1069
+ --lex-dialog-transition-duration: var(--lex-duration-overlay-enter);
1070
+ --lex-dialog-transition-easing: var(--lex-easing-ease-in);
1028
1071
  --lex-empty-padding: var(--lex-space-surface-md);
1029
1072
  --lex-empty-gap: var(--lex-space-surface-gap-md);
1030
1073
  --lex-empty-header-gap: var(--lex-space-surface-gap-sm);
@@ -1096,8 +1139,8 @@
1096
1139
  --lex-drawer-focus-ring-offset-color: var(--lex-color-background-base);
1097
1140
  --lex-drawer-focus-ring-width: var(--lex-outline-width-focus);
1098
1141
  --lex-drawer-focus-ring-offset: var(--lex-outline-offset-focus);
1099
- --lex-drawer-transition-duration: var(--lex-duration-control);
1100
- --lex-drawer-transition-easing: var(--lex-easing-control);
1142
+ --lex-drawer-transition-duration: var(--lex-duration-overlay-enter);
1143
+ --lex-drawer-transition-easing: var(--lex-easing-ease-in);
1101
1144
  --lex-field-gap: var(--lex-space-control-gap-sm);
1102
1145
  --lex-field-foreground: var(--lex-color-text-primary);
1103
1146
  --lex-field-label-foreground: var(--lex-color-text-primary);
@@ -1159,6 +1202,7 @@
1159
1202
  --lex-fieldset-legend-font-letter-spacing: var(--lex-typography-label-md-letter-spacing);
1160
1203
  --lex-form-gap: var(--lex-space-surface-gap-md);
1161
1204
  --lex-form-foreground: var(--lex-color-text-primary);
1205
+ --lex-form-field-root-gap: var(--lex-space-control-gap-md);
1162
1206
  --lex-input-background: var(--lex-color-background-base);
1163
1207
  --lex-input-foreground: var(--lex-color-text-primary);
1164
1208
  --lex-input-placeholder-color: var(--lex-color-text-secondary);
@@ -1222,12 +1266,12 @@
1222
1266
  --lex-menu-item-highlight-foreground: var(--lex-color-text-primary);
1223
1267
  --lex-menu-item-checked-background: var(--lex-action-primary-base);
1224
1268
  --lex-menu-item-checked-foreground: var(--lex-color-text-inverse);
1225
- --lex-menu-item-indicator-size: var(--lex-size-selection-control-sm);
1269
+ --lex-menu-item-indicator-size: var(--lex-size-icon-sm);
1226
1270
  --lex-menu-item-focus-ring-width: var(--lex-outline-width-focus);
1227
1271
  --lex-menu-item-focus-ring-color: var(--lex-border-focus);
1228
1272
  --lex-menu-item-focus-ring-offset: var(--lex-outline-offset-focus);
1229
1273
  --lex-menu-item-focus-ring-offset-color: var(--lex-color-background-base);
1230
- --lex-menu-submenu-icon-size: var(--lex-size-selection-control-sm);
1274
+ --lex-menu-submenu-icon-size: var(--lex-size-icon-sm);
1231
1275
  --lex-menu-group-gap: var(--lex-space-control-gap-sm);
1232
1276
  --lex-menu-group-label-foreground: var(--lex-color-text-secondary);
1233
1277
  --lex-menu-group-label-padding-y: var(--lex-space-control-y-xs);
@@ -1245,7 +1289,7 @@
1245
1289
  --lex-menu-focus-ring-offset-color: var(--lex-color-background-base);
1246
1290
  --lex-menu-focus-ring-width: var(--lex-outline-width-focus);
1247
1291
  --lex-menu-focus-ring-offset: var(--lex-outline-offset-focus);
1248
- --lex-menu-transition-duration: var(--lex-duration-control);
1292
+ --lex-menu-transition-duration: var(--lex-duration-surface);
1249
1293
  --lex-menu-transition-easing: var(--lex-easing-control);
1250
1294
  --lex-menubar-radius: var(--lex-radius-surface);
1251
1295
  --lex-menubar-trigger-background: var(--lex-color-background-surface);
@@ -1266,7 +1310,7 @@
1266
1310
  --lex-menubar-focus-ring-offset-color: var(--lex-color-background-base);
1267
1311
  --lex-menubar-focus-ring-width: var(--lex-outline-width-focus);
1268
1312
  --lex-menubar-focus-ring-offset: var(--lex-outline-offset-focus);
1269
- --lex-menubar-transition-duration: var(--lex-duration-control);
1313
+ --lex-menubar-transition-duration: var(--lex-duration-surface);
1270
1314
  --lex-menubar-transition-easing: var(--lex-easing-control);
1271
1315
  --lex-meter-gap: var(--lex-space-control-gap-sm);
1272
1316
  --lex-meter-header-gap: var(--lex-space-control-gap-sm);
@@ -1306,7 +1350,7 @@
1306
1350
  --lex-navigation-menu-focus-ring-offset-color: var(--lex-color-background-base);
1307
1351
  --lex-navigation-menu-focus-ring-width: var(--lex-outline-width-focus);
1308
1352
  --lex-navigation-menu-focus-ring-offset: var(--lex-outline-offset-focus);
1309
- --lex-navigation-menu-transition-duration: var(--lex-duration-control);
1353
+ --lex-navigation-menu-transition-duration: var(--lex-duration-surface);
1310
1354
  --lex-navigation-menu-transition-easing: var(--lex-easing-control);
1311
1355
  --lex-number-field-gap: var(--lex-space-control-gap-sm);
1312
1356
  --lex-number-field-foreground: var(--lex-color-text-primary);
@@ -1377,6 +1421,12 @@
1377
1421
  --lex-otp-field-separator-font-weight: var(--lex-typography-control-md-font-weight);
1378
1422
  --lex-otp-field-transition-duration: var(--lex-duration-control);
1379
1423
  --lex-otp-field-transition-easing: var(--lex-easing-control);
1424
+ --lex-page-header-root-gap: var(--lex-space-surface-sm);
1425
+ --lex-page-header-root-padding-bottom: var(--lex-space-surface-sm);
1426
+ --lex-page-header-root-border-color: var(--lex-border-default);
1427
+ --lex-page-header-top-gap: var(--lex-space-surface-gap-md);
1428
+ --lex-page-header-heading-gap: var(--lex-space-surface-gap-sm);
1429
+ --lex-page-header-actions-gap: var(--lex-space-control-gap-md);
1380
1430
  --lex-preview-card-backdrop-background: var(--lex-color-text-primary);
1381
1431
  --lex-preview-card-backdrop-opacity: 0.24;
1382
1432
  --lex-preview-card-backdrop-z-index: var(--lex-elevation-backdrop-z-index);
@@ -1389,7 +1439,7 @@
1389
1439
  --lex-preview-card-popup-max-width: var(--lex-size-panel-width-sm);
1390
1440
  --lex-preview-card-popup-padding: var(--lex-space-surface-md);
1391
1441
  --lex-preview-card-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
1392
- --lex-preview-card-arrow-size: var(--lex-size-selection-control-sm);
1442
+ --lex-preview-card-arrow-size: var(--lex-size-icon-sm);
1393
1443
  --lex-preview-card-trigger-focus-ring-color: var(--lex-border-focus);
1394
1444
  --lex-preview-card-trigger-focus-ring-offset-color: var(--lex-color-background-base);
1395
1445
  --lex-preview-card-trigger-focus-ring-width: var(--lex-outline-width-focus);
@@ -1434,7 +1484,7 @@
1434
1484
  --lex-popover-popup-padding: var(--lex-space-surface-md);
1435
1485
  --lex-popover-popup-gap: var(--lex-space-surface-gap-sm);
1436
1486
  --lex-popover-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
1437
- --lex-popover-arrow-size: var(--lex-size-selection-control-sm);
1487
+ --lex-popover-arrow-size: var(--lex-size-icon-sm);
1438
1488
  --lex-popover-title-foreground: var(--lex-color-text-primary);
1439
1489
  --lex-popover-title-padding-end: var(--lex-size-control-lg);
1440
1490
  --lex-popover-title-font-size: var(--lex-typography-heading-xs-font-size);
@@ -1463,7 +1513,7 @@
1463
1513
  --lex-popover-focus-ring-offset-color: var(--lex-color-background-base);
1464
1514
  --lex-popover-focus-ring-width: var(--lex-outline-width-focus);
1465
1515
  --lex-popover-focus-ring-offset: var(--lex-outline-offset-focus);
1466
- --lex-popover-transition-duration: var(--lex-duration-control);
1516
+ --lex-popover-transition-duration: var(--lex-duration-surface);
1467
1517
  --lex-popover-transition-easing: var(--lex-easing-control);
1468
1518
  --lex-progress-gap: var(--lex-space-control-gap-sm);
1469
1519
  --lex-progress-label-foreground: var(--lex-color-text-secondary);
@@ -1528,7 +1578,7 @@
1528
1578
  --lex-select-label-font-weight: var(--lex-typography-label-sm-font-weight);
1529
1579
  --lex-select-label-font-line-height: var(--lex-typography-label-sm-line-height);
1530
1580
  --lex-select-icon-foreground: var(--lex-color-text-secondary);
1531
- --lex-select-icon-size: var(--lex-size-selection-control-md);
1581
+ --lex-select-icon-size: var(--lex-size-icon-md);
1532
1582
  --lex-select-popup-background: var(--lex-color-background-base);
1533
1583
  --lex-select-popup-foreground: var(--lex-color-text-primary);
1534
1584
  --lex-select-popup-border-color: var(--lex-border-default);
@@ -1550,7 +1600,7 @@
1550
1600
  --lex-select-item-highlight-foreground: var(--lex-color-text-primary);
1551
1601
  --lex-select-item-selected-background: var(--lex-action-primary-base);
1552
1602
  --lex-select-item-selected-foreground: var(--lex-color-text-inverse);
1553
- --lex-select-item-indicator-size: var(--lex-size-selection-control-sm);
1603
+ --lex-select-item-indicator-size: var(--lex-size-icon-sm);
1554
1604
  --lex-select-group-gap: var(--lex-space-control-gap-sm);
1555
1605
  --lex-select-group-label-foreground: var(--lex-color-text-secondary);
1556
1606
  --lex-select-group-label-padding-y: var(--lex-space-control-y-xs);
@@ -1570,10 +1620,70 @@
1570
1620
  --lex-select-invalid-border-color: var(--lex-action-danger-base);
1571
1621
  --lex-select-invalid-ring-color: var(--lex-action-danger-base);
1572
1622
  --lex-select-invalid-ring-width: var(--lex-outline-width-focus);
1573
- --lex-select-transition-duration: var(--lex-duration-control);
1623
+ --lex-select-transition-duration: var(--lex-duration-surface);
1574
1624
  --lex-select-transition-easing: var(--lex-easing-control);
1575
1625
  --lex-separator-color: var(--lex-border-default);
1576
1626
  --lex-separator-thickness: 1px;
1627
+ --lex-settings-page-layout-root-background: var(--lex-color-background-base);
1628
+ --lex-settings-page-layout-root-foreground: var(--lex-color-text-primary);
1629
+ --lex-settings-page-layout-header-padding-x: var(--lex-space-surface-sm);
1630
+ --lex-settings-page-layout-header-padding-top: var(--lex-space-surface-sm);
1631
+ --lex-settings-page-layout-body-gap: var(--lex-space-surface-sm);
1632
+ --lex-settings-page-layout-body-padding-x: var(--lex-space-surface-sm);
1633
+ --lex-settings-page-layout-body-padding-bottom: var(--lex-space-surface-sm);
1634
+ --lex-settings-page-layout-nav-gap: var(--lex-space-surface-gap-md);
1635
+ --lex-settings-page-layout-nav-width: var(--lex-size-sidebar-width);
1636
+ --lex-settings-page-layout-main-gap: var(--lex-space-surface-sm);
1637
+ --lex-sidebar-width-default: var(--lex-size-sidebar-width);
1638
+ --lex-sidebar-width-collapsed: var(--lex-size-sidebar-width-collapsed);
1639
+ --lex-sidebar-transition-duration: var(--lex-duration-layout);
1640
+ --lex-sidebar-transition-easing: var(--lex-easing-layout);
1641
+ --lex-sidebar-nav-padding: var(--lex-space-control-x-sm);
1642
+ --lex-sidebar-list-gap: var(--lex-space-control-gap-md);
1643
+ --lex-sidebar-group-gap: var(--lex-space-control-gap-md);
1644
+ --lex-sidebar-separator-margin-y: var(--lex-space-control-gap-md);
1645
+ --lex-sidebar-separator-margin-x: var(--lex-space-control-gap-md);
1646
+ --lex-sidebar-brand-padding-x: var(--lex-space-control-x-md);
1647
+ --lex-sidebar-brand-padding-y: var(--lex-space-control-x-sm);
1648
+ --lex-sidebar-brand-border-color: var(--lex-border-default);
1649
+ --lex-sidebar-footer-padding: var(--lex-space-control-x-xs);
1650
+ --lex-sidebar-footer-border-color: var(--lex-border-default);
1651
+ --lex-sidebar-drawer-footer-padding: var(--lex-space-control-x-xs);
1652
+ --lex-sidebar-drawer-footer-border-color: var(--lex-border-default);
1653
+ --lex-sidebar-mobile-bar-gap: var(--lex-space-control-gap-lg);
1654
+ --lex-sidebar-mobile-bar-padding-x: var(--lex-space-control-x-md);
1655
+ --lex-sidebar-mobile-bar-padding-y: var(--lex-space-control-x-sm);
1656
+ --lex-sidebar-mobile-bar-background: var(--lex-color-background-base);
1657
+ --lex-sidebar-mobile-bar-border-color: var(--lex-border-default);
1658
+ --lex-sidebar-group-label-gap: var(--lex-space-control-gap-md);
1659
+ --lex-sidebar-group-label-padding-x: var(--lex-space-control-x-sm);
1660
+ --lex-sidebar-group-label-padding-y: var(--lex-space-control-y-xs);
1661
+ --lex-sidebar-group-collapsible-trigger-gap: var(--lex-space-control-gap-md);
1662
+ --lex-sidebar-desktop-background: var(--lex-color-background-subtle);
1663
+ --lex-sidebar-desktop-border-color: var(--lex-border-default);
1664
+ --lex-sidebar-item-foreground: var(--lex-color-text-secondary);
1665
+ --lex-sidebar-item-foreground-active: var(--lex-color-text-primary);
1666
+ --lex-sidebar-item-gap: var(--lex-space-control-gap-md);
1667
+ --lex-sidebar-item-height-min: var(--lex-size-control-sm);
1668
+ --lex-sidebar-item-adornment-height: var(--lex-size-control-xs);
1669
+ --lex-sidebar-item-radius: var(--lex-radius-control);
1670
+ --lex-sidebar-item-padding-x: var(--lex-space-control-x-md);
1671
+ --lex-sidebar-item-padding-y: var(--lex-space-control-y-sm);
1672
+ --lex-sidebar-item-font-size: var(--lex-typography-control-sm-font-size);
1673
+ --lex-sidebar-item-font-weight: var(--lex-typography-control-md-font-weight);
1674
+ --lex-sidebar-item-font-weight-active: var(--lex-typography-label-sm-font-weight);
1675
+ --lex-sidebar-item-font-line-height: var(--lex-typography-control-sm-line-height);
1676
+ --lex-sidebar-item-background-hover: var(--lex-action-secondary-hover);
1677
+ --lex-sidebar-item-background-active: var(--lex-color-background-base);
1678
+ --lex-sidebar-item-accent-width: var(--lex-outline-width-focus);
1679
+ --lex-sidebar-item-accent-color: var(--lex-action-primary-base);
1680
+ --lex-sidebar-item-icon-size: var(--lex-size-icon-md);
1681
+ --lex-sidebar-item-icon-size-collapsed: var(--lex-size-icon-lg);
1682
+ --lex-sidebar-item-badge-max-width: var(--lex-size-panel-width-sm);
1683
+ --lex-sidebar-item-sub-indent: var(--lex-space-control-x-sm);
1684
+ --lex-sidebar-item-shortcut-padding-x: var(--lex-space-control-x-xs);
1685
+ --lex-sidebar-item-focus-ring-width: var(--lex-outline-width-inset);
1686
+ --lex-sidebar-item-focus-ring-color: var(--lex-border-focus);
1577
1687
  --lex-slider-gap: var(--lex-space-control-gap-md);
1578
1688
  --lex-slider-control-padding-y: var(--lex-space-control-y-sm);
1579
1689
  --lex-slider-track-background: var(--lex-color-background-subtle);
@@ -1590,6 +1700,13 @@
1590
1700
  --lex-slider-focus-ring-offset: var(--lex-outline-offset-focus);
1591
1701
  --lex-slider-transition-duration: var(--lex-duration-control);
1592
1702
  --lex-slider-transition-easing: var(--lex-easing-control);
1703
+ --lex-stats-card-value-foreground: var(--lex-color-text-primary);
1704
+ --lex-stats-card-value-font-size: var(--lex-typography-heading-md-font-size);
1705
+ --lex-stats-card-value-font-weight: var(--lex-typography-heading-md-font-weight);
1706
+ --lex-stats-card-value-font-line-height: var(--lex-typography-heading-md-line-height);
1707
+ --lex-stats-card-trend-foreground: var(--lex-color-text-secondary);
1708
+ --lex-stats-card-trend-font-size: var(--lex-typography-body-xs-font-size);
1709
+ --lex-stats-card-trend-font-line-height: var(--lex-typography-body-xs-line-height);
1593
1710
  --lex-switch-background: var(--lex-color-background-subtle);
1594
1711
  --lex-switch-checked-background: var(--lex-action-primary-base);
1595
1712
  --lex-switch-radius: var(--lex-radius-pill);
@@ -1651,7 +1768,7 @@
1651
1768
  --lex-tabs-panel-font-line-height: var(--lex-typography-body-sm-line-height);
1652
1769
  --lex-tabs-focus-ring-color: var(--lex-border-focus);
1653
1770
  --lex-tabs-focus-ring-width: var(--lex-outline-width-inset);
1654
- --lex-tabs-transition-duration: var(--lex-duration-control);
1771
+ --lex-tabs-transition-duration: var(--lex-duration-surface);
1655
1772
  --lex-tabs-transition-easing: var(--lex-easing-control);
1656
1773
  --lex-textarea-background: var(--lex-color-background-base);
1657
1774
  --lex-textarea-foreground: var(--lex-color-text-primary);
@@ -1710,7 +1827,7 @@
1710
1827
  --lex-toast-gap: var(--lex-space-surface-gap-sm);
1711
1828
  --lex-toast-content-gap: var(--lex-space-surface-gap-sm);
1712
1829
  --lex-toast-content-behind-opacity: 0.72;
1713
- --lex-toast-arrow-size: var(--lex-size-selection-control-sm);
1830
+ --lex-toast-arrow-size: var(--lex-size-icon-sm);
1714
1831
  --lex-toast-title-foreground: var(--lex-color-text-primary);
1715
1832
  --lex-toast-title-font-size: var(--lex-typography-heading-xs-font-size);
1716
1833
  --lex-toast-title-font-weight: var(--lex-typography-heading-xs-font-weight);
@@ -1779,6 +1896,7 @@
1779
1896
  --lex-toolbar-root-border-color: var(--lex-border-default);
1780
1897
  --lex-toolbar-root-padding: var(--lex-space-control-x-sm);
1781
1898
  --lex-toolbar-group-gap: var(--lex-space-control-gap-sm);
1899
+ --lex-toolbar-separator-margin: var(--lex-space-control-gap-sm);
1782
1900
  --lex-toolbar-button-height: var(--lex-size-control-sm);
1783
1901
  --lex-toolbar-button-radius: var(--lex-radius-control);
1784
1902
  --lex-toolbar-button-padding-x: var(--lex-space-control-x-sm);
@@ -5,7 +5,11 @@
5
5
  */
6
6
 
7
7
  export const dashboardShellClasses = (): string => {
8
- return "lex-dashboard-shell flex min-h-full flex-col bg-[var(--lex-color-background-base)] text-[var(--lex-color-text-primary)] md:flex-row"
8
+ return [
9
+ "lex-dashboard-shell flex min-h-full flex-col",
10
+ "bg-(--lex-dashboard-shell-root-background) text-(--lex-dashboard-shell-root-foreground)",
11
+ "md:flex-row",
12
+ ].join(" ")
9
13
  }
10
14
 
11
15
  export const dashboardShellSidebarClasses = (): string => {
@@ -13,13 +17,24 @@ export const dashboardShellSidebarClasses = (): string => {
13
17
  }
14
18
 
15
19
  export const dashboardShellMainClasses = (): string => {
16
- return "lex-dashboard-shell__main flex min-h-full flex-1 flex-col bg-[var(--lex-color-background-base)]"
20
+ return [
21
+ "lex-dashboard-shell__main flex min-h-full flex-1 flex-col",
22
+ "bg-(--lex-dashboard-shell-main-background)",
23
+ ].join(" ")
17
24
  }
18
25
 
19
26
  export const dashboardShellHeaderClasses = (): string => {
20
- return "lex-dashboard-shell__header border-b border-[var(--lex-border-default)] bg-[var(--lex-color-background-base)] px-[var(--lex-space-4)] py-[var(--lex-space-3)]"
27
+ return [
28
+ "lex-dashboard-shell__header border-b border-(--lex-dashboard-shell-header-border-color)",
29
+ "bg-(--lex-dashboard-shell-header-background)",
30
+ "px-(--lex-dashboard-shell-header-padding-x) py-(--lex-dashboard-shell-header-padding-y)",
31
+ ].join(" ")
21
32
  }
22
33
 
23
34
  export const dashboardShellContentClasses = (): string => {
24
- return "lex-dashboard-shell__content flex-1 bg-[var(--lex-color-background-base)] p-[var(--lex-space-4)]"
35
+ return [
36
+ "lex-dashboard-shell__content flex-1",
37
+ "bg-(--lex-dashboard-shell-content-background)",
38
+ "p-(--lex-dashboard-shell-content-padding)",
39
+ ].join(" ")
25
40
  }
@@ -4,7 +4,7 @@
4
4
  * Reference SettingsPageLayout template — settings page shell with header and panels.
5
5
  */
6
6
 
7
- import { PageHeader } from "@/components/blocks/PageHeader"
7
+ import { PageHeader } from "@/components/blocks/PageHeader/PageHeader"
8
8
  import {
9
9
  SettingsPanel,
10
10
  SettingsPanelContent,
@@ -12,7 +12,7 @@ import {
12
12
  SettingsPanelFooter,
13
13
  SettingsPanelHeader,
14
14
  SettingsPanelTitle,
15
- } from "@/components/blocks/SettingsPanel"
15
+ } from "@/components/blocks/SettingsPanel/SettingsPanel"
16
16
  import type {
17
17
  SettingsPageLayoutBodyProps,
18
18
  SettingsPageLayoutHeaderProps,
@@ -5,7 +5,7 @@
5
5
  */
6
6
 
7
7
  import type { HTMLAttributes, ReactNode, Ref } from "react"
8
- import type { PageHeaderProps } from "@/components/blocks/PageHeader"
8
+ import type { PageHeaderProps } from "@/components/blocks/PageHeader/PageHeader.types"
9
9
  import type {
10
10
  SettingsPanelContentProps,
11
11
  SettingsPanelDescriptionProps,
@@ -13,7 +13,7 @@ import type {
13
13
  SettingsPanelHeaderProps,
14
14
  SettingsPanelProps,
15
15
  SettingsPanelTitleProps,
16
- } from "@/components/blocks/SettingsPanel"
16
+ } from "@/components/blocks/SettingsPanel/SettingsPanel.types"
17
17
 
18
18
  export interface SettingsPageLayoutProps extends HTMLAttributes<HTMLDivElement> {
19
19
  ref?: Ref<HTMLDivElement>
@@ -8,19 +8,25 @@ export const settingsPageLayoutClasses = (): string => {
8
8
  return [
9
9
  "lex-settings-page-layout",
10
10
  "flex min-h-full flex-col",
11
- "bg-(--lex-color-background-base) text-(--lex-color-text-primary)",
11
+ "bg-(--lex-settings-page-layout-root-background)",
12
+ "text-(--lex-settings-page-layout-root-foreground)",
12
13
  ].join(" ")
13
14
  }
14
15
 
15
16
  export const settingsPageLayoutHeaderClasses = (): string => {
16
- return "lex-settings-page-layout__header px-(--lex-space-4) pt-(--lex-space-4)"
17
+ return [
18
+ "lex-settings-page-layout__header",
19
+ "px-(--lex-settings-page-layout-header-padding-x)",
20
+ "pt-(--lex-settings-page-layout-header-padding-top)",
21
+ ].join(" ")
17
22
  }
18
23
 
19
24
  export const settingsPageLayoutBodyClasses = (): string => {
20
25
  return [
21
26
  "lex-settings-page-layout__body",
22
- "flex flex-1 flex-col gap-(--lex-space-4)",
23
- "px-(--lex-space-4) pb-(--lex-space-4)",
27
+ "flex flex-1 flex-col gap-(--lex-settings-page-layout-body-gap)",
28
+ "px-(--lex-settings-page-layout-body-padding-x)",
29
+ "pb-(--lex-settings-page-layout-body-padding-bottom)",
24
30
  "lg:flex-row lg:items-start",
25
31
  ].join(" ")
26
32
  }
@@ -28,13 +34,16 @@ export const settingsPageLayoutBodyClasses = (): string => {
28
34
  export const settingsPageLayoutNavClasses = (): string => {
29
35
  return [
30
36
  "lex-settings-page-layout__nav",
31
- "flex w-full shrink-0 flex-col gap-(--lex-space-3)",
32
- "lg:w-(--lex-size-settings-page-nav-width,16rem)",
37
+ "flex w-full shrink-0 flex-col gap-(--lex-settings-page-layout-nav-gap)",
38
+ "lg:w-(--lex-settings-page-layout-nav-width)",
33
39
  ].join(" ")
34
40
  }
35
41
 
36
42
  export const settingsPageLayoutMainClasses = (): string => {
37
- return "lex-settings-page-layout__main flex min-w-0 flex-1 flex-col gap-(--lex-space-4)"
43
+ return [
44
+ "lex-settings-page-layout__main",
45
+ "flex min-w-0 flex-1 flex-col gap-(--lex-settings-page-layout-main-gap)",
46
+ ].join(" ")
38
47
  }
39
48
 
40
49
  export const settingsPageLayoutPanelClasses = (): string => {