rahman-resources 1.0.0 → 1.2.0
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/lib/manifest.json +98 -8
- package/package.json +1 -1
package/lib/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 2,
|
|
3
|
-
"generatedAt": "2026-05-
|
|
3
|
+
"generatedAt": "2026-05-16T12:03:28.553Z",
|
|
4
4
|
"repo": "rahmanef63/resource-site",
|
|
5
5
|
"branch": "main",
|
|
6
6
|
"layouts": [
|
|
@@ -1623,12 +1623,12 @@
|
|
|
1623
1623
|
"slug": "icon-picker",
|
|
1624
1624
|
"title": "Notion-Style Icon Picker",
|
|
1625
1625
|
"category": "ui",
|
|
1626
|
-
"description": "Emoji + lucide icon picker with search, 10-color Notion palette, Twemoji/native toggle. One string stores emoji OR lucide:Name OR with ?c=hex tint — backwards-compat with raw-emoji fields.
|
|
1626
|
+
"description": "Emoji + lucide icon picker with search, 10-color Notion palette, Twemoji/native toggle, recents tracking. One string stores emoji OR lucide:Name OR with ?c=hex tint — backwards-compat with raw-emoji fields. Two variants: Popover (compact trigger) and Inline (full sheet/dialog use). Lifted 2026-05-16 from notion-page-clone — full implementation (19 files) including emoji-keywords search index, twemoji renderer, lucide-catalog, recents store, style-pref hook.",
|
|
1627
1627
|
"source": "notion-page-clone",
|
|
1628
1628
|
"install": "npx rahman-resources add icon-picker",
|
|
1629
1629
|
"npmPackages": [],
|
|
1630
1630
|
"exampleCode": "",
|
|
1631
|
-
"agentRecipe": "parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields.
|
|
1631
|
+
"agentRecipe": "Run `npx rr add icon-picker`. parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields. <IconPicker> wraps any trigger (Popover); <IconPickerInline> for sheets/dialogs. <DynamicIcon> renders from parsed value.",
|
|
1632
1632
|
"tags": [
|
|
1633
1633
|
"icon",
|
|
1634
1634
|
"emoji",
|
|
@@ -1638,6 +1638,42 @@
|
|
|
1638
1638
|
"notion"
|
|
1639
1639
|
]
|
|
1640
1640
|
},
|
|
1641
|
+
{
|
|
1642
|
+
"slug": "cta",
|
|
1643
|
+
"title": "Call to Action",
|
|
1644
|
+
"category": "ui",
|
|
1645
|
+
"description": "Brutalist call-to-action section — eyebrow label, serif headline, body, arrow CTA. Pair with CtaButton standalone for inline placements. Lifted 2026-05-16 from rahmanef.com; assumes Tailwind tracking-brutal / tracking-brutal-sm utilities OR drop them for the default tracking scale.",
|
|
1646
|
+
"source": "rahmanef.com",
|
|
1647
|
+
"install": "npx rahman-resources add cta",
|
|
1648
|
+
"npmPackages": [],
|
|
1649
|
+
"exampleCode": "",
|
|
1650
|
+
"agentRecipe": "Run `npx rr add cta`. <CtaView eyebrow title body href ctaLabel /> renders the full section; <CtaButton href label /> drops a standalone arrow button anywhere. Override tracking-brutal utilities in tailwind.config or swap for tracking-wide if your design system has no brutal preset.",
|
|
1651
|
+
"tags": [
|
|
1652
|
+
"ui",
|
|
1653
|
+
"marketing",
|
|
1654
|
+
"cta",
|
|
1655
|
+
"section",
|
|
1656
|
+
"brutalist"
|
|
1657
|
+
]
|
|
1658
|
+
},
|
|
1659
|
+
{
|
|
1660
|
+
"slug": "rate-limit",
|
|
1661
|
+
"title": "Rate Limit",
|
|
1662
|
+
"category": "infra",
|
|
1663
|
+
"description": "Convex-backed per-key request counter. Atomic check-and-increment via `consume` mutation; expired rows pruned by `_pruneExpired` internalMutation wired to a 5-min cron. Replaces single-replica in-memory Map so multi-replica Next deployments share buckets. Caller chooses key namespace (csp:<ip>, mcp:<ip>, oauth_token:<ip>). Lifted 2026-05-16 from rahmanef.com.",
|
|
1664
|
+
"source": "rahmanef.com",
|
|
1665
|
+
"install": "npx rahman-resources add rate-limit",
|
|
1666
|
+
"npmPackages": [],
|
|
1667
|
+
"exampleCode": "",
|
|
1668
|
+
"agentRecipe": "Run `npx rr add rate-limit`. Compose `rateLimitTables` into root convex/schema.ts. Wire `internal.features.rate_limit.mutations._pruneExpired` into convex/crons.ts every 5 min. Call `api.features.rate_limit.mutations.consume({ key, limit, windowMs })` from server-side handlers — keep a fail-open wrapper so a Convex outage doesn't 503 the route.",
|
|
1669
|
+
"tags": [
|
|
1670
|
+
"infra",
|
|
1671
|
+
"rate-limit",
|
|
1672
|
+
"convex",
|
|
1673
|
+
"backend",
|
|
1674
|
+
"throttle"
|
|
1675
|
+
]
|
|
1676
|
+
},
|
|
1641
1677
|
{
|
|
1642
1678
|
"slug": "contact-form-resend",
|
|
1643
1679
|
"title": "Contact Form + Resend",
|
|
@@ -2429,16 +2465,18 @@
|
|
|
2429
2465
|
"title": "Notion-Style Icon Picker",
|
|
2430
2466
|
"category": "ui",
|
|
2431
2467
|
"kind": "ui",
|
|
2432
|
-
"version": "0.
|
|
2433
|
-
"description": "Emoji + lucide icon picker with search, 10-color Notion palette, Twemoji/native toggle. One string stores emoji OR lucide:Name OR with ?c=hex tint — backwards-compat with raw-emoji fields.
|
|
2468
|
+
"version": "0.2.0",
|
|
2469
|
+
"description": "Emoji + lucide icon picker with search, 10-color Notion palette, Twemoji/native toggle, recents tracking. One string stores emoji OR lucide:Name OR with ?c=hex tint — backwards-compat with raw-emoji fields. Two variants: Popover (compact trigger) and Inline (full sheet/dialog use). Lifted 2026-05-16 from notion-page-clone — full implementation (19 files) including emoji-keywords search index, twemoji renderer, lucide-catalog, recents store, style-pref hook.",
|
|
2434
2470
|
"source": "notion-page-clone",
|
|
2435
|
-
"slicePath": "
|
|
2471
|
+
"slicePath": "frontend/slices/icon-picker",
|
|
2436
2472
|
"convexPaths": [],
|
|
2437
2473
|
"npm": [],
|
|
2438
2474
|
"shadcn": [
|
|
2439
2475
|
"popover",
|
|
2440
2476
|
"button",
|
|
2441
|
-
"input"
|
|
2477
|
+
"input",
|
|
2478
|
+
"scroll-area",
|
|
2479
|
+
"tabs"
|
|
2442
2480
|
],
|
|
2443
2481
|
"env": [],
|
|
2444
2482
|
"peers": [],
|
|
@@ -2451,7 +2489,59 @@
|
|
|
2451
2489
|
"twemoji",
|
|
2452
2490
|
"notion"
|
|
2453
2491
|
],
|
|
2454
|
-
"agentRecipe": "parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields.
|
|
2492
|
+
"agentRecipe": "Run `npx rr add icon-picker`. parseIconValue() decodes; lucideValue()/withColor() build. Add 'icon: v.string()' to Convex table — no migration needed for existing emoji fields. <IconPicker> wraps any trigger (Popover); <IconPickerInline> for sheets/dialogs. <DynamicIcon> renders from parsed value."
|
|
2493
|
+
},
|
|
2494
|
+
{
|
|
2495
|
+
"slug": "cta",
|
|
2496
|
+
"title": "Call to Action",
|
|
2497
|
+
"category": "ui",
|
|
2498
|
+
"kind": "ui",
|
|
2499
|
+
"version": "0.1.0",
|
|
2500
|
+
"description": "Brutalist call-to-action section — eyebrow label, serif headline, body, arrow CTA. Pair with CtaButton standalone for inline placements. Lifted 2026-05-16 from rahmanef.com; assumes Tailwind tracking-brutal / tracking-brutal-sm utilities OR drop them for the default tracking scale.",
|
|
2501
|
+
"source": "rahmanef.com",
|
|
2502
|
+
"slicePath": "frontend/slices/cta",
|
|
2503
|
+
"convexPaths": [],
|
|
2504
|
+
"npm": [
|
|
2505
|
+
"lucide-react@^0.400.0"
|
|
2506
|
+
],
|
|
2507
|
+
"shadcn": [],
|
|
2508
|
+
"env": [],
|
|
2509
|
+
"peers": [],
|
|
2510
|
+
"providers": [],
|
|
2511
|
+
"tags": [
|
|
2512
|
+
"ui",
|
|
2513
|
+
"marketing",
|
|
2514
|
+
"cta",
|
|
2515
|
+
"section",
|
|
2516
|
+
"brutalist"
|
|
2517
|
+
],
|
|
2518
|
+
"agentRecipe": "Run `npx rr add cta`. <CtaView eyebrow title body href ctaLabel /> renders the full section; <CtaButton href label /> drops a standalone arrow button anywhere. Override tracking-brutal utilities in tailwind.config or swap for tracking-wide if your design system has no brutal preset."
|
|
2519
|
+
},
|
|
2520
|
+
{
|
|
2521
|
+
"slug": "rate-limit",
|
|
2522
|
+
"title": "Rate Limit",
|
|
2523
|
+
"category": "infra",
|
|
2524
|
+
"kind": "backend",
|
|
2525
|
+
"version": "0.1.0",
|
|
2526
|
+
"description": "Convex-backed per-key request counter. Atomic check-and-increment via `consume` mutation; expired rows pruned by `_pruneExpired` internalMutation wired to a 5-min cron. Replaces single-replica in-memory Map so multi-replica Next deployments share buckets. Caller chooses key namespace (csp:<ip>, mcp:<ip>, oauth_token:<ip>). Lifted 2026-05-16 from rahmanef.com.",
|
|
2527
|
+
"source": "rahmanef.com",
|
|
2528
|
+
"slicePath": "frontend/slices/rate-limit",
|
|
2529
|
+
"convexPaths": [
|
|
2530
|
+
"convex/features/rate-limit"
|
|
2531
|
+
],
|
|
2532
|
+
"npm": [],
|
|
2533
|
+
"shadcn": [],
|
|
2534
|
+
"env": [],
|
|
2535
|
+
"peers": [],
|
|
2536
|
+
"providers": [],
|
|
2537
|
+
"tags": [
|
|
2538
|
+
"infra",
|
|
2539
|
+
"rate-limit",
|
|
2540
|
+
"convex",
|
|
2541
|
+
"backend",
|
|
2542
|
+
"throttle"
|
|
2543
|
+
],
|
|
2544
|
+
"agentRecipe": "Run `npx rr add rate-limit`. Compose `rateLimitTables` into root convex/schema.ts. Wire `internal.features.rate_limit.mutations._pruneExpired` into convex/crons.ts every 5 min. Call `api.features.rate_limit.mutations.consume({ key, limit, windowMs })` from server-side handlers — keep a fail-open wrapper so a Convex outage doesn't 503 the route."
|
|
2455
2545
|
},
|
|
2456
2546
|
{
|
|
2457
2547
|
"slug": "contact-form-resend",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rahman-resources",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Rahman Resources (rr) — shadcn-style installer for vertical slices. `npx resources add <slug>` copies slice into your project's `slices/<slug>/`. You own the files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|