@dalexto/lexsys-registry 0.0.6 → 0.1.0

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 (40) hide show
  1. package/dist/index.js +211 -3
  2. package/dist/items/breadcrumb.d.ts +7 -0
  3. package/dist/items/data-table.d.ts +7 -0
  4. package/dist/items/date-picker.d.ts +7 -0
  5. package/dist/items/filter-toolbar.d.ts +7 -0
  6. package/dist/items/index.d.ts +8 -0
  7. package/dist/items/page-header.d.ts +7 -0
  8. package/dist/items/pagination.d.ts +7 -0
  9. package/dist/items/settings-page-layout.d.ts +7 -0
  10. package/dist/items/stats-card.d.ts +7 -0
  11. package/package.json +1 -1
  12. package/templates/blocks/CommandPalette/CommandPalette.tsx +12 -8
  13. package/templates/blocks/CommandPalette/CommandPalette.types.ts +2 -2
  14. package/templates/blocks/DataTable/DataTable.tsx +236 -0
  15. package/templates/blocks/DataTable/DataTable.types.ts +74 -0
  16. package/templates/blocks/DataTable/DataTable.variants.ts +23 -0
  17. package/templates/blocks/FilterToolbar/FilterToolbar.tsx +126 -0
  18. package/templates/blocks/FilterToolbar/FilterToolbar.types.ts +31 -0
  19. package/templates/blocks/FilterToolbar/FilterToolbar.variants.ts +24 -0
  20. package/templates/blocks/PageHeader/PageHeader.tsx +215 -0
  21. package/templates/blocks/PageHeader/PageHeader.types.ts +66 -0
  22. package/templates/blocks/PageHeader/PageHeader.variants.ts +48 -0
  23. package/templates/blocks/StatsCard/StatsCard.tsx +132 -0
  24. package/templates/blocks/StatsCard/StatsCard.types.ts +43 -0
  25. package/templates/blocks/StatsCard/StatsCard.variants.ts +28 -0
  26. package/templates/primitives/Breadcrumb/Breadcrumb.tsx +142 -0
  27. package/templates/primitives/Breadcrumb/Breadcrumb.types.ts +62 -0
  28. package/templates/primitives/Breadcrumb/Breadcrumb.variants.ts +37 -0
  29. package/templates/primitives/DatePicker/DatePicker.tsx +263 -0
  30. package/templates/primitives/DatePicker/DatePicker.types.ts +52 -0
  31. package/templates/primitives/DatePicker/DatePicker.variants.ts +76 -0
  32. package/templates/primitives/Pagination/Pagination.tsx +160 -0
  33. package/templates/primitives/Pagination/Pagination.types.ts +54 -0
  34. package/templates/primitives/Pagination/Pagination.variants.ts +47 -0
  35. package/templates/primitives/Toolbar/Toolbar.variants.ts +15 -15
  36. package/templates/styles/theme.css +1 -1
  37. package/templates/styles/tokens.css +334 -1
  38. package/templates/templates/SettingsPageLayout/SettingsPageLayout.tsx +198 -0
  39. package/templates/templates/SettingsPageLayout/SettingsPageLayout.types.ts +55 -0
  40. package/templates/templates/SettingsPageLayout/SettingsPageLayout.variants.ts +42 -0
@@ -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-06T10:34:21.106Z
6
+ * Last generated: 2026-06-06T12:57:40.698Z
7
7
  */
8
8
 
9
9
  :root {
@@ -667,6 +667,46 @@
667
667
  --lex-alert-danger-background: var(--lex-color-feedback-danger-background);
668
668
  --lex-alert-danger-foreground: var(--lex-color-feedback-danger-foreground);
669
669
  --lex-alert-danger-border-color: var(--lex-color-feedback-danger-foreground);
670
+ --lex-autocomplete-background: var(--lex-color-background-base);
671
+ --lex-autocomplete-foreground: var(--lex-color-text-primary);
672
+ --lex-autocomplete-border-color: var(--lex-border-default);
673
+ --lex-autocomplete-radius: var(--lex-radius-control);
674
+ --lex-autocomplete-height-sm: var(--lex-size-control-sm);
675
+ --lex-autocomplete-height-md: var(--lex-size-control-md);
676
+ --lex-autocomplete-height-lg: var(--lex-size-control-lg);
677
+ --lex-autocomplete-padding-x-sm: var(--lex-space-control-x-sm);
678
+ --lex-autocomplete-padding-x-md: var(--lex-space-control-x-md);
679
+ --lex-autocomplete-padding-x-lg: var(--lex-space-control-x-lg);
680
+ --lex-autocomplete-trigger-gap: var(--lex-space-control-gap-sm);
681
+ --lex-autocomplete-font-family: var(--lex-typography-control-md-font-family);
682
+ --lex-autocomplete-font-size-sm: var(--lex-typography-control-sm-font-size);
683
+ --lex-autocomplete-font-size-md: var(--lex-typography-control-md-font-size);
684
+ --lex-autocomplete-font-size-lg: var(--lex-typography-control-lg-font-size);
685
+ --lex-autocomplete-font-weight: var(--lex-typography-control-md-font-weight);
686
+ --lex-autocomplete-font-line-height: var(--lex-typography-control-md-line-height);
687
+ --lex-autocomplete-font-letter-spacing: var(--lex-typography-control-md-letter-spacing);
688
+ --lex-autocomplete-popup-background: var(--lex-color-background-base);
689
+ --lex-autocomplete-popup-foreground: var(--lex-color-text-primary);
690
+ --lex-autocomplete-popup-border-color: var(--lex-border-default);
691
+ --lex-autocomplete-popup-max-height: var(--lex-size-overlay-list-max-height);
692
+ --lex-autocomplete-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
693
+ --lex-autocomplete-list-gap: var(--lex-space-control-gap-sm);
694
+ --lex-autocomplete-list-padding: var(--lex-space-control-y-xs);
695
+ --lex-autocomplete-item-foreground: var(--lex-color-text-primary);
696
+ --lex-autocomplete-item-highlight-background: var(--lex-color-background-subtle);
697
+ --lex-autocomplete-item-highlight-foreground: var(--lex-color-text-primary);
698
+ --lex-autocomplete-item-selected-background: var(--lex-action-primary-base);
699
+ --lex-autocomplete-item-selected-foreground: var(--lex-color-text-inverse);
700
+ --lex-autocomplete-focus-border-color: var(--lex-border-focus);
701
+ --lex-autocomplete-focus-ring-color: var(--lex-border-focus);
702
+ --lex-autocomplete-focus-ring-offset-color: var(--lex-color-background-base);
703
+ --lex-autocomplete-focus-ring-width: var(--lex-outline-width-focus);
704
+ --lex-autocomplete-focus-ring-offset: var(--lex-outline-offset-focus);
705
+ --lex-autocomplete-invalid-border-color: var(--lex-action-danger-base);
706
+ --lex-autocomplete-invalid-ring-color: var(--lex-action-danger-base);
707
+ --lex-autocomplete-invalid-ring-width: var(--lex-outline-width-focus);
708
+ --lex-autocomplete-transition-duration: var(--lex-duration-control);
709
+ --lex-autocomplete-transition-easing: var(--lex-easing-control);
670
710
  --lex-avatar-background: var(--lex-color-background-subtle);
671
711
  --lex-avatar-foreground: var(--lex-color-text-secondary);
672
712
  --lex-avatar-border-color: var(--lex-border-default);
@@ -705,6 +745,23 @@
705
745
  --lex-badge-danger-background: var(--lex-action-danger-base);
706
746
  --lex-badge-danger-foreground: var(--lex-color-text-inverse);
707
747
  --lex-badge-danger-border-color: var(--lex-action-danger-base);
748
+ --lex-breadcrumb-list-gap: var(--lex-space-control-gap-sm);
749
+ --lex-breadcrumb-item-gap: var(--lex-space-control-gap-sm);
750
+ --lex-breadcrumb-link-foreground: var(--lex-color-text-secondary);
751
+ --lex-breadcrumb-link-hover-foreground: var(--lex-color-text-primary);
752
+ --lex-breadcrumb-link-font-size: var(--lex-typography-body-sm-font-size);
753
+ --lex-breadcrumb-link-font-weight: var(--lex-typography-body-sm-font-weight);
754
+ --lex-breadcrumb-link-font-line-height: var(--lex-typography-body-sm-line-height);
755
+ --lex-breadcrumb-page-foreground: var(--lex-color-text-primary);
756
+ --lex-breadcrumb-page-font-size: var(--lex-typography-body-sm-font-size);
757
+ --lex-breadcrumb-page-font-weight: var(--lex-typography-label-sm-font-weight);
758
+ --lex-breadcrumb-page-font-line-height: var(--lex-typography-body-sm-line-height);
759
+ --lex-breadcrumb-separator-foreground: var(--lex-color-text-secondary);
760
+ --lex-breadcrumb-separator-size: var(--lex-size-control-sm);
761
+ --lex-breadcrumb-ellipsis-foreground: var(--lex-color-text-secondary);
762
+ --lex-breadcrumb-ellipsis-size: var(--lex-size-control-sm);
763
+ --lex-breadcrumb-transition-duration: var(--lex-duration-control);
764
+ --lex-breadcrumb-transition-easing: var(--lex-easing-control);
708
765
  --lex-button-radius: var(--lex-radius-control);
709
766
  --lex-button-focus-ring-color: var(--lex-border-focus);
710
767
  --lex-button-focus-ring-offset-color: var(--lex-color-background-base);
@@ -790,6 +847,82 @@
790
847
  --lex-checkbox-focus-ring-offset: var(--lex-outline-offset-focus);
791
848
  --lex-checkbox-transition-duration: var(--lex-duration-control);
792
849
  --lex-checkbox-transition-easing: var(--lex-easing-control);
850
+ --lex-checkbox-group-gap: var(--lex-space-control-gap-md);
851
+ --lex-checkbox-group-label-foreground: var(--lex-color-text-primary);
852
+ --lex-checkbox-group-label-font-size: var(--lex-typography-label-sm-font-size);
853
+ --lex-checkbox-group-label-font-weight: var(--lex-typography-label-sm-font-weight);
854
+ --lex-checkbox-group-label-font-line-height: var(--lex-typography-label-sm-line-height);
855
+ --lex-combobox-background: var(--lex-color-background-base);
856
+ --lex-combobox-foreground: var(--lex-color-text-primary);
857
+ --lex-combobox-border-color: var(--lex-border-default);
858
+ --lex-combobox-radius: var(--lex-radius-control);
859
+ --lex-combobox-height-sm: var(--lex-size-control-sm);
860
+ --lex-combobox-height-md: var(--lex-size-control-md);
861
+ --lex-combobox-height-lg: var(--lex-size-control-lg);
862
+ --lex-combobox-padding-x-sm: var(--lex-space-control-x-sm);
863
+ --lex-combobox-padding-x-md: var(--lex-space-control-x-md);
864
+ --lex-combobox-padding-x-lg: var(--lex-space-control-x-lg);
865
+ --lex-combobox-trigger-gap: var(--lex-space-control-gap-sm);
866
+ --lex-combobox-label-foreground: var(--lex-color-text-primary);
867
+ --lex-combobox-label-font-size: var(--lex-typography-label-sm-font-size);
868
+ --lex-combobox-label-font-weight: var(--lex-typography-label-sm-font-weight);
869
+ --lex-combobox-label-font-line-height: var(--lex-typography-label-sm-line-height);
870
+ --lex-combobox-font-family: var(--lex-typography-control-md-font-family);
871
+ --lex-combobox-font-size-sm: var(--lex-typography-control-sm-font-size);
872
+ --lex-combobox-font-size-md: var(--lex-typography-control-md-font-size);
873
+ --lex-combobox-font-size-lg: var(--lex-typography-control-lg-font-size);
874
+ --lex-combobox-font-weight: var(--lex-typography-control-md-font-weight);
875
+ --lex-combobox-font-line-height: var(--lex-typography-control-md-line-height);
876
+ --lex-combobox-font-letter-spacing: var(--lex-typography-control-md-letter-spacing);
877
+ --lex-combobox-popup-background: var(--lex-color-background-base);
878
+ --lex-combobox-popup-foreground: var(--lex-color-text-primary);
879
+ --lex-combobox-popup-border-color: var(--lex-border-default);
880
+ --lex-combobox-popup-max-height: var(--lex-size-overlay-list-max-height);
881
+ --lex-combobox-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
882
+ --lex-combobox-list-gap: var(--lex-space-control-gap-sm);
883
+ --lex-combobox-list-padding: var(--lex-space-control-y-xs);
884
+ --lex-combobox-item-foreground: var(--lex-color-text-primary);
885
+ --lex-combobox-item-highlight-background: var(--lex-color-background-subtle);
886
+ --lex-combobox-item-highlight-foreground: var(--lex-color-text-primary);
887
+ --lex-combobox-item-selected-background: var(--lex-action-primary-base);
888
+ --lex-combobox-item-selected-foreground: var(--lex-color-text-inverse);
889
+ --lex-combobox-focus-border-color: var(--lex-border-focus);
890
+ --lex-combobox-focus-ring-color: var(--lex-border-focus);
891
+ --lex-combobox-focus-ring-offset-color: var(--lex-color-background-base);
892
+ --lex-combobox-focus-ring-width: var(--lex-outline-width-focus);
893
+ --lex-combobox-focus-ring-offset: var(--lex-outline-offset-focus);
894
+ --lex-combobox-invalid-border-color: var(--lex-action-danger-base);
895
+ --lex-combobox-invalid-ring-color: var(--lex-action-danger-base);
896
+ --lex-combobox-invalid-ring-width: var(--lex-outline-width-focus);
897
+ --lex-combobox-transition-duration: var(--lex-duration-control);
898
+ --lex-combobox-transition-easing: var(--lex-easing-control);
899
+ --lex-context-menu-radius: var(--lex-radius-surface);
900
+ --lex-context-menu-popup-background: var(--lex-color-background-base);
901
+ --lex-context-menu-popup-foreground: var(--lex-color-text-primary);
902
+ --lex-context-menu-popup-border-color: var(--lex-border-default);
903
+ --lex-context-menu-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
904
+ --lex-context-menu-positioner-z-index: var(--lex-elevation-floating-z-index);
905
+ --lex-context-menu-positioner-side-offset: var(--lex-space-overlay-side-offset);
906
+ --lex-context-menu-list-gap: var(--lex-space-control-gap-sm);
907
+ --lex-context-menu-list-padding: var(--lex-space-control-y-xs);
908
+ --lex-context-menu-item-foreground: var(--lex-color-text-primary);
909
+ --lex-context-menu-item-radius: var(--lex-radius-control);
910
+ --lex-context-menu-item-padding-x: var(--lex-space-control-x-sm);
911
+ --lex-context-menu-item-padding-y: var(--lex-space-control-y-xs);
912
+ --lex-context-menu-item-highlight-background: var(--lex-color-background-subtle);
913
+ --lex-context-menu-item-highlight-foreground: var(--lex-color-text-primary);
914
+ --lex-context-menu-item-focus-ring-width: var(--lex-outline-width-focus);
915
+ --lex-context-menu-item-focus-ring-color: var(--lex-border-focus);
916
+ --lex-context-menu-item-focus-ring-offset: var(--lex-outline-offset-focus);
917
+ --lex-context-menu-item-focus-ring-offset-color: var(--lex-color-background-base);
918
+ --lex-context-menu-separator-background: var(--lex-border-default);
919
+ --lex-context-menu-separator-margin-y: var(--lex-space-control-y-xs);
920
+ --lex-context-menu-focus-ring-color: var(--lex-border-focus);
921
+ --lex-context-menu-focus-ring-offset-color: var(--lex-color-background-base);
922
+ --lex-context-menu-focus-ring-width: var(--lex-outline-width-focus);
923
+ --lex-context-menu-focus-ring-offset: var(--lex-outline-offset-focus);
924
+ --lex-context-menu-transition-duration: var(--lex-duration-control);
925
+ --lex-context-menu-transition-easing: var(--lex-easing-control);
793
926
  --lex-collapsible-background: var(--lex-color-background-surface);
794
927
  --lex-collapsible-foreground: var(--lex-color-text-primary);
795
928
  --lex-collapsible-border-color: var(--lex-border-default);
@@ -811,6 +944,44 @@
811
944
  --lex-collapsible-panel-font-line-height: var(--lex-typography-body-sm-line-height);
812
945
  --lex-collapsible-transition-duration: var(--lex-duration-surface);
813
946
  --lex-collapsible-transition-easing: var(--lex-easing-surface);
947
+ --lex-date-picker-calendar-background: var(--lex-color-background-base);
948
+ --lex-date-picker-calendar-foreground: var(--lex-color-text-primary);
949
+ --lex-date-picker-calendar-border-color: var(--lex-border-default);
950
+ --lex-date-picker-calendar-radius: var(--lex-radius-surface);
951
+ --lex-date-picker-calendar-padding: var(--lex-space-surface-md);
952
+ --lex-date-picker-calendar-gap: var(--lex-space-surface-gap-sm);
953
+ --lex-date-picker-calendar-width: var(--lex-size-panel-width-sm);
954
+ --lex-date-picker-header-foreground: var(--lex-color-text-primary);
955
+ --lex-date-picker-header-font-size: var(--lex-typography-heading-xs-font-size);
956
+ --lex-date-picker-header-font-weight: var(--lex-typography-heading-xs-font-weight);
957
+ --lex-date-picker-header-font-line-height: var(--lex-typography-heading-xs-line-height);
958
+ --lex-date-picker-weekday-foreground: var(--lex-color-text-secondary);
959
+ --lex-date-picker-weekday-font-size: var(--lex-typography-label-xs-font-size);
960
+ --lex-date-picker-weekday-font-weight: var(--lex-typography-label-xs-font-weight);
961
+ --lex-date-picker-weekday-font-line-height: 1;
962
+ --lex-date-picker-day-size: var(--lex-size-control-md);
963
+ --lex-date-picker-day-radius: var(--lex-radius-selection);
964
+ --lex-date-picker-day-background: transparent;
965
+ --lex-date-picker-day-foreground: var(--lex-color-text-primary);
966
+ --lex-date-picker-day-hover-background: var(--lex-color-background-subtle);
967
+ --lex-date-picker-day-selected-background: var(--lex-action-primary-base);
968
+ --lex-date-picker-day-selected-foreground: var(--lex-color-text-inverse);
969
+ --lex-date-picker-day-outside-foreground: var(--lex-color-text-secondary);
970
+ --lex-date-picker-day-today-border-color: var(--lex-border-focus);
971
+ --lex-date-picker-day-font-size: var(--lex-typography-control-sm-font-size);
972
+ --lex-date-picker-day-font-weight: var(--lex-typography-control-sm-font-weight);
973
+ --lex-date-picker-day-font-line-height: 1;
974
+ --lex-date-picker-nav-size: var(--lex-size-control-sm);
975
+ --lex-date-picker-nav-foreground: var(--lex-color-text-secondary);
976
+ --lex-date-picker-nav-hover-background: var(--lex-color-background-subtle);
977
+ --lex-date-picker-nav-hover-foreground: var(--lex-color-text-primary);
978
+ --lex-date-picker-nav-radius: var(--lex-radius-control);
979
+ --lex-date-picker-focus-ring-color: var(--lex-border-focus);
980
+ --lex-date-picker-focus-ring-offset-color: var(--lex-color-background-base);
981
+ --lex-date-picker-focus-ring-width: var(--lex-outline-width-focus);
982
+ --lex-date-picker-focus-ring-offset: var(--lex-outline-offset-focus);
983
+ --lex-date-picker-transition-duration: var(--lex-duration-control);
984
+ --lex-date-picker-transition-easing: var(--lex-easing-control);
814
985
  --lex-dialog-backdrop-background: var(--lex-color-text-primary);
815
986
  --lex-dialog-backdrop-opacity: 0.48;
816
987
  --lex-dialog-backdrop-z-index: var(--lex-elevation-backdrop-z-index);
@@ -1076,6 +1247,27 @@
1076
1247
  --lex-menu-focus-ring-offset: var(--lex-outline-offset-focus);
1077
1248
  --lex-menu-transition-duration: var(--lex-duration-control);
1078
1249
  --lex-menu-transition-easing: var(--lex-easing-control);
1250
+ --lex-menubar-radius: var(--lex-radius-surface);
1251
+ --lex-menubar-trigger-background: var(--lex-color-background-surface);
1252
+ --lex-menubar-trigger-foreground: var(--lex-color-text-primary);
1253
+ --lex-menubar-trigger-border-color: var(--lex-border-default);
1254
+ --lex-menubar-list-gap: var(--lex-space-control-gap-sm);
1255
+ --lex-menubar-list-padding: var(--lex-space-control-y-xs);
1256
+ --lex-menubar-item-foreground: var(--lex-color-text-primary);
1257
+ --lex-menubar-item-highlight-background: var(--lex-color-background-subtle);
1258
+ --lex-menubar-item-highlight-foreground: var(--lex-color-text-primary);
1259
+ --lex-menubar-item-open-background: var(--lex-color-background-subtle);
1260
+ --lex-menubar-item-open-border-color: var(--lex-border-focus);
1261
+ --lex-menubar-popup-background: var(--lex-color-background-base);
1262
+ --lex-menubar-popup-foreground: var(--lex-color-text-primary);
1263
+ --lex-menubar-popup-border-color: var(--lex-border-default);
1264
+ --lex-menubar-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
1265
+ --lex-menubar-focus-ring-color: var(--lex-border-focus);
1266
+ --lex-menubar-focus-ring-offset-color: var(--lex-color-background-base);
1267
+ --lex-menubar-focus-ring-width: var(--lex-outline-width-focus);
1268
+ --lex-menubar-focus-ring-offset: var(--lex-outline-offset-focus);
1269
+ --lex-menubar-transition-duration: var(--lex-duration-control);
1270
+ --lex-menubar-transition-easing: var(--lex-easing-control);
1079
1271
  --lex-meter-gap: var(--lex-space-control-gap-sm);
1080
1272
  --lex-meter-header-gap: var(--lex-space-control-gap-sm);
1081
1273
  --lex-meter-label-foreground: var(--lex-color-text-secondary);
@@ -1093,6 +1285,29 @@
1093
1285
  --lex-meter-indicator-background-complete: var(--lex-action-primary-base);
1094
1286
  --lex-meter-transition-duration: var(--lex-duration-surface);
1095
1287
  --lex-meter-transition-easing: var(--lex-easing-surface);
1288
+ --lex-navigation-menu-radius: var(--lex-radius-surface);
1289
+ --lex-navigation-menu-trigger-background: var(--lex-color-background-surface);
1290
+ --lex-navigation-menu-trigger-foreground: var(--lex-color-text-primary);
1291
+ --lex-navigation-menu-trigger-border-color: var(--lex-border-default);
1292
+ --lex-navigation-menu-trigger-hover-background: var(--lex-color-background-subtle);
1293
+ --lex-navigation-menu-list-gap: var(--lex-space-control-gap-sm);
1294
+ --lex-navigation-menu-list-padding: var(--lex-space-control-y-xs);
1295
+ --lex-navigation-menu-item-foreground: var(--lex-color-text-primary);
1296
+ --lex-navigation-menu-item-highlight-background: var(--lex-color-background-subtle);
1297
+ --lex-navigation-menu-item-highlight-foreground: var(--lex-color-text-primary);
1298
+ --lex-navigation-menu-item-active-background: var(--lex-action-primary-base);
1299
+ --lex-navigation-menu-item-active-foreground: var(--lex-color-text-inverse);
1300
+ --lex-navigation-menu-popup-background: var(--lex-color-background-base);
1301
+ --lex-navigation-menu-popup-foreground: var(--lex-color-text-primary);
1302
+ --lex-navigation-menu-popup-border-color: var(--lex-border-default);
1303
+ --lex-navigation-menu-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
1304
+ --lex-navigation-menu-viewport-max-height: var(--lex-size-overlay-list-max-height);
1305
+ --lex-navigation-menu-focus-ring-color: var(--lex-border-focus);
1306
+ --lex-navigation-menu-focus-ring-offset-color: var(--lex-color-background-base);
1307
+ --lex-navigation-menu-focus-ring-width: var(--lex-outline-width-focus);
1308
+ --lex-navigation-menu-focus-ring-offset: var(--lex-outline-offset-focus);
1309
+ --lex-navigation-menu-transition-duration: var(--lex-duration-control);
1310
+ --lex-navigation-menu-transition-easing: var(--lex-easing-control);
1096
1311
  --lex-number-field-gap: var(--lex-space-control-gap-sm);
1097
1312
  --lex-number-field-foreground: var(--lex-color-text-primary);
1098
1313
  --lex-number-field-background: var(--lex-color-background-base);
@@ -1136,6 +1351,75 @@
1136
1351
  --lex-number-field-scrub-cursor-size: var(--lex-size-selection-indicator-md);
1137
1352
  --lex-number-field-transition-duration: var(--lex-duration-control);
1138
1353
  --lex-number-field-transition-easing: var(--lex-easing-control);
1354
+ --lex-otp-field-gap: var(--lex-space-control-gap-sm);
1355
+ --lex-otp-field-slot-background: var(--lex-color-background-base);
1356
+ --lex-otp-field-slot-foreground: var(--lex-color-text-primary);
1357
+ --lex-otp-field-slot-border-color: var(--lex-border-default);
1358
+ --lex-otp-field-slot-radius: var(--lex-radius-control);
1359
+ --lex-otp-field-slot-height-sm: var(--lex-size-control-sm);
1360
+ --lex-otp-field-slot-height-md: var(--lex-size-control-md);
1361
+ --lex-otp-field-slot-height-lg: var(--lex-size-control-lg);
1362
+ --lex-otp-field-slot-font-family: var(--lex-typography-control-md-font-family);
1363
+ --lex-otp-field-slot-font-size-sm: var(--lex-typography-control-sm-font-size);
1364
+ --lex-otp-field-slot-font-size-md: var(--lex-typography-control-md-font-size);
1365
+ --lex-otp-field-slot-font-size-lg: var(--lex-typography-control-lg-font-size);
1366
+ --lex-otp-field-slot-font-weight: var(--lex-typography-control-md-font-weight);
1367
+ --lex-otp-field-slot-font-line-height: var(--lex-typography-control-md-line-height);
1368
+ --lex-otp-field-slot-font-letter-spacing: var(--lex-typography-control-md-letter-spacing);
1369
+ --lex-otp-field-slot-focus-border-color: var(--lex-border-focus);
1370
+ --lex-otp-field-slot-focus-ring-color: var(--lex-border-focus);
1371
+ --lex-otp-field-slot-focus-ring-offset-color: var(--lex-color-background-base);
1372
+ --lex-otp-field-slot-focus-ring-width: var(--lex-outline-width-focus);
1373
+ --lex-otp-field-slot-focus-ring-offset: var(--lex-outline-offset-focus);
1374
+ --lex-otp-field-slot-filled-border-color: var(--lex-border-focus);
1375
+ --lex-otp-field-separator-foreground: var(--lex-color-text-secondary);
1376
+ --lex-otp-field-separator-font-size: var(--lex-typography-control-md-font-size);
1377
+ --lex-otp-field-separator-font-weight: var(--lex-typography-control-md-font-weight);
1378
+ --lex-otp-field-transition-duration: var(--lex-duration-control);
1379
+ --lex-otp-field-transition-easing: var(--lex-easing-control);
1380
+ --lex-preview-card-backdrop-background: var(--lex-color-text-primary);
1381
+ --lex-preview-card-backdrop-opacity: 0.24;
1382
+ --lex-preview-card-backdrop-z-index: var(--lex-elevation-backdrop-z-index);
1383
+ --lex-preview-card-positioner-z-index: var(--lex-elevation-floating-z-index);
1384
+ --lex-preview-card-positioner-side-offset: var(--lex-space-overlay-side-offset);
1385
+ --lex-preview-card-popup-background: var(--lex-color-background-base);
1386
+ --lex-preview-card-popup-foreground: var(--lex-color-text-primary);
1387
+ --lex-preview-card-popup-border-color: var(--lex-border-default);
1388
+ --lex-preview-card-popup-radius: var(--lex-radius-surface);
1389
+ --lex-preview-card-popup-max-width: var(--lex-size-panel-width-sm);
1390
+ --lex-preview-card-popup-padding: var(--lex-space-surface-md);
1391
+ --lex-preview-card-popup-shadow: var(--lex-elevation-shadow-floating-box-shadow);
1392
+ --lex-preview-card-arrow-size: var(--lex-size-selection-control-sm);
1393
+ --lex-preview-card-trigger-focus-ring-color: var(--lex-border-focus);
1394
+ --lex-preview-card-trigger-focus-ring-offset-color: var(--lex-color-background-base);
1395
+ --lex-preview-card-trigger-focus-ring-width: var(--lex-outline-width-focus);
1396
+ --lex-preview-card-trigger-focus-ring-offset: var(--lex-outline-offset-focus);
1397
+ --lex-preview-card-transition-duration: var(--lex-duration-control);
1398
+ --lex-preview-card-transition-easing: var(--lex-easing-control);
1399
+ --lex-pagination-gap: var(--lex-space-control-gap-sm);
1400
+ --lex-pagination-link-background: var(--lex-color-background-base);
1401
+ --lex-pagination-link-foreground: var(--lex-color-text-primary);
1402
+ --lex-pagination-link-border-color: var(--lex-border-default);
1403
+ --lex-pagination-link-hover-background: var(--lex-color-background-subtle);
1404
+ --lex-pagination-link-active-background: var(--lex-action-primary-base);
1405
+ --lex-pagination-link-active-foreground: var(--lex-color-text-inverse);
1406
+ --lex-pagination-link-radius: var(--lex-radius-control);
1407
+ --lex-pagination-link-height-sm: var(--lex-size-control-sm);
1408
+ --lex-pagination-link-height-md: var(--lex-size-control-md);
1409
+ --lex-pagination-link-padding-x-sm: var(--lex-space-control-x-sm);
1410
+ --lex-pagination-link-padding-x-md: var(--lex-space-control-x-md);
1411
+ --lex-pagination-link-font-size-sm: var(--lex-typography-control-sm-font-size);
1412
+ --lex-pagination-link-font-size-md: var(--lex-typography-control-md-font-size);
1413
+ --lex-pagination-link-font-weight: var(--lex-typography-control-md-font-weight);
1414
+ --lex-pagination-link-font-line-height: var(--lex-typography-control-md-line-height);
1415
+ --lex-pagination-ellipsis-foreground: var(--lex-color-text-secondary);
1416
+ --lex-pagination-ellipsis-size: var(--lex-size-control-sm);
1417
+ --lex-pagination-focus-ring-color: var(--lex-border-focus);
1418
+ --lex-pagination-focus-ring-offset-color: var(--lex-color-background-base);
1419
+ --lex-pagination-focus-ring-width: var(--lex-outline-width-focus);
1420
+ --lex-pagination-focus-ring-offset: var(--lex-outline-offset-focus);
1421
+ --lex-pagination-transition-duration: var(--lex-duration-control);
1422
+ --lex-pagination-transition-easing: var(--lex-easing-control);
1139
1423
  --lex-popover-backdrop-background: var(--lex-color-text-primary);
1140
1424
  --lex-popover-backdrop-opacity: 0.24;
1141
1425
  --lex-popover-backdrop-z-index: var(--lex-elevation-backdrop-z-index);
@@ -1488,6 +1772,55 @@
1488
1772
  --lex-toggle-group-gap-sm: var(--lex-space-control-gap-sm);
1489
1773
  --lex-toggle-group-gap-md: var(--lex-space-control-gap-sm);
1490
1774
  --lex-toggle-group-gap-lg: var(--lex-space-control-gap-md);
1775
+ --lex-toolbar-radius: var(--lex-radius-control);
1776
+ --lex-toolbar-root-gap: var(--lex-space-control-gap-sm);
1777
+ --lex-toolbar-root-background: var(--lex-color-background-subtle);
1778
+ --lex-toolbar-root-foreground: var(--lex-color-text-primary);
1779
+ --lex-toolbar-root-border-color: var(--lex-border-default);
1780
+ --lex-toolbar-root-padding: var(--lex-space-control-x-sm);
1781
+ --lex-toolbar-group-gap: var(--lex-space-control-gap-sm);
1782
+ --lex-toolbar-button-height: var(--lex-size-control-sm);
1783
+ --lex-toolbar-button-radius: var(--lex-radius-control);
1784
+ --lex-toolbar-button-padding-x: var(--lex-space-control-x-sm);
1785
+ --lex-toolbar-button-foreground: var(--lex-color-text-primary);
1786
+ --lex-toolbar-button-hover-background: var(--lex-color-background-surface);
1787
+ --lex-toolbar-button-font-size: var(--lex-typography-control-sm-font-size);
1788
+ --lex-toolbar-button-font-weight: var(--lex-typography-control-md-font-weight);
1789
+ --lex-toolbar-button-font-line-height: var(--lex-typography-control-sm-line-height);
1790
+ --lex-toolbar-button-focus-ring-color: var(--lex-border-focus);
1791
+ --lex-toolbar-button-focus-ring-offset-color: var(--lex-color-background-base);
1792
+ --lex-toolbar-button-focus-ring-width: var(--lex-outline-width-focus);
1793
+ --lex-toolbar-button-focus-ring-offset: var(--lex-outline-offset-focus);
1794
+ --lex-toolbar-link-height: var(--lex-size-control-sm);
1795
+ --lex-toolbar-link-radius: var(--lex-radius-control);
1796
+ --lex-toolbar-link-padding-x: var(--lex-space-control-x-sm);
1797
+ --lex-toolbar-link-foreground: var(--lex-color-text-primary);
1798
+ --lex-toolbar-link-hover-background: var(--lex-color-background-surface);
1799
+ --lex-toolbar-link-font-size: var(--lex-typography-control-sm-font-size);
1800
+ --lex-toolbar-link-font-weight: var(--lex-typography-control-md-font-weight);
1801
+ --lex-toolbar-link-font-line-height: var(--lex-typography-control-sm-line-height);
1802
+ --lex-toolbar-link-focus-ring-color: var(--lex-border-focus);
1803
+ --lex-toolbar-link-focus-ring-offset-color: var(--lex-color-background-base);
1804
+ --lex-toolbar-link-focus-ring-width: var(--lex-outline-width-focus);
1805
+ --lex-toolbar-link-focus-ring-offset: var(--lex-outline-offset-focus);
1806
+ --lex-toolbar-input-height: var(--lex-size-control-sm);
1807
+ --lex-toolbar-input-radius: var(--lex-radius-control);
1808
+ --lex-toolbar-input-padding-x: var(--lex-space-control-x-sm);
1809
+ --lex-toolbar-input-background: var(--lex-color-background-base);
1810
+ --lex-toolbar-input-foreground: var(--lex-color-text-primary);
1811
+ --lex-toolbar-input-placeholder-color: var(--lex-color-text-secondary);
1812
+ --lex-toolbar-input-border-color: var(--lex-border-default);
1813
+ --lex-toolbar-input-font-family: var(--lex-typography-control-md-font-family);
1814
+ --lex-toolbar-input-font-size: var(--lex-typography-control-sm-font-size);
1815
+ --lex-toolbar-input-font-weight: var(--lex-typography-control-md-font-weight);
1816
+ --lex-toolbar-input-font-line-height: var(--lex-typography-control-sm-line-height);
1817
+ --lex-toolbar-input-focus-border-color: var(--lex-border-focus);
1818
+ --lex-toolbar-input-focus-ring-color: var(--lex-border-focus);
1819
+ --lex-toolbar-input-focus-ring-offset-color: var(--lex-color-background-base);
1820
+ --lex-toolbar-input-focus-ring-width: var(--lex-outline-width-focus);
1821
+ --lex-toolbar-input-focus-ring-offset: var(--lex-outline-offset-focus);
1822
+ --lex-toolbar-transition-duration: var(--lex-duration-control);
1823
+ --lex-toolbar-transition-easing: var(--lex-easing-control);
1491
1824
  --lex-tooltip-positioner-z-index: var(--lex-elevation-tooltip-z-index);
1492
1825
  --lex-tooltip-positioner-side-offset: var(--lex-space-overlay-side-offset);
1493
1826
  --lex-tooltip-background: var(--lex-color-text-primary);
@@ -0,0 +1,198 @@
1
+ /**
2
+ * SettingsPageLayout.tsx
3
+ *
4
+ * Reference SettingsPageLayout template — settings page shell with header and panels.
5
+ */
6
+
7
+ import { PageHeader } from "@/components/blocks/PageHeader"
8
+ import {
9
+ SettingsPanel,
10
+ SettingsPanelContent,
11
+ SettingsPanelDescription,
12
+ SettingsPanelFooter,
13
+ SettingsPanelHeader,
14
+ SettingsPanelTitle,
15
+ } from "@/components/blocks/SettingsPanel"
16
+ import type {
17
+ SettingsPageLayoutBodyProps,
18
+ SettingsPageLayoutHeaderProps,
19
+ SettingsPageLayoutMainProps,
20
+ SettingsPageLayoutNavProps,
21
+ SettingsPageLayoutPanelContentProps,
22
+ SettingsPageLayoutPanelDescriptionProps,
23
+ SettingsPageLayoutPanelFooterProps,
24
+ SettingsPageLayoutPanelHeaderProps,
25
+ SettingsPageLayoutPanelProps,
26
+ SettingsPageLayoutPanelTitleProps,
27
+ SettingsPageLayoutProps,
28
+ } from "./SettingsPageLayout.types"
29
+ import {
30
+ settingsPageLayoutBodyClasses,
31
+ settingsPageLayoutClasses,
32
+ settingsPageLayoutHeaderClasses,
33
+ settingsPageLayoutMainClasses,
34
+ settingsPageLayoutNavClasses,
35
+ settingsPageLayoutPanelClasses,
36
+ } from "./SettingsPageLayout.variants"
37
+ import { cn } from "@/lib/utils"
38
+
39
+ const SettingsPageLayout = ({
40
+ ref,
41
+ className,
42
+ ...props
43
+ }: SettingsPageLayoutProps) => {
44
+ return (
45
+ <div
46
+ ref={ref}
47
+ className={cn(settingsPageLayoutClasses(), className)}
48
+ {...props}
49
+ />
50
+ )
51
+ }
52
+
53
+ SettingsPageLayout.displayName = "SettingsPageLayout"
54
+
55
+ const SettingsPageLayoutHeader = ({
56
+ ref,
57
+ className,
58
+ ...props
59
+ }: SettingsPageLayoutHeaderProps) => {
60
+ return (
61
+ <PageHeader
62
+ ref={ref}
63
+ className={cn(settingsPageLayoutHeaderClasses(), className)}
64
+ {...props}
65
+ />
66
+ )
67
+ }
68
+
69
+ SettingsPageLayoutHeader.displayName = "SettingsPageLayoutHeader"
70
+
71
+ const SettingsPageLayoutBody = ({
72
+ ref,
73
+ className,
74
+ ...props
75
+ }: SettingsPageLayoutBodyProps) => {
76
+ return (
77
+ <div
78
+ ref={ref}
79
+ className={cn(settingsPageLayoutBodyClasses(), className)}
80
+ {...props}
81
+ />
82
+ )
83
+ }
84
+
85
+ SettingsPageLayoutBody.displayName = "SettingsPageLayoutBody"
86
+
87
+ const SettingsPageLayoutNav = ({
88
+ ref,
89
+ className,
90
+ ...props
91
+ }: SettingsPageLayoutNavProps) => {
92
+ return (
93
+ <aside
94
+ ref={ref}
95
+ className={cn(settingsPageLayoutNavClasses(), className)}
96
+ {...props}
97
+ />
98
+ )
99
+ }
100
+
101
+ SettingsPageLayoutNav.displayName = "SettingsPageLayoutNav"
102
+
103
+ const SettingsPageLayoutMain = ({
104
+ ref,
105
+ className,
106
+ ...props
107
+ }: SettingsPageLayoutMainProps) => {
108
+ return (
109
+ <main
110
+ ref={ref}
111
+ className={cn(settingsPageLayoutMainClasses(), className)}
112
+ {...props}
113
+ />
114
+ )
115
+ }
116
+
117
+ SettingsPageLayoutMain.displayName = "SettingsPageLayoutMain"
118
+
119
+ const SettingsPageLayoutPanel = ({
120
+ ref,
121
+ className,
122
+ ...props
123
+ }: SettingsPageLayoutPanelProps) => {
124
+ return (
125
+ <SettingsPanel
126
+ ref={ref}
127
+ className={cn(settingsPageLayoutPanelClasses(), className)}
128
+ {...props}
129
+ />
130
+ )
131
+ }
132
+
133
+ SettingsPageLayoutPanel.displayName = "SettingsPageLayoutPanel"
134
+
135
+ const SettingsPageLayoutPanelHeader = ({
136
+ ref,
137
+ className,
138
+ ...props
139
+ }: SettingsPageLayoutPanelHeaderProps) => {
140
+ return <SettingsPanelHeader ref={ref} className={className} {...props} />
141
+ }
142
+
143
+ SettingsPageLayoutPanelHeader.displayName = "SettingsPageLayoutPanelHeader"
144
+
145
+ const SettingsPageLayoutPanelTitle = ({
146
+ ref,
147
+ className,
148
+ ...props
149
+ }: SettingsPageLayoutPanelTitleProps) => {
150
+ return <SettingsPanelTitle ref={ref} className={className} {...props} />
151
+ }
152
+
153
+ SettingsPageLayoutPanelTitle.displayName = "SettingsPageLayoutPanelTitle"
154
+
155
+ const SettingsPageLayoutPanelDescription = ({
156
+ ref,
157
+ className,
158
+ ...props
159
+ }: SettingsPageLayoutPanelDescriptionProps) => {
160
+ return <SettingsPanelDescription ref={ref} className={className} {...props} />
161
+ }
162
+
163
+ SettingsPageLayoutPanelDescription.displayName =
164
+ "SettingsPageLayoutPanelDescription"
165
+
166
+ const SettingsPageLayoutPanelContent = ({
167
+ ref,
168
+ className,
169
+ ...props
170
+ }: SettingsPageLayoutPanelContentProps) => {
171
+ return <SettingsPanelContent ref={ref} className={className} {...props} />
172
+ }
173
+
174
+ SettingsPageLayoutPanelContent.displayName = "SettingsPageLayoutPanelContent"
175
+
176
+ const SettingsPageLayoutPanelFooter = ({
177
+ ref,
178
+ className,
179
+ ...props
180
+ }: SettingsPageLayoutPanelFooterProps) => {
181
+ return <SettingsPanelFooter ref={ref} className={className} {...props} />
182
+ }
183
+
184
+ SettingsPageLayoutPanelFooter.displayName = "SettingsPageLayoutPanelFooter"
185
+
186
+ export {
187
+ SettingsPageLayout,
188
+ SettingsPageLayoutHeader,
189
+ SettingsPageLayoutBody,
190
+ SettingsPageLayoutNav,
191
+ SettingsPageLayoutMain,
192
+ SettingsPageLayoutPanel,
193
+ SettingsPageLayoutPanelHeader,
194
+ SettingsPageLayoutPanelTitle,
195
+ SettingsPageLayoutPanelDescription,
196
+ SettingsPageLayoutPanelContent,
197
+ SettingsPageLayoutPanelFooter,
198
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * SettingsPageLayout.types.ts
3
+ *
4
+ * Public types for the SettingsPageLayout template.
5
+ */
6
+
7
+ import type { HTMLAttributes, ReactNode, Ref } from "react"
8
+ import type { PageHeaderProps } from "@/components/blocks/PageHeader"
9
+ import type {
10
+ SettingsPanelContentProps,
11
+ SettingsPanelDescriptionProps,
12
+ SettingsPanelFooterProps,
13
+ SettingsPanelHeaderProps,
14
+ SettingsPanelProps,
15
+ SettingsPanelTitleProps,
16
+ } from "@/components/blocks/SettingsPanel"
17
+
18
+ export interface SettingsPageLayoutProps extends HTMLAttributes<HTMLDivElement> {
19
+ ref?: Ref<HTMLDivElement>
20
+ className?: string
21
+ children?: ReactNode
22
+ }
23
+
24
+ export type SettingsPageLayoutHeaderProps = PageHeaderProps
25
+
26
+ export interface SettingsPageLayoutBodyProps extends HTMLAttributes<HTMLDivElement> {
27
+ ref?: Ref<HTMLDivElement>
28
+ className?: string
29
+ children?: ReactNode
30
+ }
31
+
32
+ export interface SettingsPageLayoutNavProps extends HTMLAttributes<HTMLDivElement> {
33
+ ref?: Ref<HTMLDivElement>
34
+ className?: string
35
+ children?: ReactNode
36
+ }
37
+
38
+ export interface SettingsPageLayoutMainProps extends HTMLAttributes<HTMLDivElement> {
39
+ ref?: Ref<HTMLDivElement>
40
+ className?: string
41
+ children?: ReactNode
42
+ }
43
+
44
+ export type SettingsPageLayoutPanelProps = SettingsPanelProps
45
+
46
+ export type SettingsPageLayoutPanelHeaderProps = SettingsPanelHeaderProps
47
+
48
+ export type SettingsPageLayoutPanelTitleProps = SettingsPanelTitleProps
49
+
50
+ export type SettingsPageLayoutPanelDescriptionProps =
51
+ SettingsPanelDescriptionProps
52
+
53
+ export type SettingsPageLayoutPanelContentProps = SettingsPanelContentProps
54
+
55
+ export type SettingsPageLayoutPanelFooterProps = SettingsPanelFooterProps