@donotdev/ui 0.0.7 → 0.0.9
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/assets/fonts/fonts.css +4 -4
- package/dist/components/auth/AuthHeader.d.ts +5 -0
- package/dist/components/auth/AuthHeader.d.ts.map +1 -1
- package/dist/components/auth/AuthHeader.js +22 -8
- package/dist/components/auth/AuthMenu.d.ts +6 -1
- package/dist/components/auth/AuthMenu.d.ts.map +1 -1
- package/dist/components/auth/AuthMenu.js +3 -3
- package/dist/components/common/AppLoading.d.ts +1 -1
- package/dist/components/common/AppLoading.d.ts.map +1 -1
- package/dist/components/common/AppLoading.js +0 -1
- package/dist/components/common/Loader.d.ts +4 -4
- package/dist/components/common/Loader.d.ts.map +1 -1
- package/dist/components/common/Loader.js +11 -12
- package/dist/components/common/LoadingMessage.d.ts +1 -9
- package/dist/components/common/LoadingMessage.d.ts.map +1 -1
- package/dist/components/common/LoadingMessage.js +0 -1
- package/dist/components/common/LoadingScreen.d.ts +1 -9
- package/dist/components/common/LoadingScreen.d.ts.map +1 -1
- package/dist/components/common/LoadingScreen.js +0 -1
- package/dist/components/common/RedirectOverlay.d.ts +37 -0
- package/dist/components/common/RedirectOverlay.d.ts.map +1 -0
- package/dist/components/common/RedirectOverlay.js +243 -0
- package/dist/components/common/TechBento.d.ts.map +1 -1
- package/dist/components/common/TechBento.js +1 -0
- package/dist/components/common/index.d.ts +1 -0
- package/dist/components/common/index.d.ts.map +1 -1
- package/dist/components/common/index.js +1 -0
- package/dist/components/layout/components/FloatingLanguageSwitcher.d.ts +1 -9
- package/dist/components/layout/components/FloatingLanguageSwitcher.d.ts.map +1 -1
- package/dist/components/layout/components/FloatingLanguageSwitcher.js +0 -1
- package/dist/components/layout/components/header/CacheSettings.d.ts.map +1 -1
- package/dist/components/layout/components/header/HeaderMenu.d.ts.map +1 -1
- package/dist/components/layout/components/header/SettingsMenu.d.ts.map +1 -1
- package/dist/components/layout/components/header/SettingsMenu.js +1 -2
- package/dist/components/layout/components/header/ThemeToggle.d.ts +1 -1
- package/dist/components/layout/components/header/ThemeToggle.d.ts.map +1 -1
- package/dist/components/layout/components/header/ThemeToggle.js +5 -4
- package/dist/crud/components/DisplayFieldRenderer.d.ts +3 -11
- package/dist/crud/components/DisplayFieldRenderer.d.ts.map +1 -1
- package/dist/crud/components/DisplayFieldRenderer.js +4 -3
- package/dist/crud/components/EntityDisplayRenderer.d.ts +2 -2
- package/dist/crud/components/fields/display/AvatarFieldDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/BadgeFieldDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/ButtonFieldDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/CheckboxFieldDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/DateFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/DateFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/DateFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/DropdownDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/FileFieldDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/GeoPointFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/GeoPointFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/GeoPointFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/HiddenFieldDisplay.d.ts +3 -3
- package/dist/crud/components/fields/display/HiddenFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/HiddenFieldDisplay.js +0 -9
- package/dist/crud/components/fields/display/ImageFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/ImageFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/ImageFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/LinkFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/LinkFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/LinkFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/MapFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/MapFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/MapFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/MultiDropdownDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/MultiDropdownDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/MultiDropdownDisplay.js +0 -1
- package/dist/crud/components/fields/display/MultiInputTextFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/MultiInputTextFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/MultiInputTextFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/NumberFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/NumberFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/NumberFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/PasswordFieldDisplay.d.ts +3 -3
- package/dist/crud/components/fields/display/PasswordFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/PasswordFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/PhoneNumberDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/PhoneNumberDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/PhoneNumberDisplay.js +0 -1
- package/dist/crud/components/fields/display/RadioFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/RadioFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/RadioFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/RangeFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/RangeFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/RangeFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/ReferenceFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/ReferenceFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/ReferenceFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/RichTextDisplay.d.ts +25 -0
- package/dist/crud/components/fields/display/RichTextDisplay.d.ts.map +1 -0
- package/dist/crud/components/fields/display/RichTextDisplay.js +104 -0
- package/dist/crud/components/fields/display/TextAreaDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/TextAreaDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/TextAreaDisplay.js +0 -1
- package/dist/crud/components/fields/display/TextFieldDisplay.d.ts +2 -2
- package/dist/crud/components/fields/display/TimestampFieldDisplay.d.ts +3 -11
- package/dist/crud/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -1
- package/dist/crud/components/fields/display/TimestampFieldDisplay.js +0 -1
- package/dist/crud/components/fields/display/index.d.ts +1 -0
- package/dist/crud/components/fields/display/index.d.ts.map +1 -1
- package/dist/crud/components/fields/display/index.js +1 -0
- package/dist/dndev.css +827 -126
- package/dist/index.js +64 -4
- package/dist/internal/common/ErrorFallback.d.ts +1 -10
- package/dist/internal/common/ErrorFallback.d.ts.map +1 -1
- package/dist/internal/common/GlobalErrorFallback.d.ts +1 -9
- package/dist/internal/common/GlobalErrorFallback.d.ts.map +1 -1
- package/dist/internal/common/RouteErrorFallback.js +1 -1
- package/dist/internal/devtools/components/DebugDialog.d.ts.map +1 -1
- package/dist/internal/devtools/components/DebugDialog.js +3 -1
- package/dist/internal/devtools/components/DesignTab.d.ts.map +1 -1
- package/dist/internal/devtools/components/DesignTab.js +25 -3
- package/dist/internal/devtools/components/MaskedValue.d.ts.map +1 -1
- package/dist/internal/devtools/components/MaskedValue.js +1 -1
- package/dist/internal/devtools/components/StoresTab.js +1 -1
- package/dist/internal/initializers/BaseStoresInitializer.d.ts.map +1 -1
- package/dist/internal/initializers/BaseStoresInitializer.js +1 -2
- package/dist/internal/initializers/NextJsStoresInitializer.d.ts.map +1 -1
- package/dist/internal/layout/DnDevLayout.d.ts.map +1 -1
- package/dist/internal/layout/DnDevLayout.js +4 -5
- package/dist/internal/layout/components/AutoMetaTags.d.ts.map +1 -1
- package/dist/internal/layout/components/PerformanceHints.d.ts.map +1 -1
- package/dist/internal/layout/components/PerformanceHints.js +3 -2
- package/dist/internal/layout/components/footer/FooterLegalLinks.js +2 -2
- package/dist/internal/layout/config/defaults.d.ts +0 -10
- package/dist/internal/layout/config/defaults.d.ts.map +1 -1
- package/dist/internal/layout/config/defaults.js +12 -1
- package/dist/internal/layout/config/presets/admin.d.ts +2 -2
- package/dist/internal/layout/config/presets/admin.d.ts.map +1 -1
- package/dist/internal/layout/config/presets/admin.js +15 -6
- package/dist/internal/layout/config/presets/blog.d.ts.map +1 -1
- package/dist/internal/layout/config/presets/blog.js +7 -1
- package/dist/internal/layout/config/presets/docs.d.ts.map +1 -1
- package/dist/internal/layout/config/presets/docs.js +7 -5
- package/dist/internal/layout/config/presets/game.d.ts.map +1 -1
- package/dist/internal/layout/config/presets/game.js +7 -2
- package/dist/internal/layout/config/presets/moolti.d.ts.map +1 -1
- package/dist/internal/layout/config/presets/moolti.js +10 -3
- package/dist/internal/layout/zones/DnDevFooter.d.ts +1 -13
- package/dist/internal/layout/zones/DnDevFooter.d.ts.map +1 -1
- package/dist/internal/layout/zones/DnDevHeader.d.ts +1 -14
- package/dist/internal/layout/zones/DnDevHeader.d.ts.map +1 -1
- package/dist/internal/layout/zones/DnDevMergedBar.d.ts +2 -14
- package/dist/internal/layout/zones/DnDevMergedBar.d.ts.map +1 -1
- package/dist/internal/layout/zones/DnDevMergedBar.js +11 -3
- package/dist/internal/layout/zones/DnDevSidebar.d.ts +1 -14
- package/dist/internal/layout/zones/DnDevSidebar.d.ts.map +1 -1
- package/dist/providers/NextJsAppProviders.d.ts.map +1 -1
- package/dist/providers/NextJsAppProviders.js +4 -1
- package/dist/routing/AuthGuard.d.ts.map +1 -1
- package/dist/routing/GoTo.d.ts +3 -1
- package/dist/routing/GoTo.d.ts.map +1 -1
- package/dist/routing/GoTo.js +6 -2
- package/dist/routing/GoToDialog.d.ts +1 -1
- package/dist/routing/GoToDialog.d.ts.map +1 -1
- package/dist/routing/GoToDialog.js +3 -5
- package/dist/routing/NavigationItem.d.ts +1 -1
- package/dist/routing/NavigationItem.d.ts.map +1 -1
- package/dist/routing/NavigationItem.js +0 -1
- package/dist/routing/hooks/hooks.next.d.ts +1 -0
- package/dist/routing/hooks/hooks.next.d.ts.map +1 -1
- package/dist/routing/hooks/hooks.next.js +1 -1
- package/dist/routing/hooks/hooks.vite.d.ts +1 -0
- package/dist/routing/hooks/hooks.vite.d.ts.map +1 -1
- package/dist/routing/hooks/hooks.vite.js +1 -1
- package/dist/routing/hooks/useNavigate.next.d.ts.map +1 -1
- package/dist/routing/hooks/useNavigate.next.js +1 -1
- package/dist/routing/hooks/useNavigate.vite.d.ts.map +1 -1
- package/dist/routing/hooks/useRouteParam.next.d.ts +18 -0
- package/dist/routing/hooks/useRouteParam.next.d.ts.map +1 -0
- package/dist/routing/hooks/useRouteParam.next.js +38 -0
- package/dist/routing/hooks/useRouteParam.vite.d.ts +18 -0
- package/dist/routing/hooks/useRouteParam.vite.d.ts.map +1 -0
- package/dist/routing/hooks/useRouteParam.vite.js +38 -0
- package/dist/routing/index.d.ts +1 -1
- package/dist/routing/index.d.ts.map +1 -1
- package/dist/routing/index.js +1 -1
- package/dist/routing/useGoTo.d.ts.map +1 -1
- package/dist/styles/index.css +823 -122
- package/dist/utils/assetResolver.d.ts +1 -1
- package/dist/utils/assetResolver.d.ts.map +1 -1
- package/dist/utils/assetResolver.js +1 -2
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/tList.d.ts +1 -1
- package/dist/utils/tList.d.ts.map +1 -1
- package/dist/utils/useAuthSafe.d.ts +0 -33
- package/dist/utils/useAuthSafe.d.ts.map +1 -1
- package/dist/utils/useAuthSafe.js +34 -1
- package/dist/utils/useCrudSafe.d.ts +12 -6
- package/dist/utils/useCrudSafe.d.ts.map +1 -1
- package/dist/utils/useCrudSafe.js +11 -7
- package/dist/utils/useOAuthSafe.d.ts.map +1 -1
- package/dist/utils/useStripeBillingSafe.d.ts +1 -34
- package/dist/utils/useStripeBillingSafe.d.ts.map +1 -1
- package/dist/utils/useStripeBillingSafe.js +34 -1
- package/dist/vite-routing/AppRoutes.d.ts +1 -1
- package/dist/vite-routing/AppRoutes.d.ts.map +1 -1
- package/dist/vite-routing/AppRoutes.js +0 -1
- package/dist/vite-routing/RootLayout.d.ts.map +1 -1
- package/dist/vite-routing/RootLayout.js +6 -6
- package/package.json +9 -9
package/dist/dndev.css
CHANGED
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
--font-headline: var(--font-sans);
|
|
158
158
|
|
|
159
159
|
--font-mono:
|
|
160
|
-
ui-monospace, 'SF Mono', 'Cascadia Code',
|
|
160
|
+
ui-monospace, 'SF Mono', 'Cascadia Code', Consolas, Monaco,
|
|
161
161
|
'Liberation Mono', monospace;
|
|
162
162
|
|
|
163
163
|
/* Typography Scale - Musical Scale System (STANDARD density defaults - Major Third 1.25×) */
|
|
@@ -714,6 +714,16 @@ em {
|
|
|
714
714
|
|
|
715
715
|
/* packages/components/src/styles/patterns.css */
|
|
716
716
|
|
|
717
|
+
/* Menu scroll area pattern - shared by DropdownMenu, Select, Combobox */
|
|
718
|
+
|
|
719
|
+
.dndev-menu-scroll-area {
|
|
720
|
+
max-height: 50dvh;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
.dndev-menu-scroll-area .dndev-scroll-area-viewport {
|
|
724
|
+
max-height: 50dvh;
|
|
725
|
+
}
|
|
726
|
+
|
|
717
727
|
/* ===========================
|
|
718
728
|
FORM COMPONENTS (BASE)
|
|
719
729
|
=========================== */
|
|
@@ -908,6 +918,9 @@ em {
|
|
|
908
918
|
border-radius: var(--radius-surface);
|
|
909
919
|
box-shadow: var(--shadow-md);
|
|
910
920
|
padding: var(--gap-md); /* 1rem / 16px default */
|
|
921
|
+
padding-block-start: calc(
|
|
922
|
+
var(--gap-md) + var(--gap-sm)
|
|
923
|
+
); /* Extra top padding for FloatingLabels */
|
|
911
924
|
position: relative;
|
|
912
925
|
overflow: hidden;
|
|
913
926
|
contain: layout style;
|
|
@@ -1158,6 +1171,9 @@ em {
|
|
|
1158
1171
|
border-radius: var(--radius-floating);
|
|
1159
1172
|
box-shadow: var(--shadow-md);
|
|
1160
1173
|
padding: var(--gap-md); /* 1rem / 16px default */
|
|
1174
|
+
padding-block-start: calc(
|
|
1175
|
+
var(--gap-md) + var(--gap-sm)
|
|
1176
|
+
); /* Extra top padding for FloatingLabels */
|
|
1161
1177
|
position: relative;
|
|
1162
1178
|
overflow: hidden;
|
|
1163
1179
|
contain: layout style;
|
|
@@ -2088,8 +2104,9 @@ em {
|
|
|
2088
2104
|
display: flex;
|
|
2089
2105
|
flex-direction: column;
|
|
2090
2106
|
overflow-y: auto;
|
|
2091
|
-
overflow-x:
|
|
2107
|
+
overflow-x: visible;
|
|
2092
2108
|
min-height: 0;
|
|
2109
|
+
padding-block-start: var(--gap-sm);
|
|
2093
2110
|
}
|
|
2094
2111
|
|
|
2095
2112
|
.dndev-modal-title {
|
|
@@ -2148,6 +2165,60 @@ em {
|
|
|
2148
2165
|
flex-direction: column;
|
|
2149
2166
|
}
|
|
2150
2167
|
|
|
2168
|
+
/* ===========================
|
|
2169
|
+
AUTH FORM PATTERNS
|
|
2170
|
+
=========================== */
|
|
2171
|
+
|
|
2172
|
+
/* Auth form step indicator */
|
|
2173
|
+
|
|
2174
|
+
.dndev-auth-step {
|
|
2175
|
+
display: inline-flex;
|
|
2176
|
+
align-items: center;
|
|
2177
|
+
justify-content: center;
|
|
2178
|
+
min-width: 1.5em;
|
|
2179
|
+
padding: var(--gap-sm);
|
|
2180
|
+
border-radius: var(--radius-sm);
|
|
2181
|
+
font-weight: var(--font-weight-semibold);
|
|
2182
|
+
transition: all var(--dur-fast) var(--ease-in-out);
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
.dndev-auth-step[data-state='active'] {
|
|
2186
|
+
background-color: var(--primary);
|
|
2187
|
+
color: var(--primary-foreground);
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
.dndev-auth-step[data-state='pending'] {
|
|
2191
|
+
background-color: var(--muted);
|
|
2192
|
+
color: var(--muted-foreground);
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
.dndev-auth-step[data-state='completed'] {
|
|
2196
|
+
background-color: var(--success);
|
|
2197
|
+
color: var(--success-foreground);
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
/* Opacity data attribute */
|
|
2201
|
+
|
|
2202
|
+
[data-opacity='50'] {
|
|
2203
|
+
opacity: 0.5;
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
[data-opacity='70'] {
|
|
2207
|
+
opacity: 0.7;
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
/* Inset data attribute - indent content */
|
|
2211
|
+
|
|
2212
|
+
[data-inset='true'] {
|
|
2213
|
+
padding-inline-start: var(--gap-md);
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
/* Password strength bar height override */
|
|
2217
|
+
|
|
2218
|
+
.dndev-password-strength-bar {
|
|
2219
|
+
height: 4px;
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2151
2222
|
/* 5. Individual Component Styles */
|
|
2152
2223
|
|
|
2153
2224
|
/* packages/components/src/atomic/Accordion/Accordion.css */
|
|
@@ -2194,21 +2265,46 @@ em {
|
|
|
2194
2265
|
flex-shrink: 0;
|
|
2195
2266
|
width: var(--icon-md);
|
|
2196
2267
|
height: var(--icon-md);
|
|
2197
|
-
transition: transform var(--dur-
|
|
2268
|
+
transition: transform var(--dur-normal) var(--ease-in-out);
|
|
2198
2269
|
}
|
|
2199
2270
|
|
|
2200
2271
|
.dndev-accordion-content {
|
|
2201
2272
|
overflow: hidden;
|
|
2202
2273
|
font-size: var(--font-size-base);
|
|
2203
|
-
transition: all var(--dur-fast) var(--ease-in-out);
|
|
2204
2274
|
width: 100%;
|
|
2205
2275
|
min-width: 0;
|
|
2206
2276
|
text-align: start;
|
|
2207
2277
|
}
|
|
2208
2278
|
|
|
2279
|
+
.dndev-accordion-content[data-state='open'] {
|
|
2280
|
+
animation: slideDown var(--dur-normal) var(--ease-in-out);
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2209
2283
|
.dndev-accordion-content[data-state='closed'] {
|
|
2210
|
-
|
|
2284
|
+
animation: slideUp var(--dur-normal) var(--ease-in-out);
|
|
2285
|
+
}
|
|
2286
|
+
|
|
2287
|
+
@keyframes slideDown {
|
|
2288
|
+
from {
|
|
2289
|
+
height: 0;
|
|
2290
|
+
opacity: 0;
|
|
2291
|
+
}
|
|
2292
|
+
to {
|
|
2293
|
+
height: var(--radix-collapsible-content-height);
|
|
2294
|
+
opacity: 1;
|
|
2295
|
+
}
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
@keyframes slideUp {
|
|
2299
|
+
from {
|
|
2300
|
+
height: var(--radix-collapsible-content-height);
|
|
2301
|
+
opacity: 1;
|
|
2302
|
+
}
|
|
2303
|
+
to {
|
|
2304
|
+
height: 0;
|
|
2305
|
+
opacity: 0;
|
|
2211
2306
|
}
|
|
2307
|
+
}
|
|
2212
2308
|
|
|
2213
2309
|
.dndev-accordion-content-inner {
|
|
2214
2310
|
padding-bottom: var(--gap-md);
|
|
@@ -2632,6 +2728,34 @@ em {
|
|
|
2632
2728
|
|
|
2633
2729
|
/* Label styling moved to patterns.css (.dndev-interactive-label) */
|
|
2634
2730
|
|
|
2731
|
+
/* Loading state */
|
|
2732
|
+
|
|
2733
|
+
[data-loading] {
|
|
2734
|
+
cursor: wait;
|
|
2735
|
+
pointer-events: none;
|
|
2736
|
+
}
|
|
2737
|
+
|
|
2738
|
+
/* Button spinner - inherits size from button font-size */
|
|
2739
|
+
|
|
2740
|
+
.dndev-button-spinner {
|
|
2741
|
+
flex-shrink: 0;
|
|
2742
|
+
}
|
|
2743
|
+
|
|
2744
|
+
/* Progress ring for upload percentage */
|
|
2745
|
+
|
|
2746
|
+
.dndev-button-progress {
|
|
2747
|
+
display: inline-flex;
|
|
2748
|
+
align-items: center;
|
|
2749
|
+
justify-content: center;
|
|
2750
|
+
flex-shrink: 0;
|
|
2751
|
+
}
|
|
2752
|
+
|
|
2753
|
+
.dndev-progress-ring {
|
|
2754
|
+
width: 1em;
|
|
2755
|
+
height: 1em;
|
|
2756
|
+
transform: rotate(-90deg);
|
|
2757
|
+
}
|
|
2758
|
+
|
|
2635
2759
|
/* packages/components/src/atomic/Calendar/Calendar.css */
|
|
2636
2760
|
|
|
2637
2761
|
/**
|
|
@@ -3199,21 +3323,58 @@ em {
|
|
|
3199
3323
|
@keyframes slideDown {
|
|
3200
3324
|
from {
|
|
3201
3325
|
height: 0;
|
|
3326
|
+
opacity: 0;
|
|
3202
3327
|
}
|
|
3203
3328
|
to {
|
|
3204
3329
|
height: var(--radix-collapsible-content-height);
|
|
3330
|
+
opacity: 1;
|
|
3205
3331
|
}
|
|
3206
3332
|
}
|
|
3207
3333
|
|
|
3208
3334
|
@keyframes slideUp {
|
|
3209
3335
|
from {
|
|
3210
3336
|
height: var(--radix-collapsible-content-height);
|
|
3337
|
+
opacity: 1;
|
|
3211
3338
|
}
|
|
3212
3339
|
to {
|
|
3213
3340
|
height: 0;
|
|
3341
|
+
opacity: 0;
|
|
3214
3342
|
}
|
|
3215
3343
|
}
|
|
3216
3344
|
|
|
3345
|
+
.dndev-collapsible-trigger {
|
|
3346
|
+
width: 100%;
|
|
3347
|
+
cursor: pointer;
|
|
3348
|
+
transition: opacity var(--dur-fast) var(--ease-in-out);
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3351
|
+
.dndev-collapsible-trigger:hover {
|
|
3352
|
+
opacity: var(--opacity-strong);
|
|
3353
|
+
}
|
|
3354
|
+
|
|
3355
|
+
.dndev-collapsible-trigger:focus-visible {
|
|
3356
|
+
outline: 2px solid var(--ring);
|
|
3357
|
+
outline-offset: 2px;
|
|
3358
|
+
border-radius: var(--radius-interactive);
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
.dndev-collapsible-icon {
|
|
3362
|
+
width: var(--size-md);
|
|
3363
|
+
height: var(--size-md);
|
|
3364
|
+
flex-shrink: 0;
|
|
3365
|
+
color: var(--accent);
|
|
3366
|
+
transition: transform var(--dur-normal) var(--ease-in-out);
|
|
3367
|
+
}
|
|
3368
|
+
|
|
3369
|
+
.dndev-collapsible-chevron {
|
|
3370
|
+
transform: rotate(0deg);
|
|
3371
|
+
transition: transform var(--dur-normal) var(--ease-in-out);
|
|
3372
|
+
}
|
|
3373
|
+
|
|
3374
|
+
.dndev-collapsible[data-state='open'] .dndev-collapsible-chevron {
|
|
3375
|
+
transform: rotate(180deg);
|
|
3376
|
+
}
|
|
3377
|
+
|
|
3217
3378
|
/* packages/components/src/atomic/Combobox/Combobox.css */
|
|
3218
3379
|
|
|
3219
3380
|
.dndev-combobox-trigger {
|
|
@@ -3293,7 +3454,7 @@ em {
|
|
|
3293
3454
|
.dndev-combobox-content {
|
|
3294
3455
|
width: var(--radix-popover-trigger-width);
|
|
3295
3456
|
min-width: var(--radix-popover-trigger-width);
|
|
3296
|
-
max-
|
|
3457
|
+
max-width: var(--radix-popover-trigger-width);
|
|
3297
3458
|
display: flex;
|
|
3298
3459
|
flex-direction: column;
|
|
3299
3460
|
padding: 0;
|
|
@@ -3308,14 +3469,6 @@ em {
|
|
|
3308
3469
|
width: 100%;
|
|
3309
3470
|
}
|
|
3310
3471
|
|
|
3311
|
-
.dndev-combobox-list {
|
|
3312
|
-
overflow-y: auto;
|
|
3313
|
-
padding: var(--gap-tight);
|
|
3314
|
-
display: flex;
|
|
3315
|
-
flex-direction: column;
|
|
3316
|
-
gap: var(--gap-none);
|
|
3317
|
-
}
|
|
3318
|
-
|
|
3319
3472
|
.dndev-combobox-option {
|
|
3320
3473
|
all: unset;
|
|
3321
3474
|
display: flex;
|
|
@@ -3372,6 +3525,30 @@ em {
|
|
|
3372
3525
|
color: var(--muted-foreground);
|
|
3373
3526
|
}
|
|
3374
3527
|
|
|
3528
|
+
/* Creatable option styling */
|
|
3529
|
+
|
|
3530
|
+
.dndev-combobox-option-create {
|
|
3531
|
+
color: var(--primary);
|
|
3532
|
+
font-style: italic;
|
|
3533
|
+
}
|
|
3534
|
+
|
|
3535
|
+
.dndev-combobox-option-create-icon {
|
|
3536
|
+
width: var(--icon-md);
|
|
3537
|
+
height: var(--icon-md);
|
|
3538
|
+
margin-inline-end: var(--gap-sm);
|
|
3539
|
+
flex-shrink: 0;
|
|
3540
|
+
}
|
|
3541
|
+
|
|
3542
|
+
.dndev-combobox-open .dndev-input-with-trailing-icon .dndev-input-icon svg,
|
|
3543
|
+
.dndev-combobox-open .dndev-input-with-trailing-icon .dndev-input-icon > * {
|
|
3544
|
+
transform: rotate(180deg);
|
|
3545
|
+
}
|
|
3546
|
+
|
|
3547
|
+
.dndev-input-with-trailing-icon .dndev-input-icon svg,
|
|
3548
|
+
.dndev-input-with-trailing-icon .dndev-input-icon > * {
|
|
3549
|
+
transition: transform var(--dur-fast) var(--ease-in-out);
|
|
3550
|
+
}
|
|
3551
|
+
|
|
3375
3552
|
/* packages/components/src/atomic/DualCard/DualCard.css */
|
|
3376
3553
|
|
|
3377
3554
|
.dndev-dual-card {
|
|
@@ -3558,13 +3735,15 @@ em {
|
|
|
3558
3735
|
text-align: start;
|
|
3559
3736
|
display: block;
|
|
3560
3737
|
line-height: 1.5; /* Match line numbers */
|
|
3738
|
+
font-size: var(--font-size-sm); /* Explicit match with line numbers */
|
|
3561
3739
|
}
|
|
3562
3740
|
|
|
3563
|
-
/* Ensure shiki-generated code respects line-height */
|
|
3741
|
+
/* Ensure shiki-generated code respects line-height AND font-size */
|
|
3564
3742
|
|
|
3565
3743
|
.dndev-code-code pre,
|
|
3566
3744
|
.dndev-code-code code {
|
|
3567
3745
|
line-height: inherit;
|
|
3746
|
+
font-size: inherit; /* Match parent font-size */
|
|
3568
3747
|
}
|
|
3569
3748
|
|
|
3570
3749
|
/* packages/components/src/atomic/Command/Command.css */
|
|
@@ -3942,16 +4121,6 @@ em {
|
|
|
3942
4121
|
padding: var(--gap-sm);
|
|
3943
4122
|
}
|
|
3944
4123
|
|
|
3945
|
-
/* Dropdown scroll area - constrain height to 50dvh */
|
|
3946
|
-
|
|
3947
|
-
.dndev-dropdown-scroll-area {
|
|
3948
|
-
max-height: 50dvh;
|
|
3949
|
-
}
|
|
3950
|
-
|
|
3951
|
-
.dndev-dropdown-scroll-area .dndev-scroll-area-viewport {
|
|
3952
|
-
max-height: 50dvh;
|
|
3953
|
-
}
|
|
3954
|
-
|
|
3955
4124
|
/* Checked state styling */
|
|
3956
4125
|
|
|
3957
4126
|
.dndev-interactive[data-role='menu-item'][data-state='checked'] {
|
|
@@ -4475,6 +4644,81 @@ em {
|
|
|
4475
4644
|
margin-inline-start: var(--gap-sm);
|
|
4476
4645
|
}
|
|
4477
4646
|
|
|
4647
|
+
/* Floating Fieldset - native border-cutting via legend */
|
|
4648
|
+
|
|
4649
|
+
.dndev-floating-fieldset {
|
|
4650
|
+
position: relative;
|
|
4651
|
+
border: var(--border-hairline) solid var(--line-2);
|
|
4652
|
+
border-radius: var(--radius-interactive);
|
|
4653
|
+
margin: 0;
|
|
4654
|
+
padding: 0;
|
|
4655
|
+
background-color: transparent;
|
|
4656
|
+
transition: all var(--dur-normal) var(--ease-in-out);
|
|
4657
|
+
text-align: start;
|
|
4658
|
+
}
|
|
4659
|
+
|
|
4660
|
+
.dndev-floating-fieldset:hover {
|
|
4661
|
+
border-color: var(--ring);
|
|
4662
|
+
}
|
|
4663
|
+
|
|
4664
|
+
.dndev-floating-fieldset:focus-within {
|
|
4665
|
+
border-color: var(--ring);
|
|
4666
|
+
box-shadow: 0 0 0 2px var(--ring);
|
|
4667
|
+
}
|
|
4668
|
+
|
|
4669
|
+
.dndev-floating-fieldset[data-disabled='true'] {
|
|
4670
|
+
opacity: var(--opacity-muted);
|
|
4671
|
+
cursor: not-allowed;
|
|
4672
|
+
}
|
|
4673
|
+
|
|
4674
|
+
/* Legend sits on border - browser natively cuts border */
|
|
4675
|
+
|
|
4676
|
+
.dndev-floating-legend {
|
|
4677
|
+
margin-inline-start: var(--gap-sm);
|
|
4678
|
+
padding: 0 var(--gap-sm);
|
|
4679
|
+
font-size: var(--font-size-xs);
|
|
4680
|
+
font-weight: 500;
|
|
4681
|
+
line-height: 1;
|
|
4682
|
+
color: var(--foreground);
|
|
4683
|
+
}
|
|
4684
|
+
|
|
4685
|
+
.dndev-floating-legend label {
|
|
4686
|
+
cursor: default;
|
|
4687
|
+
display: inline-flex;
|
|
4688
|
+
align-items: center;
|
|
4689
|
+
gap: var(--gap-tight);
|
|
4690
|
+
}
|
|
4691
|
+
|
|
4692
|
+
.dndev-floating-fieldset[data-disabled='true'] .dndev-floating-legend {
|
|
4693
|
+
color: var(--muted-foreground);
|
|
4694
|
+
}
|
|
4695
|
+
|
|
4696
|
+
.dndev-floating-legend[data-truncate='true'] {
|
|
4697
|
+
max-width: calc(100% - var(--gap-md) * 2);
|
|
4698
|
+
overflow: hidden;
|
|
4699
|
+
text-overflow: ellipsis;
|
|
4700
|
+
white-space: nowrap;
|
|
4701
|
+
}
|
|
4702
|
+
|
|
4703
|
+
/* Remove border from inner input since fieldset has it */
|
|
4704
|
+
|
|
4705
|
+
.dndev-floating-fieldset .dndev-input {
|
|
4706
|
+
border: none;
|
|
4707
|
+
border-radius: var(--radius-interactive);
|
|
4708
|
+
box-shadow: none;
|
|
4709
|
+
}
|
|
4710
|
+
|
|
4711
|
+
.dndev-floating-fieldset .dndev-input:hover {
|
|
4712
|
+
border-color: transparent;
|
|
4713
|
+
}
|
|
4714
|
+
|
|
4715
|
+
.dndev-floating-fieldset .dndev-input:focus,
|
|
4716
|
+
.dndev-floating-fieldset .dndev-input:focus-visible {
|
|
4717
|
+
border-color: transparent;
|
|
4718
|
+
box-shadow: none;
|
|
4719
|
+
outline: none;
|
|
4720
|
+
}
|
|
4721
|
+
|
|
4478
4722
|
/* packages/components/src/atomic/List/List.css */
|
|
4479
4723
|
|
|
4480
4724
|
.dndev-list {
|
|
@@ -4783,20 +5027,41 @@ em {
|
|
|
4783
5027
|
/* packages/components/src/atomic/PasswordInput/PasswordInput.css */
|
|
4784
5028
|
|
|
4785
5029
|
.dndev-password-input-with-toggle {
|
|
4786
|
-
padding-inline-end: var(--gap-
|
|
5030
|
+
padding-inline-end: calc(var(--gap-xl) + var(--gap-md)) !important;
|
|
4787
5031
|
}
|
|
4788
5032
|
|
|
5033
|
+
/* Eye icon toggle - ALWAYS at end, cannot be overridden */
|
|
5034
|
+
|
|
4789
5035
|
.dndev-password-toggle-button {
|
|
4790
|
-
position: absolute;
|
|
4791
|
-
|
|
4792
|
-
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
5036
|
+
position: absolute !important;
|
|
5037
|
+
top: 50% !important;
|
|
5038
|
+
transform: translateY(-50%) !important;
|
|
5039
|
+
inset-inline-end: var(--gap-sm) !important;
|
|
5040
|
+
inset-inline-start: unset !important;
|
|
5041
|
+
background: none !important;
|
|
5042
|
+
border: none !important;
|
|
5043
|
+
cursor: pointer !important;
|
|
5044
|
+
padding: var(--gap-tight) !important;
|
|
5045
|
+
display: flex !important;
|
|
5046
|
+
align-items: center !important;
|
|
5047
|
+
opacity: var(--opacity-muted) !important;
|
|
5048
|
+
transition: opacity var(--dur-fast) var(--ease-in-out) !important;
|
|
5049
|
+
-webkit-user-select: none !important;
|
|
5050
|
+
-moz-user-select: none !important;
|
|
5051
|
+
user-select: none !important;
|
|
5052
|
+
z-index: 1 !important;
|
|
5053
|
+
}
|
|
5054
|
+
|
|
5055
|
+
.dndev-password-toggle-button:hover,
|
|
5056
|
+
.dndev-password-toggle-button:focus {
|
|
5057
|
+
opacity: 1 !important;
|
|
5058
|
+
outline: none !important;
|
|
4796
5059
|
}
|
|
4797
5060
|
|
|
4798
5061
|
.dndev-password-toggle-icon {
|
|
4799
5062
|
color: var(--muted-foreground);
|
|
5063
|
+
width: var(--icon-sm);
|
|
5064
|
+
height: var(--icon-sm);
|
|
4800
5065
|
}
|
|
4801
5066
|
|
|
4802
5067
|
/* packages/components/src/atomic/Pagination/Pagination.css */
|
|
@@ -4888,9 +5153,32 @@ em {
|
|
|
4888
5153
|
height: 100%;
|
|
4889
5154
|
width: 100%;
|
|
4890
5155
|
flex: 1;
|
|
5156
|
+
background-color: var(--primary);
|
|
4891
5157
|
transition: transform var(--dur-normal) var(--ease-in-out);
|
|
5158
|
+
|
|
5159
|
+
/* Variant colors */
|
|
4892
5160
|
}
|
|
4893
5161
|
|
|
5162
|
+
[data-variant='default']:is(.dndev-progress [data-radix-progress-indicator]) {
|
|
5163
|
+
background-color: var(--primary);
|
|
5164
|
+
}
|
|
5165
|
+
|
|
5166
|
+
[data-variant='accent']:is(.dndev-progress [data-radix-progress-indicator]) {
|
|
5167
|
+
background-color: var(--accent);
|
|
5168
|
+
}
|
|
5169
|
+
|
|
5170
|
+
[data-variant='success']:is(.dndev-progress [data-radix-progress-indicator]) {
|
|
5171
|
+
background-color: var(--success);
|
|
5172
|
+
}
|
|
5173
|
+
|
|
5174
|
+
[data-variant='warning']:is(.dndev-progress [data-radix-progress-indicator]) {
|
|
5175
|
+
background-color: var(--warning);
|
|
5176
|
+
}
|
|
5177
|
+
|
|
5178
|
+
[data-variant='destructive']:is(.dndev-progress [data-radix-progress-indicator]) {
|
|
5179
|
+
background-color: var(--destructive);
|
|
5180
|
+
}
|
|
5181
|
+
|
|
4894
5182
|
/* packages/components/src/atomic/RadioGroup/RadioGroup.css */
|
|
4895
5183
|
|
|
4896
5184
|
/* Uses shared .dndev-control-group pattern from patterns.css */
|
|
@@ -5096,7 +5384,6 @@ em {
|
|
|
5096
5384
|
display: flex;
|
|
5097
5385
|
flex-direction: column;
|
|
5098
5386
|
padding: 0;
|
|
5099
|
-
overflow-y: auto;
|
|
5100
5387
|
}
|
|
5101
5388
|
|
|
5102
5389
|
.dndev-interactive[data-radix-select-item] {
|
|
@@ -5218,6 +5505,7 @@ em {
|
|
|
5218
5505
|
letter-spacing: 0.2em;
|
|
5219
5506
|
color: var(--accent) !important;
|
|
5220
5507
|
margin-block-end: var(--gap-md);
|
|
5508
|
+
text-align: center; /* DEFAULT - works without attribute selector */
|
|
5221
5509
|
}
|
|
5222
5510
|
|
|
5223
5511
|
.dndev-section-full-width[data-text-align='start'] .dndev-section-title {
|
|
@@ -5232,26 +5520,71 @@ em {
|
|
|
5232
5520
|
text-align: end;
|
|
5233
5521
|
}
|
|
5234
5522
|
|
|
5235
|
-
/*
|
|
5523
|
+
/* Collapsible title trigger */
|
|
5236
5524
|
|
|
5237
|
-
.dndev-
|
|
5238
|
-
|
|
5239
|
-
|
|
5240
|
-
|
|
5525
|
+
.dndev-section-title-trigger {
|
|
5526
|
+
width: 100%;
|
|
5527
|
+
cursor: pointer;
|
|
5528
|
+
transition: opacity var(--dur-fast) var(--ease-in-out);
|
|
5529
|
+
margin-block-end: var(--gap-md);
|
|
5241
5530
|
}
|
|
5242
5531
|
|
|
5243
|
-
.dndev-
|
|
5244
|
-
|
|
5245
|
-
|
|
5246
|
-
|
|
5247
|
-
/* Inside Section: cap to content width */
|
|
5248
|
-
}
|
|
5532
|
+
.dndev-section-title-trigger .dndev-section-title {
|
|
5533
|
+
margin-block-end: 0;
|
|
5534
|
+
}
|
|
5249
5535
|
|
|
5250
|
-
.dndev-section
|
|
5251
|
-
|
|
5252
|
-
|
|
5536
|
+
.dndev-section-title-trigger:hover {
|
|
5537
|
+
opacity: var(--opacity-strong);
|
|
5538
|
+
}
|
|
5253
5539
|
|
|
5254
|
-
.dndev-
|
|
5540
|
+
.dndev-section-title-trigger:focus-visible {
|
|
5541
|
+
outline: 2px solid var(--ring);
|
|
5542
|
+
outline-offset: 2px;
|
|
5543
|
+
border-radius: var(--radius-interactive);
|
|
5544
|
+
}
|
|
5545
|
+
|
|
5546
|
+
.dndev-section-icon {
|
|
5547
|
+
width: var(--size-md);
|
|
5548
|
+
height: var(--size-md);
|
|
5549
|
+
flex-shrink: 0;
|
|
5550
|
+
color: var(--accent);
|
|
5551
|
+
transition: transform var(--dur-normal) var(--ease-in-out);
|
|
5552
|
+
}
|
|
5553
|
+
|
|
5554
|
+
.dndev-section-full-width[data-text-align='start']
|
|
5555
|
+
.dndev-section-title-trigger {
|
|
5556
|
+
justify-content: flex-start;
|
|
5557
|
+
}
|
|
5558
|
+
|
|
5559
|
+
.dndev-section-full-width[data-text-align='center']
|
|
5560
|
+
.dndev-section-title-trigger {
|
|
5561
|
+
justify-content: center;
|
|
5562
|
+
}
|
|
5563
|
+
|
|
5564
|
+
.dndev-section-full-width[data-text-align='end'] .dndev-section-title-trigger {
|
|
5565
|
+
justify-content: flex-end;
|
|
5566
|
+
}
|
|
5567
|
+
|
|
5568
|
+
/* packages/components/src/atomic/Separator/Separator.css */
|
|
5569
|
+
|
|
5570
|
+
.dndev-separator {
|
|
5571
|
+
flex-shrink: 0;
|
|
5572
|
+
background-color: var(--line-2);
|
|
5573
|
+
margin-inline: auto;
|
|
5574
|
+
}
|
|
5575
|
+
|
|
5576
|
+
.dndev-separator[data-orientation='horizontal'] {
|
|
5577
|
+
height: 2px;
|
|
5578
|
+
width: 80%;
|
|
5579
|
+
|
|
5580
|
+
/* Inside Section: cap to content width */
|
|
5581
|
+
}
|
|
5582
|
+
|
|
5583
|
+
.dndev-section .dndev-separator[data-orientation='horizontal'] {
|
|
5584
|
+
max-width: calc(var(--content-width) * 0.8);
|
|
5585
|
+
}
|
|
5586
|
+
|
|
5587
|
+
.dndev-separator[data-orientation='vertical'] {
|
|
5255
5588
|
width: 1px;
|
|
5256
5589
|
height: 100%;
|
|
5257
5590
|
}
|
|
@@ -5373,50 +5706,210 @@ em {
|
|
|
5373
5706
|
display: flex;
|
|
5374
5707
|
flex-direction: column;
|
|
5375
5708
|
z-index: var(--z-modal);
|
|
5376
|
-
|
|
5709
|
+
background: var(--card);
|
|
5710
|
+
/* Ensure background is opaque */
|
|
5711
|
+
color: var(--card-foreground);
|
|
5712
|
+
box-shadow: var(--shadow-xl);
|
|
5713
|
+
/* Focus Tunnel: Deep elevation */
|
|
5714
|
+
overflow: hidden;
|
|
5715
|
+
/* Scroll Trap: Container clips overflow */
|
|
5716
|
+
|
|
5717
|
+
/* Motion Physics: Base state */
|
|
5718
|
+
will-change: transform, opacity;
|
|
5377
5719
|
|
|
5378
|
-
/*
|
|
5720
|
+
/* Open state animation - "Heavy" ease for premium feel */
|
|
5379
5721
|
}
|
|
5380
5722
|
|
|
5723
|
+
.dndev-sheet-content[data-state='open'] {
|
|
5724
|
+
animation: sheet-slide-in var(--dur-heavy) var(--ease-heavy);
|
|
5725
|
+
}
|
|
5726
|
+
|
|
5727
|
+
/* Closed state animation */
|
|
5728
|
+
|
|
5729
|
+
.dndev-sheet-content[data-state='closed'] {
|
|
5730
|
+
animation: sheet-slide-out var(--dur-normal) var(--ease-in-out);
|
|
5731
|
+
}
|
|
5732
|
+
|
|
5733
|
+
/* Sheet positioning by side - SPATIAL METAPHOR */
|
|
5734
|
+
|
|
5735
|
+
/* RIGHT / LEFT (Desktop Panels) */
|
|
5736
|
+
|
|
5381
5737
|
.dndev-sheet-content[data-side='right'],.dndev-sheet-content[data-side='left'] {
|
|
5382
5738
|
top: 0;
|
|
5383
5739
|
bottom: 0;
|
|
5384
5740
|
width: 80%;
|
|
5385
5741
|
max-width: 56rem;
|
|
5742
|
+
/* Standard panel width */
|
|
5743
|
+
height: 100%;
|
|
5744
|
+
/* Full height */
|
|
5745
|
+
border-radius: 0;
|
|
5746
|
+
/* Square edges for panel metaphor */
|
|
5386
5747
|
}
|
|
5387
5748
|
|
|
5388
5749
|
.dndev-sheet-content[data-side='right'] {
|
|
5750
|
+
/* Physical positioning: right edge */
|
|
5389
5751
|
right: 0;
|
|
5752
|
+
left: auto;
|
|
5753
|
+
/* Border on logical start (left in LTR, right in RTL) */
|
|
5754
|
+
border-inline-start: var(--border-hairline) solid var(--line-1);
|
|
5390
5755
|
}
|
|
5391
5756
|
|
|
5392
5757
|
.dndev-sheet-content[data-side='left'] {
|
|
5758
|
+
/* Physical positioning: left edge */
|
|
5393
5759
|
left: 0;
|
|
5760
|
+
right: auto;
|
|
5761
|
+
/* Border on logical end (right in LTR, left in RTL) */
|
|
5762
|
+
border-inline-end: var(--border-hairline) solid var(--line-1);
|
|
5394
5763
|
}
|
|
5395
5764
|
|
|
5765
|
+
/* TOP / BOTTOM (Mobile Cards) */
|
|
5766
|
+
|
|
5396
5767
|
.dndev-sheet-content[data-side='top'],.dndev-sheet-content[data-side='bottom'] {
|
|
5397
5768
|
left: 0;
|
|
5398
5769
|
right: 0;
|
|
5399
|
-
|
|
5400
|
-
|
|
5401
|
-
|
|
5770
|
+
/* Card metaphor: Detached from opposite edge */
|
|
5771
|
+
height: auto;
|
|
5772
|
+
max-height: 92dvh;
|
|
5773
|
+
/* Never touch top edge */
|
|
5774
|
+
width: 100%;
|
|
5775
|
+
margin-left: auto;
|
|
5776
|
+
margin-right: auto;
|
|
5777
|
+
|
|
5778
|
+
/* On larger screens, constrain width */
|
|
5402
5779
|
}
|
|
5403
5780
|
|
|
5781
|
+
@media (width >=768px) {
|
|
5782
|
+
|
|
5783
|
+
.dndev-sheet-content[data-side='top'],.dndev-sheet-content[data-side='bottom'] {
|
|
5784
|
+
max-width: 56rem;
|
|
5785
|
+
width: 90%;
|
|
5786
|
+
border-radius: var(--radius-lg);
|
|
5787
|
+
/* Fully rounded card on desktop */
|
|
5788
|
+
}
|
|
5789
|
+
}
|
|
5790
|
+
|
|
5404
5791
|
.dndev-sheet-content[data-side='top'] {
|
|
5405
5792
|
top: 0;
|
|
5793
|
+
border-bottom: var(--border-hairline) solid var(--line-1);
|
|
5794
|
+
/* Rounded bottom corners only */
|
|
5795
|
+
border-bottom-left-radius: var(--radius-lg);
|
|
5796
|
+
border-bottom-right-radius: var(--radius-lg);
|
|
5406
5797
|
}
|
|
5407
5798
|
|
|
5408
5799
|
.dndev-sheet-content[data-side='bottom'] {
|
|
5409
5800
|
bottom: 0;
|
|
5801
|
+
border-top: var(--border-hairline) solid var(--line-1);
|
|
5802
|
+
/* Rounded top corners only */
|
|
5803
|
+
border-top-left-radius: var(--radius-lg);
|
|
5804
|
+
border-top-right-radius: var(--radius-lg);
|
|
5410
5805
|
}
|
|
5411
5806
|
|
|
5807
|
+
/* DRAG HANDLE PILL - Visual affordance for draggable sheets */
|
|
5808
|
+
|
|
5809
|
+
.dndev-sheet-drag-handle {
|
|
5810
|
+
width: 2.5rem;
|
|
5811
|
+
height: 0.25rem;
|
|
5812
|
+
background: var(--line-2);
|
|
5813
|
+
border-radius: var(--radius-full);
|
|
5814
|
+
margin: var(--gap-sm) auto 0;
|
|
5815
|
+
flex-shrink: 0;
|
|
5816
|
+
cursor: grab;
|
|
5817
|
+
transition: background-color var(--dur-fast) var(--ease-in-out);
|
|
5818
|
+
}
|
|
5819
|
+
|
|
5820
|
+
.dndev-sheet-drag-handle:active {
|
|
5821
|
+
cursor: grabbing;
|
|
5822
|
+
}
|
|
5823
|
+
|
|
5824
|
+
/* Positioning for bottom sheets */
|
|
5825
|
+
|
|
5826
|
+
.dndev-sheet-content[data-side='bottom'] > .dndev-sheet-drag-handle {
|
|
5827
|
+
margin-top: var(--gap-sm);
|
|
5828
|
+
margin-bottom: 0;
|
|
5829
|
+
}
|
|
5830
|
+
|
|
5831
|
+
/* Positioning for top sheets */
|
|
5832
|
+
|
|
5833
|
+
.dndev-sheet-content[data-side='top'] > .dndev-sheet-drag-handle {
|
|
5834
|
+
margin-top: max(var(--gap-sm), env(safe-area-inset-top));
|
|
5835
|
+
margin-bottom: 0;
|
|
5836
|
+
}
|
|
5837
|
+
|
|
5838
|
+
/* HEADER - Pinned, No Padding (Tight Layout) */
|
|
5839
|
+
|
|
5840
|
+
/* Industry standard: Title always on start, X always on end (consistent across all sides) */
|
|
5841
|
+
|
|
5412
5842
|
.dndev-sheet-header {
|
|
5413
5843
|
display: flex;
|
|
5414
5844
|
align-items: center;
|
|
5415
5845
|
justify-content: space-between;
|
|
5416
5846
|
gap: var(--gap-md);
|
|
5417
5847
|
flex-shrink: 0;
|
|
5848
|
+
/* Never shrink */
|
|
5418
5849
|
min-height: var(--touch-target);
|
|
5419
|
-
|
|
5850
|
+
/* No padding - tight layout: [ Title X ] */
|
|
5851
|
+
padding-block: 0;
|
|
5852
|
+
/* RTL-aware: padding on logical start only */
|
|
5853
|
+
padding-inline-start: var(--gap-md);
|
|
5854
|
+
padding-inline-end: 0; /* X button has its own spacing */
|
|
5855
|
+
border-bottom: var(--border-hairline) solid var(--line-1);
|
|
5856
|
+
/* Separator */
|
|
5857
|
+
|
|
5858
|
+
/* Thumb Ergonomics: Top Safe Area (only for top sheets) */
|
|
5859
|
+
}
|
|
5860
|
+
|
|
5861
|
+
.dndev-sheet-content[data-side='top'] .dndev-sheet-header {
|
|
5862
|
+
padding-top: max(0, env(safe-area-inset-top));
|
|
5863
|
+
}
|
|
5864
|
+
|
|
5865
|
+
/* Adjust header padding when drag handle is present (sibling selector) */
|
|
5866
|
+
|
|
5867
|
+
.dndev-sheet-content[data-side='bottom'] .dndev-sheet-drag-handle ~ .dndev-sheet-header,
|
|
5868
|
+
.dndev-sheet-content[data-side='top'] .dndev-sheet-drag-handle ~ .dndev-sheet-header {
|
|
5869
|
+
padding-top: 0;
|
|
5870
|
+
}
|
|
5871
|
+
|
|
5872
|
+
/* BODY - Scrollable */
|
|
5873
|
+
|
|
5874
|
+
.dndev-sheet-body {
|
|
5875
|
+
flex: 1;
|
|
5876
|
+
/* Consumes available space */
|
|
5877
|
+
overflow-y: auto;
|
|
5878
|
+
/* Independent scroll */
|
|
5879
|
+
overflow-x: hidden;
|
|
5880
|
+
padding: var(--gap-md);
|
|
5881
|
+
overscroll-behavior: contain;
|
|
5882
|
+
/* Prevent body scroll chaining */
|
|
5883
|
+
}
|
|
5884
|
+
|
|
5885
|
+
/* FOOTER - Pinned */
|
|
5886
|
+
|
|
5887
|
+
.dndev-sheet-footer {
|
|
5888
|
+
flex-shrink: 0;
|
|
5889
|
+
/* Never shrink */
|
|
5890
|
+
padding: var(--gap-md);
|
|
5891
|
+
border-top: var(--border-hairline) solid var(--line-1);
|
|
5892
|
+
/* Separator */
|
|
5893
|
+
display: flex;
|
|
5894
|
+
flex-direction: column-reverse;
|
|
5895
|
+
/* Mobile-first stacking */
|
|
5896
|
+
gap: var(--gap-sm);
|
|
5897
|
+
|
|
5898
|
+
/* Desktop: Row layout */
|
|
5899
|
+
}
|
|
5900
|
+
|
|
5901
|
+
@media (width >=640px) {
|
|
5902
|
+
|
|
5903
|
+
.dndev-sheet-footer {
|
|
5904
|
+
flex-direction: row;
|
|
5905
|
+
justify-content: flex-end;
|
|
5906
|
+
}
|
|
5907
|
+
}
|
|
5908
|
+
|
|
5909
|
+
.dndev-sheet-footer {
|
|
5910
|
+
|
|
5911
|
+
/* Thumb Ergonomics: Bottom Safe Area (Home Indicator) */
|
|
5912
|
+
padding-bottom: max(var(--gap-md), env(safe-area-inset-bottom));
|
|
5420
5913
|
}
|
|
5421
5914
|
|
|
5422
5915
|
.dndev-sheet-title {
|
|
@@ -5426,19 +5919,72 @@ em {
|
|
|
5426
5919
|
}
|
|
5427
5920
|
|
|
5428
5921
|
.dndev-sheet-close {
|
|
5429
|
-
|
|
5430
|
-
|
|
5431
|
-
|
|
5922
|
+
/* Position relative - flex handles alignment */
|
|
5923
|
+
position: relative;
|
|
5924
|
+
margin-inline-start: auto;
|
|
5925
|
+
/* Push to end (RTL-aware: end = right in LTR, left in RTL) */
|
|
5432
5926
|
opacity: var(--opacity-muted);
|
|
5927
|
+
/* No padding - tight spacing */
|
|
5928
|
+
padding: 0;
|
|
5929
|
+
/* RTL-aware: padding on logical end only */
|
|
5930
|
+
padding-inline-end: var(--gap-md);
|
|
5931
|
+
padding-inline-start: 0;
|
|
5433
5932
|
}
|
|
5434
5933
|
|
|
5435
5934
|
.dndev-sheet-close:hover {
|
|
5436
5935
|
opacity: 1;
|
|
5437
5936
|
}
|
|
5438
5937
|
|
|
5439
|
-
|
|
5440
|
-
|
|
5441
|
-
|
|
5938
|
+
/* ===========================
|
|
5939
|
+
ANIMATIONS (Motion Physics)
|
|
5940
|
+
=========================== */
|
|
5941
|
+
|
|
5942
|
+
/* Slide In/Out Keyframes - Context Aware */
|
|
5943
|
+
|
|
5944
|
+
@keyframes sheet-slide-in {
|
|
5945
|
+
from {
|
|
5946
|
+
opacity: 0;
|
|
5947
|
+
transform: var(--slide-enter-transform);
|
|
5948
|
+
}
|
|
5949
|
+
|
|
5950
|
+
to {
|
|
5951
|
+
opacity: 1;
|
|
5952
|
+
transform: translate(0, 0);
|
|
5953
|
+
}
|
|
5954
|
+
}
|
|
5955
|
+
|
|
5956
|
+
@keyframes sheet-slide-out {
|
|
5957
|
+
from {
|
|
5958
|
+
opacity: 1;
|
|
5959
|
+
transform: translate(0, 0);
|
|
5960
|
+
}
|
|
5961
|
+
|
|
5962
|
+
to {
|
|
5963
|
+
opacity: 0;
|
|
5964
|
+
transform: var(--slide-exit-transform);
|
|
5965
|
+
}
|
|
5966
|
+
}
|
|
5967
|
+
|
|
5968
|
+
/* Define Transforms based on Side */
|
|
5969
|
+
|
|
5970
|
+
.dndev-sheet-content[data-side='right'] {
|
|
5971
|
+
--slide-enter-transform: translateX(100%);
|
|
5972
|
+
--slide-exit-transform: translateX(100%);
|
|
5973
|
+
}
|
|
5974
|
+
|
|
5975
|
+
.dndev-sheet-content[data-side='left'] {
|
|
5976
|
+
--slide-enter-transform: translateX(-100%);
|
|
5977
|
+
--slide-exit-transform: translateX(-100%);
|
|
5978
|
+
}
|
|
5979
|
+
|
|
5980
|
+
.dndev-sheet-content[data-side='bottom'] {
|
|
5981
|
+
--slide-enter-transform: translateY(100%);
|
|
5982
|
+
--slide-exit-transform: translateY(100%);
|
|
5983
|
+
}
|
|
5984
|
+
|
|
5985
|
+
.dndev-sheet-content[data-side='top'] {
|
|
5986
|
+
--slide-enter-transform: translateY(-100%);
|
|
5987
|
+
--slide-exit-transform: translateY(-100%);
|
|
5442
5988
|
}
|
|
5443
5989
|
|
|
5444
5990
|
/* packages/components/src/atomic/Skeleton/Skeleton.css */
|
|
@@ -6094,6 +6640,61 @@ em {
|
|
|
6094
6640
|
transform: translateX(calc(2.75rem - 1.25rem - 0.125rem));
|
|
6095
6641
|
}
|
|
6096
6642
|
|
|
6643
|
+
/* Switch with labels container */
|
|
6644
|
+
|
|
6645
|
+
.dndev-switch-with-labels {
|
|
6646
|
+
display: inline-flex;
|
|
6647
|
+
align-items: center;
|
|
6648
|
+
gap: var(--gap-sm);
|
|
6649
|
+
flex-wrap: wrap;
|
|
6650
|
+
}
|
|
6651
|
+
|
|
6652
|
+
/* Labels - keep switch and its labels on one line when possible */
|
|
6653
|
+
|
|
6654
|
+
.dndev-switch-with-labels > .dndev-switch {
|
|
6655
|
+
flex-shrink: 0;
|
|
6656
|
+
}
|
|
6657
|
+
|
|
6658
|
+
.dndev-switch-label {
|
|
6659
|
+
font-size: var(--font-size-sm);
|
|
6660
|
+
transition:
|
|
6661
|
+
color var(--dur-normal) var(--ease-in-out),
|
|
6662
|
+
font-weight var(--dur-normal) var(--ease-in-out);
|
|
6663
|
+
white-space: nowrap;
|
|
6664
|
+
}
|
|
6665
|
+
|
|
6666
|
+
/* Unchecked label - active when switch is unchecked */
|
|
6667
|
+
|
|
6668
|
+
.dndev-switch-with-labels:not(:has(.dndev-switch[data-state='checked']))
|
|
6669
|
+
.dndev-switch-label-unchecked,
|
|
6670
|
+
.dndev-switch-with-labels[data-checked='false'] .dndev-switch-label-unchecked {
|
|
6671
|
+
color: var(--foreground);
|
|
6672
|
+
font-weight: var(--font-weight-medium);
|
|
6673
|
+
}
|
|
6674
|
+
|
|
6675
|
+
.dndev-switch-with-labels:has(.dndev-switch[data-state='checked'])
|
|
6676
|
+
.dndev-switch-label-unchecked,
|
|
6677
|
+
.dndev-switch-with-labels[data-checked='true'] .dndev-switch-label-unchecked {
|
|
6678
|
+
color: var(--muted-foreground);
|
|
6679
|
+
font-weight: var(--font-weight-normal);
|
|
6680
|
+
}
|
|
6681
|
+
|
|
6682
|
+
/* Checked label - active when switch is checked */
|
|
6683
|
+
|
|
6684
|
+
.dndev-switch-with-labels:has(.dndev-switch[data-state='checked'])
|
|
6685
|
+
.dndev-switch-label-checked,
|
|
6686
|
+
.dndev-switch-with-labels[data-checked='true'] .dndev-switch-label-checked {
|
|
6687
|
+
color: var(--foreground);
|
|
6688
|
+
font-weight: var(--font-weight-medium);
|
|
6689
|
+
}
|
|
6690
|
+
|
|
6691
|
+
.dndev-switch-with-labels:not(:has(.dndev-switch[data-state='checked']))
|
|
6692
|
+
.dndev-switch-label-checked,
|
|
6693
|
+
.dndev-switch-with-labels[data-checked='false'] .dndev-switch-label-checked {
|
|
6694
|
+
color: var(--muted-foreground);
|
|
6695
|
+
font-weight: var(--font-weight-normal);
|
|
6696
|
+
}
|
|
6697
|
+
|
|
6097
6698
|
/* packages/components/src/atomic/Table/Table.css */
|
|
6098
6699
|
|
|
6099
6700
|
.dndev-table-wrapper {
|
|
@@ -6130,6 +6731,12 @@ em {
|
|
|
6130
6731
|
background-color: color-mix(in oklab, var(--accent) 15%, transparent);
|
|
6131
6732
|
}
|
|
6132
6733
|
|
|
6734
|
+
/* Cursor pointer for clickable rows */
|
|
6735
|
+
|
|
6736
|
+
.dndev-table-row.dndev-cursor-pointer {
|
|
6737
|
+
cursor: pointer;
|
|
6738
|
+
}
|
|
6739
|
+
|
|
6133
6740
|
/* Zebra striping for data tables */
|
|
6134
6741
|
|
|
6135
6742
|
.dndev-table-body .dndev-table-row:nth-child(even) {
|
|
@@ -6159,7 +6766,7 @@ em {
|
|
|
6159
6766
|
/* Table head (th) styles */
|
|
6160
6767
|
|
|
6161
6768
|
.dndev-table-head {
|
|
6162
|
-
text-align:
|
|
6769
|
+
text-align: start;
|
|
6163
6770
|
vertical-align: middle;
|
|
6164
6771
|
font-weight: 500;
|
|
6165
6772
|
color: var(--muted-foreground);
|
|
@@ -6176,12 +6783,12 @@ em {
|
|
|
6176
6783
|
text-align: center;
|
|
6177
6784
|
}
|
|
6178
6785
|
|
|
6179
|
-
.dndev-table-head[data-align='
|
|
6180
|
-
text-align:
|
|
6786
|
+
.dndev-table-head[data-align='end'] {
|
|
6787
|
+
text-align: end;
|
|
6181
6788
|
}
|
|
6182
6789
|
|
|
6183
|
-
.dndev-table-head[data-align='
|
|
6184
|
-
text-align:
|
|
6790
|
+
.dndev-table-head[data-align='start'] {
|
|
6791
|
+
text-align: start;
|
|
6185
6792
|
}
|
|
6186
6793
|
|
|
6187
6794
|
/* Table cell (td) styles */
|
|
@@ -6197,14 +6804,48 @@ em {
|
|
|
6197
6804
|
text-align: center;
|
|
6198
6805
|
}
|
|
6199
6806
|
|
|
6200
|
-
.dndev-table-cell[data-align='
|
|
6201
|
-
text-align:
|
|
6807
|
+
.dndev-table-cell[data-align='end'] {
|
|
6808
|
+
text-align: end;
|
|
6202
6809
|
}
|
|
6203
6810
|
|
|
6204
|
-
.dndev-table-cell[data-align='
|
|
6205
|
-
text-align:
|
|
6811
|
+
.dndev-table-cell[data-align='start'] {
|
|
6812
|
+
text-align: start;
|
|
6206
6813
|
}
|
|
6207
6814
|
|
|
6815
|
+
/* Excel-like grid lines variant */
|
|
6816
|
+
|
|
6817
|
+
.dndev-table-grid .dndev-table-head,
|
|
6818
|
+
.dndev-table-grid .dndev-table-cell {
|
|
6819
|
+
border: 1px solid var(--border);
|
|
6820
|
+
padding: 0;
|
|
6821
|
+
}
|
|
6822
|
+
|
|
6823
|
+
.dndev-table-grid .dndev-table-row {
|
|
6824
|
+
border-bottom: 1px solid var(--border);
|
|
6825
|
+
}
|
|
6826
|
+
|
|
6827
|
+
.dndev-table-grid .dndev-table-row:last-child {
|
|
6828
|
+
border-bottom: 1px solid var(--border);
|
|
6829
|
+
}
|
|
6830
|
+
|
|
6831
|
+
/* Input components inside grid cells should be borderless and fit snugly */
|
|
6832
|
+
|
|
6833
|
+
.dndev-table-grid .dndev-table-cell .dndev-input,
|
|
6834
|
+
.dndev-table-grid .dndev-table-cell input[type='text'],
|
|
6835
|
+
.dndev-table-grid .dndev-table-cell input[type='number'] {
|
|
6836
|
+
border: none;
|
|
6837
|
+
background: transparent;
|
|
6838
|
+
width: 100%;
|
|
6839
|
+
height: 100%;
|
|
6840
|
+
box-shadow: none;
|
|
6841
|
+
}
|
|
6842
|
+
|
|
6843
|
+
.dndev-table-grid .dndev-table-cell .dndev-input:focus,
|
|
6844
|
+
.dndev-table-grid .dndev-table-cell input:focus {
|
|
6845
|
+
outline: 2px solid var(--primary);
|
|
6846
|
+
outline-offset: -2px;
|
|
6847
|
+
}
|
|
6848
|
+
|
|
6208
6849
|
/* Table caption styles */
|
|
6209
6850
|
|
|
6210
6851
|
.dndev-table-caption {
|
|
@@ -6221,7 +6862,7 @@ em {
|
|
|
6221
6862
|
|
|
6222
6863
|
.dndev-table-search-icon {
|
|
6223
6864
|
position: absolute;
|
|
6224
|
-
|
|
6865
|
+
inset-inline-start: var(--gap-md);
|
|
6225
6866
|
top: 50%;
|
|
6226
6867
|
transform: translateY(-50%);
|
|
6227
6868
|
width: var(--icon-md);
|
|
@@ -6388,7 +7029,7 @@ em {
|
|
|
6388
7029
|
.dndev-tag {
|
|
6389
7030
|
display: inline-flex;
|
|
6390
7031
|
align-items: center;
|
|
6391
|
-
gap: var(--gap-
|
|
7032
|
+
gap: var(--gap-sm);
|
|
6392
7033
|
border-radius: var(--radius-full);
|
|
6393
7034
|
border: 1px solid transparent;
|
|
6394
7035
|
font-size: var(--font-size-sm);
|
|
@@ -6518,8 +7159,18 @@ em {
|
|
|
6518
7159
|
font-weight: var(--font-weight-medium);
|
|
6519
7160
|
line-height: var(--line-height);
|
|
6520
7161
|
background-color: transparent; /* Text never has background, only color changes */
|
|
7162
|
+
|
|
7163
|
+
/* Respect semantic HTML elements */
|
|
6521
7164
|
}
|
|
6522
7165
|
|
|
7166
|
+
.dndev-text-base:is(strong) {
|
|
7167
|
+
font-weight: var(--font-weight-semibold);
|
|
7168
|
+
}
|
|
7169
|
+
|
|
7170
|
+
.dndev-text-base:is(em) {
|
|
7171
|
+
font-style: italic;
|
|
7172
|
+
}
|
|
7173
|
+
|
|
6523
7174
|
.dndev-text-base[data-variant='default'] {
|
|
6524
7175
|
color: inherit;
|
|
6525
7176
|
}
|
|
@@ -7467,7 +8118,7 @@ em {
|
|
|
7467
8118
|
align-items: stretch;
|
|
7468
8119
|
}
|
|
7469
8120
|
|
|
7470
|
-
@media (width <=
|
|
8121
|
+
@media (width <=699px) {
|
|
7471
8122
|
|
|
7472
8123
|
[data-cols='2'] {
|
|
7473
8124
|
grid-template-columns: repeat(1, minmax(350px, 1fr));
|
|
@@ -7479,14 +8130,14 @@ em {
|
|
|
7479
8130
|
align-items: stretch;
|
|
7480
8131
|
}
|
|
7481
8132
|
|
|
7482
|
-
@media (width <=
|
|
8133
|
+
@media (width <=1049px) {
|
|
7483
8134
|
|
|
7484
8135
|
[data-cols='3'] {
|
|
7485
8136
|
grid-template-columns: repeat(2, minmax(350px, 1fr));
|
|
7486
8137
|
}
|
|
7487
8138
|
}
|
|
7488
8139
|
|
|
7489
|
-
@media (width <=
|
|
8140
|
+
@media (width <=699px) {
|
|
7490
8141
|
|
|
7491
8142
|
[data-cols='3'] {
|
|
7492
8143
|
grid-template-columns: repeat(1, minmax(350px, 1fr));
|
|
@@ -7500,21 +8151,21 @@ em {
|
|
|
7500
8151
|
/* Responsive: reduce columns when container is narrow */
|
|
7501
8152
|
}
|
|
7502
8153
|
|
|
7503
|
-
@media (width <=
|
|
8154
|
+
@media (width <=1399px) {
|
|
7504
8155
|
|
|
7505
8156
|
[data-cols='4'] {
|
|
7506
8157
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
7507
8158
|
}
|
|
7508
8159
|
}
|
|
7509
8160
|
|
|
7510
|
-
@media (width <=
|
|
8161
|
+
@media (width <=1049px) {
|
|
7511
8162
|
|
|
7512
8163
|
[data-cols='4'] {
|
|
7513
8164
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
7514
8165
|
}
|
|
7515
8166
|
}
|
|
7516
8167
|
|
|
7517
|
-
@media (width <=
|
|
8168
|
+
@media (width <=699px) {
|
|
7518
8169
|
|
|
7519
8170
|
[data-cols='4'] {
|
|
7520
8171
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
@@ -7581,18 +8232,22 @@ em {
|
|
|
7581
8232
|
|
|
7582
8233
|
code {
|
|
7583
8234
|
font-family: var(--font-mono);
|
|
7584
|
-
font-size: inherit;
|
|
7585
|
-
|
|
8235
|
+
font-size: inherit;
|
|
8236
|
+
/* Inherit parent size */
|
|
8237
|
+
font-weight: inherit;
|
|
8238
|
+
/* Inherit parent weight */
|
|
7586
8239
|
line-height: inherit;
|
|
7587
8240
|
color: inherit;
|
|
7588
|
-
background: transparent;
|
|
8241
|
+
background: transparent;
|
|
8242
|
+
/* No background by default */
|
|
7589
8243
|
}
|
|
7590
8244
|
|
|
7591
8245
|
/* Code variant - visual styling (background, padding, can apply to any element) */
|
|
7592
8246
|
|
|
7593
8247
|
[data-variant='code'] {
|
|
7594
8248
|
font-family: var(--font-mono);
|
|
7595
|
-
font-size: var(--font-size-sm);
|
|
8249
|
+
font-size: var(--font-size-sm);
|
|
8250
|
+
/* Default small size */
|
|
7596
8251
|
background: var(--muted);
|
|
7597
8252
|
color: var(--muted-foreground);
|
|
7598
8253
|
padding: var(--gap-sm) var(--gap-md);
|
|
@@ -7687,7 +8342,8 @@ h4[data-variant='code'] {
|
|
|
7687
8342
|
|
|
7688
8343
|
.dndev-relative {
|
|
7689
8344
|
position: relative;
|
|
7690
|
-
min-width: 0;
|
|
8345
|
+
min-width: 0;
|
|
8346
|
+
/* Allow flex items to shrink below content size */
|
|
7691
8347
|
}
|
|
7692
8348
|
|
|
7693
8349
|
.dndev-absolute {
|
|
@@ -7779,6 +8435,10 @@ h4[data-variant='code'] {
|
|
|
7779
8435
|
pointer-events: auto;
|
|
7780
8436
|
}
|
|
7781
8437
|
|
|
8438
|
+
.dndev-cursor-pointer {
|
|
8439
|
+
cursor: pointer;
|
|
8440
|
+
}
|
|
8441
|
+
|
|
7782
8442
|
.dndev-aspect-video {
|
|
7783
8443
|
aspect-ratio: 16 / 9;
|
|
7784
8444
|
}
|
|
@@ -7792,7 +8452,7 @@ h4[data-variant='code'] {
|
|
|
7792
8452
|
RESPONSIVE DISPLAY
|
|
7793
8453
|
=========================== */
|
|
7794
8454
|
|
|
7795
|
-
@media (width >=
|
|
8455
|
+
@media (width >=768px) {
|
|
7796
8456
|
.dndev-md\:block {
|
|
7797
8457
|
display: block;
|
|
7798
8458
|
}
|
|
@@ -7818,7 +8478,7 @@ h4[data-variant='code'] {
|
|
|
7818
8478
|
}
|
|
7819
8479
|
}
|
|
7820
8480
|
|
|
7821
|
-
@media (width >=
|
|
8481
|
+
@media (width >=1024px) {
|
|
7822
8482
|
.dndev-lg\:block {
|
|
7823
8483
|
display: block;
|
|
7824
8484
|
}
|
|
@@ -7878,6 +8538,10 @@ h4[data-variant='code'] {
|
|
|
7878
8538
|
Components are unaffected - they own their own spacing
|
|
7879
8539
|
=========================== */
|
|
7880
8540
|
|
|
8541
|
+
.prose {
|
|
8542
|
+
text-align: start;
|
|
8543
|
+
}
|
|
8544
|
+
|
|
7881
8545
|
.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6 {
|
|
7882
8546
|
margin-block: var(--gap-md);
|
|
7883
8547
|
}
|
|
@@ -8341,10 +9005,7 @@ main[role='main'][data-routing-animation='none'] {
|
|
|
8341
9005
|
max-height: 100dvh;
|
|
8342
9006
|
overflow: hidden;
|
|
8343
9007
|
display: grid;
|
|
8344
|
-
/*
|
|
8345
|
-
/* Footer starts at sidebar edge (column 2) - when sidebar-width is 0px, footer starts at left edge */
|
|
8346
|
-
/* Footer grows with content wrapping. For pixel-perfect calc() accuracy when footer wraps,
|
|
8347
|
-
implement ResizeObserver to update --footer-height dynamically. */
|
|
9008
|
+
/* Grid structure: 3 rows, 2 columns */
|
|
8348
9009
|
grid-template-areas:
|
|
8349
9010
|
'header header'
|
|
8350
9011
|
'sidebar main'
|
|
@@ -8355,16 +9016,62 @@ main[role='main'][data-routing-animation='none'] {
|
|
|
8355
9016
|
);
|
|
8356
9017
|
grid-template-columns: var(--sidebar-width) 1fr;
|
|
8357
9018
|
|
|
8358
|
-
/*
|
|
9019
|
+
/* Mobile: No footer grid row - footer is inside main */
|
|
9020
|
+
/* When mergedBar is shown, header is hidden but grid still needs space for mergedBar */
|
|
8359
9021
|
}
|
|
8360
9022
|
|
|
8361
|
-
|
|
8362
|
-
|
|
8363
|
-
|
|
8364
|
-
|
|
8365
|
-
|
|
9023
|
+
@media (width <= 1023px) {
|
|
9024
|
+
|
|
9025
|
+
.dndev-layout {
|
|
9026
|
+
grid-template-areas:
|
|
9027
|
+
'header header'
|
|
9028
|
+
'sidebar main';
|
|
9029
|
+
grid-template-rows: var(--header-height) 1fr;
|
|
9030
|
+
|
|
9031
|
+
/* Presets with mergedBar: header is hidden, but grid still allocates space for mergedBar */
|
|
9032
|
+
/* No extra padding needed - grid spacing is sufficient */
|
|
9033
|
+
}
|
|
9034
|
+
.dndev-layout[data-layout='admin'],.dndev-layout[data-layout='moolti'],.dndev-layout[data-layout='game'],.dndev-layout[data-layout='docs'] {
|
|
9035
|
+
/* Grid already accounts for header-height, mergedBar is fixed and doesn't need extra padding */
|
|
9036
|
+
}
|
|
9037
|
+
}
|
|
9038
|
+
|
|
9039
|
+
/* Footer containers: show/hide based on breakpoint */
|
|
9040
|
+
|
|
9041
|
+
.footer-mobile {
|
|
9042
|
+
display: none;
|
|
9043
|
+
/* No margin-top: auto - footer scrolls with content on mobile */
|
|
9044
|
+
/* No flex-shrink: 0 - footer is in normal flow, not stuck at bottom */
|
|
9045
|
+
}
|
|
9046
|
+
|
|
9047
|
+
.footer-desktop {
|
|
9048
|
+
display: contents; /* Children (footer element) participate in grid */
|
|
9049
|
+
}
|
|
9050
|
+
|
|
9051
|
+
@media (width <= 1023px) {
|
|
9052
|
+
.footer-mobile {
|
|
9053
|
+
display: block;
|
|
9054
|
+
}
|
|
9055
|
+
|
|
9056
|
+
.footer-desktop {
|
|
9057
|
+
display: none;
|
|
8366
9058
|
}
|
|
8367
9059
|
|
|
9060
|
+
/* Game: No mobile footer - navigation in MergedBar */
|
|
9061
|
+
[data-layout='game'] .footer-mobile {
|
|
9062
|
+
display: none;
|
|
9063
|
+
}
|
|
9064
|
+
}
|
|
9065
|
+
|
|
9066
|
+
/* Presets with no footer at all */
|
|
9067
|
+
|
|
9068
|
+
[data-layout='moolti'] .footer-mobile,
|
|
9069
|
+
[data-layout='moolti'] .footer-desktop,
|
|
9070
|
+
[data-layout='plain'] .footer-mobile,
|
|
9071
|
+
[data-layout='plain'] .footer-desktop {
|
|
9072
|
+
display: none;
|
|
9073
|
+
}
|
|
9074
|
+
|
|
8368
9075
|
/* ===========================
|
|
8369
9076
|
LAYOUT ZONE POSITIONING RULES
|
|
8370
9077
|
Follows logical flow: Header → Sidebar → Main → Footer
|
|
@@ -8378,6 +9085,8 @@ header[role='banner'] {
|
|
|
8378
9085
|
grid-area: header;
|
|
8379
9086
|
box-sizing: border-box;
|
|
8380
9087
|
height: var(--header-height);
|
|
9088
|
+
min-height: var(--header-height);
|
|
9089
|
+
max-height: var(--header-height);
|
|
8381
9090
|
position: relative;
|
|
8382
9091
|
z-index: var(--z-header);
|
|
8383
9092
|
contain: layout style;
|
|
@@ -8404,7 +9113,9 @@ header[role='banner'] {
|
|
|
8404
9113
|
align-items: center;
|
|
8405
9114
|
flex-shrink: 0;
|
|
8406
9115
|
height: 100%;
|
|
9116
|
+
max-height: 100%;
|
|
8407
9117
|
gap: var(--gap-sm);
|
|
9118
|
+
overflow: hidden;
|
|
8408
9119
|
}
|
|
8409
9120
|
|
|
8410
9121
|
.header-end {
|
|
@@ -8412,8 +9123,11 @@ header[role='banner'] {
|
|
|
8412
9123
|
align-items: center;
|
|
8413
9124
|
justify-content: flex-end;
|
|
8414
9125
|
flex-shrink: 0;
|
|
9126
|
+
height: 100%;
|
|
9127
|
+
max-height: 100%;
|
|
8415
9128
|
margin-inline-start: auto;
|
|
8416
9129
|
gap: var(--gap-sm);
|
|
9130
|
+
overflow: hidden;
|
|
8417
9131
|
}
|
|
8418
9132
|
|
|
8419
9133
|
/* Viewport-centered center content - absolutely positioned overlay */
|
|
@@ -8705,11 +9419,17 @@ main[role='main'] > *:not(.breadcrumbs-container):first-of-type,main[role='main'
|
|
|
8705
9419
|
/* Page content grows */
|
|
8706
9420
|
}
|
|
8707
9421
|
|
|
8708
|
-
|
|
8709
|
-
|
|
8710
|
-
|
|
9422
|
+
/* Desktop: Footer stays at bottom of viewport */
|
|
9423
|
+
|
|
9424
|
+
@media (width > 1023px) {
|
|
9425
|
+
main[role='main'] > *:last-child {
|
|
9426
|
+
flex-shrink: 0;
|
|
9427
|
+
/* Footer stays at bottom */
|
|
9428
|
+
}
|
|
8711
9429
|
}
|
|
8712
9430
|
|
|
9431
|
+
/* Mobile: Footer scrolls with content (no flex-shrink needed) */
|
|
9432
|
+
|
|
8713
9433
|
/* Footer: Full width by default, app presets start after sidebar */
|
|
8714
9434
|
|
|
8715
9435
|
/* box-sizing: border-box ensures borders are included in height */
|
|
@@ -8742,26 +9462,6 @@ footer[role='contentinfo'] > * {
|
|
|
8742
9462
|
padding-inline-end: var(--content-padding);
|
|
8743
9463
|
}
|
|
8744
9464
|
|
|
8745
|
-
/* Game: Hide footer on tablet/mobile - merged into GameMergedBar */
|
|
8746
|
-
|
|
8747
|
-
@media (width <= 1023px) {
|
|
8748
|
-
[data-layout='game']:root footer[role='contentinfo'] {
|
|
8749
|
-
display: none;
|
|
8750
|
-
}
|
|
8751
|
-
}
|
|
8752
|
-
|
|
8753
|
-
/* Moolti: No footer (built into sidebar) */
|
|
8754
|
-
|
|
8755
|
-
[data-layout='moolti']:root footer[role='contentinfo'] {
|
|
8756
|
-
display: none;
|
|
8757
|
-
}
|
|
8758
|
-
|
|
8759
|
-
/* Plain: No footer (full-screen apps) */
|
|
8760
|
-
|
|
8761
|
-
[data-layout='plain']:root footer[role='contentinfo'] {
|
|
8762
|
-
display: none;
|
|
8763
|
-
}
|
|
8764
|
-
|
|
8765
9465
|
/* Footer text styles */
|
|
8766
9466
|
|
|
8767
9467
|
footer[role='contentinfo'] .footer-copyright {
|
|
@@ -8806,7 +9506,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
8806
9506
|
|
|
8807
9507
|
.merged-bar[data-position='top'] {
|
|
8808
9508
|
top: 0;
|
|
8809
|
-
height:
|
|
9509
|
+
height: var(--header-height);
|
|
8810
9510
|
border-bottom: 2px solid var(--border);
|
|
8811
9511
|
padding-top: env(safe-area-inset-top);
|
|
8812
9512
|
}
|
|
@@ -8834,7 +9534,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
8834
9534
|
min-height: 0;
|
|
8835
9535
|
}
|
|
8836
9536
|
|
|
8837
|
-
/* Mobile (<1024px): Show merged-bar, hide zones
|
|
9537
|
+
/* Mobile (<1024px): Show merged-bar, hide zones */
|
|
8838
9538
|
|
|
8839
9539
|
@media (width <= 1023px) {
|
|
8840
9540
|
/* Presets with mergedBar: top (admin, moolti, game, docs) */
|
|
@@ -8849,7 +9549,8 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
8849
9549
|
[data-layout='moolti'] .dndev-layout,
|
|
8850
9550
|
[data-layout='game'] .dndev-layout,
|
|
8851
9551
|
[data-layout='docs'] .dndev-layout {
|
|
8852
|
-
padding-top
|
|
9552
|
+
/* Remove padding-top - grid already accounts for header-height, mergedBar is fixed and doesn't affect grid flow */
|
|
9553
|
+
/* Content won't go under mergedBar because grid positions main after header row */
|
|
8853
9554
|
}
|
|
8854
9555
|
|
|
8855
9556
|
[data-layout='admin'] header[role='banner'],
|
|
@@ -9081,7 +9782,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
9081
9782
|
.breadcrumb-item {
|
|
9082
9783
|
display: inline-flex;
|
|
9083
9784
|
align-items: center;
|
|
9084
|
-
gap: var(--gap-
|
|
9785
|
+
gap: var(--gap-sm);
|
|
9085
9786
|
}
|
|
9086
9787
|
|
|
9087
9788
|
.breadcrumbs .separator,
|
|
@@ -9158,7 +9859,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
9158
9859
|
min-height: 0;
|
|
9159
9860
|
display: flex;
|
|
9160
9861
|
flex-direction: column;
|
|
9161
|
-
justify-content:
|
|
9862
|
+
justify-content: flex-start;
|
|
9162
9863
|
gap: var(--gap-lg);
|
|
9163
9864
|
/* Controlled by density system */
|
|
9164
9865
|
/* Default: centered */
|
|
@@ -9445,7 +10146,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
9445
10146
|
font-family: Roboto;
|
|
9446
10147
|
font-style: normal;
|
|
9447
10148
|
font-weight: 400;
|
|
9448
|
-
font-display:
|
|
10149
|
+
font-display: swap;
|
|
9449
10150
|
src: url('/fonts/Roboto-400-latin.woff2') format('woff2');
|
|
9450
10151
|
unicode-range: U+0000-00FF; /* Basic Latin - loads first for performance */
|
|
9451
10152
|
}
|
|
@@ -9454,7 +10155,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
9454
10155
|
font-family: Roboto;
|
|
9455
10156
|
font-style: normal;
|
|
9456
10157
|
font-weight: 700;
|
|
9457
|
-
font-display:
|
|
10158
|
+
font-display: swap;
|
|
9458
10159
|
src: url('/fonts/Roboto-700-latin.woff2') format('woff2');
|
|
9459
10160
|
unicode-range: U+0000-00FF; /* Basic Latin - loads first for performance */
|
|
9460
10161
|
}
|
|
@@ -9602,7 +10303,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
9602
10303
|
font-family: Inter;
|
|
9603
10304
|
font-style: normal;
|
|
9604
10305
|
font-weight: 400 700;
|
|
9605
|
-
font-display: optional
|
|
10306
|
+
font-display: swap; /* Changed from optional to swap - we preload this font */
|
|
9606
10307
|
src: url('/fonts/Inter-latin.woff2') format('woff2');
|
|
9607
10308
|
unicode-range:
|
|
9608
10309
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
@@ -9635,7 +10336,7 @@ footer[role='contentinfo'] a:not(.dndev-interactive):hover {
|
|
|
9635
10336
|
font-family: 'Playfair Display';
|
|
9636
10337
|
font-style: normal;
|
|
9637
10338
|
font-weight: 400 700;
|
|
9638
|
-
font-display:
|
|
10339
|
+
font-display: swap;
|
|
9639
10340
|
src: url('/fonts/PlayfairDisplay-latin.woff2') format('woff2');
|
|
9640
10341
|
unicode-range:
|
|
9641
10342
|
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|