rahman-resources 1.6.0 → 1.7.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.
Files changed (2) hide show
  1. package/lib/manifest.json +365 -3
  2. package/package.json +1 -1
package/lib/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 2,
3
- "generatedAt": "2026-05-17T13:25:57.345Z",
3
+ "generatedAt": "2026-05-18T14:08:20.458Z",
4
4
  "repo": "rahmanef63/resource-site",
5
5
  "branch": "main",
6
6
  "layouts": [
@@ -1911,7 +1911,7 @@
1911
1911
  "install": "npx rahman-resources add admin",
1912
1912
  "npmPackages": [],
1913
1913
  "exampleCode": "",
1914
- "agentRecipe": "Run `rr add admin`. Wire <AdminPage labels={...} /> at /admin and call buildAdminStats({ sliceRegistry, queryTable }) inside convex/features/admin/queries.ts — sliceRegistry.entries flat-maps each feature's admin.activity[] declarations. Set SUPER_ADMIN_EMAIL via `npx convex env set` to lock down /admin to one address.",
1914
+ "agentRecipe": "Run `rr add admin`. Wire <AdminPage labels={...} /> at /admin and call buildAdminStats({ sliceRegistry, queryTable }) inside convex/features/admin/query.ts — sliceRegistry.entries flat-maps each feature's admin.activity[] declarations. Set SUPER_ADMIN_EMAIL via `npx convex env set` to lock down /admin to one address.",
1915
1915
  "tags": [
1916
1916
  "infra",
1917
1917
  "admin",
@@ -2008,6 +2008,141 @@
2008
2008
  "job-search",
2009
2009
  "indonesia"
2010
2010
  ]
2011
+ },
2012
+ {
2013
+ "slug": "pricing-page",
2014
+ "title": "Pricing Page",
2015
+ "category": "ui",
2016
+ "description": "Canonical pricing tier section — eyebrow + headline + 2/3/4 column tier grid with optional FAQ accordion below. Tiers fully data-driven (name/price/period/bullets/cta/featured/badge). Featured variant configurable (ring/scale/tint). Single SSOT — every saas/marketing template consumes this slice for pricing pages so admin-edited tiers propagate without per-template rewriting.",
2017
+ "source": "rahman-resources",
2018
+ "install": "npx rahman-resources add pricing-page",
2019
+ "npmPackages": [],
2020
+ "exampleCode": "",
2021
+ "agentRecipe": "Run `npx rr add pricing-page`. <PricingSection eyebrow title subtitle tiers columns faq faqTitle featuredVariant /> — only `title` + `tiers` required. Each tier: `{ id, name, price, period?, blurb?, bullets[], cta?, featured?, badge? }`. Pass `featuredVariant=\"scale\"` for a popped-forward card or `\"tint\"` for a colored background. Wire admin CRUD via your store hook → useTiers() → pass array.",
2022
+ "tags": [
2023
+ "ui",
2024
+ "pricing",
2025
+ "section",
2026
+ "marketing",
2027
+ "saas",
2028
+ "tiers",
2029
+ "faq"
2030
+ ]
2031
+ },
2032
+ {
2033
+ "slug": "feature-grid",
2034
+ "title": "Feature Grid",
2035
+ "category": "ui",
2036
+ "description": "Canonical features grid section — eyebrow + headline + 1/2/3/4 column item grid in three layout variants (cards, minimal, alternating). Items accept Lucide icon component OR string label, optional image (next/image), optional link CTA. Single SSOT — every template consumes this slice for features pages so admin-edited items propagate without per-template duplication.",
2037
+ "source": "rahman-resources",
2038
+ "install": "npx rahman-resources add feature-grid",
2039
+ "npmPackages": [],
2040
+ "exampleCode": "",
2041
+ "agentRecipe": "Run `npx rr add feature-grid`. <FeatureGridSection eyebrow title subtitle items columns layout align /> — only `items` required. Each item: `{ id, title, body, icon?, image?, link? }`. `icon` can be a LucideIcon component (rendered as 5×5 inline) or a string (rendered as letter fallback). `layout=\"alternating\"` produces image+text rows that flip per index — set `image` per item for that variant.",
2042
+ "tags": [
2043
+ "ui",
2044
+ "features",
2045
+ "section",
2046
+ "marketing",
2047
+ "grid",
2048
+ "saas"
2049
+ ]
2050
+ },
2051
+ {
2052
+ "slug": "faq-section",
2053
+ "title": "FAQ Section",
2054
+ "category": "ui",
2055
+ "description": "Canonical FAQ accordion section — eyebrow + headline + accordion item list. Three layouts (single column, two-column, grouped by category). Optional footer CTA (\"Still have questions?\"). Items fully data-driven. Single SSOT — every template consumes this slice for FAQ blocks so admin-edited Q&A propagates without per-template rewrite.",
2056
+ "source": "rahman-resources",
2057
+ "install": "npx rahman-resources add faq-section",
2058
+ "npmPackages": [],
2059
+ "exampleCode": "",
2060
+ "agentRecipe": "Run `npx rr add faq-section`. <FAQSection items title subtitle layout multiple defaultOpen footerCta /> — only `items` required. Each item: `{ id, q, a, category? }`. `layout=\"grouped\"` buckets by `category`. `multiple` lets users open several at once. `footerCta={{ label, href }}` wires a contact link below the accordion.",
2061
+ "tags": [
2062
+ "ui",
2063
+ "faq",
2064
+ "section",
2065
+ "accordion",
2066
+ "marketing"
2067
+ ]
2068
+ },
2069
+ {
2070
+ "slug": "testimonials-grid",
2071
+ "title": "Testimonials Grid",
2072
+ "category": "ui",
2073
+ "description": "Canonical testimonials section — quote + author + role/company + optional avatar + optional star rating. Three layouts (uniform cards grid, centered quote-stack, CSS masonry). `featured` testimonials get a ring accent. Pairs naturally with the `testimonials` backend slice (Convex queries) but has zero coupling — pass any item array.",
2074
+ "source": "rahman-resources",
2075
+ "install": "npx rahman-resources add testimonials-grid",
2076
+ "npmPackages": [],
2077
+ "exampleCode": "",
2078
+ "agentRecipe": "Run `npx rr add testimonials-grid`. <TestimonialsGridSection items title subtitle columns layout align /> — only `items` required. Each item: `{ id, quote, author, role?, company?, avatar?, rating?, featured? }`. `layout=\"quote-stack\"` renders a centered no-card scroll for editorial sites. `layout=\"masonry\"` uses CSS columns for variable-height quotes.",
2079
+ "tags": [
2080
+ "ui",
2081
+ "testimonials",
2082
+ "section",
2083
+ "marketing",
2084
+ "social-proof",
2085
+ "saas"
2086
+ ]
2087
+ },
2088
+ {
2089
+ "slug": "blog-section",
2090
+ "title": "Blog Section",
2091
+ "category": "ui",
2092
+ "description": "Canonical blog list + detail section. <BlogListSection> renders 3 layouts (cards grid, minimal list, featured-split with hero + side rail). <BlogPostView> renders the single-post page with cover + meta + paragraph-split body. Both pass through `hrefFor`/`backHref` so each template controls routing — single SSOT for /blog and /blog/[slug] across all templates.",
2093
+ "source": "rahman-resources",
2094
+ "install": "npx rahman-resources add blog-section",
2095
+ "npmPackages": [],
2096
+ "exampleCode": "",
2097
+ "agentRecipe": "Run `npx rr add blog-section`. <BlogListSection posts hrefFor title columns layout limit /> for /blog — `hrefFor(post)` returns the per-post URL. <BlogPostView post backHref renderBody /> for /blog/[slug] — `renderBody` defaults to paragraph-split on `\\n\\n` (swap for an MDX renderer if you use mdx-blog).",
2098
+ "tags": [
2099
+ "ui",
2100
+ "blog",
2101
+ "section",
2102
+ "marketing",
2103
+ "content",
2104
+ "list",
2105
+ "detail"
2106
+ ]
2107
+ },
2108
+ {
2109
+ "slug": "changelog-feed",
2110
+ "title": "Changelog Feed",
2111
+ "category": "ui",
2112
+ "description": "Canonical /changelog or /whats-new section. Entries support 5 kinds (feature/improvement/fix/chore/breaking) with color-coded badges. Three layouts (timeline with date-rail, large cards, minimal list). Optional `limit` for \"Recent updates\" excerpts on home pages. Optional `groups` per entry for sub-sectioned bullet lists.",
2113
+ "source": "rahman-resources",
2114
+ "install": "npx rahman-resources add changelog-feed",
2115
+ "npmPackages": [],
2116
+ "exampleCode": "",
2117
+ "agentRecipe": "Run `npx rr add changelog-feed`. <ChangelogFeedSection entries title subtitle layout sortDescending limit /> — only `entries` required. Each entry: `{ id, version, date, kind, title, body, bullets?, groups? }`. `layout=\"timeline\"` adds a left date-rail; `layout=\"list\"` is the most compact. Pass `limit={3}` on home pages to show recent releases.",
2118
+ "tags": [
2119
+ "ui",
2120
+ "changelog",
2121
+ "section",
2122
+ "saas",
2123
+ "release-notes",
2124
+ "marketing"
2125
+ ]
2126
+ },
2127
+ {
2128
+ "slug": "portfolio-section",
2129
+ "title": "Portfolio Section",
2130
+ "category": "ui",
2131
+ "description": "Canonical portfolio list + detail section. <PortfolioListSection> renders 3 layouts (uniform 16:9 grid, CSS masonry, asymmetric with featured hero). <PortfolioDetailView> renders title + meta + cover + body + gallery + external link + related items. Both pass through `hrefFor`/`backHref` so each template controls routing — single SSOT for /portfolio and /portfolio/[slug] across agency-studio and personal-brand.",
2132
+ "source": "rahman-resources",
2133
+ "install": "npx rahman-resources add portfolio-section",
2134
+ "npmPackages": [],
2135
+ "exampleCode": "",
2136
+ "agentRecipe": "Run `npx rr add portfolio-section`. <PortfolioListSection items hrefFor title columns layout limit /> for /portfolio — each item `{ id, slug, title, summary?, year?, client?, role?, tags?, cover: {src,alt}, gallery?, link? }`. <PortfolioDetailView item backHref renderBody related hrefForRelated /> for /portfolio/[slug] — `renderBody` defaults to paragraph split; override for project-specific layouts (problem/approach/result, brief/outcome, etc).",
2137
+ "tags": [
2138
+ "ui",
2139
+ "portfolio",
2140
+ "section",
2141
+ "marketing",
2142
+ "case-study",
2143
+ "list",
2144
+ "detail"
2145
+ ]
2011
2146
  }
2012
2147
  ],
2013
2148
  "slices": [
@@ -3365,7 +3500,7 @@
3365
3500
  "crud",
3366
3501
  "nav-from-registry"
3367
3502
  ],
3368
- "agentRecipe": "Run `rr add admin`. Wire <AdminPage labels={...} /> at /admin and call buildAdminStats({ sliceRegistry, queryTable }) inside convex/features/admin/queries.ts — sliceRegistry.entries flat-maps each feature's admin.activity[] declarations. Set SUPER_ADMIN_EMAIL via `npx convex env set` to lock down /admin to one address."
3503
+ "agentRecipe": "Run `rr add admin`. Wire <AdminPage labels={...} /> at /admin and call buildAdminStats({ sliceRegistry, queryTable }) inside convex/features/admin/query.ts — sliceRegistry.entries flat-maps each feature's admin.activity[] declarations. Set SUPER_ADMIN_EMAIL via `npx convex env set` to lock down /admin to one address."
3369
3504
  },
3370
3505
  {
3371
3506
  "slug": "platform-admin",
@@ -3560,6 +3695,233 @@
3560
3695
  "indonesia"
3561
3696
  ],
3562
3697
  "agentRecipe": "Run `rr add document-checklist`. Wire <DocumentChecklist bindings={{ current, seed, updateStatus }} countryTemplateSlot={<CountryTemplateCard bindings={{ templates, getTemplate, instantiate }} />} /> — bindings sourced from api.features['document-checklist'].* queries/mutations."
3698
+ },
3699
+ {
3700
+ "slug": "pricing-page",
3701
+ "title": "Pricing Page",
3702
+ "category": "ui",
3703
+ "kind": "ui",
3704
+ "version": "0.1.0",
3705
+ "description": "Canonical pricing tier section — eyebrow + headline + 2/3/4 column tier grid with optional FAQ accordion below. Tiers fully data-driven (name/price/period/bullets/cta/featured/badge). Featured variant configurable (ring/scale/tint). Single SSOT — every saas/marketing template consumes this slice for pricing pages so admin-edited tiers propagate without per-template rewriting.",
3706
+ "source": "rahman-resources",
3707
+ "slicePath": "frontend/slices/pricing-page",
3708
+ "convexPaths": [],
3709
+ "npm": [
3710
+ "lucide-react@^0.400.0"
3711
+ ],
3712
+ "shadcn": [
3713
+ "button",
3714
+ "card",
3715
+ "accordion"
3716
+ ],
3717
+ "env": [],
3718
+ "peers": [],
3719
+ "providers": [],
3720
+ "tags": [
3721
+ "ui",
3722
+ "pricing",
3723
+ "section",
3724
+ "marketing",
3725
+ "saas",
3726
+ "tiers",
3727
+ "faq"
3728
+ ],
3729
+ "agentRecipe": "Run `npx rr add pricing-page`. <PricingSection eyebrow title subtitle tiers columns faq faqTitle featuredVariant /> — only `title` + `tiers` required. Each tier: `{ id, name, price, period?, blurb?, bullets[], cta?, featured?, badge? }`. Pass `featuredVariant=\"scale\"` for a popped-forward card or `\"tint\"` for a colored background. Wire admin CRUD via your store hook → useTiers() → pass array."
3730
+ },
3731
+ {
3732
+ "slug": "feature-grid",
3733
+ "title": "Feature Grid",
3734
+ "category": "ui",
3735
+ "kind": "ui",
3736
+ "version": "0.1.0",
3737
+ "description": "Canonical features grid section — eyebrow + headline + 1/2/3/4 column item grid in three layout variants (cards, minimal, alternating). Items accept Lucide icon component OR string label, optional image (next/image), optional link CTA. Single SSOT — every template consumes this slice for features pages so admin-edited items propagate without per-template duplication.",
3738
+ "source": "rahman-resources",
3739
+ "slicePath": "frontend/slices/feature-grid",
3740
+ "convexPaths": [],
3741
+ "npm": [
3742
+ "lucide-react@^0.400.0"
3743
+ ],
3744
+ "shadcn": [
3745
+ "button",
3746
+ "card"
3747
+ ],
3748
+ "env": [],
3749
+ "peers": [],
3750
+ "providers": [],
3751
+ "tags": [
3752
+ "ui",
3753
+ "features",
3754
+ "section",
3755
+ "marketing",
3756
+ "grid",
3757
+ "saas"
3758
+ ],
3759
+ "agentRecipe": "Run `npx rr add feature-grid`. <FeatureGridSection eyebrow title subtitle items columns layout align /> — only `items` required. Each item: `{ id, title, body, icon?, image?, link? }`. `icon` can be a LucideIcon component (rendered as 5×5 inline) or a string (rendered as letter fallback). `layout=\"alternating\"` produces image+text rows that flip per index — set `image` per item for that variant."
3760
+ },
3761
+ {
3762
+ "slug": "faq-section",
3763
+ "title": "FAQ Section",
3764
+ "category": "ui",
3765
+ "kind": "ui",
3766
+ "version": "0.1.0",
3767
+ "description": "Canonical FAQ accordion section — eyebrow + headline + accordion item list. Three layouts (single column, two-column, grouped by category). Optional footer CTA (\"Still have questions?\"). Items fully data-driven. Single SSOT — every template consumes this slice for FAQ blocks so admin-edited Q&A propagates without per-template rewrite.",
3768
+ "source": "rahman-resources",
3769
+ "slicePath": "frontend/slices/faq-section",
3770
+ "convexPaths": [],
3771
+ "npm": [],
3772
+ "shadcn": [
3773
+ "accordion",
3774
+ "button"
3775
+ ],
3776
+ "env": [],
3777
+ "peers": [],
3778
+ "providers": [],
3779
+ "tags": [
3780
+ "ui",
3781
+ "faq",
3782
+ "section",
3783
+ "accordion",
3784
+ "marketing"
3785
+ ],
3786
+ "agentRecipe": "Run `npx rr add faq-section`. <FAQSection items title subtitle layout multiple defaultOpen footerCta /> — only `items` required. Each item: `{ id, q, a, category? }`. `layout=\"grouped\"` buckets by `category`. `multiple` lets users open several at once. `footerCta={{ label, href }}` wires a contact link below the accordion."
3787
+ },
3788
+ {
3789
+ "slug": "testimonials-grid",
3790
+ "title": "Testimonials Grid",
3791
+ "category": "ui",
3792
+ "kind": "ui",
3793
+ "version": "0.1.0",
3794
+ "description": "Canonical testimonials section — quote + author + role/company + optional avatar + optional star rating. Three layouts (uniform cards grid, centered quote-stack, CSS masonry). `featured` testimonials get a ring accent. Pairs naturally with the `testimonials` backend slice (Convex queries) but has zero coupling — pass any item array.",
3795
+ "source": "rahman-resources",
3796
+ "slicePath": "frontend/slices/testimonials-grid",
3797
+ "convexPaths": [],
3798
+ "npm": [
3799
+ "lucide-react@^0.400.0"
3800
+ ],
3801
+ "shadcn": [
3802
+ "avatar",
3803
+ "button",
3804
+ "card"
3805
+ ],
3806
+ "env": [],
3807
+ "peers": [
3808
+ {
3809
+ "slug": "testimonials",
3810
+ "range": "^0.1",
3811
+ "reason": "Optional — pair with backend testimonials slice for full admin CRUD + storage."
3812
+ }
3813
+ ],
3814
+ "providers": [],
3815
+ "tags": [
3816
+ "ui",
3817
+ "testimonials",
3818
+ "section",
3819
+ "marketing",
3820
+ "social-proof",
3821
+ "saas"
3822
+ ],
3823
+ "agentRecipe": "Run `npx rr add testimonials-grid`. <TestimonialsGridSection items title subtitle columns layout align /> — only `items` required. Each item: `{ id, quote, author, role?, company?, avatar?, rating?, featured? }`. `layout=\"quote-stack\"` renders a centered no-card scroll for editorial sites. `layout=\"masonry\"` uses CSS columns for variable-height quotes."
3824
+ },
3825
+ {
3826
+ "slug": "blog-section",
3827
+ "title": "Blog Section",
3828
+ "category": "ui",
3829
+ "kind": "ui",
3830
+ "version": "0.1.0",
3831
+ "description": "Canonical blog list + detail section. <BlogListSection> renders 3 layouts (cards grid, minimal list, featured-split with hero + side rail). <BlogPostView> renders the single-post page with cover + meta + paragraph-split body. Both pass through `hrefFor`/`backHref` so each template controls routing — single SSOT for /blog and /blog/[slug] across all templates.",
3832
+ "source": "rahman-resources",
3833
+ "slicePath": "frontend/slices/blog-section",
3834
+ "convexPaths": [],
3835
+ "npm": [
3836
+ "lucide-react@^0.400.0"
3837
+ ],
3838
+ "shadcn": [
3839
+ "badge",
3840
+ "button",
3841
+ "card",
3842
+ "separator"
3843
+ ],
3844
+ "env": [],
3845
+ "peers": [
3846
+ {
3847
+ "slug": "mdx-blog",
3848
+ "range": "^0.1",
3849
+ "reason": "Optional — pair with mdx-blog backend slice for MDX-rendered posts."
3850
+ }
3851
+ ],
3852
+ "providers": [],
3853
+ "tags": [
3854
+ "ui",
3855
+ "blog",
3856
+ "section",
3857
+ "marketing",
3858
+ "content",
3859
+ "list",
3860
+ "detail"
3861
+ ],
3862
+ "agentRecipe": "Run `npx rr add blog-section`. <BlogListSection posts hrefFor title columns layout limit /> for /blog — `hrefFor(post)` returns the per-post URL. <BlogPostView post backHref renderBody /> for /blog/[slug] — `renderBody` defaults to paragraph-split on `\\n\\n` (swap for an MDX renderer if you use mdx-blog)."
3863
+ },
3864
+ {
3865
+ "slug": "changelog-feed",
3866
+ "title": "Changelog Feed",
3867
+ "category": "ui",
3868
+ "kind": "ui",
3869
+ "version": "0.1.0",
3870
+ "description": "Canonical /changelog or /whats-new section. Entries support 5 kinds (feature/improvement/fix/chore/breaking) with color-coded badges. Three layouts (timeline with date-rail, large cards, minimal list). Optional `limit` for \"Recent updates\" excerpts on home pages. Optional `groups` per entry for sub-sectioned bullet lists.",
3871
+ "source": "rahman-resources",
3872
+ "slicePath": "frontend/slices/changelog-feed",
3873
+ "convexPaths": [],
3874
+ "npm": [],
3875
+ "shadcn": [
3876
+ "badge",
3877
+ "card",
3878
+ "separator"
3879
+ ],
3880
+ "env": [],
3881
+ "peers": [],
3882
+ "providers": [],
3883
+ "tags": [
3884
+ "ui",
3885
+ "changelog",
3886
+ "section",
3887
+ "saas",
3888
+ "release-notes",
3889
+ "marketing"
3890
+ ],
3891
+ "agentRecipe": "Run `npx rr add changelog-feed`. <ChangelogFeedSection entries title subtitle layout sortDescending limit /> — only `entries` required. Each entry: `{ id, version, date, kind, title, body, bullets?, groups? }`. `layout=\"timeline\"` adds a left date-rail; `layout=\"list\"` is the most compact. Pass `limit={3}` on home pages to show recent releases."
3892
+ },
3893
+ {
3894
+ "slug": "portfolio-section",
3895
+ "title": "Portfolio Section",
3896
+ "category": "ui",
3897
+ "kind": "ui",
3898
+ "version": "0.1.0",
3899
+ "description": "Canonical portfolio list + detail section. <PortfolioListSection> renders 3 layouts (uniform 16:9 grid, CSS masonry, asymmetric with featured hero). <PortfolioDetailView> renders title + meta + cover + body + gallery + external link + related items. Both pass through `hrefFor`/`backHref` so each template controls routing — single SSOT for /portfolio and /portfolio/[slug] across agency-studio and personal-brand.",
3900
+ "source": "rahman-resources",
3901
+ "slicePath": "frontend/slices/portfolio-section",
3902
+ "convexPaths": [],
3903
+ "npm": [
3904
+ "lucide-react@^0.400.0"
3905
+ ],
3906
+ "shadcn": [
3907
+ "badge",
3908
+ "button",
3909
+ "card",
3910
+ "separator"
3911
+ ],
3912
+ "env": [],
3913
+ "peers": [],
3914
+ "providers": [],
3915
+ "tags": [
3916
+ "ui",
3917
+ "portfolio",
3918
+ "section",
3919
+ "marketing",
3920
+ "case-study",
3921
+ "list",
3922
+ "detail"
3923
+ ],
3924
+ "agentRecipe": "Run `npx rr add portfolio-section`. <PortfolioListSection items hrefFor title columns layout limit /> for /portfolio — each item `{ id, slug, title, summary?, year?, client?, role?, tags?, cover: {src,alt}, gallery?, link? }`. <PortfolioDetailView item backHref renderBody related hrefForRelated /> for /portfolio/[slug] — `renderBody` defaults to paragraph split; override for project-specific layouts (problem/approach/result, brief/outcome, etc)."
3563
3925
  }
3564
3926
  ]
3565
3927
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rahman-resources",
3
- "version": "1.6.0",
3
+ "version": "1.7.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",