@measured/puck 0.16.0-canary.1beaf6b → 0.16.0-canary.2bef00b

Sign up to get free protection for your applications and to get access to all the features.
@@ -166,6 +166,7 @@ type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultCompo
166
166
  label?: string;
167
167
  defaultProps?: DefaultProps;
168
168
  fields?: Fields<ComponentProps>;
169
+ permissions?: Partial<Permissions>;
169
170
  resolveFields?: (data: DataShape, params: {
170
171
  changed: Partial<Record<keyof ComponentProps, boolean>>;
171
172
  fields: Fields<ComponentProps>;
@@ -183,6 +184,12 @@ type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultCompo
183
184
  props?: Partial<ComponentProps>;
184
185
  readOnly?: Partial<Record<keyof ComponentProps, boolean>>;
185
186
  };
187
+ resolvePermissions?: (data: DataShape, params: {
188
+ changed: Partial<Record<keyof ComponentProps, boolean>>;
189
+ lastPermissions: Partial<Permissions> | undefined;
190
+ initialPermissions: Partial<Permissions>;
191
+ appState: AppState;
192
+ }) => Partial<Permissions>;
186
193
  };
187
194
  type Category<ComponentName> = {
188
195
  components?: ComponentName[];
@@ -258,5 +265,12 @@ type AppState = {
258
265
  data: Data;
259
266
  ui: UiState;
260
267
  };
268
+ type Permissions = {
269
+ drag: boolean;
270
+ duplicate: boolean;
271
+ delete: boolean;
272
+ edit: boolean;
273
+ insert: boolean;
274
+ } & Record<string, boolean>;
261
275
 
262
- export type { AppState as A, BaseData as B, Config as C, Data as D, ExternalFieldWithAdaptor as E, Field as F, ItemSelector as I, MappedItem as M, NumberField as N, ObjectField as O, PuckComponent as P, RootData as R, SelectField as S, TextField as T, UiState as U, Viewports as V, FieldProps as a, DropZoneProps as b, DefaultComponentProps as c, DefaultRootProps as d, RootDataWithProps as e, ComponentData as f, Content as g, PuckContext as h, ComponentConfig as i, RootDataWithoutProps as j, ItemWithId as k, ArrayState as l, BaseField as m, TextareaField as n, RadioField as o, ArrayField as p, Adaptor as q, ExternalField as r, CustomField as s, Fields as t };
276
+ export type { AppState as A, BaseData as B, Config as C, Data as D, ExternalFieldWithAdaptor as E, Field as F, ItemSelector as I, MappedItem as M, NumberField as N, ObjectField as O, Permissions as P, RootData as R, SelectField as S, TextField as T, UiState as U, Viewports as V, FieldProps as a, DropZoneProps as b, DefaultComponentProps as c, DefaultRootProps as d, RootDataWithProps as e, ComponentData as f, Content as g, PuckComponent as h, PuckContext as i, ComponentConfig as j, RootDataWithoutProps as k, ItemWithId as l, ArrayState as m, BaseField as n, TextareaField as o, RadioField as p, ArrayField as q, Adaptor as r, ExternalField as s, CustomField as t, Fields as u };
@@ -0,0 +1,276 @@
1
+ import { CSSProperties, ReactNode, ReactElement } from 'react';
2
+
3
+ type ItemSelector = {
4
+ index: number;
5
+ zone?: string;
6
+ };
7
+
8
+ type DropZoneProps = {
9
+ zone: string;
10
+ allow?: string[];
11
+ disallow?: string[];
12
+ style?: CSSProperties;
13
+ };
14
+
15
+ type iconTypes = "Smartphone" | "Monitor" | "Tablet";
16
+ type Viewport = {
17
+ width: number;
18
+ height?: number | "auto";
19
+ label?: string;
20
+ icon?: iconTypes | ReactNode;
21
+ };
22
+ type Viewports = Viewport[];
23
+
24
+ type FieldOption = {
25
+ label: string;
26
+ value: string | number | boolean;
27
+ };
28
+ type FieldOptions = Array<FieldOption> | ReadonlyArray<FieldOption>;
29
+ type BaseField = {
30
+ label?: string;
31
+ };
32
+ type TextField = BaseField & {
33
+ type: "text";
34
+ };
35
+ type NumberField = BaseField & {
36
+ type: "number";
37
+ min?: number;
38
+ max?: number;
39
+ };
40
+ type TextareaField = BaseField & {
41
+ type: "textarea";
42
+ };
43
+ type SelectField = BaseField & {
44
+ type: "select";
45
+ options: FieldOptions;
46
+ };
47
+ type RadioField = BaseField & {
48
+ type: "radio";
49
+ options: FieldOptions;
50
+ };
51
+ type ArrayField<Props extends {
52
+ [key: string]: any;
53
+ } = {
54
+ [key: string]: any;
55
+ }> = BaseField & {
56
+ type: "array";
57
+ arrayFields: {
58
+ [SubPropName in keyof Props[0]]: Field<Props[0][SubPropName]>;
59
+ };
60
+ defaultItemProps?: Props[0];
61
+ getItemSummary?: (item: Props[0], index?: number) => string;
62
+ max?: number;
63
+ min?: number;
64
+ };
65
+ type ObjectField<Props extends {
66
+ [key: string]: any;
67
+ } = {
68
+ [key: string]: any;
69
+ }> = BaseField & {
70
+ type: "object";
71
+ objectFields: Props extends any[] ? never : {
72
+ [SubPropName in keyof Props]: Field<Props[SubPropName]>;
73
+ };
74
+ };
75
+ type Adaptor<AdaptorParams = {}, TableShape extends Record<string, any> = {}, PropShape = TableShape> = {
76
+ name: string;
77
+ fetchList: (adaptorParams?: AdaptorParams) => Promise<TableShape[] | null>;
78
+ mapProp?: (value: TableShape) => PropShape;
79
+ };
80
+ type ExternalFieldWithAdaptor<Props extends {
81
+ [key: string]: any;
82
+ } = {
83
+ [key: string]: any;
84
+ }> = BaseField & {
85
+ type: "external";
86
+ placeholder?: string;
87
+ adaptor: Adaptor<any, any, Props>;
88
+ adaptorParams?: object;
89
+ getItemSummary: (item: Props, index?: number) => string;
90
+ };
91
+ type ExternalField<Props extends {
92
+ [key: string]: any;
93
+ } = {
94
+ [key: string]: any;
95
+ }> = BaseField & {
96
+ type: "external";
97
+ placeholder?: string;
98
+ fetchList: (params: {
99
+ query: string;
100
+ filters: Record<string, any>;
101
+ }) => Promise<any[] | null>;
102
+ mapProp?: (value: any) => Props;
103
+ mapRow?: (value: any) => Record<string, string | number>;
104
+ getItemSummary?: (item: Props, index?: number) => string;
105
+ showSearch?: boolean;
106
+ initialQuery?: string;
107
+ filterFields?: Record<string, Field>;
108
+ initialFilters?: Record<string, any>;
109
+ };
110
+ type CustomField<Props extends any = {}> = BaseField & {
111
+ type: "custom";
112
+ render: (props: {
113
+ field: CustomField<Props>;
114
+ name: string;
115
+ id: string;
116
+ value: Props;
117
+ onChange: (value: Props) => void;
118
+ readOnly?: boolean;
119
+ }) => ReactElement;
120
+ };
121
+ type Field<Props extends any = any> = TextField | NumberField | TextareaField | SelectField | RadioField | ArrayField<Props extends {
122
+ [key: string]: any;
123
+ } ? Props : any> | ObjectField<Props extends {
124
+ [key: string]: any;
125
+ } ? Props : any> | ExternalField<Props extends {
126
+ [key: string]: any;
127
+ } ? Props : any> | ExternalFieldWithAdaptor<Props extends {
128
+ [key: string]: any;
129
+ } ? Props : any> | CustomField<Props>;
130
+ type Fields<ComponentProps extends DefaultComponentProps = DefaultComponentProps> = {
131
+ [PropName in keyof Omit<Required<ComponentProps>, "children" | "editMode">]: Field<ComponentProps[PropName]>;
132
+ };
133
+ type FieldProps<ValueType = any, F = Field<any>> = {
134
+ field: F;
135
+ value: ValueType;
136
+ id?: string;
137
+ onChange: (value: ValueType, uiState?: Partial<UiState>) => void;
138
+ readOnly?: boolean;
139
+ };
140
+
141
+ type WithPuckProps<Props> = Props & {
142
+ id: string;
143
+ };
144
+ type DefaultRootProps = {
145
+ title?: string;
146
+ [key: string]: any;
147
+ };
148
+ type DefaultComponentProps = {
149
+ [key: string]: any;
150
+ editMode?: boolean;
151
+ };
152
+ type Content<Props extends {
153
+ [key: string]: any;
154
+ } = {
155
+ [key: string]: any;
156
+ }> = ComponentData<Props>[];
157
+ type PuckComponent<Props> = (props: WithPuckProps<Props & {
158
+ puck: PuckContext;
159
+ }>) => JSX.Element;
160
+ type PuckContext = {
161
+ renderDropZone: React.FC<DropZoneProps>;
162
+ isEditing: boolean;
163
+ };
164
+ type ComponentConfig<ComponentProps extends DefaultComponentProps = DefaultComponentProps, DefaultProps = ComponentProps, DataShape = Omit<ComponentData<ComponentProps>, "type">> = {
165
+ render: PuckComponent<ComponentProps>;
166
+ label?: string;
167
+ defaultProps?: DefaultProps;
168
+ fields?: Fields<ComponentProps>;
169
+ permissions?: Partial<Permissions>;
170
+ resolveFields?: (data: DataShape, params: {
171
+ changed: Partial<Record<keyof ComponentProps, boolean>>;
172
+ fields: Fields<ComponentProps>;
173
+ lastFields: Fields<ComponentProps>;
174
+ lastData: DataShape;
175
+ appState: AppState;
176
+ }) => Promise<Fields<ComponentProps>> | Fields<ComponentProps>;
177
+ resolveData?: (data: DataShape, params: {
178
+ changed: Partial<Record<keyof ComponentProps, boolean>>;
179
+ lastData: DataShape;
180
+ }) => Promise<{
181
+ props?: Partial<ComponentProps>;
182
+ readOnly?: Partial<Record<keyof ComponentProps, boolean>>;
183
+ }> | {
184
+ props?: Partial<ComponentProps>;
185
+ readOnly?: Partial<Record<keyof ComponentProps, boolean>>;
186
+ };
187
+ resolvePermissions?: (data: DataShape, params: {
188
+ changed: Partial<Record<keyof ComponentProps, boolean>>;
189
+ lastPermissions: Partial<Permissions> | undefined;
190
+ initialPermissions: Partial<Permissions>;
191
+ appState: AppState;
192
+ }) => Partial<Permissions>;
193
+ };
194
+ type Category<ComponentName> = {
195
+ components?: ComponentName[];
196
+ title?: string;
197
+ visible?: boolean;
198
+ defaultExpanded?: boolean;
199
+ };
200
+ type Config<Props extends Record<string, any> = Record<string, any>, RootProps extends DefaultRootProps = DefaultRootProps, CategoryName extends string = string> = {
201
+ categories?: Record<CategoryName, Category<keyof Props>> & {
202
+ other?: Category<keyof Props>;
203
+ };
204
+ components: {
205
+ [ComponentName in keyof Props]: Omit<ComponentConfig<Props[ComponentName], Props[ComponentName]>, "type">;
206
+ };
207
+ root?: Partial<ComponentConfig<RootProps & {
208
+ children?: ReactNode;
209
+ }, Partial<RootProps & {
210
+ children?: ReactNode;
211
+ }>, RootData>>;
212
+ };
213
+ type BaseData<Props extends {
214
+ [key: string]: any;
215
+ } = {
216
+ [key: string]: any;
217
+ }> = {
218
+ readOnly?: Partial<Record<keyof Props, boolean>>;
219
+ };
220
+ type ComponentData<Props extends DefaultComponentProps = DefaultComponentProps> = {
221
+ type: keyof Props;
222
+ props: WithPuckProps<Props>;
223
+ } & BaseData<Props>;
224
+ type RootDataWithProps<Props extends DefaultRootProps = DefaultRootProps> = BaseData<Props> & {
225
+ props: Props;
226
+ };
227
+ type RootDataWithoutProps<Props extends DefaultRootProps = DefaultRootProps> = Props;
228
+ type RootData<Props extends DefaultRootProps = DefaultRootProps> = Partial<RootDataWithProps<Props>> & Partial<RootDataWithoutProps<Props>>;
229
+ type MappedItem = ComponentData;
230
+ type Data<Props extends DefaultComponentProps = DefaultComponentProps, RootProps extends DefaultRootProps = DefaultRootProps> = {
231
+ root: RootData<RootProps>;
232
+ content: Content<WithPuckProps<Props>>;
233
+ zones?: Record<string, Content<WithPuckProps<Props>>>;
234
+ };
235
+ type ItemWithId = {
236
+ _arrayId: string;
237
+ _originalIndex: number;
238
+ };
239
+ type ArrayState = {
240
+ items: ItemWithId[];
241
+ openId: string;
242
+ };
243
+ type UiState = {
244
+ leftSideBarVisible: boolean;
245
+ rightSideBarVisible: boolean;
246
+ itemSelector: ItemSelector | null;
247
+ arrayState: Record<string, ArrayState | undefined>;
248
+ componentList: Record<string, {
249
+ components?: string[];
250
+ title?: string;
251
+ visible?: boolean;
252
+ expanded?: boolean;
253
+ }>;
254
+ isDragging: boolean;
255
+ viewports: {
256
+ current: {
257
+ width: number;
258
+ height: number | "auto";
259
+ };
260
+ controlsVisible: boolean;
261
+ options: Viewport[];
262
+ };
263
+ };
264
+ type AppState = {
265
+ data: Data;
266
+ ui: UiState;
267
+ };
268
+ type Permissions = {
269
+ drag: boolean;
270
+ duplicate: boolean;
271
+ delete: boolean;
272
+ edit: boolean;
273
+ insert: boolean;
274
+ } & Record<string, boolean>;
275
+
276
+ export type { AppState as A, BaseData as B, Config as C, Data as D, ExternalFieldWithAdaptor as E, Field as F, ItemSelector as I, MappedItem as M, NumberField as N, ObjectField as O, Permissions as P, RootData as R, SelectField as S, TextField as T, UiState as U, Viewports as V, FieldProps as a, DropZoneProps as b, DefaultComponentProps as c, DefaultRootProps as d, RootDataWithProps as e, ComponentData as f, Content as g, PuckComponent as h, PuckContext as i, ComponentConfig as j, RootDataWithoutProps as k, ItemWithId as l, ArrayState as m, BaseField as n, TextareaField as o, RadioField as p, ArrayField as q, Adaptor as r, ExternalField as s, CustomField as t, Fields as u };
@@ -0,0 +1,113 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
+ var __spreadValues = (a, b) => {
13
+ for (var prop in b || (b = {}))
14
+ if (__hasOwnProp.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ if (__getOwnPropSymbols)
17
+ for (var prop of __getOwnPropSymbols(b)) {
18
+ if (__propIsEnum.call(b, prop))
19
+ __defNormalProp(a, prop, b[prop]);
20
+ }
21
+ return a;
22
+ };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
+ var __objRest = (source, exclude) => {
25
+ var target = {};
26
+ for (var prop in source)
27
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
28
+ target[prop] = source[prop];
29
+ if (source != null && __getOwnPropSymbols)
30
+ for (var prop of __getOwnPropSymbols(source)) {
31
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
32
+ target[prop] = source[prop];
33
+ }
34
+ return target;
35
+ };
36
+ var __esm = (fn, res) => function __init() {
37
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
38
+ };
39
+ var __commonJS = (cb, mod) => function __require() {
40
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
41
+ };
42
+ var __copyProps = (to, from, except, desc) => {
43
+ if (from && typeof from === "object" || typeof from === "function") {
44
+ for (let key of __getOwnPropNames(from))
45
+ if (!__hasOwnProp.call(to, key) && key !== except)
46
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
47
+ }
48
+ return to;
49
+ };
50
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
51
+ // If the importer is in node compatibility mode or this is not an ESM
52
+ // file that has been converted to a CommonJS file using a Babel-
53
+ // compatible transform (i.e. "__esModule" has not been set), then set
54
+ // "default" to the CommonJS "module.exports" for node compatibility.
55
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
56
+ mod
57
+ ));
58
+ var __async = (__this, __arguments, generator) => {
59
+ return new Promise((resolve, reject) => {
60
+ var fulfilled = (value) => {
61
+ try {
62
+ step(generator.next(value));
63
+ } catch (e) {
64
+ reject(e);
65
+ }
66
+ };
67
+ var rejected = (value) => {
68
+ try {
69
+ step(generator.throw(value));
70
+ } catch (e) {
71
+ reject(e);
72
+ }
73
+ };
74
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
75
+ step((generator = generator.apply(__this, __arguments)).next());
76
+ });
77
+ };
78
+
79
+ // ../tsup-config/react-import.js
80
+ import React from "react";
81
+ var init_react_import = __esm({
82
+ "../tsup-config/react-import.js"() {
83
+ "use strict";
84
+ }
85
+ });
86
+
87
+ // lib/root-droppable-id.ts
88
+ init_react_import();
89
+ var rootDroppableId = "default-zone";
90
+
91
+ // lib/setup-zone.ts
92
+ init_react_import();
93
+ var setupZone = (data, zoneKey) => {
94
+ if (zoneKey === rootDroppableId) {
95
+ return data;
96
+ }
97
+ const newData = __spreadValues({}, data);
98
+ newData.zones = data.zones || {};
99
+ newData.zones[zoneKey] = newData.zones[zoneKey] || [];
100
+ return newData;
101
+ };
102
+
103
+ export {
104
+ __spreadValues,
105
+ __spreadProps,
106
+ __objRest,
107
+ __commonJS,
108
+ __toESM,
109
+ __async,
110
+ init_react_import,
111
+ rootDroppableId,
112
+ setupZone
113
+ };
package/dist/index.css CHANGED
@@ -137,7 +137,7 @@
137
137
  /* styles.css */
138
138
 
139
139
  /* css-module:/home/runner/work/puck/puck/packages/core/components/ActionBar/styles.module.css/#css-module-data */
140
- ._ActionBarComponent_16pc9_1 {
140
+ ._ActionBarComponent_8nyey_1 {
141
141
  display: flex;
142
142
  width: auto;
143
143
  padding: 4px;
@@ -148,8 +148,9 @@
148
148
  color: var(--puck-color-white);
149
149
  font-family: var(--puck-font-family);
150
150
  gap: 4px;
151
+ min-height: 26px;
151
152
  }
152
- ._ActionBarComponent-actionsLabel_16pc9_14 {
153
+ ._ActionBarComponent-actionsLabel_8nyey_15 {
153
154
  color: var(--puck-color-grey-08);
154
155
  display: flex;
155
156
  font-size: var(--puck-font-size-xxxs);
@@ -157,13 +158,16 @@
157
158
  justify-content: center;
158
159
  align-items: center;
159
160
  padding-left: 8px;
160
- padding-right: 16px;
161
- margin-right: 8px;
162
- border-right: 0.5px solid var(--puck-color-grey-05);
161
+ padding-right: 8px;
163
162
  text-overflow: ellipsis;
164
163
  white-space: nowrap;
165
164
  }
166
- ._ActionBarComponent-action_16pc9_14 {
165
+ ._ActionBarComponent-action_8nyey_15:first-of-type {
166
+ border-left: 0.5px solid var(--puck-color-grey-05);
167
+ border-radius: 0;
168
+ padding-left: 16px;
169
+ }
170
+ ._ActionBarComponent-action_8nyey_15 {
167
171
  background: transparent;
168
172
  border: none;
169
173
  color: var(--puck-color-grey-08);
@@ -176,17 +180,17 @@
176
180
  justify-content: center;
177
181
  transition: color 50ms ease-in;
178
182
  }
179
- ._ActionBarComponent-action_16pc9_14:focus-visible {
183
+ ._ActionBarComponent-action_8nyey_15:focus-visible {
180
184
  outline: 2px solid var(--puck-color-azure-05);
181
185
  outline-offset: -2px;
182
186
  }
183
187
  @media (hover: hover) and (pointer: fine) {
184
- ._ActionBarComponent-action_16pc9_14:hover {
188
+ ._ActionBarComponent-action_8nyey_15:hover {
185
189
  color: var(--puck-color-azure-06);
186
190
  transition: none;
187
191
  }
188
192
  }
189
- ._ActionBarComponent-action_16pc9_14:active {
193
+ ._ActionBarComponent-action_8nyey_15:active {
190
194
  color: var(--puck-color-azure-07);
191
195
  transition: none;
192
196
  }
@@ -578,14 +582,17 @@ textarea._Input-input_3pq3z_47 {
578
582
  }
579
583
 
580
584
  /* css-module:/home/runner/work/puck/puck/packages/core/components/DragIcon/styles.module.css/#css-module-data */
581
- ._DragIcon_1p5wn_1 {
585
+ ._DragIcon_17p8x_1 {
582
586
  color: var(--puck-color-grey-05);
583
587
  cursor: grab;
584
588
  padding: 4px;
585
589
  border-radius: 4px;
586
590
  }
591
+ ._DragIcon--disabled_17p8x_8 {
592
+ cursor: no-drop;
593
+ }
587
594
  @media (hover: hover) and (pointer: fine) {
588
- ._DragIcon_1p5wn_1:hover {
595
+ ._DragIcon_17p8x_1:not(._DragIcon--disabled_17p8x_8):hover {
589
596
  color: var(--puck-color-azure-05);
590
597
  background-color: var(--puck-color-azure-12);
591
598
  }
@@ -1044,16 +1051,21 @@ textarea._Input-input_3pq3z_47 {
1044
1051
  }
1045
1052
 
1046
1053
  /* css-module:/home/runner/work/puck/puck/packages/core/components/Drawer/styles.module.css/#css-module-data */
1047
- ._Drawer_6zh0b_1 {
1054
+ ._Drawer_4yfqn_1 {
1048
1055
  font-family: var(--puck-font-family);
1049
1056
  }
1050
- ._DrawerItem-default_6zh0b_5 ._DrawerItem-draggableWrapper_6zh0b_5 {
1057
+ ._DrawerItem--disabled_4yfqn_5 {
1058
+ background: var(--puck-color-grey-11);
1059
+ color: var(--puck-color-grey-05);
1060
+ cursor: not-allowed;
1061
+ }
1062
+ ._DrawerItem-default_4yfqn_11 ._DrawerItem-draggableWrapper_4yfqn_11 {
1051
1063
  padding-bottom: 12px;
1052
1064
  }
1053
- ._DrawerItem_6zh0b_5:last-of-type ._DrawerItem-default_6zh0b_5 ._DrawerItem-draggableWrapper_6zh0b_5 {
1065
+ ._DrawerItem_4yfqn_5:last-of-type ._DrawerItem-default_4yfqn_11 ._DrawerItem-draggableWrapper_4yfqn_11 {
1054
1066
  padding-bottom: 0;
1055
1067
  }
1056
- ._DrawerItem-draggable_6zh0b_5 {
1068
+ ._DrawerItem-draggable_4yfqn_11 {
1057
1069
  background: var(--puck-color-white);
1058
1070
  padding: 12px;
1059
1071
  display: flex;
@@ -1062,25 +1074,24 @@ textarea._Input-input_3pq3z_47 {
1062
1074
  font-size: var(--puck-font-size-xxs);
1063
1075
  justify-content: space-between;
1064
1076
  align-items: center;
1065
- cursor: grab;
1066
1077
  transition: background-color 50ms ease-in, color 50ms ease-in;
1067
1078
  }
1068
- ._DrawerItem_6zh0b_5:focus-visible {
1079
+ ._DrawerItem_4yfqn_5:focus-visible {
1069
1080
  outline: 0;
1070
1081
  }
1071
- ._Drawer_6zh0b_1:not(._Drawer--isDraggingFrom_6zh0b_31) ._DrawerItem_6zh0b_5:focus-visible ._DrawerItem-draggable_6zh0b_5 {
1082
+ ._Drawer_4yfqn_1:not(._Drawer--isDraggingFrom_4yfqn_36) ._DrawerItem_4yfqn_5:focus-visible ._DrawerItem-draggable_4yfqn_11 {
1072
1083
  border-radius: 4px;
1073
1084
  outline: 2px solid var(--puck-color-azure-05);
1074
1085
  outline-offset: 2px;
1075
1086
  }
1076
1087
  @media (hover: hover) and (pointer: fine) {
1077
- ._Drawer_6zh0b_1:not(._Drawer--isDraggingFrom_6zh0b_31) ._DrawerItem-draggable_6zh0b_5:hover {
1088
+ ._Drawer_4yfqn_1:not(._Drawer--isDraggingFrom_4yfqn_36) ._DrawerItem_4yfqn_5:not(._DrawerItem--disabled_4yfqn_5) ._DrawerItem-draggable_4yfqn_11:hover {
1078
1089
  background-color: var(--puck-color-azure-12);
1079
1090
  color: var(--puck-color-azure-04);
1080
1091
  transition: none;
1081
1092
  }
1082
1093
  }
1083
- ._DrawerItem-name_6zh0b_47 {
1094
+ ._DrawerItem-name_4yfqn_54 {
1084
1095
  overflow-x: hidden;
1085
1096
  text-overflow: ellipsis;
1086
1097
  white-space: nowrap;