@flamingo-stack/openframe-frontend-core 0.0.248 → 0.0.250
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/{chunk-AGU44B7B.js → chunk-2FCXJTOV.js} +55 -357
- package/dist/chunk-2FCXJTOV.js.map +1 -0
- package/dist/{chunk-RV2PYHCJ.js → chunk-4HHYUEMD.js} +3 -3
- package/dist/{chunk-UECRKCKH.js → chunk-4RDJZIHW.js} +115 -279
- package/dist/chunk-4RDJZIHW.js.map +1 -0
- package/dist/chunk-6JINAOI7.cjs +311 -0
- package/dist/chunk-6JINAOI7.cjs.map +1 -0
- package/dist/chunk-6LK4VEXE.cjs +4514 -0
- package/dist/chunk-6LK4VEXE.cjs.map +1 -0
- package/dist/{chunk-OTFJKBDW.js → chunk-D2BC3NZ2.js} +5061 -9377
- package/dist/chunk-D2BC3NZ2.js.map +1 -0
- package/dist/chunk-DAAFVOTL.cjs +172 -0
- package/dist/chunk-DAAFVOTL.cjs.map +1 -0
- package/dist/{chunk-672QV33W.js → chunk-DZJ53RX6.js} +167 -16
- package/dist/chunk-DZJ53RX6.js.map +1 -0
- package/dist/{chunk-27VVOBDB.cjs → chunk-ELF4OOHC.cjs} +16 -180
- package/dist/chunk-ELF4OOHC.cjs.map +1 -0
- package/dist/chunk-LKI3YCAX.js +4514 -0
- package/dist/chunk-LKI3YCAX.js.map +1 -0
- package/dist/{chunk-2Q5GVNXP.cjs → chunk-LZL6P7SN.cjs} +12 -12
- package/dist/{chunk-2Q5GVNXP.cjs.map → chunk-LZL6P7SN.cjs.map} +1 -1
- package/dist/chunk-M2OCXTNT.js +311 -0
- package/dist/chunk-M2OCXTNT.js.map +1 -0
- package/dist/{chunk-PMYD4WKR.cjs → chunk-NCXHTQH2.cjs} +1677 -5993
- package/dist/chunk-NCXHTQH2.cjs.map +1 -0
- package/dist/{chunk-QHYCWQBH.cjs → chunk-PDKBCCCD.cjs} +166 -15
- package/dist/chunk-PDKBCCCD.cjs.map +1 -0
- package/dist/{chunk-OZKPUBKX.cjs → chunk-PDYT7T6K.cjs} +38 -33
- package/dist/chunk-PDYT7T6K.cjs.map +1 -0
- package/dist/{chunk-PJT6RRSP.js → chunk-PSG7H4KG.js} +7 -5
- package/dist/{chunk-PJT6RRSP.js.map → chunk-PSG7H4KG.js.map} +1 -1
- package/dist/{chunk-NFUXCXYN.js → chunk-SGEO3W3F.js} +11 -6
- package/dist/chunk-SGEO3W3F.js.map +1 -0
- package/dist/{chunk-GRTZ23GL.cjs → chunk-TU26IZPO.cjs} +16 -318
- package/dist/chunk-TU26IZPO.cjs.map +1 -0
- package/dist/{chunk-4VSPLMB6.cjs → chunk-UMH4RR2F.cjs} +34 -32
- package/dist/chunk-UMH4RR2F.cjs.map +1 -0
- package/dist/chunk-ZXZJSTNV.js +172 -0
- package/dist/chunk-ZXZJSTNV.js.map +1 -0
- package/dist/components/chat/chat-message-list.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +21 -7
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +63 -49
- package/dist/components/chat/utils/history-merge.d.ts +92 -0
- package/dist/components/chat/utils/history-merge.d.ts.map +1 -0
- package/dist/components/chat/utils/index.d.ts +1 -0
- package/dist/components/chat/utils/index.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +11 -8
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +10 -7
- package/dist/components/features/index.cjs +11 -7
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +26 -22
- package/dist/components/features/policy-configuration-panel.d.ts.map +1 -1
- package/dist/components/index.cjs +121 -108
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +144 -131
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +10 -7
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +9 -6
- package/dist/components/onboarding-guides/index.cjs +43 -53
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +25 -35
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts +11 -11
- package/dist/components/onboarding-guides/onboarding-guides-catalog-skeleton.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +11 -8
- package/dist/components/related-content/index.cjs.map +1 -1
- package/dist/components/related-content/index.js +10 -7
- package/dist/components/related-content/related-content-section.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +96 -93
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +21 -18
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +52 -50
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +6 -4
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +26 -11
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +112 -97
- package/dist/contexts/index.cjs +2 -2
- package/dist/contexts/index.js +5 -5
- package/dist/hooks/index.cjs +6 -4
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +8 -6
- package/dist/index.cjs +27 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +167 -151
- package/package.json +1 -1
- package/src/components/chat/__tests__/chat-message-list.test.tsx +92 -0
- package/src/components/chat/chat-message-list.tsx +74 -49
- package/src/components/chat/utils/__tests__/history-merge.test.ts +339 -0
- package/src/components/chat/utils/history-merge.ts +255 -0
- package/src/components/chat/utils/index.ts +12 -0
- package/src/components/features/policy-configuration-panel.tsx +1 -0
- package/src/components/onboarding-guides/onboarding-guides-catalog-skeleton.tsx +28 -33
- package/src/components/related-content/related-content-section.tsx +6 -2
- package/dist/chunk-27VVOBDB.cjs.map +0 -1
- package/dist/chunk-4VSPLMB6.cjs.map +0 -1
- package/dist/chunk-672QV33W.js.map +0 -1
- package/dist/chunk-AGU44B7B.js.map +0 -1
- package/dist/chunk-GRTZ23GL.cjs.map +0 -1
- package/dist/chunk-NFUXCXYN.js.map +0 -1
- package/dist/chunk-OTFJKBDW.js.map +0 -1
- package/dist/chunk-OZKPUBKX.cjs.map +0 -1
- package/dist/chunk-PMYD4WKR.cjs.map +0 -1
- package/dist/chunk-QHYCWQBH.cjs.map +0 -1
- package/dist/chunk-QWYJETDL.cjs +0 -162
- package/dist/chunk-QWYJETDL.cjs.map +0 -1
- package/dist/chunk-UECRKCKH.js.map +0 -1
- package/dist/chunk-WTTLEGEO.js +0 -162
- package/dist/chunk-WTTLEGEO.js.map +0 -1
- /package/dist/{chunk-RV2PYHCJ.js.map → chunk-4HHYUEMD.js.map} +0 -0
|
@@ -9,9 +9,6 @@ var _chunkWBR7H6E3cjs = require('./chunk-WBR7H6E3.cjs');
|
|
|
9
9
|
var _chunkFIG2RKZFcjs = require('./chunk-FIG2RKZF.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var _chunkWZW7C7TFcjs = require('./chunk-WZW7C7TF.cjs');
|
|
13
|
-
|
|
14
|
-
|
|
15
12
|
var _chunkVRHGVLSLcjs = require('./chunk-VRHGVLSL.cjs');
|
|
16
13
|
|
|
17
14
|
// src/components/ui/button/button-styles.ts
|
|
@@ -38,7 +35,7 @@ var init_button_styles = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
|
38
35
|
// src/components/ui/button/button.tsx
|
|
39
36
|
var _reactslot = require('@radix-ui/react-slot');
|
|
40
37
|
var _classvarianceauthority = require('class-variance-authority');
|
|
41
|
-
var _react = require('react'); var
|
|
38
|
+
var _react = require('react'); var React4 = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react);
|
|
42
39
|
var _jsxruntime = require('react/jsx-runtime');
|
|
43
40
|
var buttonVariants, splitShellVariants, splitSlotVariants, Spinner, Button;
|
|
44
41
|
var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
@@ -157,7 +154,7 @@ var init_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
|
157
154
|
}
|
|
158
155
|
)
|
|
159
156
|
] });
|
|
160
|
-
Button = exports.Button =
|
|
157
|
+
Button = exports.Button = React4.default.forwardRef(function Button2({
|
|
161
158
|
className,
|
|
162
159
|
variant,
|
|
163
160
|
size,
|
|
@@ -371,7 +368,7 @@ var init_split_button = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
|
371
368
|
],
|
|
372
369
|
defaultVariants: { variant: "accent", size: "default", side: "main" }
|
|
373
370
|
});
|
|
374
|
-
SplitButton = exports.SplitButton =
|
|
371
|
+
SplitButton = exports.SplitButton = React4.default.forwardRef(function SplitButton2({
|
|
375
372
|
variant = "accent",
|
|
376
373
|
size = "default",
|
|
377
374
|
fullWidth = false,
|
|
@@ -449,162 +446,19 @@ var init_button2 = _chunkVRHGVLSLcjs.__esm.call(void 0, {
|
|
|
449
446
|
}
|
|
450
447
|
});
|
|
451
448
|
|
|
452
|
-
// src/components/ui/field-wrapper.tsx
|
|
453
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
var errorVariantClasses = {
|
|
457
|
-
error: "text-ods-error",
|
|
458
|
-
warning: "text-[var(--ods-attention-yellow-warning)]"
|
|
459
|
-
};
|
|
460
|
-
var FieldWrapper = React.forwardRef(
|
|
461
|
-
({ label, error, errorVariant = "error", className, children }, ref) => {
|
|
462
|
-
const hasChrome = label != null || error != null;
|
|
463
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunkFIG2RKZFcjs.cn.call(void 0, hasChrome ? "relative flex w-full flex-col" : "contents", className), children: [
|
|
464
|
-
label && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { className: "text-h4 text-ods-text-primary mb-1", children: label }),
|
|
465
|
-
children,
|
|
466
|
-
error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "absolute bottom-0 left-0 right-0 translate-y-full text-h6 truncate", errorVariantClasses[errorVariant]), title: error, children: error })
|
|
467
|
-
] });
|
|
468
|
-
}
|
|
469
|
-
);
|
|
470
|
-
FieldWrapper.displayName = "FieldWrapper";
|
|
471
|
-
|
|
472
|
-
// src/components/ui/input.tsx
|
|
473
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
474
|
-
|
|
475
|
-
var _lucidereact = require('lucide-react');
|
|
476
|
-
|
|
477
|
-
var invalidBorderClasses = {
|
|
478
|
-
error: "border-ods-error hover:border-ods-error has-[:focus]:border-ods-error",
|
|
479
|
-
warning: "!border-[var(--ods-attention-yellow-warning)] hover:!border-[var(--ods-attention-yellow-warning)] has-[:focus]:!border-[var(--ods-attention-yellow-warning)]"
|
|
480
|
-
};
|
|
481
|
-
var Input = React2.forwardRef(
|
|
482
|
-
({ className, type, invalid = false, startAdornment, endAdornment, label, error, errorVariant = "error", loading = false, ...props }, ref) => {
|
|
483
|
-
const isInvalid = invalid || !!error;
|
|
484
|
-
if (type === "range") {
|
|
485
|
-
const rangeInput = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
486
|
-
"input",
|
|
487
|
-
{
|
|
488
|
-
type: "range",
|
|
489
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
490
|
-
"w-full cursor-pointer appearance-none rounded-full bg-white/30 h-1",
|
|
491
|
-
// Webkit (Chrome/Safari) thumb
|
|
492
|
-
"[&::-webkit-slider-thumb]:appearance-none",
|
|
493
|
-
"[&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3",
|
|
494
|
-
"[&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-white",
|
|
495
|
-
"[&::-webkit-slider-thumb]:cursor-pointer [&::-webkit-slider-thumb]:shadow-sm",
|
|
496
|
-
// Firefox thumb
|
|
497
|
-
"[&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3",
|
|
498
|
-
"[&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-white",
|
|
499
|
-
"[&::-moz-range-thumb]:border-0 [&::-moz-range-thumb]:cursor-pointer",
|
|
500
|
-
// Firefox track
|
|
501
|
-
"[&::-moz-range-track]:bg-transparent",
|
|
502
|
-
// Disabled
|
|
503
|
-
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
504
|
-
className
|
|
505
|
-
),
|
|
506
|
-
ref,
|
|
507
|
-
...props
|
|
508
|
-
}
|
|
509
|
-
);
|
|
510
|
-
return label ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FieldWrapper, { label, error, errorVariant, children: rangeInput }) : rangeInput;
|
|
511
|
-
}
|
|
512
|
-
const content = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
513
|
-
"label",
|
|
514
|
-
{
|
|
515
|
-
"data-invalid": isInvalid || void 0,
|
|
516
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
517
|
-
// Layout & spacing
|
|
518
|
-
"flex w-full items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text",
|
|
519
|
-
// Focus-within states
|
|
520
|
-
"has-[:focus-visible]:outline-none",
|
|
521
|
-
"group",
|
|
522
|
-
// Animations & touch UX
|
|
523
|
-
"transition-colors duration-200",
|
|
524
|
-
// Theme palette
|
|
525
|
-
"bg-ods-card border-ods-border has-[:focus]:border-ods-accent",
|
|
526
|
-
// Hover & active (not disabled)
|
|
527
|
-
!props.disabled && "hover:bg-ods-bg-hover hover:border-ods-border-hover active:bg-ods-bg-active active:border-ods-border-active",
|
|
528
|
-
// Disabled
|
|
529
|
-
props.disabled && "!cursor-not-allowed bg-ods-bg",
|
|
530
|
-
// Invalid
|
|
531
|
-
isInvalid && invalidBorderClasses[errorVariant],
|
|
532
|
-
className
|
|
533
|
-
),
|
|
534
|
-
children: [
|
|
535
|
-
startAdornment && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6", children: startAdornment }),
|
|
536
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
537
|
-
"input",
|
|
538
|
-
{
|
|
539
|
-
type,
|
|
540
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
541
|
-
// Layout
|
|
542
|
-
"flex-1 min-w-0 bg-transparent border-none outline-none",
|
|
543
|
-
// Typography
|
|
544
|
-
"text-h4",
|
|
545
|
-
// Colors
|
|
546
|
-
"text-ods-text-primary placeholder:text-ods-text-secondary",
|
|
547
|
-
// File input adjustments
|
|
548
|
-
"file:border-0 file:bg-transparent",
|
|
549
|
-
// Disabled
|
|
550
|
-
"disabled:cursor-not-allowed disabled:text-ods-text-disabled disabled:placeholder:text-ods-border",
|
|
551
|
-
// Touch
|
|
552
|
-
"touch-manipulation",
|
|
553
|
-
// Autofill override
|
|
554
|
-
"[&:-webkit-autofill]:[-webkit-box-shadow:0_0_0_9999px_transparent_inset] [&:-webkit-autofill]:[-webkit-text-fill-color:var(--color-text-primary)] [&:-webkit-autofill]:[caret-color:var(--color-text-primary)] [&:-webkit-autofill]:[transition:background-color_9999s_ease-in-out_0s]"
|
|
555
|
-
),
|
|
556
|
-
ref,
|
|
557
|
-
...props
|
|
558
|
-
}
|
|
559
|
-
),
|
|
560
|
-
loading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "animate-spin flex-shrink-0 text-ods-text-secondary size-4 md:size-6" }),
|
|
561
|
-
!loading && endAdornment && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h6 flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent group-data-[invalid]:text-ods-error [&_svg]:size-4 md:[&_svg]:size-6", children: endAdornment })
|
|
562
|
-
]
|
|
563
|
-
}
|
|
564
|
-
);
|
|
565
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FieldWrapper, { label, error, errorVariant, children: content });
|
|
566
|
-
}
|
|
567
|
-
);
|
|
568
|
-
Input.displayName = "Input";
|
|
569
|
-
|
|
570
|
-
// src/components/ui/checkbox.tsx
|
|
571
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
572
|
-
|
|
573
|
-
var _reactcheckbox = require('@radix-ui/react-checkbox'); var CheckboxPrimitive = _interopRequireWildcard(_reactcheckbox);
|
|
574
|
-
|
|
575
|
-
var Checkbox = React5.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
576
|
-
CheckboxPrimitive.Root,
|
|
577
|
-
{
|
|
578
|
-
ref,
|
|
579
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
580
|
-
"peer h-4 w-4 shrink-0 rounded-sm border border-ods-border bg-ods-card focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-ods-accent data-[state=checked]:border-ods-accent",
|
|
581
|
-
className
|
|
582
|
-
),
|
|
583
|
-
...props,
|
|
584
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
585
|
-
CheckboxPrimitive.Indicator,
|
|
586
|
-
{
|
|
587
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex items-center justify-center text-ods-text-on-accent"),
|
|
588
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.CheckboxCheckmarkIcon, { size: 10 })
|
|
589
|
-
}
|
|
590
|
-
)
|
|
591
|
-
}
|
|
592
|
-
));
|
|
593
|
-
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
594
|
-
|
|
595
449
|
// src/components/ui/dropdown-menu.tsx
|
|
596
450
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
597
451
|
|
|
598
452
|
var _reactdropdownmenu = require('@radix-ui/react-dropdown-menu'); var DropdownMenuPrimitive = _interopRequireWildcard(_reactdropdownmenu);
|
|
599
|
-
|
|
453
|
+
var _lucidereact = require('lucide-react');
|
|
600
454
|
|
|
601
455
|
// src/components/ui/portal-container.tsx
|
|
602
456
|
|
|
603
|
-
var PortalContainerContext =
|
|
457
|
+
var PortalContainerContext = React3.createContext(
|
|
604
458
|
null
|
|
605
459
|
);
|
|
606
460
|
function usePortalContainer() {
|
|
607
|
-
return
|
|
461
|
+
return React3.useContext(PortalContainerContext);
|
|
608
462
|
}
|
|
609
463
|
|
|
610
464
|
// src/components/ui/dropdown-menu.tsx
|
|
@@ -615,7 +469,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
|
|
|
615
469
|
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
|
|
616
470
|
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
617
471
|
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
|
|
618
|
-
var DropdownMenuSubTrigger =
|
|
472
|
+
var DropdownMenuSubTrigger = React4.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
619
473
|
DropdownMenuPrimitive.SubTrigger,
|
|
620
474
|
{
|
|
621
475
|
ref,
|
|
@@ -632,7 +486,7 @@ var DropdownMenuSubTrigger = React7.forwardRef(({ className, inset, children, ..
|
|
|
632
486
|
}
|
|
633
487
|
));
|
|
634
488
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
635
|
-
var DropdownMenuSubContent =
|
|
489
|
+
var DropdownMenuSubContent = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
636
490
|
DropdownMenuPrimitive.SubContent,
|
|
637
491
|
{
|
|
638
492
|
ref,
|
|
@@ -644,7 +498,7 @@ var DropdownMenuSubContent = React7.forwardRef(({ className, ...props }, ref) =>
|
|
|
644
498
|
}
|
|
645
499
|
));
|
|
646
500
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
647
|
-
var DropdownMenuContent =
|
|
501
|
+
var DropdownMenuContent = React4.forwardRef(({ className, sideOffset = 4, ...props }, ref) => {
|
|
648
502
|
const container = usePortalContainer();
|
|
649
503
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DropdownMenuPrimitive.Portal, { container: _nullishCoalesce(container, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
650
504
|
DropdownMenuPrimitive.Content,
|
|
@@ -660,7 +514,7 @@ var DropdownMenuContent = React7.forwardRef(({ className, sideOffset = 4, ...pro
|
|
|
660
514
|
) });
|
|
661
515
|
});
|
|
662
516
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
663
|
-
var DropdownMenuItem =
|
|
517
|
+
var DropdownMenuItem = React4.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
664
518
|
DropdownMenuPrimitive.Item,
|
|
665
519
|
{
|
|
666
520
|
ref,
|
|
@@ -673,7 +527,7 @@ var DropdownMenuItem = React7.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
673
527
|
}
|
|
674
528
|
));
|
|
675
529
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
676
|
-
var DropdownMenuCheckboxItem =
|
|
530
|
+
var DropdownMenuCheckboxItem = React4.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
677
531
|
DropdownMenuPrimitive.CheckboxItem,
|
|
678
532
|
{
|
|
679
533
|
ref,
|
|
@@ -690,7 +544,7 @@ var DropdownMenuCheckboxItem = React7.forwardRef(({ className, children, checked
|
|
|
690
544
|
}
|
|
691
545
|
));
|
|
692
546
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
693
|
-
var DropdownMenuRadioItem =
|
|
547
|
+
var DropdownMenuRadioItem = React4.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
694
548
|
DropdownMenuPrimitive.RadioItem,
|
|
695
549
|
{
|
|
696
550
|
ref,
|
|
@@ -706,7 +560,7 @@ var DropdownMenuRadioItem = React7.forwardRef(({ className, children, ...props }
|
|
|
706
560
|
}
|
|
707
561
|
));
|
|
708
562
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
709
|
-
var DropdownMenuLabel =
|
|
563
|
+
var DropdownMenuLabel = React4.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
710
564
|
DropdownMenuPrimitive.Label,
|
|
711
565
|
{
|
|
712
566
|
ref,
|
|
@@ -719,7 +573,7 @@ var DropdownMenuLabel = React7.forwardRef(({ className, inset, ...props }, ref)
|
|
|
719
573
|
}
|
|
720
574
|
));
|
|
721
575
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
722
|
-
var DropdownMenuSeparator =
|
|
576
|
+
var DropdownMenuSeparator = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
723
577
|
DropdownMenuPrimitive.Separator,
|
|
724
578
|
{
|
|
725
579
|
ref,
|
|
@@ -742,162 +596,6 @@ var DropdownMenuShortcut = ({
|
|
|
742
596
|
};
|
|
743
597
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
|
744
598
|
|
|
745
|
-
// src/components/ui/skeleton.tsx
|
|
746
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
var Skeleton = React8.forwardRef(
|
|
750
|
-
({ className, ...props }, ref) => {
|
|
751
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
752
|
-
"div",
|
|
753
|
-
{
|
|
754
|
-
ref,
|
|
755
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
756
|
-
"animate-pulse rounded-md bg-ods-border",
|
|
757
|
-
className
|
|
758
|
-
),
|
|
759
|
-
...props
|
|
760
|
-
}
|
|
761
|
-
);
|
|
762
|
-
}
|
|
763
|
-
);
|
|
764
|
-
Skeleton.displayName = "Skeleton";
|
|
765
|
-
var SkeletonText = React8.forwardRef(
|
|
766
|
-
({ lines = 1, className, ...props }, ref) => {
|
|
767
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkFIG2RKZFcjs.cn.call(void 0, "space-y-2", className), ...props, children: Array.from({ length: lines }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
768
|
-
Skeleton,
|
|
769
|
-
{
|
|
770
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
771
|
-
"h-4",
|
|
772
|
-
i === lines - 1 && lines > 1 && "w-3/4"
|
|
773
|
-
// Last line shorter for multi-line
|
|
774
|
-
)
|
|
775
|
-
},
|
|
776
|
-
i
|
|
777
|
-
)) });
|
|
778
|
-
}
|
|
779
|
-
);
|
|
780
|
-
SkeletonText.displayName = "SkeletonText";
|
|
781
|
-
var SkeletonCard = React8.forwardRef(
|
|
782
|
-
({ showImage = false, className, ...props }, ref) => {
|
|
783
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
784
|
-
"div",
|
|
785
|
-
{
|
|
786
|
-
ref,
|
|
787
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
788
|
-
"rounded-lg border border-ods-border overflow-hidden",
|
|
789
|
-
className
|
|
790
|
-
),
|
|
791
|
-
...props,
|
|
792
|
-
children: [
|
|
793
|
-
showImage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-48 w-full" }),
|
|
794
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "p-6", children: [
|
|
795
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-6 w-3/4 mb-4" }),
|
|
796
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonText, { lines: 3 })
|
|
797
|
-
] })
|
|
798
|
-
]
|
|
799
|
-
}
|
|
800
|
-
);
|
|
801
|
-
}
|
|
802
|
-
);
|
|
803
|
-
SkeletonCard.displayName = "SkeletonCard";
|
|
804
|
-
var SkeletonGrid = React8.forwardRef(
|
|
805
|
-
({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {
|
|
806
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
807
|
-
"div",
|
|
808
|
-
{
|
|
809
|
-
ref,
|
|
810
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
811
|
-
`grid grid-cols-1 gap-6`,
|
|
812
|
-
columns === 2 && "md:grid-cols-2",
|
|
813
|
-
columns === 3 && "md:grid-cols-3",
|
|
814
|
-
columns === 4 && "md:grid-cols-4",
|
|
815
|
-
className
|
|
816
|
-
),
|
|
817
|
-
...props,
|
|
818
|
-
children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonCard, { showImage: showImages }, i))
|
|
819
|
-
}
|
|
820
|
-
);
|
|
821
|
-
}
|
|
822
|
-
);
|
|
823
|
-
SkeletonGrid.displayName = "SkeletonGrid";
|
|
824
|
-
var SkeletonButton = React8.forwardRef(
|
|
825
|
-
({ size = "default", className, ...props }, ref) => {
|
|
826
|
-
const sizeClasses = {
|
|
827
|
-
sm: "h-8 w-20",
|
|
828
|
-
default: "h-10 w-32",
|
|
829
|
-
lg: "h-12 w-40"
|
|
830
|
-
};
|
|
831
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
832
|
-
Skeleton,
|
|
833
|
-
{
|
|
834
|
-
ref,
|
|
835
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
836
|
-
"rounded-lg",
|
|
837
|
-
sizeClasses[size],
|
|
838
|
-
className
|
|
839
|
-
),
|
|
840
|
-
...props
|
|
841
|
-
}
|
|
842
|
-
);
|
|
843
|
-
}
|
|
844
|
-
);
|
|
845
|
-
SkeletonButton.displayName = "SkeletonButton";
|
|
846
|
-
var SkeletonHeading = React8.forwardRef(
|
|
847
|
-
({ level = 1, className, ...props }, ref) => {
|
|
848
|
-
const heightClasses = {
|
|
849
|
-
1: "h-12",
|
|
850
|
-
2: "h-10",
|
|
851
|
-
3: "h-8",
|
|
852
|
-
4: "h-7",
|
|
853
|
-
5: "h-6",
|
|
854
|
-
6: "h-5"
|
|
855
|
-
};
|
|
856
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
857
|
-
Skeleton,
|
|
858
|
-
{
|
|
859
|
-
ref,
|
|
860
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
861
|
-
heightClasses[level],
|
|
862
|
-
"w-3/4",
|
|
863
|
-
className
|
|
864
|
-
),
|
|
865
|
-
...props
|
|
866
|
-
}
|
|
867
|
-
);
|
|
868
|
-
}
|
|
869
|
-
);
|
|
870
|
-
SkeletonHeading.displayName = "SkeletonHeading";
|
|
871
|
-
var SkeletonList = React8.forwardRef(
|
|
872
|
-
({ items = 5, className, ...props }, ref) => {
|
|
873
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkFIG2RKZFcjs.cn.call(void 0, "space-y-3", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
|
|
874
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-10 w-10 rounded-full flex-shrink-0" }),
|
|
875
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1", children: [
|
|
876
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-4 w-1/3 mb-1" }),
|
|
877
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-3 w-1/2" })
|
|
878
|
-
] })
|
|
879
|
-
] }, i)) });
|
|
880
|
-
}
|
|
881
|
-
);
|
|
882
|
-
SkeletonList.displayName = "SkeletonList";
|
|
883
|
-
var SkeletonNavigation = React8.forwardRef(
|
|
884
|
-
({ items = 6, className, ...props }, ref) => {
|
|
885
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkFIG2RKZFcjs.cn.call(void 0, "flex items-center gap-6", className), ...props, children: Array.from({ length: items }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Skeleton, { className: "h-5 w-20" }, i)) });
|
|
886
|
-
}
|
|
887
|
-
);
|
|
888
|
-
SkeletonNavigation.displayName = "SkeletonNavigation";
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
599
|
|
|
902
600
|
|
|
903
601
|
|
|
@@ -921,5 +619,5 @@ SkeletonNavigation.displayName = "SkeletonNavigation";
|
|
|
921
619
|
|
|
922
620
|
|
|
923
621
|
|
|
924
|
-
exports.
|
|
925
|
-
//# sourceMappingURL=chunk-
|
|
622
|
+
exports.buttonVariants = buttonVariants; exports.Button = Button; exports.init_button = init_button; exports.SplitButton = SplitButton; exports.init_button2 = init_button2; exports.PortalContainerContext = PortalContainerContext; exports.usePortalContainer = usePortalContainer; exports.DropdownMenu = DropdownMenu; exports.DropdownMenuTrigger = DropdownMenuTrigger; exports.DropdownMenuGroup = DropdownMenuGroup; exports.DropdownMenuPortal = DropdownMenuPortal; exports.DropdownMenuSub = DropdownMenuSub; exports.DropdownMenuRadioGroup = DropdownMenuRadioGroup; exports.DropdownMenuSubTrigger = DropdownMenuSubTrigger; exports.DropdownMenuSubContent = DropdownMenuSubContent; exports.DropdownMenuContent = DropdownMenuContent; exports.DropdownMenuItem = DropdownMenuItem; exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem; exports.DropdownMenuRadioItem = DropdownMenuRadioItem; exports.DropdownMenuLabel = DropdownMenuLabel; exports.DropdownMenuSeparator = DropdownMenuSeparator; exports.DropdownMenuShortcut = DropdownMenuShortcut;
|
|
623
|
+
//# sourceMappingURL=chunk-TU26IZPO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-TU26IZPO.cjs","../src/components/ui/button/button-styles.ts","../src/components/ui/button/button.tsx","../src/components/ui/button/split-button.tsx","../src/components/ui/button/index.ts","../src/components/ui/dropdown-menu.tsx","../src/components/ui/portal-container.tsx"],"names":["Button","jsx","cva","React","SplitButton","jsxs","init_button"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-TU26IZPO.cjs","sourcesContent":[null,"// Shared style atoms for `Button` and `SplitButton`. Extracted to keep a single\n// source of truth for surface colors, outline borders, and split-divider colors.\n\n// Each variant pairs `disabled:` (real `<button disabled>`) with `aria-disabled:`\n// (used for `<Link aria-disabled>` since anchors don't support `:disabled`).\nexport const buttonSurfaceClasses = {\n accent:\n \"bg-ods-accent text-ods-text-on-accent hover:bg-ods-accent-hover active:bg-ods-accent-active disabled:bg-ods-disabled aria-disabled:bg-ods-disabled\",\n outline:\n \"bg-ods-card text-ods-text-primary hover:bg-ods-bg-hover active:bg-ods-bg-active disabled:bg-ods-card disabled:text-ods-text-disabled aria-disabled:bg-ods-card aria-disabled:text-ods-text-disabled\",\n transparent:\n \"bg-transparent text-ods-text-primary hover:bg-ods-bg-hover active:bg-ods-bg-active disabled:bg-transparent disabled:text-ods-text-disabled aria-disabled:bg-transparent aria-disabled:text-ods-text-disabled\",\n destructive:\n \"bg-ods-error text-ods-text-on-accent hover:bg-ods-error-hover active:bg-ods-error-active disabled:bg-ods-disabled aria-disabled:bg-ods-disabled\",\n} as const\n\nexport const outlineBorderClasses =\n \"border border-ods-border hover:border-ods-border-hover active:border-ods-border-active disabled:border-ods-border aria-disabled:border-ods-border\"\n\n// Color of the vertical seam between the main and icon halves (split layouts).\nexport const splitDividerColorClasses = {\n accent: \"border-ods-accent-active\",\n outline: \"border-ods-border\",\n transparent: \"border-ods-border\",\n destructive: \"border-ods-error-active\",\n} as const\n\nexport type ButtonSurfaceVariant = keyof typeof buttonSurfaceClasses\n","\"use client\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport Link from \"../../../embed-shims/next-link\"\nimport React from \"react\"\n\nimport { cn } from \"../../../utils/cn\"\nimport { buttonSurfaceClasses, outlineBorderClasses, splitDividerColorClasses } from \"./button-styles\"\n\n// Default layout: centered single content area, padding/gap on the button itself.\nconst buttonVariants = cva(\n [\n \"relative inline-flex items-center justify-center gap-[var(--spacing-system-xsf)]\",\n \"rounded-md whitespace-nowrap\",\n \"transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus\",\n \"disabled:pointer-events-none\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:h-5 [&_svg]:w-5\",\n ],\n {\n variants: {\n variant: {\n accent: buttonSurfaceClasses.accent,\n outline: cn(buttonSurfaceClasses.outline, outlineBorderClasses),\n transparent: buttonSurfaceClasses.transparent,\n destructive: buttonSurfaceClasses.destructive,\n },\n size: {\n default: \"py-[var(--spacing-system-sf)] px-[var(--spacing-system-m)] text-h3 md:h-12 h-10\",\n small: \"p-[var(--spacing-system-xs)] text-h5 h-6 md:h-8\",\n \"small-legacy\": \"py-[var(--spacing-system-xs)] px-[var(--spacing-system-m)] h-10 text-[14px] font-bold\", // Temporary alias for \"small\" to avoid breaking changes in AnnouncementBar's CTA button; will be removed in the future\n icon: \"p-[var(--spacing-system-sf)] h-11 w-11 md:h-12 md:w-12 [&_svg]:h-4 [&_svg]:w-4 md:[&_svg]:h-6 md:[&_svg]:w-6\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n noPaddingX: {\n true: \"px-0\",\n false: \"\",\n },\n },\n compoundVariants: [\n { size: \"small\", class: \"[&_svg]:h-4 [&_svg]:w-4\" },\n ],\n defaultVariants: {\n variant: \"accent\",\n size: \"default\",\n fullWidth: false,\n noPaddingX: false,\n },\n }\n)\n\n// Split layout (used when `splitIcon` is provided): outer button has no padding;\n// inner slots own padding/gap so the divider can span full button height.\nconst splitShellVariants = cva(\n [\n \"group relative inline-flex items-stretch overflow-hidden rounded-md whitespace-nowrap\",\n \"transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus\",\n \"disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n accent: buttonSurfaceClasses.accent,\n outline: cn(buttonSurfaceClasses.outline, outlineBorderClasses),\n transparent: buttonSurfaceClasses.transparent,\n destructive: buttonSurfaceClasses.destructive,\n },\n size: {\n default: \"h-12 text-h3\",\n small: \"h-6 md:h-8 text-h5\",\n },\n fullWidth: { true: \"w-full\", false: \"\" },\n },\n defaultVariants: { variant: \"accent\", size: \"default\", fullWidth: false },\n }\n)\n\nconst splitSlotVariants = cva(\n [\"inline-flex items-center justify-center\", \"[&_svg]:shrink-0 [&_svg]:h-5 [&_svg]:w-5\"],\n {\n variants: {\n slot: {\n main: \"gap-[var(--spacing-system-xsf)]\",\n icon: \"border-l\",\n },\n size: { default: \"\", small: \"[&_svg]:h-4 [&_svg]:w-4\" },\n variant: { accent: \"\", outline: \"\", transparent: \"\", destructive: \"\" },\n },\n compoundVariants: [\n { slot: \"main\", size: \"default\", class: \"px-[var(--spacing-system-m)] py-[var(--spacing-system-sf)]\" },\n { slot: \"main\", size: \"small\", class: \"px-[var(--spacing-system-xs)]\" },\n { slot: \"icon\", size: \"default\", class: \"w-10\" },\n { slot: \"icon\", size: \"small\", class: \"w-6 md:w-8\" },\n { slot: \"icon\", variant: \"accent\", class: cn(\n splitDividerColorClasses.accent,\n \"group-disabled:border-ods-disabled group-aria-disabled:border-ods-disabled\",\n ) },\n { slot: \"icon\", variant: \"outline\", class: splitDividerColorClasses.outline },\n { slot: \"icon\", variant: \"transparent\", class: splitDividerColorClasses.transparent },\n { slot: \"icon\", variant: \"destructive\", class: cn(\n splitDividerColorClasses.destructive,\n \"group-disabled:border-ods-disabled group-aria-disabled:border-ods-disabled\",\n ) },\n ],\n defaultVariants: { slot: \"main\", size: \"default\", variant: \"accent\" },\n }\n)\n\n/** @deprecated Use `size=\"small\"` instead. Temporary alias kept for backward compatibility; will be removed in the future. */\ntype DeprecatedButtonSize = \"small-legacy\"\n\ntype ButtonSize = Exclude<VariantProps<typeof buttonVariants>[\"size\"], \"small-legacy\" | null | undefined> | DeprecatedButtonSize\n\ninterface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n Omit<VariantProps<typeof buttonVariants>, \"size\"> {\n asChild?: boolean\n href?: string\n openInNewTab?: boolean\n prefetch?: boolean\n /**\n * Pre-resolved anchor bundle (from `useNavLink({ href, targetPlatform })`).\n * When set, renders the Button as `<Link>` with `href` / `target` / `rel`\n * / `onClick` spread from this object. Lets callers thread the unified\n * nav decision directly without `<Button asChild><a {...linkProps}/>`\n * gymnastics. Wins over the separate `href` / `openInNewTab` props.\n */\n linkProps?: {\n href: string\n target?: '_blank'\n rel?: 'noopener noreferrer'\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n } | null\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n /**\n * Renders a vertical divider and trailing icon area inside the button.\n * The whole button stays a single click target — the icon is decorative\n * (`aria-hidden`). For two independent click targets, use `<SplitButton>`.\n * Only honored when `size` is `\"default\"` or `\"small\"`.\n */\n splitIcon?: React.ReactNode\n loading?: boolean\n size?: ButtonSize\n}\n\nconst Spinner = () => (\n <svg className=\"animate-spin\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n)\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n className,\n variant,\n size,\n fullWidth,\n noPaddingX,\n asChild,\n href,\n openInNewTab,\n prefetch,\n linkProps,\n leftIcon,\n rightIcon,\n splitIcon,\n loading,\n children,\n disabled,\n onClick,\n ...props\n },\n ref,\n) {\n const isDisabled = disabled || loading\n\n // splitIcon is only supported for default/small sizes. With other sizes\n // (icon, small-legacy) we silently fall back to the normal layout.\n const useSplitLayout = !!splitIcon && (size === \"default\" || size === \"small\" || size === undefined)\n\n if (useSplitLayout) {\n const safeSize = (size ?? \"default\") as \"default\" | \"small\"\n const safeVariant = (variant ?? \"accent\") as \"accent\" | \"outline\" | \"transparent\" | \"destructive\"\n const shellClasses = cn(\n splitShellVariants({ variant: safeVariant, size: safeSize, fullWidth }),\n className,\n )\n const mainSlotClass = splitSlotVariants({ slot: \"main\", size: safeSize, variant: safeVariant })\n const iconSlotClass = splitSlotVariants({ slot: \"icon\", size: safeSize, variant: safeVariant })\n\n const splitContent = (\n <>\n <span className={cn(\"contents\", loading && \"invisible\")}>\n <span className={mainSlotClass}>\n {leftIcon && <span className=\"inline-flex items-center\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"inline-flex items-center\">{rightIcon}</span>}\n </span>\n <span aria-hidden=\"true\" className={iconSlotClass}>\n {splitIcon}\n </span>\n </span>\n {loading && (\n <span className=\"absolute inset-0 inline-flex items-center justify-center text-ods-text-primary\">\n <Spinner />\n </span>\n )}\n </>\n )\n\n // `linkProps` (the pre-resolved bundle from `useNavLink({ href, targetPlatform })`)\n // wins over the legacy `href` + `openInNewTab` props so callers can thread\n // the unified nav decision directly. Either path produces the same `<Link>`.\n const splitAnchor = linkProps ?? (href ? {\n href,\n target: openInNewTab ? '_blank' as const : undefined,\n rel: openInNewTab ? 'noopener noreferrer' as const : undefined,\n onClick: onClick as unknown as React.MouseEventHandler<HTMLAnchorElement> | undefined,\n } : null)\n if (splitAnchor) {\n return (\n <Link\n href={splitAnchor.href}\n prefetch={prefetch}\n target={splitAnchor.target}\n rel={splitAnchor.rel}\n aria-disabled={isDisabled || undefined}\n tabIndex={isDisabled ? -1 : undefined}\n className={cn(shellClasses, isDisabled && \"pointer-events-none\")}\n onClick={splitAnchor.onClick}\n >\n {splitContent}\n </Link>\n )\n }\n\n return (\n <button\n ref={ref}\n className={shellClasses}\n disabled={isDisabled}\n onClick={onClick}\n {...props}\n >\n {splitContent}\n </button>\n )\n }\n\n const classes = cn(buttonVariants({ variant, size, fullWidth, noPaddingX }), className)\n\n // asChild: consumer fully controls the rendered element; we just stamp our classes.\n if (asChild) {\n return (\n <Slot ref={ref} className={classes} {...props}>\n {children}\n </Slot>\n )\n }\n\n // Real content stays in layout (preserving width) but goes invisible while loading.\n // The spinner is absolutely positioned so it never shifts the button's size.\n const content = (\n <>\n <span className={cn(\"contents\", loading && \"invisible\")}>\n {leftIcon && <span className=\"inline-flex items-center\">{leftIcon}</span>}\n {children}\n {rightIcon && <span className=\"inline-flex items-center\">{rightIcon}</span>}\n </span>\n {loading && (\n <span className=\"absolute inset-0 inline-flex items-center justify-center text-ods-text-primary\">\n <Spinner />\n </span>\n )}\n </>\n )\n\n // Same `linkProps`-wins-over-href resolution as the splitIcon branch.\n const anchor = linkProps ?? (href ? {\n href,\n target: openInNewTab ? '_blank' as const : undefined,\n rel: openInNewTab ? 'noopener noreferrer' as const : undefined,\n onClick: onClick as unknown as React.MouseEventHandler<HTMLAnchorElement> | undefined,\n } : null)\n if (anchor) {\n return (\n <Link\n href={anchor.href}\n prefetch={prefetch}\n target={anchor.target}\n rel={anchor.rel}\n aria-disabled={isDisabled || undefined}\n tabIndex={isDisabled ? -1 : undefined}\n className={cn(classes, isDisabled && \"pointer-events-none\")}\n onClick={anchor.onClick}\n >\n {content}\n </Link>\n )\n }\n\n return (\n <button\n ref={ref}\n className={classes}\n disabled={isDisabled}\n onClick={onClick}\n {...props}\n >\n {content}\n </button>\n )\n})\n\nexport { Button, buttonVariants, type ButtonProps }\n","\"use client\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport Link from \"../../../embed-shims/next-link\"\nimport React from \"react\"\n\nimport { cn } from \"../../../utils/cn\"\nimport { buttonSurfaceClasses, splitDividerColorClasses } from \"./button-styles\"\n\n// Two independent interactive halves: each a `<button>` or `<a>`. The seam is\n// a 1px border on the left edge of the icon half, colored per variant. For a\n// single-target variant (decorative trailing icon), use `<Button splitIcon>`.\n\nconst splitHalfBase = [\n \"relative inline-flex items-center justify-center gap-[var(--spacing-system-xsf)]\",\n \"whitespace-nowrap transition-colors duration-200\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-focus focus-visible:z-10\",\n \"disabled:pointer-events-none\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n]\n\nconst splitHalfVariants = cva(splitHalfBase, {\n variants: {\n variant: {\n accent: buttonSurfaceClasses.accent,\n outline: buttonSurfaceClasses.outline, // Outline border lives in compoundVariants so we can omit the seam edge.\n transparent: buttonSurfaceClasses.transparent,\n destructive: buttonSurfaceClasses.destructive,\n },\n size: {\n default: \"h-10 md:h-12 px-[var(--spacing-system-m)] py-[var(--spacing-system-sf)] text-h3 [&_svg]:h-4 [&_svg]:w-4 md:[&_svg]:h-6 md:[&_svg]:w-6\",\n small: \"h-6 md:h-8 px-[var(--spacing-system-xs)] text-h5 [&_svg]:h-3 [&_svg]:w-3 md:[&_svg]:h-4 md:[&_svg]:w-4\",\n },\n side: { main: \"\", icon: \"\" },\n },\n compoundVariants: [\n // Rounded corners + per-variant seam. The icon-side's left border is the divider.\n { variant: \"accent\", side: \"main\", class: \"rounded-l-md\" },\n { variant: \"accent\", side: \"icon\", class: cn(\n \"rounded-r-md border-l\",\n splitDividerColorClasses.accent,\n \"disabled:border-ods-disabled aria-disabled:border-ods-disabled\",\n ) },\n { variant: \"destructive\", side: \"main\", class: \"rounded-l-md\" },\n { variant: \"destructive\", side: \"icon\", class: cn(\n \"rounded-r-md border-l\",\n splitDividerColorClasses.destructive,\n \"disabled:border-ods-disabled aria-disabled:border-ods-disabled\",\n ) },\n { variant: \"outline\", side: \"main\", class: \"rounded-l-md border-y border-l border-ods-border\" },\n { variant: \"outline\", side: \"icon\", class: \"rounded-r-md border border-ods-border\" },\n { variant: \"transparent\", side: \"main\", class: \"rounded-md\" },\n { variant: \"transparent\", side: \"icon\", class: cn(\"rounded-md\", splitDividerColorClasses.transparent) },\n\n // Icon half: per Figma, narrower than main height (default: 40×48; small: 32×32).\n { side: \"icon\", size: \"default\", class: \"w-10 px-0\" },\n { side: \"icon\", size: \"small\", class: \"w-6 md:w-8 px-0\" },\n ],\n defaultVariants: { variant: \"accent\", size: \"default\", side: \"main\" },\n})\n\ntype SplitButtonVariant = NonNullable<VariantProps<typeof splitHalfVariants>[\"variant\"]>\ntype SplitButtonSize = NonNullable<VariantProps<typeof splitHalfVariants>[\"size\"]>\n\ninterface SplitButtonIconAction {\n icon: React.ReactNode\n /** The icon half is interactive but has no visible text — needs an accessible name. */\n \"aria-label\": string\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>\n href?: string\n openInNewTab?: boolean\n prefetch?: boolean\n disabled?: boolean\n}\n\ninterface SplitButtonProps {\n variant?: SplitButtonVariant\n size?: SplitButtonSize\n fullWidth?: boolean\n className?: string\n\n children: React.ReactNode\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>\n href?: string\n openInNewTab?: boolean\n prefetch?: boolean\n leftIcon?: React.ReactNode\n rightIcon?: React.ReactNode\n /** Disables both halves. Equivalent to `mainDisabled && iconAction.disabled`. */\n disabled?: boolean\n /** Disables only the main half. Combine with `iconAction.disabled` for finer control. */\n mainDisabled?: boolean\n type?: \"button\" | \"submit\" | \"reset\"\n \"aria-label\"?: string\n groupAriaLabel?: string\n\n iconAction: SplitButtonIconAction\n}\n\ninterface HalfOptions {\n variant: SplitButtonVariant\n size: SplitButtonSize\n side: \"main\" | \"icon\"\n href?: string\n openInNewTab?: boolean\n prefetch?: boolean\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>\n disabled?: boolean\n type?: \"button\" | \"submit\" | \"reset\"\n ariaLabel?: string\n children: React.ReactNode\n}\n\nfunction Half({ variant, size, side, href, openInNewTab, prefetch, onClick, disabled, type = \"button\", ariaLabel, children }: HalfOptions) {\n const classes = splitHalfVariants({ variant, size, side })\n\n if (href) {\n return (\n <Link\n href={href}\n prefetch={prefetch}\n target={openInNewTab ? \"_blank\" : undefined}\n rel={openInNewTab ? \"noopener noreferrer\" : undefined}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n aria-label={ariaLabel}\n className={cn(classes, disabled && \"pointer-events-none\")}\n onClick={onClick as unknown as React.MouseEventHandler<HTMLAnchorElement> | undefined}\n >\n {children}\n </Link>\n )\n }\n\n return (\n <button\n type={type}\n className={classes}\n disabled={disabled}\n aria-label={ariaLabel}\n onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}\n >\n {children}\n </button>\n )\n}\n\nconst SplitButton = React.forwardRef<HTMLDivElement, SplitButtonProps>(function SplitButton(\n {\n variant = \"accent\",\n size = \"default\",\n fullWidth = false,\n className,\n children,\n onClick,\n href,\n openInNewTab,\n prefetch,\n leftIcon,\n rightIcon,\n disabled,\n mainDisabled,\n type,\n iconAction,\n \"aria-label\": ariaLabel,\n groupAriaLabel,\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={groupAriaLabel}\n className={cn(\"inline-flex items-stretch\", fullWidth && \"w-full\", className)}\n >\n <Half\n variant={variant}\n size={size}\n side=\"main\"\n href={href}\n openInNewTab={openInNewTab}\n prefetch={prefetch}\n onClick={onClick}\n disabled={disabled || mainDisabled}\n type={type}\n ariaLabel={ariaLabel}\n >\n {leftIcon && <span className=\"inline-flex items-center\">{leftIcon}</span>}\n <span>{children}</span>\n {rightIcon && <span className=\"inline-flex items-center\">{rightIcon}</span>}\n </Half>\n <Half\n variant={variant}\n size={size}\n side=\"icon\"\n href={iconAction.href}\n openInNewTab={iconAction.openInNewTab}\n prefetch={iconAction.prefetch}\n onClick={iconAction.onClick}\n disabled={disabled || iconAction.disabled}\n ariaLabel={iconAction[\"aria-label\"]}\n >\n <span className=\"inline-flex items-center\">{iconAction.icon}</span>\n </Half>\n </div>\n )\n})\n\nexport { SplitButton, type SplitButtonProps, type SplitButtonIconAction }\n","export * from './button'\nexport * from './split-button'\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../utils/cn\"\nimport { usePortalContainer } from \"./portal-container\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-pointer gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none hover:bg-ods-bg-hover focus:bg-ods-bg-hover data-[state=open]:bg-ods-bg-hover [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => {\n // Portal into the active container (e.g. a drawer) so the menu inherits its\n // stacking context; falls back to `document.body` when none is provided.\n const container = usePortalContainer()\n return (\n <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n})\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-base outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors text-ods-text-primary hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-ods-accent\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-ods-text-secondary\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-ods-border\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest text-ods-text-secondary opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","'use client'\n\nimport * as React from 'react'\n\n/**\n * The DOM node that Radix overlays (dropdown menus, tooltips) should portal\n * into, instead of the default `document.body`.\n *\n * Portaling to `document.body` lifts content out of every local stacking\n * context, which forces overlays opened *inside* a high-z surface (e.g. the\n * chat drawer) to escalate their own z-index to compete at the document\n * root. Pointing the portal at a node *inside* that surface instead\n * lets the content inherit the surface's stacking context — small, local\n * z-indices then \"just work\" and no escalation is needed. Radix positions\n * content with `strategy: \"fixed\"`, so it still escapes ancestor\n * `overflow: hidden` clipping regardless of where it is portaled.\n *\n * Default `null` → Radix falls back to `document.body` (unchanged behaviour\n * everywhere a provider isn't present).\n */\nexport const PortalContainerContext = React.createContext<HTMLElement | null>(\n null,\n)\n\n/** Read the active portal container (or `null` to use `document.body`). */\nexport function usePortalContainer(): HTMLElement | null {\n return React.useContext(PortalContainerContext)\n}\n"]}
|