@app-studio/web 0.9.34 → 0.9.36
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.
- package/dist/components/Calendar/Calendar/Calendar.style.d.ts +4 -0
- package/dist/components/OKR/OKR/OKR.props.d.ts +72 -0
- package/dist/components/OKR/OKR/OKR.style.d.ts +19 -0
- package/dist/components/OKR/OKR/OKR.view.d.ts +4 -0
- package/dist/components/OKR/OKR.d.ts +4 -0
- package/dist/components/index.d.ts +4 -3
- package/dist/pages/okr.page.d.ts +3 -0
- package/dist/web.cjs.development.js +595 -760
- package/dist/web.cjs.development.js.map +1 -1
- package/dist/web.cjs.production.min.js +1 -1
- package/dist/web.cjs.production.min.js.map +1 -1
- package/dist/web.esm.js +595 -760
- package/dist/web.esm.js.map +1 -1
- package/dist/web.umd.development.js +598 -762
- package/dist/web.umd.development.js.map +1 -1
- package/dist/web.umd.production.min.js +1 -1
- package/dist/web.umd.production.min.js.map +1 -1
- package/docs/README.md +2 -1
- package/docs/components/Calendar.mdx +22 -110
- package/docs/components/Flow.mdx +1 -0
- package/docs/components/KanbanBoard.mdx +156 -0
- package/docs/components/OKR.mdx +475 -0
- package/docs/components/Title.mdx +1 -0
- package/docs/components/Tree.mdx +1 -0
- package/docs/components.md +178 -0
- package/package.json +1 -1
- package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.props.d.ts +0 -51
- package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.style.d.ts +0 -90
- package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.utils.d.ts +0 -51
- package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.view.d.ts +0 -3
- package/dist/components/CalendarWeek/CalendarWeek.d.ts +0 -1
- package/docs/api-reference/README.md +0 -103
- package/docs/api-reference/data-display/flow.md +0 -220
- package/docs/api-reference/data-display/tree.md +0 -210
- package/docs/api-reference/form/chat-input.md +0 -206
- package/docs/api-reference/utility/button.md +0 -145
- package/docs/api-reference/utility/title.md +0 -301
|
@@ -38,9 +38,8 @@ var contrast = _interopDefault(require('contrast'));
|
|
|
38
38
|
require('core-js/modules/es.promise.js');
|
|
39
39
|
require('core-js/modules/es.array.reduce.js');
|
|
40
40
|
require('core-js/modules/es.number.to-fixed.js');
|
|
41
|
-
require('core-js/modules/es.string.pad-start.js');
|
|
42
41
|
require('core-js/modules/es.array.sort.js');
|
|
43
|
-
|
|
42
|
+
require('core-js/modules/es.string.pad-start.js');
|
|
44
43
|
var format = _interopDefault(require('date-fns/format'));
|
|
45
44
|
require('core-js/modules/es.regexp.constructor.js');
|
|
46
45
|
var formik = require('formik');
|
|
@@ -7844,7 +7843,6 @@ var KanbanBoardView = _ref => {
|
|
|
7844
7843
|
borderRadius: 10,
|
|
7845
7844
|
padding: "12px",
|
|
7846
7845
|
boxShadow: "0 1px 2px 0 rgba(16, 24, 40, 0.08)",
|
|
7847
|
-
opacity: draggedCardId === card.id ? 0.6 : 1,
|
|
7848
7846
|
onDragStart: event => onCardDragStart(column.id, card.id, event),
|
|
7849
7847
|
onDragEnd: onCardDragEnd,
|
|
7850
7848
|
onDragOver: event => {
|
|
@@ -8117,8 +8115,8 @@ var monthTitleStyles = {
|
|
|
8117
8115
|
* Month grid styles (7 columns for days)
|
|
8118
8116
|
*/
|
|
8119
8117
|
var monthGridStyles = {
|
|
8120
|
-
display: '
|
|
8121
|
-
|
|
8118
|
+
display: 'flex',
|
|
8119
|
+
flexDirection: 'column',
|
|
8122
8120
|
backgroundColor: 'color.white'
|
|
8123
8121
|
};
|
|
8124
8122
|
/**
|
|
@@ -8148,15 +8146,32 @@ var weekdayLabelStyles = {
|
|
|
8148
8146
|
*/
|
|
8149
8147
|
var dayCellStyles = {
|
|
8150
8148
|
border: '1px solid',
|
|
8151
|
-
borderColor: 'color.gray.
|
|
8152
|
-
minHeight:
|
|
8153
|
-
padding:
|
|
8154
|
-
paddingTop:
|
|
8149
|
+
borderColor: 'color.gray.100',
|
|
8150
|
+
minHeight: 120,
|
|
8151
|
+
padding: 4,
|
|
8152
|
+
paddingTop: 2,
|
|
8155
8153
|
backgroundColor: 'color.white',
|
|
8156
8154
|
position: 'relative',
|
|
8157
8155
|
display: 'flex',
|
|
8158
8156
|
flexDirection: 'column'
|
|
8159
8157
|
};
|
|
8158
|
+
/**
|
|
8159
|
+
* Day date styles (the circular number)
|
|
8160
|
+
*/
|
|
8161
|
+
var dayDateStyles = {
|
|
8162
|
+
width: 36,
|
|
8163
|
+
height: 36,
|
|
8164
|
+
display: 'flex',
|
|
8165
|
+
alignItems: 'center',
|
|
8166
|
+
justifyContent: 'center',
|
|
8167
|
+
borderRadius: '50%',
|
|
8168
|
+
fontSize: 13,
|
|
8169
|
+
fontWeight: 400,
|
|
8170
|
+
color: 'color.gray.900',
|
|
8171
|
+
cursor: 'pointer',
|
|
8172
|
+
transition: 'all 0.2s',
|
|
8173
|
+
border: '2px solid transparent'
|
|
8174
|
+
};
|
|
8160
8175
|
/**
|
|
8161
8176
|
* Day cell from different month
|
|
8162
8177
|
*/
|
|
@@ -8291,6 +8306,9 @@ var ResizeHandle = _ref => {
|
|
|
8291
8306
|
onMouseLeave: () => setIsHovered(false)
|
|
8292
8307
|
}));
|
|
8293
8308
|
};
|
|
8309
|
+
var MONTH_EVENT_ROW_HEIGHT = 22;
|
|
8310
|
+
var MONTH_EVENT_ROW_GAP = 4;
|
|
8311
|
+
var MONTH_EVENT_TOP_OFFSET = 32;
|
|
8294
8312
|
var Calendar = _ref2 => {
|
|
8295
8313
|
var {
|
|
8296
8314
|
initialDate = new Date(),
|
|
@@ -8354,10 +8372,64 @@ var Calendar = _ref2 => {
|
|
|
8354
8372
|
return [currentDate];
|
|
8355
8373
|
}
|
|
8356
8374
|
}, [currentDate, currentView, currentMonth, weekStartsOn]);
|
|
8375
|
+
var monthWeeks = React.useMemo(() => {
|
|
8376
|
+
var chunks = [];
|
|
8377
|
+
for (var i = 0; i < calendarDates.length; i += 7) {
|
|
8378
|
+
chunks.push(calendarDates.slice(i, i + 7));
|
|
8379
|
+
}
|
|
8380
|
+
return chunks;
|
|
8381
|
+
}, [calendarDates]);
|
|
8357
8382
|
// Layout events
|
|
8358
8383
|
var {
|
|
8359
8384
|
items: positionedEvents
|
|
8360
8385
|
} = React.useMemo(() => layoutEvents(localEvents, calendarDates), [localEvents, calendarDates]);
|
|
8386
|
+
var monthWeeksWithEvents = React.useMemo(() => {
|
|
8387
|
+
return monthWeeks.map((dates, weekIndex) => {
|
|
8388
|
+
var weekStartIdx = weekIndex * 7;
|
|
8389
|
+
var weekEndIdx = weekStartIdx + dates.length - 1;
|
|
8390
|
+
var segments = positionedEvents.filter(event => !(event.startDay > weekEndIdx || event.endDay < weekStartIdx)).map(event => {
|
|
8391
|
+
var segmentStart = Math.max(event.startDay, weekStartIdx);
|
|
8392
|
+
var segmentEnd = Math.min(event.endDay, weekEndIdx);
|
|
8393
|
+
return Object.assign({}, event, {
|
|
8394
|
+
weekIndex,
|
|
8395
|
+
segmentStartDay: segmentStart - weekStartIdx,
|
|
8396
|
+
segmentEndDay: segmentEnd - weekStartIdx,
|
|
8397
|
+
segmentDuration: segmentEnd - segmentStart + 1,
|
|
8398
|
+
segmentRow: 0
|
|
8399
|
+
});
|
|
8400
|
+
});
|
|
8401
|
+
segments.sort((a, b) => {
|
|
8402
|
+
if (a.segmentStartDay !== b.segmentStartDay) {
|
|
8403
|
+
return a.segmentStartDay - b.segmentStartDay;
|
|
8404
|
+
}
|
|
8405
|
+
return b.segmentDuration - a.segmentDuration;
|
|
8406
|
+
});
|
|
8407
|
+
var rows = [];
|
|
8408
|
+
segments.forEach(segment => {
|
|
8409
|
+
var placed = false;
|
|
8410
|
+
for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
|
8411
|
+
var row = rows[rowIdx];
|
|
8412
|
+
var conflict = row.some(existing => !(segment.segmentStartDay > existing.segmentEndDay || segment.segmentEndDay < existing.segmentStartDay));
|
|
8413
|
+
if (!conflict) {
|
|
8414
|
+
segment.segmentRow = rowIdx;
|
|
8415
|
+
row.push(segment);
|
|
8416
|
+
placed = true;
|
|
8417
|
+
break;
|
|
8418
|
+
}
|
|
8419
|
+
}
|
|
8420
|
+
if (!placed) {
|
|
8421
|
+
segment.segmentRow = rows.length;
|
|
8422
|
+
rows.push([segment]);
|
|
8423
|
+
}
|
|
8424
|
+
});
|
|
8425
|
+
return {
|
|
8426
|
+
weekIndex,
|
|
8427
|
+
dates,
|
|
8428
|
+
segments,
|
|
8429
|
+
rowCount: rows.length
|
|
8430
|
+
};
|
|
8431
|
+
});
|
|
8432
|
+
}, [monthWeeks, positionedEvents]);
|
|
8361
8433
|
// Get day names
|
|
8362
8434
|
var dayNames = React.useMemo(() => getDayNames(weekStartsOn), [weekStartsOn]);
|
|
8363
8435
|
// Handle navigation
|
|
@@ -8417,10 +8489,9 @@ var Calendar = _ref2 => {
|
|
|
8417
8489
|
onEventAdd(start, end);
|
|
8418
8490
|
}
|
|
8419
8491
|
}, [onEventAdd]);
|
|
8420
|
-
// Handle event
|
|
8421
|
-
var
|
|
8422
|
-
e.
|
|
8423
|
-
e.dataTransfer.setData('eventId', event.id);
|
|
8492
|
+
// Handle mouse down on event (start dragging)
|
|
8493
|
+
var handleEventMouseDown = React.useCallback((e, event) => {
|
|
8494
|
+
e.preventDefault();
|
|
8424
8495
|
dragStateRef.current = {
|
|
8425
8496
|
isDragging: true,
|
|
8426
8497
|
isResizing: false,
|
|
@@ -8433,52 +8504,7 @@ var Calendar = _ref2 => {
|
|
|
8433
8504
|
originalEnd: event.end
|
|
8434
8505
|
};
|
|
8435
8506
|
}, []);
|
|
8436
|
-
// Handle
|
|
8437
|
-
var handleDragOver = React.useCallback((e, dayIndex) => {
|
|
8438
|
-
e.preventDefault();
|
|
8439
|
-
e.dataTransfer.dropEffect = 'move';
|
|
8440
|
-
setDropTargetDays([dayIndex]);
|
|
8441
|
-
}, []);
|
|
8442
|
-
// Handle drag leave
|
|
8443
|
-
var handleDragLeave = React.useCallback(() => {
|
|
8444
|
-
setDropTargetDays([]);
|
|
8445
|
-
}, []);
|
|
8446
|
-
// Handle drop on day cell
|
|
8447
|
-
var handleDrop = React.useCallback((e, dayIndex) => {
|
|
8448
|
-
e.preventDefault();
|
|
8449
|
-
setDropTargetDays([]);
|
|
8450
|
-
var dragState = dragStateRef.current;
|
|
8451
|
-
if (!dragState.event || !dragState.originalStart || !dragState.originalEnd) return;
|
|
8452
|
-
// Calculate date difference
|
|
8453
|
-
var targetDate = calendarDates[dayIndex];
|
|
8454
|
-
if (!targetDate) return;
|
|
8455
|
-
var daysDiff = daysBetweenUTC(targetDate, dragState.originalStart.slice(0, 10));
|
|
8456
|
-
// Update event dates
|
|
8457
|
-
var newStart = addDateDays(dragState.originalStart.slice(0, 10), daysDiff);
|
|
8458
|
-
var newEnd = addDateDays(dragState.originalEnd.slice(0, 10), daysDiff);
|
|
8459
|
-
var updatedEvent = Object.assign({}, dragState.event, {
|
|
8460
|
-
start: newStart,
|
|
8461
|
-
end: newEnd
|
|
8462
|
-
});
|
|
8463
|
-
// Update local events
|
|
8464
|
-
var updatedEvents = localEvents.map(ev => ev.id === dragState.event.id ? updatedEvent : ev);
|
|
8465
|
-
setLocalEvents(updatedEvents);
|
|
8466
|
-
// Call callback
|
|
8467
|
-
onEventDrop == null || onEventDrop(updatedEvent);
|
|
8468
|
-
// Reset drag state
|
|
8469
|
-
dragStateRef.current = {
|
|
8470
|
-
isDragging: false,
|
|
8471
|
-
isResizing: false,
|
|
8472
|
-
resizeDirection: null,
|
|
8473
|
-
event: null,
|
|
8474
|
-
startX: 0,
|
|
8475
|
-
startDay: 0,
|
|
8476
|
-
startDuration: 0,
|
|
8477
|
-
originalStart: null,
|
|
8478
|
-
originalEnd: null
|
|
8479
|
-
};
|
|
8480
|
-
}, [localEvents, calendarDates, onEventDrop]);
|
|
8481
|
-
// Handle resize start (FIXED - using pixel-based approach like CalendarWeek)
|
|
8507
|
+
// Handle resize start
|
|
8482
8508
|
var handleResizeStart = React.useCallback((e, event, direction) => {
|
|
8483
8509
|
e.preventDefault();
|
|
8484
8510
|
e.stopPropagation();
|
|
@@ -8494,7 +8520,7 @@ var Calendar = _ref2 => {
|
|
|
8494
8520
|
originalEnd: event.end
|
|
8495
8521
|
};
|
|
8496
8522
|
}, []);
|
|
8497
|
-
// Handle mouse move during resize
|
|
8523
|
+
// Handle mouse move during resize or drag
|
|
8498
8524
|
var handleMouseMove = React.useCallback(e => {
|
|
8499
8525
|
var dragState = dragStateRef.current;
|
|
8500
8526
|
if (!dragState.event || !dragState.isDragging && !dragState.isResizing) return;
|
|
@@ -8616,54 +8642,89 @@ var Calendar = _ref2 => {
|
|
|
8616
8642
|
key: index
|
|
8617
8643
|
}, weekdayLabelStyles, views.weekdayLabel), dayName)))), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8618
8644
|
ref: gridRef
|
|
8619
|
-
}, monthGridStyles, views.monthGrid),
|
|
8620
|
-
var
|
|
8621
|
-
var
|
|
8622
|
-
|
|
8623
|
-
|
|
8624
|
-
|
|
8625
|
-
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
|
|
8630
|
-
|
|
8631
|
-
|
|
8632
|
-
|
|
8633
|
-
|
|
8634
|
-
|
|
8635
|
-
|
|
8636
|
-
|
|
8637
|
-
|
|
8638
|
-
}
|
|
8639
|
-
|
|
8645
|
+
}, monthGridStyles, views.monthGrid), monthWeeksWithEvents.map(week => {
|
|
8646
|
+
var weekStartIdx = week.weekIndex * 7;
|
|
8647
|
+
var weekEndIdx = weekStartIdx + week.dates.length - 1;
|
|
8648
|
+
return /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8649
|
+
key: "week-" + week.weekIndex,
|
|
8650
|
+
position: "relative"
|
|
8651
|
+
}, /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8652
|
+
display: "grid",
|
|
8653
|
+
gridTemplateColumns: "repeat(7, 1fr)"
|
|
8654
|
+
}, week.dates.map((dateISO, dayOffset) => {
|
|
8655
|
+
var dateNum = getDateNumber(dateISO);
|
|
8656
|
+
var isToday = dateISO === today;
|
|
8657
|
+
var isSelected = dateISO === selectedDate;
|
|
8658
|
+
var isCurrentMonth = isInMonth(dateISO, currentMonth);
|
|
8659
|
+
var dayIndex = weekStartIdx + dayOffset;
|
|
8660
|
+
var isDropTarget = dropTargetDays.includes(dayIndex);
|
|
8661
|
+
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8662
|
+
key: dateISO,
|
|
8663
|
+
"data-date": dateISO
|
|
8664
|
+
}, dayCellStyles, !isCurrentMonth && otherMonthDayCellStyles, isDropTarget && dropTargetStyles, {
|
|
8665
|
+
onClick: () => handleDateClick(dateISO),
|
|
8666
|
+
onDoubleClick: () => handleDateDoubleClick(dateISO)
|
|
8667
|
+
}, views.dayCell), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayNumberStyles, isToday && todayDayNumberStyles, isSelected && !isToday && selectedDayNumberStyles, {
|
|
8668
|
+
style: {
|
|
8669
|
+
cursor: 'pointer'
|
|
8670
|
+
}
|
|
8671
|
+
}, views.dayNumber), dateNum));
|
|
8672
|
+
})), week.segments.length > 0 && (/*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8673
|
+
position: "absolute",
|
|
8674
|
+
left: 0,
|
|
8675
|
+
right: 0,
|
|
8676
|
+
top: MONTH_EVENT_TOP_OFFSET,
|
|
8677
|
+
pointerEvents: "none"
|
|
8678
|
+
}, week.segments.map(event => {
|
|
8679
|
+
var _dragStateRef$current, _dragStateRef$current2;
|
|
8640
8680
|
var colorConfig = EVENT_COLORS[event.color || 'blue'];
|
|
8641
|
-
var
|
|
8642
|
-
var
|
|
8643
|
-
|
|
8681
|
+
var dayWidth = 100 / week.dates.length;
|
|
8682
|
+
var left = event.segmentStartDay * dayWidth;
|
|
8683
|
+
var width = event.segmentDuration * dayWidth;
|
|
8684
|
+
var isDragging = dragStateRef.current.isDragging && ((_dragStateRef$current = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current.id) === event.id;
|
|
8685
|
+
var isResizing = dragStateRef.current.isResizing && ((_dragStateRef$current2 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current2.id) === event.id;
|
|
8686
|
+
var showLeftHandle = event.startDay >= weekStartIdx && event.startDay <= weekEndIdx && event.segmentStartDay === event.startDay - weekStartIdx;
|
|
8687
|
+
var showRightHandle = event.endDay >= weekStartIdx && event.endDay <= weekEndIdx && event.segmentEndDay === event.endDay - weekStartIdx;
|
|
8644
8688
|
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8645
|
-
key: event.id,
|
|
8646
|
-
position: "
|
|
8647
|
-
|
|
8689
|
+
key: event.id + "-" + event.weekIndex + "-" + event.segmentStartDay,
|
|
8690
|
+
position: "absolute",
|
|
8691
|
+
height: MONTH_EVENT_ROW_HEIGHT,
|
|
8692
|
+
display: "flex",
|
|
8693
|
+
alignItems: "center",
|
|
8694
|
+
paddingLeft: 8,
|
|
8695
|
+
paddingRight: 8,
|
|
8696
|
+
borderRadius: 4,
|
|
8648
8697
|
backgroundColor: colorConfig.background,
|
|
8698
|
+
borderLeft: "3px solid",
|
|
8649
8699
|
borderLeftColor: colorConfig.border,
|
|
8650
8700
|
color: colorConfig.text,
|
|
8651
|
-
|
|
8652
|
-
|
|
8653
|
-
|
|
8701
|
+
fontSize: 11,
|
|
8702
|
+
fontWeight: 500,
|
|
8703
|
+
overflow: "hidden",
|
|
8704
|
+
cursor: isDragging ? 'grabbing' : 'grab',
|
|
8705
|
+
opacity: isDragging || isResizing ? 0.7 : 1,
|
|
8706
|
+
boxShadow: isDragging || isResizing ? '0 4px 12px rgba(0,0,0,0.3)' : '0 1px 2px rgba(0,0,0,0.1)',
|
|
8707
|
+
transition: isDragging || isResizing ? 'none' : 'box-shadow 0.2s',
|
|
8708
|
+
pointerEvents: "auto",
|
|
8709
|
+
userSelect: "none",
|
|
8710
|
+
left: "calc(" + left + "% + 4px)",
|
|
8711
|
+
width: "calc(" + width + "% - 8px)",
|
|
8712
|
+
top: event.segmentRow * (MONTH_EVENT_ROW_HEIGHT + MONTH_EVENT_ROW_GAP) + "px",
|
|
8713
|
+
onMouseDown: e => handleEventMouseDown(e, event),
|
|
8714
|
+
title: event.title
|
|
8654
8715
|
}, views.event), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8655
8716
|
overflow: "hidden",
|
|
8656
8717
|
textOverflow: "ellipsis",
|
|
8657
8718
|
whiteSpace: "nowrap",
|
|
8658
8719
|
width: "100%"
|
|
8659
|
-
}, event.title,
|
|
8720
|
+
}, event.title), showLeftHandle && (/*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8660
8721
|
direction: "left",
|
|
8661
8722
|
onMouseDown: e => handleResizeStart(e, event, 'left')
|
|
8662
|
-
}), /*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8723
|
+
})), showRightHandle && (/*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8663
8724
|
direction: "right",
|
|
8664
8725
|
onMouseDown: e => handleResizeStart(e, event, 'right')
|
|
8665
|
-
}));
|
|
8666
|
-
})));
|
|
8726
|
+
})));
|
|
8727
|
+
}))));
|
|
8667
8728
|
}))));
|
|
8668
8729
|
// Render week view
|
|
8669
8730
|
var renderWeekView = () => (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, weekdayHeaderStyles, views.weekdayHeader), calendarDates.map((dateISO, index) => {
|
|
@@ -8677,7 +8738,7 @@ var Calendar = _ref2 => {
|
|
|
8677
8738
|
alignItems: "center",
|
|
8678
8739
|
padding: 8,
|
|
8679
8740
|
gap: 4
|
|
8680
|
-
}, views.weekdayLabel), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, weekdayLabelStyles), DAY_NAMES[dayOfWeek]), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({},
|
|
8741
|
+
}, views.weekdayLabel), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, weekdayLabelStyles), DAY_NAMES[dayOfWeek]), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayDateStyles, isToday && todayDayNumberStyles, {
|
|
8681
8742
|
fontSize: 16,
|
|
8682
8743
|
fontWeight: isToday ? 500 : 400
|
|
8683
8744
|
}), dateNum));
|
|
@@ -8695,14 +8756,14 @@ var Calendar = _ref2 => {
|
|
|
8695
8756
|
}, dayCellStyles, isDropTarget && dropTargetStyles, {
|
|
8696
8757
|
minHeight: 400,
|
|
8697
8758
|
onClick: () => handleDateClick(dateISO),
|
|
8698
|
-
onDoubleClick: () => handleDateDoubleClick(dateISO)
|
|
8699
|
-
onDragOver: e => handleDragOver(e, index),
|
|
8700
|
-
onDragLeave: handleDragLeave,
|
|
8701
|
-
onDrop: e => handleDrop(e, index)
|
|
8759
|
+
onDoubleClick: () => handleDateDoubleClick(dateISO)
|
|
8702
8760
|
}), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, eventsAreaStyles, views.eventsArea), dayEvents.map(event => {
|
|
8761
|
+
var _dragStateRef$current3, _dragStateRef$current4;
|
|
8703
8762
|
var colorConfig = EVENT_COLORS[event.color || 'blue'];
|
|
8704
8763
|
var isFirstDay = event.isFirstDay !== false;
|
|
8705
8764
|
if (!isFirstDay) return null;
|
|
8765
|
+
var isDragging = dragStateRef.current.isDragging && ((_dragStateRef$current3 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current3.id) === event.id;
|
|
8766
|
+
var isResizing = dragStateRef.current.isResizing && ((_dragStateRef$current4 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current4.id) === event.id;
|
|
8706
8767
|
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8707
8768
|
key: event.id,
|
|
8708
8769
|
position: "relative"
|
|
@@ -8710,8 +8771,12 @@ var Calendar = _ref2 => {
|
|
|
8710
8771
|
backgroundColor: colorConfig.background,
|
|
8711
8772
|
borderLeftColor: colorConfig.border,
|
|
8712
8773
|
color: colorConfig.text,
|
|
8713
|
-
|
|
8714
|
-
|
|
8774
|
+
cursor: isDragging ? 'grabbing' : 'grab',
|
|
8775
|
+
opacity: isDragging || isResizing ? 0.7 : 1,
|
|
8776
|
+
boxShadow: isDragging || isResizing ? '0 4px 12px rgba(0,0,0,0.3)' : '0 1px 2px rgba(0,0,0,0.1)',
|
|
8777
|
+
transition: isDragging || isResizing ? 'none' : 'box-shadow 0.2s',
|
|
8778
|
+
userSelect: "none",
|
|
8779
|
+
onMouseDown: e => handleEventMouseDown(e, event),
|
|
8715
8780
|
title: event.title
|
|
8716
8781
|
}, views.event), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8717
8782
|
overflow: "hidden",
|
|
@@ -8830,509 +8895,6 @@ var Calendar = _ref2 => {
|
|
|
8830
8895
|
}, views.navButton), "\u203A")))), currentView === 'month' && renderMonthView(), currentView === 'week' && renderWeekView(), currentView === 'day' && renderDayView());
|
|
8831
8896
|
};
|
|
8832
8897
|
|
|
8833
|
-
/**
|
|
8834
|
-
* Convert an ISO date string to a UTC Date object
|
|
8835
|
-
*/
|
|
8836
|
-
var dateUTC$1 = iso => {
|
|
8837
|
-
return new Date(iso + (iso.includes('T') ? '' : 'T00:00:00Z'));
|
|
8838
|
-
};
|
|
8839
|
-
/**
|
|
8840
|
-
* Calculate the number of days between two ISO date strings
|
|
8841
|
-
*/
|
|
8842
|
-
var daysBetweenUTC$1 = (a, b) => {
|
|
8843
|
-
return Math.floor((dateUTC$1(a).getTime() - dateUTC$1(b).getTime()) / 86400000);
|
|
8844
|
-
};
|
|
8845
|
-
/**
|
|
8846
|
-
* Add a number of days to an ISO date string
|
|
8847
|
-
*/
|
|
8848
|
-
var addDateDays$1 = (dateISO, days) => {
|
|
8849
|
-
var d = new Date(dateISO + 'T00:00:00Z');
|
|
8850
|
-
d.setUTCDate(d.getUTCDate() + days);
|
|
8851
|
-
return d.toISOString().slice(0, 10);
|
|
8852
|
-
};
|
|
8853
|
-
/**
|
|
8854
|
-
* Get the day of the week (0-6) from an ISO date string
|
|
8855
|
-
*/
|
|
8856
|
-
var getDayOfWeek$1 = dateISO => {
|
|
8857
|
-
return dateUTC$1(dateISO).getUTCDay();
|
|
8858
|
-
};
|
|
8859
|
-
/**
|
|
8860
|
-
* Get the date number (1-31) from an ISO date string
|
|
8861
|
-
*/
|
|
8862
|
-
var getDateNumber$1 = dateISO => {
|
|
8863
|
-
return dateUTC$1(dateISO).getUTCDate();
|
|
8864
|
-
};
|
|
8865
|
-
/**
|
|
8866
|
-
* Layout events with proper positioning to avoid overlaps
|
|
8867
|
-
* Returns positioned events and the total number of rows needed
|
|
8868
|
-
*/
|
|
8869
|
-
var layoutEvents$1 = (events, weekStart) => {
|
|
8870
|
-
// Convert events to positioned items with day indices
|
|
8871
|
-
var items = events.map(ev => {
|
|
8872
|
-
var startIdx = daysBetweenUTC$1(ev.start, weekStart);
|
|
8873
|
-
var endIdx = daysBetweenUTC$1(ev.end, weekStart);
|
|
8874
|
-
// Clamp to week boundaries
|
|
8875
|
-
var clampedStart = Math.max(0, Math.min(6, startIdx));
|
|
8876
|
-
var clampedEnd = Math.max(0, Math.min(6, endIdx));
|
|
8877
|
-
// Skip if completely outside week
|
|
8878
|
-
if (endIdx < 0 || startIdx > 6) return null;
|
|
8879
|
-
var duration = clampedEnd - clampedStart + 1;
|
|
8880
|
-
return Object.assign({}, ev, {
|
|
8881
|
-
startDay: clampedStart,
|
|
8882
|
-
endDay: clampedEnd,
|
|
8883
|
-
duration: duration,
|
|
8884
|
-
row: 0
|
|
8885
|
-
});
|
|
8886
|
-
}).filter(item => item !== null);
|
|
8887
|
-
// Sort by start day, then by duration (longer first)
|
|
8888
|
-
items.sort((a, b) => {
|
|
8889
|
-
if (a.startDay !== b.startDay) return a.startDay - b.startDay;
|
|
8890
|
-
return b.duration - a.duration;
|
|
8891
|
-
});
|
|
8892
|
-
// Assign rows using greedy algorithm to prevent overlaps
|
|
8893
|
-
var rows = [];
|
|
8894
|
-
items.forEach(item => {
|
|
8895
|
-
var placed = false;
|
|
8896
|
-
for (var i = 0; i < rows.length; i++) {
|
|
8897
|
-
var row = rows[i];
|
|
8898
|
-
var hasConflict = row.some(existing => !(item.startDay > existing.endDay || item.endDay < existing.startDay));
|
|
8899
|
-
if (!hasConflict) {
|
|
8900
|
-
row.push(item);
|
|
8901
|
-
item.row = i;
|
|
8902
|
-
placed = true;
|
|
8903
|
-
break;
|
|
8904
|
-
}
|
|
8905
|
-
}
|
|
8906
|
-
if (!placed) {
|
|
8907
|
-
item.row = rows.length;
|
|
8908
|
-
rows.push([item]);
|
|
8909
|
-
}
|
|
8910
|
-
});
|
|
8911
|
-
return {
|
|
8912
|
-
items,
|
|
8913
|
-
rowCount: rows.length
|
|
8914
|
-
};
|
|
8915
|
-
};
|
|
8916
|
-
/**
|
|
8917
|
-
* Day names array (Sunday to Saturday)
|
|
8918
|
-
*/
|
|
8919
|
-
var DAY_NAMES$1 = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
8920
|
-
/**
|
|
8921
|
-
* Get the date ISO string for a specific day in the week
|
|
8922
|
-
*/
|
|
8923
|
-
var getDateForDay = (weekStart, dayIndex) => {
|
|
8924
|
-
return addDateDays$1(weekStart, dayIndex);
|
|
8925
|
-
};
|
|
8926
|
-
|
|
8927
|
-
/**
|
|
8928
|
-
* Event color configurations
|
|
8929
|
-
*/
|
|
8930
|
-
var EVENT_COLORS$1 = {
|
|
8931
|
-
blue: {
|
|
8932
|
-
background: 'color.blue.50',
|
|
8933
|
-
border: 'color.blue.500',
|
|
8934
|
-
text: 'color.blue.700'
|
|
8935
|
-
},
|
|
8936
|
-
red: {
|
|
8937
|
-
background: 'color.red.50',
|
|
8938
|
-
border: 'color.red.500',
|
|
8939
|
-
text: 'color.red.700'
|
|
8940
|
-
},
|
|
8941
|
-
green: {
|
|
8942
|
-
background: 'color.green.50',
|
|
8943
|
-
border: 'color.green.500',
|
|
8944
|
-
text: 'color.green.700'
|
|
8945
|
-
},
|
|
8946
|
-
purple: {
|
|
8947
|
-
background: 'color.purple.50',
|
|
8948
|
-
border: 'color.purple.500',
|
|
8949
|
-
text: 'color.purple.700'
|
|
8950
|
-
},
|
|
8951
|
-
orange: {
|
|
8952
|
-
background: 'color.orange.50',
|
|
8953
|
-
border: 'color.orange.500',
|
|
8954
|
-
text: 'color.orange.700'
|
|
8955
|
-
}
|
|
8956
|
-
};
|
|
8957
|
-
/**
|
|
8958
|
-
* Base styles for the calendar container
|
|
8959
|
-
*/
|
|
8960
|
-
var containerStyles$1 = {
|
|
8961
|
-
width: '100%',
|
|
8962
|
-
maxWidth: 1200,
|
|
8963
|
-
border: '1px solid',
|
|
8964
|
-
borderColor: 'color.gray.200',
|
|
8965
|
-
borderRadius: 8,
|
|
8966
|
-
overflow: 'hidden',
|
|
8967
|
-
backgroundColor: 'color.white'
|
|
8968
|
-
};
|
|
8969
|
-
/**
|
|
8970
|
-
* Individual day column styles
|
|
8971
|
-
*/
|
|
8972
|
-
var dayColumnStyles = {
|
|
8973
|
-
borderRight: '1px solid',
|
|
8974
|
-
borderColor: 'color.gray.200',
|
|
8975
|
-
display: 'flex',
|
|
8976
|
-
flexDirection: 'column',
|
|
8977
|
-
minHeight: 160,
|
|
8978
|
-
backgroundColor: 'color.white',
|
|
8979
|
-
position: 'relative'
|
|
8980
|
-
};
|
|
8981
|
-
/**
|
|
8982
|
-
* Day header styles
|
|
8983
|
-
*/
|
|
8984
|
-
var dayHeaderStyles = {
|
|
8985
|
-
padding: 8,
|
|
8986
|
-
borderBottom: '1px solid',
|
|
8987
|
-
borderColor: 'color.gray.200',
|
|
8988
|
-
backgroundColor: 'color.gray.50',
|
|
8989
|
-
minHeight: 60,
|
|
8990
|
-
display: 'flex',
|
|
8991
|
-
flexDirection: 'column',
|
|
8992
|
-
alignItems: 'center',
|
|
8993
|
-
justifyContent: 'center',
|
|
8994
|
-
gap: 4
|
|
8995
|
-
};
|
|
8996
|
-
/**
|
|
8997
|
-
* Day name styles (e.g., "Mon", "Tue")
|
|
8998
|
-
*/
|
|
8999
|
-
var dayNameStyles = {
|
|
9000
|
-
fontSize: 11,
|
|
9001
|
-
fontWeight: 500,
|
|
9002
|
-
color: 'color.gray.700',
|
|
9003
|
-
textTransform: 'uppercase',
|
|
9004
|
-
letterSpacing: 0.5
|
|
9005
|
-
};
|
|
9006
|
-
/**
|
|
9007
|
-
* Day date styles (the circular number)
|
|
9008
|
-
*/
|
|
9009
|
-
var dayDateStyles = {
|
|
9010
|
-
width: 36,
|
|
9011
|
-
height: 36,
|
|
9012
|
-
display: 'flex',
|
|
9013
|
-
alignItems: 'center',
|
|
9014
|
-
justifyContent: 'center',
|
|
9015
|
-
borderRadius: '50%',
|
|
9016
|
-
fontSize: 13,
|
|
9017
|
-
fontWeight: 400,
|
|
9018
|
-
color: 'color.gray.900',
|
|
9019
|
-
cursor: 'pointer',
|
|
9020
|
-
transition: 'all 0.2s',
|
|
9021
|
-
border: '2px solid transparent'
|
|
9022
|
-
};
|
|
9023
|
-
/**
|
|
9024
|
-
* Today date styles
|
|
9025
|
-
*/
|
|
9026
|
-
var todayDateStyles = {
|
|
9027
|
-
backgroundColor: 'color.blue.500',
|
|
9028
|
-
color: 'color.white',
|
|
9029
|
-
fontWeight: 500
|
|
9030
|
-
};
|
|
9031
|
-
/**
|
|
9032
|
-
* Selected date styles
|
|
9033
|
-
*/
|
|
9034
|
-
var selectedDateStyles = {
|
|
9035
|
-
borderColor: 'color.blue.500'
|
|
9036
|
-
};
|
|
9037
|
-
/**
|
|
9038
|
-
* Events area styles
|
|
9039
|
-
*/
|
|
9040
|
-
var eventsAreaStyles$1 = {
|
|
9041
|
-
padding: 8,
|
|
9042
|
-
paddingLeft: 6,
|
|
9043
|
-
paddingRight: 6,
|
|
9044
|
-
flex: 1,
|
|
9045
|
-
position: 'relative'
|
|
9046
|
-
};
|
|
9047
|
-
/**
|
|
9048
|
-
* Drop target indicator styles
|
|
9049
|
-
*/
|
|
9050
|
-
var dropTargetStyles$1 = {
|
|
9051
|
-
backgroundColor: 'rgba(26, 115, 232, 0.05)'
|
|
9052
|
-
};
|
|
9053
|
-
/**
|
|
9054
|
-
* Calculate event position styles
|
|
9055
|
-
*/
|
|
9056
|
-
var getEventPositionStyles = (startDay, duration, row) => {
|
|
9057
|
-
var dayWidth = 100 / 7;
|
|
9058
|
-
var left = startDay * dayWidth;
|
|
9059
|
-
var width = duration * dayWidth;
|
|
9060
|
-
return {
|
|
9061
|
-
left: "calc(" + left + "% + 6px)",
|
|
9062
|
-
width: "calc(" + width + "% - 12px)",
|
|
9063
|
-
top: 8 + row * 26 + "px"
|
|
9064
|
-
};
|
|
9065
|
-
};
|
|
9066
|
-
|
|
9067
|
-
var ResizeHandle$1 = _ref => {
|
|
9068
|
-
var {
|
|
9069
|
-
direction,
|
|
9070
|
-
onMouseDown
|
|
9071
|
-
} = _ref;
|
|
9072
|
-
var [isHovered, setIsHovered] = React.useState(false);
|
|
9073
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9074
|
-
position: "absolute",
|
|
9075
|
-
top: 0,
|
|
9076
|
-
bottom: 0,
|
|
9077
|
-
width: 8,
|
|
9078
|
-
opacity: isHovered ? 1 : 0,
|
|
9079
|
-
transition: "opacity 0.2s",
|
|
9080
|
-
cursor: direction === 'left' ? 'w-resize' : 'e-resize',
|
|
9081
|
-
zIndex: 10,
|
|
9082
|
-
backgroundColor: isHovered ? 'rgba(0,0,0,0.1)' : 'transparent'
|
|
9083
|
-
}, direction === 'left' ? {
|
|
9084
|
-
left: 0
|
|
9085
|
-
} : {
|
|
9086
|
-
right: 0
|
|
9087
|
-
}, {
|
|
9088
|
-
onMouseDown: onMouseDown,
|
|
9089
|
-
onMouseEnter: () => setIsHovered(true),
|
|
9090
|
-
onMouseLeave: () => setIsHovered(false)
|
|
9091
|
-
}));
|
|
9092
|
-
};
|
|
9093
|
-
var CalendarWeek = _ref2 => {
|
|
9094
|
-
var {
|
|
9095
|
-
startDate,
|
|
9096
|
-
events = [],
|
|
9097
|
-
today = new Date().toISOString().slice(0, 10),
|
|
9098
|
-
onEventDrop,
|
|
9099
|
-
onEventResize,
|
|
9100
|
-
onDateClick,
|
|
9101
|
-
views = {},
|
|
9102
|
-
width = '100%',
|
|
9103
|
-
maxWidth = 1200
|
|
9104
|
-
} = _ref2;
|
|
9105
|
-
var {
|
|
9106
|
-
getColor
|
|
9107
|
-
} = appStudio.useTheme();
|
|
9108
|
-
var weekGridRef = React.useRef(null);
|
|
9109
|
-
var [selectedDate, setSelectedDate] = React.useState(null);
|
|
9110
|
-
var [localEvents, setLocalEvents] = React.useState(events);
|
|
9111
|
-
var [dropTargetDays, setDropTargetDays] = React.useState([]);
|
|
9112
|
-
var dragStateRef = React.useRef({
|
|
9113
|
-
isDragging: false,
|
|
9114
|
-
isResizing: false,
|
|
9115
|
-
resizeDirection: null,
|
|
9116
|
-
event: null,
|
|
9117
|
-
startX: 0,
|
|
9118
|
-
startDay: 0,
|
|
9119
|
-
startDuration: 0,
|
|
9120
|
-
originalStart: null,
|
|
9121
|
-
originalEnd: null
|
|
9122
|
-
});
|
|
9123
|
-
// Update local events when props change
|
|
9124
|
-
React__default.useEffect(() => {
|
|
9125
|
-
setLocalEvents(events);
|
|
9126
|
-
}, [events]);
|
|
9127
|
-
// Layout events
|
|
9128
|
-
var {
|
|
9129
|
-
items: positionedEvents
|
|
9130
|
-
} = React.useMemo(() => layoutEvents$1(localEvents, startDate), [localEvents, startDate]);
|
|
9131
|
-
// Get day index from mouse X position
|
|
9132
|
-
var getDayFromMouseX = React.useCallback(clientX => {
|
|
9133
|
-
if (!weekGridRef.current) return 0;
|
|
9134
|
-
var rect = weekGridRef.current.getBoundingClientRect();
|
|
9135
|
-
var relativeX = clientX - rect.left;
|
|
9136
|
-
var dayWidth = rect.width / 7;
|
|
9137
|
-
return Math.max(0, Math.min(6, Math.floor(relativeX / dayWidth)));
|
|
9138
|
-
}, []);
|
|
9139
|
-
// Handle date click
|
|
9140
|
-
var handleDateClick = React.useCallback(dateISO => {
|
|
9141
|
-
setSelectedDate(dateISO);
|
|
9142
|
-
onDateClick == null || onDateClick(dateISO);
|
|
9143
|
-
}, [onDateClick]);
|
|
9144
|
-
// Handle mouse down on event (start dragging)
|
|
9145
|
-
var handleEventMouseDown = React.useCallback((e, event) => {
|
|
9146
|
-
e.preventDefault();
|
|
9147
|
-
dragStateRef.current = {
|
|
9148
|
-
isDragging: true,
|
|
9149
|
-
isResizing: false,
|
|
9150
|
-
resizeDirection: null,
|
|
9151
|
-
event,
|
|
9152
|
-
startX: e.clientX,
|
|
9153
|
-
startDay: event.startDay,
|
|
9154
|
-
startDuration: event.duration,
|
|
9155
|
-
originalStart: event.start,
|
|
9156
|
-
originalEnd: event.end
|
|
9157
|
-
};
|
|
9158
|
-
}, []);
|
|
9159
|
-
// Handle mouse down on resize handle
|
|
9160
|
-
var handleResizeMouseDown = React.useCallback((e, event, direction) => {
|
|
9161
|
-
e.preventDefault();
|
|
9162
|
-
e.stopPropagation();
|
|
9163
|
-
dragStateRef.current = {
|
|
9164
|
-
isDragging: false,
|
|
9165
|
-
isResizing: true,
|
|
9166
|
-
resizeDirection: direction,
|
|
9167
|
-
event,
|
|
9168
|
-
startX: e.clientX,
|
|
9169
|
-
startDay: event.startDay,
|
|
9170
|
-
startDuration: event.duration,
|
|
9171
|
-
originalStart: event.start,
|
|
9172
|
-
originalEnd: event.end
|
|
9173
|
-
};
|
|
9174
|
-
}, []);
|
|
9175
|
-
// Handle mouse move (dragging or resizing)
|
|
9176
|
-
var handleMouseMove = React.useCallback(e => {
|
|
9177
|
-
var dragState = dragStateRef.current;
|
|
9178
|
-
if (!dragState.event || !dragState.isDragging && !dragState.isResizing) return;
|
|
9179
|
-
if (!weekGridRef.current) return;
|
|
9180
|
-
var rect = weekGridRef.current.getBoundingClientRect();
|
|
9181
|
-
var dayWidth = rect.width / 7;
|
|
9182
|
-
var deltaX = e.clientX - dragState.startX;
|
|
9183
|
-
var daysDelta = Math.round(deltaX / dayWidth);
|
|
9184
|
-
if (dragState.isDragging) {
|
|
9185
|
-
// Calculate new position
|
|
9186
|
-
var newStartDay = Math.max(0, Math.min(6, dragState.startDay + daysDelta));
|
|
9187
|
-
var duration = dragState.event.duration;
|
|
9188
|
-
var newEndDay = Math.min(6, newStartDay + duration - 1);
|
|
9189
|
-
// Update drop target indicators
|
|
9190
|
-
var targetDays = [];
|
|
9191
|
-
for (var i = newStartDay; i <= newEndDay; i++) {
|
|
9192
|
-
targetDays.push(i);
|
|
9193
|
-
}
|
|
9194
|
-
setDropTargetDays(targetDays);
|
|
9195
|
-
// Update event position immediately for smooth dragging
|
|
9196
|
-
var updatedEvents = localEvents.map(ev => ev.id === dragState.event.id ? Object.assign({}, ev, {
|
|
9197
|
-
start: addDateDays$1(dragState.originalStart, newStartDay - dragState.startDay),
|
|
9198
|
-
end: addDateDays$1(dragState.originalEnd, newStartDay - dragState.startDay)
|
|
9199
|
-
}) : ev);
|
|
9200
|
-
setLocalEvents(updatedEvents);
|
|
9201
|
-
} else if (dragState.isResizing) {
|
|
9202
|
-
// Handle resizing
|
|
9203
|
-
if (dragState.resizeDirection === 'right') {
|
|
9204
|
-
var newDuration = Math.max(1, dragState.startDuration + daysDelta);
|
|
9205
|
-
var _newEndDay = Math.min(6, dragState.startDay + newDuration - 1);
|
|
9206
|
-
var actualDuration = _newEndDay - dragState.startDay + 1;
|
|
9207
|
-
var _updatedEvents = localEvents.map(ev => ev.id === dragState.event.id ? Object.assign({}, ev, {
|
|
9208
|
-
end: addDateDays$1(dragState.originalStart, actualDuration - 1)
|
|
9209
|
-
}) : ev);
|
|
9210
|
-
setLocalEvents(_updatedEvents);
|
|
9211
|
-
} else if (dragState.resizeDirection === 'left') {
|
|
9212
|
-
var _newStartDay = Math.max(0, Math.min(dragState.startDay + dragState.startDuration - 1, dragState.startDay + daysDelta));
|
|
9213
|
-
var _updatedEvents2 = localEvents.map(ev => ev.id === dragState.event.id ? Object.assign({}, ev, {
|
|
9214
|
-
start: addDateDays$1(dragState.originalStart, _newStartDay - dragState.startDay)
|
|
9215
|
-
}) : ev);
|
|
9216
|
-
setLocalEvents(_updatedEvents2);
|
|
9217
|
-
}
|
|
9218
|
-
}
|
|
9219
|
-
}, [localEvents]);
|
|
9220
|
-
// Handle mouse up (finish dragging or resizing)
|
|
9221
|
-
var handleMouseUp = React.useCallback(e => {
|
|
9222
|
-
var dragState = dragStateRef.current;
|
|
9223
|
-
if (!dragState.event || !dragState.isDragging && !dragState.isResizing) return;
|
|
9224
|
-
setDropTargetDays([]);
|
|
9225
|
-
// Find the updated event
|
|
9226
|
-
var updatedEvent = localEvents.find(ev => ev.id === dragState.event.id);
|
|
9227
|
-
if (!updatedEvent) return;
|
|
9228
|
-
// Call appropriate callback
|
|
9229
|
-
if (dragState.isDragging) {
|
|
9230
|
-
onEventDrop == null || onEventDrop(updatedEvent);
|
|
9231
|
-
} else if (dragState.isResizing) {
|
|
9232
|
-
onEventResize == null || onEventResize(updatedEvent);
|
|
9233
|
-
}
|
|
9234
|
-
// Reset drag state
|
|
9235
|
-
dragStateRef.current = {
|
|
9236
|
-
isDragging: false,
|
|
9237
|
-
isResizing: false,
|
|
9238
|
-
resizeDirection: null,
|
|
9239
|
-
event: null,
|
|
9240
|
-
startX: 0,
|
|
9241
|
-
startDay: 0,
|
|
9242
|
-
startDuration: 0,
|
|
9243
|
-
originalStart: null,
|
|
9244
|
-
originalEnd: null
|
|
9245
|
-
};
|
|
9246
|
-
}, [localEvents, onEventDrop, onEventResize]);
|
|
9247
|
-
// Set up global mouse event listeners
|
|
9248
|
-
React__default.useEffect(() => {
|
|
9249
|
-
document.addEventListener('mousemove', handleMouseMove);
|
|
9250
|
-
document.addEventListener('mouseup', handleMouseUp);
|
|
9251
|
-
return () => {
|
|
9252
|
-
document.removeEventListener('mousemove', handleMouseMove);
|
|
9253
|
-
document.removeEventListener('mouseup', handleMouseUp);
|
|
9254
|
-
};
|
|
9255
|
-
}, [handleMouseMove, handleMouseUp]);
|
|
9256
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, containerStyles$1, {
|
|
9257
|
-
width: width,
|
|
9258
|
-
maxWidth: maxWidth
|
|
9259
|
-
}, views.container), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9260
|
-
ref: weekGridRef,
|
|
9261
|
-
display: "grid",
|
|
9262
|
-
gridTemplateColumns: "repeat(7, 1fr)",
|
|
9263
|
-
position: "relative",
|
|
9264
|
-
width: "100%"
|
|
9265
|
-
}, views.weekGrid), Array.from({
|
|
9266
|
-
length: 7
|
|
9267
|
-
}).map((_, dayIdx) => {
|
|
9268
|
-
var dateISO = getDateForDay(startDate, dayIdx);
|
|
9269
|
-
var dayOfWeek = getDayOfWeek$1(dateISO);
|
|
9270
|
-
var dateNum = getDateNumber$1(dateISO);
|
|
9271
|
-
var isToday = dateISO === today;
|
|
9272
|
-
var isSelected = dateISO === selectedDate;
|
|
9273
|
-
var isDropTarget = dropTargetDays.includes(dayIdx);
|
|
9274
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9275
|
-
key: dayIdx
|
|
9276
|
-
}, dayColumnStyles, isDropTarget && dropTargetStyles$1, {
|
|
9277
|
-
borderRight: dayIdx === 6 ? 'none' : '1px solid'
|
|
9278
|
-
}, views.dayColumn), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayHeaderStyles, views.dayHeader), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayNameStyles, views.dayName), DAY_NAMES$1[dayOfWeek]), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayDateStyles, isToday && todayDateStyles, isSelected && !isToday && selectedDateStyles, {
|
|
9279
|
-
onClick: () => handleDateClick(dateISO)
|
|
9280
|
-
}, views.dayDate), dateNum)), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, eventsAreaStyles$1, views.eventsArea)));
|
|
9281
|
-
}), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
9282
|
-
position: "absolute",
|
|
9283
|
-
top: 60,
|
|
9284
|
-
left: 0,
|
|
9285
|
-
right: 0,
|
|
9286
|
-
bottom: 0,
|
|
9287
|
-
pointerEvents: "none"
|
|
9288
|
-
}, positionedEvents.map(event => {
|
|
9289
|
-
var _dragStateRef$current, _dragStateRef$current2;
|
|
9290
|
-
var colorConfig = EVENT_COLORS$1[event.color || 'blue'];
|
|
9291
|
-
var positionStyles = getEventPositionStyles(event.startDay, event.duration, event.row);
|
|
9292
|
-
var isDragging = dragStateRef.current.isDragging && ((_dragStateRef$current = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current.id) === event.id;
|
|
9293
|
-
var isResizing = dragStateRef.current.isResizing && ((_dragStateRef$current2 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current2.id) === event.id;
|
|
9294
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9295
|
-
key: event.id,
|
|
9296
|
-
position: "absolute",
|
|
9297
|
-
height: 22,
|
|
9298
|
-
display: "flex",
|
|
9299
|
-
alignItems: "center",
|
|
9300
|
-
padding: 8,
|
|
9301
|
-
paddingLeft: 8,
|
|
9302
|
-
paddingRight: 8,
|
|
9303
|
-
borderRadius: 4,
|
|
9304
|
-
backgroundColor: colorConfig.background,
|
|
9305
|
-
borderLeft: "3px solid",
|
|
9306
|
-
borderLeftColor: colorConfig.border,
|
|
9307
|
-
color: colorConfig.text,
|
|
9308
|
-
fontSize: 12,
|
|
9309
|
-
fontWeight: 500,
|
|
9310
|
-
overflow: "hidden",
|
|
9311
|
-
cursor: isDragging ? 'grabbing' : 'grab',
|
|
9312
|
-
opacity: isDragging || isResizing ? 0.7 : 1,
|
|
9313
|
-
boxShadow: isDragging || isResizing ? '0 4px 12px rgba(0,0,0,0.3)' : '0 1px 2px rgba(0,0,0,0.1)',
|
|
9314
|
-
transition: isDragging || isResizing ? 'none' : 'box-shadow 0.2s',
|
|
9315
|
-
pointerEvents: "auto",
|
|
9316
|
-
userSelect: "none",
|
|
9317
|
-
left: positionStyles.left,
|
|
9318
|
-
width: positionStyles.width,
|
|
9319
|
-
top: positionStyles.top,
|
|
9320
|
-
onMouseDown: e => handleEventMouseDown(e, event)
|
|
9321
|
-
}, views.event), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
9322
|
-
overflow: "hidden",
|
|
9323
|
-
textOverflow: "ellipsis",
|
|
9324
|
-
whiteSpace: "nowrap",
|
|
9325
|
-
width: "100%"
|
|
9326
|
-
}, event.title), /*#__PURE__*/React__default.createElement(ResizeHandle$1, {
|
|
9327
|
-
direction: "left",
|
|
9328
|
-
onMouseDown: e => handleResizeMouseDown(e, event, 'left')
|
|
9329
|
-
}), /*#__PURE__*/React__default.createElement(ResizeHandle$1, {
|
|
9330
|
-
direction: "right",
|
|
9331
|
-
onMouseDown: e => handleResizeMouseDown(e, event, 'right')
|
|
9332
|
-
}));
|
|
9333
|
-
}))));
|
|
9334
|
-
};
|
|
9335
|
-
|
|
9336
8898
|
/**
|
|
9337
8899
|
* Custom hook to manage cookie consent state
|
|
9338
8900
|
* @param cookieExpiration Number of days until the cookie expires
|
|
@@ -19973,6 +19535,404 @@ NavigationMenu.Trigger = NavigationMenuTrigger;
|
|
|
19973
19535
|
NavigationMenu.Content = NavigationMenuContent;
|
|
19974
19536
|
NavigationMenu.Link = NavigationMenuLink;
|
|
19975
19537
|
|
|
19538
|
+
var _excluded$X = ["value", "max", "color", "backgroundColor", "height", "radius", "views", "themeMode"];
|
|
19539
|
+
var ProgressBarView = _ref => {
|
|
19540
|
+
var {
|
|
19541
|
+
value = 0,
|
|
19542
|
+
max = 100,
|
|
19543
|
+
color = 'theme.primary',
|
|
19544
|
+
backgroundColor = 'color.gray.200',
|
|
19545
|
+
height = 8,
|
|
19546
|
+
radius = 4,
|
|
19547
|
+
views,
|
|
19548
|
+
themeMode: elementMode
|
|
19549
|
+
} = _ref,
|
|
19550
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$X);
|
|
19551
|
+
var {
|
|
19552
|
+
getColor,
|
|
19553
|
+
themeMode
|
|
19554
|
+
} = appStudio.useTheme();
|
|
19555
|
+
var currentMode = elementMode ? elementMode : themeMode;
|
|
19556
|
+
var percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
19557
|
+
var trackColor = getColor(backgroundColor, {
|
|
19558
|
+
themeMode: currentMode
|
|
19559
|
+
});
|
|
19560
|
+
var barColor = getColor(color, {
|
|
19561
|
+
themeMode: currentMode
|
|
19562
|
+
});
|
|
19563
|
+
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19564
|
+
role: "progressbar",
|
|
19565
|
+
"aria-valuenow": value,
|
|
19566
|
+
"aria-valuemin": 0,
|
|
19567
|
+
"aria-valuemax": max,
|
|
19568
|
+
width: "100%",
|
|
19569
|
+
height: height,
|
|
19570
|
+
backgroundColor: trackColor,
|
|
19571
|
+
borderRadius: radius,
|
|
19572
|
+
overflow: "hidden"
|
|
19573
|
+
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19574
|
+
width: percentage + "%",
|
|
19575
|
+
height: "100%",
|
|
19576
|
+
backgroundColor: barColor,
|
|
19577
|
+
borderRadius: radius
|
|
19578
|
+
}, views == null ? void 0 : views.bar)));
|
|
19579
|
+
};
|
|
19580
|
+
|
|
19581
|
+
/**
|
|
19582
|
+
* ProgressBar component displays completion status of a task or process.
|
|
19583
|
+
*/
|
|
19584
|
+
var ProgressBarComponent = props => (/*#__PURE__*/React__default.createElement(ProgressBarView, Object.assign({}, props)));
|
|
19585
|
+
var ProgressBar = ProgressBarComponent;
|
|
19586
|
+
|
|
19587
|
+
var getThemes$2 = themeMode => {
|
|
19588
|
+
return {
|
|
19589
|
+
default: {
|
|
19590
|
+
indicator: {
|
|
19591
|
+
backgroundColor: 'color.gray.400'
|
|
19592
|
+
},
|
|
19593
|
+
label: {
|
|
19594
|
+
color: 'color.gray.700'
|
|
19595
|
+
}
|
|
19596
|
+
},
|
|
19597
|
+
info: {
|
|
19598
|
+
indicator: {
|
|
19599
|
+
backgroundColor: 'color.blue.500'
|
|
19600
|
+
},
|
|
19601
|
+
label: {
|
|
19602
|
+
color: 'color.blue.700'
|
|
19603
|
+
}
|
|
19604
|
+
},
|
|
19605
|
+
success: {
|
|
19606
|
+
indicator: {
|
|
19607
|
+
backgroundColor: 'color.green.500'
|
|
19608
|
+
},
|
|
19609
|
+
label: {
|
|
19610
|
+
color: 'color.green.700'
|
|
19611
|
+
}
|
|
19612
|
+
},
|
|
19613
|
+
warning: {
|
|
19614
|
+
indicator: {
|
|
19615
|
+
backgroundColor: 'color.orange.500'
|
|
19616
|
+
},
|
|
19617
|
+
label: {
|
|
19618
|
+
color: 'color.orange.700'
|
|
19619
|
+
}
|
|
19620
|
+
},
|
|
19621
|
+
error: {
|
|
19622
|
+
indicator: {
|
|
19623
|
+
backgroundColor: 'color.red.500'
|
|
19624
|
+
},
|
|
19625
|
+
label: {
|
|
19626
|
+
color: 'color.red.700'
|
|
19627
|
+
}
|
|
19628
|
+
}
|
|
19629
|
+
};
|
|
19630
|
+
};
|
|
19631
|
+
|
|
19632
|
+
var _excluded$Y = ["label", "status", "views", "themeMode"];
|
|
19633
|
+
var StatusIndicatorView = _ref => {
|
|
19634
|
+
var {
|
|
19635
|
+
label,
|
|
19636
|
+
status = 'default',
|
|
19637
|
+
views,
|
|
19638
|
+
themeMode: elementMode
|
|
19639
|
+
} = _ref,
|
|
19640
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$Y);
|
|
19641
|
+
var {
|
|
19642
|
+
themeMode
|
|
19643
|
+
} = appStudio.useTheme();
|
|
19644
|
+
var themes = getThemes$2();
|
|
19645
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19646
|
+
alignItems: "center",
|
|
19647
|
+
gap: 8,
|
|
19648
|
+
role: "status-indicator"
|
|
19649
|
+
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19650
|
+
role: "status-dot",
|
|
19651
|
+
width: "8px",
|
|
19652
|
+
height: "8px",
|
|
19653
|
+
borderRadius: "50%"
|
|
19654
|
+
}, themes[status].indicator, views == null ? void 0 : views.indicator)), label && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19655
|
+
role: "status-label",
|
|
19656
|
+
fontSize: "14px",
|
|
19657
|
+
lineHeight: "20px"
|
|
19658
|
+
}, themes[status].label, views == null ? void 0 : views.label), label)));
|
|
19659
|
+
};
|
|
19660
|
+
|
|
19661
|
+
var StatusIndicator = props => (/*#__PURE__*/React__default.createElement(StatusIndicatorView, Object.assign({}, props)));
|
|
19662
|
+
|
|
19663
|
+
var getOKRTheme = mode => {
|
|
19664
|
+
var isDark = mode === 'dark';
|
|
19665
|
+
return {
|
|
19666
|
+
container: {
|
|
19667
|
+
width: '100%',
|
|
19668
|
+
gap: 16
|
|
19669
|
+
},
|
|
19670
|
+
objectiveCard: {
|
|
19671
|
+
backgroundColor: isDark ? 'rgba(15, 23, 42, 0.6)' : 'color.white',
|
|
19672
|
+
borderColor: isDark ? 'rgba(148, 163, 184, 0.24)' : 'color.gray.200',
|
|
19673
|
+
borderWidth: '1px',
|
|
19674
|
+
borderStyle: 'solid',
|
|
19675
|
+
borderRadius: 16,
|
|
19676
|
+
padding: 24,
|
|
19677
|
+
gap: 20
|
|
19678
|
+
},
|
|
19679
|
+
tag: {
|
|
19680
|
+
display: 'inline-flex',
|
|
19681
|
+
alignItems: 'center',
|
|
19682
|
+
padding: '4px 10px',
|
|
19683
|
+
borderRadius: 999,
|
|
19684
|
+
backgroundColor: isDark ? 'rgba(148, 163, 184, 0.16)' : 'color.gray.100'
|
|
19685
|
+
},
|
|
19686
|
+
keyResultItem: {
|
|
19687
|
+
padding: 16,
|
|
19688
|
+
borderRadius: 12,
|
|
19689
|
+
borderWidth: '1px',
|
|
19690
|
+
borderStyle: 'solid',
|
|
19691
|
+
borderColor: isDark ? 'rgba(148, 163, 184, 0.18)' : 'color.gray.200',
|
|
19692
|
+
backgroundColor: isDark ? 'rgba(15, 23, 42, 0.35)' : 'color.gray.50',
|
|
19693
|
+
gap: 12
|
|
19694
|
+
},
|
|
19695
|
+
divider: {
|
|
19696
|
+
height: 1,
|
|
19697
|
+
backgroundColor: isDark ? 'rgba(148, 163, 184, 0.24)' : 'color.gray.200',
|
|
19698
|
+
width: '100%'
|
|
19699
|
+
}
|
|
19700
|
+
};
|
|
19701
|
+
};
|
|
19702
|
+
var STATUS_METADATA = {
|
|
19703
|
+
notStarted: {
|
|
19704
|
+
indicator: 'info',
|
|
19705
|
+
label: 'Not started'
|
|
19706
|
+
},
|
|
19707
|
+
onTrack: {
|
|
19708
|
+
indicator: 'success',
|
|
19709
|
+
label: 'On track'
|
|
19710
|
+
},
|
|
19711
|
+
atRisk: {
|
|
19712
|
+
indicator: 'warning',
|
|
19713
|
+
label: 'At risk'
|
|
19714
|
+
},
|
|
19715
|
+
offTrack: {
|
|
19716
|
+
indicator: 'error',
|
|
19717
|
+
label: 'Off track'
|
|
19718
|
+
},
|
|
19719
|
+
achieved: {
|
|
19720
|
+
indicator: 'success',
|
|
19721
|
+
label: 'Achieved'
|
|
19722
|
+
}
|
|
19723
|
+
};
|
|
19724
|
+
var deriveStatusFromProgress = progress => {
|
|
19725
|
+
if (progress >= 100) {
|
|
19726
|
+
return 'achieved';
|
|
19727
|
+
}
|
|
19728
|
+
if (progress >= 70) {
|
|
19729
|
+
return 'onTrack';
|
|
19730
|
+
}
|
|
19731
|
+
if (progress >= 40) {
|
|
19732
|
+
return 'atRisk';
|
|
19733
|
+
}
|
|
19734
|
+
if (progress > 0) {
|
|
19735
|
+
return 'offTrack';
|
|
19736
|
+
}
|
|
19737
|
+
return 'notStarted';
|
|
19738
|
+
};
|
|
19739
|
+
var clampProgress = value => {
|
|
19740
|
+
if (typeof value !== 'number' || Number.isNaN(value)) {
|
|
19741
|
+
return 0;
|
|
19742
|
+
}
|
|
19743
|
+
return Math.max(0, Math.min(100, Math.round(value)));
|
|
19744
|
+
};
|
|
19745
|
+
|
|
19746
|
+
var formatPercentage = value => value + "%";
|
|
19747
|
+
var formatConfidence = confidence => {
|
|
19748
|
+
if (!confidence) {
|
|
19749
|
+
return undefined;
|
|
19750
|
+
}
|
|
19751
|
+
return confidence.charAt(0).toUpperCase() + confidence.slice(1);
|
|
19752
|
+
};
|
|
19753
|
+
var getObjectiveProgress = objective => {
|
|
19754
|
+
if (typeof objective.progress === 'number') {
|
|
19755
|
+
return clampProgress(objective.progress);
|
|
19756
|
+
}
|
|
19757
|
+
if (!objective.keyResults.length) {
|
|
19758
|
+
return 0;
|
|
19759
|
+
}
|
|
19760
|
+
var total = objective.keyResults.reduce((acc, keyResult) => {
|
|
19761
|
+
var _keyResult$progress;
|
|
19762
|
+
return acc + ((_keyResult$progress = keyResult.progress) != null ? _keyResult$progress : 0);
|
|
19763
|
+
}, 0);
|
|
19764
|
+
return clampProgress(total / objective.keyResults.length);
|
|
19765
|
+
};
|
|
19766
|
+
var renderStatusIndicator = (status, themeMode, views) => {
|
|
19767
|
+
var metadata = STATUS_METADATA[status];
|
|
19768
|
+
return /*#__PURE__*/React__default.createElement(StatusIndicator, {
|
|
19769
|
+
themeMode: themeMode,
|
|
19770
|
+
status: metadata.indicator,
|
|
19771
|
+
label: metadata.label,
|
|
19772
|
+
views: views
|
|
19773
|
+
});
|
|
19774
|
+
};
|
|
19775
|
+
var OKRView = _ref => {
|
|
19776
|
+
var {
|
|
19777
|
+
objectives,
|
|
19778
|
+
themeMode: elementMode,
|
|
19779
|
+
views,
|
|
19780
|
+
onKeyResultClick,
|
|
19781
|
+
renderObjectiveFooter,
|
|
19782
|
+
renderKeyResultFooter
|
|
19783
|
+
} = _ref;
|
|
19784
|
+
var {
|
|
19785
|
+
themeMode
|
|
19786
|
+
} = appStudio.useTheme();
|
|
19787
|
+
var currentMode = elementMode || themeMode || 'light';
|
|
19788
|
+
var theme = getOKRTheme(currentMode);
|
|
19789
|
+
var secondaryTextColor = currentMode === 'dark' ? 'color.gray.200' : 'color.gray.600';
|
|
19790
|
+
var subtleTextColor = currentMode === 'dark' ? 'color.gray.300' : 'color.gray.500';
|
|
19791
|
+
var tagTextColor = currentMode === 'dark' ? 'color.gray.100' : 'color.gray.700';
|
|
19792
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({}, theme.container, views == null ? void 0 : views.container), objectives.map(objective => {
|
|
19793
|
+
var _objective$status, _objective$tags, _views$objectiveProgr, _views$objectiveProgr2, _views$objectiveProgr3, _views$objectiveProgr4;
|
|
19794
|
+
var objectiveProgress = getObjectiveProgress(objective);
|
|
19795
|
+
var objectiveStatus = (_objective$status = objective.status) != null ? _objective$status : deriveStatusFromProgress(objectiveProgress);
|
|
19796
|
+
var objectiveFooter = renderObjectiveFooter == null ? void 0 : renderObjectiveFooter(objective);
|
|
19797
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19798
|
+
key: objective.id
|
|
19799
|
+
}, theme.objectiveCard, views == null ? void 0 : views.objectiveCard), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19800
|
+
justifyContent: "space-between",
|
|
19801
|
+
alignItems: "flex-start",
|
|
19802
|
+
flexWrap: "wrap",
|
|
19803
|
+
gap: 16
|
|
19804
|
+
}, views == null ? void 0 : views.objectiveHeader), /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19805
|
+
gap: 10,
|
|
19806
|
+
minWidth: 240
|
|
19807
|
+
}, /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19808
|
+
size: "lg",
|
|
19809
|
+
weight: "semiBold"
|
|
19810
|
+
}, views == null ? void 0 : views.objectiveTitle), objective.title), objective.description && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19811
|
+
size: "sm",
|
|
19812
|
+
color: secondaryTextColor
|
|
19813
|
+
}, views == null ? void 0 : views.objectiveDescription), objective.description)), (_objective$tags = objective.tags) != null && _objective$tags.length ? (/*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19814
|
+
gap: 8,
|
|
19815
|
+
flexWrap: "wrap"
|
|
19816
|
+
}, views == null ? void 0 : views.objectiveTags), objective.tags.map(tag => (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19817
|
+
key: tag
|
|
19818
|
+
}, theme.tag, views == null ? void 0 : views.tag), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19819
|
+
size: "xs",
|
|
19820
|
+
weight: "medium",
|
|
19821
|
+
color: tagTextColor
|
|
19822
|
+
}, views == null ? void 0 : views.tagText), tag)))))) : null), /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19823
|
+
gap: 8,
|
|
19824
|
+
alignItems: "flex-end",
|
|
19825
|
+
minWidth: 160
|
|
19826
|
+
}, views == null ? void 0 : views.objectiveMeta), objective.owner && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19827
|
+
size: "sm",
|
|
19828
|
+
color: secondaryTextColor
|
|
19829
|
+
}, views == null ? void 0 : views.objectiveOwner), "Owner: ", objective.owner)), objective.timeframe && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19830
|
+
size: "sm",
|
|
19831
|
+
color: subtleTextColor
|
|
19832
|
+
}, views == null ? void 0 : views.objectiveTimeframe), objective.timeframe)), renderStatusIndicator(objectiveStatus, currentMode, views == null ? void 0 : views.objectiveStatus))), /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19833
|
+
gap: 8
|
|
19834
|
+
}, views == null ? void 0 : views.objectiveProgressSection), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, {
|
|
19835
|
+
justifyContent: "space-between",
|
|
19836
|
+
alignItems: "center"
|
|
19837
|
+
}, /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19838
|
+
size: "sm",
|
|
19839
|
+
color: secondaryTextColor
|
|
19840
|
+
}, views == null ? void 0 : views.objectiveProgressLabel), "Progress"), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19841
|
+
size: "sm",
|
|
19842
|
+
weight: "semiBold"
|
|
19843
|
+
}, views == null ? void 0 : views.objectiveProgressValue), formatPercentage(objectiveProgress))), /*#__PURE__*/React__default.createElement(ProgressBar, {
|
|
19844
|
+
value: objectiveProgress,
|
|
19845
|
+
max: 100,
|
|
19846
|
+
views: {
|
|
19847
|
+
container: Object.assign({
|
|
19848
|
+
width: '100%'
|
|
19849
|
+
}, (_views$objectiveProgr = views == null || (_views$objectiveProgr2 = views.objectiveProgressBar) == null ? void 0 : _views$objectiveProgr2.container) != null ? _views$objectiveProgr : {}),
|
|
19850
|
+
bar: Object.assign({}, (_views$objectiveProgr3 = views == null || (_views$objectiveProgr4 = views.objectiveProgressBar) == null ? void 0 : _views$objectiveProgr4.bar) != null ? _views$objectiveProgr3 : {})
|
|
19851
|
+
}
|
|
19852
|
+
})), /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19853
|
+
gap: 16
|
|
19854
|
+
}, views == null ? void 0 : views.keyResultList), objective.keyResults.map((keyResult, index) => {
|
|
19855
|
+
var _keyResult$status, _keyResult$tags, _views$keyResultProgr, _views$keyResultProgr2, _views$keyResultProgr3, _views$keyResultProgr4;
|
|
19856
|
+
var progress = clampProgress(keyResult.progress);
|
|
19857
|
+
var keyResultStatus = (_keyResult$status = keyResult.status) != null ? _keyResult$status : deriveStatusFromProgress(progress);
|
|
19858
|
+
var keyResultFooter = renderKeyResultFooter == null ? void 0 : renderKeyResultFooter(keyResult, objective);
|
|
19859
|
+
var showDivider = index < objective.keyResults.length - 1;
|
|
19860
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19861
|
+
key: keyResult.id,
|
|
19862
|
+
gap: 12
|
|
19863
|
+
}, /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19864
|
+
role: onKeyResultClick ? 'button' : undefined,
|
|
19865
|
+
cursor: onKeyResultClick ? 'pointer' : undefined,
|
|
19866
|
+
onClick: onKeyResultClick ? () => onKeyResultClick(keyResult, objective) : undefined
|
|
19867
|
+
}, theme.keyResultItem, views == null ? void 0 : views.keyResultItem), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19868
|
+
justifyContent: "space-between",
|
|
19869
|
+
alignItems: "flex-start",
|
|
19870
|
+
flexWrap: "wrap",
|
|
19871
|
+
gap: 16
|
|
19872
|
+
}, views == null ? void 0 : views.keyResultHeader), /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19873
|
+
gap: 8,
|
|
19874
|
+
minWidth: 220
|
|
19875
|
+
}, /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19876
|
+
size: "md",
|
|
19877
|
+
weight: "medium"
|
|
19878
|
+
}, views == null ? void 0 : views.keyResultTitle), keyResult.title), keyResult.description && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19879
|
+
size: "sm",
|
|
19880
|
+
color: secondaryTextColor
|
|
19881
|
+
}, views == null ? void 0 : views.keyResultDescription), keyResult.description)), (keyResult.metric || keyResult.target || keyResult.current || keyResult.confidence || keyResult.lastUpdated) && (/*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19882
|
+
gap: 12,
|
|
19883
|
+
flexWrap: "wrap"
|
|
19884
|
+
}, views == null ? void 0 : views.keyResultMeta), keyResult.metric && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19885
|
+
size: "xs",
|
|
19886
|
+
color: secondaryTextColor
|
|
19887
|
+
}, "Metric: ", keyResult.metric)), keyResult.current && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19888
|
+
size: "xs",
|
|
19889
|
+
color: secondaryTextColor
|
|
19890
|
+
}, "Current: ", keyResult.current)), keyResult.target && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19891
|
+
size: "xs",
|
|
19892
|
+
color: secondaryTextColor
|
|
19893
|
+
}, "Target: ", keyResult.target)), keyResult.confidence && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19894
|
+
size: "xs",
|
|
19895
|
+
color: secondaryTextColor
|
|
19896
|
+
}, "Confidence:", ' ', formatConfidence(keyResult.confidence))), keyResult.lastUpdated && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19897
|
+
size: "xs",
|
|
19898
|
+
color: subtleTextColor
|
|
19899
|
+
}, "Updated: ", keyResult.lastUpdated)))), (_keyResult$tags = keyResult.tags) != null && _keyResult$tags.length ? (/*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19900
|
+
gap: 8,
|
|
19901
|
+
flexWrap: "wrap"
|
|
19902
|
+
}, views == null ? void 0 : views.keyResultTags), keyResult.tags.map(tag => (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19903
|
+
key: tag
|
|
19904
|
+
}, theme.tag, views == null ? void 0 : views.keyResultTag), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19905
|
+
size: "xs",
|
|
19906
|
+
weight: "medium",
|
|
19907
|
+
color: tagTextColor
|
|
19908
|
+
}, views == null ? void 0 : views.keyResultTagText), tag)))))) : null), /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19909
|
+
gap: 8,
|
|
19910
|
+
alignItems: "flex-end"
|
|
19911
|
+
}, keyResult.owner && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19912
|
+
size: "xs",
|
|
19913
|
+
color: secondaryTextColor
|
|
19914
|
+
}, views == null ? void 0 : views.keyResultOwner), "Owner: ", keyResult.owner)), renderStatusIndicator(keyResultStatus, currentMode, views == null ? void 0 : views.keyResultStatus))), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19915
|
+
alignItems: "center",
|
|
19916
|
+
gap: 12
|
|
19917
|
+
}, views == null ? void 0 : views.keyResultProgressSection), /*#__PURE__*/React__default.createElement(ProgressBar, {
|
|
19918
|
+
value: progress,
|
|
19919
|
+
max: 100,
|
|
19920
|
+
views: {
|
|
19921
|
+
container: Object.assign({
|
|
19922
|
+
width: '100%'
|
|
19923
|
+
}, (_views$keyResultProgr = views == null || (_views$keyResultProgr2 = views.keyResultProgressBar) == null ? void 0 : _views$keyResultProgr2.container) != null ? _views$keyResultProgr : {}),
|
|
19924
|
+
bar: Object.assign({}, (_views$keyResultProgr3 = views == null || (_views$keyResultProgr4 = views.keyResultProgressBar) == null ? void 0 : _views$keyResultProgr4.bar) != null ? _views$keyResultProgr3 : {})
|
|
19925
|
+
}
|
|
19926
|
+
}), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19927
|
+
size: "xs",
|
|
19928
|
+
weight: "semiBold"
|
|
19929
|
+
}, views == null ? void 0 : views.keyResultProgressValue), formatPercentage(progress))), keyResultFooter ? (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, views == null ? void 0 : views.footer), keyResultFooter)) : null), showDivider ? /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, theme.divider)) : null);
|
|
19930
|
+
})), objectiveFooter ? (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, views == null ? void 0 : views.footer), objectiveFooter)) : null);
|
|
19931
|
+
}));
|
|
19932
|
+
};
|
|
19933
|
+
|
|
19934
|
+
var OKR = props => /*#__PURE__*/React__default.createElement(OKRView, Object.assign({}, props));
|
|
19935
|
+
|
|
19976
19936
|
var defaultStyles = {};
|
|
19977
19937
|
// Create a context that includes both styles and the onClick function
|
|
19978
19938
|
var TableContext = /*#__PURE__*/React.createContext({
|
|
@@ -20755,7 +20715,7 @@ var HighlightStyles = {
|
|
|
20755
20715
|
})
|
|
20756
20716
|
};
|
|
20757
20717
|
|
|
20758
|
-
var _excluded$
|
|
20718
|
+
var _excluded$Z = ["text", "typingSpeed", "pauseTime", "onComplete", "showCursor", "cursorColor", "textStyle", "as"];
|
|
20759
20719
|
/**
|
|
20760
20720
|
* A component that creates a typewriter effect for text
|
|
20761
20721
|
*/
|
|
@@ -20769,7 +20729,7 @@ var TypewriterEffect = _ref => {
|
|
|
20769
20729
|
cursorColor = 'currentColor',
|
|
20770
20730
|
textStyle
|
|
20771
20731
|
} = _ref,
|
|
20772
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
20732
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$Z);
|
|
20773
20733
|
// Convert text to array if it's a string
|
|
20774
20734
|
var textArray = Array.isArray(text) ? text : [text];
|
|
20775
20735
|
// State for the currently displayed text
|
|
@@ -20836,7 +20796,7 @@ var TypewriterEffect = _ref => {
|
|
|
20836
20796
|
}))))));
|
|
20837
20797
|
};
|
|
20838
20798
|
|
|
20839
|
-
var _excluded$
|
|
20799
|
+
var _excluded$_ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "centered", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration"];
|
|
20840
20800
|
function escapeRegExp(string) {
|
|
20841
20801
|
return string.replace(/[.*+?^${}()|[\\]\\/g, '\\$&');
|
|
20842
20802
|
}
|
|
@@ -20858,7 +20818,7 @@ var TitleView = _ref => {
|
|
|
20858
20818
|
highlightTypewriter: propHighlightTypewriter = false,
|
|
20859
20819
|
highlightTypewriterDuration = 3000
|
|
20860
20820
|
} = _ref,
|
|
20861
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
20821
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$_);
|
|
20862
20822
|
var {
|
|
20863
20823
|
ref,
|
|
20864
20824
|
inView
|
|
@@ -21133,7 +21093,7 @@ var getToggleVariants = (color, isLight) => ({
|
|
|
21133
21093
|
}
|
|
21134
21094
|
});
|
|
21135
21095
|
|
|
21136
|
-
var _excluded
|
|
21096
|
+
var _excluded$$ = ["children", "shape", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle", "views", "backgroundColor", "color", "themeMode"];
|
|
21137
21097
|
var ToggleView = _ref => {
|
|
21138
21098
|
var _ref2;
|
|
21139
21099
|
var {
|
|
@@ -21153,7 +21113,7 @@ var ToggleView = _ref => {
|
|
|
21153
21113
|
// 2nd candidate for main color
|
|
21154
21114
|
themeMode: elementMode
|
|
21155
21115
|
} = _ref,
|
|
21156
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded
|
|
21116
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$$);
|
|
21157
21117
|
/* theme helpers */
|
|
21158
21118
|
var {
|
|
21159
21119
|
getColor,
|
|
@@ -21197,7 +21157,7 @@ var ToggleView = _ref => {
|
|
|
21197
21157
|
}, props, views == null ? void 0 : views.container), children);
|
|
21198
21158
|
};
|
|
21199
21159
|
|
|
21200
|
-
var _excluded$
|
|
21160
|
+
var _excluded$10 = ["children", "shape", "variant", "isDisabled", "isToggled", "onToggle"];
|
|
21201
21161
|
// Destructuring properties from ToggleProps to be used within the ToggleComponent.
|
|
21202
21162
|
var ToggleComponent = _ref => {
|
|
21203
21163
|
var {
|
|
@@ -21209,7 +21169,7 @@ var ToggleComponent = _ref => {
|
|
|
21209
21169
|
isToggled = false,
|
|
21210
21170
|
onToggle
|
|
21211
21171
|
} = _ref,
|
|
21212
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
21172
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$10);
|
|
21213
21173
|
// Initializing toggle state and set state functions using the custom hook useToggleState.
|
|
21214
21174
|
var {
|
|
21215
21175
|
isHovered,
|
|
@@ -21544,7 +21504,7 @@ var DropdownMenuItemStates = {
|
|
|
21544
21504
|
}
|
|
21545
21505
|
};
|
|
21546
21506
|
|
|
21547
|
-
var _excluded
|
|
21507
|
+
var _excluded$11 = ["children", "views"],
|
|
21548
21508
|
_excluded2$f = ["items", "side", "align", "views"],
|
|
21549
21509
|
_excluded3$9 = ["item", "views"],
|
|
21550
21510
|
_excluded4$8 = ["views"],
|
|
@@ -21585,7 +21545,7 @@ var DropdownMenuTrigger = _ref2 => {
|
|
|
21585
21545
|
children,
|
|
21586
21546
|
views
|
|
21587
21547
|
} = _ref2,
|
|
21588
|
-
props = _objectWithoutPropertiesLoose(_ref2, _excluded
|
|
21548
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded$11);
|
|
21589
21549
|
var {
|
|
21590
21550
|
isOpen,
|
|
21591
21551
|
setIsOpen,
|
|
@@ -21838,7 +21798,7 @@ var DropdownMenuView = _ref6 => {
|
|
|
21838
21798
|
}));
|
|
21839
21799
|
};
|
|
21840
21800
|
|
|
21841
|
-
var _excluded$
|
|
21801
|
+
var _excluded$12 = ["trigger", "items", "size", "variant", "side", "align", "defaultOpen", "views"];
|
|
21842
21802
|
/**
|
|
21843
21803
|
* DropdownMenu component for displaying a menu when clicking on a trigger element.
|
|
21844
21804
|
*/
|
|
@@ -21853,7 +21813,7 @@ var DropdownMenuComponent = _ref => {
|
|
|
21853
21813
|
defaultOpen = false,
|
|
21854
21814
|
views
|
|
21855
21815
|
} = _ref,
|
|
21856
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
21816
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$12);
|
|
21857
21817
|
var {
|
|
21858
21818
|
isOpen,
|
|
21859
21819
|
setIsOpen,
|
|
@@ -22267,7 +22227,7 @@ var DefaultColorPalette$1 = [
|
|
|
22267
22227
|
category: 'neutral'
|
|
22268
22228
|
}];
|
|
22269
22229
|
|
|
22270
|
-
var _excluded$
|
|
22230
|
+
var _excluded$13 = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "error", "isDisabled", "isReadOnly", "predefinedColors", "showCustomInput", "showRecentColors", "isOpen", "selectedColor", "recentColors", "customColor", "handleToggle", "handleColorSelect", "handleCustomColorChange", "handleCustomColorSubmit", "triggerRef", "dropdownRef"];
|
|
22271
22231
|
var ColorPickerView = _ref => {
|
|
22272
22232
|
var {
|
|
22273
22233
|
// Basic props
|
|
@@ -22302,7 +22262,7 @@ var ColorPickerView = _ref => {
|
|
|
22302
22262
|
dropdownRef
|
|
22303
22263
|
// Other props
|
|
22304
22264
|
} = _ref,
|
|
22305
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
22265
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$13);
|
|
22306
22266
|
var {
|
|
22307
22267
|
getColor
|
|
22308
22268
|
} = appStudio.useTheme();
|
|
@@ -24632,7 +24592,7 @@ var useEmojiPickerState = props => {
|
|
|
24632
24592
|
};
|
|
24633
24593
|
};
|
|
24634
24594
|
|
|
24635
|
-
var _excluded$
|
|
24595
|
+
var _excluded$14 = ["id", "name", "label", "placeholder", "helperText", "views", "size", "shape", "variant", "error", "isDisabled", "isReadOnly", "showSearch", "showCategories", "showRecentEmojis", "enabledCategories", "isOpen", "selectedEmoji", "recentEmojis", "searchQuery", "activeCategory", "filteredEmojis", "handleToggle", "handleEmojiSelect", "handleSearchChange", "handleCategoryChange", "triggerRef", "dropdownRef"];
|
|
24636
24596
|
var EmojiPickerView = _ref => {
|
|
24637
24597
|
var {
|
|
24638
24598
|
// Basic props
|
|
@@ -24670,7 +24630,7 @@ var EmojiPickerView = _ref => {
|
|
|
24670
24630
|
dropdownRef
|
|
24671
24631
|
// Other props
|
|
24672
24632
|
} = _ref,
|
|
24673
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
24633
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$14);
|
|
24674
24634
|
var {
|
|
24675
24635
|
getColor
|
|
24676
24636
|
} = appStudio.useTheme();
|
|
@@ -24859,7 +24819,7 @@ var MenubarItemStates = {
|
|
|
24859
24819
|
}
|
|
24860
24820
|
};
|
|
24861
24821
|
|
|
24862
|
-
var _excluded$
|
|
24822
|
+
var _excluded$15 = ["children", "orientation", "size", "variant", "views"];
|
|
24863
24823
|
// Create context for the Menubar
|
|
24864
24824
|
var MenubarContext = /*#__PURE__*/React.createContext({
|
|
24865
24825
|
activeMenuId: null,
|
|
@@ -24896,7 +24856,7 @@ var MenubarRoot = _ref2 => {
|
|
|
24896
24856
|
variant = 'default',
|
|
24897
24857
|
views
|
|
24898
24858
|
} = _ref2,
|
|
24899
|
-
props = _objectWithoutPropertiesLoose(_ref2, _excluded$
|
|
24859
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded$15);
|
|
24900
24860
|
var Container = orientation === 'horizontal' ? appStudio.Horizontal : appStudio.Vertical;
|
|
24901
24861
|
return /*#__PURE__*/React__default.createElement(Container, Object.assign({
|
|
24902
24862
|
role: "menubar",
|
|
@@ -25216,7 +25176,7 @@ var MenubarView = _ref8 => {
|
|
|
25216
25176
|
})))))));
|
|
25217
25177
|
};
|
|
25218
25178
|
|
|
25219
|
-
var _excluded$
|
|
25179
|
+
var _excluded$16 = ["items", "orientation", "size", "variant", "defaultActiveMenuId", "defaultOpenMenuId", "views"];
|
|
25220
25180
|
/**
|
|
25221
25181
|
* Menubar component for creating horizontal or vertical menu bars with dropdown menus.
|
|
25222
25182
|
*/
|
|
@@ -25230,7 +25190,7 @@ var MenubarComponent = _ref => {
|
|
|
25230
25190
|
defaultOpenMenuId = null,
|
|
25231
25191
|
views
|
|
25232
25192
|
} = _ref,
|
|
25233
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25193
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$16);
|
|
25234
25194
|
var {
|
|
25235
25195
|
activeMenuId,
|
|
25236
25196
|
setActiveMenuId,
|
|
@@ -25412,7 +25372,7 @@ var DisabledButtonStyles = {
|
|
|
25412
25372
|
}
|
|
25413
25373
|
};
|
|
25414
25374
|
|
|
25415
|
-
var _excluded$
|
|
25375
|
+
var _excluded$17 = ["currentPage", "totalPages", "onPageChange", "pageSize", "pageSizeOptions", "onPageSizeChange", "showPageSizeSelector", "showPageInfo", "maxPageButtons", "showFirstLastButtons", "size", "variant", "shape", "visiblePageNumbers", "views"];
|
|
25416
25376
|
var PaginationView = _ref => {
|
|
25417
25377
|
var {
|
|
25418
25378
|
currentPage,
|
|
@@ -25443,7 +25403,7 @@ var PaginationView = _ref => {
|
|
|
25443
25403
|
visiblePageNumbers,
|
|
25444
25404
|
views
|
|
25445
25405
|
} = _ref,
|
|
25446
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25406
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$17);
|
|
25447
25407
|
var handlePageChange = page => {
|
|
25448
25408
|
if (page < 1 || page > totalPages || page === currentPage) {
|
|
25449
25409
|
return;
|
|
@@ -25562,7 +25522,7 @@ var PaginationView = _ref => {
|
|
|
25562
25522
|
}, option.label))))));
|
|
25563
25523
|
};
|
|
25564
25524
|
|
|
25565
|
-
var _excluded$
|
|
25525
|
+
var _excluded$18 = ["currentPage", "totalPages", "onPageChange", "pageSize", "pageSizeOptions", "onPageSizeChange", "showPageSizeSelector", "showPageInfo", "maxPageButtons", "showFirstLastButtons", "size", "variant", "shape", "views"];
|
|
25566
25526
|
/**
|
|
25567
25527
|
* Pagination component for navigating through pages of content.
|
|
25568
25528
|
*/
|
|
@@ -25583,7 +25543,7 @@ var PaginationComponent = _ref => {
|
|
|
25583
25543
|
shape = 'rounded',
|
|
25584
25544
|
views
|
|
25585
25545
|
} = _ref,
|
|
25586
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25546
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$18);
|
|
25587
25547
|
var {
|
|
25588
25548
|
visiblePageNumbers
|
|
25589
25549
|
} = usePaginationState(currentPage, totalPages, maxPageButtons);
|
|
@@ -25607,55 +25567,6 @@ var PaginationComponent = _ref => {
|
|
|
25607
25567
|
};
|
|
25608
25568
|
var Pagination = PaginationComponent;
|
|
25609
25569
|
|
|
25610
|
-
var _excluded$17 = ["value", "max", "color", "backgroundColor", "height", "radius", "views", "themeMode"];
|
|
25611
|
-
var ProgressBarView = _ref => {
|
|
25612
|
-
var {
|
|
25613
|
-
value = 0,
|
|
25614
|
-
max = 100,
|
|
25615
|
-
color = 'theme.primary',
|
|
25616
|
-
backgroundColor = 'color.gray.200',
|
|
25617
|
-
height = 8,
|
|
25618
|
-
radius = 4,
|
|
25619
|
-
views,
|
|
25620
|
-
themeMode: elementMode
|
|
25621
|
-
} = _ref,
|
|
25622
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$17);
|
|
25623
|
-
var {
|
|
25624
|
-
getColor,
|
|
25625
|
-
themeMode
|
|
25626
|
-
} = appStudio.useTheme();
|
|
25627
|
-
var currentMode = elementMode ? elementMode : themeMode;
|
|
25628
|
-
var percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
25629
|
-
var trackColor = getColor(backgroundColor, {
|
|
25630
|
-
themeMode: currentMode
|
|
25631
|
-
});
|
|
25632
|
-
var barColor = getColor(color, {
|
|
25633
|
-
themeMode: currentMode
|
|
25634
|
-
});
|
|
25635
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
25636
|
-
role: "progressbar",
|
|
25637
|
-
"aria-valuenow": value,
|
|
25638
|
-
"aria-valuemin": 0,
|
|
25639
|
-
"aria-valuemax": max,
|
|
25640
|
-
width: "100%",
|
|
25641
|
-
height: height,
|
|
25642
|
-
backgroundColor: trackColor,
|
|
25643
|
-
borderRadius: radius,
|
|
25644
|
-
overflow: "hidden"
|
|
25645
|
-
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
25646
|
-
width: percentage + "%",
|
|
25647
|
-
height: "100%",
|
|
25648
|
-
backgroundColor: barColor,
|
|
25649
|
-
borderRadius: radius
|
|
25650
|
-
}, views == null ? void 0 : views.bar)));
|
|
25651
|
-
};
|
|
25652
|
-
|
|
25653
|
-
/**
|
|
25654
|
-
* ProgressBar component displays completion status of a task or process.
|
|
25655
|
-
*/
|
|
25656
|
-
var ProgressBarComponent = props => (/*#__PURE__*/React__default.createElement(ProgressBarView, Object.assign({}, props)));
|
|
25657
|
-
var ProgressBar = ProgressBarComponent;
|
|
25658
|
-
|
|
25659
25570
|
/**
|
|
25660
25571
|
* Separator Styles
|
|
25661
25572
|
*
|
|
@@ -25709,7 +25620,7 @@ var DefaultSeparatorStyles = {
|
|
|
25709
25620
|
}
|
|
25710
25621
|
};
|
|
25711
25622
|
|
|
25712
|
-
var _excluded$
|
|
25623
|
+
var _excluded$19 = ["orientation", "variant", "thickness", "color", "spacing", "label", "decorative", "views", "themeMode"];
|
|
25713
25624
|
var SeparatorView = _ref => {
|
|
25714
25625
|
var {
|
|
25715
25626
|
orientation = 'horizontal',
|
|
@@ -25721,7 +25632,7 @@ var SeparatorView = _ref => {
|
|
|
25721
25632
|
decorative = false,
|
|
25722
25633
|
views
|
|
25723
25634
|
} = _ref,
|
|
25724
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25635
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$19);
|
|
25725
25636
|
// Access theme if needed for future enhancements
|
|
25726
25637
|
var {
|
|
25727
25638
|
themeMode
|
|
@@ -25789,7 +25700,7 @@ var SeparatorComponent = props => {
|
|
|
25789
25700
|
var Separator = SeparatorComponent;
|
|
25790
25701
|
var Divider = SeparatorComponent;
|
|
25791
25702
|
|
|
25792
|
-
var _excluded$
|
|
25703
|
+
var _excluded$1a = ["isSupported", "isSharing", "onShare", "label", "children", "icon", "size", "isDisabled", "isLoading", "iconPosition", "disableWhenUnsupported"];
|
|
25793
25704
|
var ICON_SIZE_MAP = {
|
|
25794
25705
|
xs: 12,
|
|
25795
25706
|
sm: 14,
|
|
@@ -25812,7 +25723,7 @@ var ShareButtonView = _ref => {
|
|
|
25812
25723
|
iconPosition,
|
|
25813
25724
|
disableWhenUnsupported = true
|
|
25814
25725
|
} = _ref,
|
|
25815
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25726
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1a);
|
|
25816
25727
|
var resolvedSize = size != null ? size : 'md';
|
|
25817
25728
|
var resolvedIcon = icon != null ? icon : (/*#__PURE__*/React__default.createElement(ShareIcon, {
|
|
25818
25729
|
widthHeight: ICON_SIZE_MAP[resolvedSize],
|
|
@@ -25914,14 +25825,14 @@ var useShareButton = props => {
|
|
|
25914
25825
|
};
|
|
25915
25826
|
};
|
|
25916
25827
|
|
|
25917
|
-
var _excluded$
|
|
25828
|
+
var _excluded$1b = ["shareData", "onShareStart", "onShareSuccess", "onShareCancel", "onShareError", "onUnsupported", "onClick"];
|
|
25918
25829
|
var ShareButtonComponent = props => {
|
|
25919
25830
|
var {
|
|
25920
25831
|
isSupported,
|
|
25921
25832
|
isSharing,
|
|
25922
25833
|
handleShare
|
|
25923
25834
|
} = useShareButton(props);
|
|
25924
|
-
var viewProps = _objectWithoutPropertiesLoose(props, _excluded$
|
|
25835
|
+
var viewProps = _objectWithoutPropertiesLoose(props, _excluded$1b);
|
|
25925
25836
|
return /*#__PURE__*/React__default.createElement(ShareButtonView, Object.assign({}, viewProps, {
|
|
25926
25837
|
isSupported: isSupported,
|
|
25927
25838
|
isSharing: isSharing,
|
|
@@ -25930,82 +25841,6 @@ var ShareButtonComponent = props => {
|
|
|
25930
25841
|
};
|
|
25931
25842
|
var ShareButton = ShareButtonComponent;
|
|
25932
25843
|
|
|
25933
|
-
var getThemes$2 = themeMode => {
|
|
25934
|
-
return {
|
|
25935
|
-
default: {
|
|
25936
|
-
indicator: {
|
|
25937
|
-
backgroundColor: 'color.gray.400'
|
|
25938
|
-
},
|
|
25939
|
-
label: {
|
|
25940
|
-
color: 'color.gray.700'
|
|
25941
|
-
}
|
|
25942
|
-
},
|
|
25943
|
-
info: {
|
|
25944
|
-
indicator: {
|
|
25945
|
-
backgroundColor: 'color.blue.500'
|
|
25946
|
-
},
|
|
25947
|
-
label: {
|
|
25948
|
-
color: 'color.blue.700'
|
|
25949
|
-
}
|
|
25950
|
-
},
|
|
25951
|
-
success: {
|
|
25952
|
-
indicator: {
|
|
25953
|
-
backgroundColor: 'color.green.500'
|
|
25954
|
-
},
|
|
25955
|
-
label: {
|
|
25956
|
-
color: 'color.green.700'
|
|
25957
|
-
}
|
|
25958
|
-
},
|
|
25959
|
-
warning: {
|
|
25960
|
-
indicator: {
|
|
25961
|
-
backgroundColor: 'color.orange.500'
|
|
25962
|
-
},
|
|
25963
|
-
label: {
|
|
25964
|
-
color: 'color.orange.700'
|
|
25965
|
-
}
|
|
25966
|
-
},
|
|
25967
|
-
error: {
|
|
25968
|
-
indicator: {
|
|
25969
|
-
backgroundColor: 'color.red.500'
|
|
25970
|
-
},
|
|
25971
|
-
label: {
|
|
25972
|
-
color: 'color.red.700'
|
|
25973
|
-
}
|
|
25974
|
-
}
|
|
25975
|
-
};
|
|
25976
|
-
};
|
|
25977
|
-
|
|
25978
|
-
var _excluded$1b = ["label", "status", "views", "themeMode"];
|
|
25979
|
-
var StatusIndicatorView = _ref => {
|
|
25980
|
-
var {
|
|
25981
|
-
label,
|
|
25982
|
-
status = 'default',
|
|
25983
|
-
views,
|
|
25984
|
-
themeMode: elementMode
|
|
25985
|
-
} = _ref,
|
|
25986
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$1b);
|
|
25987
|
-
var {
|
|
25988
|
-
themeMode
|
|
25989
|
-
} = appStudio.useTheme();
|
|
25990
|
-
var themes = getThemes$2();
|
|
25991
|
-
return /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
25992
|
-
alignItems: "center",
|
|
25993
|
-
gap: 8,
|
|
25994
|
-
role: "status-indicator"
|
|
25995
|
-
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
25996
|
-
role: "status-dot",
|
|
25997
|
-
width: "8px",
|
|
25998
|
-
height: "8px",
|
|
25999
|
-
borderRadius: "50%"
|
|
26000
|
-
}, themes[status].indicator, views == null ? void 0 : views.indicator)), label && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
26001
|
-
role: "status-label",
|
|
26002
|
-
fontSize: "14px",
|
|
26003
|
-
lineHeight: "20px"
|
|
26004
|
-
}, themes[status].label, views == null ? void 0 : views.label), label)));
|
|
26005
|
-
};
|
|
26006
|
-
|
|
26007
|
-
var StatusIndicator = props => (/*#__PURE__*/React__default.createElement(StatusIndicatorView, Object.assign({}, props)));
|
|
26008
|
-
|
|
26009
25844
|
var useSidebarState = function useSidebarState(defaultExpanded, expanded, onExpandedChange, breakpoint) {
|
|
26010
25845
|
if (defaultExpanded === void 0) {
|
|
26011
25846
|
defaultExpanded = true;
|
|
@@ -37661,7 +37496,6 @@ exports.BookmarkIcon = BookmarkIcon;
|
|
|
37661
37496
|
exports.Button = Button;
|
|
37662
37497
|
exports.Calendar = Calendar;
|
|
37663
37498
|
exports.CalendarIcon = CalendarIcon;
|
|
37664
|
-
exports.CalendarWeek = CalendarWeek;
|
|
37665
37499
|
exports.CameraIcon = CameraIcon;
|
|
37666
37500
|
exports.Card = Card;
|
|
37667
37501
|
exports.Carousel = Carousel;
|
|
@@ -37752,6 +37586,7 @@ exports.Modal = Modal;
|
|
|
37752
37586
|
exports.MoonIcon = MoonIcon;
|
|
37753
37587
|
exports.NavigationMenu = NavigationMenu;
|
|
37754
37588
|
exports.NotificationIcon = NotificationIcon;
|
|
37589
|
+
exports.OKR = OKR;
|
|
37755
37590
|
exports.OTPInput = OTPInput;
|
|
37756
37591
|
exports.OpenEyeIcon = OpenEyeIcon;
|
|
37757
37592
|
exports.Pagination = Pagination;
|