@dialpad/dialtone-vue 2.10.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -119,6 +119,54 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".tippy-box[data-popper-escaped] .d-pop
119
119
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
120
120
 
121
121
 
122
+ /***/ }),
123
+
124
+ /***/ 826:
125
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
126
+
127
+ "use strict";
128
+ __webpack_require__.r(__webpack_exports__);
129
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
130
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
131
+ /* harmony export */ });
132
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(481);
133
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
134
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(400);
135
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
136
+ // Imports
137
+
138
+
139
+ var ___CSS_LOADER_EXPORT___ = _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
140
+ // Module
141
+ ___CSS_LOADER_EXPORT___.push([module.id, ".root-layout__header--sticky{position:-webkit-sticky;position:sticky;top:0}", ""]);
142
+ // Exports
143
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
144
+
145
+
146
+ /***/ }),
147
+
148
+ /***/ 350:
149
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
150
+
151
+ "use strict";
152
+ __webpack_require__.r(__webpack_exports__);
153
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
154
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
155
+ /* harmony export */ });
156
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(481);
157
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
158
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(400);
159
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
160
+ // Imports
161
+
162
+
163
+ var ___CSS_LOADER_EXPORT___ = _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
164
+ // Module
165
+ ___CSS_LOADER_EXPORT___.push([module.id, ".root-layout__body{display:flex;flex-wrap:wrap;gap:0}.root-layout__body--invert{flex-direction:row-reverse}.root-layout__sidebar{flex-grow:1}.root-layout__content{flex-basis:0;flex-grow:999}", ""]);
166
+ // Exports
167
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
168
+
169
+
122
170
  /***/ }),
123
171
 
124
172
  /***/ 803:
@@ -405,6 +453,38 @@ var update = add("cdce4a0a", content, true, {"sourceMap":false,"shadowMode":fals
405
453
 
406
454
  /***/ }),
407
455
 
456
+ /***/ 426:
457
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
458
+
459
+ // style-loader: Adds some css to the DOM by adding a <style> tag
460
+
461
+ // load the styles
462
+ var content = __webpack_require__(826);
463
+ if(content.__esModule) content = content.default;
464
+ if(typeof content === 'string') content = [[module.id, content, '']];
465
+ if(content.locals) module.exports = content.locals;
466
+ // add the styles to the DOM
467
+ var add = (__webpack_require__(402)/* ["default"] */ .Z)
468
+ var update = add("75f44c3d", content, true, {"sourceMap":false,"shadowMode":false});
469
+
470
+ /***/ }),
471
+
472
+ /***/ 125:
473
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
474
+
475
+ // style-loader: Adds some css to the DOM by adding a <style> tag
476
+
477
+ // load the styles
478
+ var content = __webpack_require__(350);
479
+ if(content.__esModule) content = content.default;
480
+ if(typeof content === 'string') content = [[module.id, content, '']];
481
+ if(content.locals) module.exports = content.locals;
482
+ // add the styles to the DOM
483
+ var add = (__webpack_require__(402)/* ["default"] */ .Z)
484
+ var update = add("51ac788f", content, true, {"sourceMap":false,"shadowMode":false});
485
+
486
+ /***/ }),
487
+
408
488
  /***/ 315:
409
489
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
410
490
 
@@ -1038,6 +1118,7 @@ __webpack_require__.d(__webpack_exports__, {
1038
1118
  "DtRecipeComboboxWithPopover": () => (/* reexport */ combobox_with_popover),
1039
1119
  "DtRecipeContactInfo": () => (/* reexport */ contact_info),
1040
1120
  "DtRecipeTopBannerInfo": () => (/* reexport */ top_banner_info),
1121
+ "DtRootLayout": () => (/* reexport */ root_layout),
1041
1122
  "DtSelectMenu": () => (/* reexport */ select_menu),
1042
1123
  "DtSkeleton": () => (/* reexport */ skeleton_skeleton),
1043
1124
  "DtSkeletonListItem": () => (/* reexport */ skeleton_list_item),
@@ -1064,6 +1145,7 @@ __webpack_require__.d(__webpack_exports__, {
1064
1145
  "POPOVER_INITIAL_FOCUS_STRINGS": () => (/* reexport */ POPOVER_INITIAL_FOCUS_STRINGS),
1065
1146
  "POPOVER_PADDING_CLASSES": () => (/* reexport */ POPOVER_PADDING_CLASSES),
1066
1147
  "POPOVER_ROLES": () => (/* reexport */ POPOVER_ROLES),
1148
+ "ROOT_LAYOUT_SIDEBAR_POSITIONS": () => (/* reexport */ ROOT_LAYOUT_SIDEBAR_POSITIONS),
1067
1149
  "SELECT_SIZE_MODIFIERS": () => (/* reexport */ SELECT_SIZE_MODIFIERS),
1068
1150
  "SELECT_STATE_MODIFIERS": () => (/* reexport */ SELECT_STATE_MODIFIERS),
1069
1151
  "SHORTCUTS_ALIASES": () => (/* reexport */ SHORTCUTS_ALIASES),
@@ -16000,6 +16082,297 @@ var keyboard_shortcut_component = normalizeComponent(
16000
16082
  ;// CONCATENATED MODULE: ./components/keyboard_shortcut/index.js
16001
16083
 
16002
16084
 
16085
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/root_layout/root_layout.vue?vue&type=template&id=2e5fe0a4&
16086
+ var root_layoutvue_type_template_id_2e5fe0a4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"root-layout"},[(_vm.$slots.header)?_c('header',{class:['root-layout__header', _vm.headerClass, { 'root-layout__header--sticky': _vm.headerSticky }],style:({ 'height': _vm.headerHeight }),attrs:{"data-qa":"root-layout-header"}},[_vm._t("header")],2):_vm._e(),_c('dt-root-layout-body',{attrs:{"content-class":_vm.contentClass,"content-wrap-width-percent":_vm.contentWrapWidthPercent,"sidebar-class":_vm.sidebarClass,"sidebar-width":_vm.sidebarWidth,"sidebar-position":_vm.sidebarPosition},scopedSlots:_vm._u([{key:"sidebar",fn:function(){return [_vm._t("sidebar")]},proxy:true},{key:"content",fn:function(){return [_vm._t("default")]},proxy:true}],null,true)}),(_vm.$slots.footer)?_c('footer',{class:['root-layout__footer', _vm.footerClass],style:({ 'height': _vm.footerHeight }),attrs:{"data-qa":"root-layout-footer"}},[_vm._t("footer")],2):_vm._e()],1)}
16087
+ var root_layoutvue_type_template_id_2e5fe0a4_staticRenderFns = []
16088
+
16089
+
16090
+ ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/root_layout/root_layout_body.vue?vue&type=template&id=dfb53770&
16091
+ var root_layout_bodyvue_type_template_id_dfb53770_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['root-layout__body', _vm.bodyClass],attrs:{"data-qa":"root-layout-body"}},[(_vm.$slots.sidebar)?_c('aside',{class:['root-layout__sidebar', _vm.sidebarClass],style:({ 'flex-basis': _vm.sidebarWidth }),attrs:{"data-qa":"root-layout-sidebar"}},[_vm._t("sidebar")],2):_vm._e(),(_vm.$slots.content)?_c('main',{class:['root-layout__content', _vm.contentClass],style:({ 'min-inline-size': _vm.contentWrapWidthPercent }),attrs:{"data-qa":"root-layout-content"}},[_vm._t("content")],2):_vm._e()])}
16092
+ var root_layout_bodyvue_type_template_id_dfb53770_staticRenderFns = []
16093
+
16094
+
16095
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_constants.js
16096
+ const ROOT_LAYOUT_SIDEBAR_POSITIONS = {
16097
+ LEFT: 'left',
16098
+ RIGHT: 'right'
16099
+ };
16100
+ /* harmony default export */ const root_layout_constants = ({
16101
+ ROOT_LAYOUT_SIDEBAR_POSITIONS
16102
+ });
16103
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/root_layout/root_layout_body.vue?vue&type=script&lang=js&
16104
+ //
16105
+ //
16106
+ //
16107
+ //
16108
+ //
16109
+ //
16110
+ //
16111
+ //
16112
+ //
16113
+ //
16114
+ //
16115
+ //
16116
+ //
16117
+ //
16118
+ //
16119
+ //
16120
+ //
16121
+ //
16122
+ //
16123
+ //
16124
+ //
16125
+ //
16126
+ //
16127
+ //
16128
+
16129
+ /* harmony default export */ const root_layout_bodyvue_type_script_lang_js_ = ({
16130
+ name: 'DtRootLayoutBody',
16131
+ props: {
16132
+ /**
16133
+ * Additional class name for the content element
16134
+ */
16135
+ contentClass: {
16136
+ type: [String, Array, Object],
16137
+ default: undefined
16138
+ },
16139
+
16140
+ /**
16141
+ * Additional class name for the sidebar element
16142
+ */
16143
+ sidebarClass: {
16144
+ type: [String, Array, Object],
16145
+ default: undefined
16146
+ },
16147
+
16148
+ /**
16149
+ * The width of the sidebar
16150
+ * Possible units rem|px|%|em
16151
+ */
16152
+ sidebarWidth: {
16153
+ type: String,
16154
+ default: undefined
16155
+ },
16156
+
16157
+ /**
16158
+ * Whether the sidebar is on the left or right side
16159
+ * Possible options: 'left', 'right'
16160
+ */
16161
+ sidebarPosition: {
16162
+ type: String,
16163
+ default: undefined
16164
+ },
16165
+
16166
+ /**
16167
+ * For responsive layouts. When the main content is at the specified width percentage,
16168
+ * the sidebar will display above the content rather than beside it. Please enter a percentage string value
16169
+ *
16170
+ * ex: '50%', '30%'
16171
+ */
16172
+ contentWrapWidthPercent: {
16173
+ type: String,
16174
+ default: undefined
16175
+ }
16176
+ },
16177
+ computed: {
16178
+ bodyClass() {
16179
+ return {
16180
+ 'root-layout__body--invert': this.sidebarPosition === ROOT_LAYOUT_SIDEBAR_POSITIONS.RIGHT
16181
+ };
16182
+ }
16183
+
16184
+ }
16185
+ });
16186
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_body.vue?vue&type=script&lang=js&
16187
+ /* harmony default export */ const root_layout_root_layout_bodyvue_type_script_lang_js_ = (root_layout_bodyvue_type_script_lang_js_);
16188
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-32[0].rules[0].use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[2]!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[3]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/root_layout/root_layout_body.vue?vue&type=style&index=0&lang=less&
16189
+ var root_layout_bodyvue_type_style_index_0_lang_less_ = __webpack_require__(125);
16190
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_body.vue?vue&type=style&index=0&lang=less&
16191
+
16192
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_body.vue
16193
+
16194
+
16195
+
16196
+ ;
16197
+
16198
+
16199
+ /* normalize component */
16200
+
16201
+ var root_layout_body_component = normalizeComponent(
16202
+ root_layout_root_layout_bodyvue_type_script_lang_js_,
16203
+ root_layout_bodyvue_type_template_id_dfb53770_render,
16204
+ root_layout_bodyvue_type_template_id_dfb53770_staticRenderFns,
16205
+ false,
16206
+ null,
16207
+ null,
16208
+ null
16209
+
16210
+ )
16211
+
16212
+ /* harmony default export */ const root_layout_body = (root_layout_body_component.exports);
16213
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/root_layout/root_layout.vue?vue&type=script&lang=js&
16214
+ //
16215
+ //
16216
+ //
16217
+ //
16218
+ //
16219
+ //
16220
+ //
16221
+ //
16222
+ //
16223
+ //
16224
+ //
16225
+ //
16226
+ //
16227
+ //
16228
+ //
16229
+ //
16230
+ //
16231
+ //
16232
+ //
16233
+ //
16234
+ //
16235
+ //
16236
+ //
16237
+ //
16238
+ //
16239
+ //
16240
+ //
16241
+ //
16242
+ //
16243
+ //
16244
+ //
16245
+ //
16246
+ //
16247
+ //
16248
+ //
16249
+
16250
+
16251
+ /* harmony default export */ const root_layoutvue_type_script_lang_js_ = ({
16252
+ name: 'DtRootLayout',
16253
+ components: {
16254
+ DtRootLayoutBody: root_layout_body
16255
+ },
16256
+ props: {
16257
+ /**
16258
+ * Additional class name for the header element
16259
+ */
16260
+ headerClass: {
16261
+ type: [String, Array, Object],
16262
+ default: ''
16263
+ },
16264
+
16265
+ /**
16266
+ * The height of the header
16267
+ * Possible units rem|px|%|em
16268
+ */
16269
+ headerHeight: {
16270
+ type: String,
16271
+ default: '64px'
16272
+ },
16273
+
16274
+ /**
16275
+ * Scroll the header with the page
16276
+ */
16277
+ headerSticky: {
16278
+ type: Boolean,
16279
+ default: false
16280
+ },
16281
+
16282
+ /**
16283
+ * Additional class name for the content element
16284
+ */
16285
+ contentClass: {
16286
+ type: [String, Array, Object],
16287
+ default: ''
16288
+ },
16289
+
16290
+ /**
16291
+ * For responsive layouts. When the main content is at the specified width percentage,
16292
+ * the sidebar will display above the content rather than beside it. Please enter a percentage string value
16293
+ *
16294
+ * ex: '50%', '30%'
16295
+ */
16296
+ contentWrapWidthPercent: {
16297
+ type: String,
16298
+ default: '50%'
16299
+ },
16300
+
16301
+ /**
16302
+ * Additional class name for the sidebar element
16303
+ */
16304
+ sidebarClass: {
16305
+ type: [String, Array, Object],
16306
+ default: ''
16307
+ },
16308
+
16309
+ /**
16310
+ * The width of the sidebar
16311
+ * Possible units rem|px|%|em
16312
+ */
16313
+ sidebarWidth: {
16314
+ type: String,
16315
+ default: '256px'
16316
+ },
16317
+
16318
+ /**
16319
+ * Whether the sidebar is on the left or right side
16320
+ * Possible options: 'left', 'right'
16321
+ */
16322
+ sidebarPosition: {
16323
+ type: String,
16324
+ default: 'left',
16325
+ validator: s => Object.values(ROOT_LAYOUT_SIDEBAR_POSITIONS).includes(s)
16326
+ },
16327
+
16328
+ /**
16329
+ * Additional class name for the footer element
16330
+ */
16331
+ footerClass: {
16332
+ type: [String, Array, Object],
16333
+ default: ''
16334
+ },
16335
+
16336
+ /**
16337
+ * The height of the footer
16338
+ * Possible units rem|px|%|em
16339
+ */
16340
+ footerHeight: {
16341
+ type: String,
16342
+ default: '64px'
16343
+ }
16344
+ }
16345
+ });
16346
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout.vue?vue&type=script&lang=js&
16347
+ /* harmony default export */ const root_layout_root_layoutvue_type_script_lang_js_ = (root_layoutvue_type_script_lang_js_);
16348
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-32[0].rules[0].use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[1]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[2]!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[3]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32[0].rules[0].use[4]!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/root_layout/root_layout.vue?vue&type=style&index=0&lang=less&
16349
+ var root_layoutvue_type_style_index_0_lang_less_ = __webpack_require__(426);
16350
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout.vue?vue&type=style&index=0&lang=less&
16351
+
16352
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout.vue
16353
+
16354
+
16355
+
16356
+ ;
16357
+
16358
+
16359
+ /* normalize component */
16360
+
16361
+ var root_layout_component = normalizeComponent(
16362
+ root_layout_root_layoutvue_type_script_lang_js_,
16363
+ root_layoutvue_type_template_id_2e5fe0a4_render,
16364
+ root_layoutvue_type_template_id_2e5fe0a4_staticRenderFns,
16365
+ false,
16366
+ null,
16367
+ null,
16368
+ null
16369
+
16370
+ )
16371
+
16372
+ /* harmony default export */ const root_layout = (root_layout_component.exports);
16373
+ ;// CONCATENATED MODULE: ./components/root_layout/index.js
16374
+
16375
+
16003
16376
  ;// CONCATENATED MODULE: ./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=01303da8&
16004
16377
  var combobox_with_popovervue_type_template_id_01303da8_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('dt-combobox',_vm._g({ref:"combobox",attrs:{"show-list":_vm.isListShown,"on-beginning-of-list":_vm.onBeginningOfList,"on-end-of-list":_vm.onEndOfList,"list-aria-label":_vm.listAriaLabel,"list-rendered-outside":true,"list-id":_vm.listId,"data-qa":"dt-combobox"},scopedSlots:_vm._u([{key:"input",fn:function(ref){
16005
16378
  var inputProps = ref.inputProps;
@@ -16672,6 +17045,7 @@ var top_banner_info_component = normalizeComponent(
16672
17045
 
16673
17046
 
16674
17047
 
17048
+
16675
17049
 
16676
17050
 
16677
17051
  /// Recipes