@ssj4kyuubi/recipe-ui-lib 0.1.4
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 +128 -0
- package/dist/cjs/index-CJNMpFY7.js +1609 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/loader.cjs.js +12 -0
- package/dist/cjs/rui-button.cjs.entry.js +31 -0
- package/dist/cjs/rui-filter-chips.cjs.entry.js +30 -0
- package/dist/cjs/rui-meal-planner.cjs.entry.js +52 -0
- package/dist/cjs/rui-modal.cjs.entry.js +52 -0
- package/dist/cjs/rui-recipe-card.cjs.entry.js +29 -0
- package/dist/cjs/rui-recipe-detail.cjs.entry.js +34 -0
- package/dist/cjs/rui-recipe-list.cjs.entry.js +44 -0
- package/dist/cjs/rui-search-bar.cjs.entry.js +39 -0
- package/dist/cjs/rui.cjs.js +24 -0
- package/dist/collection/collection-manifest.json +20 -0
- package/dist/collection/components/index.js +8 -0
- package/dist/collection/components/rui-button/rui-button.css +72 -0
- package/dist/collection/components/rui-button/rui-button.js +140 -0
- package/dist/collection/components/rui-filter-chips/rui-filter-chips.css +30 -0
- package/dist/collection/components/rui-filter-chips/rui-filter-chips.js +96 -0
- package/dist/collection/components/rui-meal-planner/rui-meal-planner.css +130 -0
- package/dist/collection/components/rui-meal-planner/rui-meal-planner.js +174 -0
- package/dist/collection/components/rui-modal/rui-modal.css +79 -0
- package/dist/collection/components/rui-modal/rui-modal.js +137 -0
- package/dist/collection/components/rui-recipe-card/rui-recipe-card.css +100 -0
- package/dist/collection/components/rui-recipe-card/rui-recipe-card.js +122 -0
- package/dist/collection/components/rui-recipe-detail/rui-recipe-detail.css +197 -0
- package/dist/collection/components/rui-recipe-detail/rui-recipe-detail.js +127 -0
- package/dist/collection/components/rui-recipe-list/rui-recipe-list.css +16 -0
- package/dist/collection/components/rui-recipe-list/rui-recipe-list.js +160 -0
- package/dist/collection/components/rui-search-bar/rui-search-bar.css +45 -0
- package/dist/collection/components/rui-search-bar/rui-search-bar.js +137 -0
- package/dist/collection/index.js +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +1 -0
- package/dist/components/rui-button.d.ts +11 -0
- package/dist/components/rui-button.js +1 -0
- package/dist/components/rui-filter-chips.d.ts +11 -0
- package/dist/components/rui-filter-chips.js +1 -0
- package/dist/components/rui-meal-planner.d.ts +11 -0
- package/dist/components/rui-meal-planner.js +1 -0
- package/dist/components/rui-modal.d.ts +11 -0
- package/dist/components/rui-modal.js +1 -0
- package/dist/components/rui-recipe-card.d.ts +11 -0
- package/dist/components/rui-recipe-card.js +1 -0
- package/dist/components/rui-recipe-card2.js +1 -0
- package/dist/components/rui-recipe-detail.d.ts +11 -0
- package/dist/components/rui-recipe-detail.js +1 -0
- package/dist/components/rui-recipe-list.d.ts +11 -0
- package/dist/components/rui-recipe-list.js +1 -0
- package/dist/components/rui-search-bar.d.ts +11 -0
- package/dist/components/rui-search-bar.js +1 -0
- package/dist/esm/index-Cye74XUb.js +1599 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/loader.js +10 -0
- package/dist/esm/polyfills/core-js.js +11 -0
- package/dist/esm/polyfills/dom.js +79 -0
- package/dist/esm/polyfills/es5-html-element.js +1 -0
- package/dist/esm/polyfills/index.js +34 -0
- package/dist/esm/polyfills/system.js +6 -0
- package/dist/esm/rui-button.entry.js +29 -0
- package/dist/esm/rui-filter-chips.entry.js +28 -0
- package/dist/esm/rui-meal-planner.entry.js +50 -0
- package/dist/esm/rui-modal.entry.js +50 -0
- package/dist/esm/rui-recipe-card.entry.js +27 -0
- package/dist/esm/rui-recipe-detail.entry.js +32 -0
- package/dist/esm/rui-recipe-list.entry.js +42 -0
- package/dist/esm/rui-search-bar.entry.js +37 -0
- package/dist/esm/rui.js +20 -0
- package/dist/esm-es5/index-Cye74XUb.js +64 -0
- package/dist/esm-es5/index.js +0 -0
- package/dist/esm-es5/loader.js +1 -0
- package/dist/esm-es5/rui-button.entry.js +1 -0
- package/dist/esm-es5/rui-filter-chips.entry.js +1 -0
- package/dist/esm-es5/rui-meal-planner.entry.js +1 -0
- package/dist/esm-es5/rui-modal.entry.js +1 -0
- package/dist/esm-es5/rui-recipe-card.entry.js +1 -0
- package/dist/esm-es5/rui-recipe-detail.entry.js +1 -0
- package/dist/esm-es5/rui-recipe-list.entry.js +1 -0
- package/dist/esm-es5/rui-search-bar.entry.js +1 -0
- package/dist/esm-es5/rui.js +4 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/rui/index.esm.js +0 -0
- package/dist/rui/p-044c45e5.entry.js +1 -0
- package/dist/rui/p-0eda7928.system.entry.js +1 -0
- package/dist/rui/p-1a89ad3e.system.entry.js +1 -0
- package/dist/rui/p-1b310317.system.entry.js +1 -0
- package/dist/rui/p-2fc25e59.system.entry.js +1 -0
- package/dist/rui/p-40bf8db2.entry.js +1 -0
- package/dist/rui/p-72d787e7.system.entry.js +1 -0
- package/dist/rui/p-89d06840.system.entry.js +1 -0
- package/dist/rui/p-9e0ffa92.entry.js +1 -0
- package/dist/rui/p-Chuy7yuu.system.js +5 -0
- package/dist/rui/p-Cye74XUb.js +3 -0
- package/dist/rui/p-DMa34l4T.system.js +64 -0
- package/dist/rui/p-YWpyar7R.system.js +1 -0
- package/dist/rui/p-a25c8161.entry.js +1 -0
- package/dist/rui/p-ad0253ac.entry.js +1 -0
- package/dist/rui/p-b5196c19.system.entry.js +1 -0
- package/dist/rui/p-b5d6b297.system.entry.js +1 -0
- package/dist/rui/p-d04fa46b.entry.js +1 -0
- package/dist/rui/p-d34e0888.entry.js +1 -0
- package/dist/rui/p-eac80bd7.entry.js +1 -0
- package/dist/rui/rui.css +1 -0
- package/dist/rui/rui.esm.js +1 -0
- package/dist/rui/rui.js +127 -0
- package/dist/types/components/index.d.ts +8 -0
- package/dist/types/components/rui-button/rui-button.d.ts +11 -0
- package/dist/types/components/rui-filter-chips/rui-filter-chips.d.ts +12 -0
- package/dist/types/components/rui-meal-planner/rui-meal-planner.d.ts +29 -0
- package/dist/types/components/rui-modal/rui-modal.d.ts +13 -0
- package/dist/types/components/rui-recipe-card/rui-recipe-card.d.ts +20 -0
- package/dist/types/components/rui-recipe-detail/rui-recipe-detail.d.ts +28 -0
- package/dist/types/components/rui-recipe-list/rui-recipe-list.d.ts +16 -0
- package/dist/types/components/rui-search-bar/rui-search-bar.d.ts +14 -0
- package/dist/types/components.d.ts +654 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +1873 -0
- package/loader/cdn.js +2 -0
- package/loader/index.cjs.js +2 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +2 -0
- package/loader/index.js +3 -0
- package/package.json +58 -0
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/* tslint:disable */
|
|
3
|
+
/**
|
|
4
|
+
* This is an autogenerated file created by the Stencil compiler.
|
|
5
|
+
* It contains typing information for all components that exist in this project.
|
|
6
|
+
*/
|
|
7
|
+
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
|
|
8
|
+
import { FilterCategory } from "./components/rui-filter-chips/rui-filter-chips";
|
|
9
|
+
import { MealPlan } from "./components/rui-meal-planner/rui-meal-planner";
|
|
10
|
+
import { RecipeSummary } from "./components/rui-recipe-card/rui-recipe-card";
|
|
11
|
+
import { RecipeSummary as RecipeSummary1 } from "./components/rui-recipe-card/rui-recipe-card";
|
|
12
|
+
import { RecipeFull } from "./components/rui-recipe-detail/rui-recipe-detail";
|
|
13
|
+
export { FilterCategory } from "./components/rui-filter-chips/rui-filter-chips";
|
|
14
|
+
export { MealPlan } from "./components/rui-meal-planner/rui-meal-planner";
|
|
15
|
+
export { RecipeSummary } from "./components/rui-recipe-card/rui-recipe-card";
|
|
16
|
+
export { RecipeSummary as RecipeSummary1 } from "./components/rui-recipe-card/rui-recipe-card";
|
|
17
|
+
export { RecipeFull } from "./components/rui-recipe-detail/rui-recipe-detail";
|
|
18
|
+
export namespace Components {
|
|
19
|
+
/**
|
|
20
|
+
* Shared button primitive with variants.
|
|
21
|
+
*/
|
|
22
|
+
interface RuiButton {
|
|
23
|
+
/**
|
|
24
|
+
* Disabled state.
|
|
25
|
+
* @default false
|
|
26
|
+
*/
|
|
27
|
+
"disabled": boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Loading state (shows spinner, disables interaction).
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
"loading": boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Native button type.
|
|
35
|
+
* @default 'button'
|
|
36
|
+
*/
|
|
37
|
+
"type": 'button' | 'submit' | 'reset';
|
|
38
|
+
/**
|
|
39
|
+
* Button variant.
|
|
40
|
+
* @default 'primary'
|
|
41
|
+
*/
|
|
42
|
+
"variant": 'primary' | 'secondary' | 'danger' | 'ghost';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Filter chips for category selection (multi-select).
|
|
46
|
+
*/
|
|
47
|
+
interface RuiFilterChips {
|
|
48
|
+
/**
|
|
49
|
+
* Available categories.
|
|
50
|
+
* @default []
|
|
51
|
+
*/
|
|
52
|
+
"categories": FilterCategory[];
|
|
53
|
+
/**
|
|
54
|
+
* Currently selected category values.
|
|
55
|
+
* @default []
|
|
56
|
+
*/
|
|
57
|
+
"selected": string[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Weekly meal planner. Renders one row per day with assign/remove/clear actions.
|
|
61
|
+
*/
|
|
62
|
+
interface RuiMealPlanner {
|
|
63
|
+
/**
|
|
64
|
+
* Days of the week to render.
|
|
65
|
+
* @default [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', ]
|
|
66
|
+
*/
|
|
67
|
+
"days": string[];
|
|
68
|
+
/**
|
|
69
|
+
* Map of day -> PlannedMeal (or null when empty).
|
|
70
|
+
* @default {}
|
|
71
|
+
*/
|
|
72
|
+
"plan": MealPlan;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Modal dialog with default + footer slots.
|
|
76
|
+
*/
|
|
77
|
+
interface RuiModal {
|
|
78
|
+
/**
|
|
79
|
+
* Close on backdrop click.
|
|
80
|
+
* @default true
|
|
81
|
+
*/
|
|
82
|
+
"closeOnBackdrop": boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Modal title.
|
|
85
|
+
* @default ''
|
|
86
|
+
*/
|
|
87
|
+
"modalTitle": string;
|
|
88
|
+
/**
|
|
89
|
+
* Whether the modal is open.
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
"open": boolean;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Recipe card. Displays summary info and a favorite toggle.
|
|
96
|
+
*/
|
|
97
|
+
interface RuiRecipeCard {
|
|
98
|
+
/**
|
|
99
|
+
* Whether this recipe is favorited.
|
|
100
|
+
* @default false
|
|
101
|
+
*/
|
|
102
|
+
"isFavorite": boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Recipe summary object.
|
|
105
|
+
*/
|
|
106
|
+
"recipe": RecipeSummary1;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Full recipe detail view: image, meta, ingredients, instructions.
|
|
110
|
+
*/
|
|
111
|
+
interface RuiRecipeDetail {
|
|
112
|
+
/**
|
|
113
|
+
* Whether the recipe is favorited.
|
|
114
|
+
* @default false
|
|
115
|
+
*/
|
|
116
|
+
"isFavorite": boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Full recipe object.
|
|
119
|
+
*/
|
|
120
|
+
"recipe": RecipeFull;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Responsive grid of recipe cards. Re-renders cards when recipes/favorites change.
|
|
124
|
+
*/
|
|
125
|
+
interface RuiRecipeList {
|
|
126
|
+
/**
|
|
127
|
+
* Empty-state message.
|
|
128
|
+
* @default 'No recipes found.'
|
|
129
|
+
*/
|
|
130
|
+
"emptyMessage": string;
|
|
131
|
+
/**
|
|
132
|
+
* Array of favorite recipe ids (used to mark cards as favorite).
|
|
133
|
+
* @default []
|
|
134
|
+
*/
|
|
135
|
+
"favorites": string[];
|
|
136
|
+
/**
|
|
137
|
+
* Array of recipe summaries to display.
|
|
138
|
+
* @default []
|
|
139
|
+
*/
|
|
140
|
+
"recipes": RecipeSummary[];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Search bar with debounced input + submit events.
|
|
144
|
+
*/
|
|
145
|
+
interface RuiSearchBar {
|
|
146
|
+
/**
|
|
147
|
+
* Debounce delay in ms for ruiSearchInput.
|
|
148
|
+
* @default 300
|
|
149
|
+
*/
|
|
150
|
+
"debounceMs": number;
|
|
151
|
+
/**
|
|
152
|
+
* Placeholder text.
|
|
153
|
+
* @default 'Search recipes...'
|
|
154
|
+
*/
|
|
155
|
+
"placeholder": string;
|
|
156
|
+
/**
|
|
157
|
+
* Current input value.
|
|
158
|
+
* @default ''
|
|
159
|
+
*/
|
|
160
|
+
"value": string;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export interface RuiButtonCustomEvent<T> extends CustomEvent<T> {
|
|
164
|
+
detail: T;
|
|
165
|
+
target: HTMLRuiButtonElement;
|
|
166
|
+
}
|
|
167
|
+
export interface RuiFilterChipsCustomEvent<T> extends CustomEvent<T> {
|
|
168
|
+
detail: T;
|
|
169
|
+
target: HTMLRuiFilterChipsElement;
|
|
170
|
+
}
|
|
171
|
+
export interface RuiMealPlannerCustomEvent<T> extends CustomEvent<T> {
|
|
172
|
+
detail: T;
|
|
173
|
+
target: HTMLRuiMealPlannerElement;
|
|
174
|
+
}
|
|
175
|
+
export interface RuiModalCustomEvent<T> extends CustomEvent<T> {
|
|
176
|
+
detail: T;
|
|
177
|
+
target: HTMLRuiModalElement;
|
|
178
|
+
}
|
|
179
|
+
export interface RuiRecipeCardCustomEvent<T> extends CustomEvent<T> {
|
|
180
|
+
detail: T;
|
|
181
|
+
target: HTMLRuiRecipeCardElement;
|
|
182
|
+
}
|
|
183
|
+
export interface RuiRecipeDetailCustomEvent<T> extends CustomEvent<T> {
|
|
184
|
+
detail: T;
|
|
185
|
+
target: HTMLRuiRecipeDetailElement;
|
|
186
|
+
}
|
|
187
|
+
export interface RuiRecipeListCustomEvent<T> extends CustomEvent<T> {
|
|
188
|
+
detail: T;
|
|
189
|
+
target: HTMLRuiRecipeListElement;
|
|
190
|
+
}
|
|
191
|
+
export interface RuiSearchBarCustomEvent<T> extends CustomEvent<T> {
|
|
192
|
+
detail: T;
|
|
193
|
+
target: HTMLRuiSearchBarElement;
|
|
194
|
+
}
|
|
195
|
+
declare global {
|
|
196
|
+
interface HTMLRuiButtonElementEventMap {
|
|
197
|
+
"ruiClick": MouseEvent;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Shared button primitive with variants.
|
|
201
|
+
*/
|
|
202
|
+
interface HTMLRuiButtonElement extends Components.RuiButton, HTMLStencilElement {
|
|
203
|
+
addEventListener<K extends keyof HTMLRuiButtonElementEventMap>(type: K, listener: (this: HTMLRuiButtonElement, ev: RuiButtonCustomEvent<HTMLRuiButtonElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
204
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
205
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
206
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
207
|
+
removeEventListener<K extends keyof HTMLRuiButtonElementEventMap>(type: K, listener: (this: HTMLRuiButtonElement, ev: RuiButtonCustomEvent<HTMLRuiButtonElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
208
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
209
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
210
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
211
|
+
}
|
|
212
|
+
var HTMLRuiButtonElement: {
|
|
213
|
+
prototype: HTMLRuiButtonElement;
|
|
214
|
+
new (): HTMLRuiButtonElement;
|
|
215
|
+
};
|
|
216
|
+
interface HTMLRuiFilterChipsElementEventMap {
|
|
217
|
+
"ruiFilterChange": string[];
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Filter chips for category selection (multi-select).
|
|
221
|
+
*/
|
|
222
|
+
interface HTMLRuiFilterChipsElement extends Components.RuiFilterChips, HTMLStencilElement {
|
|
223
|
+
addEventListener<K extends keyof HTMLRuiFilterChipsElementEventMap>(type: K, listener: (this: HTMLRuiFilterChipsElement, ev: RuiFilterChipsCustomEvent<HTMLRuiFilterChipsElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
224
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
225
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
226
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
227
|
+
removeEventListener<K extends keyof HTMLRuiFilterChipsElementEventMap>(type: K, listener: (this: HTMLRuiFilterChipsElement, ev: RuiFilterChipsCustomEvent<HTMLRuiFilterChipsElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
228
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
229
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
230
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
231
|
+
}
|
|
232
|
+
var HTMLRuiFilterChipsElement: {
|
|
233
|
+
prototype: HTMLRuiFilterChipsElement;
|
|
234
|
+
new (): HTMLRuiFilterChipsElement;
|
|
235
|
+
};
|
|
236
|
+
interface HTMLRuiMealPlannerElementEventMap {
|
|
237
|
+
"ruiAssignMeal": { day: string };
|
|
238
|
+
"ruiRemoveMeal": { day: string; recipe: RecipeSummary };
|
|
239
|
+
"ruiClearDay": { day: string };
|
|
240
|
+
"ruiSelectMeal": { day: string; recipe: RecipeSummary };
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Weekly meal planner. Renders one row per day with assign/remove/clear actions.
|
|
244
|
+
*/
|
|
245
|
+
interface HTMLRuiMealPlannerElement extends Components.RuiMealPlanner, HTMLStencilElement {
|
|
246
|
+
addEventListener<K extends keyof HTMLRuiMealPlannerElementEventMap>(type: K, listener: (this: HTMLRuiMealPlannerElement, ev: RuiMealPlannerCustomEvent<HTMLRuiMealPlannerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
247
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
248
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
249
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
250
|
+
removeEventListener<K extends keyof HTMLRuiMealPlannerElementEventMap>(type: K, listener: (this: HTMLRuiMealPlannerElement, ev: RuiMealPlannerCustomEvent<HTMLRuiMealPlannerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
251
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
252
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
253
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
254
|
+
}
|
|
255
|
+
var HTMLRuiMealPlannerElement: {
|
|
256
|
+
prototype: HTMLRuiMealPlannerElement;
|
|
257
|
+
new (): HTMLRuiMealPlannerElement;
|
|
258
|
+
};
|
|
259
|
+
interface HTMLRuiModalElementEventMap {
|
|
260
|
+
"ruiClose": void;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Modal dialog with default + footer slots.
|
|
264
|
+
*/
|
|
265
|
+
interface HTMLRuiModalElement extends Components.RuiModal, HTMLStencilElement {
|
|
266
|
+
addEventListener<K extends keyof HTMLRuiModalElementEventMap>(type: K, listener: (this: HTMLRuiModalElement, ev: RuiModalCustomEvent<HTMLRuiModalElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
267
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
268
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
269
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
270
|
+
removeEventListener<K extends keyof HTMLRuiModalElementEventMap>(type: K, listener: (this: HTMLRuiModalElement, ev: RuiModalCustomEvent<HTMLRuiModalElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
271
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
272
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
273
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
274
|
+
}
|
|
275
|
+
var HTMLRuiModalElement: {
|
|
276
|
+
prototype: HTMLRuiModalElement;
|
|
277
|
+
new (): HTMLRuiModalElement;
|
|
278
|
+
};
|
|
279
|
+
interface HTMLRuiRecipeCardElementEventMap {
|
|
280
|
+
"ruiCardClick": RecipeSummary1;
|
|
281
|
+
"ruiFavoriteToggle": { recipe: RecipeSummary1; isFavorite: boolean };
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Recipe card. Displays summary info and a favorite toggle.
|
|
285
|
+
*/
|
|
286
|
+
interface HTMLRuiRecipeCardElement extends Components.RuiRecipeCard, HTMLStencilElement {
|
|
287
|
+
addEventListener<K extends keyof HTMLRuiRecipeCardElementEventMap>(type: K, listener: (this: HTMLRuiRecipeCardElement, ev: RuiRecipeCardCustomEvent<HTMLRuiRecipeCardElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
288
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
289
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
290
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
291
|
+
removeEventListener<K extends keyof HTMLRuiRecipeCardElementEventMap>(type: K, listener: (this: HTMLRuiRecipeCardElement, ev: RuiRecipeCardCustomEvent<HTMLRuiRecipeCardElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
292
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
293
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
294
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
295
|
+
}
|
|
296
|
+
var HTMLRuiRecipeCardElement: {
|
|
297
|
+
prototype: HTMLRuiRecipeCardElement;
|
|
298
|
+
new (): HTMLRuiRecipeCardElement;
|
|
299
|
+
};
|
|
300
|
+
interface HTMLRuiRecipeDetailElementEventMap {
|
|
301
|
+
"ruiAddToPlan": RecipeFull;
|
|
302
|
+
"ruiFavoriteToggle": { recipe: RecipeFull; isFavorite: boolean };
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Full recipe detail view: image, meta, ingredients, instructions.
|
|
306
|
+
*/
|
|
307
|
+
interface HTMLRuiRecipeDetailElement extends Components.RuiRecipeDetail, HTMLStencilElement {
|
|
308
|
+
addEventListener<K extends keyof HTMLRuiRecipeDetailElementEventMap>(type: K, listener: (this: HTMLRuiRecipeDetailElement, ev: RuiRecipeDetailCustomEvent<HTMLRuiRecipeDetailElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
309
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
310
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
311
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
312
|
+
removeEventListener<K extends keyof HTMLRuiRecipeDetailElementEventMap>(type: K, listener: (this: HTMLRuiRecipeDetailElement, ev: RuiRecipeDetailCustomEvent<HTMLRuiRecipeDetailElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
313
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
314
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
315
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
316
|
+
}
|
|
317
|
+
var HTMLRuiRecipeDetailElement: {
|
|
318
|
+
prototype: HTMLRuiRecipeDetailElement;
|
|
319
|
+
new (): HTMLRuiRecipeDetailElement;
|
|
320
|
+
};
|
|
321
|
+
interface HTMLRuiRecipeListElementEventMap {
|
|
322
|
+
"ruiSelectRecipe": RecipeSummary;
|
|
323
|
+
"ruiFavoriteToggle": { recipe: RecipeSummary; isFavorite: boolean };
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Responsive grid of recipe cards. Re-renders cards when recipes/favorites change.
|
|
327
|
+
*/
|
|
328
|
+
interface HTMLRuiRecipeListElement extends Components.RuiRecipeList, HTMLStencilElement {
|
|
329
|
+
addEventListener<K extends keyof HTMLRuiRecipeListElementEventMap>(type: K, listener: (this: HTMLRuiRecipeListElement, ev: RuiRecipeListCustomEvent<HTMLRuiRecipeListElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
330
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
331
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
332
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
333
|
+
removeEventListener<K extends keyof HTMLRuiRecipeListElementEventMap>(type: K, listener: (this: HTMLRuiRecipeListElement, ev: RuiRecipeListCustomEvent<HTMLRuiRecipeListElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
334
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
335
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
336
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
337
|
+
}
|
|
338
|
+
var HTMLRuiRecipeListElement: {
|
|
339
|
+
prototype: HTMLRuiRecipeListElement;
|
|
340
|
+
new (): HTMLRuiRecipeListElement;
|
|
341
|
+
};
|
|
342
|
+
interface HTMLRuiSearchBarElementEventMap {
|
|
343
|
+
"ruiSearchInput": string;
|
|
344
|
+
"ruiSearchSubmit": string;
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Search bar with debounced input + submit events.
|
|
348
|
+
*/
|
|
349
|
+
interface HTMLRuiSearchBarElement extends Components.RuiSearchBar, HTMLStencilElement {
|
|
350
|
+
addEventListener<K extends keyof HTMLRuiSearchBarElementEventMap>(type: K, listener: (this: HTMLRuiSearchBarElement, ev: RuiSearchBarCustomEvent<HTMLRuiSearchBarElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
|
|
351
|
+
addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
352
|
+
addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
|
353
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
354
|
+
removeEventListener<K extends keyof HTMLRuiSearchBarElementEventMap>(type: K, listener: (this: HTMLRuiSearchBarElement, ev: RuiSearchBarCustomEvent<HTMLRuiSearchBarElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
|
|
355
|
+
removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
356
|
+
removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
|
357
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
358
|
+
}
|
|
359
|
+
var HTMLRuiSearchBarElement: {
|
|
360
|
+
prototype: HTMLRuiSearchBarElement;
|
|
361
|
+
new (): HTMLRuiSearchBarElement;
|
|
362
|
+
};
|
|
363
|
+
interface HTMLElementTagNameMap {
|
|
364
|
+
"rui-button": HTMLRuiButtonElement;
|
|
365
|
+
"rui-filter-chips": HTMLRuiFilterChipsElement;
|
|
366
|
+
"rui-meal-planner": HTMLRuiMealPlannerElement;
|
|
367
|
+
"rui-modal": HTMLRuiModalElement;
|
|
368
|
+
"rui-recipe-card": HTMLRuiRecipeCardElement;
|
|
369
|
+
"rui-recipe-detail": HTMLRuiRecipeDetailElement;
|
|
370
|
+
"rui-recipe-list": HTMLRuiRecipeListElement;
|
|
371
|
+
"rui-search-bar": HTMLRuiSearchBarElement;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
declare namespace LocalJSX {
|
|
375
|
+
/**
|
|
376
|
+
* Shared button primitive with variants.
|
|
377
|
+
*/
|
|
378
|
+
interface RuiButton {
|
|
379
|
+
/**
|
|
380
|
+
* Disabled state.
|
|
381
|
+
* @default false
|
|
382
|
+
*/
|
|
383
|
+
"disabled"?: boolean;
|
|
384
|
+
/**
|
|
385
|
+
* Loading state (shows spinner, disables interaction).
|
|
386
|
+
* @default false
|
|
387
|
+
*/
|
|
388
|
+
"loading"?: boolean;
|
|
389
|
+
/**
|
|
390
|
+
* Emitted on click (bubbles/composed for cross-boundary listening).
|
|
391
|
+
*/
|
|
392
|
+
"onRuiClick"?: (event: RuiButtonCustomEvent<MouseEvent>) => void;
|
|
393
|
+
/**
|
|
394
|
+
* Native button type.
|
|
395
|
+
* @default 'button'
|
|
396
|
+
*/
|
|
397
|
+
"type"?: 'button' | 'submit' | 'reset';
|
|
398
|
+
/**
|
|
399
|
+
* Button variant.
|
|
400
|
+
* @default 'primary'
|
|
401
|
+
*/
|
|
402
|
+
"variant"?: 'primary' | 'secondary' | 'danger' | 'ghost';
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Filter chips for category selection (multi-select).
|
|
406
|
+
*/
|
|
407
|
+
interface RuiFilterChips {
|
|
408
|
+
/**
|
|
409
|
+
* Available categories.
|
|
410
|
+
* @default []
|
|
411
|
+
*/
|
|
412
|
+
"categories"?: FilterCategory[];
|
|
413
|
+
/**
|
|
414
|
+
* Emitted when the selection changes. detail: string[] (selected values).
|
|
415
|
+
*/
|
|
416
|
+
"onRuiFilterChange"?: (event: RuiFilterChipsCustomEvent<string[]>) => void;
|
|
417
|
+
/**
|
|
418
|
+
* Currently selected category values.
|
|
419
|
+
* @default []
|
|
420
|
+
*/
|
|
421
|
+
"selected"?: string[];
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Weekly meal planner. Renders one row per day with assign/remove/clear actions.
|
|
425
|
+
*/
|
|
426
|
+
interface RuiMealPlanner {
|
|
427
|
+
/**
|
|
428
|
+
* Days of the week to render.
|
|
429
|
+
* @default [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', ]
|
|
430
|
+
*/
|
|
431
|
+
"days"?: string[];
|
|
432
|
+
/**
|
|
433
|
+
* Emitted when "Assign" is clicked. detail: { day }.
|
|
434
|
+
*/
|
|
435
|
+
"onRuiAssignMeal"?: (event: RuiMealPlannerCustomEvent<{ day: string }>) => void;
|
|
436
|
+
/**
|
|
437
|
+
* Emitted when "Clear" is clicked for a day. detail: { day }.
|
|
438
|
+
*/
|
|
439
|
+
"onRuiClearDay"?: (event: RuiMealPlannerCustomEvent<{ day: string }>) => void;
|
|
440
|
+
/**
|
|
441
|
+
* Emitted when "Remove" is clicked on a planned meal. detail: { day, recipe }.
|
|
442
|
+
*/
|
|
443
|
+
"onRuiRemoveMeal"?: (event: RuiMealPlannerCustomEvent<{ day: string; recipe: RecipeSummary }>) => void;
|
|
444
|
+
/**
|
|
445
|
+
* Emitted when a planned meal is clicked to view recipe. detail: { day, recipe }.
|
|
446
|
+
*/
|
|
447
|
+
"onRuiSelectMeal"?: (event: RuiMealPlannerCustomEvent<{ day: string; recipe: RecipeSummary }>) => void;
|
|
448
|
+
/**
|
|
449
|
+
* Map of day -> PlannedMeal (or null when empty).
|
|
450
|
+
* @default {}
|
|
451
|
+
*/
|
|
452
|
+
"plan"?: MealPlan;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Modal dialog with default + footer slots.
|
|
456
|
+
*/
|
|
457
|
+
interface RuiModal {
|
|
458
|
+
/**
|
|
459
|
+
* Close on backdrop click.
|
|
460
|
+
* @default true
|
|
461
|
+
*/
|
|
462
|
+
"closeOnBackdrop"?: boolean;
|
|
463
|
+
/**
|
|
464
|
+
* Modal title.
|
|
465
|
+
* @default ''
|
|
466
|
+
*/
|
|
467
|
+
"modalTitle"?: string;
|
|
468
|
+
/**
|
|
469
|
+
* Emitted when the modal requests to close (X button, backdrop, Escape).
|
|
470
|
+
*/
|
|
471
|
+
"onRuiClose"?: (event: RuiModalCustomEvent<void>) => void;
|
|
472
|
+
/**
|
|
473
|
+
* Whether the modal is open.
|
|
474
|
+
* @default false
|
|
475
|
+
*/
|
|
476
|
+
"open"?: boolean;
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Recipe card. Displays summary info and a favorite toggle.
|
|
480
|
+
*/
|
|
481
|
+
interface RuiRecipeCard {
|
|
482
|
+
/**
|
|
483
|
+
* Whether this recipe is favorited.
|
|
484
|
+
* @default false
|
|
485
|
+
*/
|
|
486
|
+
"isFavorite"?: boolean;
|
|
487
|
+
/**
|
|
488
|
+
* Emitted when the card body is clicked. detail: RecipeSummary.
|
|
489
|
+
*/
|
|
490
|
+
"onRuiCardClick"?: (event: RuiRecipeCardCustomEvent<RecipeSummary1>) => void;
|
|
491
|
+
/**
|
|
492
|
+
* Emitted when the favorite heart is toggled. detail: { recipe, isFavorite }.
|
|
493
|
+
*/
|
|
494
|
+
"onRuiFavoriteToggle"?: (event: RuiRecipeCardCustomEvent<{ recipe: RecipeSummary1; isFavorite: boolean }>) => void;
|
|
495
|
+
/**
|
|
496
|
+
* Recipe summary object.
|
|
497
|
+
*/
|
|
498
|
+
"recipe": RecipeSummary1;
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* Full recipe detail view: image, meta, ingredients, instructions.
|
|
502
|
+
*/
|
|
503
|
+
interface RuiRecipeDetail {
|
|
504
|
+
/**
|
|
505
|
+
* Whether the recipe is favorited.
|
|
506
|
+
* @default false
|
|
507
|
+
*/
|
|
508
|
+
"isFavorite"?: boolean;
|
|
509
|
+
/**
|
|
510
|
+
* Emitted when "Add to plan" is clicked. detail: RecipeFull.
|
|
511
|
+
*/
|
|
512
|
+
"onRuiAddToPlan"?: (event: RuiRecipeDetailCustomEvent<RecipeFull>) => void;
|
|
513
|
+
/**
|
|
514
|
+
* Emitted when the favorite toggle is clicked. detail: { recipe, isFavorite }.
|
|
515
|
+
*/
|
|
516
|
+
"onRuiFavoriteToggle"?: (event: RuiRecipeDetailCustomEvent<{ recipe: RecipeFull; isFavorite: boolean }>) => void;
|
|
517
|
+
/**
|
|
518
|
+
* Full recipe object.
|
|
519
|
+
*/
|
|
520
|
+
"recipe": RecipeFull;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Responsive grid of recipe cards. Re-renders cards when recipes/favorites change.
|
|
524
|
+
*/
|
|
525
|
+
interface RuiRecipeList {
|
|
526
|
+
/**
|
|
527
|
+
* Empty-state message.
|
|
528
|
+
* @default 'No recipes found.'
|
|
529
|
+
*/
|
|
530
|
+
"emptyMessage"?: string;
|
|
531
|
+
/**
|
|
532
|
+
* Array of favorite recipe ids (used to mark cards as favorite).
|
|
533
|
+
* @default []
|
|
534
|
+
*/
|
|
535
|
+
"favorites"?: string[];
|
|
536
|
+
/**
|
|
537
|
+
* Emitted when a favorite is toggled from a card. detail: { recipe, isFavorite }.
|
|
538
|
+
*/
|
|
539
|
+
"onRuiFavoriteToggle"?: (event: RuiRecipeListCustomEvent<{ recipe: RecipeSummary; isFavorite: boolean }>) => void;
|
|
540
|
+
/**
|
|
541
|
+
* Emitted when a card is clicked. detail: RecipeSummary.
|
|
542
|
+
*/
|
|
543
|
+
"onRuiSelectRecipe"?: (event: RuiRecipeListCustomEvent<RecipeSummary>) => void;
|
|
544
|
+
/**
|
|
545
|
+
* Array of recipe summaries to display.
|
|
546
|
+
* @default []
|
|
547
|
+
*/
|
|
548
|
+
"recipes"?: RecipeSummary[];
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Search bar with debounced input + submit events.
|
|
552
|
+
*/
|
|
553
|
+
interface RuiSearchBar {
|
|
554
|
+
/**
|
|
555
|
+
* Debounce delay in ms for ruiSearchInput.
|
|
556
|
+
* @default 300
|
|
557
|
+
*/
|
|
558
|
+
"debounceMs"?: number;
|
|
559
|
+
/**
|
|
560
|
+
* Emitted (debounced) on input. detail: string.
|
|
561
|
+
*/
|
|
562
|
+
"onRuiSearchInput"?: (event: RuiSearchBarCustomEvent<string>) => void;
|
|
563
|
+
/**
|
|
564
|
+
* Emitted on submit (Enter or button). detail: string.
|
|
565
|
+
*/
|
|
566
|
+
"onRuiSearchSubmit"?: (event: RuiSearchBarCustomEvent<string>) => void;
|
|
567
|
+
/**
|
|
568
|
+
* Placeholder text.
|
|
569
|
+
* @default 'Search recipes...'
|
|
570
|
+
*/
|
|
571
|
+
"placeholder"?: string;
|
|
572
|
+
/**
|
|
573
|
+
* Current input value.
|
|
574
|
+
* @default ''
|
|
575
|
+
*/
|
|
576
|
+
"value"?: string;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
interface RuiButtonAttributes {
|
|
580
|
+
"variant": 'primary' | 'secondary' | 'danger' | 'ghost';
|
|
581
|
+
"disabled": boolean;
|
|
582
|
+
"loading": boolean;
|
|
583
|
+
"type": 'button' | 'submit' | 'reset';
|
|
584
|
+
}
|
|
585
|
+
interface RuiModalAttributes {
|
|
586
|
+
"open": boolean;
|
|
587
|
+
"modalTitle": string;
|
|
588
|
+
"closeOnBackdrop": boolean;
|
|
589
|
+
}
|
|
590
|
+
interface RuiRecipeCardAttributes {
|
|
591
|
+
"isFavorite": boolean;
|
|
592
|
+
}
|
|
593
|
+
interface RuiRecipeDetailAttributes {
|
|
594
|
+
"isFavorite": boolean;
|
|
595
|
+
}
|
|
596
|
+
interface RuiRecipeListAttributes {
|
|
597
|
+
"emptyMessage": string;
|
|
598
|
+
}
|
|
599
|
+
interface RuiSearchBarAttributes {
|
|
600
|
+
"value": string;
|
|
601
|
+
"placeholder": string;
|
|
602
|
+
"debounceMs": number;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
interface IntrinsicElements {
|
|
606
|
+
"rui-button": Omit<RuiButton, keyof RuiButtonAttributes> & { [K in keyof RuiButton & keyof RuiButtonAttributes]?: RuiButton[K] } & { [K in keyof RuiButton & keyof RuiButtonAttributes as `attr:${K}`]?: RuiButtonAttributes[K] } & { [K in keyof RuiButton & keyof RuiButtonAttributes as `prop:${K}`]?: RuiButton[K] };
|
|
607
|
+
"rui-filter-chips": RuiFilterChips;
|
|
608
|
+
"rui-meal-planner": RuiMealPlanner;
|
|
609
|
+
"rui-modal": Omit<RuiModal, keyof RuiModalAttributes> & { [K in keyof RuiModal & keyof RuiModalAttributes]?: RuiModal[K] } & { [K in keyof RuiModal & keyof RuiModalAttributes as `attr:${K}`]?: RuiModalAttributes[K] } & { [K in keyof RuiModal & keyof RuiModalAttributes as `prop:${K}`]?: RuiModal[K] };
|
|
610
|
+
"rui-recipe-card": Omit<RuiRecipeCard, keyof RuiRecipeCardAttributes> & { [K in keyof RuiRecipeCard & keyof RuiRecipeCardAttributes]?: RuiRecipeCard[K] } & { [K in keyof RuiRecipeCard & keyof RuiRecipeCardAttributes as `attr:${K}`]?: RuiRecipeCardAttributes[K] } & { [K in keyof RuiRecipeCard & keyof RuiRecipeCardAttributes as `prop:${K}`]?: RuiRecipeCard[K] };
|
|
611
|
+
"rui-recipe-detail": Omit<RuiRecipeDetail, keyof RuiRecipeDetailAttributes> & { [K in keyof RuiRecipeDetail & keyof RuiRecipeDetailAttributes]?: RuiRecipeDetail[K] } & { [K in keyof RuiRecipeDetail & keyof RuiRecipeDetailAttributes as `attr:${K}`]?: RuiRecipeDetailAttributes[K] } & { [K in keyof RuiRecipeDetail & keyof RuiRecipeDetailAttributes as `prop:${K}`]?: RuiRecipeDetail[K] };
|
|
612
|
+
"rui-recipe-list": Omit<RuiRecipeList, keyof RuiRecipeListAttributes> & { [K in keyof RuiRecipeList & keyof RuiRecipeListAttributes]?: RuiRecipeList[K] } & { [K in keyof RuiRecipeList & keyof RuiRecipeListAttributes as `attr:${K}`]?: RuiRecipeListAttributes[K] } & { [K in keyof RuiRecipeList & keyof RuiRecipeListAttributes as `prop:${K}`]?: RuiRecipeList[K] };
|
|
613
|
+
"rui-search-bar": Omit<RuiSearchBar, keyof RuiSearchBarAttributes> & { [K in keyof RuiSearchBar & keyof RuiSearchBarAttributes]?: RuiSearchBar[K] } & { [K in keyof RuiSearchBar & keyof RuiSearchBarAttributes as `attr:${K}`]?: RuiSearchBarAttributes[K] } & { [K in keyof RuiSearchBar & keyof RuiSearchBarAttributes as `prop:${K}`]?: RuiSearchBar[K] };
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
export { LocalJSX as JSX };
|
|
617
|
+
declare module "@stencil/core" {
|
|
618
|
+
export namespace JSX {
|
|
619
|
+
interface IntrinsicElements {
|
|
620
|
+
/**
|
|
621
|
+
* Shared button primitive with variants.
|
|
622
|
+
*/
|
|
623
|
+
"rui-button": LocalJSX.IntrinsicElements["rui-button"] & JSXBase.HTMLAttributes<HTMLRuiButtonElement>;
|
|
624
|
+
/**
|
|
625
|
+
* Filter chips for category selection (multi-select).
|
|
626
|
+
*/
|
|
627
|
+
"rui-filter-chips": LocalJSX.IntrinsicElements["rui-filter-chips"] & JSXBase.HTMLAttributes<HTMLRuiFilterChipsElement>;
|
|
628
|
+
/**
|
|
629
|
+
* Weekly meal planner. Renders one row per day with assign/remove/clear actions.
|
|
630
|
+
*/
|
|
631
|
+
"rui-meal-planner": LocalJSX.IntrinsicElements["rui-meal-planner"] & JSXBase.HTMLAttributes<HTMLRuiMealPlannerElement>;
|
|
632
|
+
/**
|
|
633
|
+
* Modal dialog with default + footer slots.
|
|
634
|
+
*/
|
|
635
|
+
"rui-modal": LocalJSX.IntrinsicElements["rui-modal"] & JSXBase.HTMLAttributes<HTMLRuiModalElement>;
|
|
636
|
+
/**
|
|
637
|
+
* Recipe card. Displays summary info and a favorite toggle.
|
|
638
|
+
*/
|
|
639
|
+
"rui-recipe-card": LocalJSX.IntrinsicElements["rui-recipe-card"] & JSXBase.HTMLAttributes<HTMLRuiRecipeCardElement>;
|
|
640
|
+
/**
|
|
641
|
+
* Full recipe detail view: image, meta, ingredients, instructions.
|
|
642
|
+
*/
|
|
643
|
+
"rui-recipe-detail": LocalJSX.IntrinsicElements["rui-recipe-detail"] & JSXBase.HTMLAttributes<HTMLRuiRecipeDetailElement>;
|
|
644
|
+
/**
|
|
645
|
+
* Responsive grid of recipe cards. Re-renders cards when recipes/favorites change.
|
|
646
|
+
*/
|
|
647
|
+
"rui-recipe-list": LocalJSX.IntrinsicElements["rui-recipe-list"] & JSXBase.HTMLAttributes<HTMLRuiRecipeListElement>;
|
|
648
|
+
/**
|
|
649
|
+
* Search bar with debounced input + submit events.
|
|
650
|
+
*/
|
|
651
|
+
"rui-search-bar": LocalJSX.IntrinsicElements["rui-search-bar"] & JSXBase.HTMLAttributes<HTMLRuiSearchBarElement>;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components';
|