@morphika/andami 0.5.1 → 0.5.2
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/app/admin/assets/page.tsx +6 -6
- package/app/admin/database/page.tsx +302 -302
- package/app/admin/error.tsx +53 -53
- package/app/admin/layout.tsx +320 -320
- package/app/admin/navigation/page.tsx +255 -255
- package/app/admin/pages/[slug]/page.tsx +6 -6
- package/app/admin/pages/page.tsx +11 -11
- package/app/admin/projects/page.tsx +14 -14
- package/app/admin/setup/page.tsx +1 -1
- package/app/admin/styles/page.tsx +1 -1
- package/components/admin/MetadataEditor.tsx +6 -6
- package/components/admin/nav-builder/NavBuilder.tsx +1 -1
- package/components/admin/nav-builder/NavBuilderGrid.tsx +3 -3
- package/components/admin/nav-builder/NavGridCell.tsx +48 -48
- package/components/admin/nav-builder/NavGridItem.tsx +4 -4
- package/components/admin/nav-builder/NavItemSettings.tsx +331 -331
- package/components/admin/nav-builder/NavItemTypePicker.tsx +102 -102
- package/components/admin/nav-builder/NavLivePreview.tsx +1 -1
- package/components/admin/nav-builder/NavMobileLivePreview.tsx +226 -226
- package/components/admin/nav-builder/NavMobileSettings.tsx +242 -242
- package/components/admin/nav-builder/NavSettingsFields.tsx +514 -514
- package/components/admin/setup-wizard/BrandingStep.tsx +3 -3
- package/components/admin/setup-wizard/DatabaseStep.tsx +2 -2
- package/components/admin/setup-wizard/DoneStep.tsx +1 -1
- package/components/admin/setup-wizard/SetupWizard.tsx +4 -4
- package/components/admin/setup-wizard/StorageStep.tsx +2 -2
- package/components/admin/setup-wizard/WelcomeStep.tsx +2 -2
- package/components/admin/styles/ColorsEditor.tsx +2 -2
- package/components/admin/styles/FontsEditor.tsx +6 -6
- package/components/admin/styles/GridLayoutEditor.tsx +9 -9
- package/components/admin/styles/LinksButtonsEditor.tsx +5 -5
- package/components/admin/styles/TypographyEditor.tsx +6 -6
- package/components/admin/styles/shared.tsx +68 -68
- package/components/blocks/AudioBlockRenderer.tsx +286 -286
- package/components/blocks/MarqueeBlockRenderer.tsx +316 -0
- package/components/blocks/ProjectCarouselBlockRenderer.tsx +1 -1
- package/components/builder/BlockCardIcons.tsx +316 -316
- package/components/builder/BlockTypePicker.tsx +1 -1
- package/components/builder/BubbleIcons.tsx +90 -0
- package/components/builder/BuilderCanvas.tsx +2 -0
- package/components/builder/CanvasMinimap.tsx +2 -2
- package/components/builder/CoverSectionCanvas.tsx +363 -363
- package/components/builder/DeviceFrame.tsx +1 -1
- package/components/builder/DndWrapper.tsx +3 -3
- package/components/builder/InsertionLines.tsx +1 -1
- package/components/builder/SectionCardIcons.tsx +421 -320
- package/components/builder/SectionEditorBar.tsx +1 -1
- package/components/builder/SectionTypePicker.tsx +4 -4
- package/components/builder/SectionV2Canvas.tsx +1 -1
- package/components/builder/SectionV2Column.tsx +69 -67
- package/components/builder/SortableBlock.tsx +93 -73
- package/components/builder/SortableRow.tsx +27 -26
- package/components/builder/VirtualAssetGrid.tsx +2 -2
- package/components/builder/asset-browser/R2BrowserContent.tsx +11 -11
- package/components/builder/blockStyles.tsx +192 -185
- package/components/builder/color-picker/AlphaSlider.tsx +141 -141
- package/components/builder/color-picker/ColorInputs.tsx +105 -105
- package/components/builder/color-picker/EyedropperButton.tsx +74 -74
- package/components/builder/color-picker/HueSlider.tsx +124 -124
- package/components/builder/color-picker/SaturationCanvas.tsx +142 -142
- package/components/builder/color-picker/SwatchBar.tsx +93 -93
- package/components/builder/editors/AudioBlockEditor.tsx +242 -242
- package/components/builder/editors/BeforeAfterBlockEditor.tsx +360 -360
- package/components/builder/editors/ButtonBlockEditor.tsx +4 -4
- package/components/builder/editors/EnterAnimationPicker.tsx +2 -2
- package/components/builder/editors/HoverEffectPicker.tsx +2 -2
- package/components/builder/editors/ImageBlockEditor.tsx +2 -2
- package/components/builder/editors/ImageGridBlockEditor.tsx +4 -4
- package/components/builder/editors/MarqueeBlockEditor.tsx +621 -0
- package/components/builder/editors/ProjectCarouselBlockEditor.tsx +443 -443
- package/components/builder/editors/ProjectGridEditor.tsx +9 -9
- package/components/builder/editors/SpacerBlockEditor.tsx +5 -5
- package/components/builder/editors/StaggerSettings.tsx +109 -109
- package/components/builder/editors/TextBlockEditor.tsx +3 -3
- package/components/builder/editors/TextStylePicker.tsx +1 -1
- package/components/builder/editors/VideoBlockEditor.tsx +2 -2
- package/components/builder/editors/index.ts +11 -10
- package/components/builder/editors/shared.tsx +6 -6
- package/components/builder/live-preview/LiveAudioPreview.tsx +120 -120
- package/components/builder/live-preview/LiveBeforeAfterPreview.tsx +1 -1
- package/components/builder/live-preview/LiveImageGridPreview.tsx +10 -2
- package/components/builder/live-preview/LiveImagePreview.tsx +1 -1
- package/components/builder/live-preview/LiveMarqueePreview.tsx +39 -0
- package/components/builder/live-preview/LiveProjectCarouselPreview.tsx +1 -1
- package/components/builder/live-preview/LiveVideoPreview.tsx +1 -1
- package/components/builder/live-preview/ProjectCardWrapper.tsx +291 -291
- package/components/builder/settings-panel/AnimationTab.tsx +138 -138
- package/components/builder/settings-panel/BlockLayoutTab.tsx +7 -7
- package/components/builder/settings-panel/CardEntranceSection.tsx +114 -114
- package/components/builder/settings-panel/ColumnV2Settings.tsx +5 -5
- package/components/builder/settings-panel/CoverSectionLayoutTab.tsx +71 -71
- package/components/builder/settings-panel/CoverSectionSettings.tsx +335 -335
- package/components/builder/settings-panel/PageSettings.tsx +3 -3
- package/components/builder/settings-panel/ParallaxSlideSettings.tsx +2 -2
- package/components/builder/settings-panel/SectionV2AnimationTab.tsx +4 -4
- package/components/builder/settings-panel/SectionV2LayoutTab.tsx +356 -356
- package/components/builder/settings-panel/SectionV2Settings.tsx +14 -14
- package/components/builder/settings-panel/TRBLInputs.tsx +1 -1
- package/lib/animation/enter-types.ts +1 -0
- package/lib/animation/hover-effect-presets.ts +210 -210
- package/lib/animation/hover-effect-types.ts +1 -0
- package/lib/builder/block-registrations.ts +468 -417
- package/lib/builder/constants.ts +111 -111
- package/lib/builder/store-sections.ts +2 -2
- package/lib/builder/types-slices.ts +414 -414
- package/lib/builder/types.ts +4 -1
- package/lib/config/index.ts +27 -27
- package/lib/sanity/types.ts +98 -1
- package/lib/version.ts +1 -1
- package/package.json +1 -1
- package/sanity/schemas/blocks/audioBlock.ts +69 -69
- package/sanity/schemas/blocks/index.ts +12 -11
- package/sanity/schemas/blocks/marqueeBlock.ts +292 -0
- package/sanity/schemas/index.ts +120 -117
- package/styles/admin.css +85 -85
- package/styles/animations.css +237 -237
- package/styles/base.css +114 -114
package/sanity/schemas/index.ts
CHANGED
|
@@ -1,117 +1,120 @@
|
|
|
1
|
-
import page from "./page";
|
|
2
|
-
import pageSectionV2 from "./pageSectionV2";
|
|
3
|
-
import customSection from "./customSection";
|
|
4
|
-
import customSectionInstance from "./customSectionInstance";
|
|
5
|
-
import siteSettings from "./siteSettings";
|
|
6
|
-
import siteStyles from "./siteStyles";
|
|
7
|
-
import assetRegistry from "./assetRegistry";
|
|
8
|
-
import enterAnimationConfig from "./objects/enterAnimationConfig";
|
|
9
|
-
import hoverEffectConfig from "./objects/hoverEffectConfig";
|
|
10
|
-
import typewriterConfig from "./objects/typewriterConfig";
|
|
11
|
-
import parallaxSlide from "./objects/parallaxSlide";
|
|
12
|
-
import parallaxGroup from "./objects/parallaxGroup";
|
|
13
|
-
import coverSection from "./objects/coverSection";
|
|
14
|
-
import {
|
|
15
|
-
textBlock,
|
|
16
|
-
imageBlock,
|
|
17
|
-
imageGridBlock,
|
|
18
|
-
videoBlock,
|
|
19
|
-
spacerBlock,
|
|
20
|
-
buttonBlock,
|
|
21
|
-
beforeAfterBlock,
|
|
22
|
-
audioBlock,
|
|
23
|
-
projectGridBlock,
|
|
24
|
-
projectCarouselBlock,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
export
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
1
|
+
import page from "./page";
|
|
2
|
+
import pageSectionV2 from "./pageSectionV2";
|
|
3
|
+
import customSection from "./customSection";
|
|
4
|
+
import customSectionInstance from "./customSectionInstance";
|
|
5
|
+
import siteSettings from "./siteSettings";
|
|
6
|
+
import siteStyles from "./siteStyles";
|
|
7
|
+
import assetRegistry from "./assetRegistry";
|
|
8
|
+
import enterAnimationConfig from "./objects/enterAnimationConfig";
|
|
9
|
+
import hoverEffectConfig from "./objects/hoverEffectConfig";
|
|
10
|
+
import typewriterConfig from "./objects/typewriterConfig";
|
|
11
|
+
import parallaxSlide from "./objects/parallaxSlide";
|
|
12
|
+
import parallaxGroup from "./objects/parallaxGroup";
|
|
13
|
+
import coverSection from "./objects/coverSection";
|
|
14
|
+
import {
|
|
15
|
+
textBlock,
|
|
16
|
+
imageBlock,
|
|
17
|
+
imageGridBlock,
|
|
18
|
+
videoBlock,
|
|
19
|
+
spacerBlock,
|
|
20
|
+
buttonBlock,
|
|
21
|
+
beforeAfterBlock,
|
|
22
|
+
audioBlock,
|
|
23
|
+
projectGridBlock,
|
|
24
|
+
projectCarouselBlock,
|
|
25
|
+
marqueeBlock,
|
|
26
|
+
} from "./blocks";
|
|
27
|
+
|
|
28
|
+
// Re-export individual schemas for granular use by instances
|
|
29
|
+
export {
|
|
30
|
+
default as page,
|
|
31
|
+
} from "./page";
|
|
32
|
+
export {
|
|
33
|
+
default as siteSettings,
|
|
34
|
+
} from "./siteSettings";
|
|
35
|
+
export {
|
|
36
|
+
default as siteStyles,
|
|
37
|
+
} from "./siteStyles";
|
|
38
|
+
export {
|
|
39
|
+
default as assetRegistry,
|
|
40
|
+
} from "./assetRegistry";
|
|
41
|
+
export {
|
|
42
|
+
default as pageSectionV2,
|
|
43
|
+
} from "./pageSectionV2";
|
|
44
|
+
export {
|
|
45
|
+
default as customSection,
|
|
46
|
+
} from "./customSection";
|
|
47
|
+
export {
|
|
48
|
+
default as customSectionInstance,
|
|
49
|
+
} from "./customSectionInstance";
|
|
50
|
+
export {
|
|
51
|
+
default as enterAnimationConfig,
|
|
52
|
+
} from "./objects/enterAnimationConfig";
|
|
53
|
+
export {
|
|
54
|
+
default as hoverEffectConfig,
|
|
55
|
+
} from "./objects/hoverEffectConfig";
|
|
56
|
+
export {
|
|
57
|
+
default as typewriterConfig,
|
|
58
|
+
} from "./objects/typewriterConfig";
|
|
59
|
+
export {
|
|
60
|
+
default as parallaxSlide,
|
|
61
|
+
} from "./objects/parallaxSlide";
|
|
62
|
+
export {
|
|
63
|
+
default as parallaxGroup,
|
|
64
|
+
} from "./objects/parallaxGroup";
|
|
65
|
+
export {
|
|
66
|
+
default as coverSection,
|
|
67
|
+
} from "./objects/coverSection";
|
|
68
|
+
export {
|
|
69
|
+
textBlock,
|
|
70
|
+
imageBlock,
|
|
71
|
+
imageGridBlock,
|
|
72
|
+
videoBlock,
|
|
73
|
+
spacerBlock,
|
|
74
|
+
buttonBlock,
|
|
75
|
+
beforeAfterBlock,
|
|
76
|
+
audioBlock,
|
|
77
|
+
projectGridBlock,
|
|
78
|
+
projectCarouselBlock,
|
|
79
|
+
marqueeBlock,
|
|
80
|
+
} from "./blocks";
|
|
81
|
+
|
|
82
|
+
export const schemaTypes = [
|
|
83
|
+
// Documents
|
|
84
|
+
page,
|
|
85
|
+
siteSettings,
|
|
86
|
+
siteStyles,
|
|
87
|
+
assetRegistry,
|
|
88
|
+
|
|
89
|
+
// Structural objects
|
|
90
|
+
pageSectionV2,
|
|
91
|
+
customSection,
|
|
92
|
+
customSectionInstance,
|
|
93
|
+
|
|
94
|
+
// Reusable objects
|
|
95
|
+
enterAnimationConfig, // Enter animation system (Session 117)
|
|
96
|
+
hoverEffectConfig, // Unified hover effect system (Session 117)
|
|
97
|
+
typewriterConfig, // Typewriter config for textBlock (Session 117)
|
|
98
|
+
parallaxSlide, // Parallax V2 slide (Session 123)
|
|
99
|
+
parallaxGroup, // Parallax V2 group (Session 123)
|
|
100
|
+
coverSection, // Cover Section — proportional rows (Session 176)
|
|
101
|
+
|
|
102
|
+
// Blocks (11)
|
|
103
|
+
textBlock,
|
|
104
|
+
imageBlock,
|
|
105
|
+
imageGridBlock,
|
|
106
|
+
videoBlock,
|
|
107
|
+
spacerBlock,
|
|
108
|
+
buttonBlock,
|
|
109
|
+
beforeAfterBlock,
|
|
110
|
+
audioBlock,
|
|
111
|
+
projectGridBlock,
|
|
112
|
+
projectCarouselBlock,
|
|
113
|
+
marqueeBlock,
|
|
114
|
+
];
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Named alias for instance consumption.
|
|
118
|
+
* Instances import this and pass to composeSchemas().
|
|
119
|
+
*/
|
|
120
|
+
export const coreSchemas = schemaTypes;
|
package/styles/admin.css
CHANGED
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
/* ============================================
|
|
2
|
-
Admin Panel — Clean UI Override
|
|
3
|
-
Uses Inter (sans-serif) for admin, white bg,
|
|
4
|
-
clean hierarchy. Mono reserved for public site.
|
|
5
|
-
============================================ */
|
|
6
|
-
|
|
7
|
-
/* Admin shell: override dark defaults */
|
|
8
|
-
[data-admin] {
|
|
9
|
-
font-family: var(--font-sans);
|
|
10
|
-
background: #ffffff;
|
|
11
|
-
color: #1a1a1a;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
[data-admin] * {
|
|
15
|
-
cursor: auto;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* Admin typography scale */
|
|
19
|
-
[data-admin] h1 { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.01em; color: #111; }
|
|
20
|
-
[data-admin] h2 { font-size: 1.125rem; font-weight: 600; letter-spacing: -0.01em; color: #222; }
|
|
21
|
-
[data-admin] h3 { font-size: 0.9375rem; font-weight: 500; color: #333; }
|
|
22
|
-
|
|
23
|
-
/* Admin inputs */
|
|
24
|
-
[data-admin] input[type="text"],
|
|
25
|
-
[data-admin] input[type="password"],
|
|
26
|
-
[data-admin] input[type="email"],
|
|
27
|
-
[data-admin] input[type="url"],
|
|
28
|
-
[data-admin] input[type="number"],
|
|
29
|
-
[data-admin] textarea,
|
|
30
|
-
[data-admin] select {
|
|
31
|
-
font-family: var(--font-sans);
|
|
32
|
-
font-size: 0.8125rem;
|
|
33
|
-
border-radius: 0.5rem;
|
|
34
|
-
border: 1px solid #e5e5e5;
|
|
35
|
-
padding: 0.5rem 0.75rem;
|
|
36
|
-
transition: border-color 0.15s;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
[data-admin] input:focus,
|
|
40
|
-
[data-admin] textarea:focus,
|
|
41
|
-
[data-admin] select:focus {
|
|
42
|
-
border-color: #
|
|
43
|
-
outline: none;
|
|
44
|
-
box-shadow: 0 0 0 3px rgba(
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/* Admin buttons base */
|
|
48
|
-
[data-admin] .btn-primary {
|
|
49
|
-
background: #
|
|
50
|
-
color: white;
|
|
51
|
-
font-weight: 500;
|
|
52
|
-
font-size: 0.8125rem;
|
|
53
|
-
padding: 0.5rem 1.25rem;
|
|
54
|
-
border-radius: 0.5rem;
|
|
55
|
-
transition: all 0.15s;
|
|
56
|
-
}
|
|
57
|
-
[data-admin] .btn-primary:hover { background: #
|
|
58
|
-
[data-admin] .btn-primary:disabled { opacity: 0.4; }
|
|
59
|
-
|
|
60
|
-
[data-admin] .btn-secondary {
|
|
61
|
-
background: white;
|
|
62
|
-
color: #555;
|
|
63
|
-
font-weight: 500;
|
|
64
|
-
font-size: 0.8125rem;
|
|
65
|
-
padding: 0.5rem 1.25rem;
|
|
66
|
-
border-radius: 0.5rem;
|
|
67
|
-
border: 1px solid #e5e5e5;
|
|
68
|
-
transition: all 0.15s;
|
|
69
|
-
}
|
|
70
|
-
[data-admin] .btn-secondary:hover { border-color: #ccc; color: #111; }
|
|
71
|
-
|
|
72
|
-
/* Admin card base */
|
|
73
|
-
[data-admin] .admin-card {
|
|
74
|
-
background: white;
|
|
75
|
-
border: 1px solid #f0f0f0;
|
|
76
|
-
border-radius: 0.75rem;
|
|
77
|
-
padding: 1.5rem;
|
|
78
|
-
box-shadow: 0 1px 3px rgba(0,0,0,0.04);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/* Scrollbar for admin */
|
|
82
|
-
[data-admin] ::-webkit-scrollbar { width: 6px; }
|
|
83
|
-
[data-admin] ::-webkit-scrollbar-track { background: transparent; }
|
|
84
|
-
[data-admin] ::-webkit-scrollbar-thumb { background: #ddd; border-radius: 3px; }
|
|
85
|
-
[data-admin] ::-webkit-scrollbar-thumb:hover { background: #bbb; }
|
|
1
|
+
/* ============================================
|
|
2
|
+
Admin Panel — Clean UI Override
|
|
3
|
+
Uses Inter (sans-serif) for admin, white bg,
|
|
4
|
+
clean hierarchy. Mono reserved for public site.
|
|
5
|
+
============================================ */
|
|
6
|
+
|
|
7
|
+
/* Admin shell: override dark defaults */
|
|
8
|
+
[data-admin] {
|
|
9
|
+
font-family: var(--font-sans);
|
|
10
|
+
background: #ffffff;
|
|
11
|
+
color: #1a1a1a;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[data-admin] * {
|
|
15
|
+
cursor: auto;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Admin typography scale */
|
|
19
|
+
[data-admin] h1 { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.01em; color: #111; }
|
|
20
|
+
[data-admin] h2 { font-size: 1.125rem; font-weight: 600; letter-spacing: -0.01em; color: #222; }
|
|
21
|
+
[data-admin] h3 { font-size: 0.9375rem; font-weight: 500; color: #333; }
|
|
22
|
+
|
|
23
|
+
/* Admin inputs */
|
|
24
|
+
[data-admin] input[type="text"],
|
|
25
|
+
[data-admin] input[type="password"],
|
|
26
|
+
[data-admin] input[type="email"],
|
|
27
|
+
[data-admin] input[type="url"],
|
|
28
|
+
[data-admin] input[type="number"],
|
|
29
|
+
[data-admin] textarea,
|
|
30
|
+
[data-admin] select {
|
|
31
|
+
font-family: var(--font-sans);
|
|
32
|
+
font-size: 0.8125rem;
|
|
33
|
+
border-radius: 0.5rem;
|
|
34
|
+
border: 1px solid #e5e5e5;
|
|
35
|
+
padding: 0.5rem 0.75rem;
|
|
36
|
+
transition: border-color 0.15s;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[data-admin] input:focus,
|
|
40
|
+
[data-admin] textarea:focus,
|
|
41
|
+
[data-admin] select:focus {
|
|
42
|
+
border-color: #3580f9;
|
|
43
|
+
outline: none;
|
|
44
|
+
box-shadow: 0 0 0 3px rgba(53, 128, 249, 0.08);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Admin buttons base */
|
|
48
|
+
[data-admin] .btn-primary {
|
|
49
|
+
background: #3580f9;
|
|
50
|
+
color: white;
|
|
51
|
+
font-weight: 500;
|
|
52
|
+
font-size: 0.8125rem;
|
|
53
|
+
padding: 0.5rem 1.25rem;
|
|
54
|
+
border-radius: 0.5rem;
|
|
55
|
+
transition: all 0.15s;
|
|
56
|
+
}
|
|
57
|
+
[data-admin] .btn-primary:hover { background: #2d6dd4; }
|
|
58
|
+
[data-admin] .btn-primary:disabled { opacity: 0.4; }
|
|
59
|
+
|
|
60
|
+
[data-admin] .btn-secondary {
|
|
61
|
+
background: white;
|
|
62
|
+
color: #555;
|
|
63
|
+
font-weight: 500;
|
|
64
|
+
font-size: 0.8125rem;
|
|
65
|
+
padding: 0.5rem 1.25rem;
|
|
66
|
+
border-radius: 0.5rem;
|
|
67
|
+
border: 1px solid #e5e5e5;
|
|
68
|
+
transition: all 0.15s;
|
|
69
|
+
}
|
|
70
|
+
[data-admin] .btn-secondary:hover { border-color: #ccc; color: #111; }
|
|
71
|
+
|
|
72
|
+
/* Admin card base */
|
|
73
|
+
[data-admin] .admin-card {
|
|
74
|
+
background: white;
|
|
75
|
+
border: 1px solid #f0f0f0;
|
|
76
|
+
border-radius: 0.75rem;
|
|
77
|
+
padding: 1.5rem;
|
|
78
|
+
box-shadow: 0 1px 3px rgba(0,0,0,0.04);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Scrollbar for admin */
|
|
82
|
+
[data-admin] ::-webkit-scrollbar { width: 6px; }
|
|
83
|
+
[data-admin] ::-webkit-scrollbar-track { background: transparent; }
|
|
84
|
+
[data-admin] ::-webkit-scrollbar-thumb { background: #ddd; border-radius: 3px; }
|
|
85
|
+
[data-admin] ::-webkit-scrollbar-thumb:hover { background: #bbb; }
|