@zenkigen-inc/component-ui 1.18.4 → 1.19.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.
- package/dist/index.d.mts +55 -3
- package/dist/index.d.ts +55 -3
- package/dist/index.js +1306 -857
- package/dist/index.mjs +1200 -742
- package/package.json +6 -5
package/dist/index.js
CHANGED
|
@@ -34,6 +34,7 @@ __export(index_exports, {
|
|
|
34
34
|
Breadcrumb: () => Breadcrumb,
|
|
35
35
|
Button: () => Button,
|
|
36
36
|
Checkbox: () => Checkbox,
|
|
37
|
+
DatePicker: () => DatePicker,
|
|
37
38
|
Dropdown: () => Dropdown,
|
|
38
39
|
EvaluationStar: () => EvaluationStar,
|
|
39
40
|
FileInput: () => FileInput,
|
|
@@ -341,16 +342,697 @@ function Checkbox({
|
|
|
341
342
|
] });
|
|
342
343
|
}
|
|
343
344
|
|
|
344
|
-
// src/
|
|
345
|
+
// src/date-picker/date-picker.tsx
|
|
346
|
+
var import_style = require("react-day-picker/style.css");
|
|
347
|
+
var import_react10 = require("react");
|
|
348
|
+
var import_react_day_picker4 = require("react-day-picker");
|
|
349
|
+
|
|
350
|
+
// src/icon-button/icon-button.tsx
|
|
351
|
+
var import_component_theme5 = require("@zenkigen-inc/component-theme");
|
|
352
|
+
var import_clsx5 = require("clsx");
|
|
353
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
354
|
+
function IconButton({
|
|
355
|
+
icon,
|
|
356
|
+
size = "medium",
|
|
357
|
+
variant = "outline",
|
|
358
|
+
isNoPadding = false,
|
|
359
|
+
isDisabled = false,
|
|
360
|
+
isSelected = false,
|
|
361
|
+
iconAccentColor,
|
|
362
|
+
...props
|
|
363
|
+
}) {
|
|
364
|
+
const baseClasses = (0, import_clsx5.clsx)(
|
|
365
|
+
"typography-label16regular flex items-center justify-center gap-1 rounded",
|
|
366
|
+
import_component_theme5.buttonColors[variant].hover,
|
|
367
|
+
import_component_theme5.buttonColors[variant].active,
|
|
368
|
+
import_component_theme5.buttonColors[variant].disabled,
|
|
369
|
+
import_component_theme5.focusVisible.normal,
|
|
370
|
+
{
|
|
371
|
+
"h-4 w-4": size === "small" && isNoPadding,
|
|
372
|
+
"h-6 w-6": size === "small" && !isNoPadding || (size === "medium" || size === "large") && isNoPadding,
|
|
373
|
+
"h-8 w-8": size === "medium" && !isNoPadding,
|
|
374
|
+
"h-10 w-10": size === "large" && !isNoPadding,
|
|
375
|
+
"inline-flex": props.isAnchor,
|
|
376
|
+
"pointer-events-none": isDisabled,
|
|
377
|
+
[import_component_theme5.buttonColors[variant].selected]: isSelected,
|
|
378
|
+
[import_component_theme5.buttonColors[variant].base]: !isSelected
|
|
379
|
+
}
|
|
380
|
+
);
|
|
381
|
+
const iconSize = size === "small" ? "small" : "medium";
|
|
382
|
+
const iconAccentColorProps = !isSelected && iconAccentColor ? { accentColor: iconAccentColor } : {};
|
|
383
|
+
if (props.isAnchor === true) {
|
|
384
|
+
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
385
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("a", { className: baseClasses, ...buttonProps, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { name: icon, size: iconSize, ...iconAccentColorProps }) });
|
|
386
|
+
} else {
|
|
387
|
+
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { type: "button", className: baseClasses, disabled: isDisabled, ...buttonProps, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { name: icon, size: iconSize, ...iconAccentColorProps }) });
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// src/popover/popover.tsx
|
|
393
|
+
var import_react6 = require("@floating-ui/react");
|
|
394
|
+
var import_react7 = require("react");
|
|
395
|
+
|
|
396
|
+
// src/popover/popover-content.tsx
|
|
397
|
+
var import_react3 = require("@floating-ui/react");
|
|
398
|
+
var React = __toESM(require("react"));
|
|
399
|
+
var import_react4 = require("react");
|
|
400
|
+
|
|
401
|
+
// src/utils/react-utils.ts
|
|
402
|
+
function composeRefs(...refs) {
|
|
403
|
+
return (node) => {
|
|
404
|
+
for (const ref of refs) {
|
|
405
|
+
if (ref == null) {
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
if (typeof ref === "function") {
|
|
409
|
+
ref(node);
|
|
410
|
+
} else {
|
|
411
|
+
ref.current = node;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function isElement(node) {
|
|
417
|
+
return node != null && typeof node === "object" && "type" in node;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// src/popover/popover-context.ts
|
|
421
|
+
var import_react2 = require("react");
|
|
422
|
+
var PopoverContext = (0, import_react2.createContext)(null);
|
|
423
|
+
var usePopoverContext = () => {
|
|
424
|
+
const context = (0, import_react2.useContext)(PopoverContext);
|
|
425
|
+
if (context == null) {
|
|
426
|
+
throw new Error("Popover components must be used inside <Popover.Root>");
|
|
427
|
+
}
|
|
428
|
+
return context;
|
|
429
|
+
};
|
|
430
|
+
|
|
431
|
+
// src/popover/popover-content.tsx
|
|
432
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
433
|
+
var PopoverContent = (0, import_react4.forwardRef)(function PopoverContent2({ children }, ref) {
|
|
434
|
+
const { isOpen, triggerRef, floating, panelId, onClose } = usePopoverContext();
|
|
435
|
+
const shouldCloseOnOutsidePress = (0, import_react4.useCallback)(
|
|
436
|
+
(event) => {
|
|
437
|
+
const target = event.target;
|
|
438
|
+
if (!(target instanceof Element)) {
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
const floatingElement = floating.refs.floating.current;
|
|
442
|
+
const closestOverlay = target.closest(".z-overlay, .z-dropdown");
|
|
443
|
+
if (closestOverlay !== null && floatingElement instanceof Element) {
|
|
444
|
+
const isInsideOwnFloating = floatingElement.contains(closestOverlay);
|
|
445
|
+
return isInsideOwnFloating;
|
|
446
|
+
}
|
|
447
|
+
return true;
|
|
448
|
+
},
|
|
449
|
+
[floating.refs.floating]
|
|
450
|
+
);
|
|
451
|
+
const dismiss = (0, import_react3.useDismiss)(floating.context, {
|
|
452
|
+
outsidePressEvent: "pointerdown",
|
|
453
|
+
outsidePress: shouldCloseOnOutsidePress,
|
|
454
|
+
escapeKey: false
|
|
455
|
+
});
|
|
456
|
+
const interactions = (0, import_react3.useInteractions)([dismiss, (0, import_react3.useRole)(floating.context, { role: "dialog" })]);
|
|
457
|
+
(0, import_react4.useEffect)(() => {
|
|
458
|
+
if (isOpen) {
|
|
459
|
+
const element = floating.refs.floating.current;
|
|
460
|
+
element?.focus?.({ preventScroll: true });
|
|
461
|
+
}
|
|
462
|
+
}, [isOpen, floating.refs.floating]);
|
|
463
|
+
const prevIsOpenRef = (0, import_react4.useRef)(isOpen);
|
|
464
|
+
(0, import_react4.useEffect)(() => {
|
|
465
|
+
const hasPreviouslyBeenOpen = prevIsOpenRef.current;
|
|
466
|
+
prevIsOpenRef.current = isOpen;
|
|
467
|
+
if (hasPreviouslyBeenOpen && !isOpen) {
|
|
468
|
+
triggerRef.current?.focus({ preventScroll: true });
|
|
469
|
+
}
|
|
470
|
+
}, [isOpen, triggerRef]);
|
|
471
|
+
const handleKeyDown = (0, import_react4.useCallback)(
|
|
472
|
+
(event) => {
|
|
473
|
+
if (event.key === "Escape") {
|
|
474
|
+
event.stopPropagation();
|
|
475
|
+
if (onClose != null) {
|
|
476
|
+
onClose({ reason: "escape-key-down" });
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
[onClose]
|
|
481
|
+
);
|
|
482
|
+
let wrappedChildren = children;
|
|
483
|
+
if (isElement(children)) {
|
|
484
|
+
const childProps = children.props;
|
|
485
|
+
wrappedChildren = React.cloneElement(children, {
|
|
486
|
+
...childProps,
|
|
487
|
+
...childProps.id == null && { id: panelId },
|
|
488
|
+
...childProps.role == null && { role: "dialog" }
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react3.FloatingPortal, { children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
492
|
+
"div",
|
|
493
|
+
{
|
|
494
|
+
...interactions.getFloatingProps({
|
|
495
|
+
ref: composeRefs(floating.refs.setFloating, ref),
|
|
496
|
+
tabIndex: -1,
|
|
497
|
+
onKeyDown: handleKeyDown,
|
|
498
|
+
style: {
|
|
499
|
+
position: floating.strategy,
|
|
500
|
+
top: floating.y ?? 0,
|
|
501
|
+
left: floating.x ?? 0,
|
|
502
|
+
outline: "0"
|
|
503
|
+
}
|
|
504
|
+
}),
|
|
505
|
+
children: wrappedChildren
|
|
506
|
+
}
|
|
507
|
+
) : null });
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
// src/popover/popover-trigger.tsx
|
|
511
|
+
var React2 = __toESM(require("react"));
|
|
512
|
+
var import_react5 = require("react");
|
|
513
|
+
var PopoverTrigger = (0, import_react5.forwardRef)(function PopoverTrigger2({ children }, ref) {
|
|
514
|
+
const { isOpen, floating, triggerRef, anchorRef, panelId } = usePopoverContext();
|
|
515
|
+
if (!isElement(children)) {
|
|
516
|
+
return null;
|
|
517
|
+
}
|
|
518
|
+
const handleTriggerRef = (node) => {
|
|
519
|
+
triggerRef.current = node;
|
|
520
|
+
if (anchorRef == null) {
|
|
521
|
+
floating.refs.setReference(node);
|
|
522
|
+
}
|
|
523
|
+
if (typeof ref === "function") {
|
|
524
|
+
ref(node);
|
|
525
|
+
} else if (ref != null) {
|
|
526
|
+
ref.current = node;
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
const childProps = children.props;
|
|
530
|
+
const childRef = childProps.ref;
|
|
531
|
+
return React2.cloneElement(children, {
|
|
532
|
+
...childProps,
|
|
533
|
+
ref: composeRefs(childRef, handleTriggerRef),
|
|
534
|
+
"aria-haspopup": "dialog",
|
|
535
|
+
"aria-expanded": isOpen,
|
|
536
|
+
"aria-controls": panelId
|
|
537
|
+
});
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
// src/popover/popover.tsx
|
|
541
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
542
|
+
function Popover({
|
|
543
|
+
isOpen,
|
|
544
|
+
children,
|
|
545
|
+
placement = "top",
|
|
546
|
+
offset: offsetValue = 8,
|
|
547
|
+
onClose,
|
|
548
|
+
anchorRef
|
|
549
|
+
}) {
|
|
550
|
+
const triggerRef = (0, import_react7.useRef)(null);
|
|
551
|
+
const floating = (0, import_react6.useFloating)({
|
|
552
|
+
open: isOpen,
|
|
553
|
+
onOpenChange: (open) => {
|
|
554
|
+
if (!open && onClose != null) {
|
|
555
|
+
onClose({ reason: "outside-click" });
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
placement,
|
|
559
|
+
middleware: [(0, import_react6.offset)(offsetValue)],
|
|
560
|
+
whileElementsMounted: import_react6.autoUpdate,
|
|
561
|
+
strategy: "fixed"
|
|
562
|
+
});
|
|
563
|
+
(0, import_react7.useEffect)(() => {
|
|
564
|
+
if (anchorRef?.current) {
|
|
565
|
+
floating.refs.setReference(anchorRef.current);
|
|
566
|
+
}
|
|
567
|
+
}, [anchorRef, floating.refs]);
|
|
568
|
+
const contentId = (0, import_react6.useId)() ?? "";
|
|
569
|
+
const panelId = `${contentId}-panel`;
|
|
570
|
+
const contextValue = (0, import_react7.useMemo)(
|
|
571
|
+
() => ({
|
|
572
|
+
isOpen,
|
|
573
|
+
triggerRef,
|
|
574
|
+
anchorRef,
|
|
575
|
+
floating,
|
|
576
|
+
contentId,
|
|
577
|
+
panelId,
|
|
578
|
+
onClose
|
|
579
|
+
}),
|
|
580
|
+
[isOpen, triggerRef, anchorRef, floating, contentId, panelId, onClose]
|
|
581
|
+
);
|
|
582
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(PopoverContext.Provider, { value: contextValue, children });
|
|
583
|
+
}
|
|
584
|
+
Popover.Trigger = PopoverTrigger;
|
|
585
|
+
Popover.Content = PopoverContent;
|
|
586
|
+
|
|
587
|
+
// src/date-picker/date-picker-context.tsx
|
|
588
|
+
var import_react8 = require("react");
|
|
589
|
+
var DatePickerCompoundContext = (0, import_react8.createContext)(null);
|
|
590
|
+
var useDatePickerCompoundContext = (componentName) => {
|
|
591
|
+
const context = (0, import_react8.useContext)(DatePickerCompoundContext);
|
|
592
|
+
if (context == null) {
|
|
593
|
+
throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F DatePicker \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
|
|
594
|
+
}
|
|
595
|
+
return context;
|
|
596
|
+
};
|
|
597
|
+
|
|
598
|
+
// src/date-picker/date-picker-day-button.tsx
|
|
345
599
|
var import_component_theme6 = require("@zenkigen-inc/component-theme");
|
|
346
|
-
var import_clsx7 =
|
|
347
|
-
var
|
|
600
|
+
var import_clsx7 = require("clsx");
|
|
601
|
+
var import_react_day_picker2 = require("react-day-picker");
|
|
602
|
+
|
|
603
|
+
// src/date-picker/date-picker-styles.ts
|
|
604
|
+
var import_clsx6 = require("clsx");
|
|
605
|
+
var import_react_day_picker = require("react-day-picker");
|
|
606
|
+
var defaultDayPickerClassNames = (0, import_react_day_picker.getDefaultClassNames)();
|
|
607
|
+
var dayPickerStyle = {
|
|
608
|
+
"--rdp-font-family": "Arial, 'Noto Sans JP', sans-serif",
|
|
609
|
+
"--rdp-nav-height": "30px",
|
|
610
|
+
"--rdp-day-font": "700 12px/1 'Arial', 'Noto Sans JP', sans-serif",
|
|
611
|
+
"--rdp-selected-font": "700 12px/1 'Arial', 'Noto Sans JP', sans-serif",
|
|
612
|
+
"--rdp-weekday-font": "700 12px/1 'Arial', 'Noto Sans JP', sans-serif",
|
|
613
|
+
"--rdp-day-width": "30px",
|
|
614
|
+
"--rdp-day-height": "30px",
|
|
615
|
+
"--rdp-day_button-width": "28px",
|
|
616
|
+
"--rdp-day_button-height": "28px",
|
|
617
|
+
"--rdp-day_button-border": "1px solid transparent",
|
|
618
|
+
"--rdp-weekday-padding": "0px"
|
|
619
|
+
};
|
|
620
|
+
var dayPickerClassNames = {
|
|
621
|
+
month: (0, import_clsx6.clsx)(defaultDayPickerClassNames.month, "flex flex-col px-[7px] py-2")
|
|
622
|
+
};
|
|
623
|
+
var dayButtonBaseClass = "relative grid size-full place-items-center rounded-full !border !border-solid";
|
|
624
|
+
|
|
625
|
+
// src/date-picker/date-picker-day-button.tsx
|
|
626
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
627
|
+
var CustomDayButton = ({ day, modifiers, className, ...buttonProps }) => {
|
|
628
|
+
const isSelected = Boolean(modifiers.selected);
|
|
629
|
+
const isOutside = Boolean(modifiers.outside);
|
|
630
|
+
const isMinMaxDisabled = Boolean(modifiers.minMaxDisabled);
|
|
631
|
+
const now = /* @__PURE__ */ new Date();
|
|
632
|
+
const isToday = day.date.getFullYear() === now.getFullYear() && day.date.getMonth() === now.getMonth() && day.date.getDate() === now.getDate();
|
|
633
|
+
const isDisabledDay = isMinMaxDisabled;
|
|
634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
635
|
+
import_react_day_picker2.DayButton,
|
|
636
|
+
{
|
|
637
|
+
...buttonProps,
|
|
638
|
+
day,
|
|
639
|
+
modifiers,
|
|
640
|
+
className: (0, import_clsx7.clsx)(
|
|
641
|
+
className,
|
|
642
|
+
dayButtonBaseClass,
|
|
643
|
+
// 共通: フォーカスリング(有効な日のみ)
|
|
644
|
+
// react-day-picker の rdp-day_button クラスが outline: none を設定しているため、!important で上書き
|
|
645
|
+
!isDisabledDay && import_component_theme6.focusVisible.normalImportant,
|
|
646
|
+
// minDate/maxDate 制限日
|
|
647
|
+
isMinMaxDisabled && "!cursor-not-allowed !border-transparent !text-disabled01",
|
|
648
|
+
// 範囲外の日(前後月)
|
|
649
|
+
isOutside && !isMinMaxDisabled && "!border-transparent !text-interactive04",
|
|
650
|
+
// 通常の日
|
|
651
|
+
!isDisabledDay && !isSelected && "!border-transparent",
|
|
652
|
+
!isDisabledDay && !isToday && "!text-interactive02 hover:!bg-hoverUi",
|
|
653
|
+
// 今日
|
|
654
|
+
!isDisabledDay && isToday && !isSelected && "!border-selectedUiBorder !bg-interactive01 !text-textOnColor",
|
|
655
|
+
// 選択された日
|
|
656
|
+
isSelected && "!border-selectedUiBorder !bg-uiBackgroundBlue"
|
|
657
|
+
)
|
|
658
|
+
}
|
|
659
|
+
);
|
|
660
|
+
};
|
|
661
|
+
|
|
662
|
+
// src/date-picker/date-picker-error-message.tsx
|
|
663
|
+
var import_clsx8 = require("clsx");
|
|
664
|
+
var import_react9 = require("react");
|
|
665
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
666
|
+
var DatePickerErrorMessage = (0, import_react9.forwardRef)(
|
|
667
|
+
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
668
|
+
const { size, isError } = useDatePickerCompoundContext("DatePicker.ErrorMessage");
|
|
669
|
+
const typographyClass = size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
670
|
+
if (isError !== true) {
|
|
671
|
+
return null;
|
|
672
|
+
}
|
|
673
|
+
const errorMessageClassName = (0, import_clsx8.clsx)(typographyClass, "text-supportError");
|
|
674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
675
|
+
}
|
|
676
|
+
);
|
|
677
|
+
DatePickerErrorMessage.displayName = "DatePicker.ErrorMessage";
|
|
678
|
+
|
|
679
|
+
// src/date-picker/date-picker-month-caption.tsx
|
|
680
|
+
var import_clsx9 = require("clsx");
|
|
681
|
+
var import_react_day_picker3 = require("react-day-picker");
|
|
682
|
+
|
|
683
|
+
// src/date-picker/date-picker-utils.ts
|
|
684
|
+
var localDateFormatter = new Intl.DateTimeFormat("en-CA", {
|
|
685
|
+
year: "numeric",
|
|
686
|
+
month: "2-digit",
|
|
687
|
+
day: "2-digit"
|
|
688
|
+
});
|
|
689
|
+
var timeZoneFormatters = {
|
|
690
|
+
UTC: new Intl.DateTimeFormat("en-CA", {
|
|
691
|
+
timeZone: "UTC",
|
|
692
|
+
year: "numeric",
|
|
693
|
+
month: "2-digit",
|
|
694
|
+
day: "2-digit"
|
|
695
|
+
}),
|
|
696
|
+
"Asia/Tokyo": new Intl.DateTimeFormat("en-CA", {
|
|
697
|
+
timeZone: "Asia/Tokyo",
|
|
698
|
+
year: "numeric",
|
|
699
|
+
month: "2-digit",
|
|
700
|
+
day: "2-digit"
|
|
701
|
+
})
|
|
702
|
+
};
|
|
703
|
+
var toIsoOffset = (timeZone) => timeZone === "UTC" ? "Z" : "+09:00";
|
|
704
|
+
var formatDateKey = (date, timeZone) => {
|
|
705
|
+
const parts = timeZoneFormatters[timeZone].formatToParts(date);
|
|
706
|
+
const year = parts.find((p) => p.type === "year")?.value;
|
|
707
|
+
const month = parts.find((p) => p.type === "month")?.value;
|
|
708
|
+
const day = parts.find((p) => p.type === "day")?.value;
|
|
709
|
+
return `${year}-${month}-${day}`;
|
|
710
|
+
};
|
|
711
|
+
var formatLocalDateKey = (date = /* @__PURE__ */ new Date()) => {
|
|
712
|
+
return localDateFormatter.format(date);
|
|
713
|
+
};
|
|
714
|
+
var createDateFromKey = (dateKey, timeZone) => {
|
|
715
|
+
return /* @__PURE__ */ new Date(`${dateKey}T00:00:00${toIsoOffset(timeZone)}`);
|
|
716
|
+
};
|
|
717
|
+
var createLocalDateFromKey = (dateKey) => {
|
|
718
|
+
const parts = dateKey.split("-");
|
|
719
|
+
const year = parts[0];
|
|
720
|
+
const month = parts[1];
|
|
721
|
+
const day = parts[2];
|
|
722
|
+
if (year == null || month == null || day == null) {
|
|
723
|
+
throw new Error(`Invalid dateKey format: "${dateKey}". Expected "YYYY-MM-DD".`);
|
|
724
|
+
}
|
|
725
|
+
return new Date(Number(year), Number(month) - 1, Number(day));
|
|
726
|
+
};
|
|
727
|
+
var getMonthStartDate = (date, timeZone) => {
|
|
728
|
+
const parts = formatDateKey(date, timeZone).split("-");
|
|
729
|
+
const year = parts[0];
|
|
730
|
+
const month = parts[1];
|
|
731
|
+
if (year == null || month == null) {
|
|
732
|
+
throw new Error("Invalid date format from formatDateKey.");
|
|
733
|
+
}
|
|
734
|
+
return new Date(Number(year), Number(month) - 1, 1);
|
|
735
|
+
};
|
|
736
|
+
var formatDisplayDate = (date, timeZone) => {
|
|
737
|
+
const [year, month, day] = formatDateKey(date, timeZone).split("-");
|
|
738
|
+
return `${year}\u5E74${month}\u6708${day}\u65E5`;
|
|
739
|
+
};
|
|
740
|
+
var formatMonthLabel = (date) => {
|
|
741
|
+
const [year, month] = formatLocalDateKey(date).split("-");
|
|
742
|
+
return `${year}\u5E74${month}\u6708`;
|
|
743
|
+
};
|
|
744
|
+
|
|
745
|
+
// src/date-picker/date-picker-month-caption.tsx
|
|
746
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
747
|
+
var CustomMonthCaption = ({ calendarMonth, className, displayIndex, ...props }) => {
|
|
748
|
+
void displayIndex;
|
|
749
|
+
const { goToMonth, nextMonth, previousMonth } = (0, import_react_day_picker3.useDayPicker)();
|
|
750
|
+
const captionMonth = calendarMonth.date;
|
|
751
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: (0, import_clsx9.clsx)("flex items-center justify-between px-1 pb-0.5", className), ...props, children: [
|
|
752
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
753
|
+
IconButton,
|
|
754
|
+
{
|
|
755
|
+
icon: "angle-left",
|
|
756
|
+
size: "small",
|
|
757
|
+
variant: "text",
|
|
758
|
+
isDisabled: !previousMonth,
|
|
759
|
+
"aria-label": "\u524D\u306E\u6708",
|
|
760
|
+
onClick: () => previousMonth && goToMonth(previousMonth)
|
|
761
|
+
}
|
|
762
|
+
),
|
|
763
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "typography-label12bold text-text02", children: formatMonthLabel(captionMonth) }),
|
|
764
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
765
|
+
IconButton,
|
|
766
|
+
{
|
|
767
|
+
icon: "angle-right",
|
|
768
|
+
size: "small",
|
|
769
|
+
variant: "text",
|
|
770
|
+
isDisabled: !nextMonth,
|
|
771
|
+
"aria-label": "\u6B21\u306E\u6708",
|
|
772
|
+
onClick: () => nextMonth && goToMonth(nextMonth)
|
|
773
|
+
}
|
|
774
|
+
)
|
|
775
|
+
] });
|
|
776
|
+
};
|
|
777
|
+
|
|
778
|
+
// src/date-picker/date-picker-weekday.tsx
|
|
779
|
+
var import_clsx10 = require("clsx");
|
|
780
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
781
|
+
var CustomWeekday = ({ className, children, ...props }) => {
|
|
782
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
783
|
+
"th",
|
|
784
|
+
{
|
|
785
|
+
...props,
|
|
786
|
+
className: (0, import_clsx10.clsx)(className, "m-0 flex size-7 items-center justify-center p-0 text-center text-text02"),
|
|
787
|
+
children
|
|
788
|
+
}
|
|
789
|
+
);
|
|
790
|
+
};
|
|
791
|
+
|
|
792
|
+
// src/date-picker/date-picker.tsx
|
|
793
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
794
|
+
var DatePicker = ({
|
|
795
|
+
value,
|
|
796
|
+
onChange,
|
|
797
|
+
isDisabled = false,
|
|
798
|
+
isError = false,
|
|
799
|
+
minDate,
|
|
800
|
+
maxDate,
|
|
801
|
+
placeholder = "\u65E5\u4ED8\u3092\u9078\u629E",
|
|
802
|
+
size = "medium",
|
|
803
|
+
timeZone = "Asia/Tokyo",
|
|
804
|
+
children,
|
|
805
|
+
onClick,
|
|
806
|
+
type,
|
|
807
|
+
...restProps
|
|
808
|
+
}) => {
|
|
809
|
+
const autoGeneratedId = (0, import_react10.useId)();
|
|
810
|
+
const describedByBaseId = restProps.id ?? autoGeneratedId;
|
|
811
|
+
const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
|
|
812
|
+
const [displayMonth, setDisplayMonth] = (0, import_react10.useState)(() => {
|
|
813
|
+
if (value == null) {
|
|
814
|
+
const todayKey = formatLocalDateKey(/* @__PURE__ */ new Date());
|
|
815
|
+
return createLocalDateFromKey(`${todayKey.slice(0, 7)}-01`);
|
|
816
|
+
}
|
|
817
|
+
return getMonthStartDate(value, timeZone);
|
|
818
|
+
});
|
|
819
|
+
const calendarRef = (0, import_react10.useRef)(null);
|
|
820
|
+
const selectedKey = (0, import_react10.useMemo)(() => value == null ? null : formatDateKey(value, timeZone), [value, timeZone]);
|
|
821
|
+
const selectedDate = (0, import_react10.useMemo)(() => {
|
|
822
|
+
if (selectedKey == null) {
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
825
|
+
return createLocalDateFromKey(selectedKey);
|
|
826
|
+
}, [selectedKey]);
|
|
827
|
+
const minKey = (0, import_react10.useMemo)(() => minDate == null ? null : formatDateKey(minDate, timeZone), [minDate, timeZone]);
|
|
828
|
+
const maxKey = (0, import_react10.useMemo)(() => maxDate == null ? null : formatDateKey(maxDate, timeZone), [maxDate, timeZone]);
|
|
829
|
+
const currentMonthKey = (0, import_react10.useMemo)(() => formatLocalDateKey(displayMonth).slice(0, 7), [displayMonth]);
|
|
830
|
+
const isOutsideMonth = (0, import_react10.useCallback)(
|
|
831
|
+
(date) => formatLocalDateKey(date).slice(0, 7) !== currentMonthKey,
|
|
832
|
+
[currentMonthKey]
|
|
833
|
+
);
|
|
834
|
+
const isMinMaxDisabled = (0, import_react10.useCallback)(
|
|
835
|
+
(date) => {
|
|
836
|
+
const dateKey = formatLocalDateKey(date);
|
|
837
|
+
if (minKey != null && dateKey < minKey) {
|
|
838
|
+
return true;
|
|
839
|
+
}
|
|
840
|
+
if (maxKey != null && dateKey > maxKey) {
|
|
841
|
+
return true;
|
|
842
|
+
}
|
|
843
|
+
return false;
|
|
844
|
+
},
|
|
845
|
+
[maxKey, minKey]
|
|
846
|
+
);
|
|
847
|
+
const disabledDays = (0, import_react10.useCallback)(
|
|
848
|
+
(date) => {
|
|
849
|
+
if (isOutsideMonth(date)) {
|
|
850
|
+
return true;
|
|
851
|
+
}
|
|
852
|
+
return isMinMaxDisabled(date);
|
|
853
|
+
},
|
|
854
|
+
[isOutsideMonth, isMinMaxDisabled]
|
|
855
|
+
);
|
|
856
|
+
const todayForCalendar = (0, import_react10.useMemo)(() => createLocalDateFromKey(formatLocalDateKey()), []);
|
|
857
|
+
(0, import_react10.useEffect)(() => {
|
|
858
|
+
if (value == null) {
|
|
859
|
+
const todayKey = formatLocalDateKey(/* @__PURE__ */ new Date());
|
|
860
|
+
setDisplayMonth(createLocalDateFromKey(`${todayKey.slice(0, 7)}-01`));
|
|
861
|
+
return;
|
|
862
|
+
}
|
|
863
|
+
setDisplayMonth(getMonthStartDate(value, timeZone));
|
|
864
|
+
}, [value, timeZone]);
|
|
865
|
+
(0, import_react10.useEffect)(() => {
|
|
866
|
+
if (!isOpen) {
|
|
867
|
+
return;
|
|
868
|
+
}
|
|
869
|
+
const frame = requestAnimationFrame(() => {
|
|
870
|
+
const container = calendarRef.current;
|
|
871
|
+
if (!container) {
|
|
872
|
+
return;
|
|
873
|
+
}
|
|
874
|
+
const selected = container.querySelector('button[aria-selected="true"]');
|
|
875
|
+
const today = container.querySelector('button[aria-current="date"]');
|
|
876
|
+
const focusTarget = selected ?? today;
|
|
877
|
+
focusTarget?.focus({ preventScroll: true });
|
|
878
|
+
});
|
|
879
|
+
return () => cancelAnimationFrame(frame);
|
|
880
|
+
}, [displayMonth, isOpen, value]);
|
|
881
|
+
(0, import_react10.useEffect)(() => {
|
|
882
|
+
if (isDisabled) {
|
|
883
|
+
setIsOpen(false);
|
|
884
|
+
}
|
|
885
|
+
}, [isDisabled]);
|
|
886
|
+
const handleTriggerClick = (event) => {
|
|
887
|
+
if (isDisabled) {
|
|
888
|
+
event.preventDefault();
|
|
889
|
+
return;
|
|
890
|
+
}
|
|
891
|
+
onClick?.(event);
|
|
892
|
+
setIsOpen((prev) => !prev);
|
|
893
|
+
};
|
|
894
|
+
const handleClose = () => {
|
|
895
|
+
setIsOpen(false);
|
|
896
|
+
};
|
|
897
|
+
const handleSelect = (selected) => {
|
|
898
|
+
if (!selected) {
|
|
899
|
+
return;
|
|
900
|
+
}
|
|
901
|
+
const selectedKey2 = formatLocalDateKey(selected);
|
|
902
|
+
onChange(createDateFromKey(selectedKey2, timeZone));
|
|
903
|
+
setIsOpen(false);
|
|
904
|
+
};
|
|
905
|
+
const handleClear = () => {
|
|
906
|
+
onChange(null);
|
|
907
|
+
setIsOpen(false);
|
|
908
|
+
};
|
|
909
|
+
const handleClickToday = () => {
|
|
910
|
+
const todayKey = formatLocalDateKey(/* @__PURE__ */ new Date());
|
|
911
|
+
setDisplayMonth(createLocalDateFromKey(`${todayKey.slice(0, 7)}-01`));
|
|
912
|
+
};
|
|
913
|
+
const formatters = (0, import_react10.useMemo)(() => {
|
|
914
|
+
const weekdayFormatter = new Intl.DateTimeFormat("ja-JP", { weekday: "short" });
|
|
915
|
+
return {
|
|
916
|
+
formatCaption: (date) => formatMonthLabel(date),
|
|
917
|
+
formatDay: (date) => String(date.getDate()),
|
|
918
|
+
formatWeekdayName: (date) => weekdayFormatter.format(date)
|
|
919
|
+
};
|
|
920
|
+
}, []);
|
|
921
|
+
const iconSize = size === "large" ? "medium" : "small";
|
|
922
|
+
const displayText = value ? formatDisplayDate(value, timeZone) : placeholder;
|
|
923
|
+
const displayTextClasses = "min-w-0 truncate";
|
|
924
|
+
const errorIds = [];
|
|
925
|
+
const enhancedChildren = import_react10.Children.map(children, (child) => {
|
|
926
|
+
if (!(0, import_react10.isValidElement)(child)) {
|
|
927
|
+
return child;
|
|
928
|
+
}
|
|
929
|
+
if (child.type === DatePickerErrorMessage && isError) {
|
|
930
|
+
const errorChild = child;
|
|
931
|
+
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
932
|
+
errorIds.push(assignedId);
|
|
933
|
+
return (0, import_react10.cloneElement)(errorChild, { id: assignedId });
|
|
934
|
+
}
|
|
935
|
+
return child;
|
|
936
|
+
});
|
|
937
|
+
const describedByFromProps = typeof restProps["aria-describedby"] === "string" ? restProps["aria-describedby"] : null;
|
|
938
|
+
const describedByList = [describedByFromProps, ...errorIds].filter(
|
|
939
|
+
(id) => typeof id === "string" && id.trim().length > 0
|
|
940
|
+
);
|
|
941
|
+
const describedByProps = describedByList.length > 0 ? {
|
|
942
|
+
"aria-describedby": describedByList.join(" ")
|
|
943
|
+
} : {};
|
|
944
|
+
const shouldMarkInvalid = isError === true || errorIds.length > 0;
|
|
945
|
+
const ariaInvalidFromProps = restProps["aria-invalid"];
|
|
946
|
+
const ariaInvalidValue = ariaInvalidFromProps != null ? ariaInvalidFromProps : shouldMarkInvalid ? true : null;
|
|
947
|
+
const ariaInvalidProps = ariaInvalidValue == null ? {} : { "aria-invalid": ariaInvalidValue };
|
|
948
|
+
const mergedButtonProps = {
|
|
949
|
+
...restProps,
|
|
950
|
+
...describedByProps,
|
|
951
|
+
...ariaInvalidProps
|
|
952
|
+
};
|
|
953
|
+
const contextValue = (0, import_react10.useMemo)(
|
|
954
|
+
() => ({
|
|
955
|
+
size,
|
|
956
|
+
isError
|
|
957
|
+
}),
|
|
958
|
+
[isError, size]
|
|
959
|
+
);
|
|
960
|
+
const popoverContent = /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Popover, { isOpen, placement: "bottom-start", onClose: handleClose, children: [
|
|
961
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Popover.Trigger, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
962
|
+
InternalButton,
|
|
963
|
+
{
|
|
964
|
+
...mergedButtonProps,
|
|
965
|
+
type: type ?? "button",
|
|
966
|
+
size,
|
|
967
|
+
variant: isError ? "outlineDanger" : "outline",
|
|
968
|
+
isDisabled,
|
|
969
|
+
before: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icon, { name: "calendar", size: iconSize }),
|
|
970
|
+
justifyContent: "start",
|
|
971
|
+
onClick: handleTriggerClick,
|
|
972
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: displayTextClasses, children: displayText })
|
|
973
|
+
}
|
|
974
|
+
) }),
|
|
975
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Popover.Content, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { ref: calendarRef, className: "rounded bg-uiBackground01 shadow-floatingShadow", "aria-label": "\u65E5\u4ED8\u9078\u629E", children: [
|
|
976
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
977
|
+
import_react_day_picker4.DayPicker,
|
|
978
|
+
{
|
|
979
|
+
mode: "single",
|
|
980
|
+
showOutsideDays: true,
|
|
981
|
+
hideNavigation: true,
|
|
982
|
+
weekStartsOn: 0,
|
|
983
|
+
style: dayPickerStyle,
|
|
984
|
+
month: displayMonth,
|
|
985
|
+
onMonthChange: setDisplayMonth,
|
|
986
|
+
selected: selectedDate,
|
|
987
|
+
onSelect: handleSelect,
|
|
988
|
+
today: todayForCalendar,
|
|
989
|
+
disabled: disabledDays,
|
|
990
|
+
modifiers: { minMaxDisabled: isMinMaxDisabled },
|
|
991
|
+
classNames: dayPickerClassNames,
|
|
992
|
+
formatters,
|
|
993
|
+
fixedWeeks: true,
|
|
994
|
+
components: { MonthCaption: CustomMonthCaption, DayButton: CustomDayButton, Weekday: CustomWeekday }
|
|
995
|
+
}
|
|
996
|
+
),
|
|
997
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center justify-between border-t border-uiBorder01 px-2 py-1", children: [
|
|
998
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
999
|
+
IconButton,
|
|
1000
|
+
{
|
|
1001
|
+
icon: "calendar-today",
|
|
1002
|
+
size: "medium",
|
|
1003
|
+
variant: "text",
|
|
1004
|
+
"aria-label": "\u4ECA\u65E5\u306B\u623B\u308B",
|
|
1005
|
+
iconAccentColor: "supportInfo",
|
|
1006
|
+
onClick: handleClickToday
|
|
1007
|
+
}
|
|
1008
|
+
),
|
|
1009
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Button, { type: "button", size: "small", variant: "text", onClick: handleClear, children: "\u30AF\u30EA\u30A2" })
|
|
1010
|
+
] })
|
|
1011
|
+
] }) })
|
|
1012
|
+
] });
|
|
1013
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react10.Children.toArray(enhancedChildren);
|
|
1014
|
+
const hasMessageChildren = stackedChildren.length > 0;
|
|
1015
|
+
if (!hasMessageChildren) {
|
|
1016
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DatePickerCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "flex flex-col", children: popoverContent }) });
|
|
1017
|
+
}
|
|
1018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DatePickerCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1019
|
+
popoverContent,
|
|
1020
|
+
stackedChildren
|
|
1021
|
+
] }) });
|
|
1022
|
+
};
|
|
1023
|
+
DatePicker.ErrorMessage = DatePickerErrorMessage;
|
|
1024
|
+
DatePicker.displayName = "DatePicker";
|
|
1025
|
+
|
|
1026
|
+
// src/dropdown/dropdown.tsx
|
|
1027
|
+
var import_component_theme8 = require("@zenkigen-inc/component-theme");
|
|
1028
|
+
var import_clsx13 = __toESM(require("clsx"));
|
|
1029
|
+
var import_react15 = require("react");
|
|
348
1030
|
var import_react_dom = require("react-dom");
|
|
349
1031
|
|
|
350
1032
|
// src/hooks/use-outside-click.ts
|
|
351
|
-
var
|
|
1033
|
+
var import_react11 = require("react");
|
|
352
1034
|
var useOutsideClick = (ref, handler, enabled = true) => {
|
|
353
|
-
(0,
|
|
1035
|
+
(0, import_react11.useEffect)(() => {
|
|
354
1036
|
const listener = (event) => {
|
|
355
1037
|
const element = ref?.current;
|
|
356
1038
|
if (element == null || Boolean(element.contains(event?.target ?? null))) {
|
|
@@ -366,8 +1048,8 @@ var useOutsideClick = (ref, handler, enabled = true) => {
|
|
|
366
1048
|
};
|
|
367
1049
|
|
|
368
1050
|
// src/dropdown/dropdown-context.ts
|
|
369
|
-
var
|
|
370
|
-
var DropdownContext = (0,
|
|
1051
|
+
var import_react12 = require("react");
|
|
1052
|
+
var DropdownContext = (0, import_react12.createContext)({
|
|
371
1053
|
isVisible: false,
|
|
372
1054
|
setIsVisible: () => false,
|
|
373
1055
|
isDisabled: false,
|
|
@@ -376,31 +1058,31 @@ var DropdownContext = (0, import_react3.createContext)({
|
|
|
376
1058
|
});
|
|
377
1059
|
|
|
378
1060
|
// src/dropdown/dropdown-item.tsx
|
|
379
|
-
var
|
|
380
|
-
var
|
|
381
|
-
var
|
|
382
|
-
var
|
|
1061
|
+
var import_component_theme7 = require("@zenkigen-inc/component-theme");
|
|
1062
|
+
var import_clsx11 = __toESM(require("clsx"));
|
|
1063
|
+
var import_react13 = require("react");
|
|
1064
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
383
1065
|
function DropdownItem({ children, color = "gray", onClick }) {
|
|
384
|
-
const { setIsVisible } = (0,
|
|
1066
|
+
const { setIsVisible } = (0, import_react13.useContext)(DropdownContext);
|
|
385
1067
|
const handleClickItem = (event) => {
|
|
386
1068
|
setIsVisible(false);
|
|
387
1069
|
onClick?.(event);
|
|
388
1070
|
};
|
|
389
|
-
const itemClasses = (0,
|
|
1071
|
+
const itemClasses = (0, import_clsx11.default)(
|
|
390
1072
|
"typography-label14regular flex h-8 w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
391
|
-
|
|
1073
|
+
import_component_theme7.focusVisible.inset,
|
|
392
1074
|
{
|
|
393
1075
|
"bg-uiBackground01 fill-icon01 text-interactive02": color === "gray",
|
|
394
1076
|
"fill-supportDanger text-supportDanger": color === "red"
|
|
395
1077
|
}
|
|
396
1078
|
);
|
|
397
|
-
return /* @__PURE__ */ (0,
|
|
1079
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("li", { className: "flex w-full items-center", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("button", { className: itemClasses, type: "button", onClick: handleClickItem, children }) });
|
|
398
1080
|
}
|
|
399
1081
|
|
|
400
1082
|
// src/dropdown/dropdown-menu.tsx
|
|
401
|
-
var
|
|
402
|
-
var
|
|
403
|
-
var
|
|
1083
|
+
var import_clsx12 = __toESM(require("clsx"));
|
|
1084
|
+
var import_react14 = require("react");
|
|
1085
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
404
1086
|
function DropdownMenu({
|
|
405
1087
|
children,
|
|
406
1088
|
maxHeight,
|
|
@@ -408,8 +1090,8 @@ function DropdownMenu({
|
|
|
408
1090
|
verticalPosition = "bottom",
|
|
409
1091
|
horizontalAlign = "left"
|
|
410
1092
|
}) {
|
|
411
|
-
const { isVisible, isDisabled, targetDimensions, variant, portalTargetRef } = (0,
|
|
412
|
-
const wrapperClasses = (0,
|
|
1093
|
+
const { isVisible, isDisabled, targetDimensions, variant, portalTargetRef } = (0, import_react14.useContext)(DropdownContext);
|
|
1094
|
+
const wrapperClasses = (0, import_clsx12.default)("z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 shadow-floatingShadow", {
|
|
413
1095
|
absolute: !portalTargetRef,
|
|
414
1096
|
"border-solid border border-uiBorder01": variant === "outline",
|
|
415
1097
|
"py-1": !isNoPadding,
|
|
@@ -417,7 +1099,7 @@ function DropdownMenu({
|
|
|
417
1099
|
"right-0": horizontalAlign === "right",
|
|
418
1100
|
"left-auto": horizontalAlign === "center"
|
|
419
1101
|
});
|
|
420
|
-
return isVisible && !isDisabled && /* @__PURE__ */ (0,
|
|
1102
|
+
return isVisible && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
421
1103
|
"ul",
|
|
422
1104
|
{
|
|
423
1105
|
className: wrapperClasses,
|
|
@@ -432,7 +1114,7 @@ function DropdownMenu({
|
|
|
432
1114
|
}
|
|
433
1115
|
|
|
434
1116
|
// src/dropdown/dropdown.tsx
|
|
435
|
-
var
|
|
1117
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
436
1118
|
function Dropdown({
|
|
437
1119
|
children,
|
|
438
1120
|
target,
|
|
@@ -445,14 +1127,14 @@ function Dropdown({
|
|
|
445
1127
|
isArrowHidden = false,
|
|
446
1128
|
portalTargetRef
|
|
447
1129
|
}) {
|
|
448
|
-
const [isVisible, setIsVisible] = (0,
|
|
449
|
-
const [targetDimensions, setTargetDimensions] = (0,
|
|
1130
|
+
const [isVisible, setIsVisible] = (0, import_react15.useState)(false);
|
|
1131
|
+
const [targetDimensions, setTargetDimensions] = (0, import_react15.useState)({
|
|
450
1132
|
width: 0,
|
|
451
1133
|
height: 0
|
|
452
1134
|
});
|
|
453
|
-
const targetRef = (0,
|
|
1135
|
+
const targetRef = (0, import_react15.useRef)(null);
|
|
454
1136
|
useOutsideClick(targetRef, () => setIsVisible(false));
|
|
455
|
-
const handleToggle = (0,
|
|
1137
|
+
const handleToggle = (0, import_react15.useCallback)(() => {
|
|
456
1138
|
if (targetRef.current === null) {
|
|
457
1139
|
return;
|
|
458
1140
|
}
|
|
@@ -468,24 +1150,24 @@ function Dropdown({
|
|
|
468
1150
|
setIsVisible(true);
|
|
469
1151
|
}
|
|
470
1152
|
}, [isVisible]);
|
|
471
|
-
const wrapperClasses = (0,
|
|
1153
|
+
const wrapperClasses = (0, import_clsx13.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
472
1154
|
"cursor-not-allowed": isDisabled
|
|
473
1155
|
});
|
|
474
|
-
const childrenButtonClasses = (0,
|
|
1156
|
+
const childrenButtonClasses = (0, import_clsx13.default)(
|
|
475
1157
|
"flex items-center justify-center rounded bg-uiBackground01 p-1 hover:bg-hover02 active:bg-active02",
|
|
476
|
-
|
|
1158
|
+
import_component_theme8.focusVisible.normal,
|
|
477
1159
|
{
|
|
478
1160
|
"pointer-events-none": isDisabled,
|
|
479
1161
|
"border border-uiBorder02": variant === "outline"
|
|
480
1162
|
}
|
|
481
1163
|
);
|
|
482
|
-
const buttonClasses = (0,
|
|
1164
|
+
const buttonClasses = (0, import_clsx13.default)(
|
|
483
1165
|
"flex items-center rounded bg-uiBackground01",
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
1166
|
+
import_component_theme8.buttonColors[variant].base,
|
|
1167
|
+
import_component_theme8.buttonColors[variant].hover,
|
|
1168
|
+
import_component_theme8.buttonColors[variant].active,
|
|
1169
|
+
import_component_theme8.buttonColors[variant].disabled,
|
|
1170
|
+
import_component_theme8.focusVisible.normal,
|
|
489
1171
|
{
|
|
490
1172
|
"pointer-events-none": isDisabled,
|
|
491
1173
|
"h-6 px-2": size === "x-small" || size === "small",
|
|
@@ -493,19 +1175,19 @@ function Dropdown({
|
|
|
493
1175
|
"h-10 px-4": size === "large"
|
|
494
1176
|
}
|
|
495
1177
|
);
|
|
496
|
-
const labelClasses = (0,
|
|
1178
|
+
const labelClasses = (0, import_clsx13.default)("flex items-center", {
|
|
497
1179
|
"mr-1": !isArrowHidden && size === "x-small",
|
|
498
1180
|
"mr-2": !isArrowHidden && size !== "x-small",
|
|
499
1181
|
"typography-label12regular": size === "x-small",
|
|
500
1182
|
"typography-label14regular": size === "small" || size === "medium",
|
|
501
1183
|
"typography-label16regular": size === "large"
|
|
502
1184
|
});
|
|
503
|
-
return /* @__PURE__ */ (0,
|
|
1185
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
504
1186
|
DropdownContext.Provider,
|
|
505
1187
|
{
|
|
506
1188
|
value: { isVisible, setIsVisible, isDisabled, targetDimensions, variant, portalTargetRef },
|
|
507
|
-
children: /* @__PURE__ */ (0,
|
|
508
|
-
target ? /* @__PURE__ */ (0,
|
|
1189
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref: targetRef, className: wrapperClasses, children: [
|
|
1190
|
+
target ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
509
1191
|
"button",
|
|
510
1192
|
{
|
|
511
1193
|
type: "button",
|
|
@@ -515,7 +1197,7 @@ function Dropdown({
|
|
|
515
1197
|
disabled: isDisabled,
|
|
516
1198
|
children: [
|
|
517
1199
|
target,
|
|
518
|
-
!isArrowHidden && /* @__PURE__ */ (0,
|
|
1200
|
+
!isArrowHidden && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "ml-2 flex items-center fill-icon01", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
519
1201
|
Icon,
|
|
520
1202
|
{
|
|
521
1203
|
name: isVisible ? "angle-small-up" : "angle-small-down",
|
|
@@ -524,10 +1206,10 @@ function Dropdown({
|
|
|
524
1206
|
) })
|
|
525
1207
|
]
|
|
526
1208
|
}
|
|
527
|
-
) : /* @__PURE__ */ (0,
|
|
528
|
-
icon && /* @__PURE__ */ (0,
|
|
529
|
-
/* @__PURE__ */ (0,
|
|
530
|
-
!isArrowHidden && /* @__PURE__ */ (0,
|
|
1209
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("button", { type: "button", title, className: buttonClasses, onClick: handleToggle, disabled: isDisabled, children: [
|
|
1210
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "mr-1 flex", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icon, { name: icon, size: size === "large" ? "medium" : "small" }) }),
|
|
1211
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: labelClasses, children: label }),
|
|
1212
|
+
!isArrowHidden && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Icon, { name: isVisible ? "angle-small-up" : "angle-small-down", size: "small" }) })
|
|
531
1213
|
] }),
|
|
532
1214
|
!portalTargetRef ? children : portalTargetRef != null && portalTargetRef.current && (0, import_react_dom.createPortal)(children, portalTargetRef.current)
|
|
533
1215
|
] })
|
|
@@ -539,14 +1221,14 @@ Dropdown.Item = DropdownItem;
|
|
|
539
1221
|
|
|
540
1222
|
// src/evaluation-star/evaluation-star.tsx
|
|
541
1223
|
var import_component_icons2 = require("@zenkigen-inc/component-icons");
|
|
542
|
-
var
|
|
543
|
-
var
|
|
544
|
-
var
|
|
545
|
-
var
|
|
1224
|
+
var import_component_theme9 = require("@zenkigen-inc/component-theme");
|
|
1225
|
+
var import_clsx14 = __toESM(require("clsx"));
|
|
1226
|
+
var import_react16 = require("react");
|
|
1227
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
546
1228
|
function EvaluationStar({ value, isEditable = false, onChangeRating, size = "medium" }) {
|
|
547
1229
|
const maxRating = 5;
|
|
548
|
-
const [currentRating, setCurrentRating] = (0,
|
|
549
|
-
const handleChangeRating = (0,
|
|
1230
|
+
const [currentRating, setCurrentRating] = (0, import_react16.useState)(value);
|
|
1231
|
+
const handleChangeRating = (0, import_react16.useCallback)(
|
|
550
1232
|
(newRating) => {
|
|
551
1233
|
if (isEditable) {
|
|
552
1234
|
setCurrentRating(newRating);
|
|
@@ -557,72 +1239,30 @@ function EvaluationStar({ value, isEditable = false, onChangeRating, size = "med
|
|
|
557
1239
|
},
|
|
558
1240
|
[isEditable, onChangeRating]
|
|
559
1241
|
);
|
|
560
|
-
const starClasses = (0,
|
|
1242
|
+
const starClasses = (0, import_clsx14.default)(import_component_theme9.focusVisible.inset, { "w-6 h-6": size === "large", "w-4 h-4": size === "medium" });
|
|
561
1243
|
const renderStar = (rating) => {
|
|
562
1244
|
const color = rating <= currentRating ? "fill-yellow-yellow50" : "fill-icon03";
|
|
563
1245
|
const IconComponent = import_component_icons2.iconElements["star-filled"];
|
|
564
|
-
return /* @__PURE__ */ (0,
|
|
1246
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
565
1247
|
"button",
|
|
566
1248
|
{
|
|
567
1249
|
type: "button",
|
|
568
1250
|
onClick: () => handleChangeRating(rating),
|
|
569
|
-
className: (0,
|
|
1251
|
+
className: (0, import_clsx14.default)(color, starClasses),
|
|
570
1252
|
disabled: !isEditable,
|
|
571
|
-
children: /* @__PURE__ */ (0,
|
|
1253
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(IconComponent, {})
|
|
572
1254
|
},
|
|
573
1255
|
rating
|
|
574
1256
|
);
|
|
575
1257
|
};
|
|
576
1258
|
const ratingStars = Array.from({ length: maxRating }, (_, index) => renderStar(index + 1));
|
|
577
|
-
return /* @__PURE__ */ (0,
|
|
1259
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "flex flex-row", children: ratingStars });
|
|
578
1260
|
}
|
|
579
1261
|
|
|
580
1262
|
// src/file-input/file-input.tsx
|
|
581
|
-
var
|
|
582
|
-
var
|
|
583
|
-
|
|
584
|
-
// src/icon-button/icon-button.tsx
|
|
585
|
-
var import_component_theme8 = require("@zenkigen-inc/component-theme");
|
|
586
|
-
var import_clsx9 = require("clsx");
|
|
587
|
-
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
588
|
-
function IconButton({
|
|
589
|
-
icon,
|
|
590
|
-
size = "medium",
|
|
591
|
-
variant = "outline",
|
|
592
|
-
isNoPadding = false,
|
|
593
|
-
isDisabled = false,
|
|
594
|
-
isSelected = false,
|
|
595
|
-
...props
|
|
596
|
-
}) {
|
|
597
|
-
const baseClasses = (0, import_clsx9.clsx)(
|
|
598
|
-
"typography-label16regular flex items-center justify-center gap-1 rounded",
|
|
599
|
-
import_component_theme8.buttonColors[variant].hover,
|
|
600
|
-
import_component_theme8.buttonColors[variant].active,
|
|
601
|
-
import_component_theme8.buttonColors[variant].disabled,
|
|
602
|
-
import_component_theme8.focusVisible.normal,
|
|
603
|
-
{
|
|
604
|
-
"h-4 w-4": size === "small" && isNoPadding,
|
|
605
|
-
"h-6 w-6": size === "small" && !isNoPadding || (size === "medium" || size === "large") && isNoPadding,
|
|
606
|
-
"h-8 w-8": size === "medium" && !isNoPadding,
|
|
607
|
-
"h-10 w-10": size === "large" && !isNoPadding,
|
|
608
|
-
"inline-flex": props.isAnchor,
|
|
609
|
-
"pointer-events-none": isDisabled,
|
|
610
|
-
[import_component_theme8.buttonColors[variant].selected]: isSelected,
|
|
611
|
-
[import_component_theme8.buttonColors[variant].base]: !isSelected
|
|
612
|
-
}
|
|
613
|
-
);
|
|
614
|
-
const iconSize = size === "small" ? "small" : "medium";
|
|
615
|
-
if (props.isAnchor === true) {
|
|
616
|
-
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
617
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("a", { className: baseClasses, ...buttonProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: icon, size: iconSize }) });
|
|
618
|
-
} else {
|
|
619
|
-
const buttonProps = Object.fromEntries(Object.entries(props).filter(([key]) => key !== "isAnchor"));
|
|
620
|
-
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("button", { type: "button", className: baseClasses, disabled: isDisabled, ...buttonProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { name: icon, size: iconSize }) });
|
|
621
|
-
}
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
// src/file-input/file-input.tsx
|
|
625
|
-
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1263
|
+
var import_clsx15 = require("clsx");
|
|
1264
|
+
var import_react17 = require("react");
|
|
1265
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
626
1266
|
var ERROR_TYPES = {
|
|
627
1267
|
SIZE_TOO_LARGE: "SIZE_TOO_LARGE",
|
|
628
1268
|
UNSUPPORTED_FORMAT: "UNSUPPORTED_FORMAT"
|
|
@@ -631,16 +1271,16 @@ var ERROR_MESSAGES = {
|
|
|
631
1271
|
SIZE_TOO_LARGE: "\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA\u304C\u5927\u304D\u904E\u304E\u307E\u3059\u3002",
|
|
632
1272
|
UNSUPPORTED_FORMAT: "\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093\u3002"
|
|
633
1273
|
};
|
|
634
|
-
var FileInput = (0,
|
|
1274
|
+
var FileInput = (0, import_react17.forwardRef)(
|
|
635
1275
|
({ id, variant, accept, maxSize, isDisabled = false, isError = false, onSelect, onError, errorMessages, ...rest }, ref) => {
|
|
636
1276
|
const size = variant === "button" ? rest.size ?? "medium" : "medium";
|
|
637
|
-
const [selectedFile, setSelectedFile] = (0,
|
|
638
|
-
const [isDragOver, setIsDragOver] = (0,
|
|
639
|
-
const fileInputRef = (0,
|
|
640
|
-
const errorId = (0,
|
|
641
|
-
const fallbackId = (0,
|
|
1277
|
+
const [selectedFile, setSelectedFile] = (0, import_react17.useState)(null);
|
|
1278
|
+
const [isDragOver, setIsDragOver] = (0, import_react17.useState)(false);
|
|
1279
|
+
const fileInputRef = (0, import_react17.useRef)(null);
|
|
1280
|
+
const errorId = (0, import_react17.useId)();
|
|
1281
|
+
const fallbackId = (0, import_react17.useId)();
|
|
642
1282
|
const inputId = id ?? fallbackId;
|
|
643
|
-
const validateFile = (0,
|
|
1283
|
+
const validateFile = (0, import_react17.useCallback)(
|
|
644
1284
|
(file) => {
|
|
645
1285
|
const errors = [];
|
|
646
1286
|
if (maxSize != null && maxSize > 0 && file.size > maxSize) {
|
|
@@ -679,7 +1319,7 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
679
1319
|
},
|
|
680
1320
|
[accept, maxSize, onError]
|
|
681
1321
|
);
|
|
682
|
-
const handleFileSelect = (0,
|
|
1322
|
+
const handleFileSelect = (0, import_react17.useCallback)(
|
|
683
1323
|
(file) => {
|
|
684
1324
|
if (file && !validateFile(file)) {
|
|
685
1325
|
return;
|
|
@@ -689,7 +1329,7 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
689
1329
|
},
|
|
690
1330
|
[validateFile, onSelect]
|
|
691
1331
|
);
|
|
692
|
-
const handleFileInputChange = (0,
|
|
1332
|
+
const handleFileInputChange = (0, import_react17.useCallback)(
|
|
693
1333
|
(event) => {
|
|
694
1334
|
if (isDisabled) {
|
|
695
1335
|
return;
|
|
@@ -705,7 +1345,7 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
705
1345
|
},
|
|
706
1346
|
[isDisabled, handleFileSelect]
|
|
707
1347
|
);
|
|
708
|
-
const handleDragOver = (0,
|
|
1348
|
+
const handleDragOver = (0, import_react17.useCallback)(
|
|
709
1349
|
(event) => {
|
|
710
1350
|
event.preventDefault();
|
|
711
1351
|
if (!isDisabled) {
|
|
@@ -714,11 +1354,11 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
714
1354
|
},
|
|
715
1355
|
[isDisabled]
|
|
716
1356
|
);
|
|
717
|
-
const handleDragLeave = (0,
|
|
1357
|
+
const handleDragLeave = (0, import_react17.useCallback)((event) => {
|
|
718
1358
|
event.preventDefault();
|
|
719
1359
|
setIsDragOver(false);
|
|
720
1360
|
}, []);
|
|
721
|
-
const handleDrop = (0,
|
|
1361
|
+
const handleDrop = (0, import_react17.useCallback)(
|
|
722
1362
|
(event) => {
|
|
723
1363
|
event.preventDefault();
|
|
724
1364
|
setIsDragOver(false);
|
|
@@ -730,19 +1370,19 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
730
1370
|
},
|
|
731
1371
|
[isDisabled, handleFileSelect]
|
|
732
1372
|
);
|
|
733
|
-
const handleButtonClick = (0,
|
|
1373
|
+
const handleButtonClick = (0, import_react17.useCallback)(() => {
|
|
734
1374
|
if (!isDisabled) {
|
|
735
1375
|
fileInputRef.current?.click();
|
|
736
1376
|
}
|
|
737
1377
|
}, [isDisabled]);
|
|
738
|
-
const handleClear = (0,
|
|
1378
|
+
const handleClear = (0, import_react17.useCallback)(() => {
|
|
739
1379
|
setSelectedFile(null);
|
|
740
1380
|
if (fileInputRef.current) {
|
|
741
1381
|
fileInputRef.current.value = "";
|
|
742
1382
|
}
|
|
743
1383
|
onSelect?.(null);
|
|
744
1384
|
}, [onSelect]);
|
|
745
|
-
(0,
|
|
1385
|
+
(0, import_react17.useImperativeHandle)(
|
|
746
1386
|
ref,
|
|
747
1387
|
() => ({
|
|
748
1388
|
reset: handleClear
|
|
@@ -751,7 +1391,7 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
751
1391
|
);
|
|
752
1392
|
const hasErrorMessages = !isDisabled && errorMessages != null && errorMessages.length > 0;
|
|
753
1393
|
const hasErrors = !isDisabled && isError === true;
|
|
754
|
-
const dropzoneClasses = (0,
|
|
1394
|
+
const dropzoneClasses = (0, import_clsx15.clsx)(
|
|
755
1395
|
"flex flex-1 flex-col items-center justify-center gap-4 rounded border border-dashed px-6 text-center",
|
|
756
1396
|
selectedFile ? "py-[52px]" : "py-4",
|
|
757
1397
|
{
|
|
@@ -798,8 +1438,8 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
798
1438
|
return normalized.join(", ");
|
|
799
1439
|
})();
|
|
800
1440
|
if (variant === "button") {
|
|
801
|
-
return /* @__PURE__ */ (0,
|
|
802
|
-
/* @__PURE__ */ (0,
|
|
1441
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1442
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: hasErrors ? "flex-1" : "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
803
1443
|
InternalButton,
|
|
804
1444
|
{
|
|
805
1445
|
size,
|
|
@@ -807,14 +1447,14 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
807
1447
|
isDisabled,
|
|
808
1448
|
width: "100%",
|
|
809
1449
|
onClick: handleButtonClick,
|
|
810
|
-
before: /* @__PURE__ */ (0,
|
|
811
|
-
after: /* @__PURE__ */ (0,
|
|
812
|
-
children: /* @__PURE__ */ (0,
|
|
1450
|
+
before: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon, { name: "upload", size: "small" }),
|
|
1451
|
+
after: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_jsx_runtime21.Fragment, { children: selectedFile ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: (0, import_clsx15.clsx)("typography-label12regular truncate", !isDisabled && "text-text01"), children: selectedFile.name }) : "" }),
|
|
1452
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "truncate", children: "\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E" })
|
|
813
1453
|
}
|
|
814
1454
|
) }),
|
|
815
|
-
selectedFile && !isDisabled && /* @__PURE__ */ (0,
|
|
816
|
-
hasErrors && hasErrorMessages && /* @__PURE__ */ (0,
|
|
817
|
-
/* @__PURE__ */ (0,
|
|
1455
|
+
selectedFile && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(IconButton, { variant: "text", icon: "close", size: "small", onClick: handleClear }) }),
|
|
1456
|
+
hasErrors && hasErrorMessages && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { id: errorId, "data-testid": "error-messages", className: "typography-label12regular text-supportError", children: errorMessages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "break-all", children: message }, index)) }),
|
|
1457
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
818
1458
|
"input",
|
|
819
1459
|
{
|
|
820
1460
|
id: inputId,
|
|
@@ -829,8 +1469,8 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
829
1469
|
)
|
|
830
1470
|
] });
|
|
831
1471
|
}
|
|
832
|
-
return /* @__PURE__ */ (0,
|
|
833
|
-
/* @__PURE__ */ (0,
|
|
1472
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex min-w-[320px] flex-col gap-2", children: [
|
|
1473
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
834
1474
|
"div",
|
|
835
1475
|
{
|
|
836
1476
|
className: dropzoneClasses,
|
|
@@ -850,25 +1490,25 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
850
1490
|
"aria-disabled": isDisabled,
|
|
851
1491
|
...hasErrors && hasErrorMessages && { "aria-describedby": errorId },
|
|
852
1492
|
children: [
|
|
853
|
-
/* @__PURE__ */ (0,
|
|
854
|
-
!selectedFile && /* @__PURE__ */ (0,
|
|
1493
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Icon, { name: "upload-document", size: "large", color: isDisabled ? "icon03" : "icon01" }),
|
|
1494
|
+
!selectedFile && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "flex flex-col gap-1", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "typography-body13regular select-none", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
855
1495
|
"\u3053\u3053\u306B\u30D5\u30A1\u30A4\u30EB\u3092\u30C9\u30ED\u30C3\u30D7\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
856
|
-
/* @__PURE__ */ (0,
|
|
1496
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("br", {}),
|
|
857
1497
|
"\u307E\u305F\u306F\u3001",
|
|
858
|
-
/* @__PURE__ */ (0,
|
|
1498
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: (0, import_clsx15.clsx)(!isDisabled ? "text-link01" : ""), children: "\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E" }),
|
|
859
1499
|
"\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
|
|
860
1500
|
] }) }) }),
|
|
861
|
-
!selectedFile && /* @__PURE__ */ (0,
|
|
862
|
-
/* @__PURE__ */ (0,
|
|
863
|
-
/* @__PURE__ */ (0,
|
|
864
|
-
/* @__PURE__ */ (0,
|
|
865
|
-
/* @__PURE__ */ (0,
|
|
1501
|
+
!selectedFile && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
1502
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: (0, import_clsx15.clsx)("typography-label11regular", isDisabled ? "text-textPlaceholder" : "text-text02"), children: "\u5BFE\u5FDC\u5F62\u5F0F" }),
|
|
1503
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: (0, import_clsx15.clsx)("typography-body12regular", isDisabled ? "text-textPlaceholder" : "text-text01"), children: acceptLabel }),
|
|
1504
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: (0, import_clsx15.clsx)("typography-label11regular", isDisabled ? "text-textPlaceholder" : "text-text02"), children: "\u30B5\u30A4\u30BA" }),
|
|
1505
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: (0, import_clsx15.clsx)("typography-body12regular", isDisabled ? "text-textPlaceholder" : "text-text01"), children: maxSizeLabel })
|
|
866
1506
|
] }),
|
|
867
|
-
selectedFile && /* @__PURE__ */ (0,
|
|
868
|
-
/* @__PURE__ */ (0,
|
|
869
|
-
/* @__PURE__ */ (0,
|
|
870
|
-
/* @__PURE__ */ (0,
|
|
871
|
-
!isDisabled && /* @__PURE__ */ (0,
|
|
1507
|
+
selectedFile && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "mt-2 flex flex-col items-center gap-1", children: [
|
|
1508
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "typography-label11regular text-text02", children: "\u30D5\u30A1\u30A4\u30EB\u540D" }),
|
|
1509
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
1510
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "typography-label14regular", children: selectedFile.name }),
|
|
1511
|
+
!isDisabled && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
872
1512
|
IconButton,
|
|
873
1513
|
{
|
|
874
1514
|
variant: "text",
|
|
@@ -882,7 +1522,7 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
882
1522
|
)
|
|
883
1523
|
] })
|
|
884
1524
|
] }),
|
|
885
|
-
/* @__PURE__ */ (0,
|
|
1525
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
886
1526
|
"input",
|
|
887
1527
|
{
|
|
888
1528
|
id: inputId,
|
|
@@ -898,13 +1538,13 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
898
1538
|
]
|
|
899
1539
|
}
|
|
900
1540
|
),
|
|
901
|
-
hasErrors && hasErrorMessages && /* @__PURE__ */ (0,
|
|
1541
|
+
hasErrors && hasErrorMessages && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
902
1542
|
"div",
|
|
903
1543
|
{
|
|
904
1544
|
id: errorId,
|
|
905
1545
|
"data-testid": "error-messages",
|
|
906
1546
|
className: "typography-body13regular flex flex-col text-supportDanger",
|
|
907
|
-
children: errorMessages.map((message, index) => /* @__PURE__ */ (0,
|
|
1547
|
+
children: errorMessages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { children: message }, index))
|
|
908
1548
|
}
|
|
909
1549
|
)
|
|
910
1550
|
] });
|
|
@@ -913,16 +1553,16 @@ var FileInput = (0, import_react8.forwardRef)(
|
|
|
913
1553
|
FileInput.displayName = "FileInput";
|
|
914
1554
|
|
|
915
1555
|
// src/heading/heading.tsx
|
|
916
|
-
var
|
|
917
|
-
var
|
|
918
|
-
var
|
|
1556
|
+
var import_component_theme10 = require("@zenkigen-inc/component-theme");
|
|
1557
|
+
var import_clsx16 = require("clsx");
|
|
1558
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
919
1559
|
function Heading(props) {
|
|
920
1560
|
const TagName = `h${props.level}`;
|
|
921
|
-
const classes = (0,
|
|
1561
|
+
const classes = (0, import_clsx16.clsx)(`flex items-center text-text01`, import_component_theme10.typography.heading[TagName], {
|
|
922
1562
|
"gap-2": props.level === 1,
|
|
923
1563
|
"gap-1": props.level > 1
|
|
924
1564
|
});
|
|
925
|
-
return /* @__PURE__ */ (0,
|
|
1565
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(TagName, { className: classes, children: [
|
|
926
1566
|
props.before,
|
|
927
1567
|
props.children,
|
|
928
1568
|
props.after
|
|
@@ -930,22 +1570,22 @@ function Heading(props) {
|
|
|
930
1570
|
}
|
|
931
1571
|
|
|
932
1572
|
// src/hooks/use-roving-focus.ts
|
|
933
|
-
var
|
|
1573
|
+
var import_react18 = require("react");
|
|
934
1574
|
var useRovingFocus = ({
|
|
935
1575
|
values,
|
|
936
1576
|
defaultFocusedValue,
|
|
937
1577
|
isDisabled = false
|
|
938
1578
|
}) => {
|
|
939
|
-
const [focusedValue, setFocusedValue] = (0,
|
|
1579
|
+
const [focusedValue, setFocusedValue] = (0, import_react18.useState)(
|
|
940
1580
|
typeof defaultFocusedValue === "undefined" ? null : defaultFocusedValue
|
|
941
1581
|
);
|
|
942
|
-
const handleFocusChange = (0,
|
|
1582
|
+
const handleFocusChange = (0, import_react18.useCallback)((newValue) => {
|
|
943
1583
|
setFocusedValue(newValue);
|
|
944
1584
|
}, []);
|
|
945
|
-
const handleBlur = (0,
|
|
1585
|
+
const handleBlur = (0, import_react18.useCallback)(() => {
|
|
946
1586
|
setFocusedValue(null);
|
|
947
1587
|
}, []);
|
|
948
|
-
const handleKeyDown = (0,
|
|
1588
|
+
const handleKeyDown = (0, import_react18.useCallback)(
|
|
949
1589
|
(event) => {
|
|
950
1590
|
if (isDisabled === true || values.length === 0) return;
|
|
951
1591
|
const currentIndex = focusedValue !== null && focusedValue !== "" ? values.indexOf(focusedValue) : -1;
|
|
@@ -1000,17 +1640,17 @@ var useRovingFocus = ({
|
|
|
1000
1640
|
};
|
|
1001
1641
|
|
|
1002
1642
|
// src/loading/loading.tsx
|
|
1003
|
-
var
|
|
1004
|
-
var
|
|
1643
|
+
var import_clsx17 = __toESM(require("clsx"));
|
|
1644
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1005
1645
|
function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
1006
|
-
const wrapperClasses = (0,
|
|
1007
|
-
const svgClasses = (0,
|
|
1646
|
+
const wrapperClasses = (0, import_clsx17.default)(position, "left-0 top-0 z-20 flex w-full items-center justify-center");
|
|
1647
|
+
const svgClasses = (0, import_clsx17.default)({
|
|
1008
1648
|
"h-4 w-4": size === "small",
|
|
1009
1649
|
"h-8 w-8": size === "medium",
|
|
1010
1650
|
"h-16 w-16": size === "large"
|
|
1011
1651
|
});
|
|
1012
|
-
return /* @__PURE__ */ (0,
|
|
1013
|
-
size === "small" && /* @__PURE__ */ (0,
|
|
1652
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_jsx_runtime23.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: wrapperClasses, style: { height }, children: [
|
|
1653
|
+
size === "small" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { className: svgClasses, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1014
1654
|
"circle",
|
|
1015
1655
|
{
|
|
1016
1656
|
className: "origin-center animate-circular-small-move stroke-interactive01",
|
|
@@ -1022,7 +1662,7 @@ function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
|
1022
1662
|
fill: "none"
|
|
1023
1663
|
}
|
|
1024
1664
|
) }),
|
|
1025
|
-
size === "medium" && /* @__PURE__ */ (0,
|
|
1665
|
+
size === "medium" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { className: svgClasses, viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1026
1666
|
"circle",
|
|
1027
1667
|
{
|
|
1028
1668
|
className: "origin-center animate-circular-medium-move stroke-interactive01",
|
|
@@ -1034,7 +1674,7 @@ function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
|
1034
1674
|
fill: "none"
|
|
1035
1675
|
}
|
|
1036
1676
|
) }),
|
|
1037
|
-
size === "large" && /* @__PURE__ */ (0,
|
|
1677
|
+
size === "large" && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("svg", { className: svgClasses, viewBox: "0 0 64 64", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1038
1678
|
"circle",
|
|
1039
1679
|
{
|
|
1040
1680
|
className: "origin-center animate-circular-large-move stroke-interactive01",
|
|
@@ -1050,13 +1690,13 @@ function Loading({ size = "medium", position = "fixed", height = "100%" }) {
|
|
|
1050
1690
|
}
|
|
1051
1691
|
|
|
1052
1692
|
// src/modal/modal.tsx
|
|
1053
|
-
var
|
|
1693
|
+
var import_react22 = require("react");
|
|
1054
1694
|
var import_react_dom2 = require("react-dom");
|
|
1055
1695
|
|
|
1056
1696
|
// src/modal/body-scroll-lock.tsx
|
|
1057
|
-
var
|
|
1697
|
+
var import_react19 = require("react");
|
|
1058
1698
|
var BodyScrollLock = () => {
|
|
1059
|
-
(0,
|
|
1699
|
+
(0, import_react19.useLayoutEffect)(() => {
|
|
1060
1700
|
const { scrollX, scrollY } = window;
|
|
1061
1701
|
const { body } = document;
|
|
1062
1702
|
const hasVerticalScrollbar = document.documentElement.scrollHeight > document.documentElement.clientHeight;
|
|
@@ -1101,34 +1741,34 @@ function restoreProperty(element, property, value) {
|
|
|
1101
1741
|
}
|
|
1102
1742
|
|
|
1103
1743
|
// src/modal/modal-body.tsx
|
|
1104
|
-
var
|
|
1744
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1105
1745
|
function ModalBody({ children }) {
|
|
1106
|
-
return /* @__PURE__ */ (0,
|
|
1746
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { className: "overflow-y-auto", children });
|
|
1107
1747
|
}
|
|
1108
1748
|
|
|
1109
1749
|
// src/modal/modal-context.ts
|
|
1110
|
-
var
|
|
1111
|
-
var ModalContext = (0,
|
|
1750
|
+
var import_react20 = require("react");
|
|
1751
|
+
var ModalContext = (0, import_react20.createContext)({
|
|
1112
1752
|
onClose: () => null
|
|
1113
1753
|
});
|
|
1114
1754
|
|
|
1115
1755
|
// src/modal/modal-footer.tsx
|
|
1116
|
-
var
|
|
1117
|
-
var
|
|
1756
|
+
var import_clsx18 = __toESM(require("clsx"));
|
|
1757
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1118
1758
|
function ModalFooter({ children, isNoBorder = false }) {
|
|
1119
|
-
const wrapperClasses = (0,
|
|
1759
|
+
const wrapperClasses = (0, import_clsx18.default)("flex w-full shrink-0 items-center rounded-b-lg px-6 py-4", {
|
|
1120
1760
|
"border-t-[1px] border-uiBorder01": !isNoBorder
|
|
1121
1761
|
});
|
|
1122
|
-
return /* @__PURE__ */ (0,
|
|
1762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("div", { className: wrapperClasses, children });
|
|
1123
1763
|
}
|
|
1124
1764
|
|
|
1125
1765
|
// src/modal/modal-header.tsx
|
|
1126
|
-
var
|
|
1127
|
-
var
|
|
1128
|
-
var
|
|
1766
|
+
var import_clsx19 = __toESM(require("clsx"));
|
|
1767
|
+
var import_react21 = require("react");
|
|
1768
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1129
1769
|
function ModalHeader({ children, isNoBorder = false }) {
|
|
1130
|
-
const { onClose } = (0,
|
|
1131
|
-
const headerClasses = (0,
|
|
1770
|
+
const { onClose } = (0, import_react21.useContext)(ModalContext);
|
|
1771
|
+
const headerClasses = (0, import_clsx19.default)(
|
|
1132
1772
|
"typography-h5 flex w-full shrink-0 items-center justify-between rounded-t-lg px-6 text-text01",
|
|
1133
1773
|
{
|
|
1134
1774
|
"border-b border-uiBorder01": !isNoBorder,
|
|
@@ -1136,14 +1776,14 @@ function ModalHeader({ children, isNoBorder = false }) {
|
|
|
1136
1776
|
"h-12": onClose
|
|
1137
1777
|
}
|
|
1138
1778
|
);
|
|
1139
|
-
return /* @__PURE__ */ (0,
|
|
1140
|
-
/* @__PURE__ */ (0,
|
|
1141
|
-
onClose && /* @__PURE__ */ (0,
|
|
1779
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: headerClasses, children: [
|
|
1780
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { children }),
|
|
1781
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(IconButton, { icon: "close", size: "small", variant: "text", onClick: onClose })
|
|
1142
1782
|
] });
|
|
1143
1783
|
}
|
|
1144
1784
|
|
|
1145
1785
|
// src/modal/modal.tsx
|
|
1146
|
-
var
|
|
1786
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1147
1787
|
var LIMIT_WIDTH = 320;
|
|
1148
1788
|
var LIMIT_HEIGHT = 184;
|
|
1149
1789
|
function Modal({
|
|
@@ -1155,16 +1795,16 @@ function Modal({
|
|
|
1155
1795
|
onClose,
|
|
1156
1796
|
portalTargetRef
|
|
1157
1797
|
}) {
|
|
1158
|
-
const [isMounted, setIsMounted] = (0,
|
|
1798
|
+
const [isMounted, setIsMounted] = (0, import_react22.useState)(false);
|
|
1159
1799
|
const renderWidth = typeof width === "number" ? Math.max(width, LIMIT_WIDTH) : width;
|
|
1160
1800
|
const renderHeight = typeof height === "number" ? Math.max(height, LIMIT_HEIGHT) : height;
|
|
1161
|
-
(0,
|
|
1801
|
+
(0, import_react22.useEffect)(() => {
|
|
1162
1802
|
setIsMounted(true);
|
|
1163
1803
|
}, []);
|
|
1164
|
-
return isMounted && isOpen ? /* @__PURE__ */ (0,
|
|
1165
|
-
/* @__PURE__ */ (0,
|
|
1804
|
+
return isMounted && isOpen ? /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
|
|
1805
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(BodyScrollLock, {}),
|
|
1166
1806
|
(0, import_react_dom2.createPortal)(
|
|
1167
|
-
/* @__PURE__ */ (0,
|
|
1807
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(ModalContext.Provider, { value: { onClose }, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: "fixed left-0 top-0 z-overlay flex size-full items-center justify-center bg-backgroundOverlayBlack py-4", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1168
1808
|
"div",
|
|
1169
1809
|
{
|
|
1170
1810
|
className: "grid max-h-full min-h-[120px] grid-rows-[max-content_1fr_max-content] flex-col rounded-lg bg-uiBackground01 shadow-modalShadow",
|
|
@@ -1181,10 +1821,10 @@ Modal.Header = ModalHeader;
|
|
|
1181
1821
|
Modal.Footer = ModalFooter;
|
|
1182
1822
|
|
|
1183
1823
|
// src/notification-inline/notification-inline.tsx
|
|
1184
|
-
var
|
|
1185
|
-
var
|
|
1824
|
+
var import_clsx20 = require("clsx");
|
|
1825
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1186
1826
|
function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
1187
|
-
const wrapperClasses = (0,
|
|
1827
|
+
const wrapperClasses = (0, import_clsx20.clsx)("typography-body13regular flex items-center gap-1 rounded text-text01", {
|
|
1188
1828
|
"bg-uiBackgroundError": state === "attention",
|
|
1189
1829
|
"bg-uiBackgroundWarning": state === "warning",
|
|
1190
1830
|
"bg-uiBackgroundBlue": state === "information",
|
|
@@ -1193,7 +1833,7 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
|
1193
1833
|
"p-2": size === "small",
|
|
1194
1834
|
"p-3": size === "medium"
|
|
1195
1835
|
});
|
|
1196
|
-
const iconClasses = (0,
|
|
1836
|
+
const iconClasses = (0, import_clsx20.clsx)("flex items-center", {
|
|
1197
1837
|
"fill-supportError": state === "attention",
|
|
1198
1838
|
"fill-supportWarning": state === "warning",
|
|
1199
1839
|
"fill-blue-blue50": state === "information",
|
|
@@ -1209,28 +1849,28 @@ function NotificationInline({ state = "default", size = "medium", ...props }) {
|
|
|
1209
1849
|
small: "small",
|
|
1210
1850
|
medium: "medium"
|
|
1211
1851
|
};
|
|
1212
|
-
return /* @__PURE__ */ (0,
|
|
1213
|
-
state !== "default" && /* @__PURE__ */ (0,
|
|
1214
|
-
/* @__PURE__ */ (0,
|
|
1215
|
-
props.showClose === true && /* @__PURE__ */ (0,
|
|
1852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: wrapperClasses, children: [
|
|
1853
|
+
state !== "default" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon, { name: iconName[state], size: iconSize[size] }) }),
|
|
1854
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", { className: "flex-1", children: props.children }),
|
|
1855
|
+
props.showClose === true && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(IconButton, { icon: "close", size: "small", variant: "text", onClick: props.onClickClose }) })
|
|
1216
1856
|
] });
|
|
1217
1857
|
}
|
|
1218
1858
|
|
|
1219
1859
|
// src/pagination/pagination-button.tsx
|
|
1220
|
-
var
|
|
1221
|
-
var
|
|
1860
|
+
var import_clsx21 = require("clsx");
|
|
1861
|
+
var import_react24 = require("react");
|
|
1222
1862
|
|
|
1223
1863
|
// src/pagination/pagination-context.ts
|
|
1224
|
-
var
|
|
1225
|
-
var PaginationContext = (0,
|
|
1864
|
+
var import_react23 = require("react");
|
|
1865
|
+
var PaginationContext = (0, import_react23.createContext)({
|
|
1226
1866
|
currentPage: 0
|
|
1227
1867
|
});
|
|
1228
1868
|
|
|
1229
1869
|
// src/pagination/pagination-button.tsx
|
|
1230
|
-
var
|
|
1870
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1231
1871
|
function PaginationButton({ page, onClick }) {
|
|
1232
|
-
const { currentPage } = (0,
|
|
1233
|
-
const buttonClasses = (0,
|
|
1872
|
+
const { currentPage } = (0, import_react24.useContext)(PaginationContext);
|
|
1873
|
+
const buttonClasses = (0, import_clsx21.clsx)(
|
|
1234
1874
|
"flex h-8 min-w-8 items-center justify-center rounded fill-icon01 px-1",
|
|
1235
1875
|
"typography-label14regular",
|
|
1236
1876
|
"text-interactive02",
|
|
@@ -1238,11 +1878,11 @@ function PaginationButton({ page, onClick }) {
|
|
|
1238
1878
|
{ "border border-uiBorder02": page === currentPage },
|
|
1239
1879
|
{ "border-transparent": page !== currentPage }
|
|
1240
1880
|
);
|
|
1241
|
-
return /* @__PURE__ */ (0,
|
|
1881
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("button", { type: "button", className: buttonClasses, onClick: () => onClick(page), children: page });
|
|
1242
1882
|
}
|
|
1243
1883
|
|
|
1244
1884
|
// src/pagination/pagination.tsx
|
|
1245
|
-
var
|
|
1885
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1246
1886
|
var START_PAGE = 1;
|
|
1247
1887
|
function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick }) {
|
|
1248
1888
|
if (totalPage < START_PAGE) {
|
|
@@ -1278,14 +1918,14 @@ function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick })
|
|
|
1278
1918
|
const hasHeadEllipsis = firstPageInList !== null && firstPageInList > START_PAGE + 1;
|
|
1279
1919
|
const hasTailEllipsis = lastPageInList !== null && lastPageInList < totalPage - 1;
|
|
1280
1920
|
const hasLastPageButton = totalPage > START_PAGE;
|
|
1281
|
-
return /* @__PURE__ */ (0,
|
|
1921
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1282
1922
|
PaginationContext.Provider,
|
|
1283
1923
|
{
|
|
1284
1924
|
value: {
|
|
1285
1925
|
currentPage: clampedCurrentPage
|
|
1286
1926
|
},
|
|
1287
|
-
children: /* @__PURE__ */ (0,
|
|
1288
|
-
/* @__PURE__ */ (0,
|
|
1927
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("ul", { className: "flex gap-1", children: [
|
|
1928
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1289
1929
|
IconButton,
|
|
1290
1930
|
{
|
|
1291
1931
|
isDisabled: isFirstPage,
|
|
@@ -1295,12 +1935,12 @@ function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick })
|
|
|
1295
1935
|
onClick: () => onClick(Math.max(START_PAGE, clampedCurrentPage - 1))
|
|
1296
1936
|
}
|
|
1297
1937
|
) }),
|
|
1298
|
-
/* @__PURE__ */ (0,
|
|
1299
|
-
hasHeadEllipsis && /* @__PURE__ */ (0,
|
|
1300
|
-
pageList.map((page, index) => /* @__PURE__ */ (0,
|
|
1301
|
-
hasTailEllipsis && /* @__PURE__ */ (0,
|
|
1302
|
-
hasLastPageButton && /* @__PURE__ */ (0,
|
|
1303
|
-
/* @__PURE__ */ (0,
|
|
1938
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(PaginationButton, { onClick: () => onClick(START_PAGE), page: START_PAGE }) }),
|
|
1939
|
+
hasHeadEllipsis && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { className: threeDotIconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon, { name: "more", size: "small" }) }),
|
|
1940
|
+
pageList.map((page, index) => /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(PaginationButton, { onClick: () => onClick(page), page }) }, index)),
|
|
1941
|
+
hasTailEllipsis && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { className: threeDotIconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(Icon, { name: "more", size: "small" }) }),
|
|
1942
|
+
hasLastPageButton && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(PaginationButton, { onClick: () => onClick(totalPage), page: totalPage }) }),
|
|
1943
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("li", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1304
1944
|
IconButton,
|
|
1305
1945
|
{
|
|
1306
1946
|
isDisabled: isLastPage,
|
|
@@ -1316,14 +1956,14 @@ function Pagination({ currentPage, totalPage, sideNumPagesToShow = 3, onClick })
|
|
|
1316
1956
|
}
|
|
1317
1957
|
|
|
1318
1958
|
// src/select/select.tsx
|
|
1319
|
-
var
|
|
1320
|
-
var
|
|
1321
|
-
var
|
|
1322
|
-
var
|
|
1959
|
+
var import_react28 = require("@floating-ui/react");
|
|
1960
|
+
var import_component_theme13 = require("@zenkigen-inc/component-theme");
|
|
1961
|
+
var import_clsx24 = __toESM(require("clsx"));
|
|
1962
|
+
var import_react29 = require("react");
|
|
1323
1963
|
|
|
1324
1964
|
// src/select/select-context.ts
|
|
1325
|
-
var
|
|
1326
|
-
var SelectContext = (0,
|
|
1965
|
+
var import_react25 = require("react");
|
|
1966
|
+
var SelectContext = (0, import_react25.createContext)({
|
|
1327
1967
|
size: "medium",
|
|
1328
1968
|
setIsOptionListOpen: () => false,
|
|
1329
1969
|
variant: "outline",
|
|
@@ -1331,19 +1971,19 @@ var SelectContext = (0, import_react16.createContext)({
|
|
|
1331
1971
|
});
|
|
1332
1972
|
|
|
1333
1973
|
// src/select/select-item.tsx
|
|
1334
|
-
var
|
|
1335
|
-
var
|
|
1336
|
-
var
|
|
1337
|
-
var
|
|
1974
|
+
var import_component_theme11 = require("@zenkigen-inc/component-theme");
|
|
1975
|
+
var import_clsx22 = __toESM(require("clsx"));
|
|
1976
|
+
var import_react26 = require("react");
|
|
1977
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1338
1978
|
function SelectItem({ option }) {
|
|
1339
|
-
const { setIsOptionListOpen, selectedOption, onChange, isError } = (0,
|
|
1979
|
+
const { setIsOptionListOpen, selectedOption, onChange, isError } = (0, import_react26.useContext)(SelectContext);
|
|
1340
1980
|
const handleClickItem = (option2) => {
|
|
1341
1981
|
onChange?.(option2);
|
|
1342
1982
|
setIsOptionListOpen(false);
|
|
1343
1983
|
};
|
|
1344
|
-
const itemClasses = (0,
|
|
1984
|
+
const itemClasses = (0, import_clsx22.default)(
|
|
1345
1985
|
"typography-label14regular flex h-8 w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
1346
|
-
|
|
1986
|
+
import_component_theme11.focusVisible.inset,
|
|
1347
1987
|
{
|
|
1348
1988
|
"text-interactive01 fill-interactive01 bg-selectedUi": option.id === selectedOption?.id && !(isError ?? false),
|
|
1349
1989
|
"text-supportError fill-supportError bg-uiBackgroundError": option.id === selectedOption?.id && isError,
|
|
@@ -1351,25 +1991,25 @@ function SelectItem({ option }) {
|
|
|
1351
1991
|
"pr-10": option.id !== selectedOption?.id
|
|
1352
1992
|
}
|
|
1353
1993
|
);
|
|
1354
|
-
return /* @__PURE__ */ (0,
|
|
1355
|
-
option.icon && /* @__PURE__ */ (0,
|
|
1356
|
-
/* @__PURE__ */ (0,
|
|
1357
|
-
option.id === selectedOption?.id && /* @__PURE__ */ (0,
|
|
1994
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("li", { className: "flex w-full items-center", "data-id": option.id, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("button", { className: itemClasses, type: "button", onClick: () => handleClickItem(option), children: [
|
|
1995
|
+
option.icon && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Icon, { name: option.icon, size: "small" }),
|
|
1996
|
+
/* @__PURE__ */ (0, import_jsx_runtime31.jsx)("span", { className: "ml-1 flex-1 truncate text-left", children: option.label }),
|
|
1997
|
+
option.id === selectedOption?.id && /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "ml-2 flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(Icon, { name: "check", size: "small" }) })
|
|
1358
1998
|
] }) }, option.id);
|
|
1359
1999
|
}
|
|
1360
2000
|
|
|
1361
2001
|
// src/select/select-list.tsx
|
|
1362
|
-
var
|
|
1363
|
-
var
|
|
1364
|
-
var
|
|
1365
|
-
var
|
|
1366
|
-
var SelectList = (0,
|
|
1367
|
-
const { selectedOption, setIsOptionListOpen, variant, placeholder, onChange, floatingStyles, floatingRef } = (0,
|
|
2002
|
+
var import_component_theme12 = require("@zenkigen-inc/component-theme");
|
|
2003
|
+
var import_clsx23 = __toESM(require("clsx"));
|
|
2004
|
+
var import_react27 = require("react");
|
|
2005
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
2006
|
+
var SelectList = (0, import_react27.forwardRef)(({ children, maxHeight }, ref) => {
|
|
2007
|
+
const { selectedOption, setIsOptionListOpen, variant, placeholder, onChange, floatingStyles, floatingRef } = (0, import_react27.useContext)(SelectContext);
|
|
1368
2008
|
const handleClickDeselect = () => {
|
|
1369
2009
|
onChange?.(null);
|
|
1370
2010
|
setIsOptionListOpen(false);
|
|
1371
2011
|
};
|
|
1372
|
-
(0,
|
|
2012
|
+
(0, import_react27.useLayoutEffect)(() => {
|
|
1373
2013
|
if (maxHeight != null && selectedOption != null) {
|
|
1374
2014
|
const container = floatingRef?.current;
|
|
1375
2015
|
if (container != null) {
|
|
@@ -1387,22 +2027,22 @@ var SelectList = (0, import_react18.forwardRef)(({ children, maxHeight }, ref) =
|
|
|
1387
2027
|
}
|
|
1388
2028
|
}
|
|
1389
2029
|
}, [selectedOption, maxHeight, floatingRef]);
|
|
1390
|
-
const listClasses = (0,
|
|
2030
|
+
const listClasses = (0, import_clsx23.default)("z-dropdown overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow", {
|
|
1391
2031
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
1392
2032
|
});
|
|
1393
|
-
const deselectButtonClasses = (0,
|
|
2033
|
+
const deselectButtonClasses = (0, import_clsx23.default)(
|
|
1394
2034
|
"typography-label14regular flex h-8 w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
1395
|
-
|
|
2035
|
+
import_component_theme12.focusVisible.inset
|
|
1396
2036
|
);
|
|
1397
|
-
return /* @__PURE__ */ (0,
|
|
2037
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("ul", { className: listClasses, style: { maxHeight, ...floatingStyles }, ref, children: [
|
|
1398
2038
|
children,
|
|
1399
|
-
placeholder != null && selectedOption !== null && /* @__PURE__ */ (0,
|
|
2039
|
+
placeholder != null && selectedOption !== null && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("button", { className: deselectButtonClasses, type: "button", onClick: handleClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
|
|
1400
2040
|
] });
|
|
1401
2041
|
});
|
|
1402
2042
|
SelectList.displayName = "SelectList";
|
|
1403
2043
|
|
|
1404
2044
|
// src/select/select.tsx
|
|
1405
|
-
var
|
|
2045
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1406
2046
|
var FLOATING_OFFSET = 4;
|
|
1407
2047
|
function Select({
|
|
1408
2048
|
children,
|
|
@@ -1419,16 +2059,16 @@ function Select({
|
|
|
1419
2059
|
onChange,
|
|
1420
2060
|
optionListMaxHeight
|
|
1421
2061
|
}) {
|
|
1422
|
-
const [isOptionListOpen, setIsOptionListOpen] = (0,
|
|
1423
|
-
const targetRef = (0,
|
|
2062
|
+
const [isOptionListOpen, setIsOptionListOpen] = (0, import_react29.useState)(false);
|
|
2063
|
+
const targetRef = (0, import_react29.useRef)(null);
|
|
1424
2064
|
useOutsideClick(targetRef, () => setIsOptionListOpen(false));
|
|
1425
|
-
const { refs, floatingStyles } = (0,
|
|
2065
|
+
const { refs, floatingStyles } = (0, import_react28.useFloating)({
|
|
1426
2066
|
open: isOptionListOpen,
|
|
1427
2067
|
onOpenChange: setIsOptionListOpen,
|
|
1428
2068
|
placement: "bottom-start",
|
|
1429
2069
|
middleware: [
|
|
1430
|
-
(0,
|
|
1431
|
-
(0,
|
|
2070
|
+
(0, import_react28.offset)(FLOATING_OFFSET),
|
|
2071
|
+
(0, import_react28.size)({
|
|
1432
2072
|
apply({ availableWidth, elements, rects }) {
|
|
1433
2073
|
const referenceWidth = rects.reference.width;
|
|
1434
2074
|
elements.floating.style.minWidth = `${referenceWidth}px`;
|
|
@@ -1436,40 +2076,40 @@ function Select({
|
|
|
1436
2076
|
}
|
|
1437
2077
|
})
|
|
1438
2078
|
],
|
|
1439
|
-
whileElementsMounted:
|
|
2079
|
+
whileElementsMounted: import_react28.autoUpdate
|
|
1440
2080
|
});
|
|
1441
2081
|
const handleClickToggle = () => setIsOptionListOpen((prev) => !prev);
|
|
1442
2082
|
const buttonVariant = isError && !isDisabled ? `${variant}Error` : variant;
|
|
1443
2083
|
const isSelected = isOptionSelected && !isDisabled && selectedOption !== null && !isError;
|
|
1444
|
-
const wrapperClasses = (0,
|
|
2084
|
+
const wrapperClasses = (0, import_clsx24.default)("relative flex shrink-0 items-center gap-1 rounded bg-uiBackground01", {
|
|
1445
2085
|
"h-6": size === "x-small" || size === "small",
|
|
1446
2086
|
"h-8": size === "medium",
|
|
1447
2087
|
"h-10": size === "large",
|
|
1448
2088
|
"cursor-not-allowed": isDisabled
|
|
1449
2089
|
});
|
|
1450
|
-
const buttonClasses = (0,
|
|
2090
|
+
const buttonClasses = (0, import_clsx24.default)(
|
|
1451
2091
|
"flex size-full items-center rounded",
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
2092
|
+
import_component_theme13.selectColors[buttonVariant].hover,
|
|
2093
|
+
import_component_theme13.selectColors[buttonVariant].active,
|
|
2094
|
+
import_component_theme13.selectColors[buttonVariant].disabled,
|
|
2095
|
+
import_component_theme13.focusVisible.normal,
|
|
1456
2096
|
{
|
|
1457
|
-
[
|
|
1458
|
-
[
|
|
2097
|
+
[import_component_theme13.selectColors[buttonVariant].selected]: isSelected,
|
|
2098
|
+
[import_component_theme13.selectColors[buttonVariant].base]: !isSelected,
|
|
1459
2099
|
"px-2": size === "x-small" || size === "small",
|
|
1460
2100
|
"px-4": size === "medium" || size === "large",
|
|
1461
2101
|
"pointer-events-none": isDisabled,
|
|
1462
2102
|
"border-supportError": !isSelected && !isDisabled && isError
|
|
1463
2103
|
}
|
|
1464
2104
|
);
|
|
1465
|
-
const labelClasses = (0,
|
|
2105
|
+
const labelClasses = (0, import_clsx24.default)("overflow-hidden", {
|
|
1466
2106
|
"mr-1": size === "x-small",
|
|
1467
2107
|
"mr-2": size !== "x-small",
|
|
1468
2108
|
"typography-label12regular": size === "x-small",
|
|
1469
2109
|
"typography-label14regular": size === "small" || size === "medium",
|
|
1470
2110
|
"typography-label16regular": size === "large"
|
|
1471
2111
|
});
|
|
1472
|
-
return /* @__PURE__ */ (0,
|
|
2112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1473
2113
|
SelectContext.Provider,
|
|
1474
2114
|
{
|
|
1475
2115
|
value: {
|
|
@@ -1483,8 +2123,8 @@ function Select({
|
|
|
1483
2123
|
floatingStyles,
|
|
1484
2124
|
floatingRef: refs.floating
|
|
1485
2125
|
},
|
|
1486
|
-
children: /* @__PURE__ */ (0,
|
|
1487
|
-
/* @__PURE__ */ (0,
|
|
2126
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: wrapperClasses, style: { width, maxWidth }, ref: targetRef, children: [
|
|
2127
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
1488
2128
|
"button",
|
|
1489
2129
|
{
|
|
1490
2130
|
ref: refs.setReference,
|
|
@@ -1493,9 +2133,9 @@ function Select({
|
|
|
1493
2133
|
onClick: handleClickToggle,
|
|
1494
2134
|
disabled: isDisabled,
|
|
1495
2135
|
children: [
|
|
1496
|
-
selectedOption?.icon ? /* @__PURE__ */ (0,
|
|
1497
|
-
/* @__PURE__ */ (0,
|
|
1498
|
-
/* @__PURE__ */ (0,
|
|
2136
|
+
selectedOption?.icon ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "mr-1 flex", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { name: selectedOption.icon, size: size === "large" ? "medium" : "small" }) }) : placeholder != null && placeholderIcon && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "mr-1 flex", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(Icon, { name: placeholderIcon, size: size === "large" ? "medium" : "small" }) }),
|
|
2137
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: labelClasses, children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "truncate", children: selectedOption ? selectedOption.label : placeholder != null && placeholder }) }),
|
|
2138
|
+
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
|
|
1499
2139
|
Icon,
|
|
1500
2140
|
{
|
|
1501
2141
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -1505,7 +2145,7 @@ function Select({
|
|
|
1505
2145
|
]
|
|
1506
2146
|
}
|
|
1507
2147
|
),
|
|
1508
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0,
|
|
2148
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_react28.FloatingPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "relative z-overlay", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(SelectList, { ref: refs.setFloating, maxHeight: optionListMaxHeight, children }) }) })
|
|
1509
2149
|
] })
|
|
1510
2150
|
}
|
|
1511
2151
|
);
|
|
@@ -1513,7 +2153,7 @@ function Select({
|
|
|
1513
2153
|
Select.Option = SelectItem;
|
|
1514
2154
|
|
|
1515
2155
|
// src/pagination-select/pagination-select.tsx
|
|
1516
|
-
var
|
|
2156
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1517
2157
|
function PaginationSelect({
|
|
1518
2158
|
totalSize,
|
|
1519
2159
|
currentPage,
|
|
@@ -1536,20 +2176,20 @@ function PaginationSelect({
|
|
|
1536
2176
|
});
|
|
1537
2177
|
const minCount = totalSize ? (currentPage - 1) * sizePerPage + 1 : 0;
|
|
1538
2178
|
const maxCount = currentPage * sizePerPage > totalSize ? totalSize : currentPage * sizePerPage;
|
|
1539
|
-
return /* @__PURE__ */ (0,
|
|
1540
|
-
/* @__PURE__ */ (0,
|
|
1541
|
-
/* @__PURE__ */ (0,
|
|
1542
|
-
/* @__PURE__ */ (0,
|
|
2179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("nav", { "aria-label": "pagination", className: "flex items-center gap-x-1", children: [
|
|
2180
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex items-center gap-x-2", children: [
|
|
2181
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "typography-label14regular flex gap-1 text-text01", children: [
|
|
2182
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { className: " ", children: [
|
|
1543
2183
|
minCount > 0 && `${minCount} - `,
|
|
1544
2184
|
maxCount
|
|
1545
2185
|
] }),
|
|
1546
|
-
/* @__PURE__ */ (0,
|
|
2186
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("span", { children: [
|
|
1547
2187
|
"/ ",
|
|
1548
2188
|
totalSize
|
|
1549
2189
|
] }),
|
|
1550
|
-
/* @__PURE__ */ (0,
|
|
2190
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)("span", { children: countLabel })
|
|
1551
2191
|
] }),
|
|
1552
|
-
/* @__PURE__ */ (0,
|
|
2192
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1553
2193
|
Select,
|
|
1554
2194
|
{
|
|
1555
2195
|
size: "medium",
|
|
@@ -1558,17 +2198,17 @@ function PaginationSelect({
|
|
|
1558
2198
|
optionListMaxHeight,
|
|
1559
2199
|
onChange: (option) => option && onChange(Number(option.value)),
|
|
1560
2200
|
isDisabled: pageMax === 0,
|
|
1561
|
-
children: optionsList.map((option) => /* @__PURE__ */ (0,
|
|
2201
|
+
children: optionsList.map((option) => /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(Select.Option, { option }, option.id))
|
|
1562
2202
|
}
|
|
1563
2203
|
),
|
|
1564
|
-
/* @__PURE__ */ (0,
|
|
2204
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "typography-label14regular text-text02", children: [
|
|
1565
2205
|
"/ ",
|
|
1566
2206
|
pageMax,
|
|
1567
2207
|
pageLabel
|
|
1568
2208
|
] })
|
|
1569
2209
|
] }),
|
|
1570
|
-
/* @__PURE__ */ (0,
|
|
1571
|
-
/* @__PURE__ */ (0,
|
|
2210
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: "flex items-center", children: [
|
|
2211
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1572
2212
|
IconButton,
|
|
1573
2213
|
{
|
|
1574
2214
|
variant: "text",
|
|
@@ -1578,7 +2218,7 @@ function PaginationSelect({
|
|
|
1578
2218
|
onClick: onClickPrevButton
|
|
1579
2219
|
}
|
|
1580
2220
|
),
|
|
1581
|
-
/* @__PURE__ */ (0,
|
|
2221
|
+
/* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
|
|
1582
2222
|
IconButton,
|
|
1583
2223
|
{
|
|
1584
2224
|
variant: "text",
|
|
@@ -1593,17 +2233,17 @@ function PaginationSelect({
|
|
|
1593
2233
|
}
|
|
1594
2234
|
|
|
1595
2235
|
// src/password-input/password-input.tsx
|
|
1596
|
-
var
|
|
2236
|
+
var import_react34 = require("react");
|
|
1597
2237
|
|
|
1598
2238
|
// src/text-input/text-input.tsx
|
|
1599
|
-
var
|
|
1600
|
-
var
|
|
2239
|
+
var import_clsx27 = require("clsx");
|
|
2240
|
+
var import_react33 = require("react");
|
|
1601
2241
|
|
|
1602
2242
|
// src/text-input/text-input-context.tsx
|
|
1603
|
-
var
|
|
1604
|
-
var TextInputCompoundContext = (0,
|
|
2243
|
+
var import_react30 = require("react");
|
|
2244
|
+
var TextInputCompoundContext = (0, import_react30.createContext)(null);
|
|
1605
2245
|
var useTextInputCompoundContext = (componentName) => {
|
|
1606
|
-
const context = (0,
|
|
2246
|
+
const context = (0, import_react30.useContext)(TextInputCompoundContext);
|
|
1607
2247
|
if (context == null) {
|
|
1608
2248
|
throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F TextInput \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
|
|
1609
2249
|
}
|
|
@@ -1611,10 +2251,10 @@ var useTextInputCompoundContext = (componentName) => {
|
|
|
1611
2251
|
};
|
|
1612
2252
|
|
|
1613
2253
|
// src/text-input/text-input-error-message.tsx
|
|
1614
|
-
var
|
|
1615
|
-
var
|
|
1616
|
-
var
|
|
1617
|
-
var TextInputErrorMessage = (0,
|
|
2254
|
+
var import_clsx25 = require("clsx");
|
|
2255
|
+
var import_react31 = require("react");
|
|
2256
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
2257
|
+
var TextInputErrorMessage = (0, import_react31.forwardRef)(
|
|
1618
2258
|
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
1619
2259
|
const { inputProps } = useTextInputCompoundContext("TextInput.ErrorMessage");
|
|
1620
2260
|
const typographyClass = inputProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
@@ -1622,26 +2262,26 @@ var TextInputErrorMessage = (0, import_react22.forwardRef)(
|
|
|
1622
2262
|
if (!shouldRender) {
|
|
1623
2263
|
return null;
|
|
1624
2264
|
}
|
|
1625
|
-
const errorMessageClassName = (0,
|
|
1626
|
-
return /* @__PURE__ */ (0,
|
|
2265
|
+
const errorMessageClassName = (0, import_clsx25.clsx)(typographyClass, "text-supportError");
|
|
2266
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
1627
2267
|
}
|
|
1628
2268
|
);
|
|
1629
2269
|
TextInputErrorMessage.displayName = "TextInput.ErrorMessage";
|
|
1630
2270
|
|
|
1631
2271
|
// src/text-input/text-input-helper-message.tsx
|
|
1632
|
-
var
|
|
1633
|
-
var
|
|
1634
|
-
var
|
|
1635
|
-
var TextInputHelperMessage = (0,
|
|
2272
|
+
var import_clsx26 = require("clsx");
|
|
2273
|
+
var import_react32 = require("react");
|
|
2274
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
2275
|
+
var TextInputHelperMessage = (0, import_react32.forwardRef)((props, ref) => {
|
|
1636
2276
|
const { inputProps } = useTextInputCompoundContext("TextInput.HelperMessage");
|
|
1637
2277
|
const typographyClass = inputProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
1638
|
-
const helperMessageClassName = (0,
|
|
1639
|
-
return /* @__PURE__ */ (0,
|
|
2278
|
+
const helperMessageClassName = (0, import_clsx26.clsx)(typographyClass, "text-text02");
|
|
2279
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { ref, className: helperMessageClassName, ...props });
|
|
1640
2280
|
});
|
|
1641
2281
|
TextInputHelperMessage.displayName = "TextInput.HelperMessage";
|
|
1642
2282
|
|
|
1643
2283
|
// src/text-input/text-input.tsx
|
|
1644
|
-
var
|
|
2284
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
1645
2285
|
function TextInputInner({
|
|
1646
2286
|
size = "medium",
|
|
1647
2287
|
isError = false,
|
|
@@ -1651,9 +2291,9 @@ function TextInputInner({
|
|
|
1651
2291
|
children,
|
|
1652
2292
|
...props
|
|
1653
2293
|
}, ref) {
|
|
1654
|
-
const autoGeneratedId = (0,
|
|
2294
|
+
const autoGeneratedId = (0, import_react33.useId)();
|
|
1655
2295
|
const { className: _className, ...restInputProps } = props;
|
|
1656
|
-
const inputPropsForContext = (0,
|
|
2296
|
+
const inputPropsForContext = (0, import_react33.useMemo)(
|
|
1657
2297
|
() => ({
|
|
1658
2298
|
...restInputProps,
|
|
1659
2299
|
size,
|
|
@@ -1664,7 +2304,7 @@ function TextInputInner({
|
|
|
1664
2304
|
}),
|
|
1665
2305
|
[restInputProps, size, isError, disabled, onClickClearButton, after]
|
|
1666
2306
|
);
|
|
1667
|
-
const contextValue = (0,
|
|
2307
|
+
const contextValue = (0, import_react33.useMemo)(
|
|
1668
2308
|
() => ({
|
|
1669
2309
|
inputProps: inputPropsForContext,
|
|
1670
2310
|
forwardedRef: ref
|
|
@@ -1674,363 +2314,171 @@ function TextInputInner({
|
|
|
1674
2314
|
const helperMessageIds = [];
|
|
1675
2315
|
const errorIds = [];
|
|
1676
2316
|
const describedByBaseId = restInputProps.id ?? autoGeneratedId;
|
|
1677
|
-
const enhancedChildren =
|
|
1678
|
-
if (!(0,
|
|
2317
|
+
const enhancedChildren = import_react33.Children.map(children, (child) => {
|
|
2318
|
+
if (!(0, import_react33.isValidElement)(child)) {
|
|
1679
2319
|
return child;
|
|
1680
2320
|
}
|
|
1681
2321
|
if (child.type === TextInputHelperMessage) {
|
|
1682
2322
|
const helperChild = child;
|
|
1683
2323
|
const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
|
|
1684
2324
|
helperMessageIds.push(assignedId);
|
|
1685
|
-
return (0,
|
|
1686
|
-
}
|
|
1687
|
-
if (child.type === TextInputErrorMessage && isError) {
|
|
1688
|
-
const errorChild = child;
|
|
1689
|
-
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
1690
|
-
errorIds.push(assignedId);
|
|
1691
|
-
return (0, import_react24.cloneElement)(errorChild, { id: assignedId });
|
|
1692
|
-
}
|
|
1693
|
-
return child;
|
|
1694
|
-
});
|
|
1695
|
-
const describedByFromProps = typeof restInputProps["aria-describedby"] === "string" ? restInputProps["aria-describedby"] : null;
|
|
1696
|
-
const describedByList = [describedByFromProps, ...helperMessageIds, ...errorIds].filter(
|
|
1697
|
-
(id) => typeof id === "string" && id.trim().length > 0
|
|
1698
|
-
);
|
|
1699
|
-
const describedByProps = describedByList.length > 0 ? {
|
|
1700
|
-
"aria-describedby": describedByList.join(" ")
|
|
1701
|
-
} : {};
|
|
1702
|
-
const shouldMarkInvalid = isError === true || errorIds.length > 0;
|
|
1703
|
-
const ariaInvalidFromProps = restInputProps["aria-invalid"];
|
|
1704
|
-
const ariaInvalidValue = ariaInvalidFromProps != null ? ariaInvalidFromProps : shouldMarkInvalid ? true : null;
|
|
1705
|
-
const ariaInvalidProps = ariaInvalidValue == null ? {} : { "aria-invalid": ariaInvalidValue };
|
|
1706
|
-
const mergedInputProps = {
|
|
1707
|
-
...restInputProps,
|
|
1708
|
-
...describedByProps,
|
|
1709
|
-
...ariaInvalidProps,
|
|
1710
|
-
disabled
|
|
1711
|
-
};
|
|
1712
|
-
const isShowClearButton = !!onClickClearButton && restInputProps.value.length !== 0 && !disabled;
|
|
1713
|
-
const hasTrailingElement = isShowClearButton || after != null;
|
|
1714
|
-
const inputWrapClasses = (0, import_clsx22.clsx)("relative flex items-center gap-2 overflow-hidden rounded border", {
|
|
1715
|
-
"border-uiBorder02": !isError && !disabled,
|
|
1716
|
-
"border-supportError": isError && !disabled,
|
|
1717
|
-
"hover:border-hoverInput": !disabled && !isError,
|
|
1718
|
-
"hover:focus-within:border-activeInput": !isError,
|
|
1719
|
-
"focus-within:border-activeInput": !isError,
|
|
1720
|
-
"bg-disabled02 border-disabled01": disabled,
|
|
1721
|
-
"pr-2": size === "medium" && hasTrailingElement,
|
|
1722
|
-
"pr-3": size === "large" && hasTrailingElement
|
|
1723
|
-
});
|
|
1724
|
-
const inputClasses = (0, import_clsx22.clsx)("flex-1 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder", {
|
|
1725
|
-
["typography-label14regular min-h-8 px-2"]: size === "medium",
|
|
1726
|
-
["typography-label16regular min-h-10 px-3"]: size === "large",
|
|
1727
|
-
"text-text01": !isError,
|
|
1728
|
-
"text-supportError": isError,
|
|
1729
|
-
"pr-0": hasTrailingElement
|
|
1730
|
-
});
|
|
1731
|
-
const inputElement = /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: inputWrapClasses, children: [
|
|
1732
|
-
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)("input", { ref, size: 1, className: inputClasses, ...mergedInputProps }),
|
|
1733
|
-
after,
|
|
1734
|
-
isShowClearButton && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(IconButton, { variant: "text", icon: "close", size: "small", onClick: onClickClearButton })
|
|
1735
|
-
] });
|
|
1736
|
-
const stackedChildren = enhancedChildren == null ? [] : import_react24.Children.toArray(enhancedChildren);
|
|
1737
|
-
const hasMessageChildren = stackedChildren.length > 0;
|
|
1738
|
-
if (!hasMessageChildren) {
|
|
1739
|
-
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TextInputCompoundContext.Provider, { value: contextValue, children: inputElement });
|
|
1740
|
-
}
|
|
1741
|
-
return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(TextInputCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
1742
|
-
inputElement,
|
|
1743
|
-
stackedChildren
|
|
1744
|
-
] }) });
|
|
1745
|
-
}
|
|
1746
|
-
var attachStatics = (component) => {
|
|
1747
|
-
component.HelperMessage = TextInputHelperMessage;
|
|
1748
|
-
component.ErrorMessage = TextInputErrorMessage;
|
|
1749
|
-
component.displayName = "TextInput";
|
|
1750
|
-
return component;
|
|
1751
|
-
};
|
|
1752
|
-
var TextInputPublic = (0, import_react24.forwardRef)(function TextInputPublic2(props, ref) {
|
|
1753
|
-
return TextInputInner(props, ref);
|
|
1754
|
-
});
|
|
1755
|
-
var InternalTextInputBase = (0, import_react24.forwardRef)(
|
|
1756
|
-
function InternalTextInputBase2(props, ref) {
|
|
1757
|
-
return TextInputInner(props, ref);
|
|
1758
|
-
}
|
|
1759
|
-
);
|
|
1760
|
-
var TextInput = attachStatics(TextInputPublic);
|
|
1761
|
-
var InternalTextInput = attachStatics(InternalTextInputBase);
|
|
1762
|
-
|
|
1763
|
-
// src/password-input/password-input.tsx
|
|
1764
|
-
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1765
|
-
var PasswordInputBase = (0, import_react25.forwardRef)(function PasswordInput({ disabled = false, children, ...props }, ref) {
|
|
1766
|
-
const [isPasswordVisible, setIsPasswordVisible] = (0, import_react25.useState)(false);
|
|
1767
|
-
const { className: _className, ...textInputProps } = props;
|
|
1768
|
-
const handlePasswordVisibilityToggle = () => {
|
|
1769
|
-
setIsPasswordVisible((prev) => !prev);
|
|
1770
|
-
};
|
|
1771
|
-
const passwordToggleButton = /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1772
|
-
IconButton,
|
|
1773
|
-
{
|
|
1774
|
-
variant: "text",
|
|
1775
|
-
icon: isPasswordVisible === true ? "visibility-off" : "visibility",
|
|
1776
|
-
size: "small",
|
|
1777
|
-
onClick: handlePasswordVisibilityToggle,
|
|
1778
|
-
isDisabled: disabled,
|
|
1779
|
-
"aria-label": isPasswordVisible === true ? "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u975E\u8868\u793A\u306B\u3059\u308B" : "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8868\u793A\u3059\u308B"
|
|
1780
|
-
}
|
|
1781
|
-
);
|
|
1782
|
-
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1783
|
-
InternalTextInput,
|
|
1784
|
-
{
|
|
1785
|
-
ref,
|
|
1786
|
-
type: isPasswordVisible === true ? "text" : "password",
|
|
1787
|
-
disabled,
|
|
1788
|
-
after: passwordToggleButton,
|
|
1789
|
-
...textInputProps,
|
|
1790
|
-
children
|
|
1791
|
-
}
|
|
1792
|
-
);
|
|
1793
|
-
});
|
|
1794
|
-
var PasswordInput2 = Object.assign(PasswordInputBase, {
|
|
1795
|
-
HelperMessage: TextInputHelperMessage,
|
|
1796
|
-
ErrorMessage: TextInputErrorMessage,
|
|
1797
|
-
displayName: "PasswordInput"
|
|
1798
|
-
});
|
|
1799
|
-
|
|
1800
|
-
// src/popover/popover.tsx
|
|
1801
|
-
var import_react30 = require("@floating-ui/react");
|
|
1802
|
-
var import_react31 = require("react");
|
|
1803
|
-
|
|
1804
|
-
// src/popover/popover-content.tsx
|
|
1805
|
-
var import_react27 = require("@floating-ui/react");
|
|
1806
|
-
var React = __toESM(require("react"));
|
|
1807
|
-
var import_react28 = require("react");
|
|
1808
|
-
|
|
1809
|
-
// src/utils/react-utils.ts
|
|
1810
|
-
function composeRefs(...refs) {
|
|
1811
|
-
return (node) => {
|
|
1812
|
-
for (const ref of refs) {
|
|
1813
|
-
if (ref == null) {
|
|
1814
|
-
continue;
|
|
1815
|
-
}
|
|
1816
|
-
if (typeof ref === "function") {
|
|
1817
|
-
ref(node);
|
|
1818
|
-
} else {
|
|
1819
|
-
ref.current = node;
|
|
1820
|
-
}
|
|
1821
|
-
}
|
|
1822
|
-
};
|
|
1823
|
-
}
|
|
1824
|
-
function isElement(node) {
|
|
1825
|
-
return node != null && typeof node === "object" && "type" in node;
|
|
1826
|
-
}
|
|
1827
|
-
|
|
1828
|
-
// src/popover/popover-context.ts
|
|
1829
|
-
var import_react26 = require("react");
|
|
1830
|
-
var PopoverContext = (0, import_react26.createContext)(null);
|
|
1831
|
-
var usePopoverContext = () => {
|
|
1832
|
-
const context = (0, import_react26.useContext)(PopoverContext);
|
|
1833
|
-
if (context == null) {
|
|
1834
|
-
throw new Error("Popover components must be used inside <Popover.Root>");
|
|
1835
|
-
}
|
|
1836
|
-
return context;
|
|
1837
|
-
};
|
|
1838
|
-
|
|
1839
|
-
// src/popover/popover-content.tsx
|
|
1840
|
-
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1841
|
-
var PopoverContent = (0, import_react28.forwardRef)(function PopoverContent2({ children }, ref) {
|
|
1842
|
-
const { isOpen, triggerRef, floating, panelId, onClose } = usePopoverContext();
|
|
1843
|
-
const shouldCloseOnOutsidePress = (0, import_react28.useCallback)(
|
|
1844
|
-
(event) => {
|
|
1845
|
-
const target = event.target;
|
|
1846
|
-
if (!(target instanceof Element)) {
|
|
1847
|
-
return true;
|
|
1848
|
-
}
|
|
1849
|
-
const floatingElement = floating.refs.floating.current;
|
|
1850
|
-
const closestOverlay = target.closest(".z-overlay, .z-dropdown");
|
|
1851
|
-
if (closestOverlay !== null && floatingElement instanceof Element) {
|
|
1852
|
-
const isInsideOwnFloating = floatingElement.contains(closestOverlay);
|
|
1853
|
-
return isInsideOwnFloating;
|
|
1854
|
-
}
|
|
1855
|
-
return true;
|
|
1856
|
-
},
|
|
1857
|
-
[floating.refs.floating]
|
|
1858
|
-
);
|
|
1859
|
-
const dismiss = (0, import_react27.useDismiss)(floating.context, {
|
|
1860
|
-
outsidePressEvent: "pointerdown",
|
|
1861
|
-
outsidePress: shouldCloseOnOutsidePress,
|
|
1862
|
-
escapeKey: false
|
|
1863
|
-
});
|
|
1864
|
-
const interactions = (0, import_react27.useInteractions)([dismiss, (0, import_react27.useRole)(floating.context, { role: "dialog" })]);
|
|
1865
|
-
(0, import_react28.useEffect)(() => {
|
|
1866
|
-
if (isOpen) {
|
|
1867
|
-
const element = floating.refs.floating.current;
|
|
1868
|
-
element?.focus?.({ preventScroll: true });
|
|
1869
|
-
}
|
|
1870
|
-
}, [isOpen, floating.refs.floating]);
|
|
1871
|
-
(0, import_react28.useEffect)(() => {
|
|
1872
|
-
if (!isOpen) {
|
|
1873
|
-
triggerRef.current?.focus({ preventScroll: true });
|
|
1874
|
-
}
|
|
1875
|
-
}, [isOpen, triggerRef]);
|
|
1876
|
-
const handleKeyDown = (0, import_react28.useCallback)(
|
|
1877
|
-
(event) => {
|
|
1878
|
-
if (event.key === "Escape") {
|
|
1879
|
-
event.stopPropagation();
|
|
1880
|
-
if (onClose != null) {
|
|
1881
|
-
onClose({ reason: "escape-key-down" });
|
|
1882
|
-
}
|
|
1883
|
-
}
|
|
1884
|
-
},
|
|
1885
|
-
[onClose]
|
|
1886
|
-
);
|
|
1887
|
-
let wrappedChildren = children;
|
|
1888
|
-
if (isElement(children)) {
|
|
1889
|
-
const childProps = children.props;
|
|
1890
|
-
wrappedChildren = React.cloneElement(children, {
|
|
1891
|
-
...childProps,
|
|
1892
|
-
...childProps.id == null && { id: panelId },
|
|
1893
|
-
...childProps.role == null && { role: "dialog" }
|
|
1894
|
-
});
|
|
1895
|
-
}
|
|
1896
|
-
return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_react27.FloatingPortal, { children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1897
|
-
"div",
|
|
1898
|
-
{
|
|
1899
|
-
...interactions.getFloatingProps({
|
|
1900
|
-
ref: composeRefs(floating.refs.setFloating, ref),
|
|
1901
|
-
tabIndex: -1,
|
|
1902
|
-
onKeyDown: handleKeyDown,
|
|
1903
|
-
style: {
|
|
1904
|
-
position: floating.strategy,
|
|
1905
|
-
top: floating.y ?? 0,
|
|
1906
|
-
left: floating.x ?? 0,
|
|
1907
|
-
outline: "0"
|
|
1908
|
-
}
|
|
1909
|
-
}),
|
|
1910
|
-
children: wrappedChildren
|
|
1911
|
-
}
|
|
1912
|
-
) : null });
|
|
1913
|
-
});
|
|
1914
|
-
|
|
1915
|
-
// src/popover/popover-trigger.tsx
|
|
1916
|
-
var React2 = __toESM(require("react"));
|
|
1917
|
-
var import_react29 = require("react");
|
|
1918
|
-
var PopoverTrigger = (0, import_react29.forwardRef)(function PopoverTrigger2({ children }, ref) {
|
|
1919
|
-
const { isOpen, floating, triggerRef, anchorRef, panelId } = usePopoverContext();
|
|
1920
|
-
if (!isElement(children)) {
|
|
1921
|
-
return null;
|
|
1922
|
-
}
|
|
1923
|
-
const handleTriggerRef = (node) => {
|
|
1924
|
-
triggerRef.current = node;
|
|
1925
|
-
if (anchorRef == null) {
|
|
1926
|
-
floating.refs.setReference(node);
|
|
1927
|
-
}
|
|
1928
|
-
if (typeof ref === "function") {
|
|
1929
|
-
ref(node);
|
|
1930
|
-
} else if (ref != null) {
|
|
1931
|
-
ref.current = node;
|
|
2325
|
+
return (0, import_react33.cloneElement)(helperChild, { id: assignedId });
|
|
1932
2326
|
}
|
|
2327
|
+
if (child.type === TextInputErrorMessage && isError) {
|
|
2328
|
+
const errorChild = child;
|
|
2329
|
+
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
2330
|
+
errorIds.push(assignedId);
|
|
2331
|
+
return (0, import_react33.cloneElement)(errorChild, { id: assignedId });
|
|
2332
|
+
}
|
|
2333
|
+
return child;
|
|
2334
|
+
});
|
|
2335
|
+
const describedByFromProps = typeof restInputProps["aria-describedby"] === "string" ? restInputProps["aria-describedby"] : null;
|
|
2336
|
+
const describedByList = [describedByFromProps, ...helperMessageIds, ...errorIds].filter(
|
|
2337
|
+
(id) => typeof id === "string" && id.trim().length > 0
|
|
2338
|
+
);
|
|
2339
|
+
const describedByProps = describedByList.length > 0 ? {
|
|
2340
|
+
"aria-describedby": describedByList.join(" ")
|
|
2341
|
+
} : {};
|
|
2342
|
+
const shouldMarkInvalid = isError === true || errorIds.length > 0;
|
|
2343
|
+
const ariaInvalidFromProps = restInputProps["aria-invalid"];
|
|
2344
|
+
const ariaInvalidValue = ariaInvalidFromProps != null ? ariaInvalidFromProps : shouldMarkInvalid ? true : null;
|
|
2345
|
+
const ariaInvalidProps = ariaInvalidValue == null ? {} : { "aria-invalid": ariaInvalidValue };
|
|
2346
|
+
const mergedInputProps = {
|
|
2347
|
+
...restInputProps,
|
|
2348
|
+
...describedByProps,
|
|
2349
|
+
...ariaInvalidProps,
|
|
2350
|
+
disabled
|
|
1933
2351
|
};
|
|
1934
|
-
const
|
|
1935
|
-
const
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
"
|
|
1940
|
-
"
|
|
1941
|
-
"
|
|
2352
|
+
const isShowClearButton = !!onClickClearButton && restInputProps.value.length !== 0 && !disabled;
|
|
2353
|
+
const hasTrailingElement = isShowClearButton || after != null;
|
|
2354
|
+
const inputWrapClasses = (0, import_clsx27.clsx)("relative flex items-center gap-2 overflow-hidden rounded border", {
|
|
2355
|
+
"border-uiBorder02": !isError && !disabled,
|
|
2356
|
+
"border-supportError": isError && !disabled,
|
|
2357
|
+
"hover:border-hoverInput": !disabled && !isError,
|
|
2358
|
+
"hover:focus-within:border-activeInput": !isError,
|
|
2359
|
+
"focus-within:border-activeInput": !isError,
|
|
2360
|
+
"bg-disabled02 border-disabled01": disabled,
|
|
2361
|
+
"pr-2": size === "medium" && hasTrailingElement,
|
|
2362
|
+
"pr-3": size === "large" && hasTrailingElement
|
|
2363
|
+
});
|
|
2364
|
+
const inputClasses = (0, import_clsx27.clsx)("flex-1 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder", {
|
|
2365
|
+
["typography-label14regular min-h-8 px-2"]: size === "medium",
|
|
2366
|
+
["typography-label16regular min-h-10 px-3"]: size === "large",
|
|
2367
|
+
"text-text01": !isError,
|
|
2368
|
+
"text-supportError": isError,
|
|
2369
|
+
"pr-0": hasTrailingElement
|
|
1942
2370
|
});
|
|
2371
|
+
const inputElement = /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: inputWrapClasses, children: [
|
|
2372
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("input", { ref, size: 1, className: inputClasses, ...mergedInputProps }),
|
|
2373
|
+
after,
|
|
2374
|
+
isShowClearButton && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(IconButton, { variant: "text", icon: "close", size: "small", onClick: onClickClearButton })
|
|
2375
|
+
] });
|
|
2376
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react33.Children.toArray(enhancedChildren);
|
|
2377
|
+
const hasMessageChildren = stackedChildren.length > 0;
|
|
2378
|
+
if (!hasMessageChildren) {
|
|
2379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TextInputCompoundContext.Provider, { value: contextValue, children: inputElement });
|
|
2380
|
+
}
|
|
2381
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(TextInputCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2382
|
+
inputElement,
|
|
2383
|
+
stackedChildren
|
|
2384
|
+
] }) });
|
|
2385
|
+
}
|
|
2386
|
+
var attachStatics = (component) => {
|
|
2387
|
+
component.HelperMessage = TextInputHelperMessage;
|
|
2388
|
+
component.ErrorMessage = TextInputErrorMessage;
|
|
2389
|
+
component.displayName = "TextInput";
|
|
2390
|
+
return component;
|
|
2391
|
+
};
|
|
2392
|
+
var TextInputPublic = (0, import_react33.forwardRef)(function TextInputPublic2(props, ref) {
|
|
2393
|
+
return TextInputInner(props, ref);
|
|
1943
2394
|
});
|
|
2395
|
+
var InternalTextInputBase = (0, import_react33.forwardRef)(
|
|
2396
|
+
function InternalTextInputBase2(props, ref) {
|
|
2397
|
+
return TextInputInner(props, ref);
|
|
2398
|
+
}
|
|
2399
|
+
);
|
|
2400
|
+
var TextInput = attachStatics(TextInputPublic);
|
|
2401
|
+
var InternalTextInput = attachStatics(InternalTextInputBase);
|
|
1944
2402
|
|
|
1945
|
-
// src/
|
|
1946
|
-
var
|
|
1947
|
-
function
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
},
|
|
1963
|
-
placement,
|
|
1964
|
-
middleware: [(0, import_react30.offset)(offsetValue)],
|
|
1965
|
-
whileElementsMounted: import_react30.autoUpdate,
|
|
1966
|
-
strategy: "fixed"
|
|
1967
|
-
});
|
|
1968
|
-
(0, import_react31.useEffect)(() => {
|
|
1969
|
-
if (anchorRef?.current) {
|
|
1970
|
-
floating.refs.setReference(anchorRef.current);
|
|
2403
|
+
// src/password-input/password-input.tsx
|
|
2404
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
2405
|
+
var PasswordInputBase = (0, import_react34.forwardRef)(function PasswordInput({ disabled = false, children, ...props }, ref) {
|
|
2406
|
+
const [isPasswordVisible, setIsPasswordVisible] = (0, import_react34.useState)(false);
|
|
2407
|
+
const { className: _className, ...textInputProps } = props;
|
|
2408
|
+
const handlePasswordVisibilityToggle = () => {
|
|
2409
|
+
setIsPasswordVisible((prev) => !prev);
|
|
2410
|
+
};
|
|
2411
|
+
const passwordToggleButton = /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2412
|
+
IconButton,
|
|
2413
|
+
{
|
|
2414
|
+
variant: "text",
|
|
2415
|
+
icon: isPasswordVisible === true ? "visibility-off" : "visibility",
|
|
2416
|
+
size: "small",
|
|
2417
|
+
onClick: handlePasswordVisibilityToggle,
|
|
2418
|
+
isDisabled: disabled,
|
|
2419
|
+
"aria-label": isPasswordVisible === true ? "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u975E\u8868\u793A\u306B\u3059\u308B" : "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8868\u793A\u3059\u308B"
|
|
1971
2420
|
}
|
|
1972
|
-
}, [anchorRef, floating.refs]);
|
|
1973
|
-
const contentId = (0, import_react30.useId)() ?? "";
|
|
1974
|
-
const panelId = `${contentId}-panel`;
|
|
1975
|
-
const contextValue = (0, import_react31.useMemo)(
|
|
1976
|
-
() => ({
|
|
1977
|
-
isOpen,
|
|
1978
|
-
triggerRef,
|
|
1979
|
-
anchorRef,
|
|
1980
|
-
floating,
|
|
1981
|
-
contentId,
|
|
1982
|
-
panelId,
|
|
1983
|
-
onClose
|
|
1984
|
-
}),
|
|
1985
|
-
[isOpen, triggerRef, anchorRef, floating, contentId, panelId, onClose]
|
|
1986
2421
|
);
|
|
1987
|
-
return /* @__PURE__ */ (0,
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
2422
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2423
|
+
InternalTextInput,
|
|
2424
|
+
{
|
|
2425
|
+
ref,
|
|
2426
|
+
type: isPasswordVisible === true ? "text" : "password",
|
|
2427
|
+
disabled,
|
|
2428
|
+
after: passwordToggleButton,
|
|
2429
|
+
...textInputProps,
|
|
2430
|
+
children
|
|
2431
|
+
}
|
|
2432
|
+
);
|
|
2433
|
+
});
|
|
2434
|
+
var PasswordInput2 = Object.assign(PasswordInputBase, {
|
|
2435
|
+
HelperMessage: TextInputHelperMessage,
|
|
2436
|
+
ErrorMessage: TextInputErrorMessage,
|
|
2437
|
+
displayName: "PasswordInput"
|
|
2438
|
+
});
|
|
1991
2439
|
|
|
1992
2440
|
// src/popup/popup.tsx
|
|
1993
|
-
var
|
|
2441
|
+
var import_react37 = require("react");
|
|
1994
2442
|
|
|
1995
2443
|
// src/popup/popup-body.tsx
|
|
1996
|
-
var
|
|
2444
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
1997
2445
|
function PopupBody({ children }) {
|
|
1998
|
-
return /* @__PURE__ */ (0,
|
|
2446
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "overflow-y-auto", children });
|
|
1999
2447
|
}
|
|
2000
2448
|
|
|
2001
2449
|
// src/popup/popup-context.ts
|
|
2002
|
-
var
|
|
2003
|
-
var PopupContext = (0,
|
|
2450
|
+
var import_react35 = require("react");
|
|
2451
|
+
var PopupContext = (0, import_react35.createContext)({
|
|
2004
2452
|
isOpen: false,
|
|
2005
2453
|
onClose: () => null
|
|
2006
2454
|
});
|
|
2007
2455
|
|
|
2008
2456
|
// src/popup/popup-footer.tsx
|
|
2009
|
-
var
|
|
2457
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2010
2458
|
function PopupFooter({ children }) {
|
|
2011
|
-
return /* @__PURE__ */ (0,
|
|
2459
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "flex w-full shrink-0 items-center rounded-b-lg px-6 py-3", children });
|
|
2012
2460
|
}
|
|
2013
2461
|
|
|
2014
2462
|
// src/popup/popup-header.tsx
|
|
2015
|
-
var
|
|
2016
|
-
var
|
|
2463
|
+
var import_react36 = require("react");
|
|
2464
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2017
2465
|
function PopupHeader({ children, before }) {
|
|
2018
|
-
const { onClose } = (0,
|
|
2019
|
-
return /* @__PURE__ */ (0,
|
|
2020
|
-
/* @__PURE__ */ (0,
|
|
2466
|
+
const { onClose } = (0, import_react36.useContext)(PopupContext);
|
|
2467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "typography-h5 flex h-12 w-full shrink-0 items-start justify-between rounded-t-lg px-6 pt-3 text-text01", children: [
|
|
2468
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex items-center gap-1", children: [
|
|
2021
2469
|
before,
|
|
2022
2470
|
children
|
|
2023
2471
|
] }),
|
|
2024
|
-
onClose && /* @__PURE__ */ (0,
|
|
2472
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(IconButton, { icon: "close", size: "small", variant: "text", onClick: onClose })
|
|
2025
2473
|
] });
|
|
2026
2474
|
}
|
|
2027
2475
|
|
|
2028
2476
|
// src/popup/popup.tsx
|
|
2029
|
-
var
|
|
2477
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2030
2478
|
var LIMIT_WIDTH2 = 320;
|
|
2031
2479
|
var LIMIT_HEIGHT2 = 184;
|
|
2032
2480
|
function useOptionalPopoverContext() {
|
|
2033
|
-
return (0,
|
|
2481
|
+
return (0, import_react37.useContext)(PopoverContext);
|
|
2034
2482
|
}
|
|
2035
2483
|
function Popup({ children, isOpen: controlledIsOpen, width = 480, height, onClose }) {
|
|
2036
2484
|
const renderWidth = typeof width === "number" ? Math.max(width, LIMIT_WIDTH2) : width;
|
|
@@ -2041,7 +2489,7 @@ function Popup({ children, isOpen: controlledIsOpen, width = 480, height, onClos
|
|
|
2041
2489
|
if (!isOpen) {
|
|
2042
2490
|
return null;
|
|
2043
2491
|
}
|
|
2044
|
-
return /* @__PURE__ */ (0,
|
|
2492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(PopupContext.Provider, { value: { isOpen, onClose }, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2045
2493
|
"div",
|
|
2046
2494
|
{
|
|
2047
2495
|
className: "grid max-h-full grid-rows-[max-content_1fr_max-content] flex-col rounded-lg bg-uiBackground01 shadow-floatingShadow",
|
|
@@ -2055,29 +2503,29 @@ Popup.Header = PopupHeader;
|
|
|
2055
2503
|
Popup.Footer = PopupFooter;
|
|
2056
2504
|
|
|
2057
2505
|
// src/radio/radio.tsx
|
|
2058
|
-
var
|
|
2059
|
-
var
|
|
2060
|
-
var
|
|
2061
|
-
var
|
|
2506
|
+
var import_component_theme14 = require("@zenkigen-inc/component-theme");
|
|
2507
|
+
var import_clsx28 = __toESM(require("clsx"));
|
|
2508
|
+
var import_react38 = require("react");
|
|
2509
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2062
2510
|
function Radio({ name, value, id, label, isChecked = false, isDisabled = false, onChange }) {
|
|
2063
|
-
const [isMouseOver, setIsMouseOver] = (0,
|
|
2064
|
-
const handleMouseOverInput = (0,
|
|
2511
|
+
const [isMouseOver, setIsMouseOver] = (0, import_react38.useState)(false);
|
|
2512
|
+
const handleMouseOverInput = (0, import_react38.useCallback)(() => {
|
|
2065
2513
|
setIsMouseOver(true);
|
|
2066
2514
|
}, []);
|
|
2067
|
-
const handleMouseOutInput = (0,
|
|
2515
|
+
const handleMouseOutInput = (0, import_react38.useCallback)(() => {
|
|
2068
2516
|
setIsMouseOver(false);
|
|
2069
2517
|
}, []);
|
|
2070
|
-
const handleChange = (0,
|
|
2518
|
+
const handleChange = (0, import_react38.useCallback)(
|
|
2071
2519
|
(e) => !isDisabled && onChange?.(e),
|
|
2072
2520
|
[isDisabled, onChange]
|
|
2073
2521
|
);
|
|
2074
|
-
const inputClasses = (0,
|
|
2522
|
+
const inputClasses = (0, import_clsx28.default)("peer absolute z-[1] size-6 opacity-0", {
|
|
2075
2523
|
"cursor-not-allowed": isDisabled,
|
|
2076
2524
|
"cursor-pointer": !isDisabled
|
|
2077
2525
|
});
|
|
2078
|
-
const boxClasses = (0,
|
|
2526
|
+
const boxClasses = (0, import_clsx28.default)(
|
|
2079
2527
|
"inline-flex size-5 items-center justify-center rounded-full border border-solid bg-white",
|
|
2080
|
-
|
|
2528
|
+
import_component_theme14.focusVisible.normalPeer,
|
|
2081
2529
|
{
|
|
2082
2530
|
"border-disabled01 hover:border-disabled01": isDisabled && !isMouseOver,
|
|
2083
2531
|
"border-hoverUiBorder": !isDisabled && isMouseOver,
|
|
@@ -2086,22 +2534,22 @@ function Radio({ name, value, id, label, isChecked = false, isDisabled = false,
|
|
|
2086
2534
|
"cursor-pointer": !isDisabled
|
|
2087
2535
|
}
|
|
2088
2536
|
);
|
|
2089
|
-
const afterClasses = (0,
|
|
2537
|
+
const afterClasses = (0, import_clsx28.default)("absolute inset-0 m-auto block size-3 rounded-full", {
|
|
2090
2538
|
"bg-disabled01": isDisabled && isChecked,
|
|
2091
2539
|
"bg-activeSelectedUi": !isDisabled && isChecked,
|
|
2092
2540
|
"scale-0": !isChecked,
|
|
2093
2541
|
"scale-100": isChecked
|
|
2094
2542
|
});
|
|
2095
|
-
const hoverIndicatorClasses = (0,
|
|
2543
|
+
const hoverIndicatorClasses = (0, import_clsx28.default)("inline-block size-3 rounded-full", {
|
|
2096
2544
|
"bg-hoverUi": !isDisabled && !isChecked && isMouseOver
|
|
2097
2545
|
});
|
|
2098
|
-
const labelClasses = (0,
|
|
2546
|
+
const labelClasses = (0, import_clsx28.default)("typography-label14regular ml-2 flex-[1_0_0] select-none break-all", {
|
|
2099
2547
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
2100
2548
|
"cursor-pointer text-text01": !isDisabled
|
|
2101
2549
|
});
|
|
2102
|
-
return /* @__PURE__ */ (0,
|
|
2103
|
-
/* @__PURE__ */ (0,
|
|
2104
|
-
/* @__PURE__ */ (0,
|
|
2550
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex items-center", children: [
|
|
2551
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "flex size-6 items-center justify-center", children: [
|
|
2552
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2105
2553
|
"input",
|
|
2106
2554
|
{
|
|
2107
2555
|
type: "checkbox",
|
|
@@ -2116,32 +2564,32 @@ function Radio({ name, value, id, label, isChecked = false, isDisabled = false,
|
|
|
2116
2564
|
className: inputClasses
|
|
2117
2565
|
}
|
|
2118
2566
|
),
|
|
2119
|
-
/* @__PURE__ */ (0,
|
|
2120
|
-
/* @__PURE__ */ (0,
|
|
2121
|
-
/* @__PURE__ */ (0,
|
|
2567
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: boxClasses, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "relative flex size-5 flex-[0_0_auto] items-center justify-center", children: [
|
|
2568
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: afterClasses }),
|
|
2569
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: hoverIndicatorClasses })
|
|
2122
2570
|
] }) })
|
|
2123
2571
|
] }),
|
|
2124
|
-
/* @__PURE__ */ (0,
|
|
2572
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)("label", { htmlFor: id, className: labelClasses, children: label })
|
|
2125
2573
|
] });
|
|
2126
2574
|
}
|
|
2127
2575
|
|
|
2128
2576
|
// src/search/search.tsx
|
|
2129
|
-
var
|
|
2130
|
-
var
|
|
2131
|
-
var
|
|
2132
|
-
var Search = (0,
|
|
2133
|
-
const classes = (0,
|
|
2577
|
+
var import_clsx29 = require("clsx");
|
|
2578
|
+
var import_react39 = require("react");
|
|
2579
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
2580
|
+
var Search = (0, import_react39.forwardRef)(({ width = "100%", size = "medium", ...props }, ref) => {
|
|
2581
|
+
const classes = (0, import_clsx29.clsx)(
|
|
2134
2582
|
"flex items-center rounded-full border border-uiBorder02 bg-uiBackground01 focus-within:border-activeInput",
|
|
2135
2583
|
{ "h-8 px-3": size === "medium" },
|
|
2136
2584
|
{ "h-10 px-4": size === "large" }
|
|
2137
2585
|
);
|
|
2138
|
-
const inputClasses = (0,
|
|
2586
|
+
const inputClasses = (0, import_clsx29.clsx)("mx-2 h-full flex-1 text-text01 outline-0 placeholder:text-textPlaceholder", {
|
|
2139
2587
|
["typography-label14regular"]: size === "medium",
|
|
2140
2588
|
["typography-label16regular"]: size === "large"
|
|
2141
2589
|
});
|
|
2142
|
-
return /* @__PURE__ */ (0,
|
|
2143
|
-
/* @__PURE__ */ (0,
|
|
2144
|
-
/* @__PURE__ */ (0,
|
|
2590
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "relative", ref, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("form", { onSubmit: props.onSubmit, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: classes, style: { width }, children: [
|
|
2591
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Icon, { name: "search", color: "icon01", size: "medium" }),
|
|
2592
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
2145
2593
|
"input",
|
|
2146
2594
|
{
|
|
2147
2595
|
type: "text",
|
|
@@ -2152,7 +2600,7 @@ var Search = (0, import_react36.forwardRef)(({ width = "100%", size = "medium",
|
|
|
2152
2600
|
onChange: props.onChange
|
|
2153
2601
|
}
|
|
2154
2602
|
),
|
|
2155
|
-
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ (0,
|
|
2603
|
+
props.onClickClearButton && props.value && props.value.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
2156
2604
|
IconButton,
|
|
2157
2605
|
{
|
|
2158
2606
|
variant: "text",
|
|
@@ -2167,17 +2615,17 @@ var Search = (0, import_react36.forwardRef)(({ width = "100%", size = "medium",
|
|
|
2167
2615
|
Search.displayName = "Search";
|
|
2168
2616
|
|
|
2169
2617
|
// src/segmented-control/segmented-control.tsx
|
|
2170
|
-
var
|
|
2618
|
+
var import_react42 = __toESM(require("react"));
|
|
2171
2619
|
|
|
2172
2620
|
// src/segmented-control/segmented-control-context.ts
|
|
2173
|
-
var
|
|
2174
|
-
var SegmentedControlContext = (0,
|
|
2621
|
+
var import_react40 = require("react");
|
|
2622
|
+
var SegmentedControlContext = (0, import_react40.createContext)(null);
|
|
2175
2623
|
|
|
2176
2624
|
// src/segmented-control/segmented-control-item.tsx
|
|
2177
|
-
var
|
|
2178
|
-
var
|
|
2179
|
-
var
|
|
2180
|
-
var
|
|
2625
|
+
var import_component_theme15 = require("@zenkigen-inc/component-theme");
|
|
2626
|
+
var import_clsx30 = require("clsx");
|
|
2627
|
+
var import_react41 = require("react");
|
|
2628
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
2181
2629
|
var SegmentedControlItem = ({
|
|
2182
2630
|
label,
|
|
2183
2631
|
value,
|
|
@@ -2186,9 +2634,9 @@ var SegmentedControlItem = ({
|
|
|
2186
2634
|
"aria-label": ariaLabel,
|
|
2187
2635
|
...rest
|
|
2188
2636
|
}) => {
|
|
2189
|
-
const context = (0,
|
|
2190
|
-
const buttonRef = (0,
|
|
2191
|
-
const lastInteractionWasMouse = (0,
|
|
2637
|
+
const context = (0, import_react41.useContext)(SegmentedControlContext);
|
|
2638
|
+
const buttonRef = (0, import_react41.useRef)(null);
|
|
2639
|
+
const lastInteractionWasMouse = (0, import_react41.useRef)(false);
|
|
2192
2640
|
if (context === null) {
|
|
2193
2641
|
throw new Error("SegmentedControl.Item must be used within SegmentedControl");
|
|
2194
2642
|
}
|
|
@@ -2204,7 +2652,7 @@ var SegmentedControlItem = ({
|
|
|
2204
2652
|
const isSelected = value === selectedValue;
|
|
2205
2653
|
const isFocused = value === focusedValue;
|
|
2206
2654
|
const isOptionDisabled = isContextDisabled || itemDisabled === true;
|
|
2207
|
-
(0,
|
|
2655
|
+
(0, import_react41.useEffect)(() => {
|
|
2208
2656
|
if (isFocused === true && buttonRef.current !== null) {
|
|
2209
2657
|
buttonRef.current.focus();
|
|
2210
2658
|
}
|
|
@@ -2226,7 +2674,7 @@ var SegmentedControlItem = ({
|
|
|
2226
2674
|
lastInteractionWasMouse.current = false;
|
|
2227
2675
|
onBlur?.();
|
|
2228
2676
|
};
|
|
2229
|
-
const buttonClasses = (0,
|
|
2677
|
+
const buttonClasses = (0, import_clsx30.clsx)("relative flex items-center justify-center gap-1 rounded", import_component_theme15.focusVisible.normal, {
|
|
2230
2678
|
"px-2 min-h-[24px] typography-label12regular": size === "small",
|
|
2231
2679
|
"px-4 min-h-[32px] typography-label14regular": size === "medium",
|
|
2232
2680
|
// States - Default with hover
|
|
@@ -2236,7 +2684,7 @@ var SegmentedControlItem = ({
|
|
|
2236
2684
|
// States - Disabled
|
|
2237
2685
|
"text-disabled01 bg-transparent": isOptionDisabled === true
|
|
2238
2686
|
});
|
|
2239
|
-
return /* @__PURE__ */ (0,
|
|
2687
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
2240
2688
|
"button",
|
|
2241
2689
|
{
|
|
2242
2690
|
ref: buttonRef,
|
|
@@ -2253,25 +2701,25 @@ var SegmentedControlItem = ({
|
|
|
2253
2701
|
onMouseDown: handleMouseDown,
|
|
2254
2702
|
...rest,
|
|
2255
2703
|
children: [
|
|
2256
|
-
Boolean(icon) === true && icon && /* @__PURE__ */ (0,
|
|
2704
|
+
Boolean(icon) === true && icon && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
2257
2705
|
"span",
|
|
2258
2706
|
{
|
|
2259
|
-
className: (0,
|
|
2707
|
+
className: (0, import_clsx30.clsx)("flex items-center", {
|
|
2260
2708
|
"fill-disabled01": isOptionDisabled === true,
|
|
2261
2709
|
"fill-interactive01": isSelected === true && isOptionDisabled === false,
|
|
2262
2710
|
"fill-icon01": isSelected === false && isOptionDisabled === false
|
|
2263
2711
|
}),
|
|
2264
|
-
children: /* @__PURE__ */ (0,
|
|
2712
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Icon, { name: icon, size: "small" })
|
|
2265
2713
|
}
|
|
2266
2714
|
),
|
|
2267
|
-
Boolean(label) === true && /* @__PURE__ */ (0,
|
|
2715
|
+
Boolean(label) === true && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "whitespace-nowrap", children: label })
|
|
2268
2716
|
]
|
|
2269
2717
|
}
|
|
2270
2718
|
);
|
|
2271
2719
|
};
|
|
2272
2720
|
|
|
2273
2721
|
// src/segmented-control/segmented-control.tsx
|
|
2274
|
-
var
|
|
2722
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2275
2723
|
var SegmentedControl = ({
|
|
2276
2724
|
children,
|
|
2277
2725
|
value,
|
|
@@ -2281,15 +2729,15 @@ var SegmentedControl = ({
|
|
|
2281
2729
|
"aria-label": ariaLabel,
|
|
2282
2730
|
...rest
|
|
2283
2731
|
}) => {
|
|
2284
|
-
const containerRef = (0,
|
|
2285
|
-
const itemIds =
|
|
2286
|
-
if (!
|
|
2732
|
+
const containerRef = (0, import_react42.useRef)(null);
|
|
2733
|
+
const itemIds = import_react42.Children.toArray(children).filter((child) => {
|
|
2734
|
+
if (!import_react42.default.isValidElement(child) || typeof child.props !== "object" || child.props === null || !("value" in child.props)) {
|
|
2287
2735
|
return false;
|
|
2288
2736
|
}
|
|
2289
2737
|
const props = child.props;
|
|
2290
2738
|
return props.isDisabled !== true;
|
|
2291
2739
|
}).map((child) => child.props.value);
|
|
2292
|
-
const childrenCount =
|
|
2740
|
+
const childrenCount = import_react42.Children.count(children);
|
|
2293
2741
|
const containerStyle = { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` };
|
|
2294
2742
|
const {
|
|
2295
2743
|
focusedValue,
|
|
@@ -2316,7 +2764,7 @@ var SegmentedControl = ({
|
|
|
2316
2764
|
onBlur: handleBlurRovingFocus,
|
|
2317
2765
|
values: itemIds
|
|
2318
2766
|
};
|
|
2319
|
-
return /* @__PURE__ */ (0,
|
|
2767
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_jsx_runtime46.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(SegmentedControlContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
2320
2768
|
"div",
|
|
2321
2769
|
{
|
|
2322
2770
|
ref: containerRef,
|
|
@@ -2333,37 +2781,37 @@ var SegmentedControl = ({
|
|
|
2333
2781
|
SegmentedControl.Item = SegmentedControlItem;
|
|
2334
2782
|
|
|
2335
2783
|
// src/select-sort/select-sort.tsx
|
|
2336
|
-
var
|
|
2337
|
-
var
|
|
2338
|
-
var
|
|
2784
|
+
var import_component_theme18 = require("@zenkigen-inc/component-theme");
|
|
2785
|
+
var import_clsx33 = __toESM(require("clsx"));
|
|
2786
|
+
var import_react43 = require("react");
|
|
2339
2787
|
|
|
2340
2788
|
// src/select-sort/select-list.tsx
|
|
2341
|
-
var
|
|
2342
|
-
var
|
|
2789
|
+
var import_component_theme17 = require("@zenkigen-inc/component-theme");
|
|
2790
|
+
var import_clsx32 = __toESM(require("clsx"));
|
|
2343
2791
|
|
|
2344
2792
|
// src/select-sort/select-item.tsx
|
|
2345
|
-
var
|
|
2346
|
-
var
|
|
2347
|
-
var
|
|
2793
|
+
var import_component_theme16 = require("@zenkigen-inc/component-theme");
|
|
2794
|
+
var import_clsx31 = __toESM(require("clsx"));
|
|
2795
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2348
2796
|
function SelectItem2({ children, isSortKey, onClickItem }) {
|
|
2349
|
-
const itemClasses = (0,
|
|
2797
|
+
const itemClasses = (0, import_clsx31.default)(
|
|
2350
2798
|
"typography-label14regular flex h-8 w-full items-center px-3 hover:bg-hover02 active:bg-active02",
|
|
2351
|
-
|
|
2799
|
+
import_component_theme16.focusVisible.inset,
|
|
2352
2800
|
{
|
|
2353
2801
|
"bg-selectedUi fill-interactive01 text-interactive01": isSortKey,
|
|
2354
2802
|
"bg-uiBackground01 fill-icon01 text-interactive02": !isSortKey
|
|
2355
2803
|
}
|
|
2356
2804
|
);
|
|
2357
|
-
return /* @__PURE__ */ (0,
|
|
2358
|
-
/* @__PURE__ */ (0,
|
|
2359
|
-
isSortKey && /* @__PURE__ */ (0,
|
|
2805
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("li", { className: "flex w-full items-center", onClick: onClickItem, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("button", { className: itemClasses, type: "button", children: [
|
|
2806
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: "ml-1 mr-6", children }),
|
|
2807
|
+
isSortKey && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Icon, { name: "check", size: "small" }) })
|
|
2360
2808
|
] }) });
|
|
2361
2809
|
}
|
|
2362
2810
|
|
|
2363
2811
|
// src/select-sort/select-list.tsx
|
|
2364
|
-
var
|
|
2812
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2365
2813
|
function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect }) {
|
|
2366
|
-
const listClasses = (0,
|
|
2814
|
+
const listClasses = (0, import_clsx32.default)(
|
|
2367
2815
|
"absolute z-dropdown w-max overflow-y-auto rounded bg-uiBackground01 py-2 shadow-floatingShadow",
|
|
2368
2816
|
{
|
|
2369
2817
|
"top-7": size === "x-small" || size === "small",
|
|
@@ -2372,19 +2820,19 @@ function SelectList2({ size, variant, sortOrder, onClickItem, onClickDeselect })
|
|
|
2372
2820
|
"border-solid border border-uiBorder01": variant === "outline"
|
|
2373
2821
|
}
|
|
2374
2822
|
);
|
|
2375
|
-
const deselectButtonClasses = (0,
|
|
2823
|
+
const deselectButtonClasses = (0, import_clsx32.default)(
|
|
2376
2824
|
"typography-label14regular flex h-8 w-full items-center px-3 text-interactive02 hover:bg-hover02 active:bg-active02",
|
|
2377
|
-
|
|
2825
|
+
import_component_theme17.focusVisible.inset
|
|
2378
2826
|
);
|
|
2379
|
-
return /* @__PURE__ */ (0,
|
|
2380
|
-
/* @__PURE__ */ (0,
|
|
2381
|
-
/* @__PURE__ */ (0,
|
|
2382
|
-
sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0,
|
|
2827
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("ul", { className: listClasses, children: [
|
|
2828
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(SelectItem2, { isSortKey: sortOrder === "ascend", onClickItem: () => onClickItem("ascend"), children: "\u6607\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(SelectItem2, { isSortKey: sortOrder === "descend", onClickItem: () => onClickItem("descend"), children: "\u964D\u9806\u3067\u4E26\u3073\u66FF\u3048" }),
|
|
2830
|
+
sortOrder !== null && onClickDeselect && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("button", { className: deselectButtonClasses, type: "button", onClick: onClickDeselect, children: "\u9078\u629E\u89E3\u9664" }) })
|
|
2383
2831
|
] });
|
|
2384
2832
|
}
|
|
2385
2833
|
|
|
2386
2834
|
// src/select-sort/select-sort.tsx
|
|
2387
|
-
var
|
|
2835
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2388
2836
|
function SelectSort({
|
|
2389
2837
|
size = "medium",
|
|
2390
2838
|
variant = "outline",
|
|
@@ -2396,54 +2844,54 @@ function SelectSort({
|
|
|
2396
2844
|
onChange,
|
|
2397
2845
|
onClickDeselect
|
|
2398
2846
|
}) {
|
|
2399
|
-
const [isOptionListOpen, setIsOptionListOpen] = (0,
|
|
2400
|
-
const targetRef = (0,
|
|
2847
|
+
const [isOptionListOpen, setIsOptionListOpen] = (0, import_react43.useState)(false);
|
|
2848
|
+
const targetRef = (0, import_react43.useRef)(null);
|
|
2401
2849
|
useOutsideClick(targetRef, () => setIsOptionListOpen(false));
|
|
2402
2850
|
const handleClickToggle = () => setIsOptionListOpen((prev) => !prev);
|
|
2403
|
-
const handleClickItem = (0,
|
|
2851
|
+
const handleClickItem = (0, import_react43.useCallback)(
|
|
2404
2852
|
(value) => {
|
|
2405
2853
|
onChange?.(value);
|
|
2406
2854
|
setIsOptionListOpen(false);
|
|
2407
2855
|
},
|
|
2408
2856
|
[onChange]
|
|
2409
2857
|
);
|
|
2410
|
-
const wrapperClasses = (0,
|
|
2858
|
+
const wrapperClasses = (0, import_clsx33.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
2411
2859
|
"h-6": size === "x-small" || size === "small",
|
|
2412
2860
|
"h-8": size === "medium",
|
|
2413
2861
|
"h-10": size === "large",
|
|
2414
2862
|
"cursor-not-allowed": isDisabled
|
|
2415
2863
|
});
|
|
2416
|
-
const buttonClasses = (0,
|
|
2864
|
+
const buttonClasses = (0, import_clsx33.default)(
|
|
2417
2865
|
"flex size-full items-center rounded",
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2866
|
+
import_component_theme18.buttonColors[variant].hover,
|
|
2867
|
+
import_component_theme18.buttonColors[variant].active,
|
|
2868
|
+
import_component_theme18.buttonColors[variant].disabled,
|
|
2869
|
+
import_component_theme18.focusVisible.normal,
|
|
2422
2870
|
{
|
|
2423
|
-
[
|
|
2424
|
-
[
|
|
2871
|
+
[import_component_theme18.buttonColors[variant].selected]: isSortKey,
|
|
2872
|
+
[import_component_theme18.buttonColors[variant].base]: !isSortKey,
|
|
2425
2873
|
"px-2": size === "x-small" || size === "small",
|
|
2426
2874
|
"px-4": size === "medium" || size === "large",
|
|
2427
2875
|
"pointer-events-none": isDisabled
|
|
2428
2876
|
}
|
|
2429
2877
|
);
|
|
2430
|
-
const labelClasses = (0,
|
|
2878
|
+
const labelClasses = (0, import_clsx33.default)("truncate", {
|
|
2431
2879
|
"typography-label12regular": size === "x-small",
|
|
2432
2880
|
"typography-label14regular": size === "small" || size === "medium",
|
|
2433
2881
|
"typography-label16regular": size === "large",
|
|
2434
2882
|
"mr-1": size === "x-small",
|
|
2435
2883
|
"mr-2": size !== "x-small"
|
|
2436
2884
|
});
|
|
2437
|
-
return /* @__PURE__ */ (0,
|
|
2438
|
-
/* @__PURE__ */ (0,
|
|
2439
|
-
/* @__PURE__ */ (0,
|
|
2440
|
-
/* @__PURE__ */ (0,
|
|
2885
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: wrapperClasses, style: { width }, ref: targetRef, children: [
|
|
2886
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("button", { className: buttonClasses, type: "button", onClick: handleClickToggle, disabled: isDisabled, children: [
|
|
2887
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: labelClasses, children: label }),
|
|
2888
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "ml-auto flex items-center", children: isSortKey ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2441
2889
|
Icon,
|
|
2442
2890
|
{
|
|
2443
2891
|
name: sortOrder === "ascend" ? "arrow-up" : "arrow-down",
|
|
2444
2892
|
size: size === "large" ? "medium" : "small"
|
|
2445
2893
|
}
|
|
2446
|
-
) : /* @__PURE__ */ (0,
|
|
2894
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2447
2895
|
Icon,
|
|
2448
2896
|
{
|
|
2449
2897
|
name: isOptionListOpen ? "angle-small-up" : "angle-small-down",
|
|
@@ -2451,7 +2899,7 @@ function SelectSort({
|
|
|
2451
2899
|
}
|
|
2452
2900
|
) })
|
|
2453
2901
|
] }),
|
|
2454
|
-
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0,
|
|
2902
|
+
isOptionListOpen && !isDisabled && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2455
2903
|
SelectList2,
|
|
2456
2904
|
{
|
|
2457
2905
|
size,
|
|
@@ -2465,10 +2913,10 @@ function SelectSort({
|
|
|
2465
2913
|
}
|
|
2466
2914
|
|
|
2467
2915
|
// src/sort-button/sort-button.tsx
|
|
2468
|
-
var
|
|
2469
|
-
var
|
|
2470
|
-
var
|
|
2471
|
-
var
|
|
2916
|
+
var import_component_theme19 = require("@zenkigen-inc/component-theme");
|
|
2917
|
+
var import_clsx34 = __toESM(require("clsx"));
|
|
2918
|
+
var import_react44 = require("react");
|
|
2919
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
2472
2920
|
function SortButton({
|
|
2473
2921
|
size = "medium",
|
|
2474
2922
|
width,
|
|
@@ -2479,7 +2927,7 @@ function SortButton({
|
|
|
2479
2927
|
"aria-label": ariaLabel,
|
|
2480
2928
|
...rest
|
|
2481
2929
|
}) {
|
|
2482
|
-
const handleClick = (0,
|
|
2930
|
+
const handleClick = (0, import_react44.useCallback)(() => {
|
|
2483
2931
|
if (isDisabled || !onClick) return;
|
|
2484
2932
|
onClick();
|
|
2485
2933
|
}, [isDisabled, onClick]);
|
|
@@ -2488,36 +2936,36 @@ function SortButton({
|
|
|
2488
2936
|
if (sortOrder === "descend") return "arrow-down";
|
|
2489
2937
|
return "angle-small-down";
|
|
2490
2938
|
};
|
|
2491
|
-
const wrapperClasses = (0,
|
|
2939
|
+
const wrapperClasses = (0, import_clsx34.default)("relative flex shrink-0 items-center gap-1 rounded", {
|
|
2492
2940
|
"h-6": size === "x-small" || size === "small",
|
|
2493
2941
|
"h-8": size === "medium",
|
|
2494
2942
|
"h-10": size === "large",
|
|
2495
2943
|
"cursor-not-allowed": isDisabled
|
|
2496
2944
|
});
|
|
2497
|
-
const buttonClasses = (0,
|
|
2945
|
+
const buttonClasses = (0, import_clsx34.default)(
|
|
2498
2946
|
"flex size-full items-center rounded",
|
|
2499
|
-
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2947
|
+
import_component_theme19.buttonColors.text.hover,
|
|
2948
|
+
import_component_theme19.buttonColors.text.active,
|
|
2949
|
+
import_component_theme19.buttonColors.text.disabled,
|
|
2950
|
+
import_component_theme19.focusVisible.normal,
|
|
2503
2951
|
{
|
|
2504
|
-
[
|
|
2952
|
+
[import_component_theme19.buttonColors.text.selected]: !isDisabled && sortOrder !== null,
|
|
2505
2953
|
// ソート状態時は選択状態のスタイル
|
|
2506
|
-
[
|
|
2954
|
+
[import_component_theme19.buttonColors.text.base]: sortOrder === null,
|
|
2507
2955
|
// ソートなし時は通常のスタイル
|
|
2508
2956
|
"px-2": size === "x-small" || size === "small",
|
|
2509
2957
|
"px-4": size === "medium" || size === "large",
|
|
2510
2958
|
"pointer-events-none": isDisabled
|
|
2511
2959
|
}
|
|
2512
2960
|
);
|
|
2513
|
-
const labelClasses = (0,
|
|
2961
|
+
const labelClasses = (0, import_clsx34.default)("truncate", {
|
|
2514
2962
|
"typography-label12regular": size === "x-small",
|
|
2515
2963
|
"typography-label14regular": size === "small" || size === "medium",
|
|
2516
2964
|
"typography-label16regular": size === "large",
|
|
2517
2965
|
"mr-1": size === "x-small",
|
|
2518
2966
|
"mr-2": size !== "x-small"
|
|
2519
2967
|
});
|
|
2520
|
-
return /* @__PURE__ */ (0,
|
|
2968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: wrapperClasses, style: { width }, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(
|
|
2521
2969
|
"button",
|
|
2522
2970
|
{
|
|
2523
2971
|
className: buttonClasses,
|
|
@@ -2528,22 +2976,22 @@ function SortButton({
|
|
|
2528
2976
|
"aria-label": ariaLabel,
|
|
2529
2977
|
"aria-disabled": isDisabled,
|
|
2530
2978
|
children: [
|
|
2531
|
-
/* @__PURE__ */ (0,
|
|
2532
|
-
/* @__PURE__ */ (0,
|
|
2979
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: labelClasses, children: label }),
|
|
2980
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon, { name: getIconName(), size: size === "large" ? "medium" : "small" }) })
|
|
2533
2981
|
]
|
|
2534
2982
|
}
|
|
2535
2983
|
) });
|
|
2536
2984
|
}
|
|
2537
2985
|
|
|
2538
2986
|
// src/tab/tab.tsx
|
|
2539
|
-
var
|
|
2540
|
-
var
|
|
2987
|
+
var import_clsx36 = require("clsx");
|
|
2988
|
+
var import_react45 = require("react");
|
|
2541
2989
|
|
|
2542
2990
|
// src/tab/tab-item.tsx
|
|
2543
|
-
var
|
|
2544
|
-
var
|
|
2991
|
+
var import_clsx35 = require("clsx");
|
|
2992
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
2545
2993
|
var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
2546
|
-
const classes = (0,
|
|
2994
|
+
const classes = (0, import_clsx35.clsx)(
|
|
2547
2995
|
"group relative z-0 flex items-center justify-center gap-1 py-2 leading-[24px] before:absolute before:inset-x-0 before:bottom-0 before:h-[2px] hover:text-interactive01 disabled:pointer-events-none disabled:text-disabled01",
|
|
2548
2996
|
{
|
|
2549
2997
|
"typography-label14regular text-interactive02": !isSelected,
|
|
@@ -2551,12 +2999,12 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
2551
2999
|
"before:bg-interactive01 hover:before:bg-interactive01 pointer-events-none": isSelected
|
|
2552
3000
|
}
|
|
2553
3001
|
);
|
|
2554
|
-
const iconWrapperClasses = (0,
|
|
3002
|
+
const iconWrapperClasses = (0, import_clsx35.clsx)("flex shrink-0 items-center", {
|
|
2555
3003
|
"fill-disabled01": isDisabled,
|
|
2556
3004
|
"fill-interactive01": !isDisabled && isSelected,
|
|
2557
3005
|
"fill-icon01 group-hover:fill-interactive01": !isDisabled && !isSelected
|
|
2558
3006
|
});
|
|
2559
|
-
return /* @__PURE__ */ (0,
|
|
3007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
2560
3008
|
"button",
|
|
2561
3009
|
{
|
|
2562
3010
|
type: "button",
|
|
@@ -2566,7 +3014,7 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
2566
3014
|
disabled: isDisabled,
|
|
2567
3015
|
onClick: () => props.onClick(props.id),
|
|
2568
3016
|
children: [
|
|
2569
|
-
icon != null && /* @__PURE__ */ (0,
|
|
3017
|
+
icon != null && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: iconWrapperClasses, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Icon, { name: icon, size: "small" }) }),
|
|
2570
3018
|
props.children
|
|
2571
3019
|
]
|
|
2572
3020
|
}
|
|
@@ -2574,39 +3022,39 @@ var TabItem = ({ isSelected = false, isDisabled = false, icon, ...props }) => {
|
|
|
2574
3022
|
};
|
|
2575
3023
|
|
|
2576
3024
|
// src/tab/tab.tsx
|
|
2577
|
-
var
|
|
3025
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2578
3026
|
function Tab({ children, layout = "auto" }) {
|
|
2579
|
-
const childrenCount =
|
|
3027
|
+
const childrenCount = import_react45.Children.count(children);
|
|
2580
3028
|
const containerStyle = layout === "equal" ? { gridTemplateColumns: `repeat(${childrenCount}, minmax(0,1fr))` } : {};
|
|
2581
|
-
const containerClasses = (0,
|
|
3029
|
+
const containerClasses = (0, import_clsx36.clsx)(
|
|
2582
3030
|
"relative gap-4 px-6 before:absolute before:inset-x-0 before:bottom-0 before:h-px before:bg-uiBorder01",
|
|
2583
3031
|
{
|
|
2584
3032
|
flex: layout === "auto",
|
|
2585
3033
|
grid: layout === "equal"
|
|
2586
3034
|
}
|
|
2587
3035
|
);
|
|
2588
|
-
return /* @__PURE__ */ (0,
|
|
3036
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { role: "tablist", className: containerClasses, style: containerStyle, children });
|
|
2589
3037
|
}
|
|
2590
3038
|
Tab.Item = TabItem;
|
|
2591
3039
|
|
|
2592
3040
|
// src/table/table-cell.tsx
|
|
2593
|
-
var
|
|
2594
|
-
var
|
|
3041
|
+
var import_clsx37 = __toESM(require("clsx"));
|
|
3042
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2595
3043
|
function TableCell({ children, className, isHeader = false }) {
|
|
2596
|
-
const classes = (0,
|
|
2597
|
-
return /* @__PURE__ */ (0,
|
|
3044
|
+
const classes = (0, import_clsx37.default)("border-b border-uiBorder01", { "sticky top-0 z-10 bg-white": isHeader }, className);
|
|
3045
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { className: classes, children });
|
|
2598
3046
|
}
|
|
2599
3047
|
|
|
2600
3048
|
// src/table/table-row.tsx
|
|
2601
|
-
var
|
|
2602
|
-
var
|
|
3049
|
+
var import_clsx38 = __toESM(require("clsx"));
|
|
3050
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2603
3051
|
function TableRow({ children, isHoverBackgroundVisible = false }) {
|
|
2604
|
-
const rowClasses = (0,
|
|
2605
|
-
return /* @__PURE__ */ (0,
|
|
3052
|
+
const rowClasses = (0, import_clsx38.default)("contents", isHoverBackgroundVisible && "[&:hover>div]:bg-hoverUi02");
|
|
3053
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("div", { className: rowClasses, children });
|
|
2606
3054
|
}
|
|
2607
3055
|
|
|
2608
3056
|
// src/table/table.tsx
|
|
2609
|
-
var
|
|
3057
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
2610
3058
|
function Table({
|
|
2611
3059
|
width,
|
|
2612
3060
|
templateRows,
|
|
@@ -2615,7 +3063,7 @@ function Table({
|
|
|
2615
3063
|
autoRows,
|
|
2616
3064
|
children
|
|
2617
3065
|
}) {
|
|
2618
|
-
return /* @__PURE__ */ (0,
|
|
3066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
|
|
2619
3067
|
"div",
|
|
2620
3068
|
{
|
|
2621
3069
|
className: "grid",
|
|
@@ -2634,23 +3082,23 @@ Table.Row = TableRow;
|
|
|
2634
3082
|
Table.Cell = TableCell;
|
|
2635
3083
|
|
|
2636
3084
|
// src/tag/tag.tsx
|
|
2637
|
-
var
|
|
2638
|
-
var
|
|
3085
|
+
var import_component_theme21 = require("@zenkigen-inc/component-theme");
|
|
3086
|
+
var import_clsx40 = __toESM(require("clsx"));
|
|
2639
3087
|
|
|
2640
3088
|
// src/tag/delete-icon.tsx
|
|
2641
|
-
var
|
|
2642
|
-
var
|
|
2643
|
-
var
|
|
3089
|
+
var import_component_theme20 = require("@zenkigen-inc/component-theme");
|
|
3090
|
+
var import_clsx39 = __toESM(require("clsx"));
|
|
3091
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
2644
3092
|
var DeleteIcon = ({ color, variant, onClick }) => {
|
|
2645
|
-
const deleteButtonClasses = (0,
|
|
3093
|
+
const deleteButtonClasses = (0, import_clsx39.default)(
|
|
2646
3094
|
"group ml-2 size-[14px] rounded-full p-0.5 hover:cursor-pointer hover:bg-iconOnColor focus-visible:bg-iconOnColor",
|
|
2647
|
-
|
|
3095
|
+
import_component_theme20.focusVisible.normal
|
|
2648
3096
|
);
|
|
2649
|
-
const deletePathClasses = (0,
|
|
3097
|
+
const deletePathClasses = (0, import_clsx39.default)({
|
|
2650
3098
|
"fill-interactive02": color === "gray" || variant === "light",
|
|
2651
3099
|
"group-hover:fill-interactive02 group-focus-visible:fill-interactive02 fill-iconOnColor": color !== "gray"
|
|
2652
3100
|
});
|
|
2653
|
-
return /* @__PURE__ */ (0,
|
|
3101
|
+
return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("button", { type: "button", className: deleteButtonClasses, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
|
|
2654
3102
|
"path",
|
|
2655
3103
|
{
|
|
2656
3104
|
fillRule: "evenodd",
|
|
@@ -2662,11 +3110,11 @@ var DeleteIcon = ({ color, variant, onClick }) => {
|
|
|
2662
3110
|
};
|
|
2663
3111
|
|
|
2664
3112
|
// src/tag/tag.tsx
|
|
2665
|
-
var
|
|
3113
|
+
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
2666
3114
|
function Tag({ id, children, color, variant = "normal", size = "medium", isEditable, onDelete }) {
|
|
2667
|
-
const wrapperClasses = (0,
|
|
2668
|
-
[
|
|
2669
|
-
[
|
|
3115
|
+
const wrapperClasses = (0, import_clsx40.default)("flex", "items-center", "justify-center", {
|
|
3116
|
+
[import_component_theme21.tagColors[color]]: variant === "normal",
|
|
3117
|
+
[import_component_theme21.tagLightColors[color]]: variant === "light",
|
|
2670
3118
|
"h-[14px] typography-label11regular": !isEditable && size === "x-small",
|
|
2671
3119
|
"h-4 typography-label12regular": !isEditable && size === "small",
|
|
2672
3120
|
"h-[18px] typography-label14regular": !isEditable && size === "medium",
|
|
@@ -2676,21 +3124,21 @@ function Tag({ id, children, color, variant = "normal", size = "medium", isEdita
|
|
|
2676
3124
|
"py-0.5 px-1": !isEditable,
|
|
2677
3125
|
"py-1 px-2": isEditable
|
|
2678
3126
|
});
|
|
2679
|
-
return /* @__PURE__ */ (0,
|
|
3127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: wrapperClasses, children: [
|
|
2680
3128
|
children,
|
|
2681
|
-
isEditable ? /* @__PURE__ */ (0,
|
|
3129
|
+
isEditable ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(DeleteIcon, { onClick: () => onDelete(id), color, variant }) : null
|
|
2682
3130
|
] });
|
|
2683
3131
|
}
|
|
2684
3132
|
|
|
2685
3133
|
// src/text-area/text-area.tsx
|
|
2686
|
-
var
|
|
2687
|
-
var
|
|
3134
|
+
var import_clsx43 = require("clsx");
|
|
3135
|
+
var import_react49 = require("react");
|
|
2688
3136
|
|
|
2689
3137
|
// src/text-area/text-area-context.tsx
|
|
2690
|
-
var
|
|
2691
|
-
var TextAreaCompoundContext = (0,
|
|
3138
|
+
var import_react46 = require("react");
|
|
3139
|
+
var TextAreaCompoundContext = (0, import_react46.createContext)(null);
|
|
2692
3140
|
var useTextAreaCompoundContext = (componentName) => {
|
|
2693
|
-
const context = (0,
|
|
3141
|
+
const context = (0, import_react46.useContext)(TextAreaCompoundContext);
|
|
2694
3142
|
if (context == null) {
|
|
2695
3143
|
throw new Error(`${componentName} \u3092\u4F7F\u7528\u3059\u308B\u306B\u306F TextArea \u306E\u5B50\u8981\u7D20\u3068\u3057\u3066\u914D\u7F6E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308B\u3002`);
|
|
2696
3144
|
}
|
|
@@ -2698,10 +3146,10 @@ var useTextAreaCompoundContext = (componentName) => {
|
|
|
2698
3146
|
};
|
|
2699
3147
|
|
|
2700
3148
|
// src/text-area/text-area-error-message.tsx
|
|
2701
|
-
var
|
|
2702
|
-
var
|
|
2703
|
-
var
|
|
2704
|
-
var TextAreaErrorMessage = (0,
|
|
3149
|
+
var import_clsx41 = require("clsx");
|
|
3150
|
+
var import_react47 = require("react");
|
|
3151
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
3152
|
+
var TextAreaErrorMessage = (0, import_react47.forwardRef)(
|
|
2705
3153
|
({ "aria-live": ariaLive = "assertive", ...props }, ref) => {
|
|
2706
3154
|
const { textAreaProps } = useTextAreaCompoundContext("TextArea.ErrorMessage");
|
|
2707
3155
|
const typographyClass = textAreaProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
@@ -2709,26 +3157,26 @@ var TextAreaErrorMessage = (0, import_react44.forwardRef)(
|
|
|
2709
3157
|
if (!shouldRender) {
|
|
2710
3158
|
return null;
|
|
2711
3159
|
}
|
|
2712
|
-
const errorMessageClassName = (0,
|
|
2713
|
-
return /* @__PURE__ */ (0,
|
|
3160
|
+
const errorMessageClassName = (0, import_clsx41.clsx)(typographyClass, "text-supportError");
|
|
3161
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("div", { ref, className: errorMessageClassName, "aria-live": ariaLive, ...props });
|
|
2714
3162
|
}
|
|
2715
3163
|
);
|
|
2716
3164
|
TextAreaErrorMessage.displayName = "TextArea.ErrorMessage";
|
|
2717
3165
|
|
|
2718
3166
|
// src/text-area/text-area-helper-message.tsx
|
|
2719
|
-
var
|
|
2720
|
-
var
|
|
2721
|
-
var
|
|
2722
|
-
var TextAreaHelperMessage = (0,
|
|
3167
|
+
var import_clsx42 = require("clsx");
|
|
3168
|
+
var import_react48 = require("react");
|
|
3169
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
3170
|
+
var TextAreaHelperMessage = (0, import_react48.forwardRef)((props, ref) => {
|
|
2723
3171
|
const { textAreaProps } = useTextAreaCompoundContext("TextArea.HelperMessage");
|
|
2724
3172
|
const typographyClass = textAreaProps.size === "large" ? "typography-label12regular" : "typography-label11regular";
|
|
2725
|
-
const helperMessageClassName = (0,
|
|
2726
|
-
return /* @__PURE__ */ (0,
|
|
3173
|
+
const helperMessageClassName = (0, import_clsx42.clsx)(typographyClass, "text-text02");
|
|
3174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { ref, className: helperMessageClassName, ...props });
|
|
2727
3175
|
});
|
|
2728
3176
|
TextAreaHelperMessage.displayName = "TextArea.HelperMessage";
|
|
2729
3177
|
|
|
2730
3178
|
// src/text-area/text-area.tsx
|
|
2731
|
-
var
|
|
3179
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2732
3180
|
function TextAreaInner({
|
|
2733
3181
|
size = "medium",
|
|
2734
3182
|
isResizable = false,
|
|
@@ -2741,15 +3189,15 @@ function TextAreaInner({
|
|
|
2741
3189
|
className,
|
|
2742
3190
|
...props
|
|
2743
3191
|
}, ref) {
|
|
2744
|
-
const autoGeneratedId = (0,
|
|
2745
|
-
const textAreaPropsForContext = (0,
|
|
3192
|
+
const autoGeneratedId = (0, import_react49.useId)();
|
|
3193
|
+
const textAreaPropsForContext = (0, import_react49.useMemo)(
|
|
2746
3194
|
() => ({
|
|
2747
3195
|
size,
|
|
2748
3196
|
isError
|
|
2749
3197
|
}),
|
|
2750
3198
|
[size, isError]
|
|
2751
3199
|
);
|
|
2752
|
-
const contextValue = (0,
|
|
3200
|
+
const contextValue = (0, import_react49.useMemo)(
|
|
2753
3201
|
() => ({
|
|
2754
3202
|
textAreaProps: textAreaPropsForContext,
|
|
2755
3203
|
forwardedRef: ref
|
|
@@ -2759,21 +3207,21 @@ function TextAreaInner({
|
|
|
2759
3207
|
const helperMessageIds = [];
|
|
2760
3208
|
const errorIds = [];
|
|
2761
3209
|
const describedByBaseId = props.id ?? autoGeneratedId;
|
|
2762
|
-
const enhancedChildren =
|
|
2763
|
-
if (!(0,
|
|
3210
|
+
const enhancedChildren = import_react49.Children.map(children, (child) => {
|
|
3211
|
+
if (!(0, import_react49.isValidElement)(child)) {
|
|
2764
3212
|
return child;
|
|
2765
3213
|
}
|
|
2766
3214
|
if (child.type === TextAreaHelperMessage) {
|
|
2767
3215
|
const helperChild = child;
|
|
2768
3216
|
const assignedId = helperChild.props.id ?? `${describedByBaseId}-helper-${helperMessageIds.length + 1}`;
|
|
2769
3217
|
helperMessageIds.push(assignedId);
|
|
2770
|
-
return (0,
|
|
3218
|
+
return (0, import_react49.cloneElement)(helperChild, { id: assignedId });
|
|
2771
3219
|
}
|
|
2772
3220
|
if (child.type === TextAreaErrorMessage && isError) {
|
|
2773
3221
|
const errorChild = child;
|
|
2774
3222
|
const assignedId = errorChild.props.id ?? `${describedByBaseId}-error-${errorIds.length + 1}`;
|
|
2775
3223
|
errorIds.push(assignedId);
|
|
2776
|
-
return (0,
|
|
3224
|
+
return (0, import_react49.cloneElement)(errorChild, { id: assignedId });
|
|
2777
3225
|
}
|
|
2778
3226
|
return child;
|
|
2779
3227
|
});
|
|
@@ -2793,7 +3241,7 @@ function TextAreaInner({
|
|
|
2793
3241
|
...describedByProps,
|
|
2794
3242
|
...ariaInvalidProps
|
|
2795
3243
|
};
|
|
2796
|
-
const textAreaWrapperClassName = (0,
|
|
3244
|
+
const textAreaWrapperClassName = (0, import_clsx43.clsx)(
|
|
2797
3245
|
"box-border flex w-full overflow-hidden rounded border",
|
|
2798
3246
|
{
|
|
2799
3247
|
"border-supportError": isError && !disabled,
|
|
@@ -2805,7 +3253,7 @@ function TextAreaInner({
|
|
|
2805
3253
|
},
|
|
2806
3254
|
className
|
|
2807
3255
|
);
|
|
2808
|
-
const textAreaClassName = (0,
|
|
3256
|
+
const textAreaClassName = (0, import_clsx43.clsx)(
|
|
2809
3257
|
"w-full border-none bg-uiBackground01 outline-0 placeholder:text-textPlaceholder disabled:text-textPlaceholder",
|
|
2810
3258
|
{
|
|
2811
3259
|
"typography-body14regular px-2 py-2": size === "medium",
|
|
@@ -2818,7 +3266,7 @@ function TextAreaInner({
|
|
|
2818
3266
|
}
|
|
2819
3267
|
);
|
|
2820
3268
|
const hasHeight = height != null && String(height).trim().length > 0;
|
|
2821
|
-
const textAreaElement = /* @__PURE__ */ (0,
|
|
3269
|
+
const textAreaElement = /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2822
3270
|
"div",
|
|
2823
3271
|
{
|
|
2824
3272
|
className: textAreaWrapperClassName,
|
|
@@ -2828,7 +3276,7 @@ function TextAreaInner({
|
|
|
2828
3276
|
...!autoHeight && hasHeight ? { height } : {},
|
|
2829
3277
|
...autoHeight && hasHeight ? { minHeight: height } : {}
|
|
2830
3278
|
},
|
|
2831
|
-
children: /* @__PURE__ */ (0,
|
|
3279
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2832
3280
|
"textarea",
|
|
2833
3281
|
{
|
|
2834
3282
|
ref,
|
|
@@ -2843,12 +3291,12 @@ function TextAreaInner({
|
|
|
2843
3291
|
)
|
|
2844
3292
|
}
|
|
2845
3293
|
);
|
|
2846
|
-
const stackedChildren = enhancedChildren == null ? [] :
|
|
3294
|
+
const stackedChildren = enhancedChildren == null ? [] : import_react49.Children.toArray(enhancedChildren);
|
|
2847
3295
|
const hasMessageChildren = stackedChildren.length > 0;
|
|
2848
3296
|
if (!hasMessageChildren) {
|
|
2849
|
-
return /* @__PURE__ */ (0,
|
|
3297
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: textAreaElement });
|
|
2850
3298
|
}
|
|
2851
|
-
return /* @__PURE__ */ (0,
|
|
3299
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(TextAreaCompoundContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col gap-2", children: [
|
|
2852
3300
|
textAreaElement,
|
|
2853
3301
|
stackedChildren
|
|
2854
3302
|
] }) });
|
|
@@ -2859,15 +3307,15 @@ var attachStatics2 = (component) => {
|
|
|
2859
3307
|
component.displayName = "TextArea";
|
|
2860
3308
|
return component;
|
|
2861
3309
|
};
|
|
2862
|
-
var TextAreaBase = (0,
|
|
3310
|
+
var TextAreaBase = (0, import_react49.forwardRef)(function TextAreaBase2(props, ref) {
|
|
2863
3311
|
return TextAreaInner(props, ref);
|
|
2864
3312
|
});
|
|
2865
3313
|
var TextArea = attachStatics2(TextAreaBase);
|
|
2866
3314
|
|
|
2867
3315
|
// src/toast/toast.tsx
|
|
2868
|
-
var
|
|
2869
|
-
var
|
|
2870
|
-
var
|
|
3316
|
+
var import_clsx44 = __toESM(require("clsx"));
|
|
3317
|
+
var import_react50 = require("react");
|
|
3318
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2871
3319
|
var CLOSE_TIME_MSEC = 5e3;
|
|
2872
3320
|
function Toast({
|
|
2873
3321
|
state = "information",
|
|
@@ -2877,8 +3325,8 @@ function Toast({
|
|
|
2877
3325
|
children,
|
|
2878
3326
|
onClickClose
|
|
2879
3327
|
}) {
|
|
2880
|
-
const [isRemoving, setIsRemoving] = (0,
|
|
2881
|
-
const handleClose = (0,
|
|
3328
|
+
const [isRemoving, setIsRemoving] = (0, import_react50.useState)(false);
|
|
3329
|
+
const handleClose = (0, import_react50.useCallback)(() => {
|
|
2882
3330
|
if (isAnimation) {
|
|
2883
3331
|
setIsRemoving(true);
|
|
2884
3332
|
} else {
|
|
@@ -2886,17 +3334,17 @@ function Toast({
|
|
|
2886
3334
|
}
|
|
2887
3335
|
}, [isAnimation, onClickClose]);
|
|
2888
3336
|
const handleAnimationEnd = (e) => window.getComputedStyle(e.currentTarget).opacity === "0" && onClickClose();
|
|
2889
|
-
const wrapperClasses = (0,
|
|
3337
|
+
const wrapperClasses = (0, import_clsx44.default)("pointer-events-auto flex items-start gap-1 bg-white p-4 shadow-floatingShadow", {
|
|
2890
3338
|
["animate-toast-in"]: isAnimation && !isRemoving,
|
|
2891
3339
|
["animate-toast-out opacity-0"]: isAnimation && isRemoving
|
|
2892
3340
|
});
|
|
2893
|
-
const iconClasses = (0,
|
|
3341
|
+
const iconClasses = (0, import_clsx44.default)("flex items-center", {
|
|
2894
3342
|
"fill-supportSuccess": state === "success",
|
|
2895
3343
|
"fill-supportError": state === "error",
|
|
2896
3344
|
"fill-supportWarning": state === "warning",
|
|
2897
3345
|
"fill-supportInfo": state === "information"
|
|
2898
3346
|
});
|
|
2899
|
-
const textClasses = (0,
|
|
3347
|
+
const textClasses = (0, import_clsx44.default)("typography-body13regular flex-1 pt-[3px]", {
|
|
2900
3348
|
"text-supportError": state === "error",
|
|
2901
3349
|
"text-text01": state === "success" || state === "warning" || state === "information"
|
|
2902
3350
|
});
|
|
@@ -2906,7 +3354,7 @@ function Toast({
|
|
|
2906
3354
|
warning: "warning",
|
|
2907
3355
|
information: "information-filled"
|
|
2908
3356
|
};
|
|
2909
|
-
(0,
|
|
3357
|
+
(0, import_react50.useEffect)(() => {
|
|
2910
3358
|
const timer = window.setTimeout(() => {
|
|
2911
3359
|
if (isAutoClose) {
|
|
2912
3360
|
setIsRemoving(true);
|
|
@@ -2914,45 +3362,45 @@ function Toast({
|
|
|
2914
3362
|
}, CLOSE_TIME_MSEC);
|
|
2915
3363
|
return () => window.clearTimeout(timer);
|
|
2916
3364
|
}, [isAutoClose]);
|
|
2917
|
-
return /* @__PURE__ */ (0,
|
|
2918
|
-
/* @__PURE__ */ (0,
|
|
2919
|
-
/* @__PURE__ */ (0,
|
|
2920
|
-
/* @__PURE__ */ (0,
|
|
3365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: wrapperClasses, style: { width }, onAnimationEnd: handleAnimationEnd, children: [
|
|
3366
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: iconClasses, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: iconName[state] }) }),
|
|
3367
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("p", { className: textClasses, children }),
|
|
3368
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)(IconButton, { icon: "close", size: "medium", variant: "text", onClick: handleClose, isNoPadding: true })
|
|
2921
3369
|
] });
|
|
2922
3370
|
}
|
|
2923
3371
|
|
|
2924
3372
|
// src/toast/toast-provider.tsx
|
|
2925
|
-
var
|
|
3373
|
+
var import_react51 = require("react");
|
|
2926
3374
|
var import_react_dom3 = require("react-dom");
|
|
2927
|
-
var
|
|
2928
|
-
var ToastContext = (0,
|
|
3375
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
3376
|
+
var ToastContext = (0, import_react51.createContext)({});
|
|
2929
3377
|
var ToastProvider = ({ children }) => {
|
|
2930
|
-
const [isClientRender, setIsClientRender] = (0,
|
|
2931
|
-
const [toasts, setToasts] = (0,
|
|
2932
|
-
const addToast = (0,
|
|
3378
|
+
const [isClientRender, setIsClientRender] = (0, import_react51.useState)(false);
|
|
3379
|
+
const [toasts, setToasts] = (0, import_react51.useState)([]);
|
|
3380
|
+
const addToast = (0, import_react51.useCallback)(({ message, state }) => {
|
|
2933
3381
|
setToasts((prev) => [...prev, { id: Math.trunc(Math.random() * 1e5), message, state }]);
|
|
2934
3382
|
}, []);
|
|
2935
|
-
const removeToast = (0,
|
|
3383
|
+
const removeToast = (0, import_react51.useCallback)((id) => {
|
|
2936
3384
|
setToasts((prev) => prev.filter((snackbar) => snackbar.id !== id));
|
|
2937
3385
|
}, []);
|
|
2938
|
-
(0,
|
|
3386
|
+
(0, import_react51.useEffect)(() => {
|
|
2939
3387
|
setIsClientRender(true);
|
|
2940
3388
|
}, []);
|
|
2941
|
-
return /* @__PURE__ */ (0,
|
|
3389
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(ToastContext.Provider, { value: { addToast, removeToast }, children: [
|
|
2942
3390
|
children,
|
|
2943
3391
|
isClientRender && (0, import_react_dom3.createPortal)(
|
|
2944
|
-
/* @__PURE__ */ (0,
|
|
3392
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "pointer-events-none fixed bottom-0 left-0 z-toast mb-4 ml-4 flex w-full flex-col-reverse gap-[16px]", children: toasts.map(({ id, message, state }) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Toast, { state, isAutoClose: true, isAnimation: true, onClickClose: () => removeToast(id), width: 475, children: message }, id)) }),
|
|
2945
3393
|
document.body
|
|
2946
3394
|
)
|
|
2947
3395
|
] });
|
|
2948
3396
|
};
|
|
2949
3397
|
var useToast = () => {
|
|
2950
|
-
return (0,
|
|
3398
|
+
return (0, import_react51.useContext)(ToastContext);
|
|
2951
3399
|
};
|
|
2952
3400
|
|
|
2953
3401
|
// src/toggle/toggle.tsx
|
|
2954
|
-
var
|
|
2955
|
-
var
|
|
3402
|
+
var import_clsx45 = __toESM(require("clsx"));
|
|
3403
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
2956
3404
|
function Toggle({
|
|
2957
3405
|
id,
|
|
2958
3406
|
size = "medium",
|
|
@@ -2962,7 +3410,7 @@ function Toggle({
|
|
|
2962
3410
|
labelPosition = "right",
|
|
2963
3411
|
isDisabled = false
|
|
2964
3412
|
}) {
|
|
2965
|
-
const baseClasses = (0,
|
|
3413
|
+
const baseClasses = (0, import_clsx45.default)("relative flex items-center rounded-full", {
|
|
2966
3414
|
"bg-disabledOn": isDisabled && isChecked,
|
|
2967
3415
|
"bg-disabled01": isDisabled && !isChecked,
|
|
2968
3416
|
"bg-interactive01 peer-hover:bg-hover01": !isDisabled && isChecked,
|
|
@@ -2970,16 +3418,16 @@ function Toggle({
|
|
|
2970
3418
|
"w-8 h-4 px-[3px]": size === "small",
|
|
2971
3419
|
"w-12 h-6 px-1": size === "medium" || size === "large"
|
|
2972
3420
|
});
|
|
2973
|
-
const inputClasses = (0,
|
|
3421
|
+
const inputClasses = (0, import_clsx45.default)(
|
|
2974
3422
|
"peer absolute inset-0 z-[1] opacity-0",
|
|
2975
3423
|
isDisabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
2976
3424
|
);
|
|
2977
|
-
const indicatorClasses = (0,
|
|
3425
|
+
const indicatorClasses = (0, import_clsx45.default)("rounded-full bg-iconOnColor", {
|
|
2978
3426
|
"w-2.5 h-2.5": size === "small",
|
|
2979
3427
|
"w-4 h-4": size === "medium" || size === "large",
|
|
2980
3428
|
"ml-auto": isChecked
|
|
2981
3429
|
});
|
|
2982
|
-
const labelClasses = (0,
|
|
3430
|
+
const labelClasses = (0, import_clsx45.default)("break-all", {
|
|
2983
3431
|
"mr-2": labelPosition === "left",
|
|
2984
3432
|
"ml-2": labelPosition === "right",
|
|
2985
3433
|
"typography-label14regular": size === "small" || size === "medium",
|
|
@@ -2987,9 +3435,9 @@ function Toggle({
|
|
|
2987
3435
|
"pointer-events-none cursor-not-allowed text-disabled01": isDisabled,
|
|
2988
3436
|
"cursor-pointer text-text01": !isDisabled
|
|
2989
3437
|
});
|
|
2990
|
-
return /* @__PURE__ */ (0,
|
|
2991
|
-
label != null && labelPosition === "left" && /* @__PURE__ */ (0,
|
|
2992
|
-
/* @__PURE__ */ (0,
|
|
3438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "relative flex flex-[0_0_auto] items-center", children: [
|
|
3439
|
+
label != null && labelPosition === "left" && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("label", { htmlFor: id, className: labelClasses, children: label }),
|
|
3440
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
|
|
2993
3441
|
"input",
|
|
2994
3442
|
{
|
|
2995
3443
|
className: inputClasses,
|
|
@@ -3001,23 +3449,23 @@ function Toggle({
|
|
|
3001
3449
|
disabled: isDisabled
|
|
3002
3450
|
}
|
|
3003
3451
|
),
|
|
3004
|
-
/* @__PURE__ */ (0,
|
|
3005
|
-
label != null && labelPosition === "right" && /* @__PURE__ */ (0,
|
|
3452
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: baseClasses, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: indicatorClasses }) }),
|
|
3453
|
+
label != null && labelPosition === "right" && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("label", { htmlFor: id, className: labelClasses, children: label })
|
|
3006
3454
|
] });
|
|
3007
3455
|
}
|
|
3008
3456
|
|
|
3009
3457
|
// src/tooltip/tooltip.tsx
|
|
3010
|
-
var
|
|
3458
|
+
var import_react53 = require("react");
|
|
3011
3459
|
var import_react_dom4 = require("react-dom");
|
|
3012
3460
|
|
|
3013
3461
|
// src/tooltip/tooltip-content.tsx
|
|
3014
|
-
var
|
|
3462
|
+
var import_clsx47 = __toESM(require("clsx"));
|
|
3015
3463
|
|
|
3016
3464
|
// src/tooltip/tail-icon.tsx
|
|
3017
|
-
var
|
|
3018
|
-
var
|
|
3465
|
+
var import_clsx46 = __toESM(require("clsx"));
|
|
3466
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
3019
3467
|
var TailIcon = (props) => {
|
|
3020
|
-
const tailClasses = (0,
|
|
3468
|
+
const tailClasses = (0, import_clsx46.default)("absolute fill-uiBackgroundTooltip", {
|
|
3021
3469
|
"rotate-180": props.verticalPosition === "bottom",
|
|
3022
3470
|
"rotate-0": props.verticalPosition !== "bottom",
|
|
3023
3471
|
"-top-1": props.verticalPosition === "bottom" && props.size === "small",
|
|
@@ -3032,9 +3480,9 @@ var TailIcon = (props) => {
|
|
|
3032
3480
|
"left-1/2 -translate-x-2": props.horizontalAlign === "center" && props.size !== "small"
|
|
3033
3481
|
});
|
|
3034
3482
|
if (props.size === "small") {
|
|
3035
|
-
return /* @__PURE__ */ (0,
|
|
3483
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("svg", { className: tailClasses, width: "8", height: "4", viewBox: "0 0 8 4", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M4 4L0 0H8L4 4Z" }) });
|
|
3036
3484
|
} else {
|
|
3037
|
-
return /* @__PURE__ */ (0,
|
|
3485
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
3038
3486
|
"svg",
|
|
3039
3487
|
{
|
|
3040
3488
|
className: tailClasses,
|
|
@@ -3043,14 +3491,14 @@ var TailIcon = (props) => {
|
|
|
3043
3491
|
viewBox: "0 0 14 8",
|
|
3044
3492
|
fill: "none",
|
|
3045
3493
|
xmlns: "http://www.w3.org/2000/svg",
|
|
3046
|
-
children: /* @__PURE__ */ (0,
|
|
3494
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M7 8L0 0H14L7 8Z" })
|
|
3047
3495
|
}
|
|
3048
3496
|
);
|
|
3049
3497
|
}
|
|
3050
3498
|
};
|
|
3051
3499
|
|
|
3052
3500
|
// src/tooltip/tooltip-content.tsx
|
|
3053
|
-
var
|
|
3501
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
3054
3502
|
var TooltipContent = ({
|
|
3055
3503
|
content,
|
|
3056
3504
|
horizontalAlign,
|
|
@@ -3060,7 +3508,7 @@ var TooltipContent = ({
|
|
|
3060
3508
|
maxWidth,
|
|
3061
3509
|
isPortal = false
|
|
3062
3510
|
}) => {
|
|
3063
|
-
const tooltipWrapperClasses = (0,
|
|
3511
|
+
const tooltipWrapperClasses = (0, import_clsx47.default)("absolute z-tooltip m-auto flex", {
|
|
3064
3512
|
"top-0": !isPortal && verticalPosition === "top",
|
|
3065
3513
|
"bottom-0": !isPortal && verticalPosition === "bottom",
|
|
3066
3514
|
"justify-start": horizontalAlign === "left",
|
|
@@ -3069,7 +3517,7 @@ var TooltipContent = ({
|
|
|
3069
3517
|
"w-[24px]": size === "small",
|
|
3070
3518
|
"w-[46px]": size !== "small"
|
|
3071
3519
|
});
|
|
3072
|
-
const tooltipBodyClasses = (0,
|
|
3520
|
+
const tooltipBodyClasses = (0, import_clsx47.default)(
|
|
3073
3521
|
"absolute z-tooltip inline-block w-max rounded bg-uiBackgroundTooltip text-textOnColor",
|
|
3074
3522
|
{
|
|
3075
3523
|
"typography-body12regular": size === "small",
|
|
@@ -3086,7 +3534,7 @@ var TooltipContent = ({
|
|
|
3086
3534
|
transform: `translate(${tooltipPosition.translateX}, ${tooltipPosition.translateY})`,
|
|
3087
3535
|
...tooltipPosition
|
|
3088
3536
|
} : {};
|
|
3089
|
-
return /* @__PURE__ */ (0,
|
|
3537
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: tooltipWrapperClasses, style: tooltipWrapperStyle, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
|
|
3090
3538
|
"div",
|
|
3091
3539
|
{
|
|
3092
3540
|
className: tooltipBodyClasses,
|
|
@@ -3095,16 +3543,16 @@ var TooltipContent = ({
|
|
|
3095
3543
|
},
|
|
3096
3544
|
children: [
|
|
3097
3545
|
content,
|
|
3098
|
-
/* @__PURE__ */ (0,
|
|
3546
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(TailIcon, { size, verticalPosition, horizontalAlign })
|
|
3099
3547
|
]
|
|
3100
3548
|
}
|
|
3101
3549
|
) });
|
|
3102
3550
|
};
|
|
3103
3551
|
|
|
3104
3552
|
// src/tooltip/tooltip-hook.ts
|
|
3105
|
-
var
|
|
3553
|
+
var import_react52 = require("react");
|
|
3106
3554
|
var useTooltip = () => {
|
|
3107
|
-
const calculatePosition = (0,
|
|
3555
|
+
const calculatePosition = (0, import_react52.useCallback)(
|
|
3108
3556
|
(args) => {
|
|
3109
3557
|
const result = {
|
|
3110
3558
|
maxWidth: "none",
|
|
@@ -3156,7 +3604,7 @@ var useTooltip = () => {
|
|
|
3156
3604
|
};
|
|
3157
3605
|
|
|
3158
3606
|
// src/tooltip/tooltip.tsx
|
|
3159
|
-
var
|
|
3607
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
3160
3608
|
function Tooltip({
|
|
3161
3609
|
children,
|
|
3162
3610
|
content,
|
|
@@ -3168,8 +3616,8 @@ function Tooltip({
|
|
|
3168
3616
|
portalTarget
|
|
3169
3617
|
}) {
|
|
3170
3618
|
const { calculatePosition } = useTooltip();
|
|
3171
|
-
const [isVisible, setIsVisible] = (0,
|
|
3172
|
-
const [tooltipPosition, setTooltipPosition] = (0,
|
|
3619
|
+
const [isVisible, setIsVisible] = (0, import_react53.useState)(false);
|
|
3620
|
+
const [tooltipPosition, setTooltipPosition] = (0, import_react53.useState)({
|
|
3173
3621
|
maxWidth: "none",
|
|
3174
3622
|
width: "auto",
|
|
3175
3623
|
left: "0px",
|
|
@@ -3178,23 +3626,23 @@ function Tooltip({
|
|
|
3178
3626
|
translateX: "0",
|
|
3179
3627
|
translateY: "0"
|
|
3180
3628
|
});
|
|
3181
|
-
const targetRef = (0,
|
|
3182
|
-
const handleMouseOverWrapper = (0,
|
|
3629
|
+
const targetRef = (0, import_react53.useRef)(null);
|
|
3630
|
+
const handleMouseOverWrapper = (0, import_react53.useCallback)(() => {
|
|
3183
3631
|
if (isDisabledHover) {
|
|
3184
3632
|
return;
|
|
3185
3633
|
}
|
|
3186
3634
|
setIsVisible(true);
|
|
3187
3635
|
}, [isDisabledHover]);
|
|
3188
|
-
const handleMouseOutWrapper = (0,
|
|
3636
|
+
const handleMouseOutWrapper = (0, import_react53.useCallback)(() => {
|
|
3189
3637
|
setIsVisible(false);
|
|
3190
3638
|
}, []);
|
|
3191
|
-
(0,
|
|
3639
|
+
(0, import_react53.useEffect)(() => {
|
|
3192
3640
|
if (targetRef.current === null) return;
|
|
3193
3641
|
const dimensions = targetRef.current?.getBoundingClientRect();
|
|
3194
3642
|
const position = calculatePosition({ dimensions, maxWidth, verticalPosition, horizontalAlign, tooltipSize: size });
|
|
3195
3643
|
setTooltipPosition(position);
|
|
3196
3644
|
}, [calculatePosition, horizontalAlign, maxWidth, size, verticalPosition]);
|
|
3197
|
-
return /* @__PURE__ */ (0,
|
|
3645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
3198
3646
|
"div",
|
|
3199
3647
|
{
|
|
3200
3648
|
ref: targetRef,
|
|
@@ -3203,7 +3651,7 @@ function Tooltip({
|
|
|
3203
3651
|
onMouseLeave: handleMouseOutWrapper,
|
|
3204
3652
|
children: [
|
|
3205
3653
|
children,
|
|
3206
|
-
isVisible && (portalTarget == null ? /* @__PURE__ */ (0,
|
|
3654
|
+
isVisible && (portalTarget == null ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
3207
3655
|
TooltipContent,
|
|
3208
3656
|
{
|
|
3209
3657
|
content,
|
|
@@ -3214,7 +3662,7 @@ function Tooltip({
|
|
|
3214
3662
|
tooltipPosition
|
|
3215
3663
|
}
|
|
3216
3664
|
) : (0, import_react_dom4.createPortal)(
|
|
3217
|
-
/* @__PURE__ */ (0,
|
|
3665
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
|
|
3218
3666
|
TooltipContent,
|
|
3219
3667
|
{
|
|
3220
3668
|
isPortal: true,
|
|
@@ -3238,6 +3686,7 @@ function Tooltip({
|
|
|
3238
3686
|
Breadcrumb,
|
|
3239
3687
|
Button,
|
|
3240
3688
|
Checkbox,
|
|
3689
|
+
DatePicker,
|
|
3241
3690
|
Dropdown,
|
|
3242
3691
|
EvaluationStar,
|
|
3243
3692
|
FileInput,
|