{"_id":"@dhruvrgoel/recipe-components","_rev":"4-afa708380b7393f7ac5d58299213ddf2","name":"@dhruvrgoel/recipe-components","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@dhruvrgoel/recipe-components","version":"1.0.0","keywords":["stencil","stenciljs","web-components","custom-elements","recipe","meal-planner"],"license":"MIT","_id":"@dhruvrgoel/recipe-components@1.0.0","maintainers":[{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"}],"homepage":"https://github.com/dhruvrgoel/recipe-components#readme","bugs":{"url":"https://github.com/dhruvrgoel/recipe-components/issues"},"dist":{"shasum":"b5c1bbb836165ed667440932327a05e16a3891b7","tarball":"https://registry.npmjs.org/@dhruvrgoel/recipe-components/-/recipe-components-1.0.0.tgz","fileCount":76,"integrity":"sha512-rs2IHuNSy86ZU+exPacXWaZb/bqzZ+dTbQ+9TDV/bsM7szo2Y1Z+DvhBcgDk9/6Vpo6qxDJ0Z3iJkBMkhXRw+g==","signatures":[{"sig":"MEYCIQC23T2b6ihMZKeRsHQg7feOBBovOrTct1d/VbKYycDQJgIhANwUViwt68BMcqehxxrKx0nEypSq32ANRJJrfHGXn5bH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":374516},"main":"dist/index.cjs.js","types":"dist/types/index.d.ts","unpkg":"dist/recipe-components/recipe-components.esm.js","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/recipe-components/recipe-components.esm.js","require":"./dist/recipe-components/recipe-components.cjs.js"},"./dist/*":"./dist/*","./loader":{"types":"./loader/index.d.ts","import":"./loader/index.js","require":"./loader/index.cjs"}},"scripts":{"test":"stencil-test --prod","build":"stencil build","start":"stencil build --dev --watch --serve","generate":"stencil generate","test:watch":"stencil-test --prod --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"},"collection":"dist/collection/collection-manifest.json","repository":{"url":"git+https://github.com/dhruvrgoel/recipe-components.git","type":"git"},"_npmVersion":"11.12.1","description":"Reusable StencilJS web components for the Recipe Finder & Meal Planner app: recipe-card, rating-stars, ingredient-list, search-bar and meal-slot.","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"collection:main":"dist/collection/index.js","devDependencies":{"vitest":"^4.0.0","playwright":"^1.52.0","@types/node":"^22.13.5","@stencil/core":"^4.27.1 || ^5.0.0-0","@stencil/vitest":"^1.8.3","@vitest/browser-playwright":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/recipe-components_1.0.0_1787991126012_0.14063234282738035","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dhruvrgoel/recipe-components","version":"1.1.0","keywords":["stencil","stenciljs","web-components","custom-elements","recipe","meal-planner"],"license":"MIT","_id":"@dhruvrgoel/recipe-components@1.1.0","maintainers":[{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"}],"homepage":"https://github.com/dhruvrgoel/recipe-components#readme","bugs":{"url":"https://github.com/dhruvrgoel/recipe-components/issues"},"dist":{"shasum":"de7ca197625f077362d202cf656f9f98e65c2ebc","tarball":"https://registry.npmjs.org/@dhruvrgoel/recipe-components/-/recipe-components-1.1.0.tgz","fileCount":76,"integrity":"sha512-gqb9C02N5cx+2dzrA40VUUQKmcz+P5aRP+5yOWMtQkQ7SyWD3q+WrpFEN6iPvOkSoTjqnXBcYo0JUgjQGUk3XQ==","signatures":[{"sig":"MEYCIQDGurpPPSRcoQqaWdm+OzKRCO2bR8MvRTk21iXSLIM+0gIhANbpXSsNdiUaf0HY4B9mlDqE0xgMeZt+Ynib4GcJ8FTQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375409},"main":"dist/index.cjs.js","types":"dist/types/index.d.ts","unpkg":"dist/recipe-components/recipe-components.esm.js","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/recipe-components/recipe-components.esm.js","require":"./dist/recipe-components/recipe-components.cjs.js"},"./dist/*":"./dist/*","./loader":{"types":"./loader/index.d.ts","import":"./loader/index.js","require":"./loader/index.cjs"}},"scripts":{"test":"stencil-test --prod","build":"stencil build","start":"stencil build --dev --watch --serve","generate":"stencil generate","test:watch":"stencil-test --prod --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"},"collection":"dist/collection/collection-manifest.json","repository":{"url":"git+https://github.com/dhruvrgoel/recipe-components.git","type":"git"},"_npmVersion":"11.12.1","description":"Reusable StencilJS web components for the Recipe Finder & Meal Planner app: recipe-card, rating-stars, ingredient-list, search-bar and meal-slot.","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"collection:main":"dist/collection/index.js","devDependencies":{"vitest":"^4.0.0","playwright":"^1.52.0","@types/node":"^22.13.5","@stencil/core":"^4.27.1 || ^5.0.0-0","@stencil/vitest":"^1.8.3","@vitest/browser-playwright":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/recipe-components_1.1.0_1787992265668_0.6939767474266076","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@dhruvrgoel/recipe-components","version":"1.1.1","keywords":["stencil","stenciljs","web-components","custom-elements","recipe","meal-planner"],"author":{"name":"Dhruv Goel"},"license":"MIT","_id":"@dhruvrgoel/recipe-components@1.1.1","maintainers":[{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"}],"homepage":"https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026#readme","bugs":{"url":"https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026/issues"},"dist":{"shasum":"8dd8947c6d5d9d7a0221df6042a7a36ec9989a21","tarball":"https://registry.npmjs.org/@dhruvrgoel/recipe-components/-/recipe-components-1.1.1.tgz","fileCount":76,"integrity":"sha512-9oSIVemuSKkoJI2AsbN7x3MW26LWeKi+a+09ULzwvhetADAzZOSXtVzp3PVlLPku++vJP6oZjD8b6VWTLMEfZA==","signatures":[{"sig":"MEYCIQCcz09E6kcZ/r9yJkIkB/nJ+q+oZbi4XhCWYfEitWshxwIhAMmXa05EncMWjO6eW2XYISkRPTW2OE5/8BzWwhErKZIO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375495},"main":"dist/index.cjs.js","types":"dist/types/index.d.ts","unpkg":"dist/recipe-components/recipe-components.esm.js","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/recipe-components/recipe-components.esm.js","require":"./dist/recipe-components/recipe-components.cjs.js"},"./dist/*":"./dist/*","./loader":{"types":"./loader/index.d.ts","import":"./loader/index.js","require":"./loader/index.cjs"}},"gitHead":"0cf244eebe78c19173b445e3002316b5d481cb23","scripts":{"test":"stencil-test --prod","build":"stencil build","start":"stencil build --dev --watch --serve","generate":"stencil generate","test:watch":"stencil-test --prod --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"},"collection":"dist/collection/collection-manifest.json","repository":{"url":"git+https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026.git","type":"git"},"_npmVersion":"11.12.1","description":"Reusable StencilJS web components for the Recipe Finder & Meal Planner app: recipe-card, rating-stars, ingredient-list, search-bar and meal-slot.","directories":{},"sideEffects":false,"_nodeVersion":"25.9.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"collection:main":"dist/collection/index.js","devDependencies":{"vitest":"^4.0.0","playwright":"^1.52.0","@types/node":"^22.13.5","@stencil/core":"^4.27.1 || ^5.0.0-0","@stencil/vitest":"^1.8.3","@vitest/browser-playwright":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/recipe-components_1.1.1_1787998212257_0.13406571318349325","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@dhruvrgoel/recipe-components","version":"1.2.0","description":"Reusable StencilJS web components for the Recipe Finder & Meal Planner app: recipe-card, rating-stars, ingredient-list, search-bar and meal-slot.","keywords":["stencil","stenciljs","web-components","custom-elements","recipe","meal-planner"],"license":"MIT","main":"dist/index.cjs.js","module":"dist/index.js","types":"dist/types/index.d.ts","collection":"dist/collection/collection-manifest.json","collection:main":"dist/collection/index.js","unpkg":"dist/recipe-components/recipe-components.esm.js","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/recipe-components/recipe-components.esm.js","require":"./dist/recipe-components/recipe-components.cjs.js"},"./loader":{"types":"./loader/index.d.ts","import":"./loader/index.js","require":"./loader/index.cjs"},"./dist/*":"./dist/*"},"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026.git"},"bugs":{"url":"https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026/issues"},"homepage":"https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026#readme","publishConfig":{"access":"public"},"engines":{"node":">=18"},"scripts":{"build":"stencil build","start":"stencil build --dev --watch --serve","test":"stencil-test --prod","test:watch":"stencil-test --prod --watch","generate":"stencil generate","prepublishOnly":"npm run build"},"devDependencies":{"@stencil/core":"^4.27.1 || ^5.0.0-0","@stencil/vitest":"^1.8.3","@types/node":"^22.13.5","@vitest/browser-playwright":"^4.0.0","playwright":"^1.52.0","vitest":"^4.0.0"},"author":{"name":"Dhruv Goel"},"gitHead":"12b15cab4c1eb308ed79a6e02290a2917f705795","_id":"@dhruvrgoel/recipe-components@1.2.0","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-/I7hCAHH1TXPrbq+g1960ROviYaYC4wKj73QMklxM7fARMG83OG6eRIo7sNfezbZp2EtLacg3vhUlqmKZMlv0g==","shasum":"a7111b67890b73f0726f103ce1e687d977a888ca","tarball":"https://registry.npmjs.org/@dhruvrgoel/recipe-components/-/recipe-components-1.2.0.tgz","fileCount":76,"unpackedSize":375758,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDTxVob7mbQFWHTJxliFB9AN4nHbd8trYxTRApGCRpn0wIhALV4dtUi/xRcyqOTbQiN8uZ08m0Dx3ETmNIkEmQ70Yxu"}]},"_npmUser":{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"},"directories":{},"maintainers":[{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/recipe-components_1.2.0_1788007759746_0.8839649032056032"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-29T08:12:05.749Z","modified":"2026-08-29T12:49:20.058Z","1.0.0":"2026-08-29T08:12:06.177Z","1.1.0":"2026-08-29T08:31:05.898Z","1.1.1":"2026-08-29T10:10:12.400Z","1.2.0":"2026-08-29T12:49:19.908Z"},"bugs":{"url":"https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026/issues"},"author":{"name":"Dhruv Goel"},"license":"MIT","homepage":"https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026#readme","keywords":["stencil","stenciljs","web-components","custom-elements","recipe","meal-planner"],"repository":{"type":"git","url":"git+https://github.com/GITUSER0198/NAGP-Recipe-Finder-Meal-Planner-2026.git"},"description":"Reusable StencilJS web components for the Recipe Finder & Meal Planner app: recipe-card, rating-stars, ingredient-list, search-bar and meal-slot.","maintainers":[{"name":"dhruvrgoel","email":"dhruvrgoel@gmail.com"}],"readme":"# @dhruvrgoel/recipe-components\n\nReusable [StencilJS](https://stenciljs.com/) web components for the Recipe Finder &\nMeal Planner application. Because they compile to standards-based custom elements,\nthey work in any framework or in plain HTML.\n\n## Install\n\n```bash\nnpm install @dhruvrgoel/recipe-components\n```\n\n## Usage\n\nRegister the custom elements once, during app start-up:\n\n```js\nimport { defineCustomElements } from '@dhruvrgoel/recipe-components/loader';\n\ndefineCustomElements();\n```\n\nThen use the tags anywhere in your markup:\n\n```html\n<recipe-card recipe-title=\"Caprese Salad\" image=\"https://...\" time=\"10 mins\">\n  <span slot=\"badge\">Vegetarian</span>\n</recipe-card>\n```\n\n## Components\n\n### `<recipe-card>`\n\n| Property      | Attribute      | Type      | Default | Description                    |\n| ------------- | -------------- | --------- | ------- | ------------------------------ |\n| `recipeTitle` | `recipe-title` | `string`  | –       | Recipe name shown on the card. |\n| `image`       | `image`        | `string`  | –       | Cover image URL.               |\n| `time`        | `time`         | `string`  | –       | Display text for total time.   |\n| `isFavorite`  | `is-favorite`  | `boolean` | `false` | Fills the heart icon.          |\n\nEvents: `cardClick`, `favoriteToggle`. Slot: `badge`.\n\n### `<search-bar>`\n\n| Property      | Attribute     | Type     | Default       | Description        |\n| ------------- | ------------- | -------- | ------------- | ------------------ |\n| `placeholder` | `placeholder` | `string` | `'Search...'` | Input placeholder. |\n| `value`       | `value`       | `string` | `''`          | Initial query.     |\n\nEvents: `searchSubmit` (detail: `string`), `valueChange` (detail: `string`). Slot: `icon`.\n\n### `<ingredient-list>`\n\n| Property | Attribute | Type     | Default | Description                                    |\n| -------- | --------- | -------- | ------- | ---------------------------------------------- |\n| `items`  | `items`   | `string` | `'[]'`  | JSON array of `{ name, amount, unit }` objects. |\n\nEvents: `itemCheck` (detail: `{ item, checked }`). Slot: `header`.\n\n`items` is a JSON **string** rather than an array so the value can also be set\nthrough a plain HTML attribute.\n\n### `<rating-stars>`\n\n| Property   | Attribute  | Type      | Default | Description                |\n| ---------- | ---------- | --------- | ------- | -------------------------- |\n| `value`    | `value`    | `number`  | `0`     | Number of filled stars.    |\n| `max`      | `max`      | `number`  | `5`     | Total stars rendered.      |\n| `readonly` | `readonly` | `boolean` | `false` | Disables clicking.         |\n\nEvent: `ratingChange` (detail: `number`).\n\n### `<meal-slot>`\n\nOne planned meal (or an empty placeholder) in a weekly planner column.\n\n| Property      | Attribute      | Type      | Default | Description                                    |\n| ------------- | -------------- | --------- | ------- | ---------------------------------------------- |\n| `day`         | `day`          | `string`  | –       | Day key, e.g. `monday`.                        |\n| `slotIndex`   | `slot-index`   | `number`  | `0`     | Position within the day.                       |\n| `recipeId`    | `recipe-id`    | `string`  | `''`    | Echoed back on every event.                    |\n| `recipeTitle` | `recipe-title` | `string`  | –       | Meal name.                                     |\n| `recipeImage` | `recipe-image` | `string`  | –       | Thumbnail URL.                                 |\n| `recipeMeta`  | `recipe-meta`  | `string`  | `''`    | Secondary line, e.g. `25 mins - Dinner`.       |\n| `empty`       | `empty`        | `boolean` | inferred | Forces the empty state. Inferred from whether `recipeTitle` is set, so you rarely pass it. |\n| `hideDay`     | `hide-day`     | `boolean` | `false` | Hides the day badge.                           |\n\nEvents: `slotSelect` and `slotRemove`, both with detail\n`{ day, slotIndex, recipeId }`. Slots: `empty-state`, `badge`.\n\n`slotIndex` is what lets a host app remove one occurrence when the same recipe is\nplanned twice on the same day.\n\n## Theming\n\nComponents use shadow DOM. Styling is exposed through CSS custom properties that\ninherit from the host page, so setting `--color-primary` on `:root` themes them all:\n\n```css\n:root {\n  --color-primary: #1d70b8;\n  --color-border: #e5e9f0;\n  --color-text-main: #0f172a;\n  --color-text-muted: #64748b;\n  --color-surface: #ffffff;\n  --color-bg-base: #f8fafc;\n}\n```\n\n## Local development\n\n```bash\nnpm install\nnpm start        # dev server with live reload\nnpm run build    # production build into dist/\nnpm test         # unit tests\n```\n\n## Publishing\n\n```bash\nnpm login\nnpm version patch   # or minor / major\nnpm publish         # prepublishOnly rebuilds dist/ first\n```\n\n## Versioning\n\nThis package follows [semantic versioning](https://semver.org/): patch for fixes,\nminor for backward-compatible additions, major for breaking changes to props,\nevents or slots. See [CHANGELOG.md](./CHANGELOG.md).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}