@wipco/sdui 1.5.0 → 1.6.1

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 (143) hide show
  1. package/dist/{DatePicker-C_TT_SOw.d.ts → DatePicker-DX9juElE.d.ts} +10 -1
  2. package/dist/{chunk-7P7N43JV.js → chunk-34BABTH4.js} +2 -2
  3. package/dist/{chunk-DMLDKW7K.js → chunk-37BNG4DT.js} +1 -1
  4. package/dist/{chunk-5WW4MBRO.js → chunk-3JTBOABA.js} +6 -2
  5. package/dist/{chunk-HBIIEYKW.js → chunk-3PCR73OC.js} +4 -4
  6. package/dist/{chunk-VY7MVBSE.js → chunk-3PT5OBOU.js} +2 -2
  7. package/dist/{chunk-YVTV4ZV6.js → chunk-4YPPL7JK.js} +1 -1
  8. package/dist/{chunk-E6ISNQK3.js → chunk-6YBSBC77.js} +31 -8
  9. package/dist/{chunk-YWUDBLO6.js → chunk-7G6J6QFC.js} +2 -2
  10. package/dist/{chunk-UV6HHFEW.js → chunk-A57GKV5F.js} +129 -68
  11. package/dist/{chunk-I45EUZC6.js → chunk-AJ3KDBEE.js} +4 -2
  12. package/dist/chunk-BITS7UJY.js +333 -0
  13. package/dist/{chunk-DOL57OOP.js → chunk-BV37UCDF.js} +3 -3
  14. package/dist/chunk-CSZCWBOE.js +256 -0
  15. package/dist/{chunk-XGFDY43I.js → chunk-CUFGH3LB.js} +88 -18
  16. package/dist/{chunk-A6LAIGUS.js → chunk-EGFDELSF.js} +7 -4
  17. package/dist/{chunk-JIV4YHCZ.js → chunk-EJIWOD7W.js} +1 -1
  18. package/dist/{chunk-CXW6KT6X.js → chunk-ESAFQXEU.js} +3 -3
  19. package/dist/{chunk-N5RKM6IC.js → chunk-EUSC5NMZ.js} +4 -4
  20. package/dist/{chunk-RWSH2MBU.js → chunk-FP32LNFK.js} +73 -19
  21. package/dist/{chunk-44TDRCKR.js → chunk-GKYUDTMI.js} +5 -5
  22. package/dist/chunk-GSM664TX.js +38 -0
  23. package/dist/{chunk-I5SD7XRA.js → chunk-GSXD52XG.js} +3 -3
  24. package/dist/{chunk-O4IISNE7.js → chunk-IB2ZPUTF.js} +51 -12
  25. package/dist/{chunk-YOZN35HD.js → chunk-IIRVHSNK.js} +3 -3
  26. package/dist/{chunk-FNMS7OB7.js → chunk-J7BZF4T4.js} +5 -5
  27. package/dist/{chunk-KO6OEY3G.js → chunk-JHFA5RDN.js} +3 -13
  28. package/dist/{chunk-DKVSM5HX.js → chunk-KDKRFWIF.js} +6 -6
  29. package/dist/chunk-KO3EUNWB.js +380 -0
  30. package/dist/{chunk-JYAR7D5U.js → chunk-NLSR3JYU.js} +2 -2
  31. package/dist/{chunk-ZORQPB6B.js → chunk-O4EMQWCV.js} +325 -360
  32. package/dist/{chunk-2HLXCKK7.js → chunk-OCYJ2ZOV.js} +2 -2
  33. package/dist/{chunk-OQ52XMGG.js → chunk-OKNF2SBB.js} +4 -4
  34. package/dist/{chunk-GNA6SX2H.js → chunk-OQ7A3SFM.js} +2 -2
  35. package/dist/{chunk-A5XQOEVH.js → chunk-PCFH74RD.js} +4 -4
  36. package/dist/{chunk-BEM2YS7U.js → chunk-SGGIWPP6.js} +3 -3
  37. package/dist/{chunk-NIJUVTEW.js → chunk-TB7G5DXQ.js} +3 -3
  38. package/dist/{chunk-GZBY7I4Y.js → chunk-TWUKNUUQ.js} +66 -10
  39. package/dist/{chunk-WPSK2CB5.js → chunk-UC725BGW.js} +16 -5
  40. package/dist/{chunk-ZFNFPXPR.js → chunk-US3K6Q5T.js} +2 -2
  41. package/dist/{chunk-MPT7WJG2.js → chunk-USNPJEXH.js} +5 -5
  42. package/dist/{chunk-SAPBDJJQ.js → chunk-UZZLMPRW.js} +2 -2
  43. package/dist/{chunk-Q4SWUINA.js → chunk-VAXRTBJH.js} +1 -1
  44. package/dist/{chunk-RYBBPFI7.js → chunk-VQKX5PJ4.js} +4 -4
  45. package/dist/chunk-VR5MFUD2.js +106 -0
  46. package/dist/{chunk-JZXU22PE.js → chunk-VSNHDHGS.js} +208 -117
  47. package/dist/{chunk-2YP5N4VV.js → chunk-VZOQRQAR.js} +1 -1
  48. package/dist/{chunk-AXGF4M57.js → chunk-XAXROQKB.js} +1 -1
  49. package/dist/{chunk-IZ3JA2BR.js → chunk-XFKNU6QN.js} +3 -3
  50. package/dist/{chunk-GTGS2QRL.js → chunk-XUVWIRZJ.js} +3 -3
  51. package/dist/{chunk-RNOUXUBO.js → chunk-YYAGE733.js} +323 -59
  52. package/dist/index.d.ts +449 -91
  53. package/dist/index.js +1060 -138
  54. package/dist/{layout-C3nRXMwb.d.ts → layout-DmRikwZb.d.ts} +5 -4
  55. package/dist/meta.d.ts +1 -1
  56. package/dist/meta.js +351 -25
  57. package/dist/rich/ExcelUploadCard.d.ts +1 -1
  58. package/dist/rich/ExcelUploadCard.js +5 -4
  59. package/dist/rich.d.ts +22 -3
  60. package/dist/rich.js +304 -35
  61. package/dist/styles.css +119 -4
  62. package/dist/{types-COjGKgmd.d.ts → types-CMikpoN5.d.ts} +65 -2
  63. package/dist/widgets/ApprovalLineEditor.d.ts +1 -1
  64. package/dist/widgets/ApprovalLineEditor.js +9 -8
  65. package/dist/widgets/ApprovalOverridesEditor.d.ts +1 -1
  66. package/dist/widgets/ApprovalOverridesEditor.js +11 -10
  67. package/dist/widgets/ApprovalStepper.d.ts +29 -4
  68. package/dist/widgets/ApprovalStepper.js +3 -3
  69. package/dist/widgets/AutocompleteField.d.ts +1 -1
  70. package/dist/widgets/AutocompleteField.js +9 -8
  71. package/dist/widgets/ColumnBoard.d.ts +1 -1
  72. package/dist/widgets/ColumnBoard.js +3 -3
  73. package/dist/widgets/DiffView.d.ts +1 -1
  74. package/dist/widgets/DiffView.js +3 -3
  75. package/dist/widgets/Disclosure.d.ts +1 -1
  76. package/dist/widgets/Disclosure.js +3 -3
  77. package/dist/widgets/EventCalendar.d.ts +5 -1
  78. package/dist/widgets/EventCalendar.js +5 -3
  79. package/dist/widgets/FileDropzone.d.ts +1 -1
  80. package/dist/widgets/FileDropzone.js +9 -7
  81. package/dist/widgets/ImageLightbox.d.ts +1 -1
  82. package/dist/widgets/ImageLightbox.js +7 -5
  83. package/dist/widgets/InlineEdit.d.ts +1 -1
  84. package/dist/widgets/InlineEdit.js +3 -3
  85. package/dist/widgets/JsonField.d.ts +1 -1
  86. package/dist/widgets/JsonField.js +3 -3
  87. package/dist/widgets/LiveClock.d.ts +1 -1
  88. package/dist/widgets/LiveClock.js +2 -2
  89. package/dist/widgets/OptionSchemaEditor.d.ts +1 -1
  90. package/dist/widgets/OptionSchemaEditor.js +4 -4
  91. package/dist/widgets/OptionValueFields.d.ts +1 -1
  92. package/dist/widgets/OptionValueFields.js +4 -4
  93. package/dist/widgets/OrgChart.d.ts +1 -1
  94. package/dist/widgets/OrgChart.js +4 -4
  95. package/dist/widgets/OrgChartBoard.d.ts +15 -33
  96. package/dist/widgets/OrgChartBoard.js +10 -8
  97. package/dist/widgets/PeriodFilter.d.ts +1 -1
  98. package/dist/widgets/PeriodFilter.js +6 -5
  99. package/dist/widgets/PermissionMatrixEditor.d.ts +34 -2
  100. package/dist/widgets/PermissionMatrixEditor.js +6 -4
  101. package/dist/widgets/PositionSelect.d.ts +1 -1
  102. package/dist/widgets/PositionSelect.js +5 -4
  103. package/dist/widgets/PrintSheet.d.ts +15 -2
  104. package/dist/widgets/PrintSheet.js +3 -3
  105. package/dist/widgets/ProfileEditDiffCard.d.ts +1 -1
  106. package/dist/widgets/ProfileEditDiffCard.js +5 -4
  107. package/dist/widgets/QRDisplay.d.ts +1 -1
  108. package/dist/widgets/QRDisplay.js +5 -4
  109. package/dist/widgets/RankBoard.d.ts +1 -1
  110. package/dist/widgets/RankBoard.js +8 -6
  111. package/dist/widgets/RecordSheet.d.ts +1 -1
  112. package/dist/widgets/RecordSheet.js +2 -2
  113. package/dist/widgets/RoleMemberPicker.d.ts +1 -1
  114. package/dist/widgets/RoleMemberPicker.js +6 -5
  115. package/dist/widgets/SearchableMultiPicker.d.ts +1 -1
  116. package/dist/widgets/SearchableMultiPicker.js +7 -6
  117. package/dist/widgets/SecureScreen.d.ts +1 -1
  118. package/dist/widgets/SecureScreen.js +3 -3
  119. package/dist/widgets/StackedMeter.d.ts +1 -1
  120. package/dist/widgets/StackedMeter.js +2 -2
  121. package/dist/widgets/StagePeriodEditor.d.ts +1 -1
  122. package/dist/widgets/StagePeriodEditor.js +6 -5
  123. package/dist/widgets/Strip.d.ts +1 -1
  124. package/dist/widgets/Strip.js +2 -2
  125. package/dist/widgets/SummaryTable.d.ts +1 -1
  126. package/dist/widgets/SummaryTable.js +2 -2
  127. package/dist/widgets/TagInput.d.ts +1 -1
  128. package/dist/widgets/TagInput.js +3 -3
  129. package/dist/widgets/TagMultiSelect.d.ts +1 -1
  130. package/dist/widgets/TagMultiSelect.js +5 -4
  131. package/dist/widgets/Timeline.d.ts +1 -1
  132. package/dist/widgets/Timeline.js +4 -4
  133. package/dist/widgets/TreePicker.d.ts +1 -1
  134. package/dist/widgets/TreePicker.js +8 -7
  135. package/dist/widgets/TreeView.d.ts +17 -3
  136. package/dist/widgets/TreeView.js +7 -6
  137. package/dist/widgets/index.d.ts +3 -3
  138. package/dist/widgets/index.js +84 -83
  139. package/package.json +1 -1
  140. package/dist/chunk-LFEJLOFN.js +0 -352
  141. package/dist/chunk-MMIGOPO5.js +0 -111
  142. package/dist/chunk-TFGNKFL2.js +0 -39
  143. package/dist/chunk-XQPTSEJC.js +0 -135
@@ -1,5 +1,7 @@
1
- import { SegmentedControl, IconButton, Button, Tag, EmptyState, Icon, Badge } from './chunk-RNOUXUBO.js';
2
- import { boxed } from './chunk-5WW4MBRO.js';
1
+ import { HoistedStyle } from './chunk-RIZRM7OO.js';
2
+ import { useIsMobile } from './chunk-GSM664TX.js';
3
+ import { SegmentedControl, IconButton, Button, Tag, EmptyState, Icon, Badge } from './chunk-YYAGE733.js';
4
+ import { boxed } from './chunk-3JTBOABA.js';
3
5
  import { useState, useMemo } from 'react';
4
6
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
7
 
@@ -142,7 +144,6 @@ var EventBar = ({ segment, selected, tall = false, onSelect }) => {
142
144
  fontSize: tall ? 13 : 12,
143
145
  fontWeight: 600,
144
146
  lineHeight: 1,
145
- overflow: "hidden",
146
147
  whiteSpace: "nowrap",
147
148
  cursor: "pointer",
148
149
  textAlign: "left",
@@ -153,6 +154,7 @@ var EventBar = ({ segment, selected, tall = false, onSelect }) => {
153
154
  "button",
154
155
  {
155
156
  type: "button",
157
+ className: "wp-evcal__bar",
156
158
  title: event.title,
157
159
  "aria-pressed": selected,
158
160
  style,
@@ -171,7 +173,7 @@ var EventBar = ({ segment, selected, tall = false, onSelect }) => {
171
173
  }
172
174
  }
173
175
  ),
174
- /* @__PURE__ */ jsx("span", { style: { overflow: "hidden", textOverflow: "ellipsis" }, children: event.title })
176
+ /* @__PURE__ */ jsx("span", { className: "wp-evcal__bar-title", style: { overflow: "hidden", textOverflow: "ellipsis" }, children: event.title })
175
177
  ]
176
178
  }
177
179
  );
@@ -198,6 +200,34 @@ function normalizeViews(views) {
198
200
  return items.length > 0 ? items : VIEW_ITEMS;
199
201
  }
200
202
  var cellBorder = "1px solid var(--wp-border-subtle)";
203
+ var EVCAL_CSS = `
204
+ .wp-evcal{display:flex;flex-direction:column;gap:var(--wp-space-3);min-width:0}
205
+ .wp-evcal__toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wp-space-2)}
206
+ .wp-evcal__types{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wp-space-1);margin-left:auto}
207
+ .wp-evcal__item{display:flex;align-items:center;gap:var(--wp-space-3);width:100%;padding:var(--wp-space-3) var(--wp-space-4);border-radius:var(--wp-radius-md);cursor:pointer;text-align:left;min-width:0;transition:background var(--wp-duration-fast),border-color var(--wp-duration-fast)}
208
+ .wp-evcal__item-bar{width:4px;height:26px;flex:none;border-radius:var(--wp-radius-pill)}
209
+ .wp-evcal__item-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;color:var(--wp-text-strong)}
210
+ .wp-evcal__item-meta{display:contents}
211
+ .wp-evcal__item-range{flex:none;font-size:13px;color:var(--wp-text-muted)}
212
+ .wp-evcal__bar{overflow:hidden}
213
+ @media (pointer:coarse){
214
+ .wp-evcal__lanes{z-index:0}
215
+ .wp-evcal--month .wp-evcal__bar{position:relative;overflow:visible}
216
+ .wp-evcal--month .wp-evcal__bar::before{content:"";position:absolute;left:0;right:0;top:50%;height:32px;margin-top:-16px;z-index:-1}
217
+ }
218
+ @media screen and (max-width:767.98px){
219
+ .wp-evcal__types{flex:1 1 100%;margin-left:0;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding-bottom:2px}
220
+ .wp-evcal__types::-webkit-scrollbar{display:none}
221
+ .wp-evcal__types>*{flex:none}
222
+ /* \uC720\uD615 \uCE69(23px)\uC740 \uC190\uAC00\uB77D \uB300\uC0C1\uC774 \uBABB \uB41C\uB2E4 \u2014 \uCE69 \uBAA8\uC591\uC740 \uB450\uACE0 \uB204\uB974\uB294 \uBC84\uD2BC\uB9CC 32px \uB85C \uD0A4\uC6B4\uB2E4. */
223
+ .wp-evcal__types>button{min-height:32px;display:inline-flex;align-items:center}
224
+ .wp-evcal__item{display:grid;grid-template-columns:4px minmax(0,1fr);column-gap:var(--wp-space-3);row-gap:var(--wp-space-1);padding:var(--wp-space-2) var(--wp-space-3)}
225
+ .wp-evcal__item-bar{grid-row:1 / span 2;height:auto;align-self:stretch}
226
+ .wp-evcal__item-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
227
+ .wp-evcal__item-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wp-space-1) var(--wp-space-2);min-width:0}
228
+ .wp-evcal--month .wp-evcal__bar-title{display:none}
229
+ }
230
+ `;
201
231
  var EventCalendarImpl = ({
202
232
  events,
203
233
  view,
@@ -210,13 +240,15 @@ var EventCalendarImpl = ({
210
240
  onEventClick,
211
241
  selectedId
212
242
  }) => {
213
- const [internalView, setInternalView] = useState(view ?? "month");
243
+ const isMobile = useIsMobile();
244
+ const [internalView, setInternalView] = useState(view ?? null);
214
245
  const [internalDate, setInternalDate] = useState(() => date ?? fmtISO(todayTs()));
215
246
  const [internalSelected, setInternalSelected] = useState(null);
216
247
  const [hiddenTypes, setHiddenTypes] = useState(/* @__PURE__ */ new Set());
217
248
  const [today] = useState(todayTs);
218
249
  const viewItems = useMemo(() => normalizeViews(views), [views]);
219
- const requestedView = view ?? internalView;
250
+ const fallbackView = isMobile && viewItems.some((item) => item.value === "agenda") ? "agenda" : "month";
251
+ const requestedView = view ?? internalView ?? fallbackView;
220
252
  const activeView = viewItems.some((item) => item.value === requestedView) ? requestedView : viewItems[0].value;
221
253
  const anchor = parseISO(date ?? internalDate);
222
254
  const activeSelected = selectedId !== void 0 ? selectedId : internalSelected;
@@ -374,298 +406,102 @@ var EventCalendarImpl = ({
374
406
  "button",
375
407
  {
376
408
  type: "button",
409
+ className: "wp-evcal__item",
377
410
  "aria-pressed": selected,
378
411
  onClick: (e) => selectEvent(event, e),
379
412
  style: {
380
- display: "flex",
381
- alignItems: "center",
382
- gap: "var(--wp-space-3)",
383
- width: "100%",
384
- padding: "var(--wp-space-3) var(--wp-space-4)",
385
413
  border: cellBorder,
386
414
  borderColor: selected ? "var(--wp-border-focus)" : "var(--wp-border-subtle)",
387
- borderRadius: "var(--wp-radius-md)",
388
- background: selected ? "var(--wp-surface-selected)" : "var(--wp-surface-card)",
389
- cursor: "pointer",
390
- textAlign: "left",
391
- minWidth: 0,
392
- transition: "background var(--wp-duration-fast), border-color var(--wp-duration-fast)"
415
+ background: selected ? "var(--wp-surface-selected)" : "var(--wp-surface-card)"
393
416
  },
394
417
  children: [
395
- /* @__PURE__ */ jsx(
396
- "span",
397
- {
398
- "aria-hidden": true,
399
- style: {
400
- width: 4,
401
- height: 26,
402
- flex: "none",
403
- borderRadius: "var(--wp-radius-pill)",
404
- background: event.color
405
- }
406
- }
407
- ),
408
- /* @__PURE__ */ jsx(
409
- "span",
410
- {
411
- style: {
412
- flex: "1 1 auto",
413
- minWidth: 0,
414
- overflow: "hidden",
415
- textOverflow: "ellipsis",
416
- whiteSpace: "nowrap",
417
- fontSize: 14,
418
- fontWeight: 600,
419
- color: "var(--wp-text-strong)"
420
- },
421
- children: event.title
422
- }
423
- ),
424
- event.typeLabel && /* @__PURE__ */ jsx(Tag, { color: event.color, className: "wp-caption", children: event.typeLabel }),
425
- event.status && /* @__PURE__ */ jsx(Badge, { tone: statusToneOf(event.status, statusTones), children: event.status }),
426
- /* @__PURE__ */ jsx("span", { style: { flex: "none", fontSize: 13, color: "var(--wp-text-muted)" }, children: fmtRange(event.dayStart, event.dayEnd) })
418
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "wp-evcal__item-bar", style: { background: event.color } }),
419
+ /* @__PURE__ */ jsx("span", { className: "wp-evcal__item-title", children: event.title }),
420
+ /* @__PURE__ */ jsxs("span", { className: "wp-evcal__item-meta", children: [
421
+ event.typeLabel && /* @__PURE__ */ jsx(Tag, { color: event.color, className: "wp-caption", children: event.typeLabel }),
422
+ event.status && /* @__PURE__ */ jsx(Badge, { tone: statusToneOf(event.status, statusTones), children: event.status }),
423
+ /* @__PURE__ */ jsx("span", { className: "wp-evcal__item-range", children: fmtRange(event.dayStart, event.dayEnd) })
424
+ ] })
427
425
  ]
428
426
  },
429
427
  event.id + fmtISO(event.dayStart)
430
428
  );
431
429
  };
432
- return /* @__PURE__ */ jsxs(
433
- "div",
434
- {
435
- style: {
436
- display: "flex",
437
- flexDirection: "column",
438
- gap: "var(--wp-space-3)",
439
- minWidth: 0
440
- },
441
- children: [
442
- /* @__PURE__ */ jsxs(
443
- "div",
444
- {
445
- style: {
446
- display: "flex",
447
- flexWrap: "wrap",
448
- alignItems: "center",
449
- gap: "var(--wp-space-2)"
450
- },
451
- children: [
452
- /* @__PURE__ */ jsx(
453
- SegmentedControl,
454
- {
455
- items: [...viewItems],
456
- value: activeView,
457
- onChange: (v) => setView(v)
458
- }
459
- ),
460
- /* @__PURE__ */ jsx(
461
- "span",
462
- {
463
- "aria-hidden": true,
464
- style: { width: 1, height: 20, background: "var(--wp-border-subtle)" }
465
- }
466
- ),
467
- /* @__PURE__ */ jsx(IconButton, { icon: "chevron-left", label: "\uC774\uC804", onClick: () => move(-1) }),
468
- /* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: () => setDate(today), children: "\uC624\uB298" }),
469
- /* @__PURE__ */ jsx(IconButton, { icon: "chevron-right", label: "\uB2E4\uC74C", onClick: () => move(1) }),
470
- /* @__PURE__ */ jsx("h3", { className: "wp-h4", style: { margin: "0 0 0 var(--wp-space-2)" }, children: headline }),
471
- types && types.length > 0 && /* @__PURE__ */ jsx(
472
- "span",
473
- {
474
- style: {
475
- display: "flex",
476
- flexWrap: "wrap",
477
- alignItems: "center",
478
- gap: "var(--wp-space-1)",
479
- marginLeft: "auto"
480
- },
481
- children: types.map((t) => {
482
- const off = hiddenTypes.has(t.value);
483
- const color = dayEvents.find((e) => e.type === t.value)?.color ?? t.color;
484
- return /* @__PURE__ */ jsx(
485
- "button",
486
- {
487
- type: "button",
488
- "aria-pressed": !off,
489
- title: off ? `${t.label} \uC77C\uC815 \uD45C\uC2DC` : `${t.label} \uC77C\uC815 \uC228\uAE30\uAE30`,
490
- onClick: () => toggleType(t.value),
491
- style: {
492
- border: "none",
493
- background: "none",
494
- padding: 0,
495
- cursor: "pointer",
496
- opacity: off ? 0.4 : 1,
497
- transition: "opacity var(--wp-duration-fast)"
498
- },
499
- children: /* @__PURE__ */ jsx(Tag, { color, filled: !off, children: t.label })
500
- },
501
- t.value
502
- );
503
- })
504
- }
505
- )
506
- ]
507
- }
508
- ),
509
- /* @__PURE__ */ jsxs(
510
- "div",
430
+ return /* @__PURE__ */ jsxs("div", { className: `wp-evcal wp-evcal--${activeView}`, children: [
431
+ /* @__PURE__ */ jsxs("div", { className: "wp-evcal__toolbar", children: [
432
+ /* @__PURE__ */ jsx(
433
+ SegmentedControl,
434
+ {
435
+ items: [...viewItems],
436
+ value: activeView,
437
+ onChange: (v) => setView(v)
438
+ }
439
+ ),
440
+ /* @__PURE__ */ jsx(
441
+ "span",
442
+ {
443
+ "aria-hidden": true,
444
+ style: { width: 1, height: 20, background: "var(--wp-border-subtle)" }
445
+ }
446
+ ),
447
+ /* @__PURE__ */ jsx(IconButton, { icon: "chevron-left", label: "\uC774\uC804", onClick: () => move(-1) }),
448
+ /* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: () => setDate(today), children: "\uC624\uB298" }),
449
+ /* @__PURE__ */ jsx(IconButton, { icon: "chevron-right", label: "\uB2E4\uC74C", onClick: () => move(1) }),
450
+ /* @__PURE__ */ jsx("h3", { className: "wp-h4", style: { margin: "0 0 0 var(--wp-space-2)" }, children: headline }),
451
+ types && types.length > 0 && /* @__PURE__ */ jsx("span", { className: "wp-evcal__types", role: "group", "aria-label": "\uC77C\uC815 \uC720\uD615", children: types.map((t) => {
452
+ const off = hiddenTypes.has(t.value);
453
+ const color = dayEvents.find((e) => e.type === t.value)?.color ?? t.color;
454
+ return /* @__PURE__ */ jsx(
455
+ "button",
511
456
  {
457
+ type: "button",
458
+ "aria-pressed": !off,
459
+ title: off ? `${t.label} \uC77C\uC815 \uD45C\uC2DC` : `${t.label} \uC77C\uC815 \uC228\uAE30\uAE30`,
460
+ onClick: () => toggleType(t.value),
512
461
  style: {
513
- border: cellBorder,
514
- borderRadius: "var(--wp-radius-card)",
515
- background: "var(--wp-surface-card)",
516
- overflow: "hidden"
462
+ border: "none",
463
+ background: "none",
464
+ padding: 0,
465
+ cursor: "pointer",
466
+ opacity: off ? 0.4 : 1,
467
+ transition: "opacity var(--wp-duration-fast)"
517
468
  },
518
- children: [
519
- activeView === "month" && /* @__PURE__ */ jsxs(Fragment, { children: [
520
- /* @__PURE__ */ jsx("div", { style: { display: "grid", gridTemplateColumns: "repeat(7, 1fr)" }, children: WEEKDAYS.map((w, i) => /* @__PURE__ */ jsx(
521
- "div",
522
- {
523
- className: "wp-caption",
524
- style: {
525
- padding: "var(--wp-space-2) 0",
526
- textAlign: "center",
527
- fontWeight: 600,
528
- color: i === 6 ? "var(--wp-text-danger)" : "var(--wp-text-muted)"
529
- },
530
- children: w
531
- },
532
- w
533
- )) }),
534
- monthWeeks.map((row) => /* @__PURE__ */ jsxs(
535
- "div",
536
- {
537
- style: { position: "relative", borderTop: cellBorder, minHeight: row.rowHeight },
538
- children: [
539
- /* @__PURE__ */ jsx(
540
- "div",
541
- {
542
- style: {
543
- position: "absolute",
544
- inset: 0,
545
- display: "grid",
546
- gridTemplateColumns: "repeat(7, 1fr)"
547
- },
548
- children: row.days.map((day, i) => /* @__PURE__ */ jsx(
549
- "div",
550
- {
551
- role: "button",
552
- tabIndex: 0,
553
- "aria-label": `${fmtISO(day.ts)} \uC77C\uC815 \uBCF4\uAE30`,
554
- onClick: () => openDay(day.ts),
555
- onKeyDown: (e) => {
556
- if (e.key === "Enter" || e.key === " ") {
557
- e.preventDefault();
558
- openDay(day.ts);
559
- }
560
- },
561
- style: {
562
- display: "flex",
563
- alignItems: "flex-start",
564
- justifyContent: "flex-end",
565
- padding: "var(--wp-space-1)",
566
- borderRight: i < 6 ? cellBorder : void 0,
567
- background: day.inMonth ? void 0 : "var(--wp-surface-sunken)",
568
- cursor: "pointer"
569
- },
570
- children: dayNumber(day)
571
- },
572
- day.ts
573
- ))
574
- }
575
- ),
576
- /* @__PURE__ */ jsxs("div", { style: laneGridStyle(MONTH_BAR_TOP, MONTH_LANE_H), children: [
577
- row.segments.map((seg) => /* @__PURE__ */ jsx(
578
- EventBar,
579
- {
580
- segment: seg,
581
- selected: seg.event.id === activeSelected,
582
- onSelect: selectEvent
583
- },
584
- `${seg.event.id}-${row.weekStart}`
585
- )),
586
- row.hasOverflow && row.overflow.map(
587
- (count, i) => count > 0 ? /* @__PURE__ */ jsxs(
588
- "button",
589
- {
590
- type: "button",
591
- title: `\uC228\uACA8\uC9C4 \uC77C\uC815 ${count}\uAC74 \u2014 \uC77C \uBCF4\uAE30\uB85C \uC774\uB3D9`,
592
- onClick: (e) => {
593
- e.stopPropagation();
594
- openDay(row.days[i].ts);
595
- },
596
- style: {
597
- gridColumn: `${i + 1} / span 1`,
598
- gridRow: `${MONTH_MAX_LANES + 1}`,
599
- pointerEvents: "auto",
600
- justifySelf: "start",
601
- alignSelf: "center",
602
- margin: "0 var(--wp-space-1)",
603
- padding: "0 var(--wp-space-1)",
604
- height: 16,
605
- border: "none",
606
- borderRadius: "var(--wp-radius-xs)",
607
- background: "none",
608
- fontSize: 11,
609
- fontWeight: 700,
610
- color: "var(--wp-text-muted)",
611
- cursor: "pointer"
612
- },
613
- children: [
614
- "+",
615
- count
616
- ]
617
- },
618
- `ov-${row.days[i].ts}`
619
- ) : null
620
- )
621
- ] })
622
- ]
623
- },
624
- row.weekStart
625
- ))
626
- ] }),
627
- activeView === "week" && week && /* @__PURE__ */ jsxs(Fragment, { children: [
628
- /* @__PURE__ */ jsx(
629
- "div",
630
- {
631
- style: {
632
- display: "grid",
633
- gridTemplateColumns: "repeat(7, 1fr)",
634
- borderBottom: cellBorder
635
- },
636
- children: week.days.map((day) => /* @__PURE__ */ jsxs(
637
- "button",
638
- {
639
- type: "button",
640
- onClick: () => openDay(day.ts),
641
- style: {
642
- border: "none",
643
- background: "none",
644
- padding: "var(--wp-space-2) 0",
645
- textAlign: "center",
646
- cursor: "pointer"
647
- },
648
- children: [
649
- /* @__PURE__ */ jsx(
650
- "span",
651
- {
652
- className: "wp-caption",
653
- style: {
654
- display: "block",
655
- fontWeight: 600,
656
- color: day.isSunday ? "var(--wp-text-danger)" : "var(--wp-text-muted)"
657
- },
658
- children: day.label
659
- }
660
- ),
661
- /* @__PURE__ */ jsx("span", { style: { marginTop: "var(--wp-space-half)", display: "inline-flex" }, children: dayNumber(day) })
662
- ]
663
- },
664
- day.ts
665
- ))
666
- }
667
- ),
668
- /* @__PURE__ */ jsxs("div", { style: { position: "relative", minHeight: week.bodyHeight }, children: [
469
+ children: /* @__PURE__ */ jsx(Tag, { color, filled: !off, children: t.label })
470
+ },
471
+ t.value
472
+ );
473
+ }) })
474
+ ] }),
475
+ /* @__PURE__ */ jsxs(
476
+ "div",
477
+ {
478
+ style: {
479
+ border: cellBorder,
480
+ borderRadius: "var(--wp-radius-card)",
481
+ background: "var(--wp-surface-card)",
482
+ overflow: "hidden"
483
+ },
484
+ children: [
485
+ activeView === "month" && /* @__PURE__ */ jsxs(Fragment, { children: [
486
+ /* @__PURE__ */ jsx("div", { style: { display: "grid", gridTemplateColumns: "repeat(7, 1fr)" }, children: WEEKDAYS.map((w, i) => /* @__PURE__ */ jsx(
487
+ "div",
488
+ {
489
+ className: "wp-caption",
490
+ style: {
491
+ padding: "var(--wp-space-2) 0",
492
+ textAlign: "center",
493
+ fontWeight: 600,
494
+ color: i === 6 ? "var(--wp-text-danger)" : "var(--wp-text-muted)"
495
+ },
496
+ children: w
497
+ },
498
+ w
499
+ )) }),
500
+ monthWeeks.map((row) => /* @__PURE__ */ jsxs(
501
+ "div",
502
+ {
503
+ style: { position: "relative", borderTop: cellBorder, minHeight: row.rowHeight },
504
+ children: [
669
505
  /* @__PURE__ */ jsx(
670
506
  "div",
671
507
  {
@@ -675,100 +511,229 @@ var EventCalendarImpl = ({
675
511
  display: "grid",
676
512
  gridTemplateColumns: "repeat(7, 1fr)"
677
513
  },
678
- children: week.days.map((day, i) => /* @__PURE__ */ jsx(
514
+ children: row.days.map((day, i) => /* @__PURE__ */ jsx(
679
515
  "div",
680
516
  {
517
+ role: "button",
518
+ tabIndex: 0,
519
+ "aria-label": `${fmtISO(day.ts)} \uC77C\uC815 \uBCF4\uAE30`,
520
+ onClick: () => openDay(day.ts),
521
+ onKeyDown: (e) => {
522
+ if (e.key === "Enter" || e.key === " ") {
523
+ e.preventDefault();
524
+ openDay(day.ts);
525
+ }
526
+ },
681
527
  style: {
528
+ display: "flex",
529
+ alignItems: "flex-start",
530
+ justifyContent: "flex-end",
531
+ padding: "var(--wp-space-1)",
682
532
  borderRight: i < 6 ? cellBorder : void 0,
683
- background: day.isToday ? "var(--wp-surface-brand-tint)" : void 0
684
- }
533
+ background: day.inMonth ? void 0 : "var(--wp-surface-sunken)",
534
+ cursor: "pointer"
535
+ },
536
+ children: dayNumber(day)
685
537
  },
686
538
  day.ts
687
539
  ))
688
540
  }
689
541
  ),
690
- /* @__PURE__ */ jsx("div", { style: laneGridStyle(12, WEEK_LANE_H), children: week.segments.map((seg) => /* @__PURE__ */ jsx(
691
- EventBar,
692
- {
693
- segment: seg,
694
- selected: seg.event.id === activeSelected,
695
- tall: true,
696
- onSelect: selectEvent
542
+ /* @__PURE__ */ jsxs("div", { className: "wp-evcal__lanes", style: laneGridStyle(MONTH_BAR_TOP, MONTH_LANE_H), children: [
543
+ row.segments.map((seg) => /* @__PURE__ */ jsx(
544
+ EventBar,
545
+ {
546
+ segment: seg,
547
+ selected: seg.event.id === activeSelected,
548
+ onSelect: selectEvent
549
+ },
550
+ `${seg.event.id}-${row.weekStart}`
551
+ )),
552
+ row.hasOverflow && row.overflow.map(
553
+ (count, i) => count > 0 ? /* @__PURE__ */ jsxs(
554
+ "button",
555
+ {
556
+ type: "button",
557
+ title: `\uC228\uACA8\uC9C4 \uC77C\uC815 ${count}\uAC74 \u2014 \uC77C \uBCF4\uAE30\uB85C \uC774\uB3D9`,
558
+ onClick: (e) => {
559
+ e.stopPropagation();
560
+ openDay(row.days[i].ts);
561
+ },
562
+ style: {
563
+ gridColumn: `${i + 1} / span 1`,
564
+ gridRow: `${MONTH_MAX_LANES + 1}`,
565
+ pointerEvents: "auto",
566
+ justifySelf: "start",
567
+ alignSelf: "center",
568
+ margin: "0 var(--wp-space-1)",
569
+ padding: "0 var(--wp-space-1)",
570
+ height: 16,
571
+ border: "none",
572
+ borderRadius: "var(--wp-radius-xs)",
573
+ background: "none",
574
+ fontSize: 11,
575
+ fontWeight: 700,
576
+ color: "var(--wp-text-muted)",
577
+ cursor: "pointer"
578
+ },
579
+ children: [
580
+ "+",
581
+ count
582
+ ]
583
+ },
584
+ `ov-${row.days[i].ts}`
585
+ ) : null
586
+ )
587
+ ] })
588
+ ]
589
+ },
590
+ row.weekStart
591
+ ))
592
+ ] }),
593
+ activeView === "week" && week && /* @__PURE__ */ jsxs(Fragment, { children: [
594
+ /* @__PURE__ */ jsx(
595
+ "div",
596
+ {
597
+ style: {
598
+ display: "grid",
599
+ gridTemplateColumns: "repeat(7, 1fr)",
600
+ borderBottom: cellBorder
601
+ },
602
+ children: week.days.map((day) => /* @__PURE__ */ jsxs(
603
+ "button",
604
+ {
605
+ type: "button",
606
+ onClick: () => openDay(day.ts),
607
+ style: {
608
+ border: "none",
609
+ background: "none",
610
+ padding: "var(--wp-space-2) 0",
611
+ textAlign: "center",
612
+ cursor: "pointer"
697
613
  },
698
- seg.event.id
699
- )) }),
700
- week.segments.length === 0 && /* @__PURE__ */ jsx(EmptyState, { icon: "calendar", tight: true, title: "\uC77C\uC815 \uC5C6\uC74C", children: "\uC774 \uC8FC\uC5D0\uB294 \uD45C\uC2DC\uD560 \uC77C\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." })
701
- ] })
702
- ] }),
703
- activeView === "day" && /* @__PURE__ */ jsx(
704
- "div",
705
- {
706
- style: {
707
- display: "flex",
708
- flexDirection: "column",
709
- gap: "var(--wp-space-2)",
710
- padding: "var(--wp-space-4)"
614
+ children: [
615
+ /* @__PURE__ */ jsx(
616
+ "span",
617
+ {
618
+ className: "wp-caption",
619
+ style: {
620
+ display: "block",
621
+ fontWeight: 600,
622
+ color: day.isSunday ? "var(--wp-text-danger)" : "var(--wp-text-muted)"
623
+ },
624
+ children: day.label
625
+ }
626
+ ),
627
+ /* @__PURE__ */ jsx("span", { style: { marginTop: "var(--wp-space-half)", display: "inline-flex" }, children: dayNumber(day) })
628
+ ]
711
629
  },
712
- children: dayItems.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { icon: "calendar", tight: true, title: "\uC77C\uC815 \uC5C6\uC74C", children: "\uC774 \uB0A0\uC9DC\uC5D0\uB294 \uD45C\uC2DC\uD560 \uC77C\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) : dayItems.map((event) => eventRow(event))
713
- }
714
- ),
715
- activeView === "agenda" && /* @__PURE__ */ jsx(
630
+ day.ts
631
+ ))
632
+ }
633
+ ),
634
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative", minHeight: week.bodyHeight }, children: [
635
+ /* @__PURE__ */ jsx(
716
636
  "div",
717
637
  {
718
638
  style: {
719
- display: "flex",
720
- flexDirection: "column",
721
- gap: "var(--wp-space-4)",
722
- padding: "var(--wp-space-4)"
639
+ position: "absolute",
640
+ inset: 0,
641
+ display: "grid",
642
+ gridTemplateColumns: "repeat(7, 1fr)"
723
643
  },
724
- children: agendaGroups.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { icon: "calendar", tight: true, title: "\uB2E4\uAC00\uC624\uB294 \uC77C\uC815 \uC5C6\uC74C", children: "\uAE30\uC900\uC77C \uC774\uD6C4\uC5D0 \uD45C\uC2DC\uD560 \uC77C\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) : agendaGroups.map((group) => /* @__PURE__ */ jsxs("div", { children: [
725
- /* @__PURE__ */ jsxs(
726
- "div",
727
- {
728
- style: {
729
- display: "flex",
730
- alignItems: "center",
731
- gap: "var(--wp-space-2)",
732
- marginBottom: "var(--wp-space-2)"
733
- },
734
- children: [
735
- /* @__PURE__ */ jsx(Icon, { name: "calendar", size: 16, style: { color: "var(--wp-text-muted)" } }),
736
- /* @__PURE__ */ jsxs(
737
- "span",
738
- {
739
- className: "wp-caption",
740
- style: {
741
- fontWeight: 700,
742
- color: group.ts === today ? "var(--wp-text-brand)" : "var(--wp-text-muted)"
743
- },
744
- children: [
745
- fmtMonthDay(group.ts),
746
- " (",
747
- weekdayName(group.ts),
748
- ")",
749
- group.ts === today ? " \xB7 \uC624\uB298" : ""
750
- ]
751
- }
752
- )
753
- ]
754
- }
755
- ),
756
- /* @__PURE__ */ jsx(
757
- "div",
758
- {
759
- style: { display: "flex", flexDirection: "column", gap: "var(--wp-space-1)" },
760
- children: group.items.map((event) => eventRow(event))
644
+ children: week.days.map((day, i) => /* @__PURE__ */ jsx(
645
+ "div",
646
+ {
647
+ style: {
648
+ borderRight: i < 6 ? cellBorder : void 0,
649
+ background: day.isToday ? "var(--wp-surface-brand-tint)" : void 0
761
650
  }
762
- )
763
- ] }, group.ts))
651
+ },
652
+ day.ts
653
+ ))
764
654
  }
765
- )
766
- ]
767
- }
768
- )
769
- ]
770
- }
771
- );
655
+ ),
656
+ /* @__PURE__ */ jsx("div", { style: laneGridStyle(12, WEEK_LANE_H), children: week.segments.map((seg) => /* @__PURE__ */ jsx(
657
+ EventBar,
658
+ {
659
+ segment: seg,
660
+ selected: seg.event.id === activeSelected,
661
+ tall: true,
662
+ onSelect: selectEvent
663
+ },
664
+ seg.event.id
665
+ )) }),
666
+ week.segments.length === 0 && /* @__PURE__ */ jsx(EmptyState, { icon: "calendar", tight: true, title: "\uC77C\uC815 \uC5C6\uC74C", children: "\uC774 \uC8FC\uC5D0\uB294 \uD45C\uC2DC\uD560 \uC77C\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." })
667
+ ] })
668
+ ] }),
669
+ activeView === "day" && /* @__PURE__ */ jsx(
670
+ "div",
671
+ {
672
+ style: {
673
+ display: "flex",
674
+ flexDirection: "column",
675
+ gap: "var(--wp-space-2)",
676
+ padding: "var(--wp-space-4)"
677
+ },
678
+ children: dayItems.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { icon: "calendar", tight: true, title: "\uC77C\uC815 \uC5C6\uC74C", children: "\uC774 \uB0A0\uC9DC\uC5D0\uB294 \uD45C\uC2DC\uD560 \uC77C\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) : dayItems.map((event) => eventRow(event))
679
+ }
680
+ ),
681
+ activeView === "agenda" && /* @__PURE__ */ jsx(
682
+ "div",
683
+ {
684
+ style: {
685
+ display: "flex",
686
+ flexDirection: "column",
687
+ gap: "var(--wp-space-4)",
688
+ padding: "var(--wp-space-4)"
689
+ },
690
+ children: agendaGroups.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { icon: "calendar", tight: true, title: "\uB2E4\uAC00\uC624\uB294 \uC77C\uC815 \uC5C6\uC74C", children: "\uAE30\uC900\uC77C \uC774\uD6C4\uC5D0 \uD45C\uC2DC\uD560 \uC77C\uC815\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." }) : agendaGroups.map((group) => /* @__PURE__ */ jsxs("div", { children: [
691
+ /* @__PURE__ */ jsxs(
692
+ "div",
693
+ {
694
+ style: {
695
+ display: "flex",
696
+ alignItems: "center",
697
+ gap: "var(--wp-space-2)",
698
+ marginBottom: "var(--wp-space-2)"
699
+ },
700
+ children: [
701
+ /* @__PURE__ */ jsx(Icon, { name: "calendar", size: 16, style: { color: "var(--wp-text-muted)" } }),
702
+ /* @__PURE__ */ jsxs(
703
+ "span",
704
+ {
705
+ className: "wp-caption",
706
+ style: {
707
+ fontWeight: 700,
708
+ color: group.ts === today ? "var(--wp-text-brand)" : "var(--wp-text-muted)"
709
+ },
710
+ children: [
711
+ fmtMonthDay(group.ts),
712
+ " (",
713
+ weekdayName(group.ts),
714
+ ")",
715
+ group.ts === today ? " \xB7 \uC624\uB298" : ""
716
+ ]
717
+ }
718
+ )
719
+ ]
720
+ }
721
+ ),
722
+ /* @__PURE__ */ jsx(
723
+ "div",
724
+ {
725
+ style: { display: "flex", flexDirection: "column", gap: "var(--wp-space-1)" },
726
+ children: group.items.map((event) => eventRow(event))
727
+ }
728
+ )
729
+ ] }, group.ts))
730
+ }
731
+ )
732
+ ]
733
+ }
734
+ ),
735
+ /* @__PURE__ */ jsx(HoistedStyle, { id: "wp-evcal", css: EVCAL_CSS })
736
+ ] });
772
737
  };
773
738
  var EventCalendar = boxed(EventCalendarImpl, "EventCalendar");
774
739