@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.
@@ -129,6 +129,54 @@ ___CSS_LOADER_EXPORT___.push([module.id, ".tippy-box[data-popper-escaped] .d-pop
129
129
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
130
130
 
131
131
 
132
+ /***/ }),
133
+
134
+ /***/ 262:
135
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
136
+
137
+ "use strict";
138
+ __webpack_require__.r(__webpack_exports__);
139
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
140
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
141
+ /* harmony export */ });
142
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(481);
143
+ /* 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__);
144
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(400);
145
+ /* 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__);
146
+ // Imports
147
+
148
+
149
+ 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()));
150
+ // Module
151
+ ___CSS_LOADER_EXPORT___.push([module.id, ".root-layout__header--sticky{position:-webkit-sticky;position:sticky;top:0}", ""]);
152
+ // Exports
153
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
154
+
155
+
156
+ /***/ }),
157
+
158
+ /***/ 217:
159
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
160
+
161
+ "use strict";
162
+ __webpack_require__.r(__webpack_exports__);
163
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
164
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
165
+ /* harmony export */ });
166
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(481);
167
+ /* 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__);
168
+ /* harmony import */ var _node_modules_vue_cli_service_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(400);
169
+ /* 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__);
170
+ // Imports
171
+
172
+
173
+ 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()));
174
+ // Module
175
+ ___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}", ""]);
176
+ // Exports
177
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
178
+
179
+
132
180
  /***/ }),
133
181
 
134
182
  /***/ 784:
@@ -415,6 +463,38 @@ var update = add("465f071a", content, true, {"sourceMap":false,"shadowMode":fals
415
463
 
416
464
  /***/ }),
417
465
 
466
+ /***/ 253:
467
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
468
+
469
+ // style-loader: Adds some css to the DOM by adding a <style> tag
470
+
471
+ // load the styles
472
+ var content = __webpack_require__(262);
473
+ if(content.__esModule) content = content.default;
474
+ if(typeof content === 'string') content = [[module.id, content, '']];
475
+ if(content.locals) module.exports = content.locals;
476
+ // add the styles to the DOM
477
+ var add = (__webpack_require__(402)/* ["default"] */ .Z)
478
+ var update = add("13ad79b5", content, true, {"sourceMap":false,"shadowMode":false});
479
+
480
+ /***/ }),
481
+
482
+ /***/ 75:
483
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
484
+
485
+ // style-loader: Adds some css to the DOM by adding a <style> tag
486
+
487
+ // load the styles
488
+ var content = __webpack_require__(217);
489
+ if(content.__esModule) content = content.default;
490
+ if(typeof content === 'string') content = [[module.id, content, '']];
491
+ if(content.locals) module.exports = content.locals;
492
+ // add the styles to the DOM
493
+ var add = (__webpack_require__(402)/* ["default"] */ .Z)
494
+ var update = add("4a759ff2", content, true, {"sourceMap":false,"shadowMode":false});
495
+
496
+ /***/ }),
497
+
418
498
  /***/ 778:
419
499
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
420
500
 
@@ -1056,6 +1136,7 @@ __webpack_require__.d(__webpack_exports__, {
1056
1136
  "DtRecipeComboboxWithPopover": () => (/* reexport */ combobox_with_popover),
1057
1137
  "DtRecipeContactInfo": () => (/* reexport */ contact_info),
1058
1138
  "DtRecipeTopBannerInfo": () => (/* reexport */ top_banner_info),
1139
+ "DtRootLayout": () => (/* reexport */ root_layout),
1059
1140
  "DtSelectMenu": () => (/* reexport */ select_menu),
1060
1141
  "DtSkeleton": () => (/* reexport */ skeleton_skeleton),
1061
1142
  "DtSkeletonListItem": () => (/* reexport */ skeleton_list_item),
@@ -1082,6 +1163,7 @@ __webpack_require__.d(__webpack_exports__, {
1082
1163
  "POPOVER_INITIAL_FOCUS_STRINGS": () => (/* reexport */ POPOVER_INITIAL_FOCUS_STRINGS),
1083
1164
  "POPOVER_PADDING_CLASSES": () => (/* reexport */ POPOVER_PADDING_CLASSES),
1084
1165
  "POPOVER_ROLES": () => (/* reexport */ POPOVER_ROLES),
1166
+ "ROOT_LAYOUT_SIDEBAR_POSITIONS": () => (/* reexport */ ROOT_LAYOUT_SIDEBAR_POSITIONS),
1085
1167
  "SELECT_SIZE_MODIFIERS": () => (/* reexport */ SELECT_SIZE_MODIFIERS),
1086
1168
  "SELECT_STATE_MODIFIERS": () => (/* reexport */ SELECT_STATE_MODIFIERS),
1087
1169
  "SHORTCUTS_ALIASES": () => (/* reexport */ SHORTCUTS_ALIASES),
@@ -16018,6 +16100,297 @@ var keyboard_shortcut_component = normalizeComponent(
16018
16100
  ;// CONCATENATED MODULE: ./components/keyboard_shortcut/index.js
16019
16101
 
16020
16102
 
16103
+ ;// 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&
16104
+ 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)}
16105
+ var root_layoutvue_type_template_id_2e5fe0a4_staticRenderFns = []
16106
+
16107
+
16108
+ ;// 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&
16109
+ 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()])}
16110
+ var root_layout_bodyvue_type_template_id_dfb53770_staticRenderFns = []
16111
+
16112
+
16113
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_constants.js
16114
+ const ROOT_LAYOUT_SIDEBAR_POSITIONS = {
16115
+ LEFT: 'left',
16116
+ RIGHT: 'right'
16117
+ };
16118
+ /* harmony default export */ const root_layout_constants = ({
16119
+ ROOT_LAYOUT_SIDEBAR_POSITIONS
16120
+ });
16121
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
16122
+ //
16123
+ //
16124
+ //
16125
+ //
16126
+ //
16127
+ //
16128
+ //
16129
+ //
16130
+ //
16131
+ //
16132
+ //
16133
+ //
16134
+ //
16135
+ //
16136
+ //
16137
+ //
16138
+ //
16139
+ //
16140
+ //
16141
+ //
16142
+ //
16143
+ //
16144
+ //
16145
+ //
16146
+
16147
+ /* harmony default export */ const root_layout_bodyvue_type_script_lang_js_ = ({
16148
+ name: 'DtRootLayoutBody',
16149
+ props: {
16150
+ /**
16151
+ * Additional class name for the content element
16152
+ */
16153
+ contentClass: {
16154
+ type: [String, Array, Object],
16155
+ default: undefined
16156
+ },
16157
+
16158
+ /**
16159
+ * Additional class name for the sidebar element
16160
+ */
16161
+ sidebarClass: {
16162
+ type: [String, Array, Object],
16163
+ default: undefined
16164
+ },
16165
+
16166
+ /**
16167
+ * The width of the sidebar
16168
+ * Possible units rem|px|%|em
16169
+ */
16170
+ sidebarWidth: {
16171
+ type: String,
16172
+ default: undefined
16173
+ },
16174
+
16175
+ /**
16176
+ * Whether the sidebar is on the left or right side
16177
+ * Possible options: 'left', 'right'
16178
+ */
16179
+ sidebarPosition: {
16180
+ type: String,
16181
+ default: undefined
16182
+ },
16183
+
16184
+ /**
16185
+ * For responsive layouts. When the main content is at the specified width percentage,
16186
+ * the sidebar will display above the content rather than beside it. Please enter a percentage string value
16187
+ *
16188
+ * ex: '50%', '30%'
16189
+ */
16190
+ contentWrapWidthPercent: {
16191
+ type: String,
16192
+ default: undefined
16193
+ }
16194
+ },
16195
+ computed: {
16196
+ bodyClass() {
16197
+ return {
16198
+ 'root-layout__body--invert': this.sidebarPosition === ROOT_LAYOUT_SIDEBAR_POSITIONS.RIGHT
16199
+ };
16200
+ }
16201
+
16202
+ }
16203
+ });
16204
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_body.vue?vue&type=script&lang=js&
16205
+ /* harmony default export */ const root_layout_root_layout_bodyvue_type_script_lang_js_ = (root_layout_bodyvue_type_script_lang_js_);
16206
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-72[0].rules[0].use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-72[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-72[0].rules[0].use[2]!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-72[0].rules[0].use[3]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-72[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&
16207
+ var root_layout_bodyvue_type_style_index_0_lang_less_ = __webpack_require__(75);
16208
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_body.vue?vue&type=style&index=0&lang=less&
16209
+
16210
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout_body.vue
16211
+
16212
+
16213
+
16214
+ ;
16215
+
16216
+
16217
+ /* normalize component */
16218
+
16219
+ var root_layout_body_component = normalizeComponent(
16220
+ root_layout_root_layout_bodyvue_type_script_lang_js_,
16221
+ root_layout_bodyvue_type_template_id_dfb53770_render,
16222
+ root_layout_bodyvue_type_template_id_dfb53770_staticRenderFns,
16223
+ false,
16224
+ null,
16225
+ null,
16226
+ null
16227
+
16228
+ )
16229
+
16230
+ /* harmony default export */ const root_layout_body = (root_layout_body_component.exports);
16231
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-80[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&
16232
+ //
16233
+ //
16234
+ //
16235
+ //
16236
+ //
16237
+ //
16238
+ //
16239
+ //
16240
+ //
16241
+ //
16242
+ //
16243
+ //
16244
+ //
16245
+ //
16246
+ //
16247
+ //
16248
+ //
16249
+ //
16250
+ //
16251
+ //
16252
+ //
16253
+ //
16254
+ //
16255
+ //
16256
+ //
16257
+ //
16258
+ //
16259
+ //
16260
+ //
16261
+ //
16262
+ //
16263
+ //
16264
+ //
16265
+ //
16266
+ //
16267
+
16268
+
16269
+ /* harmony default export */ const root_layoutvue_type_script_lang_js_ = ({
16270
+ name: 'DtRootLayout',
16271
+ components: {
16272
+ DtRootLayoutBody: root_layout_body
16273
+ },
16274
+ props: {
16275
+ /**
16276
+ * Additional class name for the header element
16277
+ */
16278
+ headerClass: {
16279
+ type: [String, Array, Object],
16280
+ default: ''
16281
+ },
16282
+
16283
+ /**
16284
+ * The height of the header
16285
+ * Possible units rem|px|%|em
16286
+ */
16287
+ headerHeight: {
16288
+ type: String,
16289
+ default: '64px'
16290
+ },
16291
+
16292
+ /**
16293
+ * Scroll the header with the page
16294
+ */
16295
+ headerSticky: {
16296
+ type: Boolean,
16297
+ default: false
16298
+ },
16299
+
16300
+ /**
16301
+ * Additional class name for the content element
16302
+ */
16303
+ contentClass: {
16304
+ type: [String, Array, Object],
16305
+ default: ''
16306
+ },
16307
+
16308
+ /**
16309
+ * For responsive layouts. When the main content is at the specified width percentage,
16310
+ * the sidebar will display above the content rather than beside it. Please enter a percentage string value
16311
+ *
16312
+ * ex: '50%', '30%'
16313
+ */
16314
+ contentWrapWidthPercent: {
16315
+ type: String,
16316
+ default: '50%'
16317
+ },
16318
+
16319
+ /**
16320
+ * Additional class name for the sidebar element
16321
+ */
16322
+ sidebarClass: {
16323
+ type: [String, Array, Object],
16324
+ default: ''
16325
+ },
16326
+
16327
+ /**
16328
+ * The width of the sidebar
16329
+ * Possible units rem|px|%|em
16330
+ */
16331
+ sidebarWidth: {
16332
+ type: String,
16333
+ default: '256px'
16334
+ },
16335
+
16336
+ /**
16337
+ * Whether the sidebar is on the left or right side
16338
+ * Possible options: 'left', 'right'
16339
+ */
16340
+ sidebarPosition: {
16341
+ type: String,
16342
+ default: 'left',
16343
+ validator: s => Object.values(ROOT_LAYOUT_SIDEBAR_POSITIONS).includes(s)
16344
+ },
16345
+
16346
+ /**
16347
+ * Additional class name for the footer element
16348
+ */
16349
+ footerClass: {
16350
+ type: [String, Array, Object],
16351
+ default: ''
16352
+ },
16353
+
16354
+ /**
16355
+ * The height of the footer
16356
+ * Possible units rem|px|%|em
16357
+ */
16358
+ footerHeight: {
16359
+ type: String,
16360
+ default: '64px'
16361
+ }
16362
+ }
16363
+ });
16364
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout.vue?vue&type=script&lang=js&
16365
+ /* harmony default export */ const root_layout_root_layoutvue_type_script_lang_js_ = (root_layoutvue_type_script_lang_js_);
16366
+ // EXTERNAL MODULE: ./node_modules/vue-style-loader/index.js??clonedRuleSet-72[0].rules[0].use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-72[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-72[0].rules[0].use[2]!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-72[0].rules[0].use[3]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-72[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&
16367
+ var root_layoutvue_type_style_index_0_lang_less_ = __webpack_require__(253);
16368
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout.vue?vue&type=style&index=0&lang=less&
16369
+
16370
+ ;// CONCATENATED MODULE: ./components/root_layout/root_layout.vue
16371
+
16372
+
16373
+
16374
+ ;
16375
+
16376
+
16377
+ /* normalize component */
16378
+
16379
+ var root_layout_component = normalizeComponent(
16380
+ root_layout_root_layoutvue_type_script_lang_js_,
16381
+ root_layoutvue_type_template_id_2e5fe0a4_render,
16382
+ root_layoutvue_type_template_id_2e5fe0a4_staticRenderFns,
16383
+ false,
16384
+ null,
16385
+ null,
16386
+ null
16387
+
16388
+ )
16389
+
16390
+ /* harmony default export */ const root_layout = (root_layout_component.exports);
16391
+ ;// CONCATENATED MODULE: ./components/root_layout/index.js
16392
+
16393
+
16021
16394
  ;// 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&
16022
16395
  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){
16023
16396
  var inputProps = ref.inputProps;
@@ -16690,6 +17063,7 @@ var top_banner_info_component = normalizeComponent(
16690
17063
 
16691
17064
 
16692
17065
 
17066
+
16693
17067
 
16694
17068
 
16695
17069
  /// Recipes