@kushagradhawan/kookie-ui 0.1.26 → 0.1.28
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.
- package/components.css +183 -44
- package/dist/cjs/components/grid.props.d.ts +36 -0
- package/dist/cjs/components/grid.props.d.ts.map +1 -1
- package/dist/cjs/components/grid.props.js +1 -1
- package/dist/cjs/components/grid.props.js.map +3 -3
- package/dist/cjs/components/scroll-area.js.map +1 -1
- package/dist/cjs/components/sidebar.d.ts +1 -1
- package/dist/cjs/components/sidebar.d.ts.map +1 -1
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +2 -2
- package/dist/cjs/components/sidebar.props.d.ts +2 -2
- package/dist/cjs/components/sidebar.props.js +1 -1
- package/dist/cjs/components/sidebar.props.js.map +2 -2
- package/dist/cjs/props/layout.props.d.ts +34 -0
- package/dist/cjs/props/layout.props.d.ts.map +1 -1
- package/dist/cjs/props/layout.props.js +1 -1
- package/dist/cjs/props/layout.props.js.map +3 -3
- package/dist/esm/components/grid.props.d.ts +36 -0
- package/dist/esm/components/grid.props.d.ts.map +1 -1
- package/dist/esm/components/grid.props.js +1 -1
- package/dist/esm/components/grid.props.js.map +3 -3
- package/dist/esm/components/scroll-area.js.map +1 -1
- package/dist/esm/components/sidebar.d.ts +1 -1
- package/dist/esm/components/sidebar.d.ts.map +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/sidebar.js.map +2 -2
- package/dist/esm/components/sidebar.props.d.ts +2 -2
- package/dist/esm/components/sidebar.props.js +1 -1
- package/dist/esm/components/sidebar.props.js.map +2 -2
- package/dist/esm/props/layout.props.d.ts +34 -0
- package/dist/esm/props/layout.props.d.ts.map +1 -1
- package/dist/esm/props/layout.props.js +1 -1
- package/dist/esm/props/layout.props.js.map +3 -3
- package/layout/utilities.css +366 -12
- package/layout.css +366 -12
- package/package.json +1 -1
- package/src/components/grid.props.tsx +58 -0
- package/src/components/scroll-area.tsx +2 -2
- package/src/components/sidebar.css +260 -66
- package/src/components/sidebar.props.tsx +2 -2
- package/src/components/sidebar.tsx +2 -2
- package/src/props/layout.props.ts +38 -0
- package/src/styles/tokens/radius.css +1 -1
- package/src/styles/utilities/align-content.css +33 -0
- package/src/styles/utilities/align-self.css +2 -2
- package/src/styles/utilities/justify-items.css +21 -0
- package/src/styles/utilities/justify-self.css +21 -0
- package/src/styles/utilities/layout.css +3 -0
- package/styles.css +550 -57
- package/tokens/base.css +1 -1
- package/tokens.css +1 -1
- package/utilities.css +366 -12
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
flex: 1;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
.rt-SidebarContainer:where(.rt-variant-
|
|
78
|
+
.rt-SidebarContainer:where(.rt-variant-outline) {
|
|
79
79
|
background-color: var(--color-panel);
|
|
80
80
|
backdrop-filter: var(--backdrop-filter-panel);
|
|
81
81
|
|
|
@@ -303,7 +303,7 @@
|
|
|
303
303
|
border: none;
|
|
304
304
|
width: 100%;
|
|
305
305
|
text-align: left;
|
|
306
|
-
border
|
|
306
|
+
/* No default border radius - inherited from size-specific rules */
|
|
307
307
|
|
|
308
308
|
/* Transitions - inherit from base menu */
|
|
309
309
|
transition: var(--transition-menu);
|
|
@@ -580,9 +580,6 @@
|
|
|
580
580
|
}
|
|
581
581
|
}
|
|
582
582
|
|
|
583
|
-
.rt-SidebarGroupContent {
|
|
584
|
-
/* No styling - purely semantic container */
|
|
585
|
-
}
|
|
586
583
|
|
|
587
584
|
/***************************************************************************************************
|
|
588
585
|
* *
|
|
@@ -627,6 +624,7 @@
|
|
|
627
624
|
line-height: var(--line-height-1);
|
|
628
625
|
letter-spacing: var(--letter-spacing-1);
|
|
629
626
|
border-radius: var(--radius-1);
|
|
627
|
+
font-weight: var(--font-weight-medium); /* Add this line */
|
|
630
628
|
|
|
631
629
|
/* stylelint-disable-next-line selector-max-type */
|
|
632
630
|
& :where(svg) {
|
|
@@ -652,6 +650,8 @@
|
|
|
652
650
|
line-height: var(--line-height-2);
|
|
653
651
|
letter-spacing: var(--letter-spacing-2);
|
|
654
652
|
border-radius: var(--radius-2);
|
|
653
|
+
font-weight: var(--font-weight-medium); /* Add this line */
|
|
654
|
+
|
|
655
655
|
|
|
656
656
|
/* stylelint-disable-next-line selector-max-type */
|
|
657
657
|
& :where(svg) {
|
|
@@ -710,15 +710,65 @@
|
|
|
710
710
|
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
711
711
|
}
|
|
712
712
|
}
|
|
713
|
-
|
|
713
|
+
&:where(.rt-variant-surface) {
|
|
714
|
+
/* Base state: neutral gray background (maintains sidebar neutrality) */
|
|
715
|
+
background-color: var(--gray-1);
|
|
716
|
+
|
|
717
|
+
/* Theme-level translucent override */
|
|
718
|
+
:where([data-panel-background='translucent']) & {
|
|
719
|
+
background-color: var(--gray-a1);
|
|
720
|
+
backdrop-filter: var(--backdrop-filter-panel);
|
|
721
|
+
}
|
|
714
722
|
|
|
715
|
-
/*
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
723
|
+
/* Component-level overrides (higher specificity) */
|
|
724
|
+
&:where([data-panel-background='solid']) {
|
|
725
|
+
background-color: var(--gray-1);
|
|
726
|
+
backdrop-filter: none;
|
|
727
|
+
--backdrop-filter-panel: none;
|
|
728
|
+
--backdrop-filter-components: none;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
&:where([data-panel-background='translucent']) {
|
|
732
|
+
background-color: var(--gray-a1);
|
|
733
|
+
backdrop-filter: var(--backdrop-filter-panel);
|
|
734
|
+
--backdrop-filter-panel: blur(var(--backdrop-blur-panel));
|
|
735
|
+
--backdrop-filter-components: blur(var(--backdrop-blur-components));
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
/* Inset border like Card surface variant */
|
|
739
|
+
/* Floating sidebars get full inset border */
|
|
740
|
+
:where(.rt-SidebarRoot[data-type="floating"]) & {
|
|
741
|
+
box-shadow: inset 0 0 0 1px var(--gray-6);
|
|
742
|
+
|
|
743
|
+
/* Theme-level translucent override */
|
|
744
|
+
:where([data-panel-background='translucent']) & {
|
|
745
|
+
box-shadow: inset 0 0 0 1px var(--gray-a6);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/* Non-floating sidebars get border only on the content-facing side */
|
|
750
|
+
:where(.rt-SidebarRoot[data-type="sidebar"][data-side="left"]) & {
|
|
751
|
+
box-shadow: inset -1px 0 0 0 var(--gray-6);
|
|
752
|
+
|
|
753
|
+
/* Theme-level translucent override */
|
|
754
|
+
:where([data-panel-background='translucent']) & {
|
|
755
|
+
box-shadow: inset -1px 0 0 0 var(--gray-a6);
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
:where(.rt-SidebarRoot[data-type="sidebar"][data-side="right"]) & {
|
|
760
|
+
box-shadow: inset 1px 0 0 0 var(--gray-6);
|
|
761
|
+
|
|
762
|
+
/* Theme-level translucent override */
|
|
763
|
+
:where([data-panel-background='translucent']) & {
|
|
764
|
+
box-shadow: inset 1px 0 0 0 var(--gray-a6);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
719
767
|
}
|
|
720
768
|
}
|
|
721
769
|
|
|
770
|
+
/* Ghost variant should have no shadows or background - it's truly transparent */
|
|
771
|
+
|
|
722
772
|
/* Menu Button Variants - Independent of Container */
|
|
723
773
|
|
|
724
774
|
/* Menu Variant: Solid - EXACT match to base menu */
|
|
@@ -975,75 +1025,233 @@
|
|
|
975
1025
|
}
|
|
976
1026
|
}
|
|
977
1027
|
|
|
978
|
-
/*
|
|
1028
|
+
/* Add balanced spacing for sidebar menu items while preserving base menu border radius */
|
|
979
1029
|
.rt-SidebarContent :where(.rt-BaseMenuItem) {
|
|
980
|
-
|
|
981
|
-
margin-bottom: var(--space-1);
|
|
1030
|
+
margin-top: calc(var(--space-1) / 2);
|
|
1031
|
+
margin-bottom: calc(var(--space-1) / 2);
|
|
982
1032
|
}
|
|
983
1033
|
|
|
984
|
-
/* Collapsible behavior -
|
|
1034
|
+
/* Collapsible behavior - ICON-ONLY MODE APPROACH */
|
|
985
1035
|
.rt-SidebarRoot:where([data-collapsible="icon"]) {
|
|
986
1036
|
/* No transitions - instant state changes for better UX */
|
|
987
1037
|
transition: none;
|
|
988
|
-
overflow:
|
|
1038
|
+
overflow: visible; /* Allow content to be visible */
|
|
989
1039
|
flex-shrink: 0; /* Don't let flex container shrink this */
|
|
990
1040
|
}
|
|
991
1041
|
|
|
992
|
-
/*
|
|
993
|
-
|
|
994
|
-
|
|
1042
|
+
/* Icon-only width - size-specific space tokens */
|
|
1043
|
+
:where(.radix-themes) {
|
|
1044
|
+
--sidebar-icon-width-1: calc(var(--space-9) + var(--space-1)); /* Size 1: 36px */
|
|
1045
|
+
--sidebar-icon-width-2: calc(var(--space-9) + var(--space-3)); /* Size 2: 76px */
|
|
995
1046
|
}
|
|
996
1047
|
|
|
997
|
-
/*
|
|
1048
|
+
/* Icon-only collapsed state - show narrow sidebar with icons only */
|
|
998
1049
|
.rt-SidebarRoot:where([data-collapsible="icon"][data-state="collapsed"]) {
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1050
|
+
opacity: 1; /* Keep visible */
|
|
1051
|
+
pointer-events: auto; /* Keep interactive */
|
|
1052
|
+
|
|
1053
|
+
/* Size-specific widths */
|
|
1054
|
+
&:where(.rt-r-size-1) {
|
|
1055
|
+
width: var(--sidebar-icon-width-1);
|
|
1056
|
+
min-width: var(--sidebar-icon-width-1);
|
|
1057
|
+
}
|
|
1058
|
+
|
|
1059
|
+
&:where(.rt-r-size-2) {
|
|
1060
|
+
width: var(--sidebar-icon-width-2);
|
|
1061
|
+
min-width: var(--sidebar-icon-width-2);
|
|
1062
|
+
}
|
|
1004
1063
|
}
|
|
1005
1064
|
|
|
1006
|
-
/* Expanded state */
|
|
1065
|
+
/* Expanded state - full width */
|
|
1007
1066
|
.rt-SidebarRoot:where([data-collapsible="icon"][data-state="expanded"]) {
|
|
1008
1067
|
width: var(--sidebar-width);
|
|
1009
|
-
min-width: var(--sidebar-width);
|
|
1068
|
+
min-width: var(--sidebar-width);
|
|
1010
1069
|
opacity: 1;
|
|
1011
1070
|
pointer-events: auto;
|
|
1012
1071
|
}
|
|
1013
1072
|
|
|
1014
|
-
/* Container
|
|
1073
|
+
/* Container sizing for icon mode */
|
|
1074
|
+
.rt-SidebarContainer:where([data-collapsible="icon"]) {
|
|
1075
|
+
/* Allow dynamic width based on state */
|
|
1076
|
+
width: 100%;
|
|
1077
|
+
min-width: 0;
|
|
1078
|
+
flex-shrink: 0;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
/* Content adjustments for icon mode */
|
|
1082
|
+
.rt-SidebarContent:where([data-collapsible="icon"]) {
|
|
1083
|
+
/* Allow content to shrink in icon mode */
|
|
1084
|
+
width: 100%;
|
|
1085
|
+
min-width: 0;
|
|
1086
|
+
flex-shrink: 0;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
/* Hide text content in collapsed icon mode */
|
|
1015
1090
|
.rt-SidebarRoot:where([data-collapsible="icon"][data-state="collapsed"]) {
|
|
1016
|
-
/*
|
|
1017
|
-
|
|
1018
|
-
|
|
1091
|
+
/* Style menu buttons for icon-only mode */
|
|
1092
|
+
& :where(.rt-SidebarMenuButton) {
|
|
1093
|
+
justify-content: center;
|
|
1094
|
+
flex-direction: column;
|
|
1095
|
+
padding: var(--space-2) var(--space-1);
|
|
1096
|
+
gap: var(--space-1);
|
|
1097
|
+
min-height: auto;
|
|
1098
|
+
|
|
1099
|
+
/* Show text spans as small labels under icons */
|
|
1100
|
+
/* stylelint-disable-next-line selector-max-type */
|
|
1101
|
+
& :where(span) {
|
|
1102
|
+
display: block;
|
|
1103
|
+
font-size: var(--font-size-0);
|
|
1104
|
+
line-height: var(--line-height-0);
|
|
1105
|
+
color: var(--gray-a10);
|
|
1106
|
+
text-align: center;
|
|
1107
|
+
font-weight: var(--font-weight-medium);
|
|
1108
|
+
max-width: 100%;
|
|
1109
|
+
overflow: hidden;
|
|
1110
|
+
text-overflow: ellipsis;
|
|
1111
|
+
white-space: nowrap;
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
/* ------------------------------------------------------------------------------------------ */
|
|
1116
|
+
/* Dynamic width calculation for labels inside collapsed icon sidebar */
|
|
1117
|
+
/* ------------------------------------------------------------------------------------------ */
|
|
1118
|
+
|
|
1119
|
+
/* Compute usable label width based on sidebar icon width minus menu and item paddings */
|
|
1120
|
+
&:where(.rt-r-size-1) {
|
|
1121
|
+
/* Group labels (no button padding) */
|
|
1122
|
+
--sidebar-group-label-width: calc(var(--sidebar-icon-width-1) - (var(--space-2) * 2));
|
|
1123
|
+
/* Button labels (inside menu buttons, subtract button padding) */
|
|
1124
|
+
--sidebar-button-label-width: calc(var(--sidebar-group-label-width) - (var(--space-1) * 2));
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
&:where(.rt-r-size-2) {
|
|
1128
|
+
--sidebar-group-label-width: calc(var(--sidebar-icon-width-2) - (var(--space-2) * 2));
|
|
1129
|
+
--sidebar-button-label-width: calc(var(--sidebar-group-label-width) - (var(--space-1) * 2));
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
/* Apply the computed width to both group labels and the spans inside icon buttons */
|
|
1133
|
+
& :where(.rt-SidebarGroupLabel) {
|
|
1134
|
+
max-width: var(--sidebar-group-label-width);
|
|
1135
|
+
}
|
|
1136
|
+
|
|
1137
|
+
/* stylelint-disable-next-line selector-max-type */
|
|
1138
|
+
& :where(.rt-SidebarMenuButton span) {
|
|
1139
|
+
max-width: var(--sidebar-button-label-width);
|
|
1140
|
+
min-width: 0; /* allow shrinking */
|
|
1141
|
+
overflow: hidden;
|
|
1142
|
+
text-overflow: ellipsis;
|
|
1143
|
+
white-space: nowrap;
|
|
1144
|
+
color: var(--gray-a12);
|
|
1145
|
+
font-weight: var(--font-weight-medium);
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
/* stylelint-disable selector-max-type, selector-max-specificity */
|
|
1149
|
+
&.rt-menu-variant-solid :where(.rt-SidebarMenuButton[data-highlighted] span),
|
|
1150
|
+
&.rt-menu-variant-solid :where(.rt-SidebarMenuButton[data-active] span) {
|
|
1151
|
+
color: var(--accent-contrast) !important;
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
/* stylelint-enable selector-max-type, selector-max-specificity */
|
|
1155
|
+
|
|
1156
|
+
/* Size-specific overrides no longer needed – allow full width */
|
|
1157
|
+
/* The general label/span rules below already handle ellipsis and overflow */
|
|
1158
|
+
|
|
1159
|
+
/* Show group labels as small text instead of separators */
|
|
1160
|
+
:where(.rt-SidebarGroupLabel) {
|
|
1161
|
+
/* Use block display to make text-overflow ellipsis work reliably */
|
|
1162
|
+
display: block;
|
|
1163
|
+
text-align: center;
|
|
1164
|
+
min-width: 0;
|
|
1165
|
+
min-height: auto; /* Remove inherited min-height constraint */
|
|
1166
|
+
max-width: var(--sidebar-group-label-width);
|
|
1167
|
+
font-size: var(--font-size-0);
|
|
1168
|
+
line-height: var(--line-height-0);
|
|
1169
|
+
color: var(--gray-a9);
|
|
1170
|
+
font-weight: var(--font-weight-medium);
|
|
1171
|
+
padding: var(--space-1) var(--space-1);
|
|
1172
|
+
margin: var(--space-2) 0 var(--space-1) 0;
|
|
1173
|
+
overflow: hidden;
|
|
1174
|
+
text-overflow: ellipsis;
|
|
1175
|
+
white-space: nowrap;
|
|
1176
|
+
|
|
1177
|
+
/* Hide label for the first group if you prefer */
|
|
1178
|
+
:where(.rt-SidebarGroup:first-child) & {
|
|
1179
|
+
margin-top: 0;
|
|
1180
|
+
}
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
/* Hide badges and shortcuts */
|
|
1184
|
+
:where(.rt-SidebarMenuBadge),
|
|
1185
|
+
:where(.rt-SidebarMenuShortcut) {
|
|
1186
|
+
display: none;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
/* Keep sub-menu trigger icons hidden in icon mode, but preserve accordion functionality */
|
|
1190
|
+
:where(.rt-SidebarMenuSubTriggerIcon) {
|
|
1191
|
+
display: none;
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
/* Remove nested styling from sub-menu list to make items look like top-level */
|
|
1195
|
+
:where(.rt-SidebarMenuSubList) {
|
|
1196
|
+
padding-left: 0; /* Remove indentation */
|
|
1197
|
+
border-left: none; /* Remove border */
|
|
1198
|
+
margin-left: 0; /* Remove margin */
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
/* Tighter menu padding for icon-only mode */
|
|
1202
|
+
:where(.rt-SidebarMenu) {
|
|
1203
|
+
padding: var(--space-2);
|
|
1204
|
+
}
|
|
1019
1205
|
}
|
|
1020
1206
|
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1207
|
+
/* Icon size remapping for collapsed state - make icons more prominent */
|
|
1208
|
+
.rt-SidebarRoot:where([data-collapsible="icon"][data-state="collapsed"]) {
|
|
1209
|
+
/* Size 1 → use much larger icons (size 3 equivalent) */
|
|
1210
|
+
&:where(.rt-r-size-1) {
|
|
1211
|
+
/* stylelint-disable-next-line selector-max-type */
|
|
1212
|
+
& :where(.rt-SidebarMenuButton svg) {
|
|
1213
|
+
width: var(--content-icon-size-2) !important; /* ~19px instead of ~14px */
|
|
1214
|
+
height: var(--content-icon-size-2) !important;
|
|
1215
|
+
color: currentColor !important; /* Ensure icon color is visible */
|
|
1216
|
+
}
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
/* Size 2 → use largest icons (size 4 equivalent) */
|
|
1220
|
+
&:where(.rt-r-size-2) {
|
|
1221
|
+
/* stylelint-disable-next-line selector-max-type */
|
|
1222
|
+
& :where(.rt-SidebarMenuButton svg) {
|
|
1223
|
+
width: var(--content-icon-size-3) !important; /* 20px instead of 16px */
|
|
1224
|
+
height: var(--content-icon-size-3) !important;
|
|
1225
|
+
color: currentColor !important; /* Ensure icon color is visible */
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1024
1228
|
}
|
|
1025
1229
|
|
|
1026
|
-
/* Floating sidebars
|
|
1230
|
+
/* Floating sidebars in icon mode */
|
|
1027
1231
|
.rt-SidebarRoot:where([data-collapsible="icon"][data-type="floating"]) {
|
|
1028
1232
|
/* Same instant approach */
|
|
1029
1233
|
transition: none;
|
|
1030
|
-
overflow:
|
|
1234
|
+
overflow: visible; /* Allow content to be visible outside container */
|
|
1031
1235
|
flex-shrink: 0;
|
|
1032
1236
|
}
|
|
1033
1237
|
|
|
1034
|
-
/*
|
|
1035
|
-
.rt-SidebarRoot:where([data-collapsible="icon"][data-type="floating"]
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1238
|
+
/* Floating collapsed state */
|
|
1239
|
+
.rt-SidebarRoot:where([data-collapsible="icon"][data-type="floating"][data-state="collapsed"]) {
|
|
1240
|
+
opacity: 1;
|
|
1241
|
+
pointer-events: auto;
|
|
1242
|
+
/* Keep floating margins but adjust for smaller width */
|
|
1243
|
+
margin: var(--space-2);
|
|
1244
|
+
|
|
1245
|
+
/* Size-specific widths */
|
|
1246
|
+
&:where(.rt-r-size-1) {
|
|
1247
|
+
width: var(--sidebar-icon-width-1);
|
|
1248
|
+
min-width: var(--sidebar-icon-width-1);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
&:where(.rt-r-size-2) {
|
|
1252
|
+
width: var(--sidebar-icon-width-2);
|
|
1253
|
+
min-width: var(--sidebar-icon-width-2);
|
|
1254
|
+
}
|
|
1047
1255
|
}
|
|
1048
1256
|
|
|
1049
1257
|
.rt-SidebarRoot:where([data-collapsible="icon"][data-type="floating"][data-state="expanded"]) {
|
|
@@ -1053,31 +1261,17 @@
|
|
|
1053
1261
|
pointer-events: auto;
|
|
1054
1262
|
/* Restore floating margins */
|
|
1055
1263
|
margin: var(--space-2);
|
|
1056
|
-
/* Remove the width override - let margin work naturally */
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
/* Content protection - prevent internal reflow */
|
|
1060
|
-
.rt-SidebarContainer:where([data-collapsible="icon"]) {
|
|
1061
|
-
/* Lock the content size to prevent internal shifting */
|
|
1062
|
-
width: var(--sidebar-width);
|
|
1063
|
-
min-width: var(--sidebar-width);
|
|
1064
|
-
flex-shrink: 0;
|
|
1065
1264
|
}
|
|
1066
1265
|
|
|
1067
|
-
|
|
1068
|
-
/* Prevent content from reflowing */
|
|
1069
|
-
width: 100%;
|
|
1070
|
-
min-width: var(--sidebar-width);
|
|
1071
|
-
flex-shrink: 0;
|
|
1072
|
-
}
|
|
1266
|
+
/* Ghost sidebars have no shadows or background, so no special overflow handling needed */
|
|
1073
1267
|
|
|
1074
|
-
/* Mobile responsive behavior - hide completely */
|
|
1268
|
+
/* Mobile responsive behavior - hide completely on mobile regardless of icon mode */
|
|
1075
1269
|
@media (max-width: 768px) {
|
|
1076
|
-
.rt-SidebarRoot {
|
|
1270
|
+
.rt-SidebarRoot:where([data-collapsible="icon"]) {
|
|
1077
1271
|
display: none;
|
|
1078
1272
|
}
|
|
1079
1273
|
|
|
1080
|
-
.rt-SidebarRoot:where([data-state="expanded"]) {
|
|
1274
|
+
.rt-SidebarRoot:where([data-collapsible="icon"][data-state="expanded"]) {
|
|
1081
1275
|
display: flex;
|
|
1082
1276
|
position: fixed;
|
|
1083
1277
|
top: 0;
|
|
@@ -14,7 +14,7 @@ export {
|
|
|
14
14
|
|
|
15
15
|
// Sidebar container props
|
|
16
16
|
const sizes = ['1', '2'] as const;
|
|
17
|
-
const variants = ['soft', 'surface', 'ghost'] as const;
|
|
17
|
+
const variants = ['soft', 'outline', 'surface', 'ghost'] as const;
|
|
18
18
|
const menuVariants = ['solid', 'soft'] as const;
|
|
19
19
|
const types = ['sidebar', 'floating'] as const;
|
|
20
20
|
const sides = ['left', 'right'] as const;
|
|
@@ -23,7 +23,7 @@ const collapsibleModes = ['offcanvas', 'icon', 'none'] as const;
|
|
|
23
23
|
const sidebarPropDefs = {
|
|
24
24
|
...asChildPropDef,
|
|
25
25
|
size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },
|
|
26
|
-
variant: { type: 'enum', className: 'rt-variant', values: variants, default: '
|
|
26
|
+
variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'outline' },
|
|
27
27
|
menuVariant: {
|
|
28
28
|
type: 'enum',
|
|
29
29
|
className: 'rt-menu-variant',
|
|
@@ -40,7 +40,7 @@ type SidebarContextProps = {
|
|
|
40
40
|
toggleSidebar: () => void;
|
|
41
41
|
side: 'left' | 'right';
|
|
42
42
|
type: 'sidebar' | 'floating';
|
|
43
|
-
variant: 'soft' | 'surface' | 'ghost';
|
|
43
|
+
variant: 'soft' | 'outline' | 'surface' | 'ghost';
|
|
44
44
|
menuVariant: 'solid' | 'soft';
|
|
45
45
|
collapsible: 'offcanvas' | 'icon' | 'none';
|
|
46
46
|
size: '1' | '2';
|
|
@@ -298,7 +298,7 @@ const SidebarContent = React.forwardRef<HTMLDivElement, SidebarContentProps>(
|
|
|
298
298
|
} = context || {};
|
|
299
299
|
|
|
300
300
|
return (
|
|
301
|
-
<ScrollArea type="
|
|
301
|
+
<ScrollArea type="hover">
|
|
302
302
|
<div
|
|
303
303
|
{...props}
|
|
304
304
|
ref={forwardedRef}
|
|
@@ -10,6 +10,8 @@ const positionValues = ['static', 'relative', 'absolute', 'fixed', 'sticky'] as
|
|
|
10
10
|
const positionEdgeValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-1', '-2', '-3', '-4', '-5', '-6', '-7', '-8', '-9'] as const;
|
|
11
11
|
const flexShrinkValues = ['0', '1'] as const;
|
|
12
12
|
const flexGrowValues = ['0', '1'] as const;
|
|
13
|
+
const alignSelfValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;
|
|
14
|
+
const justifySelfValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;
|
|
13
15
|
|
|
14
16
|
const layoutPropDefs = {
|
|
15
17
|
...paddingPropDefs,
|
|
@@ -358,6 +360,40 @@ const layoutPropDefs = {
|
|
|
358
360
|
customProperties: ['--grid-row-end'],
|
|
359
361
|
responsive: true,
|
|
360
362
|
},
|
|
363
|
+
/**
|
|
364
|
+
* Sets the CSS **align-self** property.
|
|
365
|
+
* Supports a subset of the corresponding CSS values and responsive objects.
|
|
366
|
+
*
|
|
367
|
+
* @example
|
|
368
|
+
* alignSelf="center"
|
|
369
|
+
* alignSelf={{ sm: 'start', lg: 'center' }}
|
|
370
|
+
*
|
|
371
|
+
* @link
|
|
372
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/align-self
|
|
373
|
+
*/
|
|
374
|
+
alignSelf: {
|
|
375
|
+
type: 'enum',
|
|
376
|
+
className: 'rt-r-as',
|
|
377
|
+
values: alignSelfValues,
|
|
378
|
+
responsive: true,
|
|
379
|
+
},
|
|
380
|
+
/**
|
|
381
|
+
* Sets the CSS **justify-self** property.
|
|
382
|
+
* Supports a subset of the corresponding CSS values and responsive objects.
|
|
383
|
+
*
|
|
384
|
+
* @example
|
|
385
|
+
* justifySelf="center"
|
|
386
|
+
* justifySelf={{ sm: 'start', lg: 'center' }}
|
|
387
|
+
*
|
|
388
|
+
* @link
|
|
389
|
+
* https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self
|
|
390
|
+
*/
|
|
391
|
+
justifySelf: {
|
|
392
|
+
type: 'enum',
|
|
393
|
+
className: 'rt-r-js',
|
|
394
|
+
values: justifySelfValues,
|
|
395
|
+
responsive: true,
|
|
396
|
+
},
|
|
361
397
|
} satisfies {
|
|
362
398
|
position: PropDef<(typeof positionValues)[number]>;
|
|
363
399
|
inset: PropDef<(typeof positionEdgeValues)[number]>;
|
|
@@ -378,6 +414,8 @@ const layoutPropDefs = {
|
|
|
378
414
|
gridRowStart: PropDef<string>;
|
|
379
415
|
gridRowEnd: PropDef<string>;
|
|
380
416
|
gridArea: PropDef<string>;
|
|
417
|
+
alignSelf: PropDef<(typeof alignSelfValues)[number]>;
|
|
418
|
+
justifySelf: PropDef<(typeof justifySelfValues)[number]>;
|
|
381
419
|
};
|
|
382
420
|
|
|
383
421
|
// Use all of the imported prop defs to ensure that JSDoc works
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[data-radius] {
|
|
2
|
-
--radius-1: calc(
|
|
2
|
+
--radius-1: calc(7px * var(--scaling) * var(--radius-factor));
|
|
3
3
|
--radius-2: calc(10px * var(--scaling) * var(--radius-factor));
|
|
4
4
|
--radius-3: calc(12px * var(--scaling) * var(--radius-factor));
|
|
5
5
|
--radius-4: calc(14px * var(--scaling) * var(--radius-factor));
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
@breakpoints {
|
|
2
|
+
.rt-r-ac-start {
|
|
3
|
+
align-content: start;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.rt-r-ac-center {
|
|
7
|
+
align-content: center;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.rt-r-ac-end {
|
|
11
|
+
align-content: end;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.rt-r-ac-baseline {
|
|
15
|
+
align-content: baseline;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.rt-r-ac-stretch {
|
|
19
|
+
align-content: stretch;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.rt-r-ac-space-between {
|
|
23
|
+
align-content: space-between;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.rt-r-ac-space-around {
|
|
27
|
+
align-content: space-around;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.rt-r-ac-space-evenly {
|
|
31
|
+
align-content: space-evenly;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
@breakpoints {
|
|
2
|
+
.rt-r-ji-start {
|
|
3
|
+
justify-items: start;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.rt-r-ji-center {
|
|
7
|
+
justify-items: center;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.rt-r-ji-end {
|
|
11
|
+
justify-items: end;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.rt-r-ji-baseline {
|
|
15
|
+
justify-items: baseline;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.rt-r-ji-stretch {
|
|
19
|
+
justify-items: stretch;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
@breakpoints {
|
|
2
|
+
.rt-r-js-start {
|
|
3
|
+
justify-self: start;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.rt-r-js-center {
|
|
7
|
+
justify-self: center;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.rt-r-js-end {
|
|
11
|
+
justify-self: end;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.rt-r-js-baseline {
|
|
15
|
+
justify-self: baseline;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.rt-r-js-stretch {
|
|
19
|
+
justify-self: stretch;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
@import '../breakpoints.css';
|
|
2
2
|
|
|
3
|
+
@import './align-content.css';
|
|
3
4
|
@import './align-items.css';
|
|
4
5
|
@import './align-self.css';
|
|
5
6
|
@import './display.css';
|
|
@@ -25,6 +26,8 @@
|
|
|
25
26
|
@import './max-height.css';
|
|
26
27
|
@import './inset.css';
|
|
27
28
|
@import './justify-content.css';
|
|
29
|
+
@import './justify-items.css';
|
|
30
|
+
@import './justify-self.css';
|
|
28
31
|
@import './margin.css';
|
|
29
32
|
@import './overflow.css';
|
|
30
33
|
@import './padding.css';
|