Action: view_file({"path":"/app/design_guidelines.json"})
Observation: [Showing lines 1-129 of 129 total] /app/design_guidelines.json:
1|{
2| "project_name": "KacangKu Business Management Dashboard",
3| "theme": "Light",
4| "emotional_tone": "Warm, earthy, grounded, professional, high-efficiency",
5| "typography": {
6| "fonts": {
7| "heading": "Manrope",
8| "body": "IBM Plex Sans"
9| },
10| "hierarchy": {
11| "h1": "text-3xl sm:text-4xl font-extrabold tracking-tight text-stone-900",
12| "h2": "text-2xl sm:text-3xl font-bold tracking-tight text-stone-800",
13| "h3": "text-xl sm:text-2xl font-semibold text-stone-800",
14| "h4": "text-lg sm:text-xl font-medium text-stone-800",
15| "body": "text-sm sm:text-base text-stone-600 leading-relaxed",
16| "small_label": "text-xs font-semibold uppercase tracking-[0.2em] text-stone-500"
17| },
18| "rules": [
19| "Never use Inter for headings.",
20| "Apply tight letter spacing (tracking-tight) to all headings above 32px.",
21| "Use uppercase with wide tracking for overlines and small labels.",
22| "Prioritize legibility for high-volume data entry."
23| ]
24| },
25| "colors": {
26| "palette": {
27| "background": "#FAFAF9",
28| "surface": "#FFFFFF",
29| "primary": "#9A3412",
30| "primary_hover": "#7C2D12",
31| "success_cash": "#4D7C0F",
32| "warning_piutang": "#D97706",
33| "text_primary": "#1C1917",
34| "text_secondary": "#57534E",
35| "border": "#E7E5E4",
36| "sidebar_bg": "#F5F5F4",
37| "sidebar_active": "#E7E5E4"
38| },
39| "rules": [
40| "Do not use default generic blue. The primary color is a warm peanut/terracotta (#9A3412).",
41| "Cash transactions must use the success_cash color (Sage Green).",
42| "Receivables (Piutang) must use the warning_piutang color (Ochre/Amber) to alert pending payments.",
43| "Ensure all text meets APCA/WCAG contrast ratios.",
44| "Never use pure black or pure white without purpose; use tinted greys (Stone scale in Tailwind)."
45| ]
46| },
47| "layouts": {
48| "style": "High Density Dashboard",
49| "sidebar": "Fixed left sidebar with navigation links. Earthy light gray background (bg-stone-100).",
50| "main_content": "Responsive grid layout. Left-aligned content, high use of white space within widgets.",
51| "grid_strategy": {
52| "base": "grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4 md:gap-6",
53| "summary_cards": "col-span-1",
54| "main_charts_tables": "col-span-1 md:col-span-2 lg:col-span-3"
55| },
56| "spacing": "Generous internal padding for containers (p-6 or p-8) but tight grid gaps (gap-4 or gap-6) for density."
57| },
58| "surfaces_and_components": {
59| "cards": "Flat solid white (bg-white), max 8px border-radius (rounded-lg). 1px subtle border (border-stone-200), NO default shadow. Add shadow-sm and border-stone-300 on hover for interactive cards.",
60| "buttons": "Pill-shaped or rounded-md. Primary buttons use the terracotta color (bg-[#9A3412] hover:bg-[#7C2D12] text-white).",
61| "forms": "High efficiency required for 100 entries/day. Use Shadcn Input, Select, Checkbox. Left-aligned labels. Support clear keyboard navigation.",
62| "tables": "Dense rows for quick scanning. Clear status badges for 'Cash' vs 'Piutang'. Highlight outstanding balances.",
63| "badges": "Rounded-full px-2.5 py-0.5 text-xs font-semibold. Cash: bg-lime-100 text-lime-800. Piutang: bg-amber-100 text-amber-800.",
64| "rules": [
65| "Use Shadcn components but strip overly 'Vercel' looks by applying our Stone/Orange palette.",
66| "No complete transparent backgrounds for overlays, headers, or dropdowns. Always use solid or heavy blur.",
67| "Do not overuse shadows; rely on 1px borders for structural hierarchy."
68| ]
69| },
70| "motion": {
71| "hover_states": "Buttons and links must explicitly shift background and text color.",
72| "transitions": "transition-colors duration-200 ease-in-out, transition-transform duration-200 ease-in-out.",
73| "rules": [
74| "Do not use 'transition: all'. Apply to specific properties.",
75| "Subtle '-translate-y-1' on dashboard cards when hovered."
76| ]
77| },
78| "icons": {
79| "library": "lucide-react",
80| "style": "Crisp, line-art, matching the text_secondary color unless active/highlighted."
81| },
82| "media": {
83| "image_urls": {
84| "auth_banner_or_empty_state": {
85| "url": "https://images.unsplash.com/photo-1575399872095-9363bf262e64?crop=entropy&cs=srgb&fm=jpg&ixid=M3w3NTY2OTF8MHwxfHNlYXJjaHwyfHxwZWFudXRzJTIwcmF3fGVufDB8fHx8MTc4Njg0NTA2MXww&ixlib=rb-4.1.0&q=85",
86| "description": "Bunch of brown peanuts on a rustic wooden table. Use this as a subtle background banner for the dashboard header or login/welcome screen if needed."
87| }
88| },
89| "rules": [
90| "Keep imagery minimal. This is a functional data-entry tool.",
91| "If using the peanut image, ensure an overlay (e.g., bg-stone-900/40) is applied so text remains readable."
92| ]
93| },
94| "accessibility_and_testing": {
95| "testing": "All interactive and key informational elements MUST include a 'data-testid' attribute (e.g., data-testid='submit-purchase-btn', data-testid='outlet-row-1').",
96| "contrast": "Ensure text contrast on buttons and badges. Focus states must have a highly visible ring (focus-visible:ring-2 focus-visible:ring-[#9A3412])."
97| },
98| "features_to_implement": {
99| "dashboard": "Overview metrics (Total Pembelian, Total Penjualan, Total Piutang, Kas Hari Ini).",
100| "pembelian": "Form to record peanut purchases (Tanggal, Supplier, Qty, Harga). Table of history.",
101| "penjualan": "High-volume form for daily sales to outlets. Must select Outlet, enter Qty/Price, and select Cash or Piutang.",
102| "outlet_management": "CRUD for 700 outlets. Track outstanding 'Piutang' per outlet.",
103| "piutang_tracking": "List of outstanding debts per outlet. Form to record installment payments (cicilan).",
104| "laporan": "Date filters (Daily, Weekly, Monthly), summaries, and export capabilities (CSV/PDF simulation/print)."
105| },
106| "instructions_to_main_agent": [
107| "Prioritize building the Dashboard, Pembelian, Penjualan, and Piutang views using React Router.",
108| "Use Shadcn UI for structured components (Tables, Dialogs, Selects, Forms, Calendars for date selection).",
109| "Implement Sonner for toast notifications on successful data entry.",
110| "Mock data heavily to simulate 700 outlets and daily transactions to make the UI look alive.",
111| "Build a custom 'Installment Payment' dialog for the Piutang section.",
112| "Apply the earth-tone palette strictly (Stone neutral base + Terracotta primary + Sage/Amber status).",
113| "For 'Laporan' (Reports), implement a simple table with a 'Print' button (window.print()) as MVP functionality.",
114| "Ensure the layout is highly optimized for fast data entry (100 outlets/day). Minimize clicks in the Penjualan form."
115| ],
116| "UNIVERSAL_GUIDELINES_FOR_MAIN_AGENT": [
117| "You tend to converge toward generic outputs. Avoid this by strictly following the typography and earth-tone palette provided.",
118| "DO NOT use dark colors as gradients.",
119| "Create depth through layered design elements with z-index hierarchy and subtle borders.",
120| "You MUST NOT apply universal transition. Eg: `transition: all`.",
121| "You MUST NOT center align the app container. Do not add `.App { text-align: center; }`.",
122| "Always use modern button styles (rounded-md) with interaction animations.",
123| "NEVER use AI assistant Emoji characters like 🤖🧠ðŸ’💡🔮🎯 etc for icons. Use lucide-react.",
124| "Every interaction needs micro-animations - hover states, and transitions.",
125| "Use generous spacing inside cards, but keep dashboard grids dense.",
126| "Prioritize using pre-existing components from src/components/ui when applicable.",
127| "Use sonner for toasts, located in /app/src/components/ui/sonner.tsx."
128| ]
129|}
[End of file]
Hook konten
Berdasarkan gambar yang kamu lampirkan, itu adalah buku saku karya Rizqi Akbar Syah yang membahas strategi "Hook Konten." Sederhananya, Hook Konten adalah "umpan" atau detik-detik pertama dalam sebuah konten (video, tulisan, atau gambar) yang dirancang khusus untuk menghentikan orang dari aktivitas scrolling dan membuat mereka tertarik untuk menonton sampai habis. Berikut adalah rincian lebih mendalamnya: Kenapa Hook Itu Penting? Di dunia media sosial yang sangat cepat (seperti TikTok, Reels, atau Shorts), kamu hanya punya waktu sekitar 1 hingga 3 detik sebelum audiens memutuskan untuk lanjut atau tetap menonton. Jika hook-nya gagal, konten sebagus apa pun di bagian tengah tidak akan ada yang melihat. Jenis-Jenis Hook yang Sering Digunakan Dalam buku seperti yang ada di foto, biasanya dibahas beberapa teknik "pancingan" seperti: * Hook Visual: Menggunakan teks yang mencolok, gerakan yang tidak biasa, atau transisi yang cepat di awal video. * Hook Masala...
Komentar
Posting Komentar