your-ai-workflow-firebase-os 1.2.21 → 1.2.22

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "your-ai-workflow-firebase-os",
3
- "version": "1.2.21",
3
+ "version": "1.2.22",
4
4
  "description": "A complete Firebase-powered admin OS — one React component.",
5
5
  "type": "module",
6
6
  "main": "dist/your-ai-workflow-firebase-os.cjs.js",
@@ -114,6 +114,20 @@ copyConfig('forms/contactForm.config.ts', 'contactForm.config.ts');
114
114
  copyConfig('forms/supportForm.config.ts', 'supportForm.config.ts');
115
115
  console.log(' ✓ Copied configuration files to your src/your-ai-workflow-firebase-os/configs directory');
116
116
 
117
+ // Copy microcomponents examples
118
+ const microcomponentsSourceDir = path.join(__dirname, '..', 'src', 'microcomponents');
119
+ const microcomponentsDestDir = path.join(fbosDir, 'microcomponents');
120
+ if (fs.existsSync(microcomponentsSourceDir)) {
121
+ if (!fs.existsSync(microcomponentsDestDir)) fs.mkdirSync(microcomponentsDestDir, { recursive: true });
122
+ const files = fs.readdirSync(microcomponentsSourceDir);
123
+ for (const file of files) {
124
+ if (file.endsWith('.tsx')) {
125
+ fs.copyFileSync(path.join(microcomponentsSourceDir, file), path.join(microcomponentsDestDir, file));
126
+ }
127
+ }
128
+ console.log(' ✓ Copied microcomponent examples to your src/your-ai-workflow-firebase-os/microcomponents directory');
129
+ }
130
+
117
131
  // Read and rewrite Home.tsx
118
132
  const sourceHomePath = path.join(__dirname, '..', 'src', 'pages', 'Home.tsx');
119
133
  if (fs.existsSync(sourceHomePath)) {
@@ -3,42 +3,38 @@ export const publicPagePrompt = (config: any, forms: string[] = []) => {
3
3
  .toLowerCase().replace(/[^a-z0-9]+/g, '_');
4
4
  const microName = `${parsedPageName.charAt(0).toUpperCase()}${parsedPageName.slice(1)}Content`;
5
5
 
6
- return `I need your help building the inner content for a newly created Public Page. This page is powered by the \`PublicPageTemplate\` (located at \`src/templates/PublicPageTemplate.tsx\`).
7
-
8
- The page "infrastructure" (routing, header, public accessibility) is already set up and working. Your goal is to design the "Landing Content" that lives inside this page.
9
-
10
- ### ── Current Page Configuration ──────────────────────────────────────────────
11
- \`\`\`json
12
- ${JSON.stringify({
13
- pageName: config.pageName,
14
- pageTitle: config.pageTitle,
15
- route: config.route,
16
- template: config.template,
17
- }, null, 2)}
18
- \`\`\`
6
+ return `Create a microcomponent for the Public Landing Page: \`${config.pageName}\`.
7
+
8
+ ### ── Context ────────────────────────────────────────────────────────────────
9
+ - **Route**: \`${config.route}\`
10
+ - **Examples Folder**: Check \`src/your-ai-workflow-firebase-os/microcomponents/\` for reference examples of how to build and insert microcomponents.
19
11
 
20
12
  ### ── Available Forms ────────────────────────────────────────────────────────
21
- The following public forms are available in the system. **These are for your information only—do NOT use them unless specifically needed.** Your priority is to listen to the user's specific input and decide if a particular modal, form, or component is actually required for the context of this page:
22
13
  ${forms.length > 0 ? forms.map(f => `- ${f}`).join('\n') : '- No public forms found'}
14
+ Use these only if specifically requested by the user.
15
+
16
+ ### ── Your Task ──────────────────────────────────────────────────────────────
17
+ 1. **Create Microcomponent**: Build \`src/microcomponents/${microName}.tsx\`.
18
+ 2. **Build Content**: Implement landing page content (hero sections, features, etc).
19
+ 3. **Register Route**: In \`src/App.tsx\`, map your microcomponent to the \`customRoutes\` prop of \`<FirebaseOS>\`:
20
+
21
+ \`\`\`tsx
22
+ import { ${microName} } from './microcomponents/${microName}';
23
+
24
+ // Inside App.tsx:
25
+ <FirebaseOS
26
+ customRoutes={{
27
+ '${config.route}': ${microName}
28
+ }}
29
+ // ...
30
+ />
31
+ \`\`\`
23
32
 
24
- ### ── Your Mission ────────────────────────────────────────────────────────────
25
- 1. **Create the Content Layer**: Design a new micro-component at \`src/microcomponents/${microName}.tsx\`.
26
- 2. **Build the UI**: Inside this component, build the landing page content (hero sections, feature grids, contact sections, etc.).
27
- 3. **Inject into Template**: Once created, import and place \`<${microName} />\` inside the main content area of \`src/templates/PublicPageTemplate.tsx\`, replacing the placeholder robot icon and default text.
28
-
29
- ### ── Guardrails ─────────────────────────────────────────────────────────────
30
- - **DO NOT** modify the outer layout of \`PublicPageTemplate.tsx\` (back buttons, page header, footer, dynamic title).
31
- - **DO NOT** change the routing or page exports.
32
- - Focus exclusively on the inner content box using the micro-component strategy.
33
-
34
- ### ── Aesthetic & Performance (Theme System) ───────────────────────────────
35
- Build with the user's active theme in mind:
36
- - **CSS Variables**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-bg)\`, \`var(--panel-border)\`.
37
- - **Components**: Re-use \`<Button />\`, \`<Input />\`, \`<ConfirmModal />\`, and \`<ContactPopup />\` natively.
38
- - **Styles**: Use the \`glass-panel\` class for sections and \`text-gradient\` for headers.
39
-
40
- ### ── Important Formatting Rules ──────────────────────────────────────────────
41
- - **NO REDUNDANT HEADERS**: The parent template already injects a large dynamic page title and action buttons. DO NOT add a main \`<h1>\` or \`<h2>\` page title at the top of your micro-component. Start directly with your cards, lists, or sub-sections.
33
+ ### ── Guidelines ─────────────────────────────────────────────────────────────
34
+ - **Use Theme Tokens**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-border)\`.
35
+ - **Pre-built UI**: Import \`{ Button, Input, ContactPopup }\` from \`your-ai-workflow-firebase-os\`.
36
+ - **Layout**: Use \`glass-panel\` class for sections. DO NOT add redundant \`<h1>\` page titles (the layout handles this).
37
+ - **DO NOT create React Router routes**. Only use the \`customRoutes\` mapping.
42
38
 
43
39
  [WHAT SHOULD I BUILD ON THIS PUBLIC PAGE?]`;
44
40
  };
@@ -3,61 +3,37 @@ export const adminCrudPrompt = (config: any, recordsCollection: string) => {
3
3
  .toLowerCase().replace(/[^a-z0-9]+/g, '_');
4
4
  const microName = `${parsedTabName.charAt(0).toUpperCase()}${parsedTabName.slice(1)}Content`;
5
5
 
6
- return `I need your help building the inner functionality for an **already existing** Admin View. This view is powered by the \`AdminPageTemplate\` (located at \`src/templates/AdminPageTemplate.tsx\`).
7
-
8
- The "infrastructure" (routing, header, database connection) is entirely set up and functioning. Your goal is to design the "Dashboard Content" that lives inside this specific admin view.
9
-
10
- ### ── Current View Configuration ──────────────────────────────────────────────
11
- \`\`\`json
12
- ${JSON.stringify({
13
- viewName: config.tabName,
14
- viewTitle: config.tabTitle,
15
- route: config.route,
16
- template: config.template,
17
- storageEnabled: !!config.storage,
18
- showActionButton: !!config.showButton,
19
- buttonStyle: config.buttonAction || 'primary',
20
- }, null, 2)}
21
- \`\`\`
6
+ return `Create a microcomponent for the Admin view: \`${config.tabName}\`.
22
7
 
23
- ### ── Note on Forms ──────────────────────────────────────────────────────────
24
- **No forms are needed for this view.** Focus on building the administrative dashboard and management tools requested by the user.
8
+ ### ── Context ────────────────────────────────────────────────────────────────
9
+ - **Route**: \`${config.route}\`
10
+ - **Data Collection**: \`${recordsCollection}\`
11
+ - **Storage**: ${config.storage ? "Enabled (admin_files/)" : "Disabled"}
12
+ - **Examples Folder**: Check \`src/your-ai-workflow-firebase-os/microcomponents/\` for reference examples of how to build and insert microcomponents.
25
13
 
26
- ### ── Data & Storage Architecture ─────────────────────────────────────────────
27
- The app is already configured to handle data for this specific view using these paths:
28
- - **Firestore Collection**: \`${recordsCollection}\` (Use this for all view data).
29
- - **Storage Layer**: ${config.storage ? "Enabled. Uploads are handled via \`admin_files/\` folder in Storage and mirrored to a shared Firestore collection for tracking." : "Disabled for this view."}
30
- - **Access Level**: Full Admin Access. This view is only visible to users with the 'admin' role.
14
+ ### ── Your Task ──────────────────────────────────────────────────────────────
15
+ 1. **Create Microcomponent**: Build \`src/microcomponents/${microName}.tsx\`. Include \`<DashboardNav />\` from \`your-ai-workflow-firebase-os\` at the top.
16
+ 2. **Handle UX/UI**: Implement the required admin dashboard interface (charts, lists, management tools). Write your own Firebase queries using the provided collection. No forms are needed.
17
+ 3. **Register Route**: In \`src/App.tsx\`, map your microcomponent to the \`customRoutes\` prop of \`<FirebaseOS>\`:
31
18
 
32
- ### ── Your Mission ────────────────────────────────────────────────────────────
33
- 1. **Create the Page**: Create a full page component at \`src/pages/\${microName}Page.tsx\`. Include \`<DashboardNav />\` from \`your-ai-workflow-firebase-os\` at the top of the content area.
34
- 2. **Handle UX/UI**: Inside this component, build the interface (lists, charts, management forms, or any feature requested).
35
- 3. **Register the Route**: Open \`src/App.tsx\` and map this component to the \`customRoutes\` prop of \`<FirebaseOS>\`:
36
19
  \`\`\`tsx
37
- import { \${microName}Page } from './pages/\${microName}Page';
20
+ import { ${microName} } from './microcomponents/${microName}';
38
21
 
39
22
  // Inside App.tsx:
40
23
  <FirebaseOS
41
24
  customRoutes={{
42
- '\${config.route}': \${microName}Page
25
+ '${config.route}': ${microName}
43
26
  }}
44
27
  // ...
45
28
  />
46
29
  \`\`\`
47
30
 
48
- ### ── Guardrails ─────────────────────────────────────────────────────────────
49
- - **CRITICAL: DO NOT CREATE A NEW ROUTE IN REACT ROUTER.** You are only mapping a component to an existing dynamic route via \\\`customRoutes\\\`.
50
- - **Database Logic**: You must write your own database queries inside the component using the provided collection names.
51
-
52
- ### ── Aesthetic & Performance (Theme System) ───────────────────────────────
53
- Build with the user's active theme in mind:
54
- - **CSS Variables**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-bg)\`, \`var(--panel-border)\`.
55
- - **Components**: Re-use \`<Button />\`, \`<Input />\`, \`<ConfirmModal />\`, and \`<DashboardNav />\` natively.
56
- - **Styles**: Use \`glass-panel\` and \`text-gradient\` for a premium look.
57
- - **Example**: See \`src/microcomponents/AdminExampleContent.tsx\` for a structural reference.
58
-
59
- ### ── Important Formatting Rules ──────────────────────────────────────────────
60
- - **NO REDUNDANT HEADERS**: The parent template already injects a large dynamic page title and action buttons. DO NOT add a main \`<h1>\` or \`<h2>\` page title at the top of your micro-component. Start directly with your cards, lists, or sub-sections.
31
+ ### ── Guidelines ─────────────────────────────────────────────────────────────
32
+ - **Use Theme Tokens**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-border)\`.
33
+ - **Pre-built UI**: Import \`{ Button, Input, ConfirmModal }\` from \`your-ai-workflow-firebase-os\`.
34
+ - **Layout**: Use \`glass-panel\` class for cards. DO NOT add redundant \`<h1>\` page titles (the layout handles this).
35
+ - **DO NOT create React Router routes**. Only use the \`customRoutes\` mapping.
61
36
 
62
37
  [WHAT FEATURES SHOULD I ADD TO THIS ADMIN VIEW?]`;
63
38
  };
39
+
@@ -1,65 +1,39 @@
1
- export const privateCrudPrompt = (config: any, recordsCollection: string, forms: string[] = []) => {
1
+ export const privateCrudPrompt = (config: any, recordsCollection: string) => {
2
2
  const parsedTabName = (config.tabName || config.pageId || 'private_page')
3
3
  .toLowerCase().replace(/[^a-z0-9]+/g, '_');
4
4
  const microName = `${parsedTabName.charAt(0).toUpperCase()}${parsedTabName.slice(1)}Content`;
5
5
 
6
- return `I need your help building the inner functionality for an **already existing** Private User View. This view is powered by the \`PrivatePageTemplate\` (located at \`src/templates/PrivatePageTemplate.tsx\`).
6
+ return `Create a microcomponent for the Private view: \`${config.tabName}\`.
7
7
 
8
- The "infrastructure" (auth-guards, dynamic routing, navigation menus, database sync) is entirely set up and functioning. Your task is strictly to design the "Dashboard Content" that lives inside this specific user view.
8
+ ### ── Context ────────────────────────────────────────────────────────────────
9
+ - **Route**: \`${config.route}\`
10
+ - **Data Collection**: \`${recordsCollection}\`
11
+ - **Storage**: ${config.storage ? "Enabled (user_files/)" : "Disabled"}
12
+ - **Security**: Data must be filtered by \`where('uid', '==', user.uid)\`.
13
+ - **Examples Folder**: Check \`src/your-ai-workflow-firebase-os/microcomponents/\` for reference examples of how to build and insert microcomponents.
9
14
 
10
- ### ── Current View Configuration ──────────────────────────────────────────────
11
- \`\`\`json
12
- ${JSON.stringify({
13
- viewName: config.tabName,
14
- viewTitle: config.tabTitle,
15
- route: config.route,
16
- template: config.template,
17
- storageEnabled: !!config.storage,
18
- showActionButton: !!config.showButton,
19
- availablePrivateForms: forms,
20
- }, null, 2)}
21
- \`\`\`
22
-
23
- ### ── Available Forms ────────────────────────────────────────────────────────
24
- The following private forms are available in the system. **These are for your information only—do NOT use them unless specifically needed.** Your priority is to listen to the user's specific input and decide if a particular modal, form, or component is actually required for the context of this page:
25
- ${forms.length > 0 ? forms.map(f => `- ${f}`).join('\n') : '- No private forms found'}
26
-
27
- ### ── Data & Storage Architecture ─────────────────────────────────────────────
28
- Every user sees their own unique data on this page. The system is rigged to handle this isolation:
29
- - **Firestore Collection**: \`${recordsCollection}\`. The template already filters this by \`uid == current_user.uid\`. Use this for all record storage.
30
- - **Storage Layer**: ${config.storage ? "Enabled. User files are saved to \`user_files/\` and strictly isolated by user ID." : "Disabled for this view."}
31
- - **Access Level**: Private. Only the owner of the data can view or modify these records.
15
+ ### ── Your Task ──────────────────────────────────────────────────────────────
16
+ 1. **Create Microcomponent**: Build \`src/microcomponents/${microName}.tsx\`. Include \`<DashboardNav />\` from \`your-ai-workflow-firebase-os\` at the top.
17
+ 2. **Handle UX/UI**: Implement the required private dashboard interface (charts, lists, management tools). Write your own Firebase queries using the provided collection. No forms are needed.
18
+ 3. **Register Route**: In \`src/App.tsx\`, map your microcomponent to the \`customRoutes\` prop of \`<FirebaseOS>\`:
32
19
 
33
- ### ── Your Mission ────────────────────────────────────────────────────────────
34
- 1. **Create the Page**: Create a full page component at \`src/pages/\${microName}Page.tsx\`. Include \`<DashboardNav />\` from \`your-ai-workflow-firebase-os\` at the top of the content area.
35
- 2. **Handle UX/UI**: Inside this component, build the interface (lists, charts, forms, etc).
36
- 3. **Register the Route**: Open \`src/App.tsx\` and map this component to the \`customRoutes\` prop of \`<FirebaseOS>\`:
37
20
  \`\`\`tsx
38
- import { \${microName}Page } from './pages/\${microName}Page';
21
+ import { ${microName} } from './microcomponents/${microName}';
39
22
 
40
23
  // Inside App.tsx:
41
24
  <FirebaseOS
42
25
  customRoutes={{
43
- '\${config.route}': \${microName}Page
26
+ '${config.route}': ${microName}
44
27
  }}
45
28
  // ...
46
29
  />
47
30
  \`\`\`
48
31
 
49
- ### ── Guardrails ─────────────────────────────────────────────────────────────
50
- - **CRITICAL: DO NOT CREATE A NEW ROUTE IN REACT ROUTER.** You are only mapping a component to an existing dynamic route via \\\`customRoutes\\\`.
51
- - **Database Logic**: You must write your own database queries inside the component using the provided collection names.
52
- - Re-use the \`ContactPopup\` component with the available private forms if the user needs to submit requests.
53
-
54
- ### ── Aesthetic & Performance (Theme System) ───────────────────────────────
55
- Build with the user's active theme in mind:
56
- - **CSS Variables**: Use \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-bg)\`, \`var(--panel-border)\`.
57
- - **Components**: Re-use \`<Button />\`, \`<Input />\`, \`<ConfirmModal />\`, and \`<DashboardNav />\` natively.
58
- - **Styles**: Use \`glass-panel\` and \`text-gradient\` for a premium look.
59
- - **Example**: See \`src/microcomponents/PrivateExampleContent.tsx\` for a structural reference.
60
-
61
- ### ── Important Formatting Rules ──────────────────────────────────────────────
62
- - **NO REDUNDANT HEADERS**: The parent template already injects a large dynamic page title and action buttons. DO NOT add a main \`<h1>\` or \`<h2>\` page title at the top of your micro-component. Start directly with your cards, lists, or sub-sections.
32
+ ### ── Guidelines ─────────────────────────────────────────────────────────────
33
+ - **Use Theme Tokens**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-border)\`.
34
+ - **Pre-built UI**: Import \`{ Button, Input, ConfirmModal }\` from \`your-ai-workflow-firebase-os\`.
35
+ - **Layout**: Use \`glass-panel\` class for cards. DO NOT add redundant \`<h1>\` page titles (the layout handles this).
36
+ - **DO NOT create React Router routes**. Only use the \`customRoutes\` mapping.
63
37
 
64
38
  [WHAT SHOULD I BUILD INSIDE THIS PRIVATE VIEW?]`;
65
39
  };
@@ -3,61 +3,37 @@ export const sharedCrudPrompt = (config: any, recordsCollection: string) => {
3
3
  .toLowerCase().replace(/[^a-z0-9]+/g, '_');
4
4
  const microName = `${parsedTabName.charAt(0).toUpperCase()}${parsedTabName.slice(1)}Content`;
5
5
 
6
- return `I need your help building the inner functionality for an **already existing** Shared Member View. This view is powered by the \`SharedPageTemplate\` (located at \`src/templates/SharedPageTemplate.tsx\`).
6
+ return `Create a microcomponent for the Shared view: \`${config.tabName}\`.
7
7
 
8
- The "infrastructure" (real-time sync, collaborative routing) is entirely set up and functioning. Your goal is to design the "Community Content" that lives inside this specific shared view.
8
+ ### ── Context ────────────────────────────────────────────────────────────────
9
+ - **Route**: \`${config.route}\`
10
+ - **Data Collection**: \`${recordsCollection}\`
11
+ - **Storage**: ${config.storage ? "Enabled (mem_files/)" : "Disabled"}
12
+ - **Security**: Data is visible to all authenticated members. Only admins and the original creator can edit/delete.
13
+ - **Examples Folder**: Check \`src/your-ai-workflow-firebase-os/microcomponents/\` for reference examples of how to build and insert microcomponents.
9
14
 
10
- ### ── Current View Configuration ──────────────────────────────────────────────
11
- \`\`\`json
12
- ${JSON.stringify({
13
- viewName: config.tabName,
14
- viewTitle: config.tabTitle,
15
- route: config.route,
16
- template: config.template,
17
- storageEnabled: !!config.storage,
18
- showActionButton: !!config.showButton,
19
- }, null, 2)}
20
- \`\`\`
21
-
22
- ### ── Note on Forms ──────────────────────────────────────────────────────────
23
- **No forms are needed for this view.** Focus on building the collaborative features and shared content areas requested by the user.
24
-
25
- ### ── Data & Storage Architecture ─────────────────────────────────────────────
26
- All logged-in members share the data on this page. The system is configured for collaboration:
27
- - **Firestore Collection**: \`${recordsCollection}\`. All authenticated users can read and create records here. The template ensures only creators can edit/delete their own items.
28
- - **Storage Layer**: ${config.storage ? "Enabled. Shared files are saved to \`mem_files/\` and are visible to all members." : "Disabled for this view."}
29
- - **Access Level**: Shared Member Access. Requires authentication.
15
+ ### ── Your Task ──────────────────────────────────────────────────────────────
16
+ 1. **Create Microcomponent**: Build \`src/microcomponents/${microName}.tsx\`. Include \`<DashboardNav />\` from \`your-ai-workflow-firebase-os\` at the top.
17
+ 2. **Handle UX/UI**: Implement the required shared dashboard interface (charts, lists, management tools). Write your own Firebase queries using the provided collection. No forms are needed.
18
+ 3. **Register Route**: In \`src/App.tsx\`, map your microcomponent to the \`customRoutes\` prop of \`<FirebaseOS>\`:
30
19
 
31
- ### ── Your Mission ────────────────────────────────────────────────────────────
32
- 1. **Create the Page**: Create a full page component at \`src/pages/\${microName}Page.tsx\`. Include \`<DashboardNav />\` from \`your-ai-workflow-firebase-os\` at the top of the content area.
33
- 2. **Handle UX/UI**: Inside this component, build the collaborative interface (group lists, message boards, shared resource trackers).
34
- 3. **Register the Route**: Open \`src/App.tsx\` and map this component to the \`customRoutes\` prop of \`<FirebaseOS>\`:
35
20
  \`\`\`tsx
36
- import { \${microName}Page } from './pages/\${microName}Page';
21
+ import { ${microName} } from './microcomponents/${microName}';
37
22
 
38
23
  // Inside App.tsx:
39
24
  <FirebaseOS
40
25
  customRoutes={{
41
- '\${config.route}': \${microName}Page
26
+ '${config.route}': ${microName}
42
27
  }}
43
28
  // ...
44
29
  />
45
30
  \`\`\`
46
31
 
47
- ### ── Guardrails ─────────────────────────────────────────────────────────────
48
- - **CRITICAL: DO NOT CREATE A NEW ROUTE IN REACT ROUTER.** You are only mapping a component to an existing dynamic route via \\\`customRoutes\\\`.
49
- - **Database Logic**: You must write your own database queries inside the component using the provided collection names.
50
- - **NEVER** expose administrative control settings in this shared view.
51
-
52
- ### ── Aesthetic & Performance (Theme System) ───────────────────────────────
53
- Build with the user's active theme in mind:
54
- - **CSS Variables**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-bg)\`, \`var(--panel-border)\`.
55
- - **Components**: Re-use \`<Button />\`, \`<Input />\`, \`<ConfirmModal />\`, and \`<DashboardNav />\` natively.
56
- - **Styles**: Use \`glass-panel\` and \`text-gradient\` for a premium look.
57
- - **Example**: See \`src/microcomponents/SharedExampleContent.tsx\` for a structural reference.
58
-
59
- ### ── Important Formatting Rules ──────────────────────────────────────────────
60
- - **NO REDUNDANT HEADERS**: The parent template already injects a large dynamic page title and action buttons. DO NOT add a main \`<h1>\` or \`<h2>\` page title at the top of your micro-component. Start directly with your cards, lists, or sub-sections.
32
+ ### ── Guidelines ─────────────────────────────────────────────────────────────
33
+ - **Use Theme Tokens**: \`var(--bg-color)\`, \`var(--fg-color)\`, \`var(--accent-color)\`, \`var(--panel-border)\`.
34
+ - **Pre-built UI**: Import \`{ Button, Input, ConfirmModal }\` from \`your-ai-workflow-firebase-os\`.
35
+ - **Layout**: Use \`glass-panel\` class for cards. DO NOT add redundant \`<h1>\` page titles (the layout handles this).
36
+ - **DO NOT create React Router routes**. Only use the \`customRoutes\` mapping.
61
37
 
62
- [WHAT SHARED FEATURE SHOULD I BUILD IN THIS VIEW?]`;
38
+ [WHAT FEATURES SHOULD I ADD TO THIS SHARED VIEW?]`;
63
39
  };
@@ -56,7 +56,7 @@ export function PrivatePageTemplate({ config }: { config: any }) {
56
56
  const [editNote, setEditNote] = useState('');
57
57
  const [editFields, setEditFields] = useState<{key: string; value: string}[]>([]);
58
58
  const fileInputRef = useRef<HTMLInputElement>(null);
59
- const [availableForms, setAvailableForms] = useState<string[]>([]);
59
+
60
60
 
61
61
  const parsedTabName = (config.tabName || config.pageId || 'private_page')
62
62
  .toLowerCase().replace(/[^a-z0-9]+/g, '_');
@@ -65,7 +65,7 @@ export function PrivatePageTemplate({ config }: { config: any }) {
65
65
  useEffect(() => {
66
66
  document.title = config.tabTitle || config.tabName || themeConfig.appName || 'Firebase OS';
67
67
  getDocs(collection(db, 'sys_forms')).then(snap => {
68
- setAvailableForms(snap.docs.filter(d => d.data().formType === 'private').map(doc => doc.id));
68
+
69
69
  });
70
70
  }, [config.tabTitle, config.tabName, themeConfig.appName]);
71
71
 
@@ -411,7 +411,7 @@ export function PrivatePageTemplate({ config }: { config: any }) {
411
411
  };
412
412
 
413
413
  // ── Prompt text ───────────────────────────────────────────────────────────
414
- const promptText = privateCrudPrompt(config, recordsCollection, availableForms);
414
+ const promptText = privateCrudPrompt(config, recordsCollection);
415
415
 
416
416
  const handleCopyPrompt = () => {
417
417
  navigator.clipboard.writeText(promptText);