draggable-dashboard-lete-pro 1.5.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.
@@ -0,0 +1,160 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
7
+ import React, { useState } from 'react';
8
+ import { TileType } from '../types';
9
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ export var AddTileModal = function AddTileModal(_ref) {
11
+ var isOpen = _ref.isOpen,
12
+ onClose = _ref.onClose,
13
+ onAdd = _ref.onAdd;
14
+ var _useState = useState(''),
15
+ _useState2 = _slicedToArray(_useState, 2),
16
+ title = _useState2[0],
17
+ setTitle = _useState2[1];
18
+ var _useState3 = useState(TileType.NUMBER),
19
+ _useState4 = _slicedToArray(_useState3, 2),
20
+ type = _useState4[0],
21
+ setType = _useState4[1];
22
+ if (!isOpen) return null;
23
+ var handleAdd = function handleAdd() {
24
+ var newTile = {
25
+ id: "tile-".concat(Date.now()),
26
+ title: title || "New ".concat(type),
27
+ type: type,
28
+ x: 0,
29
+ y: 0,
30
+ w: type === TileType.NUMBER ? 4 : 6,
31
+ h: type === TileType.NUMBER ? 4 : 6,
32
+ numberValue: type === TileType.NUMBER ? 1200 : undefined,
33
+ textValue: type === TileType.TEXT ? 'New workspace memo...' : undefined
34
+ };
35
+ onAdd(newTile);
36
+ onClose();
37
+ setTitle('');
38
+ };
39
+ var widgetOptions = [{
40
+ label: 'Number',
41
+ type: TileType.NUMBER
42
+ }, {
43
+ label: 'Table',
44
+ type: TileType.TABLE
45
+ }, {
46
+ label: 'Chart',
47
+ type: TileType.CHART
48
+ }, {
49
+ label: 'Image',
50
+ type: TileType.IMAGE
51
+ }, {
52
+ label: 'Text',
53
+ type: TileType.TEXT
54
+ }, {
55
+ label: 'Recent',
56
+ type: TileType.RECENT
57
+ }, {
58
+ label: 'Docs',
59
+ type: TileType.DOCS
60
+ }, {
61
+ label: 'Folders',
62
+ type: TileType.FOLDERS
63
+ }, {
64
+ label: 'Custom',
65
+ type: TileType.CUSTOM
66
+ }];
67
+ return /*#__PURE__*/_jsx("div", {
68
+ className: "fixed inset-0 z-[100] flex items-center justify-center p-4 bg-slate-900/60 backdrop-blur-sm animate-in fade-in duration-200",
69
+ children: /*#__PURE__*/_jsxs("div", {
70
+ className: "bg-white dark:bg-slate-800 rounded-2xl shadow-2xl w-full max-w-lg overflow-hidden scale-100 zoom-in-95 animate-out fade-out zoom-out-95",
71
+ children: [/*#__PURE__*/_jsxs("div", {
72
+ className: "p-6 border-b border-slate-100 dark:border-slate-700 flex justify-between items-center bg-slate-50/50 dark:bg-slate-800",
73
+ children: [/*#__PURE__*/_jsxs("div", {
74
+ className: "flex flex-col",
75
+ children: [/*#__PURE__*/_jsx("h2", {
76
+ className: "text-xl font-bold text-slate-800 dark:text-white leading-tight",
77
+ children: "Add New Widget"
78
+ }), /*#__PURE__*/_jsx("p", {
79
+ className: "text-xs text-slate-500 dark:text-slate-400",
80
+ children: "Choose a widget to customize your workspace."
81
+ })]
82
+ }), /*#__PURE__*/_jsx("button", {
83
+ onClick: onClose,
84
+ className: "p-1 text-slate-400 hover:text-slate-600 dark:hover:text-slate-200 transition-colors",
85
+ children: /*#__PURE__*/_jsx("svg", {
86
+ className: "w-6 h-6",
87
+ fill: "none",
88
+ stroke: "currentColor",
89
+ viewBox: "0 0 24 24",
90
+ children: /*#__PURE__*/_jsx("path", {
91
+ strokeLinecap: "round",
92
+ strokeLinejoin: "round",
93
+ strokeWidth: 2,
94
+ d: "M6 18L18 6M6 6l12 12"
95
+ })
96
+ })
97
+ })]
98
+ }), /*#__PURE__*/_jsxs("div", {
99
+ className: "p-6 space-y-6",
100
+ children: [/*#__PURE__*/_jsxs("div", {
101
+ className: "space-y-1.5",
102
+ children: [/*#__PURE__*/_jsx("label", {
103
+ className: "block text-[10px] font-bold text-slate-400 uppercase tracking-widest",
104
+ children: "Widget Name"
105
+ }), /*#__PURE__*/_jsx("input", {
106
+ type: "text",
107
+ value: title,
108
+ onChange: function onChange(e) {
109
+ return setTitle(e.target.value);
110
+ },
111
+ placeholder: "e.g. Q4 Growth Roadmap",
112
+ className: "w-full px-4 py-3 bg-slate-50 dark:bg-slate-900 border border-slate-200 dark:border-slate-700 rounded-lg focus:ring-2 focus:ring-indigo-500 outline-none dark:text-white transition-all"
113
+ })]
114
+ }), /*#__PURE__*/_jsxs("div", {
115
+ className: "space-y-1.5",
116
+ children: [/*#__PURE__*/_jsx("label", {
117
+ className: "block text-[10px] font-bold text-slate-400 uppercase tracking-widest",
118
+ children: "Select Widget Type"
119
+ }), /*#__PURE__*/_jsx("div", {
120
+ className: "grid grid-cols-2 sm:grid-cols-4 gap-2",
121
+ children: widgetOptions.map(function (opt) {
122
+ return /*#__PURE__*/_jsxs("button", {
123
+ onClick: function onClick() {
124
+ return setType(opt.type);
125
+ },
126
+ className: "px-3 py-4 rounded-xl text-xs font-bold transition-all flex flex-col items-center gap-2 border-2 ".concat(type === opt.type ? 'bg-indigo-50 border-indigo-500 text-indigo-600 dark:bg-indigo-900/20 dark:border-indigo-500' : 'bg-white dark:bg-slate-900 border-slate-100 dark:border-slate-700 text-slate-500 dark:text-slate-400 hover:border-slate-300'),
127
+ children: [/*#__PURE__*/_jsx("div", {
128
+ className: "p-2 rounded-lg ".concat(type === opt.type ? 'bg-indigo-600 text-white' : 'bg-slate-100 dark:bg-slate-800'),
129
+ children: /*#__PURE__*/_jsx("svg", {
130
+ className: "w-4 h-4",
131
+ fill: "none",
132
+ stroke: "currentColor",
133
+ viewBox: "0 0 24 24",
134
+ children: /*#__PURE__*/_jsx("path", {
135
+ strokeLinecap: "round",
136
+ strokeLinejoin: "round",
137
+ strokeWidth: 2,
138
+ d: "M12 6v6m0 0v6m0-6h6m-6 0H6"
139
+ })
140
+ })
141
+ }), opt.label]
142
+ }, opt.type);
143
+ })
144
+ })]
145
+ })]
146
+ }), /*#__PURE__*/_jsxs("div", {
147
+ className: "p-6 bg-slate-50 dark:bg-slate-900 flex justify-end gap-3",
148
+ children: [/*#__PURE__*/_jsx("button", {
149
+ onClick: onClose,
150
+ className: "px-6 py-2.5 text-xs font-bold text-slate-600 dark:text-slate-400 hover:bg-slate-100 dark:hover:bg-slate-800 rounded-lg transition-colors",
151
+ children: "CANCEL"
152
+ }), /*#__PURE__*/_jsx("button", {
153
+ onClick: handleAdd,
154
+ className: "px-6 py-2.5 text-xs font-bold bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 shadow-lg shadow-indigo-500/20 transition-all",
155
+ children: "CREATE WIDGET"
156
+ })]
157
+ })]
158
+ })
159
+ });
160
+ };
@@ -0,0 +1,159 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _excluded = ["tile", "cellSize", "editMode", "onDragStart", "onResizeStart", "onDelete", "onMaximize", "isDragging", "isResizing"];
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
9
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
10
+ import React from 'react';
11
+ import { GRID_GAP } from '../constants';
12
+ import { TileContent } from './TileContent';
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ export var DashboardTile = function DashboardTile(_ref) {
15
+ var tile = _ref.tile,
16
+ cellSize = _ref.cellSize,
17
+ editMode = _ref.editMode,
18
+ onDragStart = _ref.onDragStart,
19
+ onResizeStart = _ref.onResizeStart,
20
+ onDelete = _ref.onDelete,
21
+ onMaximize = _ref.onMaximize,
22
+ isDragging = _ref.isDragging,
23
+ isResizing = _ref.isResizing,
24
+ rest = _objectWithoutProperties(_ref, _excluded);
25
+ var x = tile.x,
26
+ y = tile.y,
27
+ w = tile.w,
28
+ h = tile.h;
29
+ var left = x * (cellSize + GRID_GAP);
30
+ var top = y * (cellSize + GRID_GAP);
31
+ var width = w * cellSize + (w - 1) * GRID_GAP;
32
+ var height = h * cellSize + (h - 1) * GRID_GAP;
33
+ return /*#__PURE__*/_jsxs("div", {
34
+ className: "absolute tile-transition bg-white dark:bg-slate-800 rounded-2xl shadow-sm border border-slate-200 dark:border-slate-700 flex flex-col group overflow-hidden ".concat(isDragging ? 'dragging ring-4 ring-indigo-500/20' : '', " ").concat(isResizing ? 'resizing' : '', " ").concat(editMode ? 'hover:border-indigo-300 dark:hover:border-indigo-800' : ''),
35
+ style: {
36
+ left: left,
37
+ top: top,
38
+ width: width,
39
+ height: height
40
+ },
41
+ children: [/*#__PURE__*/_jsxs("div", {
42
+ className: "px-4 py-2.5 flex items-center justify-between border-b border-slate-100 dark:border-slate-700/50 select-none bg-white dark:bg-slate-800 transition-colors ".concat(isDragging ? 'bg-indigo-50 dark:bg-indigo-900/10' : ''),
43
+ children: [/*#__PURE__*/_jsxs("div", {
44
+ className: "flex items-center gap-2 overflow-hidden flex-1",
45
+ children: [editMode && /*#__PURE__*/_jsx("div", {
46
+ onPointerDown: function onPointerDown(e) {
47
+ return onDragStart(e, tile.id);
48
+ },
49
+ className: "p-1.5 hover:bg-indigo-600 hover:text-white dark:hover:bg-indigo-600 rounded-lg cursor-move text-slate-400 shrink-0 transition-all active:scale-95 shadow-sm bg-slate-50 dark:bg-slate-900 border border-slate-100 dark:border-slate-700",
50
+ title: "Drag to move",
51
+ children: /*#__PURE__*/_jsxs("svg", {
52
+ className: "w-4 h-4",
53
+ viewBox: "0 0 24 24",
54
+ fill: "none",
55
+ stroke: "currentColor",
56
+ strokeWidth: "3",
57
+ children: [/*#__PURE__*/_jsx("circle", {
58
+ cx: "9",
59
+ cy: "5",
60
+ r: "1"
61
+ }), /*#__PURE__*/_jsx("circle", {
62
+ cx: "9",
63
+ cy: "12",
64
+ r: "1"
65
+ }), /*#__PURE__*/_jsx("circle", {
66
+ cx: "9",
67
+ cy: "19",
68
+ r: "1"
69
+ }), /*#__PURE__*/_jsx("circle", {
70
+ cx: "15",
71
+ cy: "5",
72
+ r: "1"
73
+ }), /*#__PURE__*/_jsx("circle", {
74
+ cx: "15",
75
+ cy: "12",
76
+ r: "1"
77
+ }), /*#__PURE__*/_jsx("circle", {
78
+ cx: "15",
79
+ cy: "19",
80
+ r: "1"
81
+ })]
82
+ })
83
+ }), /*#__PURE__*/_jsx("div", {
84
+ className: "flex flex-col truncate",
85
+ children: /*#__PURE__*/_jsxs("div", {
86
+ className: "flex items-center gap-1.5",
87
+ children: [/*#__PURE__*/_jsx("span", {
88
+ className: "text-[9px] text-slate-400 font-black uppercase tracking-widest hidden sm:inline",
89
+ children: "TILE"
90
+ }), /*#__PURE__*/_jsx("svg", {
91
+ className: "w-2.5 h-2.5 text-slate-300",
92
+ fill: "none",
93
+ stroke: "currentColor",
94
+ viewBox: "0 0 24 24",
95
+ children: /*#__PURE__*/_jsx("path", {
96
+ d: "M9 5l7 7-7 7",
97
+ strokeWidth: 3
98
+ })
99
+ }), /*#__PURE__*/_jsx("h3", {
100
+ className: "text-[11px] font-bold text-slate-700 dark:text-slate-200 truncate uppercase tracking-tight",
101
+ children: tile.title
102
+ })]
103
+ })
104
+ })]
105
+ }), /*#__PURE__*/_jsxs("div", {
106
+ className: "flex items-center gap-1.5",
107
+ children: [/*#__PURE__*/_jsx("button", {
108
+ onClick: function onClick() {
109
+ return onMaximize(tile.id);
110
+ },
111
+ className: "p-1.5 text-slate-400 hover:text-indigo-600 dark:hover:text-indigo-400 hover:bg-indigo-50 dark:hover:bg-indigo-900/20 rounded-lg transition-all",
112
+ title: "Maximize View",
113
+ children: /*#__PURE__*/_jsx("svg", {
114
+ className: "w-4 h-4",
115
+ fill: "none",
116
+ stroke: "currentColor",
117
+ viewBox: "0 0 24 24",
118
+ strokeWidth: 2.5,
119
+ children: /*#__PURE__*/_jsx("path", {
120
+ strokeLinecap: "round",
121
+ strokeLinejoin: "round",
122
+ d: "M15 3h6m0 0v6m0-6L14 10M9 21H3m0 0v-6m0 6l7-7"
123
+ })
124
+ })
125
+ }), editMode && /*#__PURE__*/_jsx("button", {
126
+ onClick: function onClick() {
127
+ return onDelete(tile.id);
128
+ },
129
+ className: "p-1.5 text-slate-400 hover:text-red-500 hover:bg-red-50 dark:hover:bg-red-900/20 rounded-lg transition-all",
130
+ title: "Remove widget",
131
+ children: /*#__PURE__*/_jsx("svg", {
132
+ className: "w-4 h-4",
133
+ fill: "none",
134
+ stroke: "currentColor",
135
+ viewBox: "0 0 24 24",
136
+ strokeWidth: 2.5,
137
+ children: /*#__PURE__*/_jsx("path", {
138
+ d: "M6 18L18 6M6 6l12 12"
139
+ })
140
+ })
141
+ })]
142
+ })]
143
+ }), /*#__PURE__*/_jsx("div", {
144
+ className: "flex-1 p-5 overflow-auto scrollbar-hide bg-white dark:bg-slate-800",
145
+ children: /*#__PURE__*/_jsx(TileContent, _objectSpread({
146
+ tile: tile,
147
+ editMode: editMode
148
+ }, rest))
149
+ }), editMode && /*#__PURE__*/_jsx("div", {
150
+ className: "absolute bottom-0 right-0 w-6 h-6 cursor-nwse-resize flex items-end justify-end p-1 z-10",
151
+ onPointerDown: function onPointerDown(e) {
152
+ return onResizeStart(e, tile.id);
153
+ },
154
+ children: /*#__PURE__*/_jsx("div", {
155
+ className: "w-3 h-3 border-r-4 border-b-4 border-slate-200 dark:border-slate-700 rounded-br-md group-hover:border-indigo-400 transition-colors"
156
+ })
157
+ })]
158
+ });
159
+ };