@ssejal8/recipe-ui-kit 0.1.0 → 0.1.1
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/README.md +108 -277
- package/dist/cjs/index-BEr8BsSA.js +1712 -0
- package/dist/cjs/index-BEr8BsSA.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +15 -0
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/recipe-kit.cjs.js +27 -0
- package/dist/cjs/recipe-kit.cjs.js.map +1 -0
- package/dist/cjs/rk-badge_10.cjs.entry.js +638 -0
- package/dist/cjs/rk-badge_10.cjs.entry.js.map +1 -0
- package/dist/collection/collection-manifest.json +22 -0
- package/dist/collection/components/rk-badge/rk-badge.js +97 -0
- package/dist/collection/components/rk-badge/rk-badge.js.map +1 -0
- package/dist/collection/components/rk-chip/rk-chip.js +245 -0
- package/dist/collection/components/rk-chip/rk-chip.js.map +1 -0
- package/dist/collection/components/rk-empty-state/rk-empty-state.js +138 -0
- package/dist/collection/components/rk-empty-state/rk-empty-state.js.map +1 -0
- package/dist/collection/components/rk-meal-slot/rk-meal-slot.js +312 -0
- package/dist/collection/components/rk-meal-slot/rk-meal-slot.js.map +1 -0
- package/dist/collection/components/rk-modal/rk-modal.js +256 -0
- package/dist/collection/components/rk-modal/rk-modal.js.map +1 -0
- package/dist/collection/components/rk-rating/rk-rating.js +228 -0
- package/dist/collection/components/rk-rating/rk-rating.js.map +1 -0
- package/dist/collection/components/rk-recipe-card/rk-recipe-card.js +366 -0
- package/dist/collection/components/rk-recipe-card/rk-recipe-card.js.map +1 -0
- package/dist/collection/components/rk-search-bar/rk-search-bar.js +291 -0
- package/dist/collection/components/rk-search-bar/rk-search-bar.js.map +1 -0
- package/dist/collection/components/rk-segmented-control/rk-segmented-control.js +196 -0
- package/dist/collection/components/rk-segmented-control/rk-segmented-control.js.map +1 -0
- package/dist/collection/components/rk-tag-input/rk-tag-input.js +264 -0
- package/dist/collection/components/rk-tag-input/rk-tag-input.js.map +1 -0
- package/dist/collection/index.js +2 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/rk-badge.d.ts +11 -0
- package/dist/components/rk-badge.js +2 -0
- package/dist/components/rk-badge.js.map +1 -0
- package/dist/components/rk-chip.d.ts +11 -0
- package/dist/components/rk-chip.js +2 -0
- package/dist/components/rk-chip.js.map +1 -0
- package/dist/components/rk-empty-state.d.ts +11 -0
- package/dist/components/rk-empty-state.js +2 -0
- package/dist/components/rk-empty-state.js.map +1 -0
- package/dist/components/rk-meal-slot.d.ts +11 -0
- package/dist/components/rk-meal-slot.js +2 -0
- package/dist/components/rk-meal-slot.js.map +1 -0
- package/dist/components/rk-modal.d.ts +11 -0
- package/dist/components/rk-modal.js +2 -0
- package/dist/components/rk-modal.js.map +1 -0
- package/dist/components/rk-rating.d.ts +11 -0
- package/dist/components/rk-rating.js +2 -0
- package/dist/components/rk-rating.js.map +1 -0
- package/dist/components/rk-recipe-card.d.ts +11 -0
- package/dist/components/rk-recipe-card.js +2 -0
- package/dist/components/rk-recipe-card.js.map +1 -0
- package/dist/components/rk-search-bar.d.ts +11 -0
- package/dist/components/rk-search-bar.js +2 -0
- package/dist/components/rk-search-bar.js.map +1 -0
- package/dist/components/rk-segmented-control.d.ts +11 -0
- package/dist/components/rk-segmented-control.js +2 -0
- package/dist/components/rk-segmented-control.js.map +1 -0
- package/dist/components/rk-tag-input.d.ts +11 -0
- package/dist/components/rk-tag-input.js +2 -0
- package/dist/components/rk-tag-input.js.map +1 -0
- package/dist/esm/index-Bxo0C8lB.js +1684 -0
- package/dist/esm/index-Bxo0C8lB.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +13 -0
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/recipe-kit.js +23 -0
- package/dist/esm/recipe-kit.js.map +1 -0
- package/dist/esm/rk-badge_10.entry.js +627 -0
- package/dist/esm/rk-badge_10.entry.js.map +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/recipe-kit/index.esm.js +2 -0
- package/dist/recipe-kit/index.esm.js.map +1 -0
- package/dist/recipe-kit/p-Bxo0C8lB.js +3 -0
- package/dist/recipe-kit/p-Bxo0C8lB.js.map +1 -0
- package/dist/recipe-kit/p-fcb955c7.entry.js +2 -0
- package/dist/recipe-kit/p-fcb955c7.entry.js.map +1 -0
- package/dist/recipe-kit/recipe-kit.css +1 -0
- package/dist/recipe-kit/recipe-kit.esm.js +2 -0
- package/dist/recipe-kit/recipe-kit.esm.js.map +1 -0
- package/dist/recipe-kit/rk-global.css +104 -0
- package/dist/types/components/rk-badge/rk-badge.d.ts +15 -0
- package/dist/types/components/rk-chip/rk-chip.d.ts +37 -0
- package/dist/types/components/rk-empty-state/rk-empty-state.d.ts +19 -0
- package/dist/types/components/rk-meal-slot/rk-meal-slot.d.ts +53 -0
- package/dist/types/components/rk-modal/rk-modal.d.ts +41 -0
- package/dist/types/components/rk-rating/rk-rating.d.ts +26 -0
- package/dist/types/components/rk-recipe-card/rk-recipe-card.d.ts +67 -0
- package/dist/types/components/rk-search-bar/rk-search-bar.d.ts +39 -0
- package/dist/types/components/rk-segmented-control/rk-segmented-control.d.ts +37 -0
- package/dist/types/components/rk-tag-input/rk-tag-input.d.ts +35 -0
- package/{packages/recipe-kit-stencil/src → dist/types}/components.d.ts +1 -1
- package/{packages/recipe-kit-stencil/src/index.ts → dist/types/index.d.ts} +0 -2
- package/dist/types/stencil-public-runtime.d.ts +1873 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +84 -22
- package/.claude/settings.local.json +0 -10
- package/.npmr +0 -1
- package/apps/recipe-web/package.json +0 -31
- package/apps/recipe-web/src/app.css +0 -418
- package/apps/recipe-web/src/app.d.ts +0 -32
- package/apps/recipe-web/src/app.html +0 -25
- package/apps/recipe-web/src/lib/api/mealdb.ts +0 -240
- package/apps/recipe-web/src/lib/components/AppHeader.svelte +0 -290
- package/apps/recipe-web/src/lib/components/ConfirmDialog.svelte +0 -46
- package/apps/recipe-web/src/lib/components/Modal.svelte +0 -33
- package/apps/recipe-web/src/lib/components/RecipeCard.svelte +0 -100
- package/apps/recipe-web/src/lib/components/RecipeForm.svelte +0 -560
- package/apps/recipe-web/src/lib/components/RecipeGrid.svelte +0 -77
- package/apps/recipe-web/src/lib/components/RecipePickerDialog.svelte +0 -185
- package/apps/recipe-web/src/lib/components/Toaster.svelte +0 -111
- package/apps/recipe-web/src/lib/domain/recipe.ts +0 -130
- package/apps/recipe-web/src/lib/domain/validation.ts +0 -189
- package/apps/recipe-web/src/lib/stencil/WebComponent.svelte +0 -145
- package/apps/recipe-web/src/lib/stencil/register.ts +0 -28
- package/apps/recipe-web/src/lib/stores/favorites.svelte.ts +0 -81
- package/apps/recipe-web/src/lib/stores/myRecipes.svelte.ts +0 -98
- package/apps/recipe-web/src/lib/stores/persisted.svelte.ts +0 -73
- package/apps/recipe-web/src/lib/stores/planner.svelte.ts +0 -275
- package/apps/recipe-web/src/lib/stores/theme.svelte.ts +0 -67
- package/apps/recipe-web/src/lib/stores/toast.svelte.ts +0 -66
- package/apps/recipe-web/src/routes/+error.svelte +0 -36
- package/apps/recipe-web/src/routes/+layout.svelte +0 -62
- package/apps/recipe-web/src/routes/+page.svelte +0 -352
- package/apps/recipe-web/src/routes/+page.ts +0 -107
- package/apps/recipe-web/src/routes/favorites/+page.svelte +0 -170
- package/apps/recipe-web/src/routes/my-recipes/+layout.ts +0 -55
- package/apps/recipe-web/src/routes/my-recipes/+page.svelte +0 -180
- package/apps/recipe-web/src/routes/my-recipes/[id]/edit/+page.svelte +0 -104
- package/apps/recipe-web/src/routes/my-recipes/new/+page.svelte +0 -67
- package/apps/recipe-web/src/routes/planner/+page.svelte +0 -422
- package/apps/recipe-web/src/routes/recipes/[id]/+page.svelte +0 -538
- package/apps/recipe-web/src/routes/recipes/[id]/+page.ts +0 -24
- package/apps/recipe-web/static/favicon.svg +0 -8
- package/apps/recipe-web/static/robots.txt +0 -2
- package/apps/recipe-web/svelte.config.js +0 -35
- package/apps/recipe-web/tsconfig.json +0 -14
- package/apps/recipe-web/vite.config.ts +0 -23
- package/packages/recipe-kit-stencil/README.md +0 -185
- package/packages/recipe-kit-stencil/package-lock.json +0 -4772
- package/packages/recipe-kit-stencil/package.json +0 -91
- package/packages/recipe-kit-stencil/src/components/rk-badge/readme.md +0 -38
- package/packages/recipe-kit-stencil/src/components/rk-badge/rk-badge.tsx +0 -31
- package/packages/recipe-kit-stencil/src/components/rk-chip/readme.md +0 -52
- package/packages/recipe-kit-stencil/src/components/rk-chip/rk-chip.tsx +0 -105
- package/packages/recipe-kit-stencil/src/components/rk-empty-state/readme.md +0 -44
- package/packages/recipe-kit-stencil/src/components/rk-empty-state/rk-empty-state.tsx +0 -50
- package/packages/recipe-kit-stencil/src/components/rk-meal-slot/readme.md +0 -58
- package/packages/recipe-kit-stencil/src/components/rk-meal-slot/rk-meal-slot.tsx +0 -182
- package/packages/recipe-kit-stencil/src/components/rk-modal/readme.md +0 -57
- package/packages/recipe-kit-stencil/src/components/rk-modal/rk-modal.tsx +0 -176
- package/packages/recipe-kit-stencil/src/components/rk-rating/readme.md +0 -42
- package/packages/recipe-kit-stencil/src/components/rk-rating/rk-rating.tsx +0 -114
- package/packages/recipe-kit-stencil/src/components/rk-recipe-card/readme.md +0 -66
- package/packages/recipe-kit-stencil/src/components/rk-recipe-card/rk-recipe-card.tsx +0 -179
- package/packages/recipe-kit-stencil/src/components/rk-recipe-card/test/rk-recipe-card.spec.tsx +0 -70
- package/packages/recipe-kit-stencil/src/components/rk-search-bar/readme.md +0 -67
- package/packages/recipe-kit-stencil/src/components/rk-search-bar/rk-search-bar.tsx +0 -152
- package/packages/recipe-kit-stencil/src/components/rk-search-bar/test/rk-search-bar.spec.tsx +0 -93
- package/packages/recipe-kit-stencil/src/components/rk-segmented-control/readme.md +0 -41
- package/packages/recipe-kit-stencil/src/components/rk-segmented-control/rk-segmented-control.tsx +0 -115
- package/packages/recipe-kit-stencil/src/components/rk-tag-input/readme.md +0 -47
- package/packages/recipe-kit-stencil/src/components/rk-tag-input/rk-tag-input.tsx +0 -181
- package/packages/recipe-kit-stencil/src/components/rk-tag-input/test/rk-tag-input.spec.tsx +0 -76
- package/packages/recipe-kit-stencil/src/index.html +0 -259
- package/packages/recipe-kit-stencil/stencil.config.ts +0 -41
- package/packages/recipe-kit-stencil/tsconfig.json +0 -24
- /package/{packages/recipe-kit-stencil/LICENSE → LICENSE} +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-badge/rk-badge.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-chip/rk-chip.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-empty-state/rk-empty-state.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-meal-slot/rk-meal-slot.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-modal/rk-modal.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-rating/rk-rating.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-recipe-card/rk-recipe-card.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-search-bar/rk-search-bar.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-segmented-control/rk-segmented-control.css +0 -0
- /package/{packages/recipe-kit-stencil/src → dist/collection}/components/rk-tag-input/rk-tag-input.css +0 -0
- /package/{packages/recipe-kit-stencil/src/global → dist/collection}/rk-global.css +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"rk-badge_10.entry.js","mappings":"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","names":[],"sources":["src/components/rk-badge/rk-badge.css?tag=rk-badge&encapsulation=shadow","src/components/rk-badge/rk-badge.tsx","src/components/rk-chip/rk-chip.css?tag=rk-chip&encapsulation=shadow","src/components/rk-chip/rk-chip.tsx","src/components/rk-empty-state/rk-empty-state.css?tag=rk-empty-state&encapsulation=shadow","src/components/rk-empty-state/rk-empty-state.tsx","src/components/rk-meal-slot/rk-meal-slot.css?tag=rk-meal-slot&encapsulation=shadow","src/components/rk-meal-slot/rk-meal-slot.tsx","src/components/rk-modal/rk-modal.css?tag=rk-modal&encapsulation=shadow","src/components/rk-modal/rk-modal.tsx","src/components/rk-rating/rk-rating.css?tag=rk-rating&encapsulation=shadow","src/components/rk-rating/rk-rating.tsx","src/components/rk-recipe-card/rk-recipe-card.css?tag=rk-recipe-card&encapsulation=shadow","src/components/rk-recipe-card/rk-recipe-card.tsx","src/components/rk-search-bar/rk-search-bar.css?tag=rk-search-bar&encapsulation=shadow","src/components/rk-search-bar/rk-search-bar.tsx","src/components/rk-segmented-control/rk-segmented-control.css?tag=rk-segmented-control&encapsulation=shadow","src/components/rk-segmented-control/rk-segmented-control.tsx","src/components/rk-tag-input/rk-tag-input.css?tag=rk-tag-input&encapsulation=shadow","src/components/rk-tag-input/rk-tag-input.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n font-family: var(--rk-font);\n vertical-align: middle;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 4px 10px;\n border-radius: var(--rk-radius-pill, 999px);\n border: 1px solid transparent;\n font-size: 0.76em;\n font-weight: 650;\n line-height: 1.35;\n letter-spacing: 0.01em;\n white-space: nowrap;\n}\n\n.badge.is-small {\n padding: 2px 8px;\n font-size: 0.7em;\n}\n\n/* --- soft (default) --- */\n.variant-soft.tone-neutral {\n background: var(--rk-surface-2, #fdf5ef);\n color: var(--rk-ink-2, #52443c);\n}\n.variant-soft.tone-primary {\n background: var(--rk-primary-soft, #fdeee6);\n color: var(--rk-primary-strong, #b23c11);\n}\n.variant-soft.tone-accent {\n background: var(--rk-accent-soft, #e2f3f1);\n color: var(--rk-accent, #0f766e);\n}\n.variant-soft.tone-success {\n background: var(--rk-success-soft, #e6f5eb);\n color: var(--rk-success, #15803d);\n}\n.variant-soft.tone-warning {\n background: var(--rk-warning-soft, #fdf3d8);\n color: var(--rk-warning, #a16207);\n}\n.variant-soft.tone-danger {\n background: var(--rk-danger-soft, #fdeae1);\n color: var(--rk-danger, #c2410c);\n}\n\n/* --- solid --- */\n.variant-solid {\n color: #fff;\n}\n.variant-solid.tone-neutral {\n background: var(--rk-ink, #211a16);\n}\n.variant-solid.tone-primary {\n background: var(--rk-primary, #d94f1b);\n}\n.variant-solid.tone-accent {\n background: var(--rk-accent, #0f766e);\n}\n.variant-solid.tone-success {\n background: var(--rk-success, #15803d);\n}\n.variant-solid.tone-warning {\n background: var(--rk-warning, #a16207);\n}\n.variant-solid.tone-danger {\n background: var(--rk-danger, #c2410c);\n}\n\n/* --- outline --- */\n.variant-outline {\n background: transparent;\n}\n.variant-outline.tone-neutral {\n border-color: var(--rk-border-strong, #d9c6b8);\n color: var(--rk-ink-2, #52443c);\n}\n.variant-outline.tone-primary {\n border-color: var(--rk-primary, #d94f1b);\n color: var(--rk-primary, #d94f1b);\n}\n.variant-outline.tone-accent {\n border-color: var(--rk-accent, #0f766e);\n color: var(--rk-accent, #0f766e);\n}\n.variant-outline.tone-success {\n border-color: var(--rk-success, #15803d);\n color: var(--rk-success, #15803d);\n}\n.variant-outline.tone-warning {\n border-color: var(--rk-warning, #a16207);\n color: var(--rk-warning, #a16207);\n}\n.variant-outline.tone-danger {\n border-color: var(--rk-danger, #c2410c);\n color: var(--rk-danger, #c2410c);\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * A small, non-interactive label. Purely slot-driven so hosts can put icons,\n * text or counts inside it.\n *\n * @slot - Badge content.\n */\n@Component({\n tag: 'rk-badge',\n styleUrl: 'rk-badge.css',\n shadow: true,\n})\nexport class RkBadge {\n /** Color treatment. */\n @Prop() tone: 'neutral' | 'primary' | 'accent' | 'success' | 'warning' | 'danger' = 'neutral';\n\n /** `soft` is tinted, `solid` is filled, `outline` is bordered only. */\n @Prop() variant: 'soft' | 'solid' | 'outline' = 'soft';\n\n /** Compact sizing for dense layouts. */\n @Prop() small = false;\n\n render() {\n return (\n <span class={{ badge: true, [`tone-${this.tone}`]: true, [`variant-${this.variant}`]: true, 'is-small': this.small }} part=\"badge\">\n <slot />\n </span>\n );\n }\n}\n",":host {\n display: inline-flex;\n font-family: var(--rk-font);\n vertical-align: middle;\n}\n\n.chip,\n.body {\n display: inline-flex;\n align-items: center;\n gap: 7px;\n font: inherit;\n font-size: 0.88em;\n font-weight: 550;\n line-height: 1;\n color: var(--rk-ink-2, #52443c);\n background: var(--rk-surface, #fff);\n border: 1px solid var(--rk-border, #ecdfd4);\n border-radius: var(--rk-radius-pill, 999px);\n padding: 9px 15px;\n cursor: pointer;\n white-space: nowrap;\n transition: background var(--rk-transition), border-color var(--rk-transition), color var(--rk-transition), transform var(--rk-transition);\n}\n\n.chip:hover:not(:disabled),\n.body:hover:not(:disabled) {\n border-color: var(--rk-border-strong, #d9c6b8);\n background: var(--rk-surface-2, #fdf5ef);\n}\n\n.chip:active:not(:disabled) {\n transform: translateY(1px);\n}\n\n.chip:focus-visible,\n.body:focus-visible,\n.dismiss:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.chip:disabled,\n.body:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* Selected states, per tone */\n.chip.is-selected.tone-neutral {\n background: var(--rk-ink, #211a16);\n border-color: var(--rk-ink, #211a16);\n color: var(--rk-surface, #fff);\n}\n\n.chip.is-selected.tone-primary {\n background: var(--rk-primary, #d94f1b);\n border-color: var(--rk-primary, #d94f1b);\n color: #fff;\n}\n\n.chip.is-selected.tone-accent {\n background: var(--rk-accent, #0f766e);\n border-color: var(--rk-accent, #0f766e);\n color: #fff;\n}\n\n.chip.is-selected:hover:not(:disabled) {\n filter: brightness(1.08);\n}\n\n.count {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n border-radius: var(--rk-radius-pill, 999px);\n background: var(--rk-surface-2, #fdf5ef);\n color: var(--rk-muted, #857166);\n font-size: 0.78em;\n font-weight: 650;\n}\n\n.chip.is-selected .count {\n background: rgba(255, 255, 255, 0.22);\n color: inherit;\n}\n\n/*\n * `display: contents` lets slotted nodes become direct flex items of the chip,\n * so an *empty* leading slot contributes no box and therefore no stray gap.\n */\n.lead {\n display: contents;\n}\n\n.lead ::slotted(*) {\n font-size: 1.05em;\n line-height: 1;\n}\n\n/* Dismissible layout: shell holds two buttons that read as one pill. */\n.chip.is-dismissible {\n padding: 0;\n background: transparent;\n border: 0;\n border-radius: var(--rk-radius-pill, 999px);\n gap: 0;\n}\n\n.chip.is-dismissible .body {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-right: 0;\n}\n\n.dismiss {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n padding: 0;\n border: 1px solid var(--rk-border, #ecdfd4);\n border-left: 0;\n border-radius: 0 var(--rk-radius-pill, 999px) var(--rk-radius-pill, 999px) 0;\n background: var(--rk-surface, #fff);\n color: var(--rk-muted, #857166);\n cursor: pointer;\n transition: background var(--rk-transition), color var(--rk-transition);\n}\n\n.dismiss:hover:not(:disabled) {\n background: var(--rk-danger-soft, #fdeae1);\n color: var(--rk-danger, #c2410c);\n}\n\n.dismiss:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.dismiss svg {\n width: 12px;\n height: 12px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .chip,\n .body,\n .dismiss {\n transition: none;\n }\n}\n","import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\n\n/**\n * A selectable / dismissible filter chip.\n *\n * @slot - Optional leading content (icon, emoji, avatar) rendered before the label.\n */\n@Component({\n tag: 'rk-chip',\n styleUrl: 'rk-chip.css',\n shadow: true,\n})\nexport class RkChip {\n /** Visible text. */\n @Prop() label = '';\n\n /** Value reported back to the host application in event payloads. */\n @Prop() value?: string;\n\n /** Whether the chip is currently active. */\n @Prop() selected = false;\n\n /** Optional trailing count badge (e.g. number of matching recipes). */\n @Prop() count?: number;\n\n /** Renders an \"x\" button that emits `rkChipDismiss` instead of toggling. */\n @Prop() dismissible = false;\n\n /** Disables interaction. */\n @Prop() disabled = false;\n\n /** Visual treatment. */\n @Prop() tone: 'neutral' | 'primary' | 'accent' = 'neutral';\n\n /** Emitted when the chip is toggled. */\n @Event({ eventName: 'rkChipToggle' }) rkChipToggle!: EventEmitter<{ value: string; label: string; selected: boolean }>;\n\n /** Emitted when a dismissible chip's remove button is pressed. */\n @Event({ eventName: 'rkChipDismiss' }) rkChipDismiss!: EventEmitter<{ value: string; label: string }>;\n\n private get resolvedValue() {\n return this.value ?? this.label;\n }\n\n private handleClick = () => {\n if (this.disabled) return;\n this.rkChipToggle.emit({\n value: this.resolvedValue,\n label: this.label,\n selected: !this.selected,\n });\n };\n\n private handleDismiss = (event: MouseEvent) => {\n event.stopPropagation();\n if (this.disabled) return;\n this.rkChipDismiss.emit({ value: this.resolvedValue, label: this.label });\n };\n\n render() {\n const body = [\n <span class=\"lead\">\n <slot />\n </span>,\n <span class=\"label\" part=\"label\">\n {this.label}\n </span>,\n typeof this.count === 'number' && (\n <span class=\"count\" part=\"count\">\n {this.count}\n </span>\n ),\n ];\n\n const classes = {\n chip: true,\n 'is-selected': this.selected,\n 'is-dismissible': this.dismissible,\n [`tone-${this.tone}`]: true,\n };\n\n // A dismissible chip needs two independent controls, so the shell becomes a\n // plain element to avoid nesting buttons inside a button.\n if (this.dismissible) {\n return (\n <span class={classes} part=\"chip\">\n <button class=\"body\" type=\"button\" disabled={this.disabled} onClick={this.handleClick}>\n {body}\n </button>\n <button class=\"dismiss\" part=\"dismiss\" type=\"button\" disabled={this.disabled} aria-label={`Remove ${this.label}`} onClick={this.handleDismiss}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n </button>\n </span>\n );\n }\n\n return (\n <button class={classes} part=\"chip\" type=\"button\" aria-pressed={String(this.selected)} disabled={this.disabled} onClick={this.handleClick}>\n {body}\n </button>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n}\n\n.empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n gap: 8px;\n padding: 52px 28px;\n border: 1.5px dashed var(--rk-border-strong, #d9c6b8);\n border-radius: var(--rk-radius-lg, 20px);\n background: var(--rk-surface-2, #fdf5ef);\n color: var(--rk-ink, #211a16);\n}\n\n.empty.is-bare {\n border: 0;\n background: transparent;\n padding: 28px 16px;\n}\n\n.empty.tone-error {\n border-color: var(--rk-danger, #c2410c);\n background: var(--rk-danger-soft, #fdeae1);\n}\n\n.icon {\n font-size: 2.5rem;\n line-height: 1;\n margin-bottom: 4px;\n}\n\n.heading {\n margin: 0;\n font-family: var(--rk-font-display, serif);\n font-size: 1.25em;\n font-weight: 650;\n letter-spacing: -0.01em;\n}\n\n.message {\n margin: 0;\n max-width: 46ch;\n color: var(--rk-muted, #857166);\n line-height: 1.55;\n font-size: 0.94em;\n}\n\n.empty.tone-error .message {\n color: var(--rk-danger, #c2410c);\n}\n\n/* `display: contents` keeps an unused actions slot from adding vertical space. */\n.actions {\n display: contents;\n}\n\n.actions ::slotted(*) {\n margin-top: 12px;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * Placeholder shown when a list has no items, a search returns nothing, or a\n * request fails.\n *\n * @slot - Call-to-action content rendered under the message (buttons, links).\n */\n@Component({\n tag: 'rk-empty-state',\n styleUrl: 'rk-empty-state.css',\n shadow: true,\n})\nexport class RkEmptyState {\n /** Emoji or short glyph shown above the heading. */\n @Prop() icon = '🍳';\n\n /** Bold headline. */\n @Prop() heading = 'Nothing here yet';\n\n /** Supporting sentence. */\n @Prop() message?: string;\n\n /** `error` swaps to a warning treatment. */\n @Prop() tone: 'neutral' | 'error' = 'neutral';\n\n /** Removes the dashed border and reduces padding, for inline use. */\n @Prop() bare = false;\n\n render() {\n return (\n <div class={{ empty: true, [`tone-${this.tone}`]: true, 'is-bare': this.bare }} part=\"container\" role={this.tone === 'error' ? 'alert' : null}>\n <span class=\"icon\" part=\"icon\" aria-hidden=\"true\">\n {this.icon}\n </span>\n <h3 class=\"heading\" part=\"heading\">\n {this.heading}\n </h3>\n {this.message && (\n <p class=\"message\" part=\"message\">\n {this.message}\n </p>\n )}\n <div class=\"actions\" part=\"actions\">\n <slot />\n </div>\n </div>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n color: var(--rk-ink, #211a16);\n}\n\n.slot {\n position: relative;\n width: 100%;\n box-sizing: border-box;\n border-radius: var(--rk-radius, 14px);\n transition: border-color var(--rk-transition), background var(--rk-transition), box-shadow var(--rk-transition);\n}\n\n/* ---------- empty ---------- */\n\n.slot.is-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 3px;\n min-height: 86px;\n padding: 12px 10px;\n border: 1.5px dashed var(--rk-border-strong, #d9c6b8);\n background: transparent;\n color: var(--rk-muted, #857166);\n font: inherit;\n cursor: pointer;\n}\n\n.slot.is-empty:hover:not(:disabled) {\n border-color: var(--rk-primary, #d94f1b);\n background: var(--rk-primary-soft, #fdeee6);\n color: var(--rk-primary-strong, #b23c11);\n}\n\n.slot.is-empty:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.slot.is-empty:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.plus {\n font-size: 1.3rem;\n line-height: 1;\n font-weight: 300;\n}\n\n.empty-label {\n font-size: 0.76em;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.06em;\n}\n\n/* ---------- filled ---------- */\n\n.slot.is-filled {\n display: flex;\n flex-direction: column;\n gap: 6px;\n min-height: 86px;\n padding: 10px;\n border: 1px solid var(--rk-border, #ecdfd4);\n background: var(--rk-surface, #fff);\n box-shadow: var(--rk-shadow-sm);\n}\n\n.caption {\n font-size: 0.7em;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.07em;\n color: var(--rk-muted, #857166);\n}\n\n.main {\n display: flex;\n align-items: center;\n gap: 9px;\n width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n text-align: left;\n font: inherit;\n color: inherit;\n cursor: pointer;\n border-radius: var(--rk-radius-sm, 8px);\n}\n\n.main:hover:not(:disabled) .name {\n color: var(--rk-primary, #d94f1b);\n}\n\n.main:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.main:disabled {\n cursor: not-allowed;\n}\n\n.thumb {\n flex: 0 0 auto;\n width: 38px;\n height: 38px;\n border-radius: var(--rk-radius-sm, 8px);\n object-fit: cover;\n background: var(--rk-surface-2, #fdf5ef);\n}\n\n.thumb-fallback {\n display: grid;\n place-items: center;\n font-size: 1.1rem;\n}\n\n.name {\n font-size: 0.87em;\n font-weight: 600;\n line-height: 1.3;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n transition: color var(--rk-transition);\n}\n\n.extra {\n display: contents;\n}\n\n.extra ::slotted(*) {\n font-size: 0.8em;\n color: var(--rk-muted, #857166);\n}\n\n.controls {\n position: absolute;\n top: 6px;\n right: 6px;\n display: flex;\n gap: 3px;\n opacity: 0;\n transition: opacity var(--rk-transition);\n}\n\n.slot.is-filled:hover .controls,\n.slot.is-filled:focus-within .controls {\n opacity: 1;\n}\n\n.ctrl {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: 1px solid var(--rk-border, #ecdfd4);\n border-radius: 50%;\n background: var(--rk-surface, #fff);\n color: var(--rk-ink-2, #52443c);\n cursor: pointer;\n box-shadow: var(--rk-shadow-sm);\n transition: background var(--rk-transition), color var(--rk-transition);\n}\n\n.ctrl:hover:not(:disabled) {\n background: var(--rk-surface-2, #fdf5ef);\n color: var(--rk-primary, #d94f1b);\n}\n\n.ctrl.is-danger:hover:not(:disabled) {\n background: var(--rk-danger-soft, #fdeae1);\n color: var(--rk-danger, #c2410c);\n}\n\n.ctrl:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.ctrl:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.ctrl svg {\n width: 12px;\n height: 12px;\n}\n\n/* ---------- drag & drop ---------- */\n\n.slot.is-drag-over {\n border-color: var(--rk-accent, #0f766e) !important;\n border-style: solid;\n background: var(--rk-accent-soft, #e2f3f1) !important;\n box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.2);\n}\n\n/* Touch devices have no hover, so the controls stay visible. */\n@media (hover: none) {\n .controls {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .slot,\n .controls,\n .ctrl,\n .name {\n transition: none;\n }\n}\n","import { Component, Event, EventEmitter, h, Prop, State } from '@stencil/core';\n\nexport interface RkMealSlotDetail {\n day: string;\n mealType: string;\n}\n\nexport interface RkMealRecipeDetail extends RkMealSlotDetail {\n recipeId: string;\n recipeName: string;\n}\n\nexport interface RkMealDropDetail extends RkMealSlotDetail {\n /** Raw `text/plain` payload from the drag operation. */\n payload: string;\n}\n\n/**\n * One cell of the weekly planner grid: either an empty \"add\" target or a filled\n * slot showing the planned recipe. Doubles as a drop zone for drag-and-drop\n * planning.\n *\n * @slot - Extra content rendered under the recipe name (e.g. serving notes).\n */\n@Component({\n tag: 'rk-meal-slot',\n styleUrl: 'rk-meal-slot.css',\n shadow: true,\n})\nexport class RkMealSlot {\n /** Day key this slot belongs to, e.g. `monday`. Echoed in event payloads. */\n @Prop() day!: string;\n\n /** Meal type key, e.g. `breakfast`. Echoed in event payloads. */\n @Prop() mealType!: string;\n\n /** Human-readable meal label shown as the slot caption. */\n @Prop() mealLabel?: string;\n\n /** Id of the planned recipe. Empty means the slot is free. */\n @Prop() recipeId?: string;\n\n /** Title of the planned recipe. */\n @Prop() recipeName?: string;\n\n /** Thumbnail of the planned recipe. */\n @Prop() recipeImage?: string;\n\n /** Disables interaction. */\n @Prop() disabled = false;\n\n /** Emitted when an empty slot is activated — the host opens a recipe picker. */\n @Event({ eventName: 'rkMealAdd' }) rkMealAdd!: EventEmitter<RkMealSlotDetail>;\n\n /** Emitted when the planned recipe should be replaced. */\n @Event({ eventName: 'rkMealSwap' }) rkMealSwap!: EventEmitter<RkMealRecipeDetail>;\n\n /** Emitted when the planned recipe should be cleared. */\n @Event({ eventName: 'rkMealRemove' }) rkMealRemove!: EventEmitter<RkMealRecipeDetail>;\n\n /** Emitted when the planned recipe is activated — the host navigates. */\n @Event({ eventName: 'rkMealOpen' }) rkMealOpen!: EventEmitter<RkMealRecipeDetail>;\n\n /** Emitted when a recipe is dropped onto this slot. */\n @Event({ eventName: 'rkMealDrop' }) rkMealDrop!: EventEmitter<RkMealDropDetail>;\n\n @State() private dragOver = false;\n\n private get filled() {\n return !!this.recipeId;\n }\n\n private get slotDetail(): RkMealSlotDetail {\n return { day: this.day, mealType: this.mealType };\n }\n\n private get recipeDetail(): RkMealRecipeDetail {\n return { ...this.slotDetail, recipeId: this.recipeId ?? '', recipeName: this.recipeName ?? '' };\n }\n\n private handleDragOver = (event: DragEvent) => {\n if (this.disabled) return;\n // Preventing default is what marks this element as a valid drop target.\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = 'copy';\n this.dragOver = true;\n };\n\n private handleDrop = (event: DragEvent) => {\n event.preventDefault();\n this.dragOver = false;\n if (this.disabled) return;\n const payload = event.dataTransfer?.getData('text/plain') ?? '';\n if (payload) this.rkMealDrop.emit({ ...this.slotDetail, payload });\n };\n\n render() {\n if (!this.filled) {\n return (\n <button\n class={{ slot: true, 'is-empty': true, 'is-drag-over': this.dragOver }}\n part=\"slot\"\n type=\"button\"\n disabled={this.disabled}\n aria-label={`Add a recipe for ${this.mealLabel ?? this.mealType} on ${this.day}`}\n onClick={() => this.rkMealAdd.emit(this.slotDetail)}\n onDragOver={this.handleDragOver}\n onDragLeave={() => (this.dragOver = false)}\n onDrop={this.handleDrop}\n >\n <span class=\"plus\" aria-hidden=\"true\">\n +\n </span>\n <span class=\"empty-label\">{this.mealLabel ?? this.mealType}</span>\n </button>\n );\n }\n\n return (\n <div\n class={{ slot: true, 'is-filled': true, 'is-drag-over': this.dragOver }}\n part=\"slot\"\n onDragOver={this.handleDragOver}\n onDragLeave={() => (this.dragOver = false)}\n onDrop={this.handleDrop}\n >\n {this.mealLabel && (\n <span class=\"caption\" part=\"caption\">\n {this.mealLabel}\n </span>\n )}\n\n <button\n class=\"main\"\n part=\"main\"\n type=\"button\"\n disabled={this.disabled}\n title={this.recipeName}\n onClick={() => this.rkMealOpen.emit(this.recipeDetail)}\n >\n {this.recipeImage ? (\n <img class=\"thumb\" src={this.recipeImage} alt=\"\" loading=\"lazy\" decoding=\"async\" />\n ) : (\n <span class=\"thumb thumb-fallback\" aria-hidden=\"true\">\n 🍽️\n </span>\n )}\n <span class=\"name\" part=\"name\">\n {this.recipeName}\n </span>\n </button>\n\n <div class=\"extra\">\n <slot />\n </div>\n\n <div class=\"controls\" part=\"controls\">\n <button class=\"ctrl\" type=\"button\" disabled={this.disabled} aria-label={`Replace ${this.recipeName}`} title=\"Replace\" onClick={() => this.rkMealSwap.emit(this.recipeDetail)}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M3 12a9 9 0 0 1 15.3-6.4L21 8\" />\n <path d=\"M21 3v5h-5\" />\n <path d=\"M21 12a9 9 0 0 1-15.3 6.4L3 16\" />\n <path d=\"M3 21v-5h5\" />\n </svg>\n </button>\n <button\n class=\"ctrl is-danger\"\n type=\"button\"\n disabled={this.disabled}\n aria-label={`Remove ${this.recipeName} from ${this.mealLabel ?? this.mealType}`}\n title=\"Remove\"\n onClick={() => this.rkMealRemove.emit(this.recipeDetail)}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n </button>\n </div>\n </div>\n );\n }\n}\n",":host {\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n color: var(--rk-ink, #211a16);\n}\n\n.backdrop {\n position: fixed;\n inset: 0;\n z-index: var(--rk-z-modal, 1000);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px;\n background: rgba(24, 17, 13, 0.5);\n backdrop-filter: blur(3px);\n animation: rk-fade-in 140ms ease-out;\n overflow-y: auto;\n}\n\n.panel {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100vh - 40px);\n background: var(--rk-surface, #fff);\n border-radius: var(--rk-radius-lg, 20px);\n box-shadow: var(--rk-shadow-lg);\n overflow: hidden;\n animation: rk-pop-in 180ms cubic-bezier(0.2, 0, 0.2, 1);\n}\n\n.panel:focus {\n outline: none;\n}\n\n.size-sm {\n max-width: 420px;\n}\n\n.size-md {\n max-width: 620px;\n}\n\n.size-lg {\n max-width: 880px;\n}\n\n.header {\n display: flex;\n align-items: flex-start;\n gap: 16px;\n padding: 22px 24px 16px;\n border-bottom: 1px solid var(--rk-border, #ecdfd4);\n flex: 0 0 auto;\n}\n\n.titles {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.heading {\n margin: 0;\n font-family: var(--rk-font-display, serif);\n font-size: 1.32em;\n font-weight: 650;\n letter-spacing: -0.015em;\n line-height: 1.25;\n}\n\n.subheading {\n margin: 5px 0 0;\n font-size: 0.9em;\n color: var(--rk-muted, #857166);\n line-height: 1.5;\n}\n\n.close {\n flex: 0 0 auto;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 34px;\n height: 34px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: var(--rk-surface-2, #fdf5ef);\n color: var(--rk-ink-2, #52443c);\n cursor: pointer;\n transition: background var(--rk-transition), color var(--rk-transition);\n}\n\n.close:hover {\n background: var(--rk-danger-soft, #fdeae1);\n color: var(--rk-danger, #c2410c);\n}\n\n.close:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.close svg {\n width: 16px;\n height: 16px;\n}\n\n.body {\n padding: 20px 24px;\n overflow-y: auto;\n flex: 1 1 auto;\n line-height: 1.6;\n}\n\n.footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 10px;\n padding: 16px 24px;\n border-top: 1px solid var(--rk-border, #ecdfd4);\n background: var(--rk-surface-2, #fdf5ef);\n flex: 0 0 auto;\n}\n\n.footer.is-empty {\n display: none;\n}\n\n@keyframes rk-fade-in {\n from {\n opacity: 0;\n }\n}\n\n@keyframes rk-pop-in {\n from {\n opacity: 0;\n transform: translateY(12px) scale(0.98);\n }\n}\n\n@media (max-width: 560px) {\n .backdrop {\n padding: 0;\n align-items: flex-end;\n }\n\n .panel {\n border-radius: var(--rk-radius-lg, 20px) var(--rk-radius-lg, 20px) 0 0;\n max-height: 92vh;\n max-width: none;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .backdrop,\n .panel {\n animation: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\n/**\n * An accessible dialog with a backdrop, Escape handling and focus restoration.\n *\n * The component is presentational: it emits `rkModalClose` and lets the host\n * application own the `open` state.\n *\n * @slot - Dialog body.\n * @slot header - Replaces the default heading row entirely.\n * @slot footer - Action row pinned to the bottom of the dialog.\n */\n@Component({\n tag: 'rk-modal',\n styleUrl: 'rk-modal.css',\n shadow: true,\n})\nexport class RkModal {\n @Element() host!: HTMLElement;\n\n /** Controls visibility. */\n @Prop() open = false;\n\n /** Heading text for the default header. */\n @Prop() heading = '';\n\n /** Optional supporting line under the heading. */\n @Prop() subheading?: string;\n\n /** Dialog width preset. */\n @Prop() size: 'sm' | 'md' | 'lg' = 'md';\n\n /** Set to false to require an explicit action to dismiss. */\n @Prop() dismissible = true;\n\n /** Emitted when the user requests dismissal (X, backdrop or Escape). */\n @Event({ eventName: 'rkModalClose' }) rkModalClose!: EventEmitter<void>;\n\n @State() private hasFooter = false;\n\n private previouslyFocused?: HTMLElement;\n private panelEl?: HTMLElement;\n\n /** Collapses the footer region when no action row was projected into it. */\n private syncFooterSlot = () => {\n this.hasFooter = Array.from(this.host.children).some(node => node.getAttribute('slot') === 'footer');\n };\n\n @Watch('open')\n protected onOpenChange(isOpen: boolean, wasOpen: boolean) {\n if (isOpen === wasOpen) return;\n\n if (isOpen) {\n this.previouslyFocused = document.activeElement as HTMLElement;\n document.addEventListener('keydown', this.handleGlobalKeyDown);\n this.lockScroll(true);\n // Wait a frame so the panel exists before moving focus into it.\n requestAnimationFrame(() => this.focusFirst());\n } else {\n document.removeEventListener('keydown', this.handleGlobalKeyDown);\n this.lockScroll(false);\n this.previouslyFocused?.focus?.();\n this.previouslyFocused = undefined;\n }\n }\n\n componentWillLoad() {\n this.syncFooterSlot();\n }\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true, false);\n }\n\n disconnectedCallback() {\n document.removeEventListener('keydown', this.handleGlobalKeyDown);\n this.lockScroll(false);\n }\n\n private lockScroll(locked: boolean) {\n if (typeof document === 'undefined') return;\n document.documentElement.style.overflow = locked ? 'hidden' : '';\n }\n\n private focusableElements(): HTMLElement[] {\n if (!this.panelEl) return [];\n const selector = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n // Slotted content lives in the light DOM, so both trees have to be queried.\n const inShadow = Array.from(this.panelEl.querySelectorAll<HTMLElement>(selector));\n const inLight = Array.from(this.host.querySelectorAll<HTMLElement>(selector));\n return [...inShadow, ...inLight].filter(el => el.offsetParent !== null || el === document.activeElement);\n }\n\n private focusFirst() {\n const [first] = this.focusableElements();\n (first ?? this.panelEl)?.focus?.();\n }\n\n private handleGlobalKeyDown = (event: KeyboardEvent) => {\n if (!this.open) return;\n\n if (event.key === 'Escape' && this.dismissible) {\n event.preventDefault();\n this.rkModalClose.emit();\n return;\n }\n\n if (event.key === 'Tab') {\n const focusable = this.focusableElements();\n if (focusable.length === 0) return;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = (this.host.shadowRoot?.activeElement ?? document.activeElement) as HTMLElement;\n\n if (event.shiftKey && active === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n };\n\n private handleBackdrop = (event: MouseEvent) => {\n if (!this.dismissible) return;\n if (event.target === event.currentTarget) this.rkModalClose.emit();\n };\n\n render() {\n if (!this.open) return <Host aria-hidden=\"true\" />;\n\n return (\n <Host>\n <div class=\"backdrop\" part=\"backdrop\" onClick={this.handleBackdrop}>\n <div\n class={{ panel: true, [`size-${this.size}`]: true }}\n part=\"panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={this.heading || 'Dialog'}\n tabindex={-1}\n ref={el => (this.panelEl = el)}\n >\n <header class=\"header\" part=\"header\">\n <slot name=\"header\">\n <div class=\"titles\">\n <h2 class=\"heading\" part=\"heading\">\n {this.heading}\n </h2>\n {this.subheading && <p class=\"subheading\">{this.subheading}</p>}\n </div>\n </slot>\n\n {this.dismissible && (\n <button class=\"close\" part=\"close\" type=\"button\" aria-label=\"Close dialog\" onClick={() => this.rkModalClose.emit()}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n </button>\n )}\n </header>\n\n <div class=\"body\" part=\"body\">\n <slot />\n </div>\n\n <footer class={{ footer: true, 'is-empty': !this.hasFooter }} part=\"footer\">\n <slot name=\"footer\" onSlotchange={this.syncFooterSlot} />\n </footer>\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n font-family: var(--rk-font);\n --rk-star-size: 18px;\n}\n\n.stars {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n border-radius: var(--rk-radius-sm, 8px);\n}\n\n.stars:not(.is-readonly) {\n cursor: pointer;\n}\n\n.stars:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.star-wrap {\n display: inline-flex;\n padding: 1px;\n transition: transform var(--rk-transition);\n}\n\n.stars:not(.is-readonly) .star-wrap:hover {\n transform: scale(1.15);\n}\n\n.star {\n width: var(--rk-star-size);\n height: var(--rk-star-size);\n display: block;\n}\n\n.star-bg {\n fill: none;\n stroke: var(--rk-border-strong, #d9c6b8);\n stroke-width: 1.6;\n}\n\n.star-fg {\n fill: var(--rk-warning, #a16207);\n stroke: var(--rk-warning, #a16207);\n stroke-width: 1.2;\n}\n\n.value {\n margin-left: 7px;\n font-size: 0.85em;\n font-weight: 600;\n color: var(--rk-ink-2, #52443c);\n font-variant-numeric: tabular-nums;\n}\n\n.count {\n margin-left: 4px;\n font-weight: 500;\n color: var(--rk-muted, #857166);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .star-wrap,\n .stars:not(.is-readonly) .star-wrap:hover {\n transition: none;\n transform: none;\n }\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core';\n\n/**\n * A star rating that works as a read-only display or an interactive input.\n */\n@Component({\n tag: 'rk-rating',\n styleUrl: 'rk-rating.css',\n shadow: true,\n})\nexport class RkRating {\n /** Current rating. Supports halves when `readonly`. */\n @Prop({ mutable: true }) value = 0;\n\n /** Number of stars. */\n @Prop() max = 5;\n\n /** When true the stars are display-only and not focusable. */\n @Prop() readonly = false;\n\n /** Star size in pixels. */\n @Prop() size = 18;\n\n /** Accessible label for the group. */\n @Prop() label = 'Rating';\n\n /** Renders the numeric value next to the stars. */\n @Prop() showValue = false;\n\n /** Optional count of ratings, rendered as \"(24)\". */\n @Prop() count?: number;\n\n /** Emitted when the user picks a new rating. */\n @Event({ eventName: 'rkRatingChange' }) rkRatingChange!: EventEmitter<number>;\n\n @State() private hovered = 0;\n\n private select(next: number) {\n if (this.readonly) return;\n // Clicking the active star clears the rating, which is the usual affordance.\n const resolved = next === this.value ? 0 : next;\n this.value = resolved;\n this.rkRatingChange.emit(resolved);\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.readonly) return;\n const step = event.key === 'ArrowRight' || event.key === 'ArrowUp' ? 1 : event.key === 'ArrowLeft' || event.key === 'ArrowDown' ? -1 : 0;\n if (step === 0) return;\n event.preventDefault();\n const next = Math.min(this.max, Math.max(0, Math.round(this.value) + step));\n this.value = next;\n this.rkRatingChange.emit(next);\n };\n\n render() {\n const active = this.hovered || this.value;\n const stars = Array.from({ length: Math.max(1, Math.round(this.max)) }, (_, index) => index + 1);\n\n return (\n <Host style={{ '--rk-star-size': `${this.size}px` }}>\n <div\n class={{ stars: true, 'is-readonly': this.readonly }}\n part=\"stars\"\n role={this.readonly ? 'img' : 'slider'}\n aria-label={`${this.label}: ${this.value} out of ${this.max}`}\n aria-valuenow={this.readonly ? null : String(this.value)}\n aria-valuemin={this.readonly ? null : '0'}\n aria-valuemax={this.readonly ? null : String(this.max)}\n tabindex={this.readonly ? null : 0}\n onKeyDown={this.handleKeyDown}\n onMouseLeave={() => (this.hovered = 0)}\n >\n {stars.map(star => {\n // Fractional fill only matters in read-only display mode.\n const fill = this.readonly ? Math.min(1, Math.max(0, this.value - (star - 1))) : star <= active ? 1 : 0;\n\n return (\n <span\n class=\"star-wrap\"\n key={star}\n onMouseEnter={() => !this.readonly && (this.hovered = star)}\n onClick={() => this.select(star)}\n aria-hidden=\"true\"\n >\n <svg class=\"star\" viewBox=\"0 0 24 24\">\n <path\n class=\"star-bg\"\n d=\"M12 2.6l2.86 5.98 6.54.87-4.8 4.5 1.2 6.45L12 17.3l-5.8 3.1 1.2-6.45-4.8-4.5 6.54-.87z\"\n />\n <clipPath id={`clip-${star}`}>\n <rect x=\"0\" y=\"0\" width={24 * fill} height=\"24\" />\n </clipPath>\n <path\n class=\"star-fg\"\n clip-path={`url(#clip-${star})`}\n d=\"M12 2.6l2.86 5.98 6.54.87-4.8 4.5 1.2 6.45L12 17.3l-5.8 3.1 1.2-6.45-4.8-4.5 6.54-.87z\"\n />\n </svg>\n </span>\n );\n })}\n\n {this.showValue && (\n <span class=\"value\" part=\"value\">\n {this.value ? this.value.toFixed(1) : '—'}\n {typeof this.count === 'number' && <span class=\"count\">({this.count})</span>}\n </span>\n )}\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n color: var(--rk-ink, #211a16);\n height: 100%;\n}\n\n.card {\n position: relative;\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--rk-surface, #fff);\n border: 1px solid var(--rk-border, #ecdfd4);\n border-radius: var(--rk-radius-lg, 20px);\n overflow: hidden;\n box-shadow: var(--rk-shadow-sm);\n transition: transform var(--rk-transition), box-shadow var(--rk-transition), border-color var(--rk-transition);\n}\n\n.card:hover {\n transform: translateY(-3px);\n box-shadow: var(--rk-shadow);\n border-color: var(--rk-border-strong, #d9c6b8);\n}\n\n/* ---------- media ---------- */\n\n.media {\n position: relative;\n display: block;\n aspect-ratio: 4 / 3;\n background: var(--rk-surface-2, #fdf5ef);\n overflow: hidden;\n text-decoration: none;\n}\n\n.media img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n display: block;\n transition: transform 420ms cubic-bezier(0.2, 0, 0.2, 1);\n}\n\n.card:hover .media img {\n transform: scale(1.045);\n}\n\n.media-fallback {\n position: absolute;\n inset: 0;\n display: grid;\n place-items: center;\n font-size: 2.6rem;\n opacity: 0.5;\n}\n\n.owned {\n position: absolute;\n left: 10px;\n bottom: 10px;\n padding: 4px 10px;\n border-radius: var(--rk-radius-pill, 999px);\n background: var(--rk-accent, #0f766e);\n color: #fff;\n font-size: 0.72em;\n font-weight: 700;\n letter-spacing: 0.03em;\n text-transform: uppercase;\n}\n\n/* ---------- favorite ---------- */\n\n.fav {\n position: absolute;\n top: 10px;\n right: 10px;\n z-index: 2;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 38px;\n height: 38px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.9);\n backdrop-filter: blur(6px);\n color: var(--rk-ink-2, #52443c);\n cursor: pointer;\n box-shadow: var(--rk-shadow-sm);\n transition: background var(--rk-transition), color var(--rk-transition), transform var(--rk-transition);\n}\n\n.fav svg {\n width: 20px;\n height: 20px;\n fill: none;\n transition: fill var(--rk-transition);\n}\n\n.fav:hover {\n transform: scale(1.08);\n color: var(--rk-primary, #d94f1b);\n}\n\n.fav:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.fav.is-on {\n color: var(--rk-primary, #d94f1b);\n}\n\n.fav.is-on svg {\n fill: currentColor;\n}\n\n/* ---------- body ---------- */\n\n.body {\n display: flex;\n flex-direction: column;\n gap: 7px;\n padding: 15px 16px 0;\n flex: 1 1 auto;\n}\n\n.title {\n margin: 0;\n font-family: var(--rk-font-display, serif);\n font-size: 1.12em;\n font-weight: 650;\n line-height: 1.28;\n letter-spacing: -0.01em;\n}\n\n.title a {\n color: inherit;\n text-decoration: none;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.title a:hover {\n color: var(--rk-primary, #d94f1b);\n}\n\n.title a:focus-visible {\n outline: none;\n border-radius: 4px;\n box-shadow: var(--rk-focus-ring);\n}\n\n.meta {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px 14px;\n margin: 0;\n font-size: 0.83em;\n color: var(--rk-muted, #857166);\n}\n\n.meta-item {\n position: relative;\n white-space: nowrap;\n}\n\n.meta-item + .meta-item::before {\n content: '';\n position: absolute;\n left: -8px;\n top: 50%;\n width: 3px;\n height: 3px;\n border-radius: 50%;\n background: currentColor;\n opacity: 0.55;\n transform: translateY(-50%);\n}\n\n.extra {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n margin-top: 3px;\n}\n\n/* ---------- footer ---------- */\n\n.footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 16px;\n margin-top: 12px;\n border-top: 1px solid var(--rk-border, #ecdfd4);\n}\n\n.footer ::slotted(*) {\n flex: 1 1 auto;\n}\n\n.extra.is-empty,\n.footer.is-empty {\n display: none;\n}\n\n/* Without a footer the body has to supply its own bottom padding. */\n.card:has(.footer.is-empty) .body {\n padding-bottom: 16px;\n}\n\n/* ---------- compact variant ---------- */\n\n.card.is-compact {\n flex-direction: row;\n align-items: stretch;\n border-radius: var(--rk-radius, 14px);\n}\n\n.card.is-compact:hover {\n transform: none;\n}\n\n.card.is-compact .media {\n flex: 0 0 96px;\n aspect-ratio: 1 / 1;\n}\n\n.card.is-compact .body {\n padding: 12px 14px;\n gap: 4px;\n justify-content: center;\n}\n\n.card.is-compact .title {\n font-size: 1em;\n}\n\n.card.is-compact .fav {\n width: 32px;\n height: 32px;\n top: 8px;\n right: 8px;\n}\n\n.card.is-compact .fav svg {\n width: 17px;\n height: 17px;\n}\n\n.card.is-compact .footer {\n margin-top: 0;\n border-top: 0;\n border-left: 1px solid var(--rk-border, #ecdfd4);\n padding: 12px;\n}\n\n.card.is-compact .owned {\n display: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .card,\n .card:hover,\n .media img,\n .card:hover .media img,\n .fav {\n transition: none;\n transform: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State } from '@stencil/core';\n\nexport interface RkRecipeCardSelectDetail {\n recipeId: string;\n name: string;\n origin: 'api' | 'custom';\n}\n\nexport interface RkFavoriteToggleDetail {\n recipeId: string;\n name: string;\n origin: 'api' | 'custom';\n /** The state the host app should move *to*. */\n favorite: boolean;\n}\n\n/**\n * The primary recipe tile used across discovery, favorites and search results.\n *\n * All data arrives as individual primitive properties rather than one object\n * prop, so the component works with plain HTML attributes in any framework.\n *\n * @slot - Extra metadata rendered under the title (badges, tags, ratings).\n * @slot actions - Buttons rendered in the card footer (e.g. \"Add to plan\").\n */\n@Component({\n tag: 'rk-recipe-card',\n styleUrl: 'rk-recipe-card.css',\n shadow: true,\n})\nexport class RkRecipeCard {\n @Element() host!: HTMLElement;\n\n /** Stable identifier echoed back in every event payload. */\n @Prop() recipeId!: string;\n\n /** Recipe title. */\n @Prop() name = '';\n\n /** Thumbnail URL. */\n @Prop() image?: string;\n\n /** Category, e.g. \"Dessert\". */\n @Prop() category?: string;\n\n /** Cuisine / region, e.g. \"Italian\". */\n @Prop() area?: string;\n\n /** Total time in minutes. Hidden when omitted. */\n @Prop() minutes?: number;\n\n /** Number of servings. Hidden when omitted. */\n @Prop() servings?: number;\n\n /** Whether this recipe is currently favorited. */\n @Prop() favorite = false;\n\n /** `custom` recipes are user-authored and get an \"Owned\" badge. */\n @Prop() origin: 'api' | 'custom' = 'api';\n\n /** Real href used for accessibility, SEO and middle-click / open-in-new-tab. */\n @Prop() href?: string;\n\n /** Renders a compact horizontal layout, for dense lists and the planner. */\n @Prop() compact = false;\n\n /** Hides the favorite button entirely (e.g. inside the planner). */\n @Prop() hideFavorite = false;\n\n /** Emitted on primary activation. The host app performs the navigation. */\n @Event({ eventName: 'rkCardSelect' }) rkCardSelect!: EventEmitter<RkRecipeCardSelectDetail>;\n\n /** Emitted when the favorite button is pressed. */\n @Event({ eventName: 'rkFavoriteToggle' }) rkFavoriteToggle!: EventEmitter<RkFavoriteToggleDetail>;\n\n @State() private imageFailed = false;\n @State() private hasExtra = false;\n @State() private hasActions = false;\n\n componentWillLoad() {\n this.syncSlots();\n }\n\n /**\n * Slot content is optional, and an empty wrapper would still paint padding and\n * a border. Tracking what was actually projected lets the card collapse those\n * regions instead. Re-run on `slotchange` so framework-driven updates count.\n */\n private syncSlots = () => {\n const elements = Array.from(this.host.children);\n this.hasActions = elements.some(node => node.getAttribute('slot') === 'actions');\n this.hasExtra =\n elements.some(node => !node.hasAttribute('slot')) ||\n Array.from(this.host.childNodes).some(node => node.nodeType === Node.TEXT_NODE && (node.textContent ?? '').trim() !== '');\n };\n\n private get detail(): RkRecipeCardSelectDetail {\n return { recipeId: this.recipeId, name: this.name, origin: this.origin };\n }\n\n private handleSelect = (event: MouseEvent) => {\n // Let the browser handle modified clicks so \"open in new tab\" keeps working.\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0) {\n return;\n }\n event.preventDefault();\n this.rkCardSelect.emit(this.detail);\n };\n\n private handleFavorite = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.rkFavoriteToggle.emit({ ...this.detail, favorite: !this.favorite });\n };\n\n render() {\n const showImage = this.image && !this.imageFailed;\n const href = this.href ?? `#${this.recipeId}`;\n\n return (\n <article class={{ card: true, 'is-compact': this.compact }} part=\"card\">\n <a class=\"media\" part=\"media\" href={href} tabindex={-1} aria-hidden=\"true\" onClick={this.handleSelect}>\n {showImage ? (\n <img src={this.image} alt=\"\" loading=\"lazy\" decoding=\"async\" onError={() => (this.imageFailed = true)} />\n ) : (\n <span class=\"media-fallback\" aria-hidden=\"true\">\n 🍲\n </span>\n )}\n\n {this.origin === 'custom' && (\n <span class=\"owned\" part=\"owned-badge\">\n Yours\n </span>\n )}\n </a>\n\n {!this.hideFavorite && (\n <button\n class={{ fav: true, 'is-on': this.favorite }}\n part=\"favorite-button\"\n type=\"button\"\n onClick={this.handleFavorite}\n aria-pressed={String(this.favorite)}\n aria-label={this.favorite ? `Remove ${this.name} from favorites` : `Add ${this.name} to favorites`}\n title={this.favorite ? 'Remove from favorites' : 'Add to favorites'}\n >\n <svg viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M12 20.5 4.6 13.3a4.7 4.7 0 0 1 0-6.7 4.7 4.7 0 0 1 6.7 0l.7.7.7-.7a4.7 4.7 0 0 1 6.7 0 4.7 4.7 0 0 1 0 6.7Z\" />\n </svg>\n </button>\n )}\n\n <div class=\"body\" part=\"body\">\n <h3 class=\"title\" part=\"title\">\n <a href={href} onClick={this.handleSelect}>\n {this.name}\n </a>\n </h3>\n\n <p class=\"meta\" part=\"meta\">\n {this.category && <span class=\"meta-item\">{this.category}</span>}\n {this.area && <span class=\"meta-item\">{this.area}</span>}\n {this.minutes > 0 && <span class=\"meta-item\">{this.minutes} min</span>}\n {this.servings > 0 && <span class=\"meta-item\">Serves {this.servings}</span>}\n </p>\n\n <div class={{ extra: true, 'is-empty': !this.hasExtra }} part=\"extra\">\n <slot onSlotchange={this.syncSlots} />\n </div>\n </div>\n\n <footer class={{ footer: true, 'is-empty': !this.hasActions }} part=\"footer\">\n <slot name=\"actions\" onSlotchange={this.syncSlots} />\n </footer>\n </article>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n color: var(--rk-ink, #211a16);\n}\n\n.shell {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 0 10px 0 14px;\n min-height: 52px;\n background: var(--rk-surface, #fff);\n border: 1px solid var(--rk-border, #ecdfd4);\n border-radius: var(--rk-radius-pill, 999px);\n box-shadow: var(--rk-shadow-sm);\n transition: border-color var(--rk-transition), box-shadow var(--rk-transition);\n}\n\n.shell.is-focused {\n border-color: var(--rk-primary, #d94f1b);\n box-shadow: var(--rk-focus-ring);\n}\n\n.shell.is-disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.icon {\n display: inline-flex;\n flex: 0 0 auto;\n color: var(--rk-muted, #857166);\n}\n\n.icon svg {\n width: 20px;\n height: 20px;\n}\n\n.input {\n flex: 1 1 auto;\n min-width: 0;\n border: 0;\n outline: none;\n background: transparent;\n font: inherit;\n color: inherit;\n padding: 14px 0;\n appearance: none;\n}\n\n.input::placeholder {\n color: var(--rk-muted, #857166);\n opacity: 0.9;\n}\n\n/* Hide the native WebKit clear affordance — we render our own. */\n.input::-webkit-search-cancel-button,\n.input::-webkit-search-decoration {\n appearance: none;\n display: none;\n}\n\n.clear {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n width: 30px;\n height: 30px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: var(--rk-surface-2, #fdf5ef);\n color: var(--rk-ink-2, #52443c);\n cursor: pointer;\n transition: background var(--rk-transition), color var(--rk-transition);\n}\n\n.clear:hover {\n background: var(--rk-primary-soft, #fdeee6);\n color: var(--rk-primary, #d94f1b);\n}\n\n.clear:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.clear svg {\n width: 15px;\n height: 15px;\n}\n\n.spinner {\n flex: 0 0 auto;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 2px solid var(--rk-border-strong, #d9c6b8);\n border-top-color: var(--rk-primary, #d94f1b);\n animation: rk-spin 700ms linear infinite;\n}\n\n@keyframes rk-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/*\n * `display: contents` promotes slotted controls to flex items of `.shell`, so an\n * empty `actions` slot leaves no stray box (and no stray gap) behind.\n */\n.actions {\n display: contents;\n}\n\n.actions ::slotted(*) {\n flex: 0 0 auto;\n}\n\n.hint {\n margin: 8px 0 0;\n padding-left: 16px;\n font-size: 0.82em;\n color: var(--rk-muted, #857166);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .spinner {\n animation-duration: 2s;\n }\n\n .shell,\n .clear {\n transition: none;\n }\n}\n","import { Component, Event, EventEmitter, h, Host, Method, Prop, State, Watch } from '@stencil/core';\n\n/**\n * A debounced search input with a clear affordance and a slot for extra controls.\n *\n * @slot actions - Rendered to the right of the input, inside the field shell.\n * Useful for a \"filters\" toggle or a sort control.\n */\n@Component({\n tag: 'rk-search-bar',\n styleUrl: 'rk-search-bar.css',\n shadow: true,\n})\nexport class RkSearchBar {\n /** Current text in the field. Two-way: updated as the user types. */\n @Prop({ mutable: true }) value = '';\n\n /** Placeholder shown when the field is empty. */\n @Prop() placeholder = 'Search recipes, ingredients, cuisines…';\n\n /** Accessible label for the input. */\n @Prop() label = 'Search recipes';\n\n /** Milliseconds to wait after the last keystroke before emitting `rkSearch`. */\n @Prop() debounce = 350;\n\n /** Disables the whole control. */\n @Prop() disabled = false;\n\n /** Shows a busy indicator (e.g. while the app is fetching results). */\n @Prop() loading = false;\n\n /** Optional helper text rendered under the field. */\n @Prop() hint?: string;\n\n /** Emitted with the (trimmed) query after the debounce window, or on submit. */\n @Event({ eventName: 'rkSearch' }) rkSearch!: EventEmitter<string>;\n\n /** Emitted when the user clears the field with the clear button or Escape. */\n @Event({ eventName: 'rkClear' }) rkClear!: EventEmitter<void>;\n\n @State() private focused = false;\n\n private inputEl?: HTMLInputElement;\n private timer?: ReturnType<typeof setTimeout>;\n\n @Watch('value')\n protected onValueChange(next: string, prev: string) {\n // Keep the DOM input in sync when the value is driven from the outside.\n if (this.inputEl && this.inputEl.value !== next && next !== prev) {\n this.inputEl.value = next ?? '';\n }\n }\n\n disconnectedCallback() {\n clearTimeout(this.timer);\n }\n\n /** Programmatically focus the input. */\n @Method()\n async setFocus() {\n this.inputEl?.focus();\n }\n\n private emit(query: string) {\n clearTimeout(this.timer);\n this.rkSearch.emit(query.trim());\n }\n\n private handleInput = (event: Event) => {\n const next = (event.target as HTMLInputElement).value;\n this.value = next;\n clearTimeout(this.timer);\n this.timer = setTimeout(() => this.emit(next), Math.max(0, this.debounce));\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.emit(this.value);\n } else if (event.key === 'Escape' && this.value) {\n event.preventDefault();\n this.handleClear();\n }\n };\n\n private handleClear = () => {\n clearTimeout(this.timer);\n this.value = '';\n if (this.inputEl) this.inputEl.value = '';\n this.rkClear.emit();\n this.rkSearch.emit('');\n this.inputEl?.focus();\n };\n\n render() {\n const hasValue = (this.value ?? '').length > 0;\n\n return (\n <Host>\n <div class={{ shell: true, 'is-focused': this.focused, 'is-disabled': this.disabled }} part=\"shell\">\n <span class=\"icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </svg>\n </span>\n\n <input\n ref={el => (this.inputEl = el)}\n class=\"input\"\n part=\"input\"\n type=\"search\"\n value={this.value}\n placeholder={this.placeholder}\n aria-label={this.label}\n aria-busy={this.loading ? 'true' : 'false'}\n disabled={this.disabled}\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck={false}\n enterkeyhint=\"search\"\n onInput={this.handleInput}\n onKeyDown={this.handleKeyDown}\n onFocus={() => (this.focused = true)}\n onBlur={() => (this.focused = false)}\n />\n\n {this.loading && <span class=\"spinner\" part=\"spinner\" aria-hidden=\"true\" />}\n\n {hasValue && !this.loading && (\n <button class=\"clear\" part=\"clear\" type=\"button\" onClick={this.handleClear} aria-label=\"Clear search\" disabled={this.disabled}>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n </button>\n )}\n\n <span class=\"actions\" part=\"actions\">\n <slot name=\"actions\" />\n </span>\n </div>\n\n {this.hint && (\n <p class=\"hint\" part=\"hint\">\n {this.hint}\n </p>\n )}\n </Host>\n );\n }\n}\n",":host {\n display: inline-block;\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n max-width: 100%;\n}\n\n.group {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n padding: 3px;\n background: var(--rk-surface-2, #fdf5ef);\n border: 1px solid var(--rk-border, #ecdfd4);\n border-radius: var(--rk-radius-pill, 999px);\n max-width: 100%;\n overflow-x: auto;\n scrollbar-width: none;\n}\n\n.group::-webkit-scrollbar {\n display: none;\n}\n\n.group.is-stretch {\n display: flex;\n width: 100%;\n}\n\n.segment {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: 0 0 auto;\n padding: 8px 16px;\n border: 0;\n border-radius: var(--rk-radius-pill, 999px);\n background: transparent;\n color: var(--rk-ink-2, #52443c);\n font: inherit;\n font-size: 0.88em;\n font-weight: 550;\n line-height: 1;\n white-space: nowrap;\n cursor: pointer;\n transition: background var(--rk-transition), color var(--rk-transition), box-shadow var(--rk-transition);\n}\n\n.group.is-stretch .segment {\n flex: 1 1 0;\n justify-content: center;\n}\n\n.segment:hover:not(:disabled):not(.is-selected) {\n background: rgba(0, 0, 0, 0.04);\n color: var(--rk-ink, #211a16);\n}\n\n.segment:focus-visible {\n outline: none;\n box-shadow: var(--rk-focus-ring);\n}\n\n.segment.is-selected {\n background: var(--rk-surface, #fff);\n color: var(--rk-ink, #211a16);\n box-shadow: var(--rk-shadow-sm);\n font-weight: 650;\n}\n\n.segment:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.count {\n font-size: 0.85em;\n font-weight: 650;\n color: var(--rk-muted, #857166);\n font-variant-numeric: tabular-nums;\n}\n\n.segment.is-selected .count {\n color: var(--rk-primary, #d94f1b);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .segment {\n transition: none;\n }\n}\n","import { Component, Event, EventEmitter, h, Prop, Watch } from '@stencil/core';\n\nexport interface RkSegmentOption {\n label: string;\n value: string;\n /** Optional trailing count, e.g. number of items in that segment. */\n count?: number;\n disabled?: boolean;\n}\n\n/**\n * A single-select segmented control, used for sorting and view switching.\n *\n * `options` is a complex property. Frameworks should assign it as a DOM\n * property; for plain HTML it also accepts a JSON string attribute.\n */\n@Component({\n tag: 'rk-segmented-control',\n styleUrl: 'rk-segmented-control.css',\n shadow: true,\n})\nexport class RkSegmentedControl {\n /** The available segments. Accepts an array or a JSON-encoded string. */\n @Prop() options: RkSegmentOption[] | string = [];\n\n /** The value of the selected segment. */\n @Prop({ mutable: true }) value?: string;\n\n /** Accessible label for the group. */\n @Prop() label = 'View options';\n\n /** Stretches the control to fill its container. */\n @Prop() stretch = false;\n\n /** Emitted with the newly selected value. */\n @Event({ eventName: 'rkSegmentChange' }) rkSegmentChange!: EventEmitter<string>;\n\n private parsed: RkSegmentOption[] = [];\n\n @Watch('options')\n protected onOptionsChange() {\n this.parseOptions();\n }\n\n componentWillLoad() {\n this.parseOptions();\n }\n\n /**\n * Attributes can only carry strings, so a JSON payload is accepted as a\n * fallback for consumers that cannot set DOM properties.\n */\n private parseOptions() {\n if (Array.isArray(this.options)) {\n this.parsed = this.options;\n return;\n }\n if (typeof this.options === 'string' && this.options.trim()) {\n try {\n const decoded = JSON.parse(this.options);\n this.parsed = Array.isArray(decoded) ? decoded : [];\n } catch {\n console.warn('[rk-segmented-control] `options` is not valid JSON:', this.options);\n this.parsed = [];\n }\n return;\n }\n this.parsed = [];\n }\n\n private select(option: RkSegmentOption) {\n if (option.disabled || option.value === this.value) return;\n this.value = option.value;\n this.rkSegmentChange.emit(option.value);\n }\n\n private handleKeyDown = (event: KeyboardEvent, index: number) => {\n const step = event.key === 'ArrowRight' ? 1 : event.key === 'ArrowLeft' ? -1 : 0;\n if (step === 0) return;\n event.preventDefault();\n\n const items = this.parsed.filter(option => !option.disabled);\n if (items.length === 0) return;\n const currentIndex = items.indexOf(this.parsed[index]);\n const next = items[(currentIndex + step + items.length) % items.length];\n this.select(next);\n };\n\n render() {\n return (\n <div class={{ group: true, 'is-stretch': this.stretch }} part=\"group\" role=\"tablist\" aria-label={this.label}>\n {this.parsed.map((option, index) => {\n const selected = option.value === this.value;\n return (\n <button\n key={option.value}\n class={{ segment: true, 'is-selected': selected }}\n part={selected ? 'segment segment-selected' : 'segment'}\n type=\"button\"\n role=\"tab\"\n aria-selected={String(selected)}\n disabled={option.disabled}\n tabindex={selected ? 0 : -1}\n onClick={() => this.select(option)}\n onKeyDown={event => this.handleKeyDown(event, index)}\n >\n {option.label}\n {typeof option.count === 'number' && <span class=\"count\">{option.count}</span>}\n </button>\n );\n })}\n </div>\n );\n }\n}\n",":host {\n display: block;\n font-family: var(--rk-font);\n font-size: var(--rk-font-size, 15px);\n color: var(--rk-ink, #211a16);\n}\n\n.label {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n margin-bottom: 7px;\n font-size: 0.88em;\n font-weight: 600;\n color: var(--rk-ink-2, #52443c);\n cursor: text;\n}\n\n.counter {\n font-size: 0.88em;\n font-weight: 500;\n color: var(--rk-muted, #857166);\n font-variant-numeric: tabular-nums;\n}\n\n.shell {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n padding: 8px 10px;\n min-height: 46px;\n background: var(--rk-surface, #fff);\n border: 1px solid var(--rk-border, #ecdfd4);\n border-radius: var(--rk-radius, 14px);\n cursor: text;\n transition: border-color var(--rk-transition), box-shadow var(--rk-transition);\n}\n\n.shell:focus-within {\n border-color: var(--rk-primary, #d94f1b);\n box-shadow: var(--rk-focus-ring);\n}\n\n.shell.has-error {\n border-color: var(--rk-danger, #c2410c);\n}\n\n.shell.has-error:focus-within {\n box-shadow: 0 0 0 3px rgba(194, 65, 12, 0.24);\n}\n\n.shell.is-disabled {\n opacity: 0.6;\n cursor: not-allowed;\n background: var(--rk-surface-2, #fdf5ef);\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n gap: 2px;\n padding: 4px 4px 4px 11px;\n border-radius: var(--rk-radius-pill, 999px);\n background: var(--rk-primary-soft, #fdeee6);\n color: var(--rk-primary-strong, #b23c11);\n font-size: 0.85em;\n font-weight: 600;\n max-width: 100%;\n}\n\n.tag-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.tag-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 19px;\n height: 19px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n background: transparent;\n color: inherit;\n cursor: pointer;\n opacity: 0.7;\n transition: background var(--rk-transition), opacity var(--rk-transition);\n}\n\n.tag-remove:hover:not(:disabled) {\n opacity: 1;\n background: rgba(178, 60, 17, 0.16);\n}\n\n.tag-remove:focus-visible {\n outline: none;\n opacity: 1;\n box-shadow: var(--rk-focus-ring);\n}\n\n.tag-remove:disabled {\n cursor: not-allowed;\n}\n\n.tag-remove svg {\n width: 10px;\n height: 10px;\n}\n\n.entry {\n flex: 1 1 120px;\n min-width: 110px;\n border: 0;\n outline: none;\n background: transparent;\n font: inherit;\n color: inherit;\n padding: 5px 2px;\n}\n\n.entry::placeholder {\n color: var(--rk-muted, #857166);\n}\n\n.entry:disabled {\n cursor: not-allowed;\n}\n\n.error {\n margin: 7px 0 0;\n font-size: 0.84em;\n color: var(--rk-danger, #c2410c);\n font-weight: 550;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .shell,\n .tag-remove {\n transition: none;\n }\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, Watch } from '@stencil/core';\n\n/**\n * A tag / token editor used for recipe tags and free-form ingredient lists.\n *\n * `values` is an array property — the SvelteKit app assigns it as a DOM\n * property. A JSON-encoded or comma-separated string attribute also works.\n */\n@Component({\n tag: 'rk-tag-input',\n styleUrl: 'rk-tag-input.css',\n shadow: true,\n})\nexport class RkTagInput {\n /** Current tags. Array, JSON string, or comma-separated string. */\n @Prop() values: string[] | string = [];\n\n /** Placeholder for the entry field. */\n @Prop() placeholder = 'Add a tag and press Enter';\n\n /** Visible field label. */\n @Prop() label?: string;\n\n /** Maximum number of tags. `0` means unlimited. */\n @Prop() maxTags = 0;\n\n /** Prevent editing. */\n @Prop() disabled = false;\n\n /** Validation message rendered under the field. */\n @Prop() error?: string;\n\n /** Emitted with the full, updated list whenever tags change. */\n @Event({ eventName: 'rkTagsChange' }) rkTagsChange!: EventEmitter<string[]>;\n\n @State() private draft = '';\n @State() private tags: string[] = [];\n\n private inputEl?: HTMLInputElement;\n\n @Watch('values')\n protected onValuesChange() {\n this.syncTags();\n }\n\n componentWillLoad() {\n this.syncTags();\n }\n\n private syncTags() {\n const incoming = this.values;\n if (Array.isArray(incoming)) {\n this.tags = incoming.filter(tag => typeof tag === 'string');\n return;\n }\n if (typeof incoming === 'string' && incoming.trim()) {\n const trimmed = incoming.trim();\n if (trimmed.startsWith('[')) {\n try {\n const decoded = JSON.parse(trimmed);\n this.tags = Array.isArray(decoded) ? decoded.map(String) : [];\n return;\n } catch {\n /* fall through to comma parsing */\n }\n }\n this.tags = trimmed\n .split(',')\n .map(tag => tag.trim())\n .filter(Boolean);\n return;\n }\n this.tags = [];\n }\n\n private get atCapacity() {\n return this.maxTags > 0 && this.tags.length >= this.maxTags;\n }\n\n private commit(next: string[]) {\n this.tags = next;\n this.rkTagsChange.emit([...next]);\n }\n\n private addDraft() {\n const candidates = this.draft\n .split(',')\n .map(tag => tag.trim())\n .filter(Boolean);\n if (candidates.length === 0) return;\n\n const next = [...this.tags];\n for (const candidate of candidates) {\n if (this.maxTags > 0 && next.length >= this.maxTags) break;\n // Case-insensitive de-duplication keeps \"Vegan\" and \"vegan\" from coexisting.\n if (next.some(tag => tag.toLowerCase() === candidate.toLowerCase())) continue;\n next.push(candidate);\n }\n\n this.draft = '';\n if (next.length !== this.tags.length) this.commit(next);\n }\n\n private removeAt(index: number) {\n this.commit(this.tags.filter((_, position) => position !== index));\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ',') {\n event.preventDefault();\n this.addDraft();\n } else if (event.key === 'Backspace' && this.draft === '' && this.tags.length > 0) {\n event.preventDefault();\n this.removeAt(this.tags.length - 1);\n }\n };\n\n render() {\n return (\n <Host>\n {this.label && (\n <label class=\"label\" part=\"label\" onClick={() => this.inputEl?.focus()}>\n {this.label}\n {this.maxTags > 0 && (\n <span class=\"counter\">\n {this.tags.length}/{this.maxTags}\n </span>\n )}\n </label>\n )}\n\n <div\n class={{ shell: true, 'is-disabled': this.disabled, 'has-error': !!this.error }}\n part=\"shell\"\n onClick={() => !this.disabled && this.inputEl?.focus()}\n >\n {this.tags.map((tag, index) => (\n <span class=\"tag\" part=\"tag\" key={`${tag}-${index}`}>\n <span class=\"tag-text\">{tag}</span>\n <button\n class=\"tag-remove\"\n type=\"button\"\n aria-label={`Remove ${tag}`}\n disabled={this.disabled}\n onClick={event => {\n event.stopPropagation();\n this.removeAt(index);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" aria-hidden=\"true\">\n <path d=\"M6 6l12 12M18 6 6 18\" />\n </svg>\n </button>\n </span>\n ))}\n\n <input\n ref={el => (this.inputEl = el)}\n class=\"entry\"\n part=\"input\"\n type=\"text\"\n value={this.draft}\n placeholder={this.tags.length === 0 ? this.placeholder : this.atCapacity ? '' : 'Add another…'}\n aria-label={this.label ?? 'Add a tag'}\n disabled={this.disabled || this.atCapacity}\n autocomplete=\"off\"\n onInput={event => (this.draft = (event.target as HTMLInputElement).value)}\n onKeyDown={this.handleKeyDown}\n onBlur={() => this.addDraft()}\n />\n </div>\n\n {this.error && (\n <p class=\"error\" part=\"error\" role=\"alert\">\n {this.error}\n </p>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./cjs/index.cjs.js');
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './esm/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const e="recipe-kit";const t={hotModuleReplacement:false,hydratedSelectorName:"hydrated",lazyLoad:true,propChangeCallback:true,state:true,updatable:true};const n=()=>{};const r=':root,:host{--rk-primary:#d94f1b;--rk-primary-strong:#b23c11;--rk-primary-soft:#fdeee6;--rk-accent:#0f766e;--rk-accent-soft:#e2f3f1;--rk-bg:#fffaf6;--rk-surface:#ffffff;--rk-surface-2:#fdf5ef;--rk-ink:#211a16;--rk-ink-2:#52443c;--rk-muted:#857166;--rk-border:#ecdfd4;--rk-border-strong:#d9c6b8;--rk-danger:#c2410c;--rk-danger-soft:#fdeae1;--rk-success:#15803d;--rk-success-soft:#e6f5eb;--rk-warning:#a16207;--rk-warning-soft:#fdf3d8;--rk-radius-sm:8px;--rk-radius:14px;--rk-radius-lg:20px;--rk-radius-pill:999px;--rk-shadow-sm:0 1px 2px rgba(33, 26, 22, 0.06), 0 1px 3px rgba(33, 26, 22, 0.04);--rk-shadow:0 4px 12px rgba(33, 26, 22, 0.08), 0 1px 3px rgba(33, 26, 22, 0.05);--rk-shadow-lg:0 18px 42px rgba(33, 26, 22, 0.16);--rk-font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--rk-font-display:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--rk-font-size:15px;--rk-transition:160ms cubic-bezier(0.2, 0, 0.2, 1);--rk-focus-ring:0 0 0 3px rgba(217, 79, 27, 0.32);--rk-z-modal:1000}:root[data-rk-theme=\'dark\'],:root[data-theme=\'dark\']{--rk-primary:#ff7a45;--rk-primary-strong:#ff9469;--rk-primary-soft:#3a2118;--rk-accent:#5eead4;--rk-accent-soft:#10312e;--rk-bg:#16110e;--rk-surface:#201814;--rk-surface-2:#2a201a;--rk-ink:#f7ece5;--rk-ink-2:#d9c8bd;--rk-muted:#a89387;--rk-border:#38291f;--rk-border-strong:#4b382c;--rk-danger:#ff8f66;--rk-danger-soft:#3a1d14;--rk-success:#6ee7a0;--rk-success-soft:#12301f;--rk-warning:#fbbf5b;--rk-warning-soft:#33260d;--rk-shadow-sm:0 1px 2px rgba(0, 0, 0, 0.4);--rk-shadow:0 4px 14px rgba(0, 0, 0, 0.45);--rk-shadow-lg:0 20px 48px rgba(0, 0, 0, 0.6);--rk-focus-ring:0 0 0 3px rgba(255, 122, 69, 0.4)}.rk-sr-only{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}';var s="http://www.w3.org/2000/svg";var i="http://www.w3.org/1999/xhtml";function o(e,t,n){const r=typeof HTMLElement!=="undefined"?HTMLElement.prototype:null;while(e&&e!==r){const r=Object.getOwnPropertyDescriptor(e,t);if(r&&(!n||r.get))return r;e=Object.getPrototypeOf(e)}return void 0}var l=(e,t)=>{var n;const r=t.t;const s=Object.entries((n=r.i)!=null?n:{});s.map((([n,[r]])=>{if(r&31||r&32){const r=e[n];const s=o(Object.getPrototypeOf(e),n,true)||Object.getOwnPropertyDescriptor(e,n);if(s){Object.defineProperty(e,n,{get(){return s.get.call(this)},set(e){s.set.call(this,e)},configurable:true,enumerable:true})}if(t.o.has(n)){e[n]=t.o.get(n)}else if(r!==void 0){e[n]=r}}}))};var f=e=>{if(e.__stencil__getHostRef){return e.__stencil__getHostRef()}return void 0};var a=(e,n)=>{if(!n)return;e.__stencil__getHostRef=()=>n;n.l=e;if(n.t.u&512&&t.state){l(e,n)}};var c=(e,t)=>{const n={u:0,$hostElement$:e,t,o:new Map,v:new Map};{n.p=new Promise((e=>n.h=e))}{n.m=new Promise((e=>n.k=e));e["s-p"]=[];e["s-rc"]=[]}{n.$=[]}const r=n;e.__stencil__getHostRef=()=>r;return r};var u=(e,t)=>t in e;var d=(e,t)=>(0,console.error)(e,t);var v=new Map;var p=new Map;var h=(e,t,n)=>{var r;const s=e.S.replace(/-/g,"_");const i=e.j;if(!i){return void 0}const o=v.get(i);if(o){return o[s]}const l=(r=p.get(i))!=null?r:0;const f=[l>0?`s-retry=${l}`:"",""].filter(Boolean).join("&");
|
|
2
|
+
/*!__STENCIL_STATIC_IMPORT_SWITCH__*/return import(`./${i}.entry.js${f?"?"+f:""}`).then((e=>{{p.delete(i);v.set(i,e)}return e[s]}),(e=>{p.set(i,l+1);d(e,t.$hostElement$)}))};var m=new Map;var b="{visibility:hidden}.hydrated{visibility:inherit}";var y="slot-fb{display:contents}slot-fb[hidden]{display:none}";var g=3;var k=1e3;var w=typeof window!=="undefined"?window:{};var $={u:0,O:"",jmp:e=>e(),raf:e=>requestAnimationFrame(e),ael:(e,t,n,r)=>e.addEventListener(t,n,r),rel:(e,t,n,r)=>e.removeEventListener(t,n,r),ce:(e,t)=>new CustomEvent(e,t)};var S=e=>Promise.resolve(e);var j=(()=>{try{if(!w.document.adoptedStyleSheets){return false}new CSSStyleSheet;return typeof(new CSSStyleSheet).replaceSync==="function"}catch(e){}return false})();var x=j?(()=>!!w.document&&Object.getOwnPropertyDescriptor(w.document.adoptedStyleSheets,"length").writable)():false;var O=false;var C=[];var M=[];var E=()=>{var e;return((e=w.document)==null?void 0:e.hidden)?R(P):$.raf(P)};var N=(e,t)=>n=>{e.push(n);if(!O){O=true;if(t&&$.u&4){R(P)}else{E()}}};var L=e=>{for(let t=0;t<e.length;t++){try{e[t](performance.now())}catch(e){d(e)}}e.length=0};var P=()=>{L(C);{L(M);if(O=C.length>0){E()}}};var R=e=>S().then(e);var A=N(M,true);function U(e){if(!j)return void 0;const t=new CSSStyleSheet;t.replaceSync(e);return t}var z;function H(e){var t;const n={mode:"open"};const s=this.attachShadow(n);if(z===void 0)z=(t=U(r))!=null?t:null;if(z){if(x){s.adoptedStyleSheets.push(z)}else{s.adoptedStyleSheets=[...s.adoptedStyleSheets,z]}}else if(!j){const e=document.createElement("style");e.innerHTML=r;s.prepend(e)}}var T=(e,t="")=>{{return()=>{}}};var D=(e,t)=>{{return()=>{}}};function I(e){var t,n,r;return(r=(n=(t=e.head)==null?void 0:t.querySelector('meta[name="csp-nonce"]'))==null?void 0:n.getAttribute("content"))!=null?r:void 0}var W=new WeakMap;var F=(e,t,n)=>{let r=m.get(e);if(j&&n){r=r||new CSSStyleSheet;if(typeof r==="string"){r=t}else{r.replaceSync(t)}}else{r=t}m.set(e,r)};var V=(e,t,n)=>{var r,s,i;const o=G(t);const l=m.get(o);if(!w.document){return o}e=e.nodeType===11?e:w.document;if(l){if(typeof l==="string"){e=e.head||e;let n=W.get(e);let i;if(!n){W.set(e,n=new Set)}if(!n.has(o)){i=w.document.createElement("style");i.textContent=l;const f=(r=$.C)!=null?r:I(w.document);if(f!=null){i.setAttribute("nonce",f)}if(!(t.u&1)){if(e.nodeName==="HEAD"){const t=e.querySelectorAll("link[rel=preconnect]");const n=t.length>0?t[t.length-1].nextSibling:e.querySelector("style");e.insertBefore(i,(n==null?void 0:n.parentNode)===e?n:null)}else if("host"in e){if(j){const t=(s=e.defaultView)!=null?s:e.ownerDocument.defaultView;const n=new t.CSSStyleSheet;n.replaceSync(l);if(x){e.adoptedStyleSheets.unshift(n)}else{e.adoptedStyleSheets=[n,...e.adoptedStyleSheets]}}else{const t=e.querySelector("style");if(t&&true){t.textContent=l+t.textContent}else{e.prepend(i)}}}else{e.append(i)}}if(t.u&1){e.insertBefore(i,null)}if(t.u&4){i.textContent+=y}if(n){n.add(o)}}}else{let t=W.get(e);if(!t){W.set(e,t=new Set)}if(!t.has(o)){const n=(i=e.defaultView)!=null?i:e.ownerDocument.defaultView;let r;if(l.constructor===n.CSSStyleSheet){r=l}else{r=new n.CSSStyleSheet;for(let e=0;e<l.cssRules.length;e++){r.insertRule(l.cssRules[e].cssText,e)}}if(x){e.adoptedStyleSheets.push(r)}else{e.adoptedStyleSheets=[...e.adoptedStyleSheets,r]}t.add(o)}}}return o};var q=e=>{const t=e.t;const n=e.$hostElement$;const r=t.u;const s=T("attachStyles",t.S);const i=V(n.shadowRoot?n.shadowRoot:n.getRootNode(),t);if(r&10){n["s-sc"]=i;n.classList.add(i+"-h")}s()};var G=(e,t)=>"sc-"+e.S;var B=e=>{e=typeof e;return e==="object"||e==="function"};var Y=(e,t,...n)=>{if(typeof e==="string"){e=_e(e)}let r=null;let s=null;let i=false;let o=false;const l=[];const f=t=>{for(let n=0;n<t.length;n++){r=t[n];if(Array.isArray(r)){f(r)}else if(r!=null&&typeof r!=="boolean"){if(i=typeof e!=="function"&&!B(r)){r=String(r)}else if(typeof e!=="function"&&r.u===void 0){{d("Invalid vNode child")}continue}if(i&&o){l[l.length-1].M+=r}else{l.push(i?Z(null,r):r)}o=i}}};f(n);if(t){if(t.key){s=t.key}{const e=t.className||t.class;if(e){t.class=typeof e!=="object"?e:Object.keys(e).filter((t=>e[t])).join(" ")}}}const a=Z(e,null);a.N=t;if(l.length>0){a.L=l}{a.P=s}return a};var Z=(e,t)=>{const n={u:0,R:e,M:t!=null?t:null,A:null,L:null};{n.N=null}{n.P=null}return n};var _={};var J=e=>e&&e.R===_;var K=e=>{if(!e)return void 0;const t=Object.keys(e);if(t.length===0)return void 0;let n=false;for(const r of t){if(n)break;for(const t of e[r]){if(typeof t==="string"){n=true;break}}}if(!n)return e;const r={};for(const n of t){r[n]=e[n].map((e=>typeof e==="string"?{[e]:0}:e))}return r};var Q=(e,t,n)=>{if(e!=null&&!B(e)){if(t&4){{return e==="false"?false:e===""||!!e}}if(t&2){return typeof e==="string"?parseFloat(e):typeof e==="number"?e:NaN}if(t&1){return String(e)}return e}return e};var X=e=>{var t;return(t=f(e))==null?void 0:t.$hostElement$};var ee=(e,t,n)=>{const r=X(e);return{emit:e=>te(r,t,{bubbles:true,composed:true,cancelable:true,detail:e})}};var te=(e,t,n)=>{const r=$.ce(t,n);e.dispatchEvent(r);return r};var ne=(e,t,n,r,s,i,o)=>{if(n===r){return}let l=u(e,t);let a=t.toLowerCase();if(t==="class"){const t=e.classList;const s=oe(n);let i=oe(r);{t.remove(...s.filter((e=>e&&!i.includes(e))));t.add(...i.filter((e=>e&&!s.includes(e))))}}else if(t==="style"){{for(const t in n){if(!r||r[t]==null){if(t.includes("-")){e.style.removeProperty(t)}else{e.style[t]=""}}}}for(const t in r){if(!n||r[t]!==n[t]){if(t.includes("-")){e.style.setProperty(t,r[t])}else{e.style[t]=r[t]}}}}else if(t==="key");else if(t==="ref"){if(r){je(r,e)}}else if(!l&&t[0]==="o"&&t[1]==="n"){if(t[2]==="-"){t=t.slice(3)}else if(u(w,a)){t=a.slice(2)}else{t=a[2]+t.slice(3)}if(n||r){const s=t.endsWith(le);t=t.replace(fe,"");if(n){$.rel(e,t,n,s)}if(r){$.ael(e,t,r,s)}}}else if(t[0]==="a"&&t.startsWith("attr:")){const n=t.slice(5);let s;{const t=f(e);if(t&&t.t&&t.t.i){const e=t.t.i[n];if(e&&e[1]){s=e[1]}}}if(!s){s=n.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}if(r==null||r===false){if(r!==false||e.getAttribute(s)===""){e.removeAttribute(s)}}else{e.setAttribute(s,r===true?"":r)}return}else if(t[0]==="p"&&t.startsWith("prop:")){const n=t.slice(5);try{e[n]=r}catch(e){}return}else{const o=B(r);if((l||o&&r!==null)&&!s){try{if(!e.tagName.includes("-")){const s=r==null?"":r;if(t==="list"){l=false}else if(n==null||e[t]!==s){if(typeof e.__lookupSetter__(t)==="function"){e[t]=s}else{e.setAttribute(t,s)}}}else if(e[t]!==r){e[t]=r}}catch(e){}}if(r==null||r===false){if(r!==false||e.getAttribute(t)===""||i&4&&!se(t)){{e.removeAttribute(t)}}}else if((!l||i&4||s)&&!o&&e.nodeType===1){r=r===true?"":r;{e.setAttribute(t,r)}}}};var re=new Set(["draggable","contenteditable","spellcheck"]);var se=e=>re.has(e)||e.startsWith("aria-");var ie=/\s/;var oe=e=>{if(typeof e==="object"&&e&&"baseVal"in e){e=e.baseVal}if(!e||typeof e!=="string"){return[]}return e.split(ie)};var le="Capture";var fe=new RegExp(le+"$");var ae=(e,t,n,r)=>{const s=t.A.nodeType===11&&t.A.host?t.A.host:t.A;const i=e&&e.N||{};const o=t.N||{};{for(const e of ce(Object.keys(i))){if(!(e in o)){ne(s,e,i[e],void 0,n,t.u)}}}for(const e of ce(Object.keys(o))){ne(s,e,i[e],o[e],n,t.u)}};function ce(e){return e.includes("ref")?[...e.filter((e=>e!=="ref")),"ref"]:e}var ue;var de=false;var ve=false;var pe=[];var he=[];var me=(e,t,n)=>{const r=t.L[n];let o=0;let l;let f;if(r.M!=null){l=r.A=w.document.createTextNode(r.M)}else{if(!ve){ve=r.R==="svg"}if(!w.document){throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM.")}l=r.A=w.document.createElementNS(ve?s:i,r.R);if(ve&&r.R==="foreignObject"){ve=false}{ae(null,r,ve)}if(r.L){const t=r.R==="template"?l.content:l;for(o=0;o<r.L.length;++o){f=me(e,r,o);if(f){t.appendChild(f)}}}{if(r.R==="svg"){ve=false}else if(l.tagName==="foreignObject"){ve=true}}}l["s-hn"]=ue;return l};var be=e=>{$.u|=1;const t=e.closest(ue.toLowerCase());if(t!=null){const n=Array.from(t.__childNodes||t.childNodes).find((e=>e["s-cr"]));const r=Array.from(e.__childNodes||e.childNodes);for(const e of n?r.reverse():r){if(e["s-sh"]!=null){Oe(t,e,n!=null?n:null);e["s-sh"]=void 0}}}$.u&=-2};var ye=(e,t,n,r,s,i)=>{let o=e;let l;if(o.shadowRoot&&o.tagName===ue){o=o.shadowRoot}if(n.R==="template"){o=o.content}for(;s<=i;++s){if(r[s]){l=me(null,n,s);if(l){r[s].A=l;Oe(o,l,t)}}}};var ge=(e,t,n)=>{for(let r=t;r<=n;++r){const t=e[r];if(t){const e=t.A;Se(t);if(e){e.remove()}}}};var ke=(e,t,n,r,s=false)=>{let i=0;let o=0;let l=0;let f=0;let a=t.length-1;let c=t[0];let u=t[a];let d=r.length-1;let v=r[0];let p=r[d];let h;let m;const b=n.R==="template"?e.content:e;while(i<=a&&o<=d){if(c==null){c=t[++i]}else if(u==null){u=t[--a]}else if(v==null){v=r[++o]}else if(p==null){p=r[--d]}else if(we(c,v,s)){$e(c,v,s);c=t[++i];v=r[++o]}else if(we(u,p,s)){$e(u,p,s);u=t[--a];p=r[--d]}else if(we(c,p,s)){$e(c,p,s);Oe(b,c.A,u.A.nextSibling);c=t[++i];p=r[--d]}else if(we(u,v,s)){$e(u,v,s);Oe(b,u.A,c.A);u=t[--a];v=r[++o]}else{l=-1;{for(f=i;f<=a;++f){if(t[f]&&t[f].P!==null&&t[f].P===v.P){l=f;break}}}if(l>=0){m=t[l];if(m.R!==v.R){h=me(t&&t[o],n,l)}else{$e(m,v,s);t[l]=void 0;h=m.A}v=r[++o]}else{h=me(t&&t[o],n,o);v=r[++o]}if(h){{Oe(c.A.parentNode,h,c.A)}}}}if(i>a){ye(e,r[d+1]==null?null:r[d+1].A,n,r,o,d)}else if(o>d){ge(t,i,a)}};var we=(e,t,n=false)=>{if(e.R===t.R){if(!n){return e.P===t.P}if(n&&!e.P&&t.P){e.P=t.P}return true}return false};var $e=(e,n,r=false)=>{const s=n.A=e.A;const i=e.L;const o=n.L;const l=n.R;const f=n.M;if(f==null){{ve=l==="svg"?true:l==="foreignObject"?false:ve}{if(l==="slot"&&!de){if(e.U!==n.U){n.A["s-sn"]=n.U||"";be(n.A.parentElement)}}ae(e,n,ve)}if(i!==null&&o!==null){ke(s,i,n,o,r)}else if(o!==null){if(e.M!==null){s.textContent=""}ye(s,null,n,o,0,o.length-1)}else if(!r&&t.updatable&&i!==null){ge(i,0,i.length-1)}else;if(ve&&l==="svg"){ve=false}}else if(e.M!==f){s.data=f}};var Se=e=>{{if(e.N&&e.N.ref){pe.push((()=>e.N.ref(null)))}e.L&&e.L.map(Se)}};var je=(e,t)=>{{he.push((()=>e(t)))}};var xe=()=>{{pe.forEach((e=>e()));pe.length=0;he.forEach((e=>e()));he.length=0}};var Oe=(e,t,n,r)=>{{return e==null?void 0:e.insertBefore(t,n)}};var Ce=(e,t,n=false)=>{const r=e.$hostElement$;const s=e.t;const i=e.H||Z(null,null);const o=J(t);const l=o?t:Y(null,null,t);ue=r.tagName;if(n&&l.N){for(const e of Object.keys(l.N)){if(r.hasAttribute(e)&&!["key","ref","style","class"].includes(e)){l.N[e]=r[e]}}}l.R=null;l.u|=4;e.H=l;l.A=i.A=r.shadowRoot||r;de=!!(s.u&1)&&!(s.u&128);$e(i,l,n);xe()};var Me=(e,t)=>{if(t&&!e.T&&t["s-p"]){const n=t["s-p"].push(new Promise((r=>e.T=()=>{t["s-p"].splice(n-1,1);r()})))}};var Ee=(e,t)=>{{e.u|=16}if(e.u&4){e.u|=512;return}Me(e,e.D);const n=()=>Ne(e,t);if(t){queueMicrotask((()=>{n()}));return}return A(n)};var Ne=(e,t)=>{const n=e.$hostElement$;const r=T("scheduleUpdate",e.t.S);const s=e.l;if(!s){throw new Error(`Can't render component <${n.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`)}let i;if(t){{if(e.$.length){e.$.forEach((e=>e(n)))}}i=He(s,"componentWillLoad",void 0,n)}else{i=He(s,"componentWillUpdate",void 0,n)}i=Le(i,(()=>He(s,"componentWillRender",void 0,n)));r();return Le(i,(()=>Re(e,s,t)))};var Le=(e,t)=>Pe(e)?e.then(t).catch((e=>{console.error(e);t()})):t();var Pe=e=>e instanceof Promise||e&&e.then&&typeof e.then==="function";var Re=async(e,t,n)=>{var r;const s=e.$hostElement$;const i=T("update",e.t.S);const o=s["s-rc"];if(n){q(e)}const l=T("render",e.t.S);{Ae(e,t,s,n)}if(o){o.map((e=>e()));s["s-rc"]=void 0}l();i();{const t=(r=s["s-p"])!=null?r:[];const n=()=>Ue(e);if(t.length===0){n()}else{Promise.all(t).then(n).catch(n);e.u|=4;t.length=0}}};var Ae=(e,t,n,r)=>{try{t=t.render();{e.u&=-17}{e.u|=2}{{{Ce(e,t,r)}}}}catch(t){d(t,e.$hostElement$)}return null};var Ue=e=>{const t=e.t.S;const n=e.$hostElement$;const r=T("postUpdate",t);const s=e.l;const i=e.D;He(s,"componentDidRender",void 0,n);if(!(e.u&64)){e.u|=64;{Te(n)}He(s,"componentDidLoad",void 0,n);r();{e.k(n);if(!i){ze()}}}else{He(s,"componentDidUpdate",void 0,n);r()}{e.h(n)}{if(e.T){e.T();e.T=void 0}if(e.u&512){R((()=>Ee(e,false)))}e.u&=-517}};var ze=t=>{R((()=>te(w,"appload",{detail:{namespace:e}})))};var He=(e,t,n,r)=>{if(e&&e[t]){try{return e[t](n)}catch(e){d(e,r)}}return void 0};var Te=e=>{var n;return e.classList.add((n=t.hydratedSelectorName)!=null?n:"hydrated")};var De=(e,t)=>f(e).o.get(t);var Ie=(e,t,n,r)=>{const s=f(e);if(!s){return}if(!s){throw new Error(`Couldn't find host element for "${r.S}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`)}const i=s.$hostElement$;const o=s.o.get(t);const l=s.u;const a=s.l;n=Q(n,r.i[t][0]);const c=Number.isNaN(o)&&Number.isNaN(n);const u=n!==o&&!c;if((!(l&8)||o===void 0)&&u){s.o.set(t,n);if(r.I){const e=r.I[t];if(e){e.map((e=>{try{const[[r,i]]=Object.entries(e);if(l&128||i&1){if(!a){s.$.push((()=>{s.l[r](n,o,t)}))}else{a[r](n,o,t)}}}catch(e){d(e,i)}}))}}if(l&2){if(a.componentShouldUpdate){const e=a.componentShouldUpdate(n,o,t);if(e===false&&!(l&16)){return}}if(!(l&16)){Ee(s,false)}}}};var We=(e,n,r)=>{var s,i;const l=e.prototype;if(n.i||t.propChangeCallback){{if(e.watchers&&!n.I){n.I=K(e.watchers)}if(e.deserializers&&!n.W){n.W=e.deserializers}if(e.serializers&&!n.F){n.F=e.serializers}}const a=Object.entries((s=n.i)!=null?s:{});a.map((([e,[t]])=>{if(t&31||r&2&&t&32){const{get:s,set:i}=o(l,e)||{};if(s)n.i[e][0]|=2048;if(i)n.i[e][0]|=4096;if(r&1||!s){Object.defineProperty(l,e,{get(){{if((n.i[e][0]&2048)===0){return De(this,e)}const t=f(this);const r=t?t.l:l;if(!r)return;return r[e]}},configurable:true,enumerable:true})}Object.defineProperty(l,e,{set(s){const o=f(this);if(!o){return}if(i){const r=t&32?this[e]:o.$hostElement$[e];if(typeof r==="undefined"&&o.o.get(e)){s=o.o.get(e)}i.apply(this,[Q(s,t)]);s=t&32?this[e]:o.$hostElement$[e];Ie(this,e,s,n);return}{if((r&1)===0||(n.i[e][0]&4096)===0){Ie(this,e,s,n);if(r&1&&!o.l){o.$.push((()=>{if(n.i[e][0]&4096&&o.l[e]!==o.o.get(e)){o.l[e]=s}}))}return}const i=()=>{const r=o.l[e];if(!o.o.get(e)&&r){o.o.set(e,r)}o.l[e]=Q(s,t);Ie(this,e,o.l[e],n)};if(o.l){i()}else{o.$.push((()=>{i()}))}}}})}else if(r&1&&t&64){Object.defineProperty(l,e,{value(...t){var n;const r=f(this);return(n=r==null?void 0:r.p)==null?void 0:n.then((()=>{var n;return(n=r.l)==null?void 0:n[e](...t)}))}})}}));if(r&1){const r=new Map;l.attributeChangedCallback=function(e,s,i){$.jmp((()=>{var o;const c=r.get(e);const u=f(this);if(this.hasOwnProperty(c)&&t.lazyLoad){i=this[c];delete this[c]}if(l.hasOwnProperty(c)&&typeof this[c]==="number"&&this[c]==i){return}else if(c==null){const t=u==null?void 0:u.u;if(u&&t&&!(t&8)&&i!==s){const r=u.l;const l=(o=n.I)==null?void 0:o[e];l==null?void 0:l.forEach((n=>{const[[o,l]]=Object.entries(n);if(r[o]!=null&&(t&128||l&1)){r[o].call(r,i,s,e)}}))}return}const d=a.find((([e])=>e===c));const v=d&&d[1][0]&4;const p=v&&i===null&&this[c]===void 0;if(v){i=i===null||i==="false"?false:true}const h=Object.getOwnPropertyDescriptor(l,c);if(!p&&i!=this[c]&&(!h.get||!!h.set)){this[c]=i}}))};e.observedAttributes=Array.from(new Set([...Object.keys((i=n.I)!=null?i:{}),...a.filter((([e,t])=>t[0]&31)).map((([e,t])=>{const n=t[1]||e;r.set(n,e);return n}))]))}}return e};var Fe=async(e,n,r,s)=>{var i;let o;try{if((n.u&32)===0){n.u|=32;n.u&=-1025;const s=r.j;if(s){const t=h(r,n);if(t&&"then"in t){const e=D();o=await t;e()}else{o=t}if(!o){n.u&=-33;n.V=((i=n.V)!=null?i:0)+1;if(n.V<g){n.u|=1024}throw new Error(`Constructor for "${r.S}#${n.q}" was not found`)}if(!o.isProxied){{r.I=K(o.watchers);r.F=o.serializers;r.W=o.deserializers}We(o,r,2);o.isProxied=true}const s=T("createInstance",r.S);{n.u|=8}try{new o(n)}catch(t){d(t,e)}{n.u&=-9}{n.u|=128}s();{Ve(n.l,e)}}else{o=e.constructor;const t=e.localName;customElements.whenDefined(t).then((()=>n.u|=128))}if(o&&o.style){let e;if(typeof o.style==="string"){e=o.style}const n=G(r);if(!m.has(n)||t.hotModuleReplacement){const t=T("registerStyles",r.S);F(n,e,!!(r.u&1));t()}}}const s=n.D;const l=()=>Ee(n,true);if(s&&s["s-rc"]){s["s-rc"].push(l)}else{l()}}catch(t){d(t,e);if(n.T){n.T();n.T=void 0}if(n.k&&!(n.u&1024)){n.k(e)}}};var Ve=(e,t)=>{{He(e,"connectedCallback",void 0,t)}};var qe=e=>{if(($.u&1)===0){const t=f(e);if(!t){return}const n=t.t;const r=T("connectedCallback",n.S);if(!(t.u&1)){t.u|=1;{let n=e;while(n=n.parentNode||n.host){if(n["s-p"]){Me(t,t.D=n);break}}}if(n.i){Object.entries(n.i).map((([t,[n]])=>{if(n&31&&Object.prototype.hasOwnProperty.call(e,t)){const n=e[t];delete e[t];e[t]=n}}))}{Fe(e,t,n)}}else{if(t==null?void 0:t.l){Ve(t.l,e)}else if(t.u&1024){setTimeout((()=>Fe(e,t,n)),k)}else if(t==null?void 0:t.m){t.m.then((()=>Ve(t.l,e)))}}r()}};var Ge=(e,t)=>{{He(e,"disconnectedCallback",void 0,t||e)}};var Be=async e=>{if(($.u&1)===0){const t=f(e);if(t==null?void 0:t.l){Ge(t.l,e)}else if(t==null?void 0:t.m){t.m.then((()=>Ge(t.l,e)))}}if(W.has(e)){W.delete(e)}if(e.shadowRoot&&W.has(e.shadowRoot)){W.delete(e.shadowRoot)}};var Ye=(e,t={})=>{var n;if(!w.document){console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");return}const r=T();const s=[];const i=t.exclude||[];const o=w.customElements;const l=w.document.head;const a=l.querySelector("meta[charset]");const u=w.document.createElement("style");const d=[];let v;let p=true;Object.assign($,t);$.O=new URL(t.resourcesUrl||"./",w.document.baseURI).href;e.map((e=>{e[1].map((t=>{var n,r;const l={u:t[0],S:t[1],i:t[2],G:t[3]};{l.i=t[2]}{l.I=K(t[4]);l.F=(n=t[5])!=null?n:{};l.W=(r=t[6])!=null?r:{}}const a=_e(l.S);const u=class extends HTMLElement{["s-p"];["s-rc"];hasRegisteredEventListeners=false;constructor(e){super(e);e=this;c(e,l);if(l.u&1){{if(!e.shadowRoot){H.call(e,l)}else{if(e.shadowRoot.mode!=="open"){throw new Error(`Unable to re-use existing shadow root for ${l.S}! Mode is set to ${e.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}}}}connectedCallback(){const e=f(this);if(!e){return}if(!this.hasRegisteredEventListeners){this.hasRegisteredEventListeners=true}if(v){clearTimeout(v);v=null}if(p){d.push(this)}else{$.jmp((()=>qe(this)))}}disconnectedCallback(){$.jmp((()=>Be(this)));R((()=>{var e;const t=f(this);if(!t){return}const n=d.findIndex((e=>e===this));if(n>-1){d.splice(n,1)}if(((e=t==null?void 0:t.H)==null?void 0:e.A)instanceof Node&&!t.H.A.isConnected){delete t.H.A}}))}componentOnReady(){var e;return(e=f(this))==null?void 0:e.m}};l.j=e[0];if(!i.includes(a)&&!o.get(a)){s.push(a);o.define(a,We(u,l,1))}}))}));if(s.length>0){{u.textContent+=s.sort()+b}if(u.innerHTML.length){u.setAttribute("data-styles","");const e=(n=$.C)!=null?n:I(w.document);if(e!=null){u.setAttribute("nonce",e)}l.insertBefore(u,a?a.nextSibling:l.firstChild)}}p=false;if(d.length){d.map((e=>e.connectedCallback()))}else{{$.jmp((()=>v=setTimeout(ze,30)))}}r()};var Ze=e=>$.C=e;function _e(e){return e}export{_ as H,X as a,Ye as b,ee as c,n as g,Y as h,S as p,a as r,Ze as s};
|
|
3
|
+
//# sourceMappingURL=p-Bxo0C8lB.js.map
|