@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('core-js/modules/es.object.assign.js'), require('react'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.iterator.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/web.dom-collections.iterator.js'), require('core-js/modules/es.regexp.to-string.js'), require('app-studio'), require('core-js/modules/es.symbol.description.js'), require('core-js/modules/es.parse-float.js'), require('core-js/modules/es.string.trim-end.js'), require('core-js/modules/es.parse-int.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.string.replace.js'), require('core-js/modules/es.string.starts-with.js'), require('core-js/modules/es.string.trim.js'), require('core-js/modules/es.array-buffer.constructor.js'), require('core-js/modules/es.array-buffer.slice.js'), require('core-js/modules/es.typed-array.uint8-array.js'), require('core-js/modules/es.typed-array.fill.js'), require('core-js/modules/es.typed-array.set.js'), require('core-js/modules/es.typed-array.sort.js'), require('core-js/modules/es.typed-array.to-locale-string.js'), require('core-js/modules/web.url.js'), require('core-js/modules/web.url.to-json.js'), require('core-js/modules/web.url-search-params.js'), require('zustand'), require('react-router-dom'), require('core-js/modules/es.string.ends-with.js'), require('contrast'), require('core-js/modules/es.promise.js'), require('core-js/modules/es.array.reduce.js'), require('core-js/modules/es.number.to-fixed.js'), require('core-js/modules/es.
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', 'core-js/modules/es.object.assign.js', 'react', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.iterator.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/web.dom-collections.iterator.js', 'core-js/modules/es.regexp.to-string.js', 'app-studio', 'core-js/modules/es.symbol.description.js', 'core-js/modules/es.parse-float.js', 'core-js/modules/es.string.trim-end.js', 'core-js/modules/es.parse-int.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.string.replace.js', 'core-js/modules/es.string.starts-with.js', 'core-js/modules/es.string.trim.js', 'core-js/modules/es.array-buffer.constructor.js', 'core-js/modules/es.array-buffer.slice.js', 'core-js/modules/es.typed-array.uint8-array.js', 'core-js/modules/es.typed-array.fill.js', 'core-js/modules/es.typed-array.set.js', 'core-js/modules/es.typed-array.sort.js', 'core-js/modules/es.typed-array.to-locale-string.js', 'core-js/modules/web.url.js', 'core-js/modules/web.url.to-json.js', 'core-js/modules/web.url-search-params.js', 'zustand', 'react-router-dom', 'core-js/modules/es.string.ends-with.js', 'contrast', 'core-js/modules/es.promise.js', 'core-js/modules/es.array.reduce.js', 'core-js/modules/es.number.to-fixed.js', 'core-js/modules/es.
|
|
4
|
-
(global = global || self, factory(global['@app-studio/web'] = {}, null, global.React, null, null, null, null, null, global.appStudio, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, global.zustand, global.reactRouterDom, null, global.contrast, null, null, null, null, null, global.
|
|
5
|
-
}(this, (function (exports, es_object_assign_js, React, es_array_includes_js, es_array_iterator_js, es_string_includes_js, web_domCollections_iterator_js, es_regexp_toString_js, appStudio, es_symbol_description_js, es_parseFloat_js, es_string_trimEnd_js, es_parseInt_js, es_regexp_exec_js, es_string_replace_js, es_string_startsWith_js, es_string_trim_js, es_arrayBuffer_constructor_js, es_arrayBuffer_slice_js, es_typedArray_uint8Array_js, es_typedArray_fill_js, es_typedArray_set_js, es_typedArray_sort_js, es_typedArray_toLocaleString_js, web_url_js, web_url_toJson_js, web_urlSearchParams_js, zustand, reactRouterDom, es_string_endsWith_js, contrast, es_promise_js, es_array_reduce_js, es_number_toFixed_js,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('core-js/modules/es.object.assign.js'), require('react'), require('core-js/modules/es.array.includes.js'), require('core-js/modules/es.array.iterator.js'), require('core-js/modules/es.string.includes.js'), require('core-js/modules/web.dom-collections.iterator.js'), require('core-js/modules/es.regexp.to-string.js'), require('app-studio'), require('core-js/modules/es.symbol.description.js'), require('core-js/modules/es.parse-float.js'), require('core-js/modules/es.string.trim-end.js'), require('core-js/modules/es.parse-int.js'), require('core-js/modules/es.regexp.exec.js'), require('core-js/modules/es.string.replace.js'), require('core-js/modules/es.string.starts-with.js'), require('core-js/modules/es.string.trim.js'), require('core-js/modules/es.array-buffer.constructor.js'), require('core-js/modules/es.array-buffer.slice.js'), require('core-js/modules/es.typed-array.uint8-array.js'), require('core-js/modules/es.typed-array.fill.js'), require('core-js/modules/es.typed-array.set.js'), require('core-js/modules/es.typed-array.sort.js'), require('core-js/modules/es.typed-array.to-locale-string.js'), require('core-js/modules/web.url.js'), require('core-js/modules/web.url.to-json.js'), require('core-js/modules/web.url-search-params.js'), require('zustand'), require('react-router-dom'), require('core-js/modules/es.string.ends-with.js'), require('contrast'), require('core-js/modules/es.promise.js'), require('core-js/modules/es.array.reduce.js'), require('core-js/modules/es.number.to-fixed.js'), require('core-js/modules/es.array.sort.js'), require('core-js/modules/es.string.pad-start.js'), require('date-fns/format'), require('core-js/modules/es.regexp.constructor.js'), require('formik'), require('src/services/api'), require('core-js/modules/es.promise.finally.js'), require('core-js/modules/es.string.match.js'), require('core-js/modules/es.string.search.js'), require('core-js/modules/es.array.flat-map.js'), require('core-js/modules/es.array.unscopables.flat-map.js')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'core-js/modules/es.object.assign.js', 'react', 'core-js/modules/es.array.includes.js', 'core-js/modules/es.array.iterator.js', 'core-js/modules/es.string.includes.js', 'core-js/modules/web.dom-collections.iterator.js', 'core-js/modules/es.regexp.to-string.js', 'app-studio', 'core-js/modules/es.symbol.description.js', 'core-js/modules/es.parse-float.js', 'core-js/modules/es.string.trim-end.js', 'core-js/modules/es.parse-int.js', 'core-js/modules/es.regexp.exec.js', 'core-js/modules/es.string.replace.js', 'core-js/modules/es.string.starts-with.js', 'core-js/modules/es.string.trim.js', 'core-js/modules/es.array-buffer.constructor.js', 'core-js/modules/es.array-buffer.slice.js', 'core-js/modules/es.typed-array.uint8-array.js', 'core-js/modules/es.typed-array.fill.js', 'core-js/modules/es.typed-array.set.js', 'core-js/modules/es.typed-array.sort.js', 'core-js/modules/es.typed-array.to-locale-string.js', 'core-js/modules/web.url.js', 'core-js/modules/web.url.to-json.js', 'core-js/modules/web.url-search-params.js', 'zustand', 'react-router-dom', 'core-js/modules/es.string.ends-with.js', 'contrast', 'core-js/modules/es.promise.js', 'core-js/modules/es.array.reduce.js', 'core-js/modules/es.number.to-fixed.js', 'core-js/modules/es.array.sort.js', 'core-js/modules/es.string.pad-start.js', 'date-fns/format', 'core-js/modules/es.regexp.constructor.js', 'formik', 'src/services/api', 'core-js/modules/es.promise.finally.js', 'core-js/modules/es.string.match.js', 'core-js/modules/es.string.search.js', 'core-js/modules/es.array.flat-map.js', 'core-js/modules/es.array.unscopables.flat-map.js'], factory) :
|
|
4
|
+
(global = global || self, factory(global['@app-studio/web'] = {}, null, global.React, null, null, null, null, null, global.appStudio, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, global.zustand, global.reactRouterDom, null, global.contrast, null, null, null, null, null, global.format, null, global.formik, global.api));
|
|
5
|
+
}(this, (function (exports, es_object_assign_js, React, es_array_includes_js, es_array_iterator_js, es_string_includes_js, web_domCollections_iterator_js, es_regexp_toString_js, appStudio, es_symbol_description_js, es_parseFloat_js, es_string_trimEnd_js, es_parseInt_js, es_regexp_exec_js, es_string_replace_js, es_string_startsWith_js, es_string_trim_js, es_arrayBuffer_constructor_js, es_arrayBuffer_slice_js, es_typedArray_uint8Array_js, es_typedArray_fill_js, es_typedArray_set_js, es_typedArray_sort_js, es_typedArray_toLocaleString_js, web_url_js, web_url_toJson_js, web_urlSearchParams_js, zustand, reactRouterDom, es_string_endsWith_js, contrast, es_promise_js, es_array_reduce_js, es_number_toFixed_js, es_array_sort_js, es_string_padStart_js, format, es_regexp_constructor_js, formik, api) { 'use strict';
|
|
6
6
|
|
|
7
7
|
var React__default = 'default' in React ? React['default'] : React;
|
|
8
8
|
contrast = contrast && Object.prototype.hasOwnProperty.call(contrast, 'default') ? contrast['default'] : contrast;
|
|
@@ -7801,7 +7801,6 @@
|
|
|
7801
7801
|
borderRadius: 10,
|
|
7802
7802
|
padding: "12px",
|
|
7803
7803
|
boxShadow: "0 1px 2px 0 rgba(16, 24, 40, 0.08)",
|
|
7804
|
-
opacity: draggedCardId === card.id ? 0.6 : 1,
|
|
7805
7804
|
onDragStart: event => onCardDragStart(column.id, card.id, event),
|
|
7806
7805
|
onDragEnd: onCardDragEnd,
|
|
7807
7806
|
onDragOver: event => {
|
|
@@ -8074,8 +8073,8 @@
|
|
|
8074
8073
|
* Month grid styles (7 columns for days)
|
|
8075
8074
|
*/
|
|
8076
8075
|
var monthGridStyles = {
|
|
8077
|
-
display: '
|
|
8078
|
-
|
|
8076
|
+
display: 'flex',
|
|
8077
|
+
flexDirection: 'column',
|
|
8079
8078
|
backgroundColor: 'color.white'
|
|
8080
8079
|
};
|
|
8081
8080
|
/**
|
|
@@ -8105,15 +8104,32 @@
|
|
|
8105
8104
|
*/
|
|
8106
8105
|
var dayCellStyles = {
|
|
8107
8106
|
border: '1px solid',
|
|
8108
|
-
borderColor: 'color.gray.
|
|
8109
|
-
minHeight:
|
|
8110
|
-
padding:
|
|
8111
|
-
paddingTop:
|
|
8107
|
+
borderColor: 'color.gray.100',
|
|
8108
|
+
minHeight: 120,
|
|
8109
|
+
padding: 4,
|
|
8110
|
+
paddingTop: 2,
|
|
8112
8111
|
backgroundColor: 'color.white',
|
|
8113
8112
|
position: 'relative',
|
|
8114
8113
|
display: 'flex',
|
|
8115
8114
|
flexDirection: 'column'
|
|
8116
8115
|
};
|
|
8116
|
+
/**
|
|
8117
|
+
* Day date styles (the circular number)
|
|
8118
|
+
*/
|
|
8119
|
+
var dayDateStyles = {
|
|
8120
|
+
width: 36,
|
|
8121
|
+
height: 36,
|
|
8122
|
+
display: 'flex',
|
|
8123
|
+
alignItems: 'center',
|
|
8124
|
+
justifyContent: 'center',
|
|
8125
|
+
borderRadius: '50%',
|
|
8126
|
+
fontSize: 13,
|
|
8127
|
+
fontWeight: 400,
|
|
8128
|
+
color: 'color.gray.900',
|
|
8129
|
+
cursor: 'pointer',
|
|
8130
|
+
transition: 'all 0.2s',
|
|
8131
|
+
border: '2px solid transparent'
|
|
8132
|
+
};
|
|
8117
8133
|
/**
|
|
8118
8134
|
* Day cell from different month
|
|
8119
8135
|
*/
|
|
@@ -8248,6 +8264,9 @@
|
|
|
8248
8264
|
onMouseLeave: () => setIsHovered(false)
|
|
8249
8265
|
}));
|
|
8250
8266
|
};
|
|
8267
|
+
var MONTH_EVENT_ROW_HEIGHT = 22;
|
|
8268
|
+
var MONTH_EVENT_ROW_GAP = 4;
|
|
8269
|
+
var MONTH_EVENT_TOP_OFFSET = 32;
|
|
8251
8270
|
var Calendar = _ref2 => {
|
|
8252
8271
|
var {
|
|
8253
8272
|
initialDate = new Date(),
|
|
@@ -8311,10 +8330,64 @@
|
|
|
8311
8330
|
return [currentDate];
|
|
8312
8331
|
}
|
|
8313
8332
|
}, [currentDate, currentView, currentMonth, weekStartsOn]);
|
|
8333
|
+
var monthWeeks = React.useMemo(() => {
|
|
8334
|
+
var chunks = [];
|
|
8335
|
+
for (var i = 0; i < calendarDates.length; i += 7) {
|
|
8336
|
+
chunks.push(calendarDates.slice(i, i + 7));
|
|
8337
|
+
}
|
|
8338
|
+
return chunks;
|
|
8339
|
+
}, [calendarDates]);
|
|
8314
8340
|
// Layout events
|
|
8315
8341
|
var {
|
|
8316
8342
|
items: positionedEvents
|
|
8317
8343
|
} = React.useMemo(() => layoutEvents(localEvents, calendarDates), [localEvents, calendarDates]);
|
|
8344
|
+
var monthWeeksWithEvents = React.useMemo(() => {
|
|
8345
|
+
return monthWeeks.map((dates, weekIndex) => {
|
|
8346
|
+
var weekStartIdx = weekIndex * 7;
|
|
8347
|
+
var weekEndIdx = weekStartIdx + dates.length - 1;
|
|
8348
|
+
var segments = positionedEvents.filter(event => !(event.startDay > weekEndIdx || event.endDay < weekStartIdx)).map(event => {
|
|
8349
|
+
var segmentStart = Math.max(event.startDay, weekStartIdx);
|
|
8350
|
+
var segmentEnd = Math.min(event.endDay, weekEndIdx);
|
|
8351
|
+
return Object.assign({}, event, {
|
|
8352
|
+
weekIndex,
|
|
8353
|
+
segmentStartDay: segmentStart - weekStartIdx,
|
|
8354
|
+
segmentEndDay: segmentEnd - weekStartIdx,
|
|
8355
|
+
segmentDuration: segmentEnd - segmentStart + 1,
|
|
8356
|
+
segmentRow: 0
|
|
8357
|
+
});
|
|
8358
|
+
});
|
|
8359
|
+
segments.sort((a, b) => {
|
|
8360
|
+
if (a.segmentStartDay !== b.segmentStartDay) {
|
|
8361
|
+
return a.segmentStartDay - b.segmentStartDay;
|
|
8362
|
+
}
|
|
8363
|
+
return b.segmentDuration - a.segmentDuration;
|
|
8364
|
+
});
|
|
8365
|
+
var rows = [];
|
|
8366
|
+
segments.forEach(segment => {
|
|
8367
|
+
var placed = false;
|
|
8368
|
+
for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {
|
|
8369
|
+
var row = rows[rowIdx];
|
|
8370
|
+
var conflict = row.some(existing => !(segment.segmentStartDay > existing.segmentEndDay || segment.segmentEndDay < existing.segmentStartDay));
|
|
8371
|
+
if (!conflict) {
|
|
8372
|
+
segment.segmentRow = rowIdx;
|
|
8373
|
+
row.push(segment);
|
|
8374
|
+
placed = true;
|
|
8375
|
+
break;
|
|
8376
|
+
}
|
|
8377
|
+
}
|
|
8378
|
+
if (!placed) {
|
|
8379
|
+
segment.segmentRow = rows.length;
|
|
8380
|
+
rows.push([segment]);
|
|
8381
|
+
}
|
|
8382
|
+
});
|
|
8383
|
+
return {
|
|
8384
|
+
weekIndex,
|
|
8385
|
+
dates,
|
|
8386
|
+
segments,
|
|
8387
|
+
rowCount: rows.length
|
|
8388
|
+
};
|
|
8389
|
+
});
|
|
8390
|
+
}, [monthWeeks, positionedEvents]);
|
|
8318
8391
|
// Get day names
|
|
8319
8392
|
var dayNames = React.useMemo(() => getDayNames(weekStartsOn), [weekStartsOn]);
|
|
8320
8393
|
// Handle navigation
|
|
@@ -8374,10 +8447,9 @@
|
|
|
8374
8447
|
onEventAdd(start, end);
|
|
8375
8448
|
}
|
|
8376
8449
|
}, [onEventAdd]);
|
|
8377
|
-
// Handle event
|
|
8378
|
-
var
|
|
8379
|
-
e.
|
|
8380
|
-
e.dataTransfer.setData('eventId', event.id);
|
|
8450
|
+
// Handle mouse down on event (start dragging)
|
|
8451
|
+
var handleEventMouseDown = React.useCallback((e, event) => {
|
|
8452
|
+
e.preventDefault();
|
|
8381
8453
|
dragStateRef.current = {
|
|
8382
8454
|
isDragging: true,
|
|
8383
8455
|
isResizing: false,
|
|
@@ -8390,52 +8462,7 @@
|
|
|
8390
8462
|
originalEnd: event.end
|
|
8391
8463
|
};
|
|
8392
8464
|
}, []);
|
|
8393
|
-
// Handle
|
|
8394
|
-
var handleDragOver = React.useCallback((e, dayIndex) => {
|
|
8395
|
-
e.preventDefault();
|
|
8396
|
-
e.dataTransfer.dropEffect = 'move';
|
|
8397
|
-
setDropTargetDays([dayIndex]);
|
|
8398
|
-
}, []);
|
|
8399
|
-
// Handle drag leave
|
|
8400
|
-
var handleDragLeave = React.useCallback(() => {
|
|
8401
|
-
setDropTargetDays([]);
|
|
8402
|
-
}, []);
|
|
8403
|
-
// Handle drop on day cell
|
|
8404
|
-
var handleDrop = React.useCallback((e, dayIndex) => {
|
|
8405
|
-
e.preventDefault();
|
|
8406
|
-
setDropTargetDays([]);
|
|
8407
|
-
var dragState = dragStateRef.current;
|
|
8408
|
-
if (!dragState.event || !dragState.originalStart || !dragState.originalEnd) return;
|
|
8409
|
-
// Calculate date difference
|
|
8410
|
-
var targetDate = calendarDates[dayIndex];
|
|
8411
|
-
if (!targetDate) return;
|
|
8412
|
-
var daysDiff = daysBetweenUTC(targetDate, dragState.originalStart.slice(0, 10));
|
|
8413
|
-
// Update event dates
|
|
8414
|
-
var newStart = addDateDays(dragState.originalStart.slice(0, 10), daysDiff);
|
|
8415
|
-
var newEnd = addDateDays(dragState.originalEnd.slice(0, 10), daysDiff);
|
|
8416
|
-
var updatedEvent = Object.assign({}, dragState.event, {
|
|
8417
|
-
start: newStart,
|
|
8418
|
-
end: newEnd
|
|
8419
|
-
});
|
|
8420
|
-
// Update local events
|
|
8421
|
-
var updatedEvents = localEvents.map(ev => ev.id === dragState.event.id ? updatedEvent : ev);
|
|
8422
|
-
setLocalEvents(updatedEvents);
|
|
8423
|
-
// Call callback
|
|
8424
|
-
onEventDrop == null || onEventDrop(updatedEvent);
|
|
8425
|
-
// Reset drag state
|
|
8426
|
-
dragStateRef.current = {
|
|
8427
|
-
isDragging: false,
|
|
8428
|
-
isResizing: false,
|
|
8429
|
-
resizeDirection: null,
|
|
8430
|
-
event: null,
|
|
8431
|
-
startX: 0,
|
|
8432
|
-
startDay: 0,
|
|
8433
|
-
startDuration: 0,
|
|
8434
|
-
originalStart: null,
|
|
8435
|
-
originalEnd: null
|
|
8436
|
-
};
|
|
8437
|
-
}, [localEvents, calendarDates, onEventDrop]);
|
|
8438
|
-
// Handle resize start (FIXED - using pixel-based approach like CalendarWeek)
|
|
8465
|
+
// Handle resize start
|
|
8439
8466
|
var handleResizeStart = React.useCallback((e, event, direction) => {
|
|
8440
8467
|
e.preventDefault();
|
|
8441
8468
|
e.stopPropagation();
|
|
@@ -8451,7 +8478,7 @@
|
|
|
8451
8478
|
originalEnd: event.end
|
|
8452
8479
|
};
|
|
8453
8480
|
}, []);
|
|
8454
|
-
// Handle mouse move during resize
|
|
8481
|
+
// Handle mouse move during resize or drag
|
|
8455
8482
|
var handleMouseMove = React.useCallback(e => {
|
|
8456
8483
|
var dragState = dragStateRef.current;
|
|
8457
8484
|
if (!dragState.event || !dragState.isDragging && !dragState.isResizing) return;
|
|
@@ -8573,54 +8600,89 @@
|
|
|
8573
8600
|
key: index
|
|
8574
8601
|
}, weekdayLabelStyles, views.weekdayLabel), dayName)))), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8575
8602
|
ref: gridRef
|
|
8576
|
-
}, monthGridStyles, views.monthGrid),
|
|
8577
|
-
var
|
|
8578
|
-
var
|
|
8579
|
-
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
8583
|
-
|
|
8584
|
-
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
|
|
8588
|
-
|
|
8589
|
-
|
|
8590
|
-
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
|
|
8594
|
-
|
|
8595
|
-
}
|
|
8596
|
-
|
|
8603
|
+
}, monthGridStyles, views.monthGrid), monthWeeksWithEvents.map(week => {
|
|
8604
|
+
var weekStartIdx = week.weekIndex * 7;
|
|
8605
|
+
var weekEndIdx = weekStartIdx + week.dates.length - 1;
|
|
8606
|
+
return /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8607
|
+
key: "week-" + week.weekIndex,
|
|
8608
|
+
position: "relative"
|
|
8609
|
+
}, /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8610
|
+
display: "grid",
|
|
8611
|
+
gridTemplateColumns: "repeat(7, 1fr)"
|
|
8612
|
+
}, week.dates.map((dateISO, dayOffset) => {
|
|
8613
|
+
var dateNum = getDateNumber(dateISO);
|
|
8614
|
+
var isToday = dateISO === today;
|
|
8615
|
+
var isSelected = dateISO === selectedDate;
|
|
8616
|
+
var isCurrentMonth = isInMonth(dateISO, currentMonth);
|
|
8617
|
+
var dayIndex = weekStartIdx + dayOffset;
|
|
8618
|
+
var isDropTarget = dropTargetDays.includes(dayIndex);
|
|
8619
|
+
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8620
|
+
key: dateISO,
|
|
8621
|
+
"data-date": dateISO
|
|
8622
|
+
}, dayCellStyles, !isCurrentMonth && otherMonthDayCellStyles, isDropTarget && dropTargetStyles, {
|
|
8623
|
+
onClick: () => handleDateClick(dateISO),
|
|
8624
|
+
onDoubleClick: () => handleDateDoubleClick(dateISO)
|
|
8625
|
+
}, views.dayCell), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayNumberStyles, isToday && todayDayNumberStyles, isSelected && !isToday && selectedDayNumberStyles, {
|
|
8626
|
+
style: {
|
|
8627
|
+
cursor: 'pointer'
|
|
8628
|
+
}
|
|
8629
|
+
}, views.dayNumber), dateNum));
|
|
8630
|
+
})), week.segments.length > 0 && (/*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8631
|
+
position: "absolute",
|
|
8632
|
+
left: 0,
|
|
8633
|
+
right: 0,
|
|
8634
|
+
top: MONTH_EVENT_TOP_OFFSET,
|
|
8635
|
+
pointerEvents: "none"
|
|
8636
|
+
}, week.segments.map(event => {
|
|
8637
|
+
var _dragStateRef$current, _dragStateRef$current2;
|
|
8597
8638
|
var colorConfig = EVENT_COLORS[event.color || 'blue'];
|
|
8598
|
-
var
|
|
8599
|
-
var
|
|
8600
|
-
|
|
8639
|
+
var dayWidth = 100 / week.dates.length;
|
|
8640
|
+
var left = event.segmentStartDay * dayWidth;
|
|
8641
|
+
var width = event.segmentDuration * dayWidth;
|
|
8642
|
+
var isDragging = dragStateRef.current.isDragging && ((_dragStateRef$current = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current.id) === event.id;
|
|
8643
|
+
var isResizing = dragStateRef.current.isResizing && ((_dragStateRef$current2 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current2.id) === event.id;
|
|
8644
|
+
var showLeftHandle = event.startDay >= weekStartIdx && event.startDay <= weekEndIdx && event.segmentStartDay === event.startDay - weekStartIdx;
|
|
8645
|
+
var showRightHandle = event.endDay >= weekStartIdx && event.endDay <= weekEndIdx && event.segmentEndDay === event.endDay - weekStartIdx;
|
|
8601
8646
|
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8602
|
-
key: event.id,
|
|
8603
|
-
position: "
|
|
8604
|
-
|
|
8647
|
+
key: event.id + "-" + event.weekIndex + "-" + event.segmentStartDay,
|
|
8648
|
+
position: "absolute",
|
|
8649
|
+
height: MONTH_EVENT_ROW_HEIGHT,
|
|
8650
|
+
display: "flex",
|
|
8651
|
+
alignItems: "center",
|
|
8652
|
+
paddingLeft: 8,
|
|
8653
|
+
paddingRight: 8,
|
|
8654
|
+
borderRadius: 4,
|
|
8605
8655
|
backgroundColor: colorConfig.background,
|
|
8656
|
+
borderLeft: "3px solid",
|
|
8606
8657
|
borderLeftColor: colorConfig.border,
|
|
8607
8658
|
color: colorConfig.text,
|
|
8608
|
-
|
|
8609
|
-
|
|
8610
|
-
|
|
8659
|
+
fontSize: 11,
|
|
8660
|
+
fontWeight: 500,
|
|
8661
|
+
overflow: "hidden",
|
|
8662
|
+
cursor: isDragging ? 'grabbing' : 'grab',
|
|
8663
|
+
opacity: isDragging || isResizing ? 0.7 : 1,
|
|
8664
|
+
boxShadow: isDragging || isResizing ? '0 4px 12px rgba(0,0,0,0.3)' : '0 1px 2px rgba(0,0,0,0.1)',
|
|
8665
|
+
transition: isDragging || isResizing ? 'none' : 'box-shadow 0.2s',
|
|
8666
|
+
pointerEvents: "auto",
|
|
8667
|
+
userSelect: "none",
|
|
8668
|
+
left: "calc(" + left + "% + 4px)",
|
|
8669
|
+
width: "calc(" + width + "% - 8px)",
|
|
8670
|
+
top: event.segmentRow * (MONTH_EVENT_ROW_HEIGHT + MONTH_EVENT_ROW_GAP) + "px",
|
|
8671
|
+
onMouseDown: e => handleEventMouseDown(e, event),
|
|
8672
|
+
title: event.title
|
|
8611
8673
|
}, views.event), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8612
8674
|
overflow: "hidden",
|
|
8613
8675
|
textOverflow: "ellipsis",
|
|
8614
8676
|
whiteSpace: "nowrap",
|
|
8615
8677
|
width: "100%"
|
|
8616
|
-
}, event.title,
|
|
8678
|
+
}, event.title), showLeftHandle && (/*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8617
8679
|
direction: "left",
|
|
8618
8680
|
onMouseDown: e => handleResizeStart(e, event, 'left')
|
|
8619
|
-
}), /*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8681
|
+
})), showRightHandle && (/*#__PURE__*/React__default.createElement(ResizeHandle, {
|
|
8620
8682
|
direction: "right",
|
|
8621
8683
|
onMouseDown: e => handleResizeStart(e, event, 'right')
|
|
8622
|
-
}));
|
|
8623
|
-
})));
|
|
8684
|
+
})));
|
|
8685
|
+
}))));
|
|
8624
8686
|
}))));
|
|
8625
8687
|
// Render week view
|
|
8626
8688
|
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) => {
|
|
@@ -8634,7 +8696,7 @@
|
|
|
8634
8696
|
alignItems: "center",
|
|
8635
8697
|
padding: 8,
|
|
8636
8698
|
gap: 4
|
|
8637
|
-
}, views.weekdayLabel), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, weekdayLabelStyles), DAY_NAMES[dayOfWeek]), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({},
|
|
8699
|
+
}, 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, {
|
|
8638
8700
|
fontSize: 16,
|
|
8639
8701
|
fontWeight: isToday ? 500 : 400
|
|
8640
8702
|
}), dateNum));
|
|
@@ -8652,14 +8714,14 @@
|
|
|
8652
8714
|
}, dayCellStyles, isDropTarget && dropTargetStyles, {
|
|
8653
8715
|
minHeight: 400,
|
|
8654
8716
|
onClick: () => handleDateClick(dateISO),
|
|
8655
|
-
onDoubleClick: () => handleDateDoubleClick(dateISO)
|
|
8656
|
-
onDragOver: e => handleDragOver(e, index),
|
|
8657
|
-
onDragLeave: handleDragLeave,
|
|
8658
|
-
onDrop: e => handleDrop(e, index)
|
|
8717
|
+
onDoubleClick: () => handleDateDoubleClick(dateISO)
|
|
8659
8718
|
}), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, eventsAreaStyles, views.eventsArea), dayEvents.map(event => {
|
|
8719
|
+
var _dragStateRef$current3, _dragStateRef$current4;
|
|
8660
8720
|
var colorConfig = EVENT_COLORS[event.color || 'blue'];
|
|
8661
8721
|
var isFirstDay = event.isFirstDay !== false;
|
|
8662
8722
|
if (!isFirstDay) return null;
|
|
8723
|
+
var isDragging = dragStateRef.current.isDragging && ((_dragStateRef$current3 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current3.id) === event.id;
|
|
8724
|
+
var isResizing = dragStateRef.current.isResizing && ((_dragStateRef$current4 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current4.id) === event.id;
|
|
8663
8725
|
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
8664
8726
|
key: event.id,
|
|
8665
8727
|
position: "relative"
|
|
@@ -8667,8 +8729,12 @@
|
|
|
8667
8729
|
backgroundColor: colorConfig.background,
|
|
8668
8730
|
borderLeftColor: colorConfig.border,
|
|
8669
8731
|
color: colorConfig.text,
|
|
8670
|
-
|
|
8671
|
-
|
|
8732
|
+
cursor: isDragging ? 'grabbing' : 'grab',
|
|
8733
|
+
opacity: isDragging || isResizing ? 0.7 : 1,
|
|
8734
|
+
boxShadow: isDragging || isResizing ? '0 4px 12px rgba(0,0,0,0.3)' : '0 1px 2px rgba(0,0,0,0.1)',
|
|
8735
|
+
transition: isDragging || isResizing ? 'none' : 'box-shadow 0.2s',
|
|
8736
|
+
userSelect: "none",
|
|
8737
|
+
onMouseDown: e => handleEventMouseDown(e, event),
|
|
8672
8738
|
title: event.title
|
|
8673
8739
|
}, views.event), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
8674
8740
|
overflow: "hidden",
|
|
@@ -8787,509 +8853,6 @@
|
|
|
8787
8853
|
}, views.navButton), "\u203A")))), currentView === 'month' && renderMonthView(), currentView === 'week' && renderWeekView(), currentView === 'day' && renderDayView());
|
|
8788
8854
|
};
|
|
8789
8855
|
|
|
8790
|
-
/**
|
|
8791
|
-
* Convert an ISO date string to a UTC Date object
|
|
8792
|
-
*/
|
|
8793
|
-
var dateUTC$1 = iso => {
|
|
8794
|
-
return new Date(iso + (iso.includes('T') ? '' : 'T00:00:00Z'));
|
|
8795
|
-
};
|
|
8796
|
-
/**
|
|
8797
|
-
* Calculate the number of days between two ISO date strings
|
|
8798
|
-
*/
|
|
8799
|
-
var daysBetweenUTC$1 = (a, b) => {
|
|
8800
|
-
return Math.floor((dateUTC$1(a).getTime() - dateUTC$1(b).getTime()) / 86400000);
|
|
8801
|
-
};
|
|
8802
|
-
/**
|
|
8803
|
-
* Add a number of days to an ISO date string
|
|
8804
|
-
*/
|
|
8805
|
-
var addDateDays$1 = (dateISO, days) => {
|
|
8806
|
-
var d = new Date(dateISO + 'T00:00:00Z');
|
|
8807
|
-
d.setUTCDate(d.getUTCDate() + days);
|
|
8808
|
-
return d.toISOString().slice(0, 10);
|
|
8809
|
-
};
|
|
8810
|
-
/**
|
|
8811
|
-
* Get the day of the week (0-6) from an ISO date string
|
|
8812
|
-
*/
|
|
8813
|
-
var getDayOfWeek$1 = dateISO => {
|
|
8814
|
-
return dateUTC$1(dateISO).getUTCDay();
|
|
8815
|
-
};
|
|
8816
|
-
/**
|
|
8817
|
-
* Get the date number (1-31) from an ISO date string
|
|
8818
|
-
*/
|
|
8819
|
-
var getDateNumber$1 = dateISO => {
|
|
8820
|
-
return dateUTC$1(dateISO).getUTCDate();
|
|
8821
|
-
};
|
|
8822
|
-
/**
|
|
8823
|
-
* Layout events with proper positioning to avoid overlaps
|
|
8824
|
-
* Returns positioned events and the total number of rows needed
|
|
8825
|
-
*/
|
|
8826
|
-
var layoutEvents$1 = (events, weekStart) => {
|
|
8827
|
-
// Convert events to positioned items with day indices
|
|
8828
|
-
var items = events.map(ev => {
|
|
8829
|
-
var startIdx = daysBetweenUTC$1(ev.start, weekStart);
|
|
8830
|
-
var endIdx = daysBetweenUTC$1(ev.end, weekStart);
|
|
8831
|
-
// Clamp to week boundaries
|
|
8832
|
-
var clampedStart = Math.max(0, Math.min(6, startIdx));
|
|
8833
|
-
var clampedEnd = Math.max(0, Math.min(6, endIdx));
|
|
8834
|
-
// Skip if completely outside week
|
|
8835
|
-
if (endIdx < 0 || startIdx > 6) return null;
|
|
8836
|
-
var duration = clampedEnd - clampedStart + 1;
|
|
8837
|
-
return Object.assign({}, ev, {
|
|
8838
|
-
startDay: clampedStart,
|
|
8839
|
-
endDay: clampedEnd,
|
|
8840
|
-
duration: duration,
|
|
8841
|
-
row: 0
|
|
8842
|
-
});
|
|
8843
|
-
}).filter(item => item !== null);
|
|
8844
|
-
// Sort by start day, then by duration (longer first)
|
|
8845
|
-
items.sort((a, b) => {
|
|
8846
|
-
if (a.startDay !== b.startDay) return a.startDay - b.startDay;
|
|
8847
|
-
return b.duration - a.duration;
|
|
8848
|
-
});
|
|
8849
|
-
// Assign rows using greedy algorithm to prevent overlaps
|
|
8850
|
-
var rows = [];
|
|
8851
|
-
items.forEach(item => {
|
|
8852
|
-
var placed = false;
|
|
8853
|
-
for (var i = 0; i < rows.length; i++) {
|
|
8854
|
-
var row = rows[i];
|
|
8855
|
-
var hasConflict = row.some(existing => !(item.startDay > existing.endDay || item.endDay < existing.startDay));
|
|
8856
|
-
if (!hasConflict) {
|
|
8857
|
-
row.push(item);
|
|
8858
|
-
item.row = i;
|
|
8859
|
-
placed = true;
|
|
8860
|
-
break;
|
|
8861
|
-
}
|
|
8862
|
-
}
|
|
8863
|
-
if (!placed) {
|
|
8864
|
-
item.row = rows.length;
|
|
8865
|
-
rows.push([item]);
|
|
8866
|
-
}
|
|
8867
|
-
});
|
|
8868
|
-
return {
|
|
8869
|
-
items,
|
|
8870
|
-
rowCount: rows.length
|
|
8871
|
-
};
|
|
8872
|
-
};
|
|
8873
|
-
/**
|
|
8874
|
-
* Day names array (Sunday to Saturday)
|
|
8875
|
-
*/
|
|
8876
|
-
var DAY_NAMES$1 = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
8877
|
-
/**
|
|
8878
|
-
* Get the date ISO string for a specific day in the week
|
|
8879
|
-
*/
|
|
8880
|
-
var getDateForDay = (weekStart, dayIndex) => {
|
|
8881
|
-
return addDateDays$1(weekStart, dayIndex);
|
|
8882
|
-
};
|
|
8883
|
-
|
|
8884
|
-
/**
|
|
8885
|
-
* Event color configurations
|
|
8886
|
-
*/
|
|
8887
|
-
var EVENT_COLORS$1 = {
|
|
8888
|
-
blue: {
|
|
8889
|
-
background: 'color.blue.50',
|
|
8890
|
-
border: 'color.blue.500',
|
|
8891
|
-
text: 'color.blue.700'
|
|
8892
|
-
},
|
|
8893
|
-
red: {
|
|
8894
|
-
background: 'color.red.50',
|
|
8895
|
-
border: 'color.red.500',
|
|
8896
|
-
text: 'color.red.700'
|
|
8897
|
-
},
|
|
8898
|
-
green: {
|
|
8899
|
-
background: 'color.green.50',
|
|
8900
|
-
border: 'color.green.500',
|
|
8901
|
-
text: 'color.green.700'
|
|
8902
|
-
},
|
|
8903
|
-
purple: {
|
|
8904
|
-
background: 'color.purple.50',
|
|
8905
|
-
border: 'color.purple.500',
|
|
8906
|
-
text: 'color.purple.700'
|
|
8907
|
-
},
|
|
8908
|
-
orange: {
|
|
8909
|
-
background: 'color.orange.50',
|
|
8910
|
-
border: 'color.orange.500',
|
|
8911
|
-
text: 'color.orange.700'
|
|
8912
|
-
}
|
|
8913
|
-
};
|
|
8914
|
-
/**
|
|
8915
|
-
* Base styles for the calendar container
|
|
8916
|
-
*/
|
|
8917
|
-
var containerStyles$1 = {
|
|
8918
|
-
width: '100%',
|
|
8919
|
-
maxWidth: 1200,
|
|
8920
|
-
border: '1px solid',
|
|
8921
|
-
borderColor: 'color.gray.200',
|
|
8922
|
-
borderRadius: 8,
|
|
8923
|
-
overflow: 'hidden',
|
|
8924
|
-
backgroundColor: 'color.white'
|
|
8925
|
-
};
|
|
8926
|
-
/**
|
|
8927
|
-
* Individual day column styles
|
|
8928
|
-
*/
|
|
8929
|
-
var dayColumnStyles = {
|
|
8930
|
-
borderRight: '1px solid',
|
|
8931
|
-
borderColor: 'color.gray.200',
|
|
8932
|
-
display: 'flex',
|
|
8933
|
-
flexDirection: 'column',
|
|
8934
|
-
minHeight: 160,
|
|
8935
|
-
backgroundColor: 'color.white',
|
|
8936
|
-
position: 'relative'
|
|
8937
|
-
};
|
|
8938
|
-
/**
|
|
8939
|
-
* Day header styles
|
|
8940
|
-
*/
|
|
8941
|
-
var dayHeaderStyles = {
|
|
8942
|
-
padding: 8,
|
|
8943
|
-
borderBottom: '1px solid',
|
|
8944
|
-
borderColor: 'color.gray.200',
|
|
8945
|
-
backgroundColor: 'color.gray.50',
|
|
8946
|
-
minHeight: 60,
|
|
8947
|
-
display: 'flex',
|
|
8948
|
-
flexDirection: 'column',
|
|
8949
|
-
alignItems: 'center',
|
|
8950
|
-
justifyContent: 'center',
|
|
8951
|
-
gap: 4
|
|
8952
|
-
};
|
|
8953
|
-
/**
|
|
8954
|
-
* Day name styles (e.g., "Mon", "Tue")
|
|
8955
|
-
*/
|
|
8956
|
-
var dayNameStyles = {
|
|
8957
|
-
fontSize: 11,
|
|
8958
|
-
fontWeight: 500,
|
|
8959
|
-
color: 'color.gray.700',
|
|
8960
|
-
textTransform: 'uppercase',
|
|
8961
|
-
letterSpacing: 0.5
|
|
8962
|
-
};
|
|
8963
|
-
/**
|
|
8964
|
-
* Day date styles (the circular number)
|
|
8965
|
-
*/
|
|
8966
|
-
var dayDateStyles = {
|
|
8967
|
-
width: 36,
|
|
8968
|
-
height: 36,
|
|
8969
|
-
display: 'flex',
|
|
8970
|
-
alignItems: 'center',
|
|
8971
|
-
justifyContent: 'center',
|
|
8972
|
-
borderRadius: '50%',
|
|
8973
|
-
fontSize: 13,
|
|
8974
|
-
fontWeight: 400,
|
|
8975
|
-
color: 'color.gray.900',
|
|
8976
|
-
cursor: 'pointer',
|
|
8977
|
-
transition: 'all 0.2s',
|
|
8978
|
-
border: '2px solid transparent'
|
|
8979
|
-
};
|
|
8980
|
-
/**
|
|
8981
|
-
* Today date styles
|
|
8982
|
-
*/
|
|
8983
|
-
var todayDateStyles = {
|
|
8984
|
-
backgroundColor: 'color.blue.500',
|
|
8985
|
-
color: 'color.white',
|
|
8986
|
-
fontWeight: 500
|
|
8987
|
-
};
|
|
8988
|
-
/**
|
|
8989
|
-
* Selected date styles
|
|
8990
|
-
*/
|
|
8991
|
-
var selectedDateStyles = {
|
|
8992
|
-
borderColor: 'color.blue.500'
|
|
8993
|
-
};
|
|
8994
|
-
/**
|
|
8995
|
-
* Events area styles
|
|
8996
|
-
*/
|
|
8997
|
-
var eventsAreaStyles$1 = {
|
|
8998
|
-
padding: 8,
|
|
8999
|
-
paddingLeft: 6,
|
|
9000
|
-
paddingRight: 6,
|
|
9001
|
-
flex: 1,
|
|
9002
|
-
position: 'relative'
|
|
9003
|
-
};
|
|
9004
|
-
/**
|
|
9005
|
-
* Drop target indicator styles
|
|
9006
|
-
*/
|
|
9007
|
-
var dropTargetStyles$1 = {
|
|
9008
|
-
backgroundColor: 'rgba(26, 115, 232, 0.05)'
|
|
9009
|
-
};
|
|
9010
|
-
/**
|
|
9011
|
-
* Calculate event position styles
|
|
9012
|
-
*/
|
|
9013
|
-
var getEventPositionStyles = (startDay, duration, row) => {
|
|
9014
|
-
var dayWidth = 100 / 7;
|
|
9015
|
-
var left = startDay * dayWidth;
|
|
9016
|
-
var width = duration * dayWidth;
|
|
9017
|
-
return {
|
|
9018
|
-
left: "calc(" + left + "% + 6px)",
|
|
9019
|
-
width: "calc(" + width + "% - 12px)",
|
|
9020
|
-
top: 8 + row * 26 + "px"
|
|
9021
|
-
};
|
|
9022
|
-
};
|
|
9023
|
-
|
|
9024
|
-
var ResizeHandle$1 = _ref => {
|
|
9025
|
-
var {
|
|
9026
|
-
direction,
|
|
9027
|
-
onMouseDown
|
|
9028
|
-
} = _ref;
|
|
9029
|
-
var [isHovered, setIsHovered] = React.useState(false);
|
|
9030
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9031
|
-
position: "absolute",
|
|
9032
|
-
top: 0,
|
|
9033
|
-
bottom: 0,
|
|
9034
|
-
width: 8,
|
|
9035
|
-
opacity: isHovered ? 1 : 0,
|
|
9036
|
-
transition: "opacity 0.2s",
|
|
9037
|
-
cursor: direction === 'left' ? 'w-resize' : 'e-resize',
|
|
9038
|
-
zIndex: 10,
|
|
9039
|
-
backgroundColor: isHovered ? 'rgba(0,0,0,0.1)' : 'transparent'
|
|
9040
|
-
}, direction === 'left' ? {
|
|
9041
|
-
left: 0
|
|
9042
|
-
} : {
|
|
9043
|
-
right: 0
|
|
9044
|
-
}, {
|
|
9045
|
-
onMouseDown: onMouseDown,
|
|
9046
|
-
onMouseEnter: () => setIsHovered(true),
|
|
9047
|
-
onMouseLeave: () => setIsHovered(false)
|
|
9048
|
-
}));
|
|
9049
|
-
};
|
|
9050
|
-
var CalendarWeek = _ref2 => {
|
|
9051
|
-
var {
|
|
9052
|
-
startDate,
|
|
9053
|
-
events = [],
|
|
9054
|
-
today = new Date().toISOString().slice(0, 10),
|
|
9055
|
-
onEventDrop,
|
|
9056
|
-
onEventResize,
|
|
9057
|
-
onDateClick,
|
|
9058
|
-
views = {},
|
|
9059
|
-
width = '100%',
|
|
9060
|
-
maxWidth = 1200
|
|
9061
|
-
} = _ref2;
|
|
9062
|
-
var {
|
|
9063
|
-
getColor
|
|
9064
|
-
} = appStudio.useTheme();
|
|
9065
|
-
var weekGridRef = React.useRef(null);
|
|
9066
|
-
var [selectedDate, setSelectedDate] = React.useState(null);
|
|
9067
|
-
var [localEvents, setLocalEvents] = React.useState(events);
|
|
9068
|
-
var [dropTargetDays, setDropTargetDays] = React.useState([]);
|
|
9069
|
-
var dragStateRef = React.useRef({
|
|
9070
|
-
isDragging: false,
|
|
9071
|
-
isResizing: false,
|
|
9072
|
-
resizeDirection: null,
|
|
9073
|
-
event: null,
|
|
9074
|
-
startX: 0,
|
|
9075
|
-
startDay: 0,
|
|
9076
|
-
startDuration: 0,
|
|
9077
|
-
originalStart: null,
|
|
9078
|
-
originalEnd: null
|
|
9079
|
-
});
|
|
9080
|
-
// Update local events when props change
|
|
9081
|
-
React__default.useEffect(() => {
|
|
9082
|
-
setLocalEvents(events);
|
|
9083
|
-
}, [events]);
|
|
9084
|
-
// Layout events
|
|
9085
|
-
var {
|
|
9086
|
-
items: positionedEvents
|
|
9087
|
-
} = React.useMemo(() => layoutEvents$1(localEvents, startDate), [localEvents, startDate]);
|
|
9088
|
-
// Get day index from mouse X position
|
|
9089
|
-
var getDayFromMouseX = React.useCallback(clientX => {
|
|
9090
|
-
if (!weekGridRef.current) return 0;
|
|
9091
|
-
var rect = weekGridRef.current.getBoundingClientRect();
|
|
9092
|
-
var relativeX = clientX - rect.left;
|
|
9093
|
-
var dayWidth = rect.width / 7;
|
|
9094
|
-
return Math.max(0, Math.min(6, Math.floor(relativeX / dayWidth)));
|
|
9095
|
-
}, []);
|
|
9096
|
-
// Handle date click
|
|
9097
|
-
var handleDateClick = React.useCallback(dateISO => {
|
|
9098
|
-
setSelectedDate(dateISO);
|
|
9099
|
-
onDateClick == null || onDateClick(dateISO);
|
|
9100
|
-
}, [onDateClick]);
|
|
9101
|
-
// Handle mouse down on event (start dragging)
|
|
9102
|
-
var handleEventMouseDown = React.useCallback((e, event) => {
|
|
9103
|
-
e.preventDefault();
|
|
9104
|
-
dragStateRef.current = {
|
|
9105
|
-
isDragging: true,
|
|
9106
|
-
isResizing: false,
|
|
9107
|
-
resizeDirection: null,
|
|
9108
|
-
event,
|
|
9109
|
-
startX: e.clientX,
|
|
9110
|
-
startDay: event.startDay,
|
|
9111
|
-
startDuration: event.duration,
|
|
9112
|
-
originalStart: event.start,
|
|
9113
|
-
originalEnd: event.end
|
|
9114
|
-
};
|
|
9115
|
-
}, []);
|
|
9116
|
-
// Handle mouse down on resize handle
|
|
9117
|
-
var handleResizeMouseDown = React.useCallback((e, event, direction) => {
|
|
9118
|
-
e.preventDefault();
|
|
9119
|
-
e.stopPropagation();
|
|
9120
|
-
dragStateRef.current = {
|
|
9121
|
-
isDragging: false,
|
|
9122
|
-
isResizing: true,
|
|
9123
|
-
resizeDirection: direction,
|
|
9124
|
-
event,
|
|
9125
|
-
startX: e.clientX,
|
|
9126
|
-
startDay: event.startDay,
|
|
9127
|
-
startDuration: event.duration,
|
|
9128
|
-
originalStart: event.start,
|
|
9129
|
-
originalEnd: event.end
|
|
9130
|
-
};
|
|
9131
|
-
}, []);
|
|
9132
|
-
// Handle mouse move (dragging or resizing)
|
|
9133
|
-
var handleMouseMove = React.useCallback(e => {
|
|
9134
|
-
var dragState = dragStateRef.current;
|
|
9135
|
-
if (!dragState.event || !dragState.isDragging && !dragState.isResizing) return;
|
|
9136
|
-
if (!weekGridRef.current) return;
|
|
9137
|
-
var rect = weekGridRef.current.getBoundingClientRect();
|
|
9138
|
-
var dayWidth = rect.width / 7;
|
|
9139
|
-
var deltaX = e.clientX - dragState.startX;
|
|
9140
|
-
var daysDelta = Math.round(deltaX / dayWidth);
|
|
9141
|
-
if (dragState.isDragging) {
|
|
9142
|
-
// Calculate new position
|
|
9143
|
-
var newStartDay = Math.max(0, Math.min(6, dragState.startDay + daysDelta));
|
|
9144
|
-
var duration = dragState.event.duration;
|
|
9145
|
-
var newEndDay = Math.min(6, newStartDay + duration - 1);
|
|
9146
|
-
// Update drop target indicators
|
|
9147
|
-
var targetDays = [];
|
|
9148
|
-
for (var i = newStartDay; i <= newEndDay; i++) {
|
|
9149
|
-
targetDays.push(i);
|
|
9150
|
-
}
|
|
9151
|
-
setDropTargetDays(targetDays);
|
|
9152
|
-
// Update event position immediately for smooth dragging
|
|
9153
|
-
var updatedEvents = localEvents.map(ev => ev.id === dragState.event.id ? Object.assign({}, ev, {
|
|
9154
|
-
start: addDateDays$1(dragState.originalStart, newStartDay - dragState.startDay),
|
|
9155
|
-
end: addDateDays$1(dragState.originalEnd, newStartDay - dragState.startDay)
|
|
9156
|
-
}) : ev);
|
|
9157
|
-
setLocalEvents(updatedEvents);
|
|
9158
|
-
} else if (dragState.isResizing) {
|
|
9159
|
-
// Handle resizing
|
|
9160
|
-
if (dragState.resizeDirection === 'right') {
|
|
9161
|
-
var newDuration = Math.max(1, dragState.startDuration + daysDelta);
|
|
9162
|
-
var _newEndDay = Math.min(6, dragState.startDay + newDuration - 1);
|
|
9163
|
-
var actualDuration = _newEndDay - dragState.startDay + 1;
|
|
9164
|
-
var _updatedEvents = localEvents.map(ev => ev.id === dragState.event.id ? Object.assign({}, ev, {
|
|
9165
|
-
end: addDateDays$1(dragState.originalStart, actualDuration - 1)
|
|
9166
|
-
}) : ev);
|
|
9167
|
-
setLocalEvents(_updatedEvents);
|
|
9168
|
-
} else if (dragState.resizeDirection === 'left') {
|
|
9169
|
-
var _newStartDay = Math.max(0, Math.min(dragState.startDay + dragState.startDuration - 1, dragState.startDay + daysDelta));
|
|
9170
|
-
var _updatedEvents2 = localEvents.map(ev => ev.id === dragState.event.id ? Object.assign({}, ev, {
|
|
9171
|
-
start: addDateDays$1(dragState.originalStart, _newStartDay - dragState.startDay)
|
|
9172
|
-
}) : ev);
|
|
9173
|
-
setLocalEvents(_updatedEvents2);
|
|
9174
|
-
}
|
|
9175
|
-
}
|
|
9176
|
-
}, [localEvents]);
|
|
9177
|
-
// Handle mouse up (finish dragging or resizing)
|
|
9178
|
-
var handleMouseUp = React.useCallback(e => {
|
|
9179
|
-
var dragState = dragStateRef.current;
|
|
9180
|
-
if (!dragState.event || !dragState.isDragging && !dragState.isResizing) return;
|
|
9181
|
-
setDropTargetDays([]);
|
|
9182
|
-
// Find the updated event
|
|
9183
|
-
var updatedEvent = localEvents.find(ev => ev.id === dragState.event.id);
|
|
9184
|
-
if (!updatedEvent) return;
|
|
9185
|
-
// Call appropriate callback
|
|
9186
|
-
if (dragState.isDragging) {
|
|
9187
|
-
onEventDrop == null || onEventDrop(updatedEvent);
|
|
9188
|
-
} else if (dragState.isResizing) {
|
|
9189
|
-
onEventResize == null || onEventResize(updatedEvent);
|
|
9190
|
-
}
|
|
9191
|
-
// Reset drag state
|
|
9192
|
-
dragStateRef.current = {
|
|
9193
|
-
isDragging: false,
|
|
9194
|
-
isResizing: false,
|
|
9195
|
-
resizeDirection: null,
|
|
9196
|
-
event: null,
|
|
9197
|
-
startX: 0,
|
|
9198
|
-
startDay: 0,
|
|
9199
|
-
startDuration: 0,
|
|
9200
|
-
originalStart: null,
|
|
9201
|
-
originalEnd: null
|
|
9202
|
-
};
|
|
9203
|
-
}, [localEvents, onEventDrop, onEventResize]);
|
|
9204
|
-
// Set up global mouse event listeners
|
|
9205
|
-
React__default.useEffect(() => {
|
|
9206
|
-
document.addEventListener('mousemove', handleMouseMove);
|
|
9207
|
-
document.addEventListener('mouseup', handleMouseUp);
|
|
9208
|
-
return () => {
|
|
9209
|
-
document.removeEventListener('mousemove', handleMouseMove);
|
|
9210
|
-
document.removeEventListener('mouseup', handleMouseUp);
|
|
9211
|
-
};
|
|
9212
|
-
}, [handleMouseMove, handleMouseUp]);
|
|
9213
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, containerStyles$1, {
|
|
9214
|
-
width: width,
|
|
9215
|
-
maxWidth: maxWidth
|
|
9216
|
-
}, views.container), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9217
|
-
ref: weekGridRef,
|
|
9218
|
-
display: "grid",
|
|
9219
|
-
gridTemplateColumns: "repeat(7, 1fr)",
|
|
9220
|
-
position: "relative",
|
|
9221
|
-
width: "100%"
|
|
9222
|
-
}, views.weekGrid), Array.from({
|
|
9223
|
-
length: 7
|
|
9224
|
-
}).map((_, dayIdx) => {
|
|
9225
|
-
var dateISO = getDateForDay(startDate, dayIdx);
|
|
9226
|
-
var dayOfWeek = getDayOfWeek$1(dateISO);
|
|
9227
|
-
var dateNum = getDateNumber$1(dateISO);
|
|
9228
|
-
var isToday = dateISO === today;
|
|
9229
|
-
var isSelected = dateISO === selectedDate;
|
|
9230
|
-
var isDropTarget = dropTargetDays.includes(dayIdx);
|
|
9231
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9232
|
-
key: dayIdx
|
|
9233
|
-
}, dayColumnStyles, isDropTarget && dropTargetStyles$1, {
|
|
9234
|
-
borderRight: dayIdx === 6 ? 'none' : '1px solid'
|
|
9235
|
-
}, 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, {
|
|
9236
|
-
onClick: () => handleDateClick(dateISO)
|
|
9237
|
-
}, views.dayDate), dateNum)), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, eventsAreaStyles$1, views.eventsArea)));
|
|
9238
|
-
}), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
9239
|
-
position: "absolute",
|
|
9240
|
-
top: 60,
|
|
9241
|
-
left: 0,
|
|
9242
|
-
right: 0,
|
|
9243
|
-
bottom: 0,
|
|
9244
|
-
pointerEvents: "none"
|
|
9245
|
-
}, positionedEvents.map(event => {
|
|
9246
|
-
var _dragStateRef$current, _dragStateRef$current2;
|
|
9247
|
-
var colorConfig = EVENT_COLORS$1[event.color || 'blue'];
|
|
9248
|
-
var positionStyles = getEventPositionStyles(event.startDay, event.duration, event.row);
|
|
9249
|
-
var isDragging = dragStateRef.current.isDragging && ((_dragStateRef$current = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current.id) === event.id;
|
|
9250
|
-
var isResizing = dragStateRef.current.isResizing && ((_dragStateRef$current2 = dragStateRef.current.event) == null ? void 0 : _dragStateRef$current2.id) === event.id;
|
|
9251
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
9252
|
-
key: event.id,
|
|
9253
|
-
position: "absolute",
|
|
9254
|
-
height: 22,
|
|
9255
|
-
display: "flex",
|
|
9256
|
-
alignItems: "center",
|
|
9257
|
-
padding: 8,
|
|
9258
|
-
paddingLeft: 8,
|
|
9259
|
-
paddingRight: 8,
|
|
9260
|
-
borderRadius: 4,
|
|
9261
|
-
backgroundColor: colorConfig.background,
|
|
9262
|
-
borderLeft: "3px solid",
|
|
9263
|
-
borderLeftColor: colorConfig.border,
|
|
9264
|
-
color: colorConfig.text,
|
|
9265
|
-
fontSize: 12,
|
|
9266
|
-
fontWeight: 500,
|
|
9267
|
-
overflow: "hidden",
|
|
9268
|
-
cursor: isDragging ? 'grabbing' : 'grab',
|
|
9269
|
-
opacity: isDragging || isResizing ? 0.7 : 1,
|
|
9270
|
-
boxShadow: isDragging || isResizing ? '0 4px 12px rgba(0,0,0,0.3)' : '0 1px 2px rgba(0,0,0,0.1)',
|
|
9271
|
-
transition: isDragging || isResizing ? 'none' : 'box-shadow 0.2s',
|
|
9272
|
-
pointerEvents: "auto",
|
|
9273
|
-
userSelect: "none",
|
|
9274
|
-
left: positionStyles.left,
|
|
9275
|
-
width: positionStyles.width,
|
|
9276
|
-
top: positionStyles.top,
|
|
9277
|
-
onMouseDown: e => handleEventMouseDown(e, event)
|
|
9278
|
-
}, views.event), /*#__PURE__*/React__default.createElement(appStudio.View, {
|
|
9279
|
-
overflow: "hidden",
|
|
9280
|
-
textOverflow: "ellipsis",
|
|
9281
|
-
whiteSpace: "nowrap",
|
|
9282
|
-
width: "100%"
|
|
9283
|
-
}, event.title), /*#__PURE__*/React__default.createElement(ResizeHandle$1, {
|
|
9284
|
-
direction: "left",
|
|
9285
|
-
onMouseDown: e => handleResizeMouseDown(e, event, 'left')
|
|
9286
|
-
}), /*#__PURE__*/React__default.createElement(ResizeHandle$1, {
|
|
9287
|
-
direction: "right",
|
|
9288
|
-
onMouseDown: e => handleResizeMouseDown(e, event, 'right')
|
|
9289
|
-
}));
|
|
9290
|
-
}))));
|
|
9291
|
-
};
|
|
9292
|
-
|
|
9293
8856
|
/**
|
|
9294
8857
|
* Custom hook to manage cookie consent state
|
|
9295
8858
|
* @param cookieExpiration Number of days until the cookie expires
|
|
@@ -19930,6 +19493,404 @@
|
|
|
19930
19493
|
NavigationMenu.Content = NavigationMenuContent;
|
|
19931
19494
|
NavigationMenu.Link = NavigationMenuLink;
|
|
19932
19495
|
|
|
19496
|
+
var _excluded$X = ["value", "max", "color", "backgroundColor", "height", "radius", "views", "themeMode"];
|
|
19497
|
+
var ProgressBarView = _ref => {
|
|
19498
|
+
var {
|
|
19499
|
+
value = 0,
|
|
19500
|
+
max = 100,
|
|
19501
|
+
color = 'theme.primary',
|
|
19502
|
+
backgroundColor = 'color.gray.200',
|
|
19503
|
+
height = 8,
|
|
19504
|
+
radius = 4,
|
|
19505
|
+
views,
|
|
19506
|
+
themeMode: elementMode
|
|
19507
|
+
} = _ref,
|
|
19508
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$X);
|
|
19509
|
+
var {
|
|
19510
|
+
getColor,
|
|
19511
|
+
themeMode
|
|
19512
|
+
} = appStudio.useTheme();
|
|
19513
|
+
var currentMode = elementMode ? elementMode : themeMode;
|
|
19514
|
+
var percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
19515
|
+
var trackColor = getColor(backgroundColor, {
|
|
19516
|
+
themeMode: currentMode
|
|
19517
|
+
});
|
|
19518
|
+
var barColor = getColor(color, {
|
|
19519
|
+
themeMode: currentMode
|
|
19520
|
+
});
|
|
19521
|
+
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19522
|
+
role: "progressbar",
|
|
19523
|
+
"aria-valuenow": value,
|
|
19524
|
+
"aria-valuemin": 0,
|
|
19525
|
+
"aria-valuemax": max,
|
|
19526
|
+
width: "100%",
|
|
19527
|
+
height: height,
|
|
19528
|
+
backgroundColor: trackColor,
|
|
19529
|
+
borderRadius: radius,
|
|
19530
|
+
overflow: "hidden"
|
|
19531
|
+
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19532
|
+
width: percentage + "%",
|
|
19533
|
+
height: "100%",
|
|
19534
|
+
backgroundColor: barColor,
|
|
19535
|
+
borderRadius: radius
|
|
19536
|
+
}, views == null ? void 0 : views.bar)));
|
|
19537
|
+
};
|
|
19538
|
+
|
|
19539
|
+
/**
|
|
19540
|
+
* ProgressBar component displays completion status of a task or process.
|
|
19541
|
+
*/
|
|
19542
|
+
var ProgressBarComponent = props => (/*#__PURE__*/React__default.createElement(ProgressBarView, Object.assign({}, props)));
|
|
19543
|
+
var ProgressBar = ProgressBarComponent;
|
|
19544
|
+
|
|
19545
|
+
var getThemes$2 = themeMode => {
|
|
19546
|
+
return {
|
|
19547
|
+
default: {
|
|
19548
|
+
indicator: {
|
|
19549
|
+
backgroundColor: 'color.gray.400'
|
|
19550
|
+
},
|
|
19551
|
+
label: {
|
|
19552
|
+
color: 'color.gray.700'
|
|
19553
|
+
}
|
|
19554
|
+
},
|
|
19555
|
+
info: {
|
|
19556
|
+
indicator: {
|
|
19557
|
+
backgroundColor: 'color.blue.500'
|
|
19558
|
+
},
|
|
19559
|
+
label: {
|
|
19560
|
+
color: 'color.blue.700'
|
|
19561
|
+
}
|
|
19562
|
+
},
|
|
19563
|
+
success: {
|
|
19564
|
+
indicator: {
|
|
19565
|
+
backgroundColor: 'color.green.500'
|
|
19566
|
+
},
|
|
19567
|
+
label: {
|
|
19568
|
+
color: 'color.green.700'
|
|
19569
|
+
}
|
|
19570
|
+
},
|
|
19571
|
+
warning: {
|
|
19572
|
+
indicator: {
|
|
19573
|
+
backgroundColor: 'color.orange.500'
|
|
19574
|
+
},
|
|
19575
|
+
label: {
|
|
19576
|
+
color: 'color.orange.700'
|
|
19577
|
+
}
|
|
19578
|
+
},
|
|
19579
|
+
error: {
|
|
19580
|
+
indicator: {
|
|
19581
|
+
backgroundColor: 'color.red.500'
|
|
19582
|
+
},
|
|
19583
|
+
label: {
|
|
19584
|
+
color: 'color.red.700'
|
|
19585
|
+
}
|
|
19586
|
+
}
|
|
19587
|
+
};
|
|
19588
|
+
};
|
|
19589
|
+
|
|
19590
|
+
var _excluded$Y = ["label", "status", "views", "themeMode"];
|
|
19591
|
+
var StatusIndicatorView = _ref => {
|
|
19592
|
+
var {
|
|
19593
|
+
label,
|
|
19594
|
+
status = 'default',
|
|
19595
|
+
views,
|
|
19596
|
+
themeMode: elementMode
|
|
19597
|
+
} = _ref,
|
|
19598
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$Y);
|
|
19599
|
+
var {
|
|
19600
|
+
themeMode
|
|
19601
|
+
} = appStudio.useTheme();
|
|
19602
|
+
var themes = getThemes$2();
|
|
19603
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19604
|
+
alignItems: "center",
|
|
19605
|
+
gap: 8,
|
|
19606
|
+
role: "status-indicator"
|
|
19607
|
+
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19608
|
+
role: "status-dot",
|
|
19609
|
+
width: "8px",
|
|
19610
|
+
height: "8px",
|
|
19611
|
+
borderRadius: "50%"
|
|
19612
|
+
}, themes[status].indicator, views == null ? void 0 : views.indicator)), label && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19613
|
+
role: "status-label",
|
|
19614
|
+
fontSize: "14px",
|
|
19615
|
+
lineHeight: "20px"
|
|
19616
|
+
}, themes[status].label, views == null ? void 0 : views.label), label)));
|
|
19617
|
+
};
|
|
19618
|
+
|
|
19619
|
+
var StatusIndicator = props => (/*#__PURE__*/React__default.createElement(StatusIndicatorView, Object.assign({}, props)));
|
|
19620
|
+
|
|
19621
|
+
var getOKRTheme = mode => {
|
|
19622
|
+
var isDark = mode === 'dark';
|
|
19623
|
+
return {
|
|
19624
|
+
container: {
|
|
19625
|
+
width: '100%',
|
|
19626
|
+
gap: 16
|
|
19627
|
+
},
|
|
19628
|
+
objectiveCard: {
|
|
19629
|
+
backgroundColor: isDark ? 'rgba(15, 23, 42, 0.6)' : 'color.white',
|
|
19630
|
+
borderColor: isDark ? 'rgba(148, 163, 184, 0.24)' : 'color.gray.200',
|
|
19631
|
+
borderWidth: '1px',
|
|
19632
|
+
borderStyle: 'solid',
|
|
19633
|
+
borderRadius: 16,
|
|
19634
|
+
padding: 24,
|
|
19635
|
+
gap: 20
|
|
19636
|
+
},
|
|
19637
|
+
tag: {
|
|
19638
|
+
display: 'inline-flex',
|
|
19639
|
+
alignItems: 'center',
|
|
19640
|
+
padding: '4px 10px',
|
|
19641
|
+
borderRadius: 999,
|
|
19642
|
+
backgroundColor: isDark ? 'rgba(148, 163, 184, 0.16)' : 'color.gray.100'
|
|
19643
|
+
},
|
|
19644
|
+
keyResultItem: {
|
|
19645
|
+
padding: 16,
|
|
19646
|
+
borderRadius: 12,
|
|
19647
|
+
borderWidth: '1px',
|
|
19648
|
+
borderStyle: 'solid',
|
|
19649
|
+
borderColor: isDark ? 'rgba(148, 163, 184, 0.18)' : 'color.gray.200',
|
|
19650
|
+
backgroundColor: isDark ? 'rgba(15, 23, 42, 0.35)' : 'color.gray.50',
|
|
19651
|
+
gap: 12
|
|
19652
|
+
},
|
|
19653
|
+
divider: {
|
|
19654
|
+
height: 1,
|
|
19655
|
+
backgroundColor: isDark ? 'rgba(148, 163, 184, 0.24)' : 'color.gray.200',
|
|
19656
|
+
width: '100%'
|
|
19657
|
+
}
|
|
19658
|
+
};
|
|
19659
|
+
};
|
|
19660
|
+
var STATUS_METADATA = {
|
|
19661
|
+
notStarted: {
|
|
19662
|
+
indicator: 'info',
|
|
19663
|
+
label: 'Not started'
|
|
19664
|
+
},
|
|
19665
|
+
onTrack: {
|
|
19666
|
+
indicator: 'success',
|
|
19667
|
+
label: 'On track'
|
|
19668
|
+
},
|
|
19669
|
+
atRisk: {
|
|
19670
|
+
indicator: 'warning',
|
|
19671
|
+
label: 'At risk'
|
|
19672
|
+
},
|
|
19673
|
+
offTrack: {
|
|
19674
|
+
indicator: 'error',
|
|
19675
|
+
label: 'Off track'
|
|
19676
|
+
},
|
|
19677
|
+
achieved: {
|
|
19678
|
+
indicator: 'success',
|
|
19679
|
+
label: 'Achieved'
|
|
19680
|
+
}
|
|
19681
|
+
};
|
|
19682
|
+
var deriveStatusFromProgress = progress => {
|
|
19683
|
+
if (progress >= 100) {
|
|
19684
|
+
return 'achieved';
|
|
19685
|
+
}
|
|
19686
|
+
if (progress >= 70) {
|
|
19687
|
+
return 'onTrack';
|
|
19688
|
+
}
|
|
19689
|
+
if (progress >= 40) {
|
|
19690
|
+
return 'atRisk';
|
|
19691
|
+
}
|
|
19692
|
+
if (progress > 0) {
|
|
19693
|
+
return 'offTrack';
|
|
19694
|
+
}
|
|
19695
|
+
return 'notStarted';
|
|
19696
|
+
};
|
|
19697
|
+
var clampProgress = value => {
|
|
19698
|
+
if (typeof value !== 'number' || Number.isNaN(value)) {
|
|
19699
|
+
return 0;
|
|
19700
|
+
}
|
|
19701
|
+
return Math.max(0, Math.min(100, Math.round(value)));
|
|
19702
|
+
};
|
|
19703
|
+
|
|
19704
|
+
var formatPercentage = value => value + "%";
|
|
19705
|
+
var formatConfidence = confidence => {
|
|
19706
|
+
if (!confidence) {
|
|
19707
|
+
return undefined;
|
|
19708
|
+
}
|
|
19709
|
+
return confidence.charAt(0).toUpperCase() + confidence.slice(1);
|
|
19710
|
+
};
|
|
19711
|
+
var getObjectiveProgress = objective => {
|
|
19712
|
+
if (typeof objective.progress === 'number') {
|
|
19713
|
+
return clampProgress(objective.progress);
|
|
19714
|
+
}
|
|
19715
|
+
if (!objective.keyResults.length) {
|
|
19716
|
+
return 0;
|
|
19717
|
+
}
|
|
19718
|
+
var total = objective.keyResults.reduce((acc, keyResult) => {
|
|
19719
|
+
var _keyResult$progress;
|
|
19720
|
+
return acc + ((_keyResult$progress = keyResult.progress) != null ? _keyResult$progress : 0);
|
|
19721
|
+
}, 0);
|
|
19722
|
+
return clampProgress(total / objective.keyResults.length);
|
|
19723
|
+
};
|
|
19724
|
+
var renderStatusIndicator = (status, themeMode, views) => {
|
|
19725
|
+
var metadata = STATUS_METADATA[status];
|
|
19726
|
+
return /*#__PURE__*/React__default.createElement(StatusIndicator, {
|
|
19727
|
+
themeMode: themeMode,
|
|
19728
|
+
status: metadata.indicator,
|
|
19729
|
+
label: metadata.label,
|
|
19730
|
+
views: views
|
|
19731
|
+
});
|
|
19732
|
+
};
|
|
19733
|
+
var OKRView = _ref => {
|
|
19734
|
+
var {
|
|
19735
|
+
objectives,
|
|
19736
|
+
themeMode: elementMode,
|
|
19737
|
+
views,
|
|
19738
|
+
onKeyResultClick,
|
|
19739
|
+
renderObjectiveFooter,
|
|
19740
|
+
renderKeyResultFooter
|
|
19741
|
+
} = _ref;
|
|
19742
|
+
var {
|
|
19743
|
+
themeMode
|
|
19744
|
+
} = appStudio.useTheme();
|
|
19745
|
+
var currentMode = elementMode || themeMode || 'light';
|
|
19746
|
+
var theme = getOKRTheme(currentMode);
|
|
19747
|
+
var secondaryTextColor = currentMode === 'dark' ? 'color.gray.200' : 'color.gray.600';
|
|
19748
|
+
var subtleTextColor = currentMode === 'dark' ? 'color.gray.300' : 'color.gray.500';
|
|
19749
|
+
var tagTextColor = currentMode === 'dark' ? 'color.gray.100' : 'color.gray.700';
|
|
19750
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({}, theme.container, views == null ? void 0 : views.container), objectives.map(objective => {
|
|
19751
|
+
var _objective$status, _objective$tags, _views$objectiveProgr, _views$objectiveProgr2, _views$objectiveProgr3, _views$objectiveProgr4;
|
|
19752
|
+
var objectiveProgress = getObjectiveProgress(objective);
|
|
19753
|
+
var objectiveStatus = (_objective$status = objective.status) != null ? _objective$status : deriveStatusFromProgress(objectiveProgress);
|
|
19754
|
+
var objectiveFooter = renderObjectiveFooter == null ? void 0 : renderObjectiveFooter(objective);
|
|
19755
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19756
|
+
key: objective.id
|
|
19757
|
+
}, theme.objectiveCard, views == null ? void 0 : views.objectiveCard), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19758
|
+
justifyContent: "space-between",
|
|
19759
|
+
alignItems: "flex-start",
|
|
19760
|
+
flexWrap: "wrap",
|
|
19761
|
+
gap: 16
|
|
19762
|
+
}, views == null ? void 0 : views.objectiveHeader), /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19763
|
+
gap: 10,
|
|
19764
|
+
minWidth: 240
|
|
19765
|
+
}, /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19766
|
+
size: "lg",
|
|
19767
|
+
weight: "semiBold"
|
|
19768
|
+
}, views == null ? void 0 : views.objectiveTitle), objective.title), objective.description && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19769
|
+
size: "sm",
|
|
19770
|
+
color: secondaryTextColor
|
|
19771
|
+
}, views == null ? void 0 : views.objectiveDescription), objective.description)), (_objective$tags = objective.tags) != null && _objective$tags.length ? (/*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19772
|
+
gap: 8,
|
|
19773
|
+
flexWrap: "wrap"
|
|
19774
|
+
}, views == null ? void 0 : views.objectiveTags), objective.tags.map(tag => (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19775
|
+
key: tag
|
|
19776
|
+
}, theme.tag, views == null ? void 0 : views.tag), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19777
|
+
size: "xs",
|
|
19778
|
+
weight: "medium",
|
|
19779
|
+
color: tagTextColor
|
|
19780
|
+
}, views == null ? void 0 : views.tagText), tag)))))) : null), /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19781
|
+
gap: 8,
|
|
19782
|
+
alignItems: "flex-end",
|
|
19783
|
+
minWidth: 160
|
|
19784
|
+
}, views == null ? void 0 : views.objectiveMeta), objective.owner && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19785
|
+
size: "sm",
|
|
19786
|
+
color: secondaryTextColor
|
|
19787
|
+
}, views == null ? void 0 : views.objectiveOwner), "Owner: ", objective.owner)), objective.timeframe && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19788
|
+
size: "sm",
|
|
19789
|
+
color: subtleTextColor
|
|
19790
|
+
}, 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({
|
|
19791
|
+
gap: 8
|
|
19792
|
+
}, views == null ? void 0 : views.objectiveProgressSection), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, {
|
|
19793
|
+
justifyContent: "space-between",
|
|
19794
|
+
alignItems: "center"
|
|
19795
|
+
}, /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19796
|
+
size: "sm",
|
|
19797
|
+
color: secondaryTextColor
|
|
19798
|
+
}, views == null ? void 0 : views.objectiveProgressLabel), "Progress"), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19799
|
+
size: "sm",
|
|
19800
|
+
weight: "semiBold"
|
|
19801
|
+
}, views == null ? void 0 : views.objectiveProgressValue), formatPercentage(objectiveProgress))), /*#__PURE__*/React__default.createElement(ProgressBar, {
|
|
19802
|
+
value: objectiveProgress,
|
|
19803
|
+
max: 100,
|
|
19804
|
+
views: {
|
|
19805
|
+
container: Object.assign({
|
|
19806
|
+
width: '100%'
|
|
19807
|
+
}, (_views$objectiveProgr = views == null || (_views$objectiveProgr2 = views.objectiveProgressBar) == null ? void 0 : _views$objectiveProgr2.container) != null ? _views$objectiveProgr : {}),
|
|
19808
|
+
bar: Object.assign({}, (_views$objectiveProgr3 = views == null || (_views$objectiveProgr4 = views.objectiveProgressBar) == null ? void 0 : _views$objectiveProgr4.bar) != null ? _views$objectiveProgr3 : {})
|
|
19809
|
+
}
|
|
19810
|
+
})), /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19811
|
+
gap: 16
|
|
19812
|
+
}, views == null ? void 0 : views.keyResultList), objective.keyResults.map((keyResult, index) => {
|
|
19813
|
+
var _keyResult$status, _keyResult$tags, _views$keyResultProgr, _views$keyResultProgr2, _views$keyResultProgr3, _views$keyResultProgr4;
|
|
19814
|
+
var progress = clampProgress(keyResult.progress);
|
|
19815
|
+
var keyResultStatus = (_keyResult$status = keyResult.status) != null ? _keyResult$status : deriveStatusFromProgress(progress);
|
|
19816
|
+
var keyResultFooter = renderKeyResultFooter == null ? void 0 : renderKeyResultFooter(keyResult, objective);
|
|
19817
|
+
var showDivider = index < objective.keyResults.length - 1;
|
|
19818
|
+
return /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19819
|
+
key: keyResult.id,
|
|
19820
|
+
gap: 12
|
|
19821
|
+
}, /*#__PURE__*/React__default.createElement(appStudio.Vertical, Object.assign({
|
|
19822
|
+
role: onKeyResultClick ? 'button' : undefined,
|
|
19823
|
+
cursor: onKeyResultClick ? 'pointer' : undefined,
|
|
19824
|
+
onClick: onKeyResultClick ? () => onKeyResultClick(keyResult, objective) : undefined
|
|
19825
|
+
}, theme.keyResultItem, views == null ? void 0 : views.keyResultItem), /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19826
|
+
justifyContent: "space-between",
|
|
19827
|
+
alignItems: "flex-start",
|
|
19828
|
+
flexWrap: "wrap",
|
|
19829
|
+
gap: 16
|
|
19830
|
+
}, views == null ? void 0 : views.keyResultHeader), /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19831
|
+
gap: 8,
|
|
19832
|
+
minWidth: 220
|
|
19833
|
+
}, /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19834
|
+
size: "md",
|
|
19835
|
+
weight: "medium"
|
|
19836
|
+
}, views == null ? void 0 : views.keyResultTitle), keyResult.title), keyResult.description && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19837
|
+
size: "sm",
|
|
19838
|
+
color: secondaryTextColor
|
|
19839
|
+
}, 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({
|
|
19840
|
+
gap: 12,
|
|
19841
|
+
flexWrap: "wrap"
|
|
19842
|
+
}, views == null ? void 0 : views.keyResultMeta), keyResult.metric && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19843
|
+
size: "xs",
|
|
19844
|
+
color: secondaryTextColor
|
|
19845
|
+
}, "Metric: ", keyResult.metric)), keyResult.current && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19846
|
+
size: "xs",
|
|
19847
|
+
color: secondaryTextColor
|
|
19848
|
+
}, "Current: ", keyResult.current)), keyResult.target && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19849
|
+
size: "xs",
|
|
19850
|
+
color: secondaryTextColor
|
|
19851
|
+
}, "Target: ", keyResult.target)), keyResult.confidence && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19852
|
+
size: "xs",
|
|
19853
|
+
color: secondaryTextColor
|
|
19854
|
+
}, "Confidence:", ' ', formatConfidence(keyResult.confidence))), keyResult.lastUpdated && (/*#__PURE__*/React__default.createElement(Text, {
|
|
19855
|
+
size: "xs",
|
|
19856
|
+
color: subtleTextColor
|
|
19857
|
+
}, "Updated: ", keyResult.lastUpdated)))), (_keyResult$tags = keyResult.tags) != null && _keyResult$tags.length ? (/*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
19858
|
+
gap: 8,
|
|
19859
|
+
flexWrap: "wrap"
|
|
19860
|
+
}, views == null ? void 0 : views.keyResultTags), keyResult.tags.map(tag => (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
19861
|
+
key: tag
|
|
19862
|
+
}, theme.tag, views == null ? void 0 : views.keyResultTag), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19863
|
+
size: "xs",
|
|
19864
|
+
weight: "medium",
|
|
19865
|
+
color: tagTextColor
|
|
19866
|
+
}, views == null ? void 0 : views.keyResultTagText), tag)))))) : null), /*#__PURE__*/React__default.createElement(appStudio.Vertical, {
|
|
19867
|
+
gap: 8,
|
|
19868
|
+
alignItems: "flex-end"
|
|
19869
|
+
}, keyResult.owner && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19870
|
+
size: "xs",
|
|
19871
|
+
color: secondaryTextColor
|
|
19872
|
+
}, 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({
|
|
19873
|
+
alignItems: "center",
|
|
19874
|
+
gap: 12
|
|
19875
|
+
}, views == null ? void 0 : views.keyResultProgressSection), /*#__PURE__*/React__default.createElement(ProgressBar, {
|
|
19876
|
+
value: progress,
|
|
19877
|
+
max: 100,
|
|
19878
|
+
views: {
|
|
19879
|
+
container: Object.assign({
|
|
19880
|
+
width: '100%'
|
|
19881
|
+
}, (_views$keyResultProgr = views == null || (_views$keyResultProgr2 = views.keyResultProgressBar) == null ? void 0 : _views$keyResultProgr2.container) != null ? _views$keyResultProgr : {}),
|
|
19882
|
+
bar: Object.assign({}, (_views$keyResultProgr3 = views == null || (_views$keyResultProgr4 = views.keyResultProgressBar) == null ? void 0 : _views$keyResultProgr4.bar) != null ? _views$keyResultProgr3 : {})
|
|
19883
|
+
}
|
|
19884
|
+
}), /*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
19885
|
+
size: "xs",
|
|
19886
|
+
weight: "semiBold"
|
|
19887
|
+
}, 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);
|
|
19888
|
+
})), objectiveFooter ? (/*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, views == null ? void 0 : views.footer), objectiveFooter)) : null);
|
|
19889
|
+
}));
|
|
19890
|
+
};
|
|
19891
|
+
|
|
19892
|
+
var OKR = props => /*#__PURE__*/React__default.createElement(OKRView, Object.assign({}, props));
|
|
19893
|
+
|
|
19933
19894
|
var defaultStyles = {};
|
|
19934
19895
|
// Create a context that includes both styles and the onClick function
|
|
19935
19896
|
var TableContext = /*#__PURE__*/React.createContext({
|
|
@@ -20712,7 +20673,7 @@
|
|
|
20712
20673
|
})
|
|
20713
20674
|
};
|
|
20714
20675
|
|
|
20715
|
-
var _excluded$
|
|
20676
|
+
var _excluded$Z = ["text", "typingSpeed", "pauseTime", "onComplete", "showCursor", "cursorColor", "textStyle", "as"];
|
|
20716
20677
|
/**
|
|
20717
20678
|
* A component that creates a typewriter effect for text
|
|
20718
20679
|
*/
|
|
@@ -20726,7 +20687,7 @@
|
|
|
20726
20687
|
cursorColor = 'currentColor',
|
|
20727
20688
|
textStyle
|
|
20728
20689
|
} = _ref,
|
|
20729
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
20690
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$Z);
|
|
20730
20691
|
// Convert text to array if it's a string
|
|
20731
20692
|
var textArray = Array.isArray(text) ? text : [text];
|
|
20732
20693
|
// State for the currently displayed text
|
|
@@ -20793,7 +20754,7 @@
|
|
|
20793
20754
|
}))))));
|
|
20794
20755
|
};
|
|
20795
20756
|
|
|
20796
|
-
var _excluded$
|
|
20757
|
+
var _excluded$_ = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "centered", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration"];
|
|
20797
20758
|
function escapeRegExp(string) {
|
|
20798
20759
|
return string.replace(/[.*+?^${}()|[\\]\\/g, '\\$&');
|
|
20799
20760
|
}
|
|
@@ -20815,7 +20776,7 @@
|
|
|
20815
20776
|
highlightTypewriter: propHighlightTypewriter = false,
|
|
20816
20777
|
highlightTypewriterDuration = 3000
|
|
20817
20778
|
} = _ref,
|
|
20818
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
20779
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$_);
|
|
20819
20780
|
var {
|
|
20820
20781
|
ref,
|
|
20821
20782
|
inView
|
|
@@ -21090,7 +21051,7 @@
|
|
|
21090
21051
|
}
|
|
21091
21052
|
});
|
|
21092
21053
|
|
|
21093
|
-
var _excluded
|
|
21054
|
+
var _excluded$$ = ["children", "shape", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle", "views", "backgroundColor", "color", "themeMode"];
|
|
21094
21055
|
var ToggleView = _ref => {
|
|
21095
21056
|
var _ref2;
|
|
21096
21057
|
var {
|
|
@@ -21110,7 +21071,7 @@
|
|
|
21110
21071
|
// 2nd candidate for main color
|
|
21111
21072
|
themeMode: elementMode
|
|
21112
21073
|
} = _ref,
|
|
21113
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded
|
|
21074
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$$);
|
|
21114
21075
|
/* theme helpers */
|
|
21115
21076
|
var {
|
|
21116
21077
|
getColor,
|
|
@@ -21154,7 +21115,7 @@
|
|
|
21154
21115
|
}, props, views == null ? void 0 : views.container), children);
|
|
21155
21116
|
};
|
|
21156
21117
|
|
|
21157
|
-
var _excluded$
|
|
21118
|
+
var _excluded$10 = ["children", "shape", "variant", "isDisabled", "isToggled", "onToggle"];
|
|
21158
21119
|
// Destructuring properties from ToggleProps to be used within the ToggleComponent.
|
|
21159
21120
|
var ToggleComponent = _ref => {
|
|
21160
21121
|
var {
|
|
@@ -21166,7 +21127,7 @@
|
|
|
21166
21127
|
isToggled = false,
|
|
21167
21128
|
onToggle
|
|
21168
21129
|
} = _ref,
|
|
21169
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
21130
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$10);
|
|
21170
21131
|
// Initializing toggle state and set state functions using the custom hook useToggleState.
|
|
21171
21132
|
var {
|
|
21172
21133
|
isHovered,
|
|
@@ -21501,7 +21462,7 @@
|
|
|
21501
21462
|
}
|
|
21502
21463
|
};
|
|
21503
21464
|
|
|
21504
|
-
var _excluded
|
|
21465
|
+
var _excluded$11 = ["children", "views"],
|
|
21505
21466
|
_excluded2$f = ["items", "side", "align", "views"],
|
|
21506
21467
|
_excluded3$9 = ["item", "views"],
|
|
21507
21468
|
_excluded4$8 = ["views"],
|
|
@@ -21542,7 +21503,7 @@
|
|
|
21542
21503
|
children,
|
|
21543
21504
|
views
|
|
21544
21505
|
} = _ref2,
|
|
21545
|
-
props = _objectWithoutPropertiesLoose(_ref2, _excluded
|
|
21506
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded$11);
|
|
21546
21507
|
var {
|
|
21547
21508
|
isOpen,
|
|
21548
21509
|
setIsOpen,
|
|
@@ -21795,7 +21756,7 @@
|
|
|
21795
21756
|
}));
|
|
21796
21757
|
};
|
|
21797
21758
|
|
|
21798
|
-
var _excluded$
|
|
21759
|
+
var _excluded$12 = ["trigger", "items", "size", "variant", "side", "align", "defaultOpen", "views"];
|
|
21799
21760
|
/**
|
|
21800
21761
|
* DropdownMenu component for displaying a menu when clicking on a trigger element.
|
|
21801
21762
|
*/
|
|
@@ -21810,7 +21771,7 @@
|
|
|
21810
21771
|
defaultOpen = false,
|
|
21811
21772
|
views
|
|
21812
21773
|
} = _ref,
|
|
21813
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
21774
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$12);
|
|
21814
21775
|
var {
|
|
21815
21776
|
isOpen,
|
|
21816
21777
|
setIsOpen,
|
|
@@ -22224,7 +22185,7 @@
|
|
|
22224
22185
|
category: 'neutral'
|
|
22225
22186
|
}];
|
|
22226
22187
|
|
|
22227
|
-
var _excluded$
|
|
22188
|
+
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"];
|
|
22228
22189
|
var ColorPickerView = _ref => {
|
|
22229
22190
|
var {
|
|
22230
22191
|
// Basic props
|
|
@@ -22259,7 +22220,7 @@
|
|
|
22259
22220
|
dropdownRef
|
|
22260
22221
|
// Other props
|
|
22261
22222
|
} = _ref,
|
|
22262
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
22223
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$13);
|
|
22263
22224
|
var {
|
|
22264
22225
|
getColor
|
|
22265
22226
|
} = appStudio.useTheme();
|
|
@@ -24589,7 +24550,7 @@
|
|
|
24589
24550
|
};
|
|
24590
24551
|
};
|
|
24591
24552
|
|
|
24592
|
-
var _excluded$
|
|
24553
|
+
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"];
|
|
24593
24554
|
var EmojiPickerView = _ref => {
|
|
24594
24555
|
var {
|
|
24595
24556
|
// Basic props
|
|
@@ -24627,7 +24588,7 @@
|
|
|
24627
24588
|
dropdownRef
|
|
24628
24589
|
// Other props
|
|
24629
24590
|
} = _ref,
|
|
24630
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
24591
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$14);
|
|
24631
24592
|
var {
|
|
24632
24593
|
getColor
|
|
24633
24594
|
} = appStudio.useTheme();
|
|
@@ -24816,7 +24777,7 @@
|
|
|
24816
24777
|
}
|
|
24817
24778
|
};
|
|
24818
24779
|
|
|
24819
|
-
var _excluded$
|
|
24780
|
+
var _excluded$15 = ["children", "orientation", "size", "variant", "views"];
|
|
24820
24781
|
// Create context for the Menubar
|
|
24821
24782
|
var MenubarContext = /*#__PURE__*/React.createContext({
|
|
24822
24783
|
activeMenuId: null,
|
|
@@ -24853,7 +24814,7 @@
|
|
|
24853
24814
|
variant = 'default',
|
|
24854
24815
|
views
|
|
24855
24816
|
} = _ref2,
|
|
24856
|
-
props = _objectWithoutPropertiesLoose(_ref2, _excluded$
|
|
24817
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded$15);
|
|
24857
24818
|
var Container = orientation === 'horizontal' ? appStudio.Horizontal : appStudio.Vertical;
|
|
24858
24819
|
return /*#__PURE__*/React__default.createElement(Container, Object.assign({
|
|
24859
24820
|
role: "menubar",
|
|
@@ -25173,7 +25134,7 @@
|
|
|
25173
25134
|
})))))));
|
|
25174
25135
|
};
|
|
25175
25136
|
|
|
25176
|
-
var _excluded$
|
|
25137
|
+
var _excluded$16 = ["items", "orientation", "size", "variant", "defaultActiveMenuId", "defaultOpenMenuId", "views"];
|
|
25177
25138
|
/**
|
|
25178
25139
|
* Menubar component for creating horizontal or vertical menu bars with dropdown menus.
|
|
25179
25140
|
*/
|
|
@@ -25187,7 +25148,7 @@
|
|
|
25187
25148
|
defaultOpenMenuId = null,
|
|
25188
25149
|
views
|
|
25189
25150
|
} = _ref,
|
|
25190
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25151
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$16);
|
|
25191
25152
|
var {
|
|
25192
25153
|
activeMenuId,
|
|
25193
25154
|
setActiveMenuId,
|
|
@@ -25369,7 +25330,7 @@
|
|
|
25369
25330
|
}
|
|
25370
25331
|
};
|
|
25371
25332
|
|
|
25372
|
-
var _excluded$
|
|
25333
|
+
var _excluded$17 = ["currentPage", "totalPages", "onPageChange", "pageSize", "pageSizeOptions", "onPageSizeChange", "showPageSizeSelector", "showPageInfo", "maxPageButtons", "showFirstLastButtons", "size", "variant", "shape", "visiblePageNumbers", "views"];
|
|
25373
25334
|
var PaginationView = _ref => {
|
|
25374
25335
|
var {
|
|
25375
25336
|
currentPage,
|
|
@@ -25400,7 +25361,7 @@
|
|
|
25400
25361
|
visiblePageNumbers,
|
|
25401
25362
|
views
|
|
25402
25363
|
} = _ref,
|
|
25403
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25364
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$17);
|
|
25404
25365
|
var handlePageChange = page => {
|
|
25405
25366
|
if (page < 1 || page > totalPages || page === currentPage) {
|
|
25406
25367
|
return;
|
|
@@ -25519,7 +25480,7 @@
|
|
|
25519
25480
|
}, option.label))))));
|
|
25520
25481
|
};
|
|
25521
25482
|
|
|
25522
|
-
var _excluded$
|
|
25483
|
+
var _excluded$18 = ["currentPage", "totalPages", "onPageChange", "pageSize", "pageSizeOptions", "onPageSizeChange", "showPageSizeSelector", "showPageInfo", "maxPageButtons", "showFirstLastButtons", "size", "variant", "shape", "views"];
|
|
25523
25484
|
/**
|
|
25524
25485
|
* Pagination component for navigating through pages of content.
|
|
25525
25486
|
*/
|
|
@@ -25540,7 +25501,7 @@
|
|
|
25540
25501
|
shape = 'rounded',
|
|
25541
25502
|
views
|
|
25542
25503
|
} = _ref,
|
|
25543
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25504
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$18);
|
|
25544
25505
|
var {
|
|
25545
25506
|
visiblePageNumbers
|
|
25546
25507
|
} = usePaginationState(currentPage, totalPages, maxPageButtons);
|
|
@@ -25564,55 +25525,6 @@
|
|
|
25564
25525
|
};
|
|
25565
25526
|
var Pagination = PaginationComponent;
|
|
25566
25527
|
|
|
25567
|
-
var _excluded$17 = ["value", "max", "color", "backgroundColor", "height", "radius", "views", "themeMode"];
|
|
25568
|
-
var ProgressBarView = _ref => {
|
|
25569
|
-
var {
|
|
25570
|
-
value = 0,
|
|
25571
|
-
max = 100,
|
|
25572
|
-
color = 'theme.primary',
|
|
25573
|
-
backgroundColor = 'color.gray.200',
|
|
25574
|
-
height = 8,
|
|
25575
|
-
radius = 4,
|
|
25576
|
-
views,
|
|
25577
|
-
themeMode: elementMode
|
|
25578
|
-
} = _ref,
|
|
25579
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$17);
|
|
25580
|
-
var {
|
|
25581
|
-
getColor,
|
|
25582
|
-
themeMode
|
|
25583
|
-
} = appStudio.useTheme();
|
|
25584
|
-
var currentMode = elementMode ? elementMode : themeMode;
|
|
25585
|
-
var percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
25586
|
-
var trackColor = getColor(backgroundColor, {
|
|
25587
|
-
themeMode: currentMode
|
|
25588
|
-
});
|
|
25589
|
-
var barColor = getColor(color, {
|
|
25590
|
-
themeMode: currentMode
|
|
25591
|
-
});
|
|
25592
|
-
return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
25593
|
-
role: "progressbar",
|
|
25594
|
-
"aria-valuenow": value,
|
|
25595
|
-
"aria-valuemin": 0,
|
|
25596
|
-
"aria-valuemax": max,
|
|
25597
|
-
width: "100%",
|
|
25598
|
-
height: height,
|
|
25599
|
-
backgroundColor: trackColor,
|
|
25600
|
-
borderRadius: radius,
|
|
25601
|
-
overflow: "hidden"
|
|
25602
|
-
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
25603
|
-
width: percentage + "%",
|
|
25604
|
-
height: "100%",
|
|
25605
|
-
backgroundColor: barColor,
|
|
25606
|
-
borderRadius: radius
|
|
25607
|
-
}, views == null ? void 0 : views.bar)));
|
|
25608
|
-
};
|
|
25609
|
-
|
|
25610
|
-
/**
|
|
25611
|
-
* ProgressBar component displays completion status of a task or process.
|
|
25612
|
-
*/
|
|
25613
|
-
var ProgressBarComponent = props => (/*#__PURE__*/React__default.createElement(ProgressBarView, Object.assign({}, props)));
|
|
25614
|
-
var ProgressBar = ProgressBarComponent;
|
|
25615
|
-
|
|
25616
25528
|
/**
|
|
25617
25529
|
* Separator Styles
|
|
25618
25530
|
*
|
|
@@ -25666,7 +25578,7 @@
|
|
|
25666
25578
|
}
|
|
25667
25579
|
};
|
|
25668
25580
|
|
|
25669
|
-
var _excluded$
|
|
25581
|
+
var _excluded$19 = ["orientation", "variant", "thickness", "color", "spacing", "label", "decorative", "views", "themeMode"];
|
|
25670
25582
|
var SeparatorView = _ref => {
|
|
25671
25583
|
var {
|
|
25672
25584
|
orientation = 'horizontal',
|
|
@@ -25678,7 +25590,7 @@
|
|
|
25678
25590
|
decorative = false,
|
|
25679
25591
|
views
|
|
25680
25592
|
} = _ref,
|
|
25681
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25593
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$19);
|
|
25682
25594
|
// Access theme if needed for future enhancements
|
|
25683
25595
|
var {
|
|
25684
25596
|
themeMode
|
|
@@ -25746,7 +25658,7 @@
|
|
|
25746
25658
|
var Separator = SeparatorComponent;
|
|
25747
25659
|
var Divider = SeparatorComponent;
|
|
25748
25660
|
|
|
25749
|
-
var _excluded$
|
|
25661
|
+
var _excluded$1a = ["isSupported", "isSharing", "onShare", "label", "children", "icon", "size", "isDisabled", "isLoading", "iconPosition", "disableWhenUnsupported"];
|
|
25750
25662
|
var ICON_SIZE_MAP = {
|
|
25751
25663
|
xs: 12,
|
|
25752
25664
|
sm: 14,
|
|
@@ -25769,7 +25681,7 @@
|
|
|
25769
25681
|
iconPosition,
|
|
25770
25682
|
disableWhenUnsupported = true
|
|
25771
25683
|
} = _ref,
|
|
25772
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
25684
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1a);
|
|
25773
25685
|
var resolvedSize = size != null ? size : 'md';
|
|
25774
25686
|
var resolvedIcon = icon != null ? icon : (/*#__PURE__*/React__default.createElement(ShareIcon, {
|
|
25775
25687
|
widthHeight: ICON_SIZE_MAP[resolvedSize],
|
|
@@ -25871,14 +25783,14 @@
|
|
|
25871
25783
|
};
|
|
25872
25784
|
};
|
|
25873
25785
|
|
|
25874
|
-
var _excluded$
|
|
25786
|
+
var _excluded$1b = ["shareData", "onShareStart", "onShareSuccess", "onShareCancel", "onShareError", "onUnsupported", "onClick"];
|
|
25875
25787
|
var ShareButtonComponent = props => {
|
|
25876
25788
|
var {
|
|
25877
25789
|
isSupported,
|
|
25878
25790
|
isSharing,
|
|
25879
25791
|
handleShare
|
|
25880
25792
|
} = useShareButton(props);
|
|
25881
|
-
var viewProps = _objectWithoutPropertiesLoose(props, _excluded$
|
|
25793
|
+
var viewProps = _objectWithoutPropertiesLoose(props, _excluded$1b);
|
|
25882
25794
|
return /*#__PURE__*/React__default.createElement(ShareButtonView, Object.assign({}, viewProps, {
|
|
25883
25795
|
isSupported: isSupported,
|
|
25884
25796
|
isSharing: isSharing,
|
|
@@ -25887,82 +25799,6 @@
|
|
|
25887
25799
|
};
|
|
25888
25800
|
var ShareButton = ShareButtonComponent;
|
|
25889
25801
|
|
|
25890
|
-
var getThemes$2 = themeMode => {
|
|
25891
|
-
return {
|
|
25892
|
-
default: {
|
|
25893
|
-
indicator: {
|
|
25894
|
-
backgroundColor: 'color.gray.400'
|
|
25895
|
-
},
|
|
25896
|
-
label: {
|
|
25897
|
-
color: 'color.gray.700'
|
|
25898
|
-
}
|
|
25899
|
-
},
|
|
25900
|
-
info: {
|
|
25901
|
-
indicator: {
|
|
25902
|
-
backgroundColor: 'color.blue.500'
|
|
25903
|
-
},
|
|
25904
|
-
label: {
|
|
25905
|
-
color: 'color.blue.700'
|
|
25906
|
-
}
|
|
25907
|
-
},
|
|
25908
|
-
success: {
|
|
25909
|
-
indicator: {
|
|
25910
|
-
backgroundColor: 'color.green.500'
|
|
25911
|
-
},
|
|
25912
|
-
label: {
|
|
25913
|
-
color: 'color.green.700'
|
|
25914
|
-
}
|
|
25915
|
-
},
|
|
25916
|
-
warning: {
|
|
25917
|
-
indicator: {
|
|
25918
|
-
backgroundColor: 'color.orange.500'
|
|
25919
|
-
},
|
|
25920
|
-
label: {
|
|
25921
|
-
color: 'color.orange.700'
|
|
25922
|
-
}
|
|
25923
|
-
},
|
|
25924
|
-
error: {
|
|
25925
|
-
indicator: {
|
|
25926
|
-
backgroundColor: 'color.red.500'
|
|
25927
|
-
},
|
|
25928
|
-
label: {
|
|
25929
|
-
color: 'color.red.700'
|
|
25930
|
-
}
|
|
25931
|
-
}
|
|
25932
|
-
};
|
|
25933
|
-
};
|
|
25934
|
-
|
|
25935
|
-
var _excluded$1b = ["label", "status", "views", "themeMode"];
|
|
25936
|
-
var StatusIndicatorView = _ref => {
|
|
25937
|
-
var {
|
|
25938
|
-
label,
|
|
25939
|
-
status = 'default',
|
|
25940
|
-
views,
|
|
25941
|
-
themeMode: elementMode
|
|
25942
|
-
} = _ref,
|
|
25943
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$1b);
|
|
25944
|
-
var {
|
|
25945
|
-
themeMode
|
|
25946
|
-
} = appStudio.useTheme();
|
|
25947
|
-
var themes = getThemes$2();
|
|
25948
|
-
return /*#__PURE__*/React__default.createElement(appStudio.Horizontal, Object.assign({
|
|
25949
|
-
alignItems: "center",
|
|
25950
|
-
gap: 8,
|
|
25951
|
-
role: "status-indicator"
|
|
25952
|
-
}, views == null ? void 0 : views.container, props), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
|
|
25953
|
-
role: "status-dot",
|
|
25954
|
-
width: "8px",
|
|
25955
|
-
height: "8px",
|
|
25956
|
-
borderRadius: "50%"
|
|
25957
|
-
}, themes[status].indicator, views == null ? void 0 : views.indicator)), label && (/*#__PURE__*/React__default.createElement(Text, Object.assign({
|
|
25958
|
-
role: "status-label",
|
|
25959
|
-
fontSize: "14px",
|
|
25960
|
-
lineHeight: "20px"
|
|
25961
|
-
}, themes[status].label, views == null ? void 0 : views.label), label)));
|
|
25962
|
-
};
|
|
25963
|
-
|
|
25964
|
-
var StatusIndicator = props => (/*#__PURE__*/React__default.createElement(StatusIndicatorView, Object.assign({}, props)));
|
|
25965
|
-
|
|
25966
25802
|
var useSidebarState = function useSidebarState(defaultExpanded, expanded, onExpandedChange, breakpoint) {
|
|
25967
25803
|
if (defaultExpanded === void 0) {
|
|
25968
25804
|
defaultExpanded = true;
|
|
@@ -37618,7 +37454,6 @@
|
|
|
37618
37454
|
exports.Button = Button;
|
|
37619
37455
|
exports.Calendar = Calendar;
|
|
37620
37456
|
exports.CalendarIcon = CalendarIcon;
|
|
37621
|
-
exports.CalendarWeek = CalendarWeek;
|
|
37622
37457
|
exports.CameraIcon = CameraIcon;
|
|
37623
37458
|
exports.Card = Card;
|
|
37624
37459
|
exports.Carousel = Carousel;
|
|
@@ -37709,6 +37544,7 @@
|
|
|
37709
37544
|
exports.MoonIcon = MoonIcon;
|
|
37710
37545
|
exports.NavigationMenu = NavigationMenu;
|
|
37711
37546
|
exports.NotificationIcon = NotificationIcon;
|
|
37547
|
+
exports.OKR = OKR;
|
|
37712
37548
|
exports.OTPInput = OTPInput;
|
|
37713
37549
|
exports.OpenEyeIcon = OpenEyeIcon;
|
|
37714
37550
|
exports.Pagination = Pagination;
|