@nascentdigital/funnel-editor 4.5.6 → 4.5.7

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.
@@ -5,6 +5,7 @@ export declare const QuickPicker: import("react").ForwardRefExoticComponent<Quic
5
5
  export declare namespace QuickPicker {
6
6
  type Item<TId extends string> = {
7
7
  id: TId;
8
+ label: string;
8
9
  };
9
10
  type ItemVariant = 'card';
10
11
  type Props<TId extends string, TItem extends Item<TId>> = {
@@ -104,7 +104,7 @@ exports.QuickPicker = (0, react_1.forwardRef)(function QuickPicker({ variant, ti
104
104
  })) })] })));
105
105
  });
106
106
  function renderCard({ item, content, selected, onSelect }) {
107
- return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('FieldCard w-[72px] h-[55px]', {
108
- 'FieldCard-selected': selected
109
- }), onClick: () => onSelect(item.id), children: content }, item.id));
107
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center gap-l2 shrink-0", children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('FieldCard w-[72px] h-[55px]', {
108
+ 'FieldCard-selected': selected
109
+ }), onClick: () => onSelect(item.id), children: content }), (0, jsx_runtime_1.jsx)("span", { className: "label-xxs text-content-tertiary cursor-default", children: item.label })] }, item.id));
110
110
  }
@@ -20,7 +20,7 @@ export declare class BlockConfiguration {
20
20
  get blocksFields(): FieldModel.Config[];
21
21
  get blockFieldData(): Schema.Block.Data.ForFields<Schema.Fields>;
22
22
  get desktopFields(): FieldModel.Config[];
23
- get mobileFields(): never[];
23
+ get mobileFields(): FieldModel.Config[];
24
24
  get nameField(): FieldModel.Config | undefined;
25
25
  get themeField(): FieldModel.Config | undefined;
26
26
  get layoutField(): Field<Schema.EnumField<Schema.EnumField.Options<PanelLayout>>> | undefined;
@@ -30,6 +30,7 @@ export declare class BlockConfiguration {
30
30
  get messageFields(): Record<keyof MessagePanel.Config.Keys<'message'>, FieldModel.Config | undefined>;
31
31
  get listFields(): Record<keyof ListPanel.Config.Keys<'list'>, FieldModel.Config | undefined>;
32
32
  get visualFields(): Record<keyof VisualPanel.Config.Keys<'visual'>, FieldModel.Config | undefined>;
33
+ get extendedFields(): Record<string, FieldModel.Config>;
33
34
  get layout(): BlockLayout | undefined;
34
35
  get events$(): import("rxjs").Observable<EventBus.Event<string, string>>;
35
36
  get valid(): boolean;
@@ -76,11 +76,14 @@ class BlockConfiguration {
76
76
  }
77
77
  get desktopFields() {
78
78
  return [
79
- this.getEditableField('contentAlign')
79
+ ...Object.values(this.extendedFields),
80
+ this.getEditableField('contentAlign'),
80
81
  ].filter(funnel_core_1.Value.isDefined);
81
82
  }
82
83
  get mobileFields() {
83
- return [].filter(funnel_core_1.Value.isDefined);
84
+ return [
85
+ ...Object.values(this.extendedFields)
86
+ ].filter(funnel_core_1.Value.isDefined);
84
87
  }
85
88
  get nameField() {
86
89
  const { block, sectionBlock } = this;
@@ -154,6 +157,29 @@ class BlockConfiguration {
154
157
  horizontalAlign: this.getEditableField(keys.horizontalAlign)
155
158
  };
156
159
  }
160
+ get extendedFields() {
161
+ // get all top-level keys
162
+ const { block, _editableFields } = this;
163
+ const coreKeys = [
164
+ block.nameField.id,
165
+ funnel_ui_1.BlockConfig.Presets.ThemeOnly.key,
166
+ 'layout',
167
+ 'slotVariation',
168
+ 'contentAlign',
169
+ ...Object.values(funnel_ui_1.MessagePanel.Config.getKeys('message')),
170
+ ...Object.values(funnel_ui_1.ListPanel.Config.getKeys('list')),
171
+ ...Object.values(funnel_ui_1.VisualPanel.Config.getKeys('visual'))
172
+ ];
173
+ // return all editable fields, minus the core keys
174
+ return _editableFields.reduce((fields, field) => {
175
+ // add field if not core
176
+ if (!coreKeys.includes(field.id)) {
177
+ fields[field.id] = field;
178
+ }
179
+ // keep reducing
180
+ return fields;
181
+ }, {});
182
+ }
157
183
  get layout() {
158
184
  return this._layout;
159
185
  }
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.BlockConfigEditor = BlockConfigEditor;
4
7
  const jsx_runtime_1 = require("react/jsx-runtime");
5
8
  const funnel_core_1 = require("@nascentdigital/funnel-core");
9
+ const classnames_1 = __importDefault(require("classnames"));
6
10
  const react_1 = require("motion/react");
7
11
  const react_2 = require("react");
8
12
  const rxjs_1 = require("rxjs");
@@ -17,7 +21,7 @@ function BlockConfigEditor({ configuration, onClose }) {
17
21
  const [blockView, setBlockView] = (0, react_2.useState)('desktop');
18
22
  const pageController = (0, hooks_1.usePageController)();
19
23
  const panelLayoutPickerRef = (0, react_2.useRef)(null);
20
- const { modified = false, valid = false, blocksFields = [], desktopFields = [], mobileFields = [] } = configuration !== null && configuration !== void 0 ? configuration : {};
24
+ const { layoutField, modified = false, valid = false, blocksFields = [], desktopFields = [], mobileFields = [] } = configuration !== null && configuration !== void 0 ? configuration : {};
21
25
  const settingsFields = blockView === 'desktop' ? desktopFields : mobileFields;
22
26
  // sync w/ configuration
23
27
  (0, core_1.useBlockConfiguration)(configuration);
@@ -39,7 +43,6 @@ function BlockConfigEditor({ configuration, onClose }) {
39
43
  const onChangePanelLayout = async (e) => {
40
44
  var _a;
41
45
  // skip if there's no layout field (shouldn't happen)
42
- const { layoutField } = configuration !== null && configuration !== void 0 ? configuration : {};
43
46
  if (!layoutField) {
44
47
  return;
45
48
  }
@@ -63,7 +66,8 @@ function BlockConfigEditor({ configuration, onClose }) {
63
66
  // render
64
67
  const { options: slotOptions = [], currentIndex: slotIndex = 0 } = (_a = configuration === null || configuration === void 0 ? void 0 : configuration.slotState) !== null && _a !== void 0 ? _a : {};
65
68
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(core_1.SideSheet, { title: "Block Configuration", size: "xs", backdrop: "glass", open: !!configuration, onSave: onSave, onClose: onClose, disableDismiss: modified, disableSave: !modified || !valid, customActions: (0, jsx_runtime_1.jsx)(core_1.Button, { variant: "secondary", size: "sm", disabled: configuration === null || configuration === void 0 ? void 0 : configuration.isConfigInDefault, onClick: () => configuration === null || configuration === void 0 ? void 0 : configuration.reset(), children: "Reset to Default" }), children: (0, jsx_runtime_1.jsxs)("div", { className: "h-full flex flex-col gap-l6", children: [(0, jsx_runtime_1.jsxs)("section", { className: "grid grid-cols-2 gap-x-l5 gap-y-l4", children: [blocksFields.length > 0 &&
66
- (0, jsx_runtime_1.jsx)(core_1.FieldErrorController, { children: blocksFields.map(field => (0, jsx_runtime_1.jsx)(core_1.FieldEditor, { className: "col-span-full", field: field, size: "xs" }, field.id)) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-l2", children: [(0, jsx_runtime_1.jsx)(FieldHeader_1.FieldHeader, { label: "Layout", size: "xs" }), (0, jsx_runtime_1.jsx)(core_1.Button, { variant: "secondary", size: "xs", iconLeft: "LayoutTemplate", onClick: onChangePanelLayout, children: "Change" })] }), slotOptions.length > 1 &&
69
+ (0, jsx_runtime_1.jsx)(core_1.FieldErrorController, { children: blocksFields.map(field => (0, jsx_runtime_1.jsx)(core_1.FieldEditor, { className: "col-span-full", field: field, size: "xs" }, field.id)) }), layoutField && layoutField.schema.enum.length > 1 &&
70
+ (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-l2", children: [(0, jsx_runtime_1.jsx)(FieldHeader_1.FieldHeader, { label: "Layout", size: "xs" }), (0, jsx_runtime_1.jsx)(core_1.Button, { variant: "secondary", size: "xs", iconLeft: "LayoutTemplate", onClick: onChangePanelLayout, children: "Change" })] }), slotOptions.length > 1 &&
67
71
  (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-l2", children: [(0, jsx_runtime_1.jsx)(FieldHeader_1.FieldHeader, { label: "Arrangement", size: "xs" }), slotOptions.length === 2
68
72
  ?
69
73
  (0, jsx_runtime_1.jsx)(core_1.Button, { variant: "secondary", size: "xs", iconLeft: "ArrowLeftRight", onClick: () => configuration === null || configuration === void 0 ? void 0 : configuration.gotToNextSlot(), children: "Swap" })
@@ -73,37 +77,48 @@ function BlockConfigEditor({ configuration, onClose }) {
73
77
  (0, jsx_runtime_1.jsx)("section", { className: "grid grid-cols-2 auto-rows-auto items-start gap-l6", children: (0, jsx_runtime_1.jsx)(core_1.FieldErrorController, { children: settingsFields.map(field => (0, jsx_runtime_1.jsx)(core_1.FieldEditor, { className: "col-span-2", field: field, size: "xs" }, field.id)) }) })] }) }), (0, jsx_runtime_1.jsx)(core_1.QuickPicker, { ref: panelLayoutPickerRef, variant: "card", title: "Pick Block Layout", description: "Select an available layout for this block.", renderItem: (item) => renderPanelLayoutItem(item) })] }));
74
78
  }
75
79
  function renderPanelLayoutItem(item) {
80
+ const panel = (className = 'flex-1') => ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('bg-surface-placeholder rounded-[2px]', className) }));
81
+ const panelPaddedX = 'px-l4';
82
+ const panelPaddedY = 'py-l4';
83
+ const panelPadded = (0, classnames_1.default)(panelPaddedX, panelPaddedY);
84
+ const panelGap = 'gap-l1';
85
+ const nestedPanel = (config = {}) => {
86
+ // unpack config
87
+ const { panelClassName, nestedPanelClassName, multipleItems = false } = config;
88
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex h-full bg-surface-placeholder rounded-[2px]', panelClassName, panelGap, { 'p-l2': multipleItems }), children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('flex-1 bg-surface-placeholder-raised rounded-[2px]', nestedPanelClassName, { 'm-l2': !multipleItems }) }), multipleItems &&
89
+ (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('flex-1 bg-surface-placeholder-raised rounded-[2px]', nestedPanelClassName) })] }));
90
+ };
76
91
  switch (item.id) {
77
92
  case 'solo':
78
- return ((0, jsx_runtime_1.jsx)("div", { className: "p-l4 size-full", children: (0, jsx_runtime_1.jsx)("div", { className: "size-full bg-surface-placeholder" }) }));
93
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('size-full', panelPadded), children: panel('size-full') }));
79
94
  case 'stack.v':
80
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] }));
95
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex h-full", panelPadded, panelGap), children: [panel(), panel()] }));
81
96
  case 'stack.h':
82
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] }));
97
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex flex-col h-full", panelPadded, panelGap), children: [panel(), panel()] }));
83
98
  case 'brick.v':
84
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] }));
99
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex flex-col h-full", panelPadded, panelGap), children: [panel(), panel(), panel()] }));
85
100
  case 'brick.t':
86
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-full h-[20px] bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-1 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]r" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] })] }));
101
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex flex-col h-full", panelPadded, panelGap), children: [panel('flex-1 w-full h-[20px]'), (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex flex-1', panelGap), children: [panel(), panel()] })] }));
87
102
  case 'brick.r':
88
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full p-l4 gap-l1", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-1 flex-col gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] }), (0, jsx_runtime_1.jsx)("div", { className: "h-full w-[30px] bg-surface-placeholder rounded-[2px]" })] }));
103
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex h-full', panelPadded, panelGap), children: [(0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex h-full flex-1 flex-col', panelGap), children: [panel(), panel()] }), panel('h-full w-[30px]')] }));
89
104
  case 'brick.b':
90
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col p-l4 gap-l1", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex flex-1 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] }), (0, jsx_runtime_1.jsx)("div", { className: "w-full h-[20px] bg-surface-placeholder rounded-[2px]" })] }));
105
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex flex-col h-full", panelPadded, panelGap), children: [(0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex flex-1', panelGap), children: [panel(), panel()] }), panel('flex-1 w-full h-[20px]')] }));
91
106
  case 'brick.l':
92
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "h-full w-[30px] bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-1 flex-col gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder rounded-[2px]" })] })] }));
107
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex h-full', panelPadded, panelGap), children: [panel('h-full w-[30px]'), (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)('flex h-full flex-1 flex-col', panelGap), children: [panel(), panel()] })] }));
93
108
  case 'nested':
94
- return ((0, jsx_runtime_1.jsx)("div", { className: "p-l4 size-full", children: (0, jsx_runtime_1.jsx)("div", { className: "flex h-full px-l5 py-l2 bg-surface-placeholder rounded-[2px]", children: (0, jsx_runtime_1.jsx)("div", { className: "bg-surface-placeholder-raised rounded-[2px]" }) }) }));
109
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('size-full', panelPadded), children: nestedPanel() }));
95
110
  case 'nested.v':
96
- return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full p-l4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col px-l4 py-l2 gap-l1 bg-surface-placeholder rounded-[2px]", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder-raised rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder-raised rounded-[2px]" })] }) }));
111
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('size-full', panelPadded), children: nestedPanel({ panelClassName: 'flex-col', multipleItems: true }) }));
97
112
  case 'nested.h':
98
- return ((0, jsx_runtime_1.jsx)("div", { className: "h-full w-full p-l4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex h-full px-l4 py-l3 gap-l1 bg-surface-placeholder rounded-[2px]", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder-raised rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder-raised rounded-[2px]" })] }) }));
113
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('size-full', panelPadded), children: nestedPanel({ multipleItems: true }) }));
99
114
  case 'nested.t':
100
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 p-l2 bg-surface-placeholder rounded-[2px]", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full w-7/12 bg-surface-placeholder-raised rounded-[2px]" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 p-l2 bg-surface-placeholder rounded-[2px]" })] }));
115
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex h-full flex-col", panelPadded, panelGap), children: [nestedPanel({ panelClassName: 'flex-1' }), panel()] }));
101
116
  case 'nested.r':
102
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 p-l2 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex flex-1 flex-col p-l2 bg-surface-placeholder rounded-[2px]", children: (0, jsx_runtime_1.jsx)("div", { className: "w-full h-[60%] bg-surface-placeholder-raised rounded-[2px]" }) })] }));
117
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex h-full", panelPadded, panelGap), children: [panel(), nestedPanel({ panelClassName: 'flex-1' })] }));
103
118
  case 'nested.b':
104
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full flex-col p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex-1 p-l2 bg-surface-placeholder rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 p-l2 bg-surface-placeholder rounded-[2px]", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full w-7/12 bg-surface-placeholder-raised rounded-[2px]" }) })] }));
119
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex h-full flex-col", panelPadded, panelGap), children: [panel(), nestedPanel({ panelClassName: 'flex-1' })] }));
105
120
  case 'nested.l':
106
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex h-full p-l4 gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex flex-1 flex-col p-l2 bg-surface-placeholder rounded-[2px]", children: (0, jsx_runtime_1.jsx)("div", { className: "w-full h-[60%] bg-surface-placeholder-raised rounded-[2px]" }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 p-l2 bg-surface-placeholder rounded-[2px]" })] }));
121
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)("flex h-full", panelPadded, panelGap), children: [nestedPanel({ panelClassName: 'flex-1' }), panel()] }));
107
122
  default:
108
123
  return ((0, jsx_runtime_1.jsx)("div", { children: item.id }));
109
124
  }
@@ -57,7 +57,7 @@ function ListPanelEditor({ className, anchor, open, onClose, configuration }) {
57
57
  }
58
58
  function renderListLayoutItem(item) {
59
59
  // panel
60
- const panel = (className = 'w-full') => ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('bg-surface-placeholder rounded-[3px]', className) }));
60
+ const panel = (className = 'w-full') => ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)('bg-surface-placeholder-raised rounded-[2px]', className) }));
61
61
  // get content
62
62
  const panelClassName = 'w-full h-full';
63
63
  const panelPaddedX = 'px-10';
@@ -65,9 +65,13 @@ function renderListLayoutItem(item) {
65
65
  const panelPadded = (0, classnames_1.default)(panelPaddedX, panelPaddedY);
66
66
  let content;
67
67
  switch (item.id) {
68
+ case 'card':
68
69
  case 'grid':
69
70
  content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, panelPadded, 'grid grid-cols-3 auto-cols-fr gap-x-l3 gap-y-l2 '), children: [panel(), panel(), panel(), panel(), panel()] }));
70
71
  break;
72
+ case 'flexWrap':
73
+ content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, panelPadded, 'flex flex-wrap justify-center items-center gap-l3'), children: [panel('w-12 h-12'), panel('w-12 h-12'), panel('w-12 h-12'), panel('w-12 h-12'), panel('w-12 h-12')] }));
74
+ break;
71
75
  case 'verticalStack':
72
76
  content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, panelPadded, 'grid grid-cols-1 auto-rows-fr gap-y-l2 '), children: [panel(), panel(), panel()] }));
73
77
  break;
@@ -80,6 +84,15 @@ function renderListLayoutItem(item) {
80
84
  case 'bento':
81
85
  content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, panelPadded, 'grid auto-rows-auto auto-cols-auto gap-l3'), children: [panel('w-20 row-start-1 row-span-2 col-start-1'), panel('w-28 row-start-1 col-start-2'), panel('w-18 row-start-2 col-start-2')] }));
82
86
  break;
87
+ case 'brick':
88
+ content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, panelPaddedX, 'grid grid-cols-2 gap-l3 pt-10'), children: [panel('h-12 row-start-1 col-span-full'), panel('h-12 row-start-2 col-start-1'), panel('h-12 row-start-2 col-start-2'), panel('h-12 row-start-3 col-span-full')] }));
89
+ break;
90
+ case 'brickFlipped':
91
+ content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, panelPaddedX, 'grid grid-cols-2 gap-l3 pt-10'), children: [panel('h-12 row-start-1 col-start-1'), panel('h-12 row-start-1 col-start-2'), panel('h-12 row-start-2 col-span-full'), panel('h-12 row-start-3 col-start-1'), panel('h-12 row-start-3 col-start-2')] }));
92
+ break;
93
+ case 'carousel':
94
+ content = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(panelClassName, 'flex flex-col gap-l2 pt-10 pb-l3'), children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex-1 flex items-stretch gap-l3", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-8 bg-surface-placeholder rounded-r-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1 bg-surface-placeholder-raised rounded-[2px]" }), (0, jsx_runtime_1.jsx)("div", { className: "w-8 bg-surface-placeholder rounded-l-[2px]" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-center items-center gap-l1", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-4 h-4 bg-surface-placeholder-raised rounded-full" }), (0, jsx_runtime_1.jsx)("div", { className: "w-4 h-4 bg-surface-placeholder-raised rounded-full" }), (0, jsx_runtime_1.jsx)("div", { className: "w-4 h-4 bg-surface-placeholder-raised rounded-full" })] })] }));
95
+ break;
83
96
  default:
84
97
  content = ((0, jsx_runtime_1.jsx)("div", { children: item.id }));
85
98
  break;
@@ -4409,6 +4409,12 @@ video {
4409
4409
  .row-start-2{
4410
4410
  grid-row-start: 2;
4411
4411
  }
4412
+ .row-start-3{
4413
+ grid-row-start: 3;
4414
+ }
4415
+ .m-l2{
4416
+ margin: 4px;
4417
+ }
4412
4418
  .m-l6{
4413
4419
  margin: 16px;
4414
4420
  }
@@ -4566,6 +4572,9 @@ video {
4566
4572
  .h-10{
4567
4573
  height: 10px;
4568
4574
  }
4575
+ .h-12{
4576
+ height: 12px;
4577
+ }
4569
4578
  .h-14{
4570
4579
  height: 14px;
4571
4580
  }
@@ -4635,9 +4644,6 @@ video {
4635
4644
  .h-\[55px\]{
4636
4645
  height: 55px;
4637
4646
  }
4638
- .h-\[60\%\]{
4639
- height: 60%;
4640
- }
4641
4647
  .h-\[80px\]{
4642
4648
  height: 80px;
4643
4649
  }
@@ -4725,6 +4731,9 @@ video {
4725
4731
  .w-11\/12{
4726
4732
  width: 91.666667%;
4727
4733
  }
4734
+ .w-12{
4735
+ width: 12px;
4736
+ }
4728
4737
  .w-14{
4729
4738
  width: 14px;
4730
4739
  }
@@ -4764,8 +4773,8 @@ video {
4764
4773
  .w-6{
4765
4774
  width: 6px;
4766
4775
  }
4767
- .w-7\/12{
4768
- width: 58.333333%;
4776
+ .w-8{
4777
+ width: 8px;
4769
4778
  }
4770
4779
  .w-8\/12{
4771
4780
  width: 66.666667%;
@@ -5140,9 +5149,6 @@ video {
5140
5149
  .rounded-\[2px\]{
5141
5150
  border-radius: 2px;
5142
5151
  }
5143
- .rounded-\[3px\]{
5144
- border-radius: 3px;
5145
- }
5146
5152
  .rounded-full{
5147
5153
  border-radius: 9999px;
5148
5154
  }
@@ -5167,6 +5173,14 @@ video {
5167
5173
  .rounded-xxs{
5168
5174
  border-radius: 2px;
5169
5175
  }
5176
+ .rounded-l-\[2px\]{
5177
+ border-top-left-radius: 2px;
5178
+ border-bottom-left-radius: 2px;
5179
+ }
5180
+ .rounded-r-\[2px\]{
5181
+ border-top-right-radius: 2px;
5182
+ border-bottom-right-radius: 2px;
5183
+ }
5170
5184
  .rounded-t-lg{
5171
5185
  border-top-left-radius: 18px;
5172
5186
  border-top-right-radius: 18px;
@@ -5577,10 +5591,6 @@ video {
5577
5591
  padding-top: 72px;
5578
5592
  padding-bottom: 72px;
5579
5593
  }
5580
- .py-l2{
5581
- padding-top: 4px;
5582
- padding-bottom: 4px;
5583
- }
5584
5594
  .py-l3{
5585
5595
  padding-top: 6px;
5586
5596
  padding-bottom: 6px;
@@ -5601,6 +5611,9 @@ video {
5601
5611
  padding-top: 24px;
5602
5612
  padding-bottom: 24px;
5603
5613
  }
5614
+ .pb-l3{
5615
+ padding-bottom: 6px;
5616
+ }
5604
5617
  .pb-l4{
5605
5618
  padding-bottom: 8px;
5606
5619
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nascentdigital/funnel-editor",
3
- "version": "4.5.6",
3
+ "version": "4.5.7",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "restricted"
@@ -89,5 +89,5 @@
89
89
  "ts-jest": "^29",
90
90
  "type-fest": "^4"
91
91
  },
92
- "gitHead": "e5899ba807b2c7241f493c850a98c1607df6771b"
92
+ "gitHead": "aa14b53e99044a968b850c4f426e40d312a9306a"
93
93
  }