@invergent/ui-sdk 0.0.0-stage → 2.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -2
- package/dist/accordion.cjs +97 -0
- package/dist/accordion.cjs.map +1 -0
- package/dist/accordion.d.cts +10 -0
- package/dist/accordion.d.ts +10 -0
- package/dist/accordion.js +92 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert.cjs +82 -0
- package/dist/alert.cjs.map +1 -0
- package/dist/alert.d.cts +14 -0
- package/dist/alert.d.ts +14 -0
- package/dist/alert.js +77 -0
- package/dist/alert.js.map +1 -0
- package/dist/avatar.cjs +110 -0
- package/dist/avatar.cjs.map +1 -0
- package/dist/avatar.d.cts +14 -0
- package/dist/avatar.d.ts +14 -0
- package/dist/avatar.js +103 -0
- package/dist/avatar.js.map +1 -0
- package/dist/badge.cjs +47 -0
- package/dist/badge.cjs.map +1 -0
- package/dist/badge.d.cts +13 -0
- package/dist/badge.d.ts +13 -0
- package/dist/badge.js +44 -0
- package/dist/badge.js.map +1 -0
- package/dist/brand-beam.cjs +2303 -0
- package/dist/brand-beam.cjs.map +1 -0
- package/dist/brand-beam.d.cts +36 -0
- package/dist/brand-beam.d.ts +36 -0
- package/dist/brand-beam.js +2301 -0
- package/dist/brand-beam.js.map +1 -0
- package/dist/button-group.cjs +80 -0
- package/dist/button-group.cjs.map +1 -0
- package/dist/button-group.d.cts +17 -0
- package/dist/button-group.d.ts +17 -0
- package/dist/button-group.js +75 -0
- package/dist/button-group.js.map +1 -0
- package/dist/button.cjs +17 -0
- package/dist/button.cjs.map +1 -0
- package/dist/button.d.cts +14 -0
- package/dist/button.d.ts +14 -0
- package/dist/button.js +4 -0
- package/dist/button.js.map +1 -0
- package/dist/card.cjs +109 -0
- package/dist/card.cjs.map +1 -0
- package/dist/card.d.cts +14 -0
- package/dist/card.d.ts +14 -0
- package/dist/card.js +101 -0
- package/dist/card.js.map +1 -0
- package/dist/chart.cjs +275 -0
- package/dist/chart.cjs.map +1 -0
- package/dist/chart.d.cts +47 -0
- package/dist/chart.d.ts +47 -0
- package/dist/chart.js +247 -0
- package/dist/chart.js.map +1 -0
- package/dist/checkbox.cjs +41 -0
- package/dist/checkbox.cjs.map +1 -0
- package/dist/checkbox.d.cts +7 -0
- package/dist/checkbox.d.ts +7 -0
- package/dist/checkbox.js +39 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/chip.cjs +92 -0
- package/dist/chip.cjs.map +1 -0
- package/dist/chip.d.cts +33 -0
- package/dist/chip.d.ts +33 -0
- package/dist/chip.js +86 -0
- package/dist/chip.js.map +1 -0
- package/dist/choice-card.cjs +127 -0
- package/dist/choice-card.cjs.map +1 -0
- package/dist/choice-card.d.cts +20 -0
- package/dist/choice-card.d.ts +20 -0
- package/dist/choice-card.js +124 -0
- package/dist/choice-card.js.map +1 -0
- package/dist/chunk-2UHRDVPT.cjs +183 -0
- package/dist/chunk-2UHRDVPT.cjs.map +1 -0
- package/dist/chunk-5CRE35VX.js +20 -0
- package/dist/chunk-5CRE35VX.js.map +1 -0
- package/dist/chunk-6ARYCL4L.cjs +30 -0
- package/dist/chunk-6ARYCL4L.cjs.map +1 -0
- package/dist/chunk-6JCVTRUK.js +21 -0
- package/dist/chunk-6JCVTRUK.js.map +1 -0
- package/dist/chunk-6YHDDRIM.cjs +13 -0
- package/dist/chunk-6YHDDRIM.cjs.map +1 -0
- package/dist/chunk-A44JJ6NH.js +58 -0
- package/dist/chunk-A44JJ6NH.js.map +1 -0
- package/dist/chunk-CPAFEXKR.js +63 -0
- package/dist/chunk-CPAFEXKR.js.map +1 -0
- package/dist/chunk-CTIEUG5L.js +28 -0
- package/dist/chunk-CTIEUG5L.js.map +1 -0
- package/dist/chunk-DSDDDYG3.cjs +60 -0
- package/dist/chunk-DSDDDYG3.cjs.map +1 -0
- package/dist/chunk-IB7LTHEQ.js +55 -0
- package/dist/chunk-IB7LTHEQ.js.map +1 -0
- package/dist/chunk-ID7MWMJO.cjs +162 -0
- package/dist/chunk-ID7MWMJO.cjs.map +1 -0
- package/dist/chunk-IVMZANP7.cjs +67 -0
- package/dist/chunk-IVMZANP7.cjs.map +1 -0
- package/dist/chunk-L73QIINW.js +157 -0
- package/dist/chunk-L73QIINW.js.map +1 -0
- package/dist/chunk-LZGII7SX.js +11 -0
- package/dist/chunk-LZGII7SX.js.map +1 -0
- package/dist/chunk-M677T75H.js +24 -0
- package/dist/chunk-M677T75H.js.map +1 -0
- package/dist/chunk-NSK344BJ.js +80 -0
- package/dist/chunk-NSK344BJ.js.map +1 -0
- package/dist/chunk-OAVCB3MR.cjs +26 -0
- package/dist/chunk-OAVCB3MR.cjs.map +1 -0
- package/dist/chunk-PH733KDD.js +141 -0
- package/dist/chunk-PH733KDD.js.map +1 -0
- package/dist/chunk-QEBQ5NUN.cjs +148 -0
- package/dist/chunk-QEBQ5NUN.cjs.map +1 -0
- package/dist/chunk-RVX6SN4U.cjs +23 -0
- package/dist/chunk-RVX6SN4U.cjs.map +1 -0
- package/dist/chunk-T74Z3WTK.js +151 -0
- package/dist/chunk-T74Z3WTK.js.map +1 -0
- package/dist/chunk-UOUXW63J.cjs +22 -0
- package/dist/chunk-UOUXW63J.cjs.map +1 -0
- package/dist/chunk-UXSDDJXM.cjs +88 -0
- package/dist/chunk-UXSDDJXM.cjs.map +1 -0
- package/dist/chunk-VBICNC43.cjs +61 -0
- package/dist/chunk-VBICNC43.cjs.map +1 -0
- package/dist/collapsible-header.cjs +66 -0
- package/dist/collapsible-header.cjs.map +1 -0
- package/dist/collapsible-header.d.cts +15 -0
- package/dist/collapsible-header.d.ts +15 -0
- package/dist/collapsible-header.js +63 -0
- package/dist/collapsible-header.js.map +1 -0
- package/dist/collapsible.cjs +38 -0
- package/dist/collapsible.cjs.map +1 -0
- package/dist/collapsible.d.cts +8 -0
- package/dist/collapsible.d.ts +8 -0
- package/dist/collapsible.js +34 -0
- package/dist/collapsible.js.map +1 -0
- package/dist/color-picker.cjs +60 -0
- package/dist/color-picker.cjs.map +1 -0
- package/dist/color-picker.d.cts +12 -0
- package/dist/color-picker.d.ts +12 -0
- package/dist/color-picker.js +57 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/command.cjs +177 -0
- package/dist/command.cjs.map +1 -0
- package/dist/command.d.cts +22 -0
- package/dist/command.d.ts +22 -0
- package/dist/command.js +167 -0
- package/dist/command.js.map +1 -0
- package/dist/confirm-dialog.cjs +72 -0
- package/dist/confirm-dialog.cjs.map +1 -0
- package/dist/confirm-dialog.d.cts +19 -0
- package/dist/confirm-dialog.d.ts +19 -0
- package/dist/confirm-dialog.js +70 -0
- package/dist/confirm-dialog.js.map +1 -0
- package/dist/control-styles.cjs +16 -0
- package/dist/control-styles.cjs.map +1 -0
- package/dist/control-styles.d.cts +7 -0
- package/dist/control-styles.d.ts +7 -0
- package/dist/control-styles.js +10 -0
- package/dist/control-styles.js.map +1 -0
- package/dist/dialog.cjs +50 -0
- package/dist/dialog.cjs.map +1 -0
- package/dist/dialog.d.cts +20 -0
- package/dist/dialog.d.ts +20 -0
- package/dist/dialog.js +5 -0
- package/dist/dialog.js.map +1 -0
- package/dist/dropdown-menu.cjs +265 -0
- package/dist/dropdown-menu.cjs.map +1 -0
- package/dist/dropdown-menu.d.cts +32 -0
- package/dist/dropdown-menu.d.ts +32 -0
- package/dist/dropdown-menu.js +249 -0
- package/dist/dropdown-menu.js.map +1 -0
- package/dist/empty-state.cjs +50 -0
- package/dist/empty-state.cjs.map +1 -0
- package/dist/empty-state.d.cts +23 -0
- package/dist/empty-state.d.ts +23 -0
- package/dist/empty-state.js +47 -0
- package/dist/empty-state.js.map +1 -0
- package/dist/field.cjs +221 -0
- package/dist/field.cjs.map +1 -0
- package/dist/field.d.cts +30 -0
- package/dist/field.d.ts +30 -0
- package/dist/field.js +210 -0
- package/dist/field.js.map +1 -0
- package/dist/hover-card.cjs +43 -0
- package/dist/hover-card.cjs.map +1 -0
- package/dist/hover-card.d.cts +9 -0
- package/dist/hover-card.d.ts +9 -0
- package/dist/hover-card.js +39 -0
- package/dist/hover-card.js.map +1 -0
- package/dist/input-group.cjs +36 -0
- package/dist/input-group.cjs.map +1 -0
- package/dist/input-group.d.cts +20 -0
- package/dist/input-group.d.ts +20 -0
- package/dist/input-group.js +7 -0
- package/dist/input-group.js.map +1 -0
- package/dist/input.cjs +13 -0
- package/dist/input.cjs.map +1 -0
- package/dist/input.d.cts +6 -0
- package/dist/input.d.ts +6 -0
- package/dist/input.js +4 -0
- package/dist/input.js.map +1 -0
- package/dist/item.cjs +196 -0
- package/dist/item.cjs.map +1 -0
- package/dist/item.d.cts +28 -0
- package/dist/item.d.ts +28 -0
- package/dist/item.js +185 -0
- package/dist/item.js.map +1 -0
- package/dist/label.cjs +13 -0
- package/dist/label.cjs.map +1 -0
- package/dist/label.d.cts +7 -0
- package/dist/label.d.ts +7 -0
- package/dist/label.js +4 -0
- package/dist/label.js.map +1 -0
- package/dist/lib/utils.cjs +12 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.d.cts +5 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.js +3 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/list-row.cjs +188 -0
- package/dist/list-row.cjs.map +1 -0
- package/dist/list-row.d.cts +51 -0
- package/dist/list-row.d.ts +51 -0
- package/dist/list-row.js +164 -0
- package/dist/list-row.js.map +1 -0
- package/dist/pill-tabs.cjs +109 -0
- package/dist/pill-tabs.cjs.map +1 -0
- package/dist/pill-tabs.d.cts +24 -0
- package/dist/pill-tabs.d.ts +24 -0
- package/dist/pill-tabs.js +107 -0
- package/dist/pill-tabs.js.map +1 -0
- package/dist/popover.cjs +37 -0
- package/dist/popover.cjs.map +1 -0
- package/dist/popover.d.cts +13 -0
- package/dist/popover.d.ts +13 -0
- package/dist/popover.js +4 -0
- package/dist/popover.js.map +1 -0
- package/dist/progress-bar.cjs +40 -0
- package/dist/progress-bar.cjs.map +1 -0
- package/dist/progress-bar.d.cts +12 -0
- package/dist/progress-bar.d.ts +12 -0
- package/dist/progress-bar.js +38 -0
- package/dist/progress-bar.js.map +1 -0
- package/dist/rabbit-mark.cjs +30 -0
- package/dist/rabbit-mark.cjs.map +1 -0
- package/dist/rabbit-mark.d.cts +16 -0
- package/dist/rabbit-mark.d.ts +16 -0
- package/dist/rabbit-mark.js +26 -0
- package/dist/rabbit-mark.js.map +1 -0
- package/dist/responsive-panel.cjs +85 -0
- package/dist/responsive-panel.cjs.map +1 -0
- package/dist/responsive-panel.d.cts +33 -0
- package/dist/responsive-panel.d.ts +33 -0
- package/dist/responsive-panel.js +83 -0
- package/dist/responsive-panel.js.map +1 -0
- package/dist/scroll-area.cjs +63 -0
- package/dist/scroll-area.cjs.map +1 -0
- package/dist/scroll-area.d.cts +8 -0
- package/dist/scroll-area.d.ts +8 -0
- package/dist/scroll-area.js +60 -0
- package/dist/scroll-area.js.map +1 -0
- package/dist/section-label.cjs +30 -0
- package/dist/section-label.cjs.map +1 -0
- package/dist/section-label.d.cts +13 -0
- package/dist/section-label.d.ts +13 -0
- package/dist/section-label.js +28 -0
- package/dist/section-label.js.map +1 -0
- package/dist/segmented-control.cjs +75 -0
- package/dist/segmented-control.cjs.map +1 -0
- package/dist/segmented-control.d.cts +26 -0
- package/dist/segmented-control.d.ts +26 -0
- package/dist/segmented-control.js +53 -0
- package/dist/segmented-control.js.map +1 -0
- package/dist/select.cjs +193 -0
- package/dist/select.cjs.map +1 -0
- package/dist/select.d.cts +18 -0
- package/dist/select.d.ts +18 -0
- package/dist/select.js +182 -0
- package/dist/select.js.map +1 -0
- package/dist/separator.cjs +13 -0
- package/dist/separator.cjs.map +1 -0
- package/dist/separator.d.cts +7 -0
- package/dist/separator.d.ts +7 -0
- package/dist/separator.js +4 -0
- package/dist/separator.js.map +1 -0
- package/dist/sidebar.cjs +29 -0
- package/dist/sidebar.cjs.map +1 -0
- package/dist/sidebar.d.cts +58 -0
- package/dist/sidebar.d.ts +58 -0
- package/dist/sidebar.js +4 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/skeleton.cjs +19 -0
- package/dist/skeleton.cjs.map +1 -0
- package/dist/skeleton.d.cts +5 -0
- package/dist/skeleton.d.ts +5 -0
- package/dist/skeleton.js +17 -0
- package/dist/skeleton.js.map +1 -0
- package/dist/sonner.cjs +40 -0
- package/dist/sonner.cjs.map +1 -0
- package/dist/sonner.d.cts +6 -0
- package/dist/sonner.d.ts +6 -0
- package/dist/sonner.js +38 -0
- package/dist/sonner.js.map +1 -0
- package/dist/sparkline.cjs +44 -0
- package/dist/sparkline.cjs.map +1 -0
- package/dist/sparkline.d.cts +12 -0
- package/dist/sparkline.d.ts +12 -0
- package/dist/sparkline.js +42 -0
- package/dist/sparkline.js.map +1 -0
- package/dist/spinner.cjs +13 -0
- package/dist/spinner.cjs.map +1 -0
- package/dist/spinner.d.cts +5 -0
- package/dist/spinner.d.ts +5 -0
- package/dist/spinner.js +11 -0
- package/dist/spinner.js.map +1 -0
- package/dist/stat-card.cjs +65 -0
- package/dist/stat-card.cjs.map +1 -0
- package/dist/stat-card.d.cts +22 -0
- package/dist/stat-card.d.ts +22 -0
- package/dist/stat-card.js +61 -0
- package/dist/stat-card.js.map +1 -0
- package/dist/status-dot.cjs +32 -0
- package/dist/status-dot.cjs.map +1 -0
- package/dist/status-dot.d.cts +11 -0
- package/dist/status-dot.d.ts +11 -0
- package/dist/status-dot.js +29 -0
- package/dist/status-dot.js.map +1 -0
- package/dist/switch.cjs +38 -0
- package/dist/switch.cjs.map +1 -0
- package/dist/switch.d.cts +9 -0
- package/dist/switch.d.ts +9 -0
- package/dist/switch.js +36 -0
- package/dist/switch.js.map +1 -0
- package/dist/table.cjs +118 -0
- package/dist/table.cjs.map +1 -0
- package/dist/table.d.cts +13 -0
- package/dist/table.d.ts +13 -0
- package/dist/table.js +109 -0
- package/dist/table.js.map +1 -0
- package/dist/tabs.cjs +124 -0
- package/dist/tabs.cjs.map +1 -0
- package/dist/tabs.d.cts +15 -0
- package/dist/tabs.d.ts +15 -0
- package/dist/tabs.js +118 -0
- package/dist/tabs.js.map +1 -0
- package/dist/text-link.cjs +51 -0
- package/dist/text-link.cjs.map +1 -0
- package/dist/text-link.d.cts +15 -0
- package/dist/text-link.d.ts +15 -0
- package/dist/text-link.js +48 -0
- package/dist/text-link.js.map +1 -0
- package/dist/textarea.cjs +13 -0
- package/dist/textarea.cjs.map +1 -0
- package/dist/textarea.d.cts +6 -0
- package/dist/textarea.d.ts +6 -0
- package/dist/textarea.js +4 -0
- package/dist/textarea.js.map +1 -0
- package/dist/theme.css +109 -0
- package/dist/timeline.cjs +171 -0
- package/dist/timeline.cjs.map +1 -0
- package/dist/timeline.d.cts +28 -0
- package/dist/timeline.d.ts +28 -0
- package/dist/timeline.js +162 -0
- package/dist/timeline.js.map +1 -0
- package/dist/toggle-group.cjs +155 -0
- package/dist/toggle-group.cjs.map +1 -0
- package/dist/toggle-group.d.cts +31 -0
- package/dist/toggle-group.d.ts +31 -0
- package/dist/toggle-group.js +130 -0
- package/dist/toggle-group.js.map +1 -0
- package/dist/toggle.cjs +21 -0
- package/dist/toggle.cjs.map +1 -0
- package/dist/toggle.d.cts +23 -0
- package/dist/toggle.d.ts +23 -0
- package/dist/toggle.js +4 -0
- package/dist/toggle.js.map +1 -0
- package/dist/tokens.css +77 -0
- package/dist/tooltip.cjs +25 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.d.cts +10 -0
- package/dist/tooltip.d.ts +10 -0
- package/dist/tooltip.js +4 -0
- package/dist/tooltip.js.map +1 -0
- package/package.json +61 -4
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk6YHDDRIM_cjs = require('./chunk-6YHDDRIM.cjs');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
var RING_MASK = {
|
|
8
|
+
WebkitMask: "linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",
|
|
9
|
+
WebkitMaskComposite: "xor",
|
|
10
|
+
maskComposite: "exclude"
|
|
11
|
+
};
|
|
12
|
+
function PillTabs({
|
|
13
|
+
tabs,
|
|
14
|
+
activeId,
|
|
15
|
+
onSelect,
|
|
16
|
+
label = "Sections",
|
|
17
|
+
flush = false
|
|
18
|
+
}) {
|
|
19
|
+
const activeRef = react.useRef(null);
|
|
20
|
+
const [scrolled, setScrolled] = react.useState(false);
|
|
21
|
+
react.useEffect(() => {
|
|
22
|
+
activeRef.current?.scrollIntoView({
|
|
23
|
+
behavior: "smooth",
|
|
24
|
+
inline: "center",
|
|
25
|
+
block: "nearest"
|
|
26
|
+
});
|
|
27
|
+
}, [activeId]);
|
|
28
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "pill-tabs", className: "relative shrink-0 border-b border-line", children: [
|
|
29
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
role: "tablist",
|
|
33
|
+
"aria-label": label,
|
|
34
|
+
onScroll: (e) => setScrolled(e.currentTarget.scrollLeft > 4),
|
|
35
|
+
className: chunk6YHDDRIM_cjs.cn(
|
|
36
|
+
"no-scrollbar flex snap-x snap-proximity gap-1.5 overflow-x-auto py-2 md:py-2.5",
|
|
37
|
+
!flush && "px-4 md:px-7"
|
|
38
|
+
),
|
|
39
|
+
children: tabs.map((tab) => {
|
|
40
|
+
const isActive = tab.id === activeId;
|
|
41
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
42
|
+
"button",
|
|
43
|
+
{
|
|
44
|
+
ref: isActive ? activeRef : void 0,
|
|
45
|
+
type: "button",
|
|
46
|
+
role: "tab",
|
|
47
|
+
"data-slot": "pill-tabs-tab",
|
|
48
|
+
"aria-selected": isActive,
|
|
49
|
+
"data-onboarding": tab.onboarding,
|
|
50
|
+
onClick: () => onSelect(tab.id),
|
|
51
|
+
className: chunk6YHDDRIM_cjs.cn(
|
|
52
|
+
"relative flex min-h-11 shrink-0 snap-center items-center whitespace-nowrap rounded-[10px] px-3.5 text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-fine:min-h-0 md:px-3 md:py-1.5",
|
|
53
|
+
isActive ? "bg-surface text-foreground" : "text-muted-foreground active:bg-surface/60 md:hover:bg-surface/60 md:hover:text-foreground"
|
|
54
|
+
),
|
|
55
|
+
children: [
|
|
56
|
+
isActive && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
57
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
"span",
|
|
59
|
+
{
|
|
60
|
+
"aria-hidden": "true",
|
|
61
|
+
className: "pointer-events-none absolute inset-0 rounded-[10px] blur-[2px]",
|
|
62
|
+
style: {
|
|
63
|
+
padding: "2px",
|
|
64
|
+
background: "linear-gradient(to top, rgba(245,158,11,0.75) 10%, rgba(245,158,11,0) 40%)",
|
|
65
|
+
...RING_MASK
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
+
"span",
|
|
71
|
+
{
|
|
72
|
+
"aria-hidden": "true",
|
|
73
|
+
className: "pointer-events-none absolute inset-0 rounded-[10px]",
|
|
74
|
+
style: {
|
|
75
|
+
padding: "1px",
|
|
76
|
+
background: "linear-gradient(to top, rgba(245,158,11,1) 10%, rgba(245,158,11,0) 40%)",
|
|
77
|
+
...RING_MASK
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
] }),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative", children: tab.label })
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
tab.id
|
|
86
|
+
);
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
),
|
|
90
|
+
scrolled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
"aria-hidden": "true",
|
|
94
|
+
className: "pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-background to-transparent md:hidden"
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
98
|
+
"div",
|
|
99
|
+
{
|
|
100
|
+
"aria-hidden": "true",
|
|
101
|
+
className: "pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent md:hidden"
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
] });
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
exports.PillTabs = PillTabs;
|
|
108
|
+
//# sourceMappingURL=pill-tabs.cjs.map
|
|
109
|
+
//# sourceMappingURL=pill-tabs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/pill-tabs.tsx"],"names":["useRef","useState","useEffect","jsxs","jsx","cn","Fragment"],"mappings":"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","file":"pill-tabs.cjs","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { cn } from \"./lib/utils\";\nimport { type CSSProperties, useEffect, useRef, useState } from \"react\";\n\n// CSS mask that keeps only the border ring of a box: a gradient set as the\n// element's background then fills just the border (the interior is masked out).\n// Pair with a `padding` equal to the desired border thickness.\nconst RING_MASK: CSSProperties = {\n WebkitMask:\n \"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\",\n WebkitMaskComposite: \"xor\",\n maskComposite: \"exclude\",\n};\n\nexport interface PillTab<T extends string> {\n id: T;\n label: string;\n /** Getting-started spotlight anchor rendered as ``data-onboarding``. */\n onboarding?: string;\n}\n\n// The product's horizontal tab bar (Figma \"tabBar\"): the inner header on every\n// detail page that has sub-sections — agent Configure, models, training runs,\n// datasets, knowledge bases. Active tab gets a subtle surface fill, foreground\n// text and an amber border-glow; inactive tabs are muted.\n//\n// `tabs` draws the same pills over Radix Tabs (with panels); this one is a\n// bare strip for a page that swaps its own content by id.\n//\n// A dozen tabs never fit a phone, so the strip scrolls horizontally there. Two\n// things make that usable: the active tab scrolls itself into view (a\n// deep-linked `?tab=monetize` would otherwise land off-screen with nothing to\n// hint it exists), and a fade on the trailing edge advertises the overflow.\nexport function PillTabs<T extends string>({\n tabs,\n activeId,\n onSelect,\n label = \"Sections\",\n flush = false,\n}: {\n tabs: readonly PillTab<T>[];\n activeId: T;\n onSelect: (id: T) => void;\n /** Names the tablist for screen readers. */\n label?: string;\n /** Drop the horizontal padding.\n *\n * The default gutter is for a full-bleed page, where this strip spans the\n * viewport and supplies its own inset. Inside a container that already pads\n * — a detail view nested in a padded page — that gutter indents the tabs\n * relative to everything above and below them. */\n flush?: boolean;\n}) {\n const activeRef = useRef<HTMLButtonElement | null>(null);\n // Scrolled past the first tab: a matching fade on the leading edge says\n // there is more that way, instead of a word cut in half.\n const [scrolled, setScrolled] = useState(false);\n\n useEffect(() => {\n activeRef.current?.scrollIntoView({\n behavior: \"smooth\",\n inline: \"center\",\n block: \"nearest\",\n });\n }, [activeId]);\n\n return (\n <div data-slot=\"pill-tabs\" className=\"relative shrink-0 border-b border-line\">\n <div\n role=\"tablist\"\n aria-label={label}\n onScroll={(e) => setScrolled(e.currentTarget.scrollLeft > 4)}\n className={cn(\n \"no-scrollbar flex snap-x snap-proximity gap-1.5 overflow-x-auto py-2 md:py-2.5\",\n !flush && \"px-4 md:px-7\",\n )}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === activeId;\n return (\n <button\n key={tab.id}\n ref={isActive ? activeRef : undefined}\n type=\"button\"\n role=\"tab\"\n data-slot=\"pill-tabs-tab\"\n aria-selected={isActive}\n data-onboarding={tab.onboarding}\n onClick={() => onSelect(tab.id)}\n className={cn(\n \"relative flex min-h-11 shrink-0 snap-center items-center whitespace-nowrap rounded-[10px] px-3.5 text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-fine:min-h-0 md:px-3 md:py-1.5\",\n isActive\n ? \"bg-surface text-foreground\"\n : \"text-muted-foreground active:bg-surface/60 md:hover:bg-surface/60 md:hover:text-foreground\",\n )}\n >\n {/* Amber border-glow: bright along the bottom edge, fading upward\n along the rounded corners. The blurred copy adds the bloom. */}\n {isActive && (\n <>\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 rounded-[10px] blur-[2px]\"\n style={{\n padding: \"2px\",\n background:\n \"linear-gradient(to top, rgba(245,158,11,0.75) 10%, rgba(245,158,11,0) 40%)\",\n ...RING_MASK,\n }}\n />\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 rounded-[10px]\"\n style={{\n padding: \"1px\",\n background:\n \"linear-gradient(to top, rgba(245,158,11,1) 10%, rgba(245,158,11,0) 40%)\",\n ...RING_MASK,\n }}\n />\n </>\n )}\n <span className=\"relative\">{tab.label}</span>\n </button>\n );\n })}\n </div>\n {/* Overflow hints. Decorative and non-interactive, so taps still reach\n the tab underneath. */}\n {scrolled && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-background to-transparent md:hidden\"\n />\n )}\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent md:hidden\"\n />\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface PillTab<T extends string> {
|
|
4
|
+
id: T;
|
|
5
|
+
label: string;
|
|
6
|
+
/** Getting-started spotlight anchor rendered as ``data-onboarding``. */
|
|
7
|
+
onboarding?: string;
|
|
8
|
+
}
|
|
9
|
+
declare function PillTabs<T extends string>({ tabs, activeId, onSelect, label, flush, }: {
|
|
10
|
+
tabs: readonly PillTab<T>[];
|
|
11
|
+
activeId: T;
|
|
12
|
+
onSelect: (id: T) => void;
|
|
13
|
+
/** Names the tablist for screen readers. */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Drop the horizontal padding.
|
|
16
|
+
*
|
|
17
|
+
* The default gutter is for a full-bleed page, where this strip spans the
|
|
18
|
+
* viewport and supplies its own inset. Inside a container that already pads
|
|
19
|
+
* — a detail view nested in a padded page — that gutter indents the tabs
|
|
20
|
+
* relative to everything above and below them. */
|
|
21
|
+
flush?: boolean;
|
|
22
|
+
}): react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { type PillTab, PillTabs };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface PillTab<T extends string> {
|
|
4
|
+
id: T;
|
|
5
|
+
label: string;
|
|
6
|
+
/** Getting-started spotlight anchor rendered as ``data-onboarding``. */
|
|
7
|
+
onboarding?: string;
|
|
8
|
+
}
|
|
9
|
+
declare function PillTabs<T extends string>({ tabs, activeId, onSelect, label, flush, }: {
|
|
10
|
+
tabs: readonly PillTab<T>[];
|
|
11
|
+
activeId: T;
|
|
12
|
+
onSelect: (id: T) => void;
|
|
13
|
+
/** Names the tablist for screen readers. */
|
|
14
|
+
label?: string;
|
|
15
|
+
/** Drop the horizontal padding.
|
|
16
|
+
*
|
|
17
|
+
* The default gutter is for a full-bleed page, where this strip spans the
|
|
18
|
+
* viewport and supplies its own inset. Inside a container that already pads
|
|
19
|
+
* — a detail view nested in a padded page — that gutter indents the tabs
|
|
20
|
+
* relative to everything above and below them. */
|
|
21
|
+
flush?: boolean;
|
|
22
|
+
}): react_jsx_runtime.JSX.Element;
|
|
23
|
+
|
|
24
|
+
export { type PillTab, PillTabs };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { cn } from './chunk-LZGII7SX.js';
|
|
2
|
+
import { useRef, useState, useEffect } from 'react';
|
|
3
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
var RING_MASK = {
|
|
6
|
+
WebkitMask: "linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",
|
|
7
|
+
WebkitMaskComposite: "xor",
|
|
8
|
+
maskComposite: "exclude"
|
|
9
|
+
};
|
|
10
|
+
function PillTabs({
|
|
11
|
+
tabs,
|
|
12
|
+
activeId,
|
|
13
|
+
onSelect,
|
|
14
|
+
label = "Sections",
|
|
15
|
+
flush = false
|
|
16
|
+
}) {
|
|
17
|
+
const activeRef = useRef(null);
|
|
18
|
+
const [scrolled, setScrolled] = useState(false);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
activeRef.current?.scrollIntoView({
|
|
21
|
+
behavior: "smooth",
|
|
22
|
+
inline: "center",
|
|
23
|
+
block: "nearest"
|
|
24
|
+
});
|
|
25
|
+
}, [activeId]);
|
|
26
|
+
return /* @__PURE__ */ jsxs("div", { "data-slot": "pill-tabs", className: "relative shrink-0 border-b border-line", children: [
|
|
27
|
+
/* @__PURE__ */ jsx(
|
|
28
|
+
"div",
|
|
29
|
+
{
|
|
30
|
+
role: "tablist",
|
|
31
|
+
"aria-label": label,
|
|
32
|
+
onScroll: (e) => setScrolled(e.currentTarget.scrollLeft > 4),
|
|
33
|
+
className: cn(
|
|
34
|
+
"no-scrollbar flex snap-x snap-proximity gap-1.5 overflow-x-auto py-2 md:py-2.5",
|
|
35
|
+
!flush && "px-4 md:px-7"
|
|
36
|
+
),
|
|
37
|
+
children: tabs.map((tab) => {
|
|
38
|
+
const isActive = tab.id === activeId;
|
|
39
|
+
return /* @__PURE__ */ jsxs(
|
|
40
|
+
"button",
|
|
41
|
+
{
|
|
42
|
+
ref: isActive ? activeRef : void 0,
|
|
43
|
+
type: "button",
|
|
44
|
+
role: "tab",
|
|
45
|
+
"data-slot": "pill-tabs-tab",
|
|
46
|
+
"aria-selected": isActive,
|
|
47
|
+
"data-onboarding": tab.onboarding,
|
|
48
|
+
onClick: () => onSelect(tab.id),
|
|
49
|
+
className: cn(
|
|
50
|
+
"relative flex min-h-11 shrink-0 snap-center items-center whitespace-nowrap rounded-[10px] px-3.5 text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-fine:min-h-0 md:px-3 md:py-1.5",
|
|
51
|
+
isActive ? "bg-surface text-foreground" : "text-muted-foreground active:bg-surface/60 md:hover:bg-surface/60 md:hover:text-foreground"
|
|
52
|
+
),
|
|
53
|
+
children: [
|
|
54
|
+
isActive && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
55
|
+
/* @__PURE__ */ jsx(
|
|
56
|
+
"span",
|
|
57
|
+
{
|
|
58
|
+
"aria-hidden": "true",
|
|
59
|
+
className: "pointer-events-none absolute inset-0 rounded-[10px] blur-[2px]",
|
|
60
|
+
style: {
|
|
61
|
+
padding: "2px",
|
|
62
|
+
background: "linear-gradient(to top, rgba(245,158,11,0.75) 10%, rgba(245,158,11,0) 40%)",
|
|
63
|
+
...RING_MASK
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ jsx(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
"aria-hidden": "true",
|
|
71
|
+
className: "pointer-events-none absolute inset-0 rounded-[10px]",
|
|
72
|
+
style: {
|
|
73
|
+
padding: "1px",
|
|
74
|
+
background: "linear-gradient(to top, rgba(245,158,11,1) 10%, rgba(245,158,11,0) 40%)",
|
|
75
|
+
...RING_MASK
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
] }),
|
|
80
|
+
/* @__PURE__ */ jsx("span", { className: "relative", children: tab.label })
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
tab.id
|
|
84
|
+
);
|
|
85
|
+
})
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
scrolled && /* @__PURE__ */ jsx(
|
|
89
|
+
"div",
|
|
90
|
+
{
|
|
91
|
+
"aria-hidden": "true",
|
|
92
|
+
className: "pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-background to-transparent md:hidden"
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
/* @__PURE__ */ jsx(
|
|
96
|
+
"div",
|
|
97
|
+
{
|
|
98
|
+
"aria-hidden": "true",
|
|
99
|
+
className: "pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent md:hidden"
|
|
100
|
+
}
|
|
101
|
+
)
|
|
102
|
+
] });
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export { PillTabs };
|
|
106
|
+
//# sourceMappingURL=pill-tabs.js.map
|
|
107
|
+
//# sourceMappingURL=pill-tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/pill-tabs.tsx"],"names":[],"mappings":"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","file":"pill-tabs.js","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { cn } from \"./lib/utils\";\nimport { type CSSProperties, useEffect, useRef, useState } from \"react\";\n\n// CSS mask that keeps only the border ring of a box: a gradient set as the\n// element's background then fills just the border (the interior is masked out).\n// Pair with a `padding` equal to the desired border thickness.\nconst RING_MASK: CSSProperties = {\n WebkitMask:\n \"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\",\n WebkitMaskComposite: \"xor\",\n maskComposite: \"exclude\",\n};\n\nexport interface PillTab<T extends string> {\n id: T;\n label: string;\n /** Getting-started spotlight anchor rendered as ``data-onboarding``. */\n onboarding?: string;\n}\n\n// The product's horizontal tab bar (Figma \"tabBar\"): the inner header on every\n// detail page that has sub-sections — agent Configure, models, training runs,\n// datasets, knowledge bases. Active tab gets a subtle surface fill, foreground\n// text and an amber border-glow; inactive tabs are muted.\n//\n// `tabs` draws the same pills over Radix Tabs (with panels); this one is a\n// bare strip for a page that swaps its own content by id.\n//\n// A dozen tabs never fit a phone, so the strip scrolls horizontally there. Two\n// things make that usable: the active tab scrolls itself into view (a\n// deep-linked `?tab=monetize` would otherwise land off-screen with nothing to\n// hint it exists), and a fade on the trailing edge advertises the overflow.\nexport function PillTabs<T extends string>({\n tabs,\n activeId,\n onSelect,\n label = \"Sections\",\n flush = false,\n}: {\n tabs: readonly PillTab<T>[];\n activeId: T;\n onSelect: (id: T) => void;\n /** Names the tablist for screen readers. */\n label?: string;\n /** Drop the horizontal padding.\n *\n * The default gutter is for a full-bleed page, where this strip spans the\n * viewport and supplies its own inset. Inside a container that already pads\n * — a detail view nested in a padded page — that gutter indents the tabs\n * relative to everything above and below them. */\n flush?: boolean;\n}) {\n const activeRef = useRef<HTMLButtonElement | null>(null);\n // Scrolled past the first tab: a matching fade on the leading edge says\n // there is more that way, instead of a word cut in half.\n const [scrolled, setScrolled] = useState(false);\n\n useEffect(() => {\n activeRef.current?.scrollIntoView({\n behavior: \"smooth\",\n inline: \"center\",\n block: \"nearest\",\n });\n }, [activeId]);\n\n return (\n <div data-slot=\"pill-tabs\" className=\"relative shrink-0 border-b border-line\">\n <div\n role=\"tablist\"\n aria-label={label}\n onScroll={(e) => setScrolled(e.currentTarget.scrollLeft > 4)}\n className={cn(\n \"no-scrollbar flex snap-x snap-proximity gap-1.5 overflow-x-auto py-2 md:py-2.5\",\n !flush && \"px-4 md:px-7\",\n )}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === activeId;\n return (\n <button\n key={tab.id}\n ref={isActive ? activeRef : undefined}\n type=\"button\"\n role=\"tab\"\n data-slot=\"pill-tabs-tab\"\n aria-selected={isActive}\n data-onboarding={tab.onboarding}\n onClick={() => onSelect(tab.id)}\n className={cn(\n \"relative flex min-h-11 shrink-0 snap-center items-center whitespace-nowrap rounded-[10px] px-3.5 text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-fine:min-h-0 md:px-3 md:py-1.5\",\n isActive\n ? \"bg-surface text-foreground\"\n : \"text-muted-foreground active:bg-surface/60 md:hover:bg-surface/60 md:hover:text-foreground\",\n )}\n >\n {/* Amber border-glow: bright along the bottom edge, fading upward\n along the rounded corners. The blurred copy adds the bloom. */}\n {isActive && (\n <>\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 rounded-[10px] blur-[2px]\"\n style={{\n padding: \"2px\",\n background:\n \"linear-gradient(to top, rgba(245,158,11,0.75) 10%, rgba(245,158,11,0) 40%)\",\n ...RING_MASK,\n }}\n />\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 rounded-[10px]\"\n style={{\n padding: \"1px\",\n background:\n \"linear-gradient(to top, rgba(245,158,11,1) 10%, rgba(245,158,11,0) 40%)\",\n ...RING_MASK,\n }}\n />\n </>\n )}\n <span className=\"relative\">{tab.label}</span>\n </button>\n );\n })}\n </div>\n {/* Overflow hints. Decorative and non-interactive, so taps still reach\n the tab underneath. */}\n {scrolled && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-background to-transparent md:hidden\"\n />\n )}\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent md:hidden\"\n />\n </div>\n );\n}\n"]}
|
package/dist/popover.cjs
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkUXSDDJXM_cjs = require('./chunk-UXSDDJXM.cjs');
|
|
4
|
+
require('./chunk-6YHDDRIM.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, "Popover", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function () { return chunkUXSDDJXM_cjs.Popover; }
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "PopoverAnchor", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () { return chunkUXSDDJXM_cjs.PopoverAnchor; }
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "PopoverContent", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return chunkUXSDDJXM_cjs.PopoverContent; }
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "PopoverDescription", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () { return chunkUXSDDJXM_cjs.PopoverDescription; }
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "PopoverHeader", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () { return chunkUXSDDJXM_cjs.PopoverHeader; }
|
|
27
|
+
});
|
|
28
|
+
Object.defineProperty(exports, "PopoverTitle", {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () { return chunkUXSDDJXM_cjs.PopoverTitle; }
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "PopoverTrigger", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () { return chunkUXSDDJXM_cjs.PopoverTrigger; }
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=popover.cjs.map
|
|
37
|
+
//# sourceMappingURL=popover.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"popover.cjs"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Popover as Popover$1 } from 'radix-ui';
|
|
4
|
+
|
|
5
|
+
declare function Popover({ ...props }: React.ComponentProps<typeof Popover$1.Root>): react_jsx_runtime.JSX.Element;
|
|
6
|
+
declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover$1.Trigger>): react_jsx_runtime.JSX.Element;
|
|
7
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof Popover$1.Content>): react_jsx_runtime.JSX.Element;
|
|
8
|
+
declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover$1.Anchor>): react_jsx_runtime.JSX.Element;
|
|
9
|
+
declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
|
|
10
|
+
declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): react_jsx_runtime.JSX.Element;
|
|
11
|
+
declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Popover as Popover$1 } from 'radix-ui';
|
|
4
|
+
|
|
5
|
+
declare function Popover({ ...props }: React.ComponentProps<typeof Popover$1.Root>): react_jsx_runtime.JSX.Element;
|
|
6
|
+
declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover$1.Trigger>): react_jsx_runtime.JSX.Element;
|
|
7
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof Popover$1.Content>): react_jsx_runtime.JSX.Element;
|
|
8
|
+
declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover$1.Anchor>): react_jsx_runtime.JSX.Element;
|
|
9
|
+
declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
|
|
10
|
+
declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): react_jsx_runtime.JSX.Element;
|
|
11
|
+
declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
|
package/dist/popover.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"popover.js"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk6YHDDRIM_cjs = require('./chunk-6YHDDRIM.cjs');
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
|
|
6
|
+
function ProgressBar({
|
|
7
|
+
value,
|
|
8
|
+
max = 100,
|
|
9
|
+
color = "var(--primary)",
|
|
10
|
+
animated = false,
|
|
11
|
+
className
|
|
12
|
+
}) {
|
|
13
|
+
const pct = Math.min(value / max * 100, 100);
|
|
14
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15
|
+
"div",
|
|
16
|
+
{
|
|
17
|
+
role: "progressbar",
|
|
18
|
+
"aria-valuemin": 0,
|
|
19
|
+
"aria-valuemax": max,
|
|
20
|
+
"aria-valuenow": Math.min(value, max),
|
|
21
|
+
"data-slot": "progress-bar",
|
|
22
|
+
className: chunk6YHDDRIM_cjs.cn("h-1 bg-line rounded-sm overflow-hidden", className),
|
|
23
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: "h-full rounded-sm transition-[width] duration-500 ease-out",
|
|
27
|
+
style: {
|
|
28
|
+
width: `${pct}%`,
|
|
29
|
+
backgroundColor: color,
|
|
30
|
+
animation: animated ? "progress-bar 1s ease" : void 0
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
)
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
exports.ProgressBar = ProgressBar;
|
|
39
|
+
//# sourceMappingURL=progress-bar.cjs.map
|
|
40
|
+
//# sourceMappingURL=progress-bar.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/progress-bar.tsx"],"names":["jsx","cn"],"mappings":";;;;;AAaO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,KAAA,GAAQ,gBAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAK,KAAA,GAAQ,GAAA,GAAO,KAAK,GAAG,CAAA;AAE7C,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MACf,eAAA,EAAe,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAAA,MAClC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAWC,oBAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,MAEjE,QAAA,kBAAAD,cAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,4DAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,YACb,eAAA,EAAiB,KAAA;AAAA,YACjB,SAAA,EAAW,WAAW,sBAAA,GAAyB;AAAA;AACjD;AAAA;AACF;AAAA,GACF;AAEJ","file":"progress-bar.cjs","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { cn } from \"./lib/utils\";\n\ninterface ProgressBarProps {\n value: number;\n max?: number;\n color?: string;\n animated?: boolean;\n className?: string;\n}\n\nexport function ProgressBar({\n value,\n max = 100,\n color = \"var(--primary)\",\n animated = false,\n className,\n}: ProgressBarProps) {\n const pct = Math.min((value / max) * 100, 100);\n\n return (\n <div\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={Math.min(value, max)}\n data-slot=\"progress-bar\"\n className={cn(\"h-1 bg-line rounded-sm overflow-hidden\", className)}\n >\n <div\n className=\"h-full rounded-sm transition-[width] duration-500 ease-out\"\n style={{\n width: `${pct}%`,\n backgroundColor: color,\n animation: animated ? \"progress-bar 1s ease\" : undefined,\n }}\n />\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ProgressBarProps {
|
|
4
|
+
value: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
color?: string;
|
|
7
|
+
animated?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
declare function ProgressBar({ value, max, color, animated, className, }: ProgressBarProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
|
|
12
|
+
export { ProgressBar };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
interface ProgressBarProps {
|
|
4
|
+
value: number;
|
|
5
|
+
max?: number;
|
|
6
|
+
color?: string;
|
|
7
|
+
animated?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
declare function ProgressBar({ value, max, color, animated, className, }: ProgressBarProps): react_jsx_runtime.JSX.Element;
|
|
11
|
+
|
|
12
|
+
export { ProgressBar };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { cn } from './chunk-LZGII7SX.js';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
function ProgressBar({
|
|
5
|
+
value,
|
|
6
|
+
max = 100,
|
|
7
|
+
color = "var(--primary)",
|
|
8
|
+
animated = false,
|
|
9
|
+
className
|
|
10
|
+
}) {
|
|
11
|
+
const pct = Math.min(value / max * 100, 100);
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
"div",
|
|
14
|
+
{
|
|
15
|
+
role: "progressbar",
|
|
16
|
+
"aria-valuemin": 0,
|
|
17
|
+
"aria-valuemax": max,
|
|
18
|
+
"aria-valuenow": Math.min(value, max),
|
|
19
|
+
"data-slot": "progress-bar",
|
|
20
|
+
className: cn("h-1 bg-line rounded-sm overflow-hidden", className),
|
|
21
|
+
children: /* @__PURE__ */ jsx(
|
|
22
|
+
"div",
|
|
23
|
+
{
|
|
24
|
+
className: "h-full rounded-sm transition-[width] duration-500 ease-out",
|
|
25
|
+
style: {
|
|
26
|
+
width: `${pct}%`,
|
|
27
|
+
backgroundColor: color,
|
|
28
|
+
animation: animated ? "progress-bar 1s ease" : void 0
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { ProgressBar };
|
|
37
|
+
//# sourceMappingURL=progress-bar.js.map
|
|
38
|
+
//# sourceMappingURL=progress-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/progress-bar.tsx"],"names":[],"mappings":";;;AAaO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,KAAA,GAAQ,gBAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAK,KAAA,GAAQ,GAAA,GAAO,KAAK,GAAG,CAAA;AAE7C,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,aAAA;AAAA,MACL,eAAA,EAAe,CAAA;AAAA,MACf,eAAA,EAAe,GAAA;AAAA,MACf,eAAA,EAAe,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAAA,MAClC,WAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,SAAS,CAAA;AAAA,MAEjE,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,4DAAA;AAAA,UACV,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,YACb,eAAA,EAAiB,KAAA;AAAA,YACjB,SAAA,EAAW,WAAW,sBAAA,GAAyB;AAAA;AACjD;AAAA;AACF;AAAA,GACF;AAEJ","file":"progress-bar.js","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { cn } from \"./lib/utils\";\n\ninterface ProgressBarProps {\n value: number;\n max?: number;\n color?: string;\n animated?: boolean;\n className?: string;\n}\n\nexport function ProgressBar({\n value,\n max = 100,\n color = \"var(--primary)\",\n animated = false,\n className,\n}: ProgressBarProps) {\n const pct = Math.min((value / max) * 100, 100);\n\n return (\n <div\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={Math.min(value, max)}\n data-slot=\"progress-bar\"\n className={cn(\"h-1 bg-line rounded-sm overflow-hidden\", className)}\n >\n <div\n className=\"h-full rounded-sm transition-[width] duration-500 ease-out\"\n style={{\n width: `${pct}%`,\n backgroundColor: color,\n animation: animated ? \"progress-bar 1s ease\" : undefined,\n }}\n />\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
|
|
5
|
+
// src/rabbit-mark.tsx
|
|
6
|
+
var RABBIT_MARK_PATH = "M49.71,46.83c0,.23.02.45.07.67,2.1.49,4.16,1.07,6.18,1.74.58-.64.94-1.48.94-2.42,0-1.98-1.61-3.59-3.59-3.59s-3.59,1.61-3.59,3.59M33.95,78.3c3.1-5.1,6.72-8.89,11.64-12.21.61-.42,1.24-.8,1.88-1.17.44-.25.61-.66.58-1.05,0-.53-.49-.91-.93-1.12-1.34-.62-2.72-1.5-4.06-2.54-1.57-1.22-3.01-2.59-4.36-4.06-.95-1.04-2.02-2.38-3-3.81-.81-1.18-.63-2.77.43-3.73,1.1-1,2.26-1.92,3.48-2.76.36-.25.72-.49,1.1-.73,2.43-1.55,5.05-2.79,7.79-3.7,3.23-1.07,6.62-1.66,10.03-1.74.59-.35,1.19-.69,1.8-1.01,1.66-.88,3.38-1.62,5.17-2.21,1.58-.54,3.2-.95,4.85-1.24,3.28-.59,6.64-.7,9.95-.32,1.23.14,2.45.34,3.68.62,2.87.64,5.59,1.62,8.09,2.9.54.27.71.95.36,1.45-1.58,2.22-3.46,4.25-5.5,6.05-3.01,2.65-6.51,4.75-10.26,6.17-2.32.88-4.75,1.53-7.22,1.91-.62.1-.78.9-.24,1.22,0,0,.01,0,.02.01,6.97,4.05,13.1,9.22,18.36,15.32.72.83,1.42,1.68,2.1,2.53,3.36,4.22,6.23,8.82,8.56,13.68,1.8,3.73,3.27,7.63,4.39,11.62.73,2.6,1.34,5.24,1.76,7.91.11.76-.87,1.16-1.3.53-1.15-1.69-2.31-3.35-3.61-4.93-1.2-1.46-2.46-2.86-3.75-4.24-5.44-5.8-11.84-10.7-18.84-14.48-7.32-3.94-15.09-6.38-23.44-6.53-2.23-.04-4.46.08-6.68.3-4.05.43-8.02,1.28-11.93,2.4-.03,0-.05.01-.08.02,0,0-.01,0-.02,0-.07.02-.14.03-.21.03-.53,0-.91-.6-.61-1.09M50.95,12.97c-1.31,1.16-2.2,2.71-2.9,4.29-1.66,3.74-2.85,7.74-3.52,11.77-.32,1.92-.56,3.87-1.28,5.69-.17.44-.37.87-.6,1.28-1.18,2.1-3.37,3.19-5.6,3.86-4.96,1.47-10.14,1.97-15.25,2.65-2.37.31-8.03,1.12-7.34,4.69.46,2.36,2.26,4.16,4.08,5.6,2.66,2.11,5.44,4.09,8.33,5.88,1.87,1.15,3.85,2.11,5.6,3.44,1.74,1.33,3.15,3.05,3.58,5.25.22,1.16-.18,2.35-1,3.2-1.57,1.63-3,3.41-4.25,5.29-1.32,2.1-2.38,4.35-3.25,6.65-.59,1.44.97,2.98,2.41,2.37.53-.21,1.07-.41,1.61-.61,2.26-.82,4.68.73,4.93,3.12.17,1.61.38,3.17.63,4.57.46,2.57,3.14,3.63,5.32,1.41,2.84-2.88,4.66-6.31,7.84-8.86,2.53-2.03,6.26-4.17,9.71-3.59,3.17.56,6.27,1.52,9.23,2.85,5.32,2.32,10.36,5.29,14.95,8.86,9.17,7.1,16.56,16.51,21.27,27.1.93,2.07,4.03,1.44,4.1-.83.55-17.71-5.72-35.46-17.11-49.01-2.87-3.42-6.07-6.65-9.59-9.44-.88-.8-1.54-1.7-1.38-2.93.38-2.97,2-4.32,4.04-5.85,2.51-1.89,5.02-3.85,7.16-6.21.03-.03.06-.06.09-.1,1.24-1.37,2.38-2.83,3.4-4.37,1.2-1.81.6-4.26-1.3-5.31,0,0-.96-.52-1.45-.76-2.72-1.34-5.61-2.36-8.6-3.03-2.76-.62-5.58-.93-8.38-.93-2.38,0-4.76.22-7.09.67-1.96.37-3.97-.31-5.25-1.84-.28-.34-.54-.69-.79-1.04-.58-.84-1.09-1.71-1.63-2.58-1.29-2.06-1.87-3.63-2.89-5.84-1.06-2.29-1.85-4.73-3.26-6.86-.73-1.11-1.53-1.54-2.32-1.54s-1.54.41-2.24,1.02";
|
|
7
|
+
var RABBIT_MARK_BOX = {
|
|
8
|
+
x: 14.4021,
|
|
9
|
+
y: 11.93,
|
|
10
|
+
w: 95.1813,
|
|
11
|
+
h: 109.058
|
|
12
|
+
};
|
|
13
|
+
function RabbitMark({ className }) {
|
|
14
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15
|
+
"svg",
|
|
16
|
+
{
|
|
17
|
+
className,
|
|
18
|
+
viewBox: "14.4021 11.93 95.1813 109.058",
|
|
19
|
+
fill: "currentColor",
|
|
20
|
+
"aria-hidden": "true",
|
|
21
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: RABBIT_MARK_PATH })
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
exports.RABBIT_MARK_BOX = RABBIT_MARK_BOX;
|
|
27
|
+
exports.RABBIT_MARK_PATH = RABBIT_MARK_PATH;
|
|
28
|
+
exports.RabbitMark = RabbitMark;
|
|
29
|
+
//# sourceMappingURL=rabbit-mark.cjs.map
|
|
30
|
+
//# sourceMappingURL=rabbit-mark.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/rabbit-mark.tsx"],"names":["jsx"],"mappings":";;;;;AAeO,IAAM,gBAAA,GACX;AAGK,IAAM,eAAA,GAAkB;AAAA,EAC7B,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG,KAAA;AAAA,EACH,CAAA,EAAG,OAAA;AAAA,EACH,CAAA,EAAG;AACL;AAEO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAU,EAA2B;AAChE,EAAA,uBACEA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,OAAA,EAAQ,+BAAA;AAAA,MACR,IAAA,EAAK,cAAA;AAAA,MACL,aAAA,EAAY,MAAA;AAAA,MAEZ,QAAA,kBAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAG,gBAAA,EAAkB;AAAA;AAAA,GAC7B;AAEJ","file":"rabbit-mark.cjs","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\n// The Surogate rabbit, as one path.\n//\n// Lifted from the brand favicon and stripped to the silhouette: the\n// circle, the amber ground and the registered mark all belong to the\n// full lockup, not to a 16px glyph. The viewBox is the path's own\n// bounding box, so the mark fills whatever box it is given the way a\n// lucide icon does, and `currentColor` lets it inherit like one too.\n//\n// The path is exported on its own because the whiteboard also paints\n// it onto a canvas, where there is no DOM to render an `<svg>` into.\n\n/** The rabbit silhouette, in the coordinate space of {@link RABBIT_MARK_BOX}. */\nexport const RABBIT_MARK_PATH =\n \"M49.71,46.83c0,.23.02.45.07.67,2.1.49,4.16,1.07,6.18,1.74.58-.64.94-1.48.94-2.42,0-1.98-1.61-3.59-3.59-3.59s-3.59,1.61-3.59,3.59M33.95,78.3c3.1-5.1,6.72-8.89,11.64-12.21.61-.42,1.24-.8,1.88-1.17.44-.25.61-.66.58-1.05,0-.53-.49-.91-.93-1.12-1.34-.62-2.72-1.5-4.06-2.54-1.57-1.22-3.01-2.59-4.36-4.06-.95-1.04-2.02-2.38-3-3.81-.81-1.18-.63-2.77.43-3.73,1.1-1,2.26-1.92,3.48-2.76.36-.25.72-.49,1.1-.73,2.43-1.55,5.05-2.79,7.79-3.7,3.23-1.07,6.62-1.66,10.03-1.74.59-.35,1.19-.69,1.8-1.01,1.66-.88,3.38-1.62,5.17-2.21,1.58-.54,3.2-.95,4.85-1.24,3.28-.59,6.64-.7,9.95-.32,1.23.14,2.45.34,3.68.62,2.87.64,5.59,1.62,8.09,2.9.54.27.71.95.36,1.45-1.58,2.22-3.46,4.25-5.5,6.05-3.01,2.65-6.51,4.75-10.26,6.17-2.32.88-4.75,1.53-7.22,1.91-.62.1-.78.9-.24,1.22,0,0,.01,0,.02.01,6.97,4.05,13.1,9.22,18.36,15.32.72.83,1.42,1.68,2.1,2.53,3.36,4.22,6.23,8.82,8.56,13.68,1.8,3.73,3.27,7.63,4.39,11.62.73,2.6,1.34,5.24,1.76,7.91.11.76-.87,1.16-1.3.53-1.15-1.69-2.31-3.35-3.61-4.93-1.2-1.46-2.46-2.86-3.75-4.24-5.44-5.8-11.84-10.7-18.84-14.48-7.32-3.94-15.09-6.38-23.44-6.53-2.23-.04-4.46.08-6.68.3-4.05.43-8.02,1.28-11.93,2.4-.03,0-.05.01-.08.02,0,0-.01,0-.02,0-.07.02-.14.03-.21.03-.53,0-.91-.6-.61-1.09M50.95,12.97c-1.31,1.16-2.2,2.71-2.9,4.29-1.66,3.74-2.85,7.74-3.52,11.77-.32,1.92-.56,3.87-1.28,5.69-.17.44-.37.87-.6,1.28-1.18,2.1-3.37,3.19-5.6,3.86-4.96,1.47-10.14,1.97-15.25,2.65-2.37.31-8.03,1.12-7.34,4.69.46,2.36,2.26,4.16,4.08,5.6,2.66,2.11,5.44,4.09,8.33,5.88,1.87,1.15,3.85,2.11,5.6,3.44,1.74,1.33,3.15,3.05,3.58,5.25.22,1.16-.18,2.35-1,3.2-1.57,1.63-3,3.41-4.25,5.29-1.32,2.1-2.38,4.35-3.25,6.65-.59,1.44.97,2.98,2.41,2.37.53-.21,1.07-.41,1.61-.61,2.26-.82,4.68.73,4.93,3.12.17,1.61.38,3.17.63,4.57.46,2.57,3.14,3.63,5.32,1.41,2.84-2.88,4.66-6.31,7.84-8.86,2.53-2.03,6.26-4.17,9.71-3.59,3.17.56,6.27,1.52,9.23,2.85,5.32,2.32,10.36,5.29,14.95,8.86,9.17,7.1,16.56,16.51,21.27,27.1.93,2.07,4.03,1.44,4.1-.83.55-17.71-5.72-35.46-17.11-49.01-2.87-3.42-6.07-6.65-9.59-9.44-.88-.8-1.54-1.7-1.38-2.93.38-2.97,2-4.32,4.04-5.85,2.51-1.89,5.02-3.85,7.16-6.21.03-.03.06-.06.09-.1,1.24-1.37,2.38-2.83,3.4-4.37,1.2-1.81.6-4.26-1.3-5.31,0,0-.96-.52-1.45-.76-2.72-1.34-5.61-2.36-8.6-3.03-2.76-.62-5.58-.93-8.38-.93-2.38,0-4.76.22-7.09.67-1.96.37-3.97-.31-5.25-1.84-.28-.34-.54-.69-.79-1.04-.58-.84-1.09-1.71-1.63-2.58-1.29-2.06-1.87-3.63-2.89-5.84-1.06-2.29-1.85-4.73-3.26-6.86-.73-1.11-1.53-1.54-2.32-1.54s-1.54.41-2.24,1.02\";\n\n/** The path's bounding box: what to scale against when painting it. */\nexport const RABBIT_MARK_BOX = {\n x: 14.4021,\n y: 11.93,\n w: 95.1813,\n h: 109.058,\n} as const;\n\nexport function RabbitMark({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n viewBox=\"14.4021 11.93 95.1813 109.058\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path d={RABBIT_MARK_PATH} />\n </svg>\n );\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
/** The rabbit silhouette, in the coordinate space of {@link RABBIT_MARK_BOX}. */
|
|
4
|
+
declare const RABBIT_MARK_PATH = "M49.71,46.83c0,.23.02.45.07.67,2.1.49,4.16,1.07,6.18,1.74.58-.64.94-1.48.94-2.42,0-1.98-1.61-3.59-3.59-3.59s-3.59,1.61-3.59,3.59M33.95,78.3c3.1-5.1,6.72-8.89,11.64-12.21.61-.42,1.24-.8,1.88-1.17.44-.25.61-.66.58-1.05,0-.53-.49-.91-.93-1.12-1.34-.62-2.72-1.5-4.06-2.54-1.57-1.22-3.01-2.59-4.36-4.06-.95-1.04-2.02-2.38-3-3.81-.81-1.18-.63-2.77.43-3.73,1.1-1,2.26-1.92,3.48-2.76.36-.25.72-.49,1.1-.73,2.43-1.55,5.05-2.79,7.79-3.7,3.23-1.07,6.62-1.66,10.03-1.74.59-.35,1.19-.69,1.8-1.01,1.66-.88,3.38-1.62,5.17-2.21,1.58-.54,3.2-.95,4.85-1.24,3.28-.59,6.64-.7,9.95-.32,1.23.14,2.45.34,3.68.62,2.87.64,5.59,1.62,8.09,2.9.54.27.71.95.36,1.45-1.58,2.22-3.46,4.25-5.5,6.05-3.01,2.65-6.51,4.75-10.26,6.17-2.32.88-4.75,1.53-7.22,1.91-.62.1-.78.9-.24,1.22,0,0,.01,0,.02.01,6.97,4.05,13.1,9.22,18.36,15.32.72.83,1.42,1.68,2.1,2.53,3.36,4.22,6.23,8.82,8.56,13.68,1.8,3.73,3.27,7.63,4.39,11.62.73,2.6,1.34,5.24,1.76,7.91.11.76-.87,1.16-1.3.53-1.15-1.69-2.31-3.35-3.61-4.93-1.2-1.46-2.46-2.86-3.75-4.24-5.44-5.8-11.84-10.7-18.84-14.48-7.32-3.94-15.09-6.38-23.44-6.53-2.23-.04-4.46.08-6.68.3-4.05.43-8.02,1.28-11.93,2.4-.03,0-.05.01-.08.02,0,0-.01,0-.02,0-.07.02-.14.03-.21.03-.53,0-.91-.6-.61-1.09M50.95,12.97c-1.31,1.16-2.2,2.71-2.9,4.29-1.66,3.74-2.85,7.74-3.52,11.77-.32,1.92-.56,3.87-1.28,5.69-.17.44-.37.87-.6,1.28-1.18,2.1-3.37,3.19-5.6,3.86-4.96,1.47-10.14,1.97-15.25,2.65-2.37.31-8.03,1.12-7.34,4.69.46,2.36,2.26,4.16,4.08,5.6,2.66,2.11,5.44,4.09,8.33,5.88,1.87,1.15,3.85,2.11,5.6,3.44,1.74,1.33,3.15,3.05,3.58,5.25.22,1.16-.18,2.35-1,3.2-1.57,1.63-3,3.41-4.25,5.29-1.32,2.1-2.38,4.35-3.25,6.65-.59,1.44.97,2.98,2.41,2.37.53-.21,1.07-.41,1.61-.61,2.26-.82,4.68.73,4.93,3.12.17,1.61.38,3.17.63,4.57.46,2.57,3.14,3.63,5.32,1.41,2.84-2.88,4.66-6.31,7.84-8.86,2.53-2.03,6.26-4.17,9.71-3.59,3.17.56,6.27,1.52,9.23,2.85,5.32,2.32,10.36,5.29,14.95,8.86,9.17,7.1,16.56,16.51,21.27,27.1.93,2.07,4.03,1.44,4.1-.83.55-17.71-5.72-35.46-17.11-49.01-2.87-3.42-6.07-6.65-9.59-9.44-.88-.8-1.54-1.7-1.38-2.93.38-2.97,2-4.32,4.04-5.85,2.51-1.89,5.02-3.85,7.16-6.21.03-.03.06-.06.09-.1,1.24-1.37,2.38-2.83,3.4-4.37,1.2-1.81.6-4.26-1.3-5.31,0,0-.96-.52-1.45-.76-2.72-1.34-5.61-2.36-8.6-3.03-2.76-.62-5.58-.93-8.38-.93-2.38,0-4.76.22-7.09.67-1.96.37-3.97-.31-5.25-1.84-.28-.34-.54-.69-.79-1.04-.58-.84-1.09-1.71-1.63-2.58-1.29-2.06-1.87-3.63-2.89-5.84-1.06-2.29-1.85-4.73-3.26-6.86-.73-1.11-1.53-1.54-2.32-1.54s-1.54.41-2.24,1.02";
|
|
5
|
+
/** The path's bounding box: what to scale against when painting it. */
|
|
6
|
+
declare const RABBIT_MARK_BOX: {
|
|
7
|
+
readonly x: 14.4021;
|
|
8
|
+
readonly y: 11.93;
|
|
9
|
+
readonly w: 95.1813;
|
|
10
|
+
readonly h: 109.058;
|
|
11
|
+
};
|
|
12
|
+
declare function RabbitMark({ className }: {
|
|
13
|
+
className?: string;
|
|
14
|
+
}): react_jsx_runtime.JSX.Element;
|
|
15
|
+
|
|
16
|
+
export { RABBIT_MARK_BOX, RABBIT_MARK_PATH, RabbitMark };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
/** The rabbit silhouette, in the coordinate space of {@link RABBIT_MARK_BOX}. */
|
|
4
|
+
declare const RABBIT_MARK_PATH = "M49.71,46.83c0,.23.02.45.07.67,2.1.49,4.16,1.07,6.18,1.74.58-.64.94-1.48.94-2.42,0-1.98-1.61-3.59-3.59-3.59s-3.59,1.61-3.59,3.59M33.95,78.3c3.1-5.1,6.72-8.89,11.64-12.21.61-.42,1.24-.8,1.88-1.17.44-.25.61-.66.58-1.05,0-.53-.49-.91-.93-1.12-1.34-.62-2.72-1.5-4.06-2.54-1.57-1.22-3.01-2.59-4.36-4.06-.95-1.04-2.02-2.38-3-3.81-.81-1.18-.63-2.77.43-3.73,1.1-1,2.26-1.92,3.48-2.76.36-.25.72-.49,1.1-.73,2.43-1.55,5.05-2.79,7.79-3.7,3.23-1.07,6.62-1.66,10.03-1.74.59-.35,1.19-.69,1.8-1.01,1.66-.88,3.38-1.62,5.17-2.21,1.58-.54,3.2-.95,4.85-1.24,3.28-.59,6.64-.7,9.95-.32,1.23.14,2.45.34,3.68.62,2.87.64,5.59,1.62,8.09,2.9.54.27.71.95.36,1.45-1.58,2.22-3.46,4.25-5.5,6.05-3.01,2.65-6.51,4.75-10.26,6.17-2.32.88-4.75,1.53-7.22,1.91-.62.1-.78.9-.24,1.22,0,0,.01,0,.02.01,6.97,4.05,13.1,9.22,18.36,15.32.72.83,1.42,1.68,2.1,2.53,3.36,4.22,6.23,8.82,8.56,13.68,1.8,3.73,3.27,7.63,4.39,11.62.73,2.6,1.34,5.24,1.76,7.91.11.76-.87,1.16-1.3.53-1.15-1.69-2.31-3.35-3.61-4.93-1.2-1.46-2.46-2.86-3.75-4.24-5.44-5.8-11.84-10.7-18.84-14.48-7.32-3.94-15.09-6.38-23.44-6.53-2.23-.04-4.46.08-6.68.3-4.05.43-8.02,1.28-11.93,2.4-.03,0-.05.01-.08.02,0,0-.01,0-.02,0-.07.02-.14.03-.21.03-.53,0-.91-.6-.61-1.09M50.95,12.97c-1.31,1.16-2.2,2.71-2.9,4.29-1.66,3.74-2.85,7.74-3.52,11.77-.32,1.92-.56,3.87-1.28,5.69-.17.44-.37.87-.6,1.28-1.18,2.1-3.37,3.19-5.6,3.86-4.96,1.47-10.14,1.97-15.25,2.65-2.37.31-8.03,1.12-7.34,4.69.46,2.36,2.26,4.16,4.08,5.6,2.66,2.11,5.44,4.09,8.33,5.88,1.87,1.15,3.85,2.11,5.6,3.44,1.74,1.33,3.15,3.05,3.58,5.25.22,1.16-.18,2.35-1,3.2-1.57,1.63-3,3.41-4.25,5.29-1.32,2.1-2.38,4.35-3.25,6.65-.59,1.44.97,2.98,2.41,2.37.53-.21,1.07-.41,1.61-.61,2.26-.82,4.68.73,4.93,3.12.17,1.61.38,3.17.63,4.57.46,2.57,3.14,3.63,5.32,1.41,2.84-2.88,4.66-6.31,7.84-8.86,2.53-2.03,6.26-4.17,9.71-3.59,3.17.56,6.27,1.52,9.23,2.85,5.32,2.32,10.36,5.29,14.95,8.86,9.17,7.1,16.56,16.51,21.27,27.1.93,2.07,4.03,1.44,4.1-.83.55-17.71-5.72-35.46-17.11-49.01-2.87-3.42-6.07-6.65-9.59-9.44-.88-.8-1.54-1.7-1.38-2.93.38-2.97,2-4.32,4.04-5.85,2.51-1.89,5.02-3.85,7.16-6.21.03-.03.06-.06.09-.1,1.24-1.37,2.38-2.83,3.4-4.37,1.2-1.81.6-4.26-1.3-5.31,0,0-.96-.52-1.45-.76-2.72-1.34-5.61-2.36-8.6-3.03-2.76-.62-5.58-.93-8.38-.93-2.38,0-4.76.22-7.09.67-1.96.37-3.97-.31-5.25-1.84-.28-.34-.54-.69-.79-1.04-.58-.84-1.09-1.71-1.63-2.58-1.29-2.06-1.87-3.63-2.89-5.84-1.06-2.29-1.85-4.73-3.26-6.86-.73-1.11-1.53-1.54-2.32-1.54s-1.54.41-2.24,1.02";
|
|
5
|
+
/** The path's bounding box: what to scale against when painting it. */
|
|
6
|
+
declare const RABBIT_MARK_BOX: {
|
|
7
|
+
readonly x: 14.4021;
|
|
8
|
+
readonly y: 11.93;
|
|
9
|
+
readonly w: 95.1813;
|
|
10
|
+
readonly h: 109.058;
|
|
11
|
+
};
|
|
12
|
+
declare function RabbitMark({ className }: {
|
|
13
|
+
className?: string;
|
|
14
|
+
}): react_jsx_runtime.JSX.Element;
|
|
15
|
+
|
|
16
|
+
export { RABBIT_MARK_BOX, RABBIT_MARK_PATH, RabbitMark };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
|
|
3
|
+
// src/rabbit-mark.tsx
|
|
4
|
+
var RABBIT_MARK_PATH = "M49.71,46.83c0,.23.02.45.07.67,2.1.49,4.16,1.07,6.18,1.74.58-.64.94-1.48.94-2.42,0-1.98-1.61-3.59-3.59-3.59s-3.59,1.61-3.59,3.59M33.95,78.3c3.1-5.1,6.72-8.89,11.64-12.21.61-.42,1.24-.8,1.88-1.17.44-.25.61-.66.58-1.05,0-.53-.49-.91-.93-1.12-1.34-.62-2.72-1.5-4.06-2.54-1.57-1.22-3.01-2.59-4.36-4.06-.95-1.04-2.02-2.38-3-3.81-.81-1.18-.63-2.77.43-3.73,1.1-1,2.26-1.92,3.48-2.76.36-.25.72-.49,1.1-.73,2.43-1.55,5.05-2.79,7.79-3.7,3.23-1.07,6.62-1.66,10.03-1.74.59-.35,1.19-.69,1.8-1.01,1.66-.88,3.38-1.62,5.17-2.21,1.58-.54,3.2-.95,4.85-1.24,3.28-.59,6.64-.7,9.95-.32,1.23.14,2.45.34,3.68.62,2.87.64,5.59,1.62,8.09,2.9.54.27.71.95.36,1.45-1.58,2.22-3.46,4.25-5.5,6.05-3.01,2.65-6.51,4.75-10.26,6.17-2.32.88-4.75,1.53-7.22,1.91-.62.1-.78.9-.24,1.22,0,0,.01,0,.02.01,6.97,4.05,13.1,9.22,18.36,15.32.72.83,1.42,1.68,2.1,2.53,3.36,4.22,6.23,8.82,8.56,13.68,1.8,3.73,3.27,7.63,4.39,11.62.73,2.6,1.34,5.24,1.76,7.91.11.76-.87,1.16-1.3.53-1.15-1.69-2.31-3.35-3.61-4.93-1.2-1.46-2.46-2.86-3.75-4.24-5.44-5.8-11.84-10.7-18.84-14.48-7.32-3.94-15.09-6.38-23.44-6.53-2.23-.04-4.46.08-6.68.3-4.05.43-8.02,1.28-11.93,2.4-.03,0-.05.01-.08.02,0,0-.01,0-.02,0-.07.02-.14.03-.21.03-.53,0-.91-.6-.61-1.09M50.95,12.97c-1.31,1.16-2.2,2.71-2.9,4.29-1.66,3.74-2.85,7.74-3.52,11.77-.32,1.92-.56,3.87-1.28,5.69-.17.44-.37.87-.6,1.28-1.18,2.1-3.37,3.19-5.6,3.86-4.96,1.47-10.14,1.97-15.25,2.65-2.37.31-8.03,1.12-7.34,4.69.46,2.36,2.26,4.16,4.08,5.6,2.66,2.11,5.44,4.09,8.33,5.88,1.87,1.15,3.85,2.11,5.6,3.44,1.74,1.33,3.15,3.05,3.58,5.25.22,1.16-.18,2.35-1,3.2-1.57,1.63-3,3.41-4.25,5.29-1.32,2.1-2.38,4.35-3.25,6.65-.59,1.44.97,2.98,2.41,2.37.53-.21,1.07-.41,1.61-.61,2.26-.82,4.68.73,4.93,3.12.17,1.61.38,3.17.63,4.57.46,2.57,3.14,3.63,5.32,1.41,2.84-2.88,4.66-6.31,7.84-8.86,2.53-2.03,6.26-4.17,9.71-3.59,3.17.56,6.27,1.52,9.23,2.85,5.32,2.32,10.36,5.29,14.95,8.86,9.17,7.1,16.56,16.51,21.27,27.1.93,2.07,4.03,1.44,4.1-.83.55-17.71-5.72-35.46-17.11-49.01-2.87-3.42-6.07-6.65-9.59-9.44-.88-.8-1.54-1.7-1.38-2.93.38-2.97,2-4.32,4.04-5.85,2.51-1.89,5.02-3.85,7.16-6.21.03-.03.06-.06.09-.1,1.24-1.37,2.38-2.83,3.4-4.37,1.2-1.81.6-4.26-1.3-5.31,0,0-.96-.52-1.45-.76-2.72-1.34-5.61-2.36-8.6-3.03-2.76-.62-5.58-.93-8.38-.93-2.38,0-4.76.22-7.09.67-1.96.37-3.97-.31-5.25-1.84-.28-.34-.54-.69-.79-1.04-.58-.84-1.09-1.71-1.63-2.58-1.29-2.06-1.87-3.63-2.89-5.84-1.06-2.29-1.85-4.73-3.26-6.86-.73-1.11-1.53-1.54-2.32-1.54s-1.54.41-2.24,1.02";
|
|
5
|
+
var RABBIT_MARK_BOX = {
|
|
6
|
+
x: 14.4021,
|
|
7
|
+
y: 11.93,
|
|
8
|
+
w: 95.1813,
|
|
9
|
+
h: 109.058
|
|
10
|
+
};
|
|
11
|
+
function RabbitMark({ className }) {
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
"svg",
|
|
14
|
+
{
|
|
15
|
+
className,
|
|
16
|
+
viewBox: "14.4021 11.93 95.1813 109.058",
|
|
17
|
+
fill: "currentColor",
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
children: /* @__PURE__ */ jsx("path", { d: RABBIT_MARK_PATH })
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { RABBIT_MARK_BOX, RABBIT_MARK_PATH, RabbitMark };
|
|
25
|
+
//# sourceMappingURL=rabbit-mark.js.map
|
|
26
|
+
//# sourceMappingURL=rabbit-mark.js.map
|