@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.
Files changed (37) hide show
  1. package/dist/components/Calendar/Calendar/Calendar.style.d.ts +4 -0
  2. package/dist/components/OKR/OKR/OKR.props.d.ts +72 -0
  3. package/dist/components/OKR/OKR/OKR.style.d.ts +19 -0
  4. package/dist/components/OKR/OKR/OKR.view.d.ts +4 -0
  5. package/dist/components/OKR/OKR.d.ts +4 -0
  6. package/dist/components/index.d.ts +4 -3
  7. package/dist/pages/okr.page.d.ts +3 -0
  8. package/dist/web.cjs.development.js +595 -760
  9. package/dist/web.cjs.development.js.map +1 -1
  10. package/dist/web.cjs.production.min.js +1 -1
  11. package/dist/web.cjs.production.min.js.map +1 -1
  12. package/dist/web.esm.js +595 -760
  13. package/dist/web.esm.js.map +1 -1
  14. package/dist/web.umd.development.js +598 -762
  15. package/dist/web.umd.development.js.map +1 -1
  16. package/dist/web.umd.production.min.js +1 -1
  17. package/dist/web.umd.production.min.js.map +1 -1
  18. package/docs/README.md +2 -1
  19. package/docs/components/Calendar.mdx +22 -110
  20. package/docs/components/Flow.mdx +1 -0
  21. package/docs/components/KanbanBoard.mdx +156 -0
  22. package/docs/components/OKR.mdx +475 -0
  23. package/docs/components/Title.mdx +1 -0
  24. package/docs/components/Tree.mdx +1 -0
  25. package/docs/components.md +178 -0
  26. package/package.json +1 -1
  27. package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.props.d.ts +0 -51
  28. package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.style.d.ts +0 -90
  29. package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.utils.d.ts +0 -51
  30. package/dist/components/CalendarWeek/CalendarWeek/CalendarWeek.view.d.ts +0 -3
  31. package/dist/components/CalendarWeek/CalendarWeek.d.ts +0 -1
  32. package/docs/api-reference/README.md +0 -103
  33. package/docs/api-reference/data-display/flow.md +0 -220
  34. package/docs/api-reference/data-display/tree.md +0 -210
  35. package/docs/api-reference/form/chat-input.md +0 -206
  36. package/docs/api-reference/utility/button.md +0 -145
  37. 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.string.pad-start.js'), require('core-js/modules/es.array.sort.js'), require('src/components/CalendarWeek/CalendarWeek/CalendarWeek.style'), 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.string.pad-start.js', 'core-js/modules/es.array.sort.js', 'src/components/CalendarWeek/CalendarWeek/CalendarWeek.style', '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.CalendarWeek_style, 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_string_padStart_js, es_array_sort_js, CalendarWeek_style, format, es_regexp_constructor_js, formik, api) { 'use strict';
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: 'grid',
8078
- gridTemplateColumns: 'repeat(7, 1fr)',
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.200',
8109
- minHeight: 100,
8110
- padding: 8,
8111
- paddingTop: 4,
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 drag start
8378
- var handleEventDragStart = React.useCallback((e, event) => {
8379
- e.dataTransfer.effectAllowed = 'move';
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 drag over day cell
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 (FIXED - using pixel-based calculation)
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), calendarDates.map((dateISO, index) => {
8577
- var dateNum = getDateNumber(dateISO);
8578
- var isToday = dateISO === today;
8579
- var isSelected = dateISO === selectedDate;
8580
- var isCurrentMonth = isInMonth(dateISO, currentMonth);
8581
- var isDropTarget = dropTargetDays.includes(index);
8582
- var dayEvents = eventsByDate[dateISO] || [];
8583
- return /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({
8584
- key: dateISO,
8585
- "data-date": dateISO
8586
- }, dayCellStyles, !isCurrentMonth && otherMonthDayCellStyles, isDropTarget && dropTargetStyles, {
8587
- onClick: () => handleDateClick(dateISO),
8588
- onDoubleClick: () => handleDateDoubleClick(dateISO),
8589
- onDragOver: e => handleDragOver(e, index),
8590
- onDragLeave: handleDragLeave,
8591
- onDrop: e => handleDrop(e, index)
8592
- }, views.dayCell), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, dayNumberStyles, isToday && todayDayNumberStyles, isSelected && !isToday && selectedDayNumberStyles, {
8593
- style: {
8594
- cursor: 'pointer'
8595
- }
8596
- }, views.dayNumber), dateNum), /*#__PURE__*/React__default.createElement(appStudio.View, Object.assign({}, eventsAreaStyles, views.eventsArea), dayEvents.map(event => {
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 isMultiDay = event.duration > 1;
8599
- var isFirstDay = event.isFirstDay !== false;
8600
- if (!isFirstDay) return null;
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: "relative"
8604
- }, eventStyles, {
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
- draggable: true,
8609
- onDragStart: e => handleEventDragStart(e, event),
8610
- title: isMultiDay ? event.title + " (" + event.duration + " days)" : event.title
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, isMultiDay && " (" + event.duration + "d)"), /*#__PURE__*/React__default.createElement(ResizeHandle, {
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({}, CalendarWeek_style.dayDateStyles, isToday && todayDayNumberStyles, {
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
- draggable: true,
8671
- onDragStart: e => handleEventDragStart(e, event),
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$X = ["text", "typingSpeed", "pauseTime", "onComplete", "showCursor", "cursorColor", "textStyle", "as"];
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$X);
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$Y = ["children", "highlightText", "highlightStyle", "highlightColor", "highlightSecondaryColor", "size", "responsive", "centered", "views", "highlightAnimate", "animate", "animationLoop", "highlightAnimationLoop", "highlightTypewriter", "highlightTypewriterDuration"];
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$Y);
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$Z = ["children", "shape", "variant", "isHovered", "setIsHovered", "isDisabled", "isToggle", "setIsToggled", "onToggle", "views", "backgroundColor", "color", "themeMode"];
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$Z);
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$_ = ["children", "shape", "variant", "isDisabled", "isToggled", "onToggle"];
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$$ = ["children", "views"],
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$10 = ["trigger", "items", "size", "variant", "side", "align", "defaultOpen", "views"];
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$10);
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$11 = ["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"];
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$11);
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$12 = ["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"];
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$12);
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$13 = ["children", "orientation", "size", "variant", "views"];
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$13);
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$14 = ["items", "orientation", "size", "variant", "defaultActiveMenuId", "defaultOpenMenuId", "views"];
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$14);
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$15 = ["currentPage", "totalPages", "onPageChange", "pageSize", "pageSizeOptions", "onPageSizeChange", "showPageSizeSelector", "showPageInfo", "maxPageButtons", "showFirstLastButtons", "size", "variant", "shape", "visiblePageNumbers", "views"];
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$15);
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$16 = ["currentPage", "totalPages", "onPageChange", "pageSize", "pageSizeOptions", "onPageSizeChange", "showPageSizeSelector", "showPageInfo", "maxPageButtons", "showFirstLastButtons", "size", "variant", "shape", "views"];
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$16);
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$18 = ["orientation", "variant", "thickness", "color", "spacing", "label", "decorative", "views", "themeMode"];
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$18);
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$19 = ["isSupported", "isSharing", "onShare", "label", "children", "icon", "size", "isDisabled", "isLoading", "iconPosition", "disableWhenUnsupported"];
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$19);
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$1a = ["shareData", "onShareStart", "onShareSuccess", "onShareCancel", "onShareError", "onUnsupported", "onClick"];
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$1a);
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;