react-marketing-ui 0.0.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 +34 -0
- package/dist/accordion.d.cts +21 -0
- package/dist/accordion.d.ts +21 -0
- package/dist/accordion.d.ts.map +1 -0
- package/dist/accordion.js +230 -0
- package/dist/accordion.js.map +1 -0
- package/dist/accordion.mjs +4 -0
- package/dist/accordion.mjs.map +1 -0
- package/dist/action-swap.d.cts +23 -0
- package/dist/action-swap.d.ts +23 -0
- package/dist/action-swap.d.ts.map +1 -0
- package/dist/action-swap.js +81 -0
- package/dist/action-swap.js.map +1 -0
- package/dist/action-swap.mjs +5 -0
- package/dist/action-swap.mjs.map +1 -0
- package/dist/animated-beam.d.cts +24 -0
- package/dist/animated-beam.d.ts +24 -0
- package/dist/animated-beam.d.ts.map +1 -0
- package/dist/animated-beam.js +130 -0
- package/dist/animated-beam.js.map +1 -0
- package/dist/animated-beam.mjs +4 -0
- package/dist/animated-beam.mjs.map +1 -0
- package/dist/button.d.cts +55 -0
- package/dist/button.d.ts +55 -0
- package/dist/button.d.ts.map +1 -0
- package/dist/button.js +119 -0
- package/dist/button.js.map +1 -0
- package/dist/button.mjs +4 -0
- package/dist/button.mjs.map +1 -0
- package/dist/card.d.cts +20 -0
- package/dist/card.d.ts +20 -0
- package/dist/card.d.ts.map +1 -0
- package/dist/card.js +146 -0
- package/dist/card.js.map +1 -0
- package/dist/card.mjs +5 -0
- package/dist/card.mjs.map +1 -0
- package/dist/chunk-3SB6HUBA.mjs +31 -0
- package/dist/chunk-3SB6HUBA.mjs.map +1 -0
- package/dist/chunk-4PBVBXGY.mjs +84 -0
- package/dist/chunk-4PBVBXGY.mjs.map +1 -0
- package/dist/chunk-4VCFWVSJ.mjs +42 -0
- package/dist/chunk-4VCFWVSJ.mjs.map +1 -0
- package/dist/chunk-5QQAPGR2.mjs +109 -0
- package/dist/chunk-5QQAPGR2.mjs.map +1 -0
- package/dist/chunk-6MB4UKRX.mjs +19 -0
- package/dist/chunk-6MB4UKRX.mjs.map +1 -0
- package/dist/chunk-6T5LR34O.mjs +45 -0
- package/dist/chunk-6T5LR34O.mjs.map +1 -0
- package/dist/chunk-AYLCYDUM.mjs +275 -0
- package/dist/chunk-AYLCYDUM.mjs.map +1 -0
- package/dist/chunk-AYY7D2RJ.mjs +112 -0
- package/dist/chunk-AYY7D2RJ.mjs.map +1 -0
- package/dist/chunk-CTZEI2YS.mjs +324 -0
- package/dist/chunk-CTZEI2YS.mjs.map +1 -0
- package/dist/chunk-DA3I3Y5O.mjs +71 -0
- package/dist/chunk-DA3I3Y5O.mjs.map +1 -0
- package/dist/chunk-EYHT2EWJ.mjs +18 -0
- package/dist/chunk-EYHT2EWJ.mjs.map +1 -0
- package/dist/chunk-IHLGCS63.mjs +36 -0
- package/dist/chunk-IHLGCS63.mjs.map +1 -0
- package/dist/chunk-JVXJ6SFX.mjs +38 -0
- package/dist/chunk-JVXJ6SFX.mjs.map +1 -0
- package/dist/chunk-KBHYXLRG.mjs +13 -0
- package/dist/chunk-KBHYXLRG.mjs.map +1 -0
- package/dist/chunk-KMXUQYR3.mjs +74 -0
- package/dist/chunk-KMXUQYR3.mjs.map +1 -0
- package/dist/chunk-KNPOZ34H.mjs +88 -0
- package/dist/chunk-KNPOZ34H.mjs.map +1 -0
- package/dist/chunk-KRNWCJ4D.mjs +219 -0
- package/dist/chunk-KRNWCJ4D.mjs.map +1 -0
- package/dist/chunk-M5MESV26.mjs +124 -0
- package/dist/chunk-M5MESV26.mjs.map +1 -0
- package/dist/chunk-MJYBPJBA.mjs +115 -0
- package/dist/chunk-MJYBPJBA.mjs.map +1 -0
- package/dist/chunk-NNHPQ67J.mjs +10 -0
- package/dist/chunk-NNHPQ67J.mjs.map +1 -0
- package/dist/chunk-OCZFHVVD.mjs +71 -0
- package/dist/chunk-OCZFHVVD.mjs.map +1 -0
- package/dist/chunk-QAWSH567.mjs +19 -0
- package/dist/chunk-QAWSH567.mjs.map +1 -0
- package/dist/chunk-R2E2J42H.mjs +38 -0
- package/dist/chunk-R2E2J42H.mjs.map +1 -0
- package/dist/chunk-TPGLLSYV.mjs +65 -0
- package/dist/chunk-TPGLLSYV.mjs.map +1 -0
- package/dist/chunk-VJENJHXJ.mjs +72 -0
- package/dist/chunk-VJENJHXJ.mjs.map +1 -0
- package/dist/chunk-W22G7XHR.mjs +104 -0
- package/dist/chunk-W22G7XHR.mjs.map +1 -0
- package/dist/chunk-WDR5VPZJ.mjs +79 -0
- package/dist/chunk-WDR5VPZJ.mjs.map +1 -0
- package/dist/chunk-WLUGKBH7.mjs +37 -0
- package/dist/chunk-WLUGKBH7.mjs.map +1 -0
- package/dist/chunk-WYJYLDUA.mjs +84 -0
- package/dist/chunk-WYJYLDUA.mjs.map +1 -0
- package/dist/chunk-XZEDZVXT.mjs +38 -0
- package/dist/chunk-XZEDZVXT.mjs.map +1 -0
- package/dist/chunk-YKGP5JIL.mjs +328 -0
- package/dist/chunk-YKGP5JIL.mjs.map +1 -0
- package/dist/chunk-YM3U2OBE.mjs +99 -0
- package/dist/chunk-YM3U2OBE.mjs.map +1 -0
- package/dist/dia-text-reveal.css +18 -0
- package/dist/dia-text-reveal.css.map +1 -0
- package/dist/dia-text-reveal.d.cts +37 -0
- package/dist/dia-text-reveal.d.ts +37 -0
- package/dist/dia-text-reveal.d.ts.map +1 -0
- package/dist/dia-text-reveal.js +334 -0
- package/dist/dia-text-reveal.js.map +1 -0
- package/dist/dia-text-reveal.lines.d.cts +23 -0
- package/dist/dia-text-reveal.lines.d.ts +23 -0
- package/dist/dia-text-reveal.lines.d.ts.map +1 -0
- package/dist/dia-text-reveal.mjs +4 -0
- package/dist/dia-text-reveal.mjs.map +1 -0
- package/dist/dia-text-reveal.sweep.d.cts +49 -0
- package/dist/dia-text-reveal.sweep.d.ts +49 -0
- package/dist/dia-text-reveal.sweep.d.ts.map +1 -0
- package/dist/dia-text-reveal.utils.d.cts +3 -0
- package/dist/dia-text-reveal.utils.d.ts +3 -0
- package/dist/dia-text-reveal.utils.d.ts.map +1 -0
- package/dist/elevated-input.d.cts +11 -0
- package/dist/elevated-input.d.ts +11 -0
- package/dist/elevated-input.d.ts.map +1 -0
- package/dist/elevated-input.js +52 -0
- package/dist/elevated-input.js.map +1 -0
- package/dist/elevated-input.mjs +4 -0
- package/dist/elevated-input.mjs.map +1 -0
- package/dist/fade-in.d.cts +43 -0
- package/dist/fade-in.d.ts +43 -0
- package/dist/fade-in.d.ts.map +1 -0
- package/dist/fade-in.js +89 -0
- package/dist/fade-in.js.map +1 -0
- package/dist/fade-in.mjs +4 -0
- package/dist/fade-in.mjs.map +1 -0
- package/dist/feature-card.d.cts +23 -0
- package/dist/feature-card.d.ts +23 -0
- package/dist/feature-card.d.ts.map +1 -0
- package/dist/feature-card.js +38 -0
- package/dist/feature-card.js.map +1 -0
- package/dist/feature-card.mjs +4 -0
- package/dist/feature-card.mjs.map +1 -0
- package/dist/flowchart-parts.d.cts +61 -0
- package/dist/flowchart-parts.d.ts +61 -0
- package/dist/flowchart-parts.d.ts.map +1 -0
- package/dist/flowchart-parts.js +102 -0
- package/dist/flowchart-parts.js.map +1 -0
- package/dist/flowchart-parts.mjs +4 -0
- package/dist/flowchart-parts.mjs.map +1 -0
- package/dist/glossy-button.d.cts +21 -0
- package/dist/glossy-button.d.ts +21 -0
- package/dist/glossy-button.d.ts.map +1 -0
- package/dist/glossy-button.js +87 -0
- package/dist/glossy-button.js.map +1 -0
- package/dist/glossy-button.mjs +4 -0
- package/dist/glossy-button.mjs.map +1 -0
- package/dist/grainient.css +9 -0
- package/dist/grainient.css.map +1 -0
- package/dist/grainient.d.cts +5 -0
- package/dist/grainient.d.ts +5 -0
- package/dist/grainient.d.ts.map +1 -0
- package/dist/grainient.js +330 -0
- package/dist/grainient.js.map +1 -0
- package/dist/grainient.mjs +4 -0
- package/dist/grainient.mjs.map +1 -0
- package/dist/grainient.shader.d.cts +9 -0
- package/dist/grainient.shader.d.ts +9 -0
- package/dist/grainient.shader.d.ts.map +1 -0
- package/dist/grainient.types.d.cts +30 -0
- package/dist/grainient.types.d.ts +30 -0
- package/dist/grainient.types.d.ts.map +1 -0
- package/dist/highlighter.d.cts +47 -0
- package/dist/highlighter.d.ts +47 -0
- package/dist/highlighter.d.ts.map +1 -0
- package/dist/highlighter.js +125 -0
- package/dist/highlighter.js.map +1 -0
- package/dist/highlighter.mjs +5 -0
- package/dist/highlighter.mjs.map +1 -0
- package/dist/index.css +27 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +56 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2723 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +34 -0
- package/dist/index.mjs.map +1 -0
- package/dist/input.d.cts +15 -0
- package/dist/input.d.ts +15 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +110 -0
- package/dist/input.js.map +1 -0
- package/dist/input.mjs +4 -0
- package/dist/input.mjs.map +1 -0
- package/dist/lib/breakpoints.d.cts +36 -0
- package/dist/lib/breakpoints.d.ts +36 -0
- package/dist/lib/breakpoints.d.ts.map +1 -0
- package/dist/lib/breakpoints.js +41 -0
- package/dist/lib/breakpoints.js.map +1 -0
- package/dist/lib/breakpoints.mjs +3 -0
- package/dist/lib/breakpoints.mjs.map +1 -0
- package/dist/lib/cn.js +24 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/cn.mjs +3 -0
- package/dist/lib/cn.mjs.map +1 -0
- package/dist/lib/ease.d.cts +19 -0
- package/dist/lib/ease.d.ts +19 -0
- package/dist/lib/ease.d.ts.map +1 -0
- package/dist/lib/ease.js +16 -0
- package/dist/lib/ease.js.map +1 -0
- package/dist/lib/ease.mjs +3 -0
- package/dist/lib/ease.mjs.map +1 -0
- package/dist/lib/surface.d.cts +14 -0
- package/dist/lib/surface.d.ts +14 -0
- package/dist/lib/surface.d.ts.map +1 -0
- package/dist/lib/surface.js +40 -0
- package/dist/lib/surface.js.map +1 -0
- package/dist/lib/surface.mjs +3 -0
- package/dist/lib/surface.mjs.map +1 -0
- package/dist/lib/use-media-query.d.cts +9 -0
- package/dist/lib/use-media-query.d.ts +9 -0
- package/dist/lib/use-media-query.d.ts.map +1 -0
- package/dist/lib/use-media-query.js +19 -0
- package/dist/lib/use-media-query.js.map +1 -0
- package/dist/lib/use-media-query.mjs +3 -0
- package/dist/lib/use-media-query.mjs.map +1 -0
- package/dist/lib/utils.d.cts +25 -0
- package/dist/lib/utils.d.ts +25 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/liquid-metal.d.cts +24 -0
- package/dist/liquid-metal.d.ts +24 -0
- package/dist/liquid-metal.d.ts.map +1 -0
- package/dist/liquid-metal.js +43 -0
- package/dist/liquid-metal.js.map +1 -0
- package/dist/liquid-metal.mjs +4 -0
- package/dist/liquid-metal.mjs.map +1 -0
- package/dist/navigation-menu-icons.d.cts +5 -0
- package/dist/navigation-menu-icons.d.ts +5 -0
- package/dist/navigation-menu-icons.d.ts.map +1 -0
- package/dist/navigation-menu-icons.js +42 -0
- package/dist/navigation-menu-icons.js.map +1 -0
- package/dist/navigation-menu-icons.mjs +3 -0
- package/dist/navigation-menu-icons.mjs.map +1 -0
- package/dist/navigation-menu-styles.d.cts +45 -0
- package/dist/navigation-menu-styles.d.ts +45 -0
- package/dist/navigation-menu-styles.d.ts.map +1 -0
- package/dist/navigation-menu-styles.js +16 -0
- package/dist/navigation-menu-styles.js.map +1 -0
- package/dist/navigation-menu-styles.mjs +3 -0
- package/dist/navigation-menu-styles.mjs.map +1 -0
- package/dist/navigation-menu.d.cts +18 -0
- package/dist/navigation-menu.d.ts +18 -0
- package/dist/navigation-menu.d.ts.map +1 -0
- package/dist/navigation-menu.js +367 -0
- package/dist/navigation-menu.js.map +1 -0
- package/dist/navigation-menu.mjs +7 -0
- package/dist/navigation-menu.mjs.map +1 -0
- package/dist/password-input.d.cts +6 -0
- package/dist/password-input.d.ts +6 -0
- package/dist/password-input.d.ts.map +1 -0
- package/dist/password-input.js +174 -0
- package/dist/password-input.js.map +1 -0
- package/dist/password-input.mjs +5 -0
- package/dist/password-input.mjs.map +1 -0
- package/dist/rainbow-button.d.cts +16 -0
- package/dist/rainbow-button.d.ts +16 -0
- package/dist/rainbow-button.d.ts.map +1 -0
- package/dist/rainbow-button.js +49 -0
- package/dist/rainbow-button.js.map +1 -0
- package/dist/rainbow-button.mjs +4 -0
- package/dist/rainbow-button.mjs.map +1 -0
- package/dist/range-slider.d.cts +20 -0
- package/dist/range-slider.d.ts +20 -0
- package/dist/range-slider.d.ts.map +1 -0
- package/dist/range-slider.js +85 -0
- package/dist/range-slider.js.map +1 -0
- package/dist/range-slider.mjs +3 -0
- package/dist/range-slider.mjs.map +1 -0
- package/dist/rolling-badge.d.cts +11 -0
- package/dist/rolling-badge.d.ts +11 -0
- package/dist/rolling-badge.d.ts.map +1 -0
- package/dist/rolling-badge.js +71 -0
- package/dist/rolling-badge.js.map +1 -0
- package/dist/rolling-badge.mjs +4 -0
- package/dist/rolling-badge.mjs.map +1 -0
- package/dist/savings-badge.d.cts +10 -0
- package/dist/savings-badge.d.ts +10 -0
- package/dist/savings-badge.d.ts.map +1 -0
- package/dist/savings-badge.js +26 -0
- package/dist/savings-badge.js.map +1 -0
- package/dist/savings-badge.mjs +4 -0
- package/dist/savings-badge.mjs.map +1 -0
- package/dist/shine-border.d.cts +15 -0
- package/dist/shine-border.d.ts +15 -0
- package/dist/shine-border.d.ts.map +1 -0
- package/dist/shine-border.js +47 -0
- package/dist/shine-border.js.map +1 -0
- package/dist/shine-border.mjs +4 -0
- package/dist/shine-border.mjs.map +1 -0
- package/dist/sparkles-text.d.cts +22 -0
- package/dist/sparkles-text.d.ts +22 -0
- package/dist/sparkles-text.d.ts.map +1 -0
- package/dist/sparkles-text.js +87 -0
- package/dist/sparkles-text.js.map +1 -0
- package/dist/sparkles-text.mjs +5 -0
- package/dist/sparkles-text.mjs.map +1 -0
- package/dist/tabs.d.cts +16 -0
- package/dist/tabs.d.ts +16 -0
- package/dist/tabs.d.ts.map +1 -0
- package/dist/tabs.js +121 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tabs.mjs +4 -0
- package/dist/tabs.mjs.map +1 -0
- package/dist/theme-toggle.d.cts +10 -0
- package/dist/theme-toggle.d.ts +10 -0
- package/dist/theme-toggle.d.ts.map +1 -0
- package/dist/theme-toggle.js +251 -0
- package/dist/theme-toggle.js.map +1 -0
- package/dist/theme-toggle.mjs +7 -0
- package/dist/theme-toggle.mjs.map +1 -0
- package/package.json +428 -0
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var navigationMenu = require('@base-ui/react/navigation-menu');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var tailwindMerge = require('tailwind-merge');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
8
|
+
|
|
9
|
+
// src/components/navigation-menu.tsx
|
|
10
|
+
|
|
11
|
+
// src/lib/surface.ts
|
|
12
|
+
var SURFACE_BG = {
|
|
13
|
+
1: "bg-surface-1",
|
|
14
|
+
2: "bg-surface-2",
|
|
15
|
+
3: "bg-surface-3",
|
|
16
|
+
4: "bg-surface-4",
|
|
17
|
+
5: "bg-surface-5",
|
|
18
|
+
6: "bg-surface-6",
|
|
19
|
+
7: "bg-surface-7",
|
|
20
|
+
8: "bg-surface-8"
|
|
21
|
+
};
|
|
22
|
+
var SURFACE_VAR = {
|
|
23
|
+
1: "[--popup-surface:var(--surface-1)]",
|
|
24
|
+
2: "[--popup-surface:var(--surface-2)]",
|
|
25
|
+
3: "[--popup-surface:var(--surface-3)]",
|
|
26
|
+
4: "[--popup-surface:var(--surface-4)]",
|
|
27
|
+
5: "[--popup-surface:var(--surface-5)]",
|
|
28
|
+
6: "[--popup-surface:var(--surface-6)]",
|
|
29
|
+
7: "[--popup-surface:var(--surface-7)]",
|
|
30
|
+
8: "[--popup-surface:var(--surface-8)]"
|
|
31
|
+
};
|
|
32
|
+
var SURFACE_SHADOW_COMBINED = {
|
|
33
|
+
1: "shadow-elevated-1",
|
|
34
|
+
2: "shadow-elevated-2",
|
|
35
|
+
3: "shadow-elevated-3",
|
|
36
|
+
4: "shadow-elevated-4",
|
|
37
|
+
5: "shadow-elevated-5",
|
|
38
|
+
6: "shadow-elevated-6",
|
|
39
|
+
7: "shadow-elevated-7",
|
|
40
|
+
8: "shadow-elevated-8"
|
|
41
|
+
};
|
|
42
|
+
function solidSurface(level, shadowLevel = level) {
|
|
43
|
+
return `${SURFACE_BG[level]} ${SURFACE_SHADOW_COMBINED[shadowLevel]} ${SURFACE_VAR[level]}`;
|
|
44
|
+
}
|
|
45
|
+
function cn(...inputs) {
|
|
46
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
47
|
+
}
|
|
48
|
+
function validCssVars(style) {
|
|
49
|
+
return style;
|
|
50
|
+
}
|
|
51
|
+
function ChevronDownIcon(props) {
|
|
52
|
+
return /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": "true", width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 3.5L5 7.5L9 3.5", stroke: "currentColor", strokeWidth: "1.5" }) });
|
|
53
|
+
}
|
|
54
|
+
function ChevronRightIcon(props) {
|
|
55
|
+
return /* @__PURE__ */ jsxRuntime.jsx("svg", { "aria-hidden": "true", width: "10", height: "10", viewBox: "0 0 10 10", fill: "none", ...props, children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3.5 1L7.5 5L3.5 9", stroke: "currentColor", strokeWidth: "1.5" }) });
|
|
56
|
+
}
|
|
57
|
+
function ArrowSvg(props) {
|
|
58
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("svg", { "aria-hidden": "true", width: "20", height: "10", viewBox: "0 0 20 10", fill: "none", ...props, children: [
|
|
59
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
60
|
+
"path",
|
|
61
|
+
{
|
|
62
|
+
d: "M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z",
|
|
63
|
+
className: "fill-(--popup-surface,var(--surface-3))"
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
67
|
+
"path",
|
|
68
|
+
{
|
|
69
|
+
d: "M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z",
|
|
70
|
+
className: "fill-border"
|
|
71
|
+
}
|
|
72
|
+
),
|
|
73
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
74
|
+
"path",
|
|
75
|
+
{
|
|
76
|
+
d: "M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z",
|
|
77
|
+
className: "fill-border"
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
] });
|
|
81
|
+
}
|
|
82
|
+
var navigationMenuTriggerStyle = classVarianceAuthority.cva(
|
|
83
|
+
"box-border flex items-center justify-center gap-1.5 h-10 px-2.5 xs:px-3 m-0 rounded-md text-foreground font-medium !text-[15px] leading-6 select-none no-underline hover:text-foreground data-[popup-open]:bg-black/[0.07] dark:data-[popup-open]:bg-white/[0.07] data-[popup-open]:text-foreground focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-1 focus-visible:outline-ring focus-visible:relative"
|
|
84
|
+
);
|
|
85
|
+
var navigationMenuSubTriggerStyle = classVarianceAuthority.cva(
|
|
86
|
+
"w-full text-left relative block rounded-md p-2.5 xs:p-3 no-underline text-inherit hover:bg-black/[0.07] dark:hover:bg-white/[0.07] hover:text-foreground active:bg-black/[0.11] dark:active:bg-white/[0.11] focus-visible:relative focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-1 focus-visible:outline-ring data-[popup-open]:bg-black/[0.07] dark:data-[popup-open]:bg-white/[0.07] data-[popup-open]:text-foreground"
|
|
87
|
+
);
|
|
88
|
+
function NavigationMenu({
|
|
89
|
+
className,
|
|
90
|
+
children,
|
|
91
|
+
side,
|
|
92
|
+
sideOffset = 10,
|
|
93
|
+
align,
|
|
94
|
+
alignOffset,
|
|
95
|
+
collisionPadding = { top: 5, bottom: 5, left: 20, right: 20 },
|
|
96
|
+
collisionBoundary,
|
|
97
|
+
arrow = false,
|
|
98
|
+
positionMethod = "fixed",
|
|
99
|
+
level = 2,
|
|
100
|
+
shadowLevel = 2,
|
|
101
|
+
...props
|
|
102
|
+
}) {
|
|
103
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
104
|
+
navigationMenu.NavigationMenu.Root,
|
|
105
|
+
{
|
|
106
|
+
"data-slot": "navigation-menu",
|
|
107
|
+
"data-level": level,
|
|
108
|
+
className: cn("min-w-max rounded-md p-1 text-foreground", solidSurface(level, shadowLevel), className),
|
|
109
|
+
...props,
|
|
110
|
+
children: [
|
|
111
|
+
children,
|
|
112
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
113
|
+
NavigationMenuViewport,
|
|
114
|
+
{
|
|
115
|
+
side,
|
|
116
|
+
sideOffset,
|
|
117
|
+
align,
|
|
118
|
+
alignOffset,
|
|
119
|
+
collisionPadding,
|
|
120
|
+
collisionBoundary,
|
|
121
|
+
arrow,
|
|
122
|
+
positionMethod
|
|
123
|
+
}
|
|
124
|
+
)
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
function NavigationMenuList({ className, ...props }) {
|
|
130
|
+
return /* @__PURE__ */ jsxRuntime.jsx(navigationMenu.NavigationMenu.List, { "data-slot": "navigation-menu-list", className: cn("relative flex", className), ...props });
|
|
131
|
+
}
|
|
132
|
+
function NavigationMenuItem({ className, ...props }) {
|
|
133
|
+
return /* @__PURE__ */ jsxRuntime.jsx(navigationMenu.NavigationMenu.Item, { "data-slot": "navigation-menu-item", className: cn("relative", className), ...props });
|
|
134
|
+
}
|
|
135
|
+
function NavigationMenuTrigger({ className, children, ...props }) {
|
|
136
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
137
|
+
navigationMenu.NavigationMenu.Trigger,
|
|
138
|
+
{
|
|
139
|
+
"data-slot": "navigation-menu-trigger",
|
|
140
|
+
className: cn(navigationMenuTriggerStyle(), className),
|
|
141
|
+
...props,
|
|
142
|
+
children: [
|
|
143
|
+
children,
|
|
144
|
+
/* @__PURE__ */ jsxRuntime.jsx(NavigationMenuIcon, {})
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
function NavigationMenuIcon({
|
|
150
|
+
className,
|
|
151
|
+
render = /* @__PURE__ */ jsxRuntime.jsx(ChevronDownIcon, {}),
|
|
152
|
+
...props
|
|
153
|
+
}) {
|
|
154
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
155
|
+
navigationMenu.NavigationMenu.Icon,
|
|
156
|
+
{
|
|
157
|
+
className: cn("transition-transform duration-200 ease-in-out data-[popup-open]:rotate-180", className),
|
|
158
|
+
render,
|
|
159
|
+
...props
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
function NavigationMenuSubTrigger({
|
|
164
|
+
className,
|
|
165
|
+
children,
|
|
166
|
+
...props
|
|
167
|
+
}) {
|
|
168
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
169
|
+
navigationMenu.NavigationMenu.Trigger,
|
|
170
|
+
{
|
|
171
|
+
"data-slot": "navigation-menu-sub-trigger",
|
|
172
|
+
className: cn(navigationMenuSubTriggerStyle(), className),
|
|
173
|
+
...props,
|
|
174
|
+
children: [
|
|
175
|
+
children,
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
177
|
+
navigationMenu.NavigationMenu.Icon,
|
|
178
|
+
{
|
|
179
|
+
className: "absolute top-1/2 right-2.5 flex h-2.5 w-2.5 -translate-y-1/2 items-center justify-center transition-transform duration-200 ease-in-out data-[popup-open]:rotate-180",
|
|
180
|
+
render: /* @__PURE__ */ jsxRuntime.jsx(ChevronRightIcon, {})
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
function NavigationMenuContent({ className, ...props }) {
|
|
188
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
189
|
+
navigationMenu.NavigationMenu.Content,
|
|
190
|
+
{
|
|
191
|
+
"data-slot": "navigation-menu-content",
|
|
192
|
+
className: cn(
|
|
193
|
+
"h-full w-[calc(100vw-2.5rem)] p-4 sm:w-max",
|
|
194
|
+
// Transitions for opacity/transform/filter
|
|
195
|
+
"transition-[opacity,transform,filter,scale,translate] duration-(--duration) ease-(--easing)",
|
|
196
|
+
// Starting/ending opacity
|
|
197
|
+
"data-ending-style:opacity-0 data-starting-style:opacity-0",
|
|
198
|
+
// Direction-aware slide (starting)
|
|
199
|
+
"data-starting-style:data-[activation-direction=left]:-translate-x-1/2",
|
|
200
|
+
"data-starting-style:data-[activation-direction=right]:translate-x-1/2",
|
|
201
|
+
// Direction-aware slide (ending)
|
|
202
|
+
"data-ending-style:data-[activation-direction=left]:translate-x-1/2",
|
|
203
|
+
"data-ending-style:data-[activation-direction=right]:-translate-x-1/2",
|
|
204
|
+
// Blur effect during transitions
|
|
205
|
+
"data-ending-style:blur-[4px] data-starting-style:blur-[4px]",
|
|
206
|
+
// scale effect during transitions
|
|
207
|
+
"data-ending-style:scale-97 data-starting-style:scale-97",
|
|
208
|
+
// Motion reduce support
|
|
209
|
+
"motion-reduce:transition-none",
|
|
210
|
+
className
|
|
211
|
+
),
|
|
212
|
+
...props
|
|
213
|
+
}
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
function NavigationMenuLink({ className, standalone, ...props }) {
|
|
217
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
218
|
+
navigationMenu.NavigationMenu.Link,
|
|
219
|
+
{
|
|
220
|
+
"data-slot": "navigation-menu-link",
|
|
221
|
+
className: cn(
|
|
222
|
+
standalone ? navigationMenuTriggerStyle() : "block rounded-md p-2.5 xs:p-3 text-inherit no-underline duration-150 hover:text-foreground hover:duration-0 focus-visible:relative focus-visible:outline-2 focus-visible:outline-ring focus-visible:-outline-offset-1",
|
|
223
|
+
className
|
|
224
|
+
),
|
|
225
|
+
...props
|
|
226
|
+
}
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
function NavigationMenuBackdrop({ ...props }) {
|
|
230
|
+
return /* @__PURE__ */ jsxRuntime.jsx(navigationMenu.NavigationMenu.Backdrop, { "data-slot": "navigation-menu-backdrop", ...props });
|
|
231
|
+
}
|
|
232
|
+
function NavigationMenuPortal({ ...props }) {
|
|
233
|
+
return /* @__PURE__ */ jsxRuntime.jsx(navigationMenu.NavigationMenu.Portal, { "data-slot": "navigation-menu-portal", ...props });
|
|
234
|
+
}
|
|
235
|
+
function NavigationMenuArrow({ ...props }) {
|
|
236
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
237
|
+
navigationMenu.NavigationMenu.Arrow,
|
|
238
|
+
{
|
|
239
|
+
className: "flex transition-[left] duration-[var(--duration)] ease-[var(--easing)] data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=top]:bottom-[-8px] data-[side=right]:left-[-13px] data-[side=left]:rotate-90 data-[side=right]:-rotate-90 data-[side=top]:rotate-180",
|
|
240
|
+
...props,
|
|
241
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ArrowSvg, {})
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
function NavigationMenuViewport({
|
|
246
|
+
className,
|
|
247
|
+
children,
|
|
248
|
+
side,
|
|
249
|
+
sideOffset,
|
|
250
|
+
align,
|
|
251
|
+
alignOffset,
|
|
252
|
+
collisionPadding,
|
|
253
|
+
collisionBoundary,
|
|
254
|
+
arrow = false,
|
|
255
|
+
positionMethod = "fixed",
|
|
256
|
+
...props
|
|
257
|
+
}) {
|
|
258
|
+
return /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
259
|
+
navigationMenu.NavigationMenu.Positioner,
|
|
260
|
+
{
|
|
261
|
+
"data-slot": "navigation-menu-positioner",
|
|
262
|
+
side,
|
|
263
|
+
sideOffset,
|
|
264
|
+
align,
|
|
265
|
+
alignOffset,
|
|
266
|
+
collisionPadding,
|
|
267
|
+
collisionBoundary,
|
|
268
|
+
positionMethod,
|
|
269
|
+
className: "z-50 box-border h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-(--duration) ease-(--easing) before:absolute before:content-[''] data-instant:transition-none data-[side=bottom]:before:-top-2.5 data-[side=left]:before:top-0 data-[side=right]:before:top-0 data-[side=bottom]:before:right-0 data-[side=left]:before:-right-2.5 data-[side=top]:before:right-0 data-[side=left]:before:bottom-0 data-[side=right]:before:bottom-0 data-[side=top]:before:-bottom-2.5 data-[side=bottom]:before:left-0 data-[side=right]:before:-left-2.5 data-[side=top]:before:left-0 data-[side=bottom]:before:h-2.5 data-[side=top]:before:h-2.5 data-[side=left]:before:w-2.5 data-[side=right]:before:w-2.5",
|
|
270
|
+
style: validCssVars({ "--duration": "0.35s", "--easing": "cubic-bezier(0.22, 1, 0.36, 1)" }),
|
|
271
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
272
|
+
navigationMenu.NavigationMenu.Popup,
|
|
273
|
+
{
|
|
274
|
+
"data-slot": "navigation-menu-content",
|
|
275
|
+
className: cn(
|
|
276
|
+
"relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) overflow-hidden rounded-md text-foreground transition-[opacity,transform,width,height,scale,translate] duration-(--duration) ease-(--easing) data-ending-style:scale-90 data-starting-style:scale-90 data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-150",
|
|
277
|
+
solidSurface(3, 3)
|
|
278
|
+
),
|
|
279
|
+
children: [
|
|
280
|
+
arrow ? /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuArrow, {}) : null,
|
|
281
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
282
|
+
navigationMenu.NavigationMenu.Viewport,
|
|
283
|
+
{
|
|
284
|
+
"data-slot": "navigation-menu-viewport",
|
|
285
|
+
className: cn("relative h-full w-full overflow-hidden", className),
|
|
286
|
+
...props,
|
|
287
|
+
children
|
|
288
|
+
}
|
|
289
|
+
)
|
|
290
|
+
]
|
|
291
|
+
}
|
|
292
|
+
)
|
|
293
|
+
}
|
|
294
|
+
) });
|
|
295
|
+
}
|
|
296
|
+
function NavigationMenuSub({
|
|
297
|
+
className,
|
|
298
|
+
children,
|
|
299
|
+
orientation = "vertical",
|
|
300
|
+
side = "right",
|
|
301
|
+
sideOffset = 24,
|
|
302
|
+
align = "end",
|
|
303
|
+
alignOffset = -24,
|
|
304
|
+
arrow = false,
|
|
305
|
+
...props
|
|
306
|
+
}) {
|
|
307
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
308
|
+
navigationMenu.NavigationMenu.Root,
|
|
309
|
+
{
|
|
310
|
+
"data-slot": "navigation-menu-sub",
|
|
311
|
+
className: cn("", className),
|
|
312
|
+
orientation,
|
|
313
|
+
...props,
|
|
314
|
+
children: [
|
|
315
|
+
children,
|
|
316
|
+
/* @__PURE__ */ jsxRuntime.jsx(NavigationMenuPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
317
|
+
navigationMenu.NavigationMenu.Positioner,
|
|
318
|
+
{
|
|
319
|
+
"data-slot": "navigation-menu-sub-positioner",
|
|
320
|
+
sideOffset,
|
|
321
|
+
alignOffset,
|
|
322
|
+
align,
|
|
323
|
+
side,
|
|
324
|
+
className: "box-border h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-(--duration) ease-(--easing) before:absolute before:content-[''] data-instant:transition-none data-[side=bottom]:before:-top-2.5 data-[side=left]:before:top-0 data-[side=right]:before:top-0 data-[side=bottom]:before:right-0 data-[side=left]:before:-right-2.5 data-[side=top]:before:right-0 data-[side=left]:before:bottom-0 data-[side=right]:before:bottom-0 data-[side=top]:before:-bottom-2.5 data-[side=bottom]:before:left-0 data-[side=right]:before:-left-2.5 data-[side=top]:before:left-0 data-[side=bottom]:before:h-2.5 data-[side=top]:before:h-2.5 data-[side=left]:before:w-2.5 data-[side=right]:before:w-2.5",
|
|
325
|
+
style: validCssVars({ "--duration": "0.35s", "--easing": "cubic-bezier(0.22, 1, 0.36, 1)" }),
|
|
326
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
327
|
+
navigationMenu.NavigationMenu.Popup,
|
|
328
|
+
{
|
|
329
|
+
"data-slot": "navigation-menu-sub-content",
|
|
330
|
+
className: cn(
|
|
331
|
+
"relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) overflow-hidden rounded-md text-foreground transition-[opacity,transform,width,height,scale,translate] duration-(--duration) ease-(--easing) data-ending-style:scale-90 data-starting-style:scale-90 data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-150",
|
|
332
|
+
solidSurface(5, 5)
|
|
333
|
+
),
|
|
334
|
+
children: [
|
|
335
|
+
arrow ? /* @__PURE__ */ jsxRuntime.jsx(NavigationMenuArrow, {}) : null,
|
|
336
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
337
|
+
navigationMenu.NavigationMenu.Viewport,
|
|
338
|
+
{
|
|
339
|
+
"data-slot": "navigation-menu-sub-viewport",
|
|
340
|
+
className: "relative h-full w-full overflow-hidden"
|
|
341
|
+
}
|
|
342
|
+
)
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
)
|
|
346
|
+
}
|
|
347
|
+
) })
|
|
348
|
+
]
|
|
349
|
+
}
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
exports.NavigationMenu = NavigationMenu;
|
|
354
|
+
exports.NavigationMenuArrow = NavigationMenuArrow;
|
|
355
|
+
exports.NavigationMenuBackdrop = NavigationMenuBackdrop;
|
|
356
|
+
exports.NavigationMenuContent = NavigationMenuContent;
|
|
357
|
+
exports.NavigationMenuIcon = NavigationMenuIcon;
|
|
358
|
+
exports.NavigationMenuItem = NavigationMenuItem;
|
|
359
|
+
exports.NavigationMenuLink = NavigationMenuLink;
|
|
360
|
+
exports.NavigationMenuList = NavigationMenuList;
|
|
361
|
+
exports.NavigationMenuPortal = NavigationMenuPortal;
|
|
362
|
+
exports.NavigationMenuSub = NavigationMenuSub;
|
|
363
|
+
exports.NavigationMenuSubTrigger = NavigationMenuSubTrigger;
|
|
364
|
+
exports.NavigationMenuTrigger = NavigationMenuTrigger;
|
|
365
|
+
exports.NavigationMenuViewport = NavigationMenuViewport;
|
|
366
|
+
//# sourceMappingURL=navigation-menu.js.map
|
|
367
|
+
//# sourceMappingURL=navigation-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/surface.ts","../src/lib/utils.ts","../src/components/navigation-menu-icons.tsx","../src/components/navigation-menu-styles.ts","../src/components/navigation-menu.tsx"],"names":["twMerge","clsx","jsx","jsxs","cva","NavigationMenuPrimitive"],"mappings":"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","file":"navigation-menu.js","sourcesContent":["export type SurfaceLevel = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\nconst SURFACE_BG: Record<SurfaceLevel, string> = {\n 1: 'bg-surface-1',\n 2: 'bg-surface-2',\n 3: 'bg-surface-3',\n 4: 'bg-surface-4',\n 5: 'bg-surface-5',\n 6: 'bg-surface-6',\n 7: 'bg-surface-7',\n 8: 'bg-surface-8',\n};\n\nconst SURFACE_VAR: Record<SurfaceLevel, string> = {\n 1: '[--popup-surface:var(--surface-1)]',\n 2: '[--popup-surface:var(--surface-2)]',\n 3: '[--popup-surface:var(--surface-3)]',\n 4: '[--popup-surface:var(--surface-4)]',\n 5: '[--popup-surface:var(--surface-5)]',\n 6: '[--popup-surface:var(--surface-6)]',\n 7: '[--popup-surface:var(--surface-7)]',\n 8: '[--popup-surface:var(--surface-8)]',\n};\n\n/**\n * Drops + rim insets in a single `box-shadow` (no `::after`). Used by `solidSurface()`.\n * Literal Tailwind classes so the scanner picks them up.\n */\nconst SURFACE_SHADOW_COMBINED: Record<SurfaceLevel, string> = {\n 1: 'shadow-elevated-1',\n 2: 'shadow-elevated-2',\n 3: 'shadow-elevated-3',\n 4: 'shadow-elevated-4',\n 5: 'shadow-elevated-5',\n 6: 'shadow-elevated-6',\n 7: 'shadow-elevated-7',\n 8: 'shadow-elevated-8',\n};\n\n/**\n * Elevation for a free-floating surface: background, elevation variable, and the drop shadow with\n * its rim inset painted in the same `box-shadow` — which leaves `::after` free for other purposes.\n *\n * Suits containers with no opaque children near their edges. A child painted over the rim (a sticky\n * label, a pinned input, a dialog header) covers it, since nothing re-paints the rim above the\n * children.\n *\n * When `level !== shadowLevel` the rim color tracks `shadowLevel` — the two cannot be controlled\n * independently.\n */\nexport function solidSurface(level: SurfaceLevel, shadowLevel: SurfaceLevel = level): string {\n return `${SURFACE_BG[level]} ${SURFACE_SHADOW_COMBINED[shadowLevel]} ${SURFACE_VAR[level]}`;\n}\n","import { type ClassValue, clsx } from 'clsx';\nimport type { CSSProperties } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\n/**\n * A style object that may carry CSS custom properties (CSS variables)\n * such as `--duration`. React's `CSSProperties` intentionally drops\n * its index signature, so custom properties are not accepted without help.\n */\nexport type CSSPropertiesWithVars = CSSProperties & Record<`--${string}`, string | number>;\n\n/**\n * Builds a {@link CSSProperties} value that also allows CSS custom properties,\n * so `style` props can be written without an `as React.CSSProperties` cast while\n * still type-checking both the known style keys and the custom-property values.\n *\n * @example\n * <div style={validCssVars({ '--duration': '0.35s', color: 'red' })} />\n */\nexport function validCssVars(style: CSSPropertiesWithVars): CSSProperties {\n return style;\n}\n\n/**\n * Narrows a union to the member(s) that declare `key` — a type-guard\n * replacement for the `in` operator's discriminated-union narrowing.\n */\nexport function hasKey<K extends PropertyKey>(key: K, obj: unknown): obj is Record<K, unknown> {\n return obj !== null && typeof obj === 'object' && Object.hasOwn(obj, key);\n}\n\nexport function noop(): void {\n // intentional no-op\n}\n","import type * as React from 'react';\n\nexport function ChevronDownIcon(props: React.ComponentProps<'svg'>) {\n return (\n <svg aria-hidden=\"true\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" {...props}>\n <path d=\"M1 3.5L5 7.5L9 3.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n );\n}\n\nexport function ChevronRightIcon(props: React.ComponentProps<'svg'>) {\n return (\n <svg aria-hidden=\"true\" width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" {...props}>\n <path d=\"M3.5 1L7.5 5L3.5 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n );\n}\n\nexport function ArrowSvg(props: React.ComponentProps<'svg'>) {\n return (\n <svg aria-hidden=\"true\" width=\"20\" height=\"10\" viewBox=\"0 0 20 10\" fill=\"none\" {...props}>\n <path\n d=\"M9.66437 2.60207L4.80758 6.97318C4.07308 7.63423 3.11989 8 2.13172 8H0V10H20V8H18.5349C17.5468 8 16.5936 7.63423 15.8591 6.97318L11.0023 2.60207C10.622 2.2598 10.0447 2.25979 9.66437 2.60207Z\"\n className=\"fill-(--popup-surface,var(--surface-3))\"\n />\n <path\n d=\"M8.99542 1.85876C9.75604 1.17425 10.9106 1.17422 11.6713 1.85878L16.5281 6.22989C17.0789 6.72568 17.7938 7.00001 18.5349 7.00001L15.89 7L11.0023 2.60207C10.622 2.2598 10.0447 2.2598 9.66436 2.60207L4.77734 7L2.13171 7.00001C2.87284 7.00001 3.58774 6.72568 4.13861 6.22989L8.99542 1.85876Z\"\n className=\"fill-border\"\n />\n <path\n d=\"M10.3333 3.34539L5.47654 7.71648C4.55842 8.54279 3.36693 9 2.13172 9H0V8H2.13172C3.11989 8 4.07308 7.63423 4.80758 6.97318L9.66437 2.60207C10.0447 2.25979 10.622 2.2598 11.0023 2.60207L15.8591 6.97318C16.5936 7.63423 17.5468 8 18.5349 8H20V9H18.5349C17.2998 9 16.1083 8.54278 15.1901 7.71648L10.3333 3.34539Z\"\n className=\"fill-border\"\n />\n </svg>\n );\n}\n","import type { NavigationMenu as NavigationMenuPrimitive } from '@base-ui/react/navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport type * as React from 'react';\nimport type { SurfaceLevel } from '../lib/surface.js';\n\ntype PositionerProps = React.ComponentProps<typeof NavigationMenuPrimitive.Positioner>;\n\nexport const navigationMenuTriggerStyle = cva(\n 'box-border flex items-center justify-center gap-1.5 h-10 px-2.5 xs:px-3 m-0 rounded-md text-foreground font-medium !text-[15px] leading-6 select-none no-underline hover:text-foreground data-[popup-open]:bg-black/[0.07] dark:data-[popup-open]:bg-white/[0.07] data-[popup-open]:text-foreground focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-1 focus-visible:outline-ring focus-visible:relative',\n);\n\nexport const navigationMenuSubTriggerStyle = cva(\n 'w-full text-left relative block rounded-md p-2.5 xs:p-3 no-underline text-inherit hover:bg-black/[0.07] dark:hover:bg-white/[0.07] hover:text-foreground active:bg-black/[0.11] dark:active:bg-white/[0.11] focus-visible:relative focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-1 focus-visible:outline-ring data-[popup-open]:bg-black/[0.07] dark:data-[popup-open]:bg-white/[0.07] data-[popup-open]:text-foreground',\n);\n\nexport interface NavigationMenuProps extends React.ComponentProps<typeof NavigationMenuPrimitive.Root> {\n side?: PositionerProps['side'];\n sideOffset?: PositionerProps['sideOffset'];\n align?: PositionerProps['align'];\n alignOffset?: PositionerProps['alignOffset'];\n collisionPadding?: PositionerProps['collisionPadding'];\n collisionBoundary?: PositionerProps['collisionBoundary'];\n positionMethod?: PositionerProps['positionMethod'];\n arrow?: boolean;\n /** Surface elevation level (1-8) for the bar. Defaults to 2 — subtle toolbar above the page. */\n level?: SurfaceLevel;\n /** Shadow weight (1-8) for the bar. Defaults to 2. */\n shadowLevel?: SurfaceLevel;\n}\n\nexport interface NavigationMenuLinkProps extends React.ComponentProps<typeof NavigationMenuPrimitive.Link> {\n /**\n * When true, applies trigger button styling for top-level navigation links\n */\n standalone?: boolean;\n}\n\nexport interface NavigationMenuViewportProps extends React.ComponentProps<typeof NavigationMenuPrimitive.Viewport> {\n side?: PositionerProps['side'];\n sideOffset?: PositionerProps['sideOffset'];\n align?: PositionerProps['align'];\n alignOffset?: PositionerProps['alignOffset'];\n collisionPadding?: PositionerProps['collisionPadding'];\n collisionBoundary?: PositionerProps['collisionBoundary'];\n positionMethod?: PositionerProps['positionMethod'];\n arrow?: boolean;\n}\n\nexport interface NavigationMenuSubProps extends React.ComponentProps<typeof NavigationMenuPrimitive.Root> {\n side?: PositionerProps['side'];\n sideOffset?: PositionerProps['sideOffset'];\n align?: PositionerProps['align'];\n alignOffset?: PositionerProps['alignOffset'];\n arrow?: boolean;\n}\n","import { NavigationMenu as NavigationMenuPrimitive } from '@base-ui/react/navigation-menu';\nimport type * as React from 'react';\nimport { solidSurface } from '../lib/surface.js';\nimport { cn, validCssVars } from '../lib/utils.js';\nimport { ArrowSvg, ChevronDownIcon, ChevronRightIcon } from './navigation-menu-icons.js';\nimport {\n type NavigationMenuLinkProps,\n type NavigationMenuProps,\n type NavigationMenuSubProps,\n type NavigationMenuViewportProps,\n navigationMenuSubTriggerStyle,\n navigationMenuTriggerStyle,\n} from './navigation-menu-styles.js';\n\nfunction NavigationMenu({\n className,\n children,\n side,\n sideOffset = 10,\n align,\n alignOffset,\n collisionPadding = { top: 5, bottom: 5, left: 20, right: 20 },\n collisionBoundary,\n arrow = false,\n positionMethod = 'fixed',\n level = 2,\n shadowLevel = 2,\n ...props\n}: NavigationMenuProps) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu\"\n data-level={level}\n className={cn('min-w-max rounded-md p-1 text-foreground', solidSurface(level, shadowLevel), className)}\n {...props}\n >\n {children}\n <NavigationMenuViewport\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n collisionPadding={collisionPadding}\n collisionBoundary={collisionBoundary}\n arrow={arrow}\n positionMethod={positionMethod}\n />\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {\n return <NavigationMenuPrimitive.List data-slot=\"navigation-menu-list\" className={cn('relative flex', className)} {...props} />;\n}\n\nfunction NavigationMenuItem({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {\n return <NavigationMenuPrimitive.Item data-slot=\"navigation-menu-item\" className={cn('relative', className)} {...props} />;\n}\n\nfunction NavigationMenuTrigger({ className, children, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-trigger\"\n className={cn(navigationMenuTriggerStyle(), className)}\n {...props}\n >\n {children}\n <NavigationMenuIcon />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuIcon({\n className,\n render = <ChevronDownIcon />,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Icon>) {\n return (\n <NavigationMenuPrimitive.Icon\n className={cn('transition-transform duration-200 ease-in-out data-[popup-open]:rotate-180', className)}\n render={render}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuSubTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {\n return (\n <NavigationMenuPrimitive.Trigger\n data-slot=\"navigation-menu-sub-trigger\"\n className={cn(navigationMenuSubTriggerStyle(), className)}\n {...props}\n >\n {children}\n <NavigationMenuPrimitive.Icon\n className=\"absolute top-1/2 right-2.5 flex h-2.5 w-2.5 -translate-y-1/2 items-center justify-center transition-transform duration-200 ease-in-out data-[popup-open]:rotate-180\"\n render={<ChevronRightIcon />}\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({ className, ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {\n return (\n <NavigationMenuPrimitive.Content\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'h-full w-[calc(100vw-2.5rem)] p-4 sm:w-max',\n // Transitions for opacity/transform/filter\n 'transition-[opacity,transform,filter,scale,translate] duration-(--duration) ease-(--easing)',\n // Starting/ending opacity\n 'data-ending-style:opacity-0 data-starting-style:opacity-0',\n // Direction-aware slide (starting)\n 'data-starting-style:data-[activation-direction=left]:-translate-x-1/2',\n 'data-starting-style:data-[activation-direction=right]:translate-x-1/2',\n // Direction-aware slide (ending)\n 'data-ending-style:data-[activation-direction=left]:translate-x-1/2',\n 'data-ending-style:data-[activation-direction=right]:-translate-x-1/2',\n // Blur effect during transitions\n 'data-ending-style:blur-[4px] data-starting-style:blur-[4px]',\n // scale effect during transitions\n 'data-ending-style:scale-97 data-starting-style:scale-97',\n // Motion reduce support\n 'motion-reduce:transition-none',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuLink({ className, standalone, ...props }: NavigationMenuLinkProps) {\n return (\n <NavigationMenuPrimitive.Link\n data-slot=\"navigation-menu-link\"\n className={cn(\n standalone\n ? navigationMenuTriggerStyle()\n : 'block rounded-md p-2.5 xs:p-3 text-inherit no-underline duration-150 hover:text-foreground hover:duration-0 focus-visible:relative focus-visible:outline-2 focus-visible:outline-ring focus-visible:-outline-offset-1',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction NavigationMenuBackdrop({ ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Backdrop>) {\n return <NavigationMenuPrimitive.Backdrop data-slot=\"navigation-menu-backdrop\" {...props} />;\n}\n\nfunction NavigationMenuPortal({ ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Portal>) {\n return <NavigationMenuPrimitive.Portal data-slot=\"navigation-menu-portal\" {...props} />;\n}\n\nfunction NavigationMenuArrow({ ...props }: React.ComponentProps<typeof NavigationMenuPrimitive.Arrow>) {\n return (\n <NavigationMenuPrimitive.Arrow\n className=\"flex transition-[left] duration-[var(--duration)] ease-[var(--easing)] data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=top]:bottom-[-8px] data-[side=right]:left-[-13px] data-[side=left]:rotate-90 data-[side=right]:-rotate-90 data-[side=top]:rotate-180\"\n {...props}\n >\n <ArrowSvg />\n </NavigationMenuPrimitive.Arrow>\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n children,\n side,\n sideOffset,\n align,\n alignOffset,\n collisionPadding,\n collisionBoundary,\n arrow = false,\n positionMethod = 'fixed',\n ...props\n}: NavigationMenuViewportProps) {\n return (\n <NavigationMenuPortal>\n <NavigationMenuPrimitive.Positioner\n data-slot=\"navigation-menu-positioner\"\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n collisionPadding={collisionPadding}\n collisionBoundary={collisionBoundary}\n positionMethod={positionMethod}\n className=\"z-50 box-border h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-(--duration) ease-(--easing) before:absolute before:content-[''] data-instant:transition-none data-[side=bottom]:before:-top-2.5 data-[side=left]:before:top-0 data-[side=right]:before:top-0 data-[side=bottom]:before:right-0 data-[side=left]:before:-right-2.5 data-[side=top]:before:right-0 data-[side=left]:before:bottom-0 data-[side=right]:before:bottom-0 data-[side=top]:before:-bottom-2.5 data-[side=bottom]:before:left-0 data-[side=right]:before:-left-2.5 data-[side=top]:before:left-0 data-[side=bottom]:before:h-2.5 data-[side=top]:before:h-2.5 data-[side=left]:before:w-2.5 data-[side=right]:before:w-2.5\"\n style={validCssVars({ '--duration': '0.35s', '--easing': 'cubic-bezier(0.22, 1, 0.36, 1)' })}\n >\n <NavigationMenuPrimitive.Popup\n data-slot=\"navigation-menu-content\"\n className={cn(\n 'relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) overflow-hidden rounded-md text-foreground transition-[opacity,transform,width,height,scale,translate] duration-(--duration) ease-(--easing) data-ending-style:scale-90 data-starting-style:scale-90 data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-150',\n solidSurface(3, 3),\n )}\n >\n {arrow ? <NavigationMenuArrow /> : null}\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-viewport\"\n className={cn('relative h-full w-full overflow-hidden', className)}\n {...props}\n >\n {children}\n </NavigationMenuPrimitive.Viewport>\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPortal>\n );\n}\n\nfunction NavigationMenuSub({\n className,\n children,\n orientation = 'vertical',\n side = 'right',\n sideOffset = 24,\n align = 'end',\n alignOffset = -24,\n arrow = false,\n ...props\n}: NavigationMenuSubProps) {\n return (\n <NavigationMenuPrimitive.Root\n data-slot=\"navigation-menu-sub\"\n className={cn('', className)}\n orientation={orientation}\n {...props}\n >\n {children}\n <NavigationMenuPortal>\n <NavigationMenuPrimitive.Positioner\n data-slot=\"navigation-menu-sub-positioner\"\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n align={align}\n side={side}\n className=\"box-border h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-(--duration) ease-(--easing) before:absolute before:content-[''] data-instant:transition-none data-[side=bottom]:before:-top-2.5 data-[side=left]:before:top-0 data-[side=right]:before:top-0 data-[side=bottom]:before:right-0 data-[side=left]:before:-right-2.5 data-[side=top]:before:right-0 data-[side=left]:before:bottom-0 data-[side=right]:before:bottom-0 data-[side=top]:before:-bottom-2.5 data-[side=bottom]:before:left-0 data-[side=right]:before:-left-2.5 data-[side=top]:before:left-0 data-[side=bottom]:before:h-2.5 data-[side=top]:before:h-2.5 data-[side=left]:before:w-2.5 data-[side=right]:before:w-2.5\"\n style={validCssVars({ '--duration': '0.35s', '--easing': 'cubic-bezier(0.22, 1, 0.36, 1)' })}\n >\n <NavigationMenuPrimitive.Popup\n data-slot=\"navigation-menu-sub-content\"\n className={cn(\n 'relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) overflow-hidden rounded-md text-foreground transition-[opacity,transform,width,height,scale,translate] duration-(--duration) ease-(--easing) data-ending-style:scale-90 data-starting-style:scale-90 data-ending-style:opacity-0 data-starting-style:opacity-0 data-ending-style:duration-150',\n solidSurface(5, 5),\n )}\n >\n {arrow ? <NavigationMenuArrow /> : null}\n <NavigationMenuPrimitive.Viewport\n data-slot=\"navigation-menu-sub-viewport\"\n className=\"relative h-full w-full overflow-hidden\"\n />\n </NavigationMenuPrimitive.Popup>\n </NavigationMenuPrimitive.Positioner>\n </NavigationMenuPortal>\n </NavigationMenuPrimitive.Root>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuArrow,\n NavigationMenuBackdrop,\n NavigationMenuContent,\n NavigationMenuIcon,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuPortal,\n NavigationMenuSub,\n NavigationMenuSubTrigger,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { NavigationMenu, NavigationMenuArrow, NavigationMenuBackdrop, NavigationMenuContent, NavigationMenuIcon, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPortal, NavigationMenuSub, NavigationMenuSubTrigger, NavigationMenuTrigger, NavigationMenuViewport } from './chunk-AYLCYDUM.mjs';
|
|
2
|
+
import './chunk-KBHYXLRG.mjs';
|
|
3
|
+
import './chunk-JVXJ6SFX.mjs';
|
|
4
|
+
import './chunk-XZEDZVXT.mjs';
|
|
5
|
+
import './chunk-QAWSH567.mjs';
|
|
6
|
+
//# sourceMappingURL=navigation-menu.mjs.map
|
|
7
|
+
//# sourceMappingURL=navigation-menu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"navigation-menu.mjs"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type InputProps } from './input.js';
|
|
2
|
+
export type PasswordInputProps = Omit<InputProps, 'rightAdornment' | 'inputType'> & {
|
|
3
|
+
inputType?: 'password' | 'new-password';
|
|
4
|
+
};
|
|
5
|
+
export declare function PasswordInput({ inputType, ...props }: PasswordInputProps): import("react").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=password-input.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type InputProps } from './input.js';
|
|
2
|
+
export type PasswordInputProps = Omit<InputProps, 'rightAdornment' | 'inputType'> & {
|
|
3
|
+
inputType?: 'password' | 'new-password';
|
|
4
|
+
};
|
|
5
|
+
export declare function PasswordInput({ inputType, ...props }: PasswordInputProps): import("react").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=password-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-input.d.ts","sourceRoot":"","sources":["../../src/components/password-input.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,WAAW,CAAC,GAAG;IAClF,SAAS,CAAC,EAAE,UAAU,GAAG,cAAc,CAAC;CACzC,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,SAAsB,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAyBrF"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var react = require('react');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
var tailwindMerge = require('tailwind-merge');
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
var FIELD_BORDER = {
|
|
12
|
+
idle: "border-(--color-border)",
|
|
13
|
+
focused: "border-(--color-foreground)/40",
|
|
14
|
+
error: "border-(--color-destructive)"
|
|
15
|
+
};
|
|
16
|
+
var FIELD_HEIGHT = {
|
|
17
|
+
sm: "h-8",
|
|
18
|
+
md: "h-9",
|
|
19
|
+
lg: "h-11"
|
|
20
|
+
};
|
|
21
|
+
var FIELD_SHAPE = {
|
|
22
|
+
rounded: "rounded-lg",
|
|
23
|
+
pill: "rounded-full"
|
|
24
|
+
};
|
|
25
|
+
var INPUT_SIZE = {
|
|
26
|
+
sm: "text-xs",
|
|
27
|
+
md: "text-sm",
|
|
28
|
+
lg: "text-base"
|
|
29
|
+
};
|
|
30
|
+
var INPUT_PAD = {
|
|
31
|
+
sm: "px-2.5",
|
|
32
|
+
md: "px-3",
|
|
33
|
+
lg: "px-3.5"
|
|
34
|
+
};
|
|
35
|
+
function Input({
|
|
36
|
+
label,
|
|
37
|
+
error,
|
|
38
|
+
hint,
|
|
39
|
+
leftAdornment,
|
|
40
|
+
rightAdornment,
|
|
41
|
+
size = "md",
|
|
42
|
+
shape = "rounded",
|
|
43
|
+
className,
|
|
44
|
+
inputClassName,
|
|
45
|
+
inputType = "text",
|
|
46
|
+
id: idProp,
|
|
47
|
+
onFocus,
|
|
48
|
+
onBlur,
|
|
49
|
+
disabled,
|
|
50
|
+
autoFocus,
|
|
51
|
+
...inputProps
|
|
52
|
+
}) {
|
|
53
|
+
const autoId = react.useId();
|
|
54
|
+
const id = idProp ?? autoId;
|
|
55
|
+
const [focused, setFocused] = react.useState(false);
|
|
56
|
+
const hasError = Boolean(error);
|
|
57
|
+
const errorMessage = typeof error === "string" ? error : null;
|
|
58
|
+
const state = hasError ? "error" : focused ? "focused" : "idle";
|
|
59
|
+
const hasLeft = Boolean(leftAdornment);
|
|
60
|
+
const hasRight = Boolean(rightAdornment);
|
|
61
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex flex-col gap-1.5", className), children: [
|
|
62
|
+
label ? /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: id, className: "px-1 font-medium text-(--color-foreground) text-sm", children: label }) : null,
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
64
|
+
"div",
|
|
65
|
+
{
|
|
66
|
+
className: cn(
|
|
67
|
+
"relative flex flex-row items-center overflow-hidden border",
|
|
68
|
+
FIELD_BORDER[state],
|
|
69
|
+
FIELD_HEIGHT[size],
|
|
70
|
+
FIELD_SHAPE[shape],
|
|
71
|
+
disabled && "opacity-60"
|
|
72
|
+
),
|
|
73
|
+
children: [
|
|
74
|
+
hasLeft ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute top-0 bottom-0 left-3 z-10 flex items-center justify-center", children: leftAdornment }) : null,
|
|
75
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
76
|
+
"input",
|
|
77
|
+
{
|
|
78
|
+
id,
|
|
79
|
+
type: inputType,
|
|
80
|
+
disabled,
|
|
81
|
+
autoFocus,
|
|
82
|
+
onFocus: (event_) => {
|
|
83
|
+
setFocused(true);
|
|
84
|
+
onFocus?.(event_);
|
|
85
|
+
},
|
|
86
|
+
onBlur: (event_) => {
|
|
87
|
+
setFocused(false);
|
|
88
|
+
onBlur?.(event_);
|
|
89
|
+
},
|
|
90
|
+
className: cn(
|
|
91
|
+
"h-full min-w-0 flex-1 bg-transparent text-(--color-foreground) outline-none",
|
|
92
|
+
INPUT_SIZE[size],
|
|
93
|
+
hasLeft ? "pl-10" : INPUT_PAD[size],
|
|
94
|
+
hasRight ? "pr-10" : INPUT_PAD[size],
|
|
95
|
+
inputClassName
|
|
96
|
+
),
|
|
97
|
+
...inputProps
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
hasRight ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute top-0 right-3 bottom-0 z-10 flex items-center justify-center", children: rightAdornment }) : null
|
|
101
|
+
]
|
|
102
|
+
}
|
|
103
|
+
),
|
|
104
|
+
errorMessage ? /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "px-1 text-(--color-destructive) text-xs", children: errorMessage }) : hint ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-1 text-(--color-muted-foreground) text-xs", children: hint }) : null
|
|
105
|
+
] });
|
|
106
|
+
}
|
|
107
|
+
function PasswordInput({ inputType = "password", ...props }) {
|
|
108
|
+
const [visible, setVisible] = react.useState(false);
|
|
109
|
+
const toggle = react.useCallback(() => setVisible((v) => !v), []);
|
|
110
|
+
const eye = /* @__PURE__ */ jsxRuntime.jsx(
|
|
111
|
+
"button",
|
|
112
|
+
{
|
|
113
|
+
type: "button",
|
|
114
|
+
onClick: toggle,
|
|
115
|
+
className: "pointer-events-auto cursor-pointer text-(--color-muted-foreground) hover:text-(--color-foreground)",
|
|
116
|
+
"aria-label": visible ? "Hide password" : "Show password",
|
|
117
|
+
tabIndex: -1,
|
|
118
|
+
children: visible ? /* @__PURE__ */ jsxRuntime.jsx(EyeOffIcon, { className: "size-5" }) : /* @__PURE__ */ jsxRuntime.jsx(EyeIcon, { className: "size-5" })
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
122
|
+
Input,
|
|
123
|
+
{
|
|
124
|
+
...props,
|
|
125
|
+
inputType: visible ? "text" : "password",
|
|
126
|
+
rightAdornment: eye,
|
|
127
|
+
autoComplete: inputType === "new-password" ? "new-password" : "current-password"
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
function EyeIcon(props) {
|
|
132
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
133
|
+
"svg",
|
|
134
|
+
{
|
|
135
|
+
"aria-hidden": "true",
|
|
136
|
+
viewBox: "0 0 24 24",
|
|
137
|
+
fill: "none",
|
|
138
|
+
stroke: "currentColor",
|
|
139
|
+
strokeWidth: "2",
|
|
140
|
+
strokeLinecap: "round",
|
|
141
|
+
strokeLinejoin: "round",
|
|
142
|
+
...props,
|
|
143
|
+
children: [
|
|
144
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" }),
|
|
145
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "12", cy: "12", r: "3" })
|
|
146
|
+
]
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
function EyeOffIcon(props) {
|
|
151
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
152
|
+
"svg",
|
|
153
|
+
{
|
|
154
|
+
"aria-hidden": "true",
|
|
155
|
+
viewBox: "0 0 24 24",
|
|
156
|
+
fill: "none",
|
|
157
|
+
stroke: "currentColor",
|
|
158
|
+
strokeWidth: "2",
|
|
159
|
+
strokeLinecap: "round",
|
|
160
|
+
strokeLinejoin: "round",
|
|
161
|
+
...props,
|
|
162
|
+
children: [
|
|
163
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49" }),
|
|
164
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M14.084 14.158a3 3 0 0 1-4.242-4.242" }),
|
|
165
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143" }),
|
|
166
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "m2 2 20 20" })
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
exports.PasswordInput = PasswordInput;
|
|
173
|
+
//# sourceMappingURL=password-input.js.map
|
|
174
|
+
//# sourceMappingURL=password-input.js.map
|