@wipco/sdui 1.4.2 → 1.6.0

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-GZBY7I4Y.js → chunk-2KQL6DYG.js} +3 -3
  3. package/dist/{chunk-RYBBPFI7.js → chunk-2QXA52DG.js} +4 -4
  4. package/dist/{chunk-DMLDKW7K.js → chunk-37BNG4DT.js} +1 -1
  5. package/dist/{chunk-5WW4MBRO.js → chunk-3JTBOABA.js} +6 -2
  6. package/dist/{chunk-UV6HHFEW.js → chunk-4OABUPIU.js} +129 -68
  7. package/dist/{chunk-ZORQPB6B.js → chunk-53KS4E5N.js} +318 -359
  8. package/dist/{chunk-I5SD7XRA.js → chunk-6TI4WF5Y.js} +3 -3
  9. package/dist/{chunk-44TDRCKR.js → chunk-6XI2VF2O.js} +5 -5
  10. package/dist/{chunk-HBIIEYKW.js → chunk-7C54CKFZ.js} +4 -4
  11. package/dist/{chunk-IZ3JA2BR.js → chunk-7JP52QQO.js} +3 -3
  12. package/dist/{chunk-I45EUZC6.js → chunk-AY4GM6KQ.js} +4 -2
  13. package/dist/{chunk-SAPBDJJQ.js → chunk-AZSLSAJB.js} +2 -2
  14. package/dist/chunk-BITS7UJY.js +333 -0
  15. package/dist/{chunk-RNOUXUBO.js → chunk-BLFJMMBW.js} +306 -57
  16. package/dist/{chunk-YOZN35HD.js → chunk-CEVZAFPO.js} +3 -3
  17. package/dist/chunk-CI5OZ2QT.js +106 -0
  18. package/dist/{chunk-FNMS7OB7.js → chunk-CSE3PZOZ.js} +5 -5
  19. package/dist/chunk-CSZCWBOE.js +256 -0
  20. package/dist/{chunk-JIV4YHCZ.js → chunk-EJIWOD7W.js} +1 -1
  21. package/dist/{chunk-JZXU22PE.js → chunk-FEKKOBPX.js} +208 -117
  22. package/dist/chunk-GSM664TX.js +38 -0
  23. package/dist/{chunk-JYAR7D5U.js → chunk-HRHKQOOF.js} +2 -2
  24. package/dist/{chunk-CXW6KT6X.js → chunk-HXLQSO66.js} +3 -3
  25. package/dist/{chunk-O4IISNE7.js → chunk-IB2ZPUTF.js} +51 -12
  26. package/dist/{chunk-MPT7WJG2.js → chunk-IQXLNICY.js} +5 -5
  27. package/dist/{chunk-OQ52XMGG.js → chunk-K6RE23XX.js} +4 -4
  28. package/dist/{chunk-VY7MVBSE.js → chunk-KZ6U6FKB.js} +2 -2
  29. package/dist/{chunk-WPSK2CB5.js → chunk-LIZTK3HO.js} +16 -5
  30. package/dist/{chunk-Q4SWUINA.js → chunk-LKQJJSVJ.js} +1 -1
  31. package/dist/{chunk-E6ISNQK3.js → chunk-M6H3SHIS.js} +31 -8
  32. package/dist/chunk-MN4RZ2WP.js +380 -0
  33. package/dist/{chunk-GTGS2QRL.js → chunk-NA232CBX.js} +3 -3
  34. package/dist/{chunk-ZFNFPXPR.js → chunk-NAIWQQPW.js} +2 -2
  35. package/dist/{chunk-YVTV4ZV6.js → chunk-NWYYNE3Q.js} +1 -1
  36. package/dist/{chunk-DKVSM5HX.js → chunk-OUEJWC2Z.js} +6 -6
  37. package/dist/{chunk-DOL57OOP.js → chunk-OYDJHQNZ.js} +3 -3
  38. package/dist/{chunk-YWUDBLO6.js → chunk-QVS6K4FP.js} +2 -2
  39. package/dist/{chunk-N5RKM6IC.js → chunk-RU5U2YMT.js} +4 -4
  40. package/dist/{chunk-A6LAIGUS.js → chunk-V7BWMOHO.js} +7 -4
  41. package/dist/{chunk-2HLXCKK7.js → chunk-VPOOIEKT.js} +2 -2
  42. package/dist/{chunk-2YP5N4VV.js → chunk-VZOQRQAR.js} +1 -1
  43. package/dist/{chunk-GNA6SX2H.js → chunk-W4VA76QO.js} +2 -2
  44. package/dist/{chunk-BEM2YS7U.js → chunk-WEG3V7ZB.js} +3 -3
  45. package/dist/{chunk-XGFDY43I.js → chunk-WTIYILY3.js} +88 -18
  46. package/dist/{chunk-RWSH2MBU.js → chunk-X2NIRVLN.js} +73 -19
  47. package/dist/{chunk-AXGF4M57.js → chunk-XAXROQKB.js} +1 -1
  48. package/dist/{chunk-NIJUVTEW.js → chunk-XG22XKKD.js} +3 -3
  49. package/dist/{chunk-A5XQOEVH.js → chunk-YN7X7BEO.js} +4 -4
  50. package/dist/{chunk-KO6OEY3G.js → chunk-YNEEJCSZ.js} +3 -13
  51. package/dist/{chunk-7P7N43JV.js → chunk-YZTTFEL4.js} +2 -2
  52. package/dist/index.d.ts +494 -89
  53. package/dist/index.js +1098 -124
  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 +286 -22
  57. package/dist/rich/ExcelUploadCard.d.ts +1 -1
  58. package/dist/rich/ExcelUploadCard.js +5 -4
  59. package/dist/rich.d.ts +21 -3
  60. package/dist/rich.js +277 -35
  61. package/dist/styles.css +102 -4
  62. package/dist/{types-COjGKgmd.d.ts → types-CYfIthux.d.ts} +57 -1
  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 +1 -1
  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-BLFJMMBW.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
 
@@ -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,28 @@ 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
+ @media screen and (max-width:767.98px){
213
+ .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}
214
+ .wp-evcal__types::-webkit-scrollbar{display:none}
215
+ .wp-evcal__types>*{flex:none}
216
+ /* \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. */
217
+ .wp-evcal__types>button{min-height:32px;display:inline-flex;align-items:center}
218
+ .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)}
219
+ .wp-evcal__item-bar{grid-row:1 / span 2;height:auto;align-self:stretch}
220
+ .wp-evcal__item-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
221
+ .wp-evcal__item-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--wp-space-1) var(--wp-space-2);min-width:0}
222
+ .wp-evcal--month .wp-evcal__bar-title{display:none}
223
+ }
224
+ `;
201
225
  var EventCalendarImpl = ({
202
226
  events,
203
227
  view,
@@ -210,13 +234,15 @@ var EventCalendarImpl = ({
210
234
  onEventClick,
211
235
  selectedId
212
236
  }) => {
213
- const [internalView, setInternalView] = useState(view ?? "month");
237
+ const isMobile = useIsMobile();
238
+ const [internalView, setInternalView] = useState(view ?? null);
214
239
  const [internalDate, setInternalDate] = useState(() => date ?? fmtISO(todayTs()));
215
240
  const [internalSelected, setInternalSelected] = useState(null);
216
241
  const [hiddenTypes, setHiddenTypes] = useState(/* @__PURE__ */ new Set());
217
242
  const [today] = useState(todayTs);
218
243
  const viewItems = useMemo(() => normalizeViews(views), [views]);
219
- const requestedView = view ?? internalView;
244
+ const fallbackView = isMobile && viewItems.some((item) => item.value === "agenda") ? "agenda" : "month";
245
+ const requestedView = view ?? internalView ?? fallbackView;
220
246
  const activeView = viewItems.some((item) => item.value === requestedView) ? requestedView : viewItems[0].value;
221
247
  const anchor = parseISO(date ?? internalDate);
222
248
  const activeSelected = selectedId !== void 0 ? selectedId : internalSelected;
@@ -374,298 +400,102 @@ var EventCalendarImpl = ({
374
400
  "button",
375
401
  {
376
402
  type: "button",
403
+ className: "wp-evcal__item",
377
404
  "aria-pressed": selected,
378
405
  onClick: (e) => selectEvent(event, e),
379
406
  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
407
  border: cellBorder,
386
408
  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)"
409
+ background: selected ? "var(--wp-surface-selected)" : "var(--wp-surface-card)"
393
410
  },
394
411
  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) })
412
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "wp-evcal__item-bar", style: { background: event.color } }),
413
+ /* @__PURE__ */ jsx("span", { className: "wp-evcal__item-title", children: event.title }),
414
+ /* @__PURE__ */ jsxs("span", { className: "wp-evcal__item-meta", children: [
415
+ event.typeLabel && /* @__PURE__ */ jsx(Tag, { color: event.color, className: "wp-caption", children: event.typeLabel }),
416
+ event.status && /* @__PURE__ */ jsx(Badge, { tone: statusToneOf(event.status, statusTones), children: event.status }),
417
+ /* @__PURE__ */ jsx("span", { className: "wp-evcal__item-range", children: fmtRange(event.dayStart, event.dayEnd) })
418
+ ] })
427
419
  ]
428
420
  },
429
421
  event.id + fmtISO(event.dayStart)
430
422
  );
431
423
  };
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",
424
+ return /* @__PURE__ */ jsxs("div", { className: `wp-evcal wp-evcal--${activeView}`, children: [
425
+ /* @__PURE__ */ jsxs("div", { className: "wp-evcal__toolbar", children: [
426
+ /* @__PURE__ */ jsx(
427
+ SegmentedControl,
428
+ {
429
+ items: [...viewItems],
430
+ value: activeView,
431
+ onChange: (v) => setView(v)
432
+ }
433
+ ),
434
+ /* @__PURE__ */ jsx(
435
+ "span",
436
+ {
437
+ "aria-hidden": true,
438
+ style: { width: 1, height: 20, background: "var(--wp-border-subtle)" }
439
+ }
440
+ ),
441
+ /* @__PURE__ */ jsx(IconButton, { icon: "chevron-left", label: "\uC774\uC804", onClick: () => move(-1) }),
442
+ /* @__PURE__ */ jsx(Button, { size: "sm", variant: "secondary", onClick: () => setDate(today), children: "\uC624\uB298" }),
443
+ /* @__PURE__ */ jsx(IconButton, { icon: "chevron-right", label: "\uB2E4\uC74C", onClick: () => move(1) }),
444
+ /* @__PURE__ */ jsx("h3", { className: "wp-h4", style: { margin: "0 0 0 var(--wp-space-2)" }, children: headline }),
445
+ types && types.length > 0 && /* @__PURE__ */ jsx("span", { className: "wp-evcal__types", role: "group", "aria-label": "\uC77C\uC815 \uC720\uD615", children: types.map((t) => {
446
+ const off = hiddenTypes.has(t.value);
447
+ const color = dayEvents.find((e) => e.type === t.value)?.color ?? t.color;
448
+ return /* @__PURE__ */ jsx(
449
+ "button",
511
450
  {
451
+ type: "button",
452
+ "aria-pressed": !off,
453
+ title: off ? `${t.label} \uC77C\uC815 \uD45C\uC2DC` : `${t.label} \uC77C\uC815 \uC228\uAE30\uAE30`,
454
+ onClick: () => toggleType(t.value),
512
455
  style: {
513
- border: cellBorder,
514
- borderRadius: "var(--wp-radius-card)",
515
- background: "var(--wp-surface-card)",
516
- overflow: "hidden"
456
+ border: "none",
457
+ background: "none",
458
+ padding: 0,
459
+ cursor: "pointer",
460
+ opacity: off ? 0.4 : 1,
461
+ transition: "opacity var(--wp-duration-fast)"
517
462
  },
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: [
463
+ children: /* @__PURE__ */ jsx(Tag, { color, filled: !off, children: t.label })
464
+ },
465
+ t.value
466
+ );
467
+ }) })
468
+ ] }),
469
+ /* @__PURE__ */ jsxs(
470
+ "div",
471
+ {
472
+ style: {
473
+ border: cellBorder,
474
+ borderRadius: "var(--wp-radius-card)",
475
+ background: "var(--wp-surface-card)",
476
+ overflow: "hidden"
477
+ },
478
+ children: [
479
+ activeView === "month" && /* @__PURE__ */ jsxs(Fragment, { children: [
480
+ /* @__PURE__ */ jsx("div", { style: { display: "grid", gridTemplateColumns: "repeat(7, 1fr)" }, children: WEEKDAYS.map((w, i) => /* @__PURE__ */ jsx(
481
+ "div",
482
+ {
483
+ className: "wp-caption",
484
+ style: {
485
+ padding: "var(--wp-space-2) 0",
486
+ textAlign: "center",
487
+ fontWeight: 600,
488
+ color: i === 6 ? "var(--wp-text-danger)" : "var(--wp-text-muted)"
489
+ },
490
+ children: w
491
+ },
492
+ w
493
+ )) }),
494
+ monthWeeks.map((row) => /* @__PURE__ */ jsxs(
495
+ "div",
496
+ {
497
+ style: { position: "relative", borderTop: cellBorder, minHeight: row.rowHeight },
498
+ children: [
669
499
  /* @__PURE__ */ jsx(
670
500
  "div",
671
501
  {
@@ -675,100 +505,229 @@ var EventCalendarImpl = ({
675
505
  display: "grid",
676
506
  gridTemplateColumns: "repeat(7, 1fr)"
677
507
  },
678
- children: week.days.map((day, i) => /* @__PURE__ */ jsx(
508
+ children: row.days.map((day, i) => /* @__PURE__ */ jsx(
679
509
  "div",
680
510
  {
511
+ role: "button",
512
+ tabIndex: 0,
513
+ "aria-label": `${fmtISO(day.ts)} \uC77C\uC815 \uBCF4\uAE30`,
514
+ onClick: () => openDay(day.ts),
515
+ onKeyDown: (e) => {
516
+ if (e.key === "Enter" || e.key === " ") {
517
+ e.preventDefault();
518
+ openDay(day.ts);
519
+ }
520
+ },
681
521
  style: {
522
+ display: "flex",
523
+ alignItems: "flex-start",
524
+ justifyContent: "flex-end",
525
+ padding: "var(--wp-space-1)",
682
526
  borderRight: i < 6 ? cellBorder : void 0,
683
- background: day.isToday ? "var(--wp-surface-brand-tint)" : void 0
684
- }
527
+ background: day.inMonth ? void 0 : "var(--wp-surface-sunken)",
528
+ cursor: "pointer"
529
+ },
530
+ children: dayNumber(day)
685
531
  },
686
532
  day.ts
687
533
  ))
688
534
  }
689
535
  ),
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
536
+ /* @__PURE__ */ jsxs("div", { style: laneGridStyle(MONTH_BAR_TOP, MONTH_LANE_H), children: [
537
+ row.segments.map((seg) => /* @__PURE__ */ jsx(
538
+ EventBar,
539
+ {
540
+ segment: seg,
541
+ selected: seg.event.id === activeSelected,
542
+ onSelect: selectEvent
543
+ },
544
+ `${seg.event.id}-${row.weekStart}`
545
+ )),
546
+ row.hasOverflow && row.overflow.map(
547
+ (count, i) => count > 0 ? /* @__PURE__ */ jsxs(
548
+ "button",
549
+ {
550
+ type: "button",
551
+ title: `\uC228\uACA8\uC9C4 \uC77C\uC815 ${count}\uAC74 \u2014 \uC77C \uBCF4\uAE30\uB85C \uC774\uB3D9`,
552
+ onClick: (e) => {
553
+ e.stopPropagation();
554
+ openDay(row.days[i].ts);
555
+ },
556
+ style: {
557
+ gridColumn: `${i + 1} / span 1`,
558
+ gridRow: `${MONTH_MAX_LANES + 1}`,
559
+ pointerEvents: "auto",
560
+ justifySelf: "start",
561
+ alignSelf: "center",
562
+ margin: "0 var(--wp-space-1)",
563
+ padding: "0 var(--wp-space-1)",
564
+ height: 16,
565
+ border: "none",
566
+ borderRadius: "var(--wp-radius-xs)",
567
+ background: "none",
568
+ fontSize: 11,
569
+ fontWeight: 700,
570
+ color: "var(--wp-text-muted)",
571
+ cursor: "pointer"
572
+ },
573
+ children: [
574
+ "+",
575
+ count
576
+ ]
577
+ },
578
+ `ov-${row.days[i].ts}`
579
+ ) : null
580
+ )
581
+ ] })
582
+ ]
583
+ },
584
+ row.weekStart
585
+ ))
586
+ ] }),
587
+ activeView === "week" && week && /* @__PURE__ */ jsxs(Fragment, { children: [
588
+ /* @__PURE__ */ jsx(
589
+ "div",
590
+ {
591
+ style: {
592
+ display: "grid",
593
+ gridTemplateColumns: "repeat(7, 1fr)",
594
+ borderBottom: cellBorder
595
+ },
596
+ children: week.days.map((day) => /* @__PURE__ */ jsxs(
597
+ "button",
598
+ {
599
+ type: "button",
600
+ onClick: () => openDay(day.ts),
601
+ style: {
602
+ border: "none",
603
+ background: "none",
604
+ padding: "var(--wp-space-2) 0",
605
+ textAlign: "center",
606
+ cursor: "pointer"
697
607
  },
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)"
608
+ children: [
609
+ /* @__PURE__ */ jsx(
610
+ "span",
611
+ {
612
+ className: "wp-caption",
613
+ style: {
614
+ display: "block",
615
+ fontWeight: 600,
616
+ color: day.isSunday ? "var(--wp-text-danger)" : "var(--wp-text-muted)"
617
+ },
618
+ children: day.label
619
+ }
620
+ ),
621
+ /* @__PURE__ */ jsx("span", { style: { marginTop: "var(--wp-space-half)", display: "inline-flex" }, children: dayNumber(day) })
622
+ ]
711
623
  },
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(
624
+ day.ts
625
+ ))
626
+ }
627
+ ),
628
+ /* @__PURE__ */ jsxs("div", { style: { position: "relative", minHeight: week.bodyHeight }, children: [
629
+ /* @__PURE__ */ jsx(
716
630
  "div",
717
631
  {
718
632
  style: {
719
- display: "flex",
720
- flexDirection: "column",
721
- gap: "var(--wp-space-4)",
722
- padding: "var(--wp-space-4)"
633
+ position: "absolute",
634
+ inset: 0,
635
+ display: "grid",
636
+ gridTemplateColumns: "repeat(7, 1fr)"
723
637
  },
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))
638
+ children: week.days.map((day, i) => /* @__PURE__ */ jsx(
639
+ "div",
640
+ {
641
+ style: {
642
+ borderRight: i < 6 ? cellBorder : void 0,
643
+ background: day.isToday ? "var(--wp-surface-brand-tint)" : void 0
761
644
  }
762
- )
763
- ] }, group.ts))
645
+ },
646
+ day.ts
647
+ ))
764
648
  }
765
- )
766
- ]
767
- }
768
- )
769
- ]
770
- }
771
- );
649
+ ),
650
+ /* @__PURE__ */ jsx("div", { style: laneGridStyle(12, WEEK_LANE_H), children: week.segments.map((seg) => /* @__PURE__ */ jsx(
651
+ EventBar,
652
+ {
653
+ segment: seg,
654
+ selected: seg.event.id === activeSelected,
655
+ tall: true,
656
+ onSelect: selectEvent
657
+ },
658
+ seg.event.id
659
+ )) }),
660
+ 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." })
661
+ ] })
662
+ ] }),
663
+ activeView === "day" && /* @__PURE__ */ jsx(
664
+ "div",
665
+ {
666
+ style: {
667
+ display: "flex",
668
+ flexDirection: "column",
669
+ gap: "var(--wp-space-2)",
670
+ padding: "var(--wp-space-4)"
671
+ },
672
+ 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))
673
+ }
674
+ ),
675
+ activeView === "agenda" && /* @__PURE__ */ jsx(
676
+ "div",
677
+ {
678
+ style: {
679
+ display: "flex",
680
+ flexDirection: "column",
681
+ gap: "var(--wp-space-4)",
682
+ padding: "var(--wp-space-4)"
683
+ },
684
+ 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: [
685
+ /* @__PURE__ */ jsxs(
686
+ "div",
687
+ {
688
+ style: {
689
+ display: "flex",
690
+ alignItems: "center",
691
+ gap: "var(--wp-space-2)",
692
+ marginBottom: "var(--wp-space-2)"
693
+ },
694
+ children: [
695
+ /* @__PURE__ */ jsx(Icon, { name: "calendar", size: 16, style: { color: "var(--wp-text-muted)" } }),
696
+ /* @__PURE__ */ jsxs(
697
+ "span",
698
+ {
699
+ className: "wp-caption",
700
+ style: {
701
+ fontWeight: 700,
702
+ color: group.ts === today ? "var(--wp-text-brand)" : "var(--wp-text-muted)"
703
+ },
704
+ children: [
705
+ fmtMonthDay(group.ts),
706
+ " (",
707
+ weekdayName(group.ts),
708
+ ")",
709
+ group.ts === today ? " \xB7 \uC624\uB298" : ""
710
+ ]
711
+ }
712
+ )
713
+ ]
714
+ }
715
+ ),
716
+ /* @__PURE__ */ jsx(
717
+ "div",
718
+ {
719
+ style: { display: "flex", flexDirection: "column", gap: "var(--wp-space-1)" },
720
+ children: group.items.map((event) => eventRow(event))
721
+ }
722
+ )
723
+ ] }, group.ts))
724
+ }
725
+ )
726
+ ]
727
+ }
728
+ ),
729
+ /* @__PURE__ */ jsx(HoistedStyle, { id: "wp-evcal", css: EVCAL_CSS })
730
+ ] });
772
731
  };
773
732
  var EventCalendar = boxed(EventCalendarImpl, "EventCalendar");
774
733