diff --git a/src/app.css b/src/app.css
index 7e837d6..11e7763 100644
--- a/src/app.css
+++ b/src/app.css
@@ -9,6 +9,8 @@
@import "./styles/visualize.css";
@import "./styles/asciidoc.css";
@import "theme-tokens.css";
+@import "./styles/a/cards.css";
+@import "./styles/a/forms.css";
@import "./styles/a/primitives.css";
@layer theme, base, components, utilities;
@@ -183,28 +185,6 @@
@apply border border-primary-700;
}
- div.card-leather {
- @apply shadow-none text-primary-1000 border-s-4 bg-highlight
- border-primary-200 has-[:hover]:border-primary-700;
- @apply dark:bg-primary-1000 dark:border-primary-800
- dark:has-[:hover]:bg-primary-950 dark:has-[:hover]:border-primary-500;
- }
-
- div.card-leather h1,
- div.card-leather h2,
- div.card-leather h3,
- div.card-leather h4,
- div.card-leather h5,
- div.card-leather h6 {
- @apply text-gray-900 hover:text-primary-600 dark:text-gray-100
- dark:hover:text-primary-400;
- }
-
- div.card-leather .font-thin {
- @apply text-gray-900 hover:text-primary-700 dark:text-gray-100
- dark:hover:text-primary-300;
- }
-
main {
@apply max-w-full flex;
}
@@ -245,15 +225,6 @@
@apply text-gray-900 dark:text-gray-100;
}
- /* Responsive card styles */
- .responsive-card {
- @apply w-full min-w-0 overflow-hidden;
- }
-
- .responsive-card-content {
- @apply break-words overflow-hidden;
- }
-
h1.h-leather {
@apply text-4xl font-bold;
}
@@ -323,14 +294,6 @@
dark:hover:text-primary-400;
}
- div.skeleton-leather div {
- @apply bg-primary-100 dark:bg-primary-800;
- }
-
- div.skeleton-leather {
- @apply h-48;
- }
-
div.textarea-leather {
@apply bg-primary-50 dark:bg-primary-1000;
}
@@ -453,21 +416,6 @@
dark:hover:text-primary-400;
}
- /* Card with transition */
- .ArticleBox.grid .ArticleBoxImage {
- @apply max-h-0;
- transition: max-height 0.5s ease;
- }
-
- .ArticleBox.grid.active .ArticleBoxImage {
- @apply max-h-40;
- }
-
- .tags span {
- @apply bg-primary-50 text-primary-800 text-sm font-medium me-2 px-2.5 py-0.5
- rounded-sm dark:bg-primary-900 dark:text-primary-200;
- }
-
.npub-badge {
@apply inline-flex space-x-1 items-center text-primary-600
dark:text-primary-500 hover:underline me-2 px-2 py-0.5 rounded-sm border
diff --git a/src/lib/a/AGENTS.md b/src/lib/a/AGENTS.md
new file mode 100644
index 0000000..e34db9c
--- /dev/null
+++ b/src/lib/a/AGENTS.md
@@ -0,0 +1,938 @@
+# Alexandria Component Library - AI Agent Guide
+
+**Version:** 1.0.0
+**Last Updated:** October 4, 2025
+
+This guide provides comprehensive instructions for AI agents working with the Alexandria UI component library. Following these guidelines ensures consistency, maintainability, and proper integration with the existing codebase.
+
+---
+
+## Core Principles
+
+### 1. Always Check Before Creating
+Before creating any new UI component, **you must**:
+1. Search the existing component library in `src/lib/a/`
+2. Review `alexandria-components.json` for available components
+3. Check if an existing component can be reused or extended
+4. Only create new components when absolutely necessary
+
+### 2. Use alexandria-components.json as Your Reference
+The `alexandria-components.json` file is the **single source of truth** for all available components. It contains:
+- Complete component inventory (18 components across 5 categories)
+- Full prop definitions with types and defaults
+- Usage examples and patterns
+- Features and accessibility information
+
+**Always consult this file first** when selecting components.
+
+### 3. Maintain TSDoc Documentation Standards
+All components use **TSDoc format** for documentation. You must maintain this standard when creating or modifying components.
+
+---
+
+## Component Inventory
+
+### Available Categories
+1. **Primitives** (8 components) - Basic UI building blocks
+2. **Navigation** (2 components) - App navigation elements
+3. **Forms** (4 components) - Input and editing interfaces
+4. **Cards** (2 components) - Content display cards
+5. **Reader** (2 components) - Technical content controls
+
+---
+
+## Component Selection Workflow
+
+### Step 1: Identify the Need
+Determine what UI functionality is required:
+- User input? → Check **Forms** category
+- Display content? → Check **Cards** category
+- Navigation? → Check **Navigation** category
+- Basic UI element? → Check **Primitives** category
+- Technical content toggle? → Check **Reader** category
+
+### Step 2: Search alexandria-components.json
+
+For example: Finding a component for user profiles
+
+- Search for: "profile", "user", or relevant keywords
+- Result: AProfilePreview and ANostrUser are available
+
+### Step 3: Review Component Props
+Check the component's props in `alexandria-components.json`:
+```json
+{
+ "name": "AEventPreview",
+ "props": [
+ {
+ "name": "event",
+ "type": ["NDKEvent"],
+ "required": true,
+ "description": "The nostr event to display (required)"
+ },
+ {
+ "name": "showContent",
+ "type": ["boolean"],
+ "description": "Whether to show event content",
+ "required": false
+ }
+ // ... more props
+ ]
+}
+```
+
+### Step 4: Review Examples
+Check the `examples` array in `alexandria-components.json` for usage patterns.
+
+---
+
+## TSDoc Documentation Standard
+
+### Required Documentation Structure
+
+Every component **must** include TSDoc comments following this exact format:
+
+````typescript
+/**
+ * @fileoverview ComponentName Component - Alexandria
+ *
+ * A brief description of what the component does and its primary purpose.
+ * Can span multiple lines for detailed explanation.
+ *
+ * @component
+ * @category [Primitives|Navigation|Forms|Cards|Reader]
+ *
+ * @prop {type} [propName] - Prop description (if optional)
+ * @prop {type} propName - Prop description (if required)
+ * @prop {type} [propName=defaultValue] - Prop with default value
+ *
+ * @example
+ * ```svelte
+ *