@rinzai/zen 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/animated-number/index.js +33 -0
- package/dist/avatar/index.js +38 -0
- package/dist/backdrop/index.d.ts +7 -3
- package/dist/backdrop/index.d.ts.map +1 -1
- package/dist/backdrop/index.js +98 -0
- package/dist/badge/index.d.ts +1 -1
- package/dist/badge/index.js +24 -0
- package/dist/button/index.d.ts +10 -3
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +54 -0
- package/dist/calendar/index.d.ts +44 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +161 -0
- package/dist/card/index.d.ts +15 -6
- package/dist/card/index.d.ts.map +1 -1
- package/dist/card/index.js +60 -0
- package/dist/chart/donut.d.ts +30 -0
- package/dist/chart/donut.d.ts.map +1 -0
- package/dist/chart/donut.js +96 -0
- package/dist/chart/index.d.ts +81 -0
- package/dist/chart/index.d.ts.map +1 -0
- package/dist/chart/index.js +362 -0
- package/dist/chart/tooltip.d.ts +25 -0
- package/dist/chart/tooltip.d.ts.map +1 -0
- package/dist/chart/tooltip.js +51 -0
- package/dist/checkbox/index.d.ts +20 -0
- package/dist/checkbox/index.d.ts.map +1 -0
- package/dist/checkbox/index.js +61 -0
- package/dist/chip/index.d.ts +12 -0
- package/dist/chip/index.d.ts.map +1 -0
- package/dist/chip/index.js +14 -0
- package/dist/code-block/index.js +36 -0
- package/dist/collapse/index.d.ts +17 -7
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +82 -0
- package/dist/combobox/index.d.ts +89 -0
- package/dist/combobox/index.d.ts.map +1 -0
- package/dist/combobox/index.js +262 -0
- package/dist/confirm-dialog/index.d.ts.map +1 -1
- package/dist/confirm-dialog/index.js +25 -0
- package/dist/date-picker/index.d.ts +48 -0
- package/dist/date-picker/index.d.ts.map +1 -0
- package/dist/date-picker/index.js +112 -0
- package/dist/dialog/index.d.ts +14 -2
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +77 -0
- package/dist/disclosure/index.d.ts +25 -0
- package/dist/disclosure/index.d.ts.map +1 -0
- package/dist/disclosure/index.js +66 -0
- package/dist/editable-cell/index.js +24 -0
- package/dist/field/index.d.ts +42 -3
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +66 -0
- package/dist/header/index.js +17 -0
- package/dist/icons/chevron-down.js +21 -0
- package/dist/icons/chevron-left.js +21 -0
- package/dist/icons/chevron-right.js +21 -0
- package/dist/icons/chevron-up.js +21 -0
- package/dist/icons/ellipsis.d.ts +4 -0
- package/dist/icons/ellipsis.d.ts.map +1 -0
- package/dist/icons/ellipsis.js +31 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/search.js +21 -0
- package/dist/icons/x-mark.js +21 -0
- package/dist/index.d.ts +22 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +16 -0
- package/dist/input-group/index.d.ts.map +1 -1
- package/dist/input-group/index.js +36 -0
- package/dist/inset/index.d.ts +16 -0
- package/dist/inset/index.d.ts.map +1 -0
- package/dist/inset/index.js +23 -0
- package/dist/lib.js +74 -0
- package/dist/menu/index.d.ts +55 -0
- package/dist/menu/index.d.ts.map +1 -0
- package/dist/menu/index.js +118 -0
- package/dist/meter/index.js +41 -0
- package/dist/money-input/index.d.ts +77 -7
- package/dist/money-input/index.d.ts.map +1 -1
- package/dist/money-input/index.js +304 -0
- package/dist/month-picker/index.d.ts +4 -3
- package/dist/month-picker/index.d.ts.map +1 -1
- package/dist/month-picker/index.js +93 -0
- package/dist/page-header/index.js +26 -0
- package/dist/pills/index.d.ts +35 -0
- package/dist/pills/index.d.ts.map +1 -0
- package/dist/pills/index.js +50 -0
- package/dist/popover/index.d.ts +41 -22
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +75 -0
- package/dist/progress-ring/index.js +49 -0
- package/dist/radio-cards/index.d.ts +34 -0
- package/dist/radio-cards/index.d.ts.map +1 -0
- package/dist/radio-cards/index.js +48 -0
- package/dist/radio-group/index.d.ts +39 -0
- package/dist/radio-group/index.d.ts.map +1 -0
- package/dist/radio-group/index.js +63 -0
- package/dist/segmented/index.d.ts +16 -6
- package/dist/segmented/index.d.ts.map +1 -1
- package/dist/segmented/index.js +58 -0
- package/dist/select/index.d.ts +28 -14
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +187 -0
- package/dist/side-nav/index.js +37 -0
- package/dist/skeleton/index.js +12 -0
- package/dist/slider/index.js +34 -0
- package/dist/spinner/index.js +14 -0
- package/dist/tab-bar/index.d.ts +3 -0
- package/dist/tab-bar/index.d.ts.map +1 -1
- package/dist/tab-bar/index.js +34 -0
- package/dist/table/index.js +148 -0
- package/dist/table-of-contents/index.js +37 -0
- package/dist/tabs/index.d.ts +3 -2
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +114 -0
- package/dist/tailwind.css +1 -1
- package/dist/textarea/index.d.ts.map +1 -1
- package/dist/textarea/index.js +16 -0
- package/dist/theme-toggle/index.js +43 -0
- package/dist/theme.css +178 -13
- package/dist/toast/index.d.ts +6 -1
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +248 -0
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +26 -0
- package/dist/tooltip/index.d.ts +25 -0
- package/dist/tooltip/index.d.ts.map +1 -0
- package/dist/tooltip/index.js +108 -0
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +135 -0
- package/dist/utils/cva.js +25 -0
- package/dist/utils/cx.js +6 -0
- package/dist/utils/date.d.ts +37 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +68 -0
- package/dist/utils/field-chevron.js +19 -0
- package/dist/utils/fx.d.ts +30 -0
- package/dist/utils/fx.d.ts.map +1 -0
- package/dist/utils/fx.js +21 -0
- package/dist/utils/graphics.js +33 -0
- package/dist/utils/indicator.d.ts +24 -0
- package/dist/utils/indicator.d.ts.map +1 -0
- package/dist/utils/indicator.js +37 -0
- package/dist/utils/merge.js +305 -0
- package/dist/utils/money.js +73 -0
- package/dist/utils/month.js +46 -0
- package/dist/utils/slot.d.ts +9 -5
- package/dist/utils/slot.d.ts.map +1 -1
- package/dist/utils/slot.js +25 -0
- package/dist/utils/status-icons.js +48 -0
- package/dist/utils/styles.d.ts +6 -6
- package/dist/utils/styles.d.ts.map +1 -1
- package/dist/utils/styles.js +6 -0
- package/dist/utils/theme.js +200 -0
- package/dist/utils/useAnchoredPopup.d.ts +8 -2
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +63 -0
- package/dist/utils/useHydrated.js +9 -0
- package/dist/utils/useVirtualList.js +45 -0
- package/dist/variables.css +22 -0
- package/dist/zen.css +1 -1
- package/package.json +9 -4
- package/dist/actions-menu/index.d.ts +0 -18
- package/dist/actions-menu/index.d.ts.map +0 -1
- package/dist/dropdown/index.d.ts +0 -28
- package/dist/dropdown/index.d.ts.map +0 -1
- package/dist/nav-pills/index.d.ts +0 -31
- package/dist/nav-pills/index.d.ts.map +0 -1
- package/dist/zen.js +0 -2970
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { Slot as t } from "../utils/slot.js";
|
|
4
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
5
|
+
//#region packages/inset/index.tsx
|
|
6
|
+
var r = {
|
|
7
|
+
default: "bg-tint/[0.03]",
|
|
8
|
+
positive: "bg-primary/10",
|
|
9
|
+
negative: "bg-destructive/10"
|
|
10
|
+
}, i = {
|
|
11
|
+
default: "border-tint/[0.08] bg-tint/[0.03]",
|
|
12
|
+
positive: "border-primary/30 bg-primary/[0.07]",
|
|
13
|
+
negative: "border-destructive/35 bg-destructive/[0.08]"
|
|
14
|
+
};
|
|
15
|
+
function a({ bordered: a = !1, tone: o = "default", asChild: s, className: c, ...l }) {
|
|
16
|
+
let u = {
|
|
17
|
+
...l,
|
|
18
|
+
className: e("zen__inset", a ? e("rounded-xl border p-4", i[o]) : e("rounded-lg px-3 py-2.5", r[o]), c)
|
|
19
|
+
};
|
|
20
|
+
return n(s ? t : "div", { ...u });
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { a as default };
|
package/dist/lib.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { cx as e } from "./utils/cx.js";
|
|
4
|
+
import { applyGraphicsMode as t, detectGraphicsMode as n } from "./utils/graphics.js";
|
|
5
|
+
import { useAnchoredPopup as r } from "./utils/useAnchoredPopup.js";
|
|
6
|
+
import i, { MenuContent as a, MenuHeader as o, MenuItem as s, MenuSeparator as c, MenuTrigger as l } from "./menu/index.js";
|
|
7
|
+
import { MoneyParseError as u, currencySymbol as d, formatAmount as f, formatMoney as p, minorDigits as m, parseMoney as h, parseMoneyInput as g } from "./utils/money.js";
|
|
8
|
+
import _, { AnimatedMoney as v } from "./animated-number/index.js";
|
|
9
|
+
import y, { ImageCropError as b, cropImageToSquare as x } from "./avatar/index.js";
|
|
10
|
+
import S from "./backdrop/index.js";
|
|
11
|
+
import { cva as C } from "./utils/cva.js";
|
|
12
|
+
import w from "./badge/index.js";
|
|
13
|
+
import T from "./spinner/index.js";
|
|
14
|
+
import E, { buttonVariants as D } from "./button/index.js";
|
|
15
|
+
import O, { CardDescription as k, CardHeader as A, CardTitle as j, Stat as M, StatRow as N } from "./card/index.js";
|
|
16
|
+
import P from "./code-block/index.js";
|
|
17
|
+
import F from "./chip/index.js";
|
|
18
|
+
import I, { PopoverClose as L, PopoverContent as R, PopoverTrigger as z } from "./popover/index.js";
|
|
19
|
+
import B from "./collapse/index.js";
|
|
20
|
+
import { AlertIcon as V, CheckIcon as H, InfoIcon as U } from "./utils/status-icons.js";
|
|
21
|
+
import W, { FormMessage as G, useField as K, useFieldProps as q } from "./field/index.js";
|
|
22
|
+
import J from "./icons/search.js";
|
|
23
|
+
import Y from "./icons/x-mark.js";
|
|
24
|
+
import X, { InputGroupAddon as Z, InputGroupInput as Q } from "./input-group/index.js";
|
|
25
|
+
import { FieldChevron as $ } from "./utils/field-chevron.js";
|
|
26
|
+
import { useVirtualList as ee } from "./utils/useVirtualList.js";
|
|
27
|
+
import te, { ComboboxCreate as ne, ComboboxEmpty as re, ComboboxItem as ie, ComboboxList as ae, ComboboxPopup as oe, ComboboxSearch as se, ComboboxTrigger as ce } from "./combobox/index.js";
|
|
28
|
+
import le, { useToast as ue, useToastHost as de } from "./toast/index.js";
|
|
29
|
+
import fe, { DialogClose as pe, DialogFooter as me } from "./dialog/index.js";
|
|
30
|
+
import he from "./confirm-dialog/index.js";
|
|
31
|
+
import ge from "./editable-cell/index.js";
|
|
32
|
+
import _e, { DisclosureContent as ve, DisclosureTrigger as ye } from "./disclosure/index.js";
|
|
33
|
+
import be from "./header/index.js";
|
|
34
|
+
import xe from "./inset/index.js";
|
|
35
|
+
import Se from "./icons/chevron-down.js";
|
|
36
|
+
import Ce from "./icons/chevron-left.js";
|
|
37
|
+
import we from "./icons/chevron-right.js";
|
|
38
|
+
import Te from "./icons/chevron-up.js";
|
|
39
|
+
import Ee from "./icons/ellipsis.js";
|
|
40
|
+
import De from "./input/index.js";
|
|
41
|
+
import Oe from "./meter/index.js";
|
|
42
|
+
import { addMonths as ke, currentMonth as Ae, formatMonth as je, fromMonthIndex as Me, isMonth as Ne, monthIndex as Pe, monthNames as Fe, monthRange as Ie, monthsBetween as Le } from "./utils/month.js";
|
|
43
|
+
import Re from "./month-picker/index.js";
|
|
44
|
+
import ze from "./checkbox/index.js";
|
|
45
|
+
import { ChartTooltipCard as Be } from "./chart/tooltip.js";
|
|
46
|
+
import Ve from "./chart/donut.js";
|
|
47
|
+
import He, { ChartArea as Ue, ChartBar as We, ChartLine as Ge, ChartReference as Ke, niceTicks as qe } from "./chart/index.js";
|
|
48
|
+
import Je, { Radio as Ye } from "./radio-group/index.js";
|
|
49
|
+
import { addDays as Xe, addMonthsToDate as Ze, dayIndex as Qe, dayOfWeek as $e, daysBetween as et, daysInMonth as tt, formatDate as nt, formatDateRange as rt, fromDayIndex as it, isDate as at, today as ot, weekStart as st, weekdayNames as ct } from "./utils/date.js";
|
|
50
|
+
import lt from "./calendar/index.js";
|
|
51
|
+
import ut, { DateRangePicker as dt } from "./date-picker/index.js";
|
|
52
|
+
import { RateUnavailableError as ft, convertMinor as pt, isRateTable as mt, rateBetween as ht } from "./utils/fx.js";
|
|
53
|
+
import gt, { MoneyConversionHint as _t, MoneyCurrencyMenu as vt, useMoneyInput as yt } from "./money-input/index.js";
|
|
54
|
+
import bt, { RadioCard as xt } from "./radio-cards/index.js";
|
|
55
|
+
import St, { Pill as Ct, PillIndicator as wt } from "./pills/index.js";
|
|
56
|
+
import Tt from "./page-header/index.js";
|
|
57
|
+
import Et from "./progress-ring/index.js";
|
|
58
|
+
import Dt, { SegmentedItem as Ot } from "./segmented/index.js";
|
|
59
|
+
import kt, { SelectGroup as At, SelectItem as jt, SelectSeparator as Mt } from "./select/index.js";
|
|
60
|
+
import Nt, { SideNavGroup as Pt, SideNavLink as Ft } from "./side-nav/index.js";
|
|
61
|
+
import It from "./skeleton/index.js";
|
|
62
|
+
import Lt from "./slider/index.js";
|
|
63
|
+
import Rt, { TabBarItem as zt } from "./tab-bar/index.js";
|
|
64
|
+
import Bt, { TableBody as Vt, TableCell as Ht, TableContainer as Ut, TableEmpty as Wt, TableFooter as Gt, TableFooterCell as Kt, TableHead as qt, TableHeader as Jt, TableRow as Yt, TableSpacerRow as Xt, useSort as Zt } from "./table/index.js";
|
|
65
|
+
import Qt from "./table-of-contents/index.js";
|
|
66
|
+
import $t, { Tab as en, TabList as tn, TabPanel as nn } from "./tabs/index.js";
|
|
67
|
+
import { TreeCell as rn, TreeLabel as an, TreeRow as on, TreeToggle as sn, useTree as cn } from "./tree/index.js";
|
|
68
|
+
import ln from "./textarea/index.js";
|
|
69
|
+
import un from "./toggle/index.js";
|
|
70
|
+
import dn, { TooltipContent as fn, TooltipTrigger as pn } from "./tooltip/index.js";
|
|
71
|
+
import mn, { ThemeScript as hn, themeScript as gn } from "./theme-toggle/index.js";
|
|
72
|
+
import { DEFAULT_THEME as _n, INTENSITIES as vn, PRESETS as yn, applyPreset as bn, applyTheme as xn, contrastRatio as Sn, customize as Cn, normalizeTheme as wn, oklchToLinearRgb as Tn, resetTheme as En, themeVars as Dn } from "./utils/theme.js";
|
|
73
|
+
import { useHydrated as On } from "./utils/useHydrated.js";
|
|
74
|
+
export { V as AlertTriangle, v as AnimatedMoney, _ as AnimatedNumber, y as Avatar, S as Backdrop, w as Badge, E as Button, lt as Calendar, O as Card, k as CardDescription, A as CardHeader, j as CardTitle, He as Chart, Ue as ChartArea, We as ChartBar, Ge as ChartLine, Ke as ChartReference, Be as ChartTooltipCard, H as Check, ze as Checkbox, Se as ChevronDown, Ce as ChevronLeft, we as ChevronRight, Te as ChevronUp, F as Chip, P as CodeBlock, B as Collapse, te as Combobox, ne as ComboboxCreate, re as ComboboxEmpty, ie as ComboboxItem, ae as ComboboxList, oe as ComboboxPopup, se as ComboboxSearch, ce as ComboboxTrigger, he as ConfirmDialog, _n as DEFAULT_THEME, ut as DatePicker, dt as DateRangePicker, fe as Dialog, pe as DialogClose, me as DialogFooter, _e as Disclosure, ve as DisclosureContent, ye as DisclosureTrigger, Ve as DonutChart, ge as EditableCell, Ee as Ellipsis, W as Field, $ as FieldChevron, G as FormMessage, be as Header, vn as INTENSITIES, b as ImageCropError, U as InfoCircle, De as Input, X as InputGroup, Z as InputGroupAddon, Q as InputGroupInput, xe as Inset, i as Menu, a as MenuContent, o as MenuHeader, s as MenuItem, c as MenuSeparator, l as MenuTrigger, Oe as Meter, _t as MoneyConversionHint, vt as MoneyCurrencyMenu, gt as MoneyInput, u as MoneyParseError, Re as MonthPicker, yn as PRESETS, Tt as PageHeader, Ct as Pill, wt as PillIndicator, St as Pills, I as Popover, L as PopoverClose, R as PopoverContent, z as PopoverTrigger, Et as ProgressRing, Ye as Radio, xt as RadioCard, bt as RadioCards, Je as RadioGroup, ft as RateUnavailableError, J as Search, Dt as Segmented, Ot as SegmentedItem, kt as Select, At as SelectGroup, jt as SelectItem, Mt as SelectSeparator, Nt as SideNav, Pt as SideNavGroup, Ft as SideNavLink, It as Skeleton, Lt as Slider, T as Spinner, M as Stat, N as StatRow, en as Tab, Rt as TabBar, zt as TabBarItem, tn as TabList, nn as TabPanel, Bt as Table, Vt as TableBody, Ht as TableCell, Ut as TableContainer, Wt as TableEmpty, Gt as TableFooter, Kt as TableFooterCell, qt as TableHead, Jt as TableHeader, Qt as TableOfContents, Yt as TableRow, Xt as TableSpacerRow, $t as Tabs, ln as TextArea, hn as ThemeScript, mn as ThemeToggle, le as ToastProvider, un as Toggle, dn as Tooltip, fn as TooltipContent, pn as TooltipTrigger, rn as TreeCell, an as TreeLabel, on as TreeRow, sn as TreeToggle, Y as XMark, Xe as addDays, ke as addMonths, Ze as addMonthsToDate, t as applyGraphicsMode, bn as applyPreset, xn as applyTheme, D as buttonVariants, Sn as contrastRatio, pt as convertMinor, x as cropImageToSquare, d as currencySymbol, Ae as currentMonth, Cn as customize, C as cva, e as cx, Qe as dayIndex, $e as dayOfWeek, et as daysBetween, tt as daysInMonth, n as detectGraphicsMode, f as formatAmount, nt as formatDate, rt as formatDateRange, p as formatMoney, je as formatMonth, it as fromDayIndex, Me as fromMonthIndex, at as isDate, Ne as isMonth, mt as isRateTable, m as minorDigits, Pe as monthIndex, Fe as monthNames, Ie as monthRange, Le as monthsBetween, qe as niceTicks, wn as normalizeTheme, Tn as oklchToLinearRgb, h as parseMoney, g as parseMoneyInput, ht as rateBetween, En as resetTheme, gn as themeScript, Dn as themeVars, ot as today, r as useAnchoredPopup, K as useField, q as useFieldProps, On as useHydrated, yt as useMoneyInput, Zt as useSort, ue as useToast, de as useToastHost, cn as useTree, ee as useVirtualList, st as weekStart, ct as weekdayNames };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* A list of actions that opens from a button: a native popover, so outside
|
|
4
|
+
* clicks and Escape close it and focus returns to the button. Arrow keys, Home
|
|
5
|
+
* and End move between items. Put a MenuTrigger (its content is yours: an icon,
|
|
6
|
+
* an avatar, a label) and a MenuContent inside; fill the content with MenuItem,
|
|
7
|
+
* MenuSeparator and MenuHeader.
|
|
8
|
+
*/
|
|
9
|
+
export default function Menu({ onOpenChange, children }: MenuProps): import('react').JSX.Element;
|
|
10
|
+
/**
|
|
11
|
+
* The button that opens the menu. Give it an `aria-label` when it shows only an
|
|
12
|
+
* icon or avatar; the menu is named after it. With `asChild`, your own button instead.
|
|
13
|
+
*/
|
|
14
|
+
export declare function MenuTrigger({ asChild, style, children, ...rest }: MenuTriggerProps): import('react').JSX.Element;
|
|
15
|
+
/** The menu panel: glass, below the button (above it if there's no room), lined up with its end edge by default. */
|
|
16
|
+
export declare function MenuContent({ align, offset, className, style, children, ...rest }: MenuContentProps): import('react').JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* One choice in a Menu: closes the menu, then runs `onSelect`. An `icon` sits
|
|
19
|
+
* before the label (muted, or red with the label when `destructive`). With
|
|
20
|
+
* `asChild`, the item's role and styles go onto your own element instead, such
|
|
21
|
+
* as a router's Link.
|
|
22
|
+
*/
|
|
23
|
+
export declare function MenuItem({ icon, destructive, onSelect, asChild, className, children, onClick, ...rest }: MenuItemProps): import('react').JSX.Element;
|
|
24
|
+
/** A hairline between groups of items. */
|
|
25
|
+
export declare function MenuSeparator({ className }: {
|
|
26
|
+
className?: string;
|
|
27
|
+
}): import('react').JSX.Element;
|
|
28
|
+
/** Content at the top of a menu that isn't a choice, e.g. who is signed in. */
|
|
29
|
+
export declare function MenuHeader({ className, ...rest }: ComponentProps<'div'>): import('react').JSX.Element;
|
|
30
|
+
export interface MenuProps {
|
|
31
|
+
/** Every open and close: the trigger, choosing an item, outside clicks, Escape. */
|
|
32
|
+
onOpenChange?: (open: boolean) => void;
|
|
33
|
+
children?: ReactNode;
|
|
34
|
+
}
|
|
35
|
+
export interface MenuTriggerProps extends ComponentProps<'button'> {
|
|
36
|
+
/** Put the trigger's props on your own button element instead of rendering one. */
|
|
37
|
+
asChild?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface MenuContentProps extends ComponentProps<'div'> {
|
|
40
|
+
/** Which edge of the button the menu lines up with (default end), or centred on it. */
|
|
41
|
+
align?: 'start' | 'end' | 'center';
|
|
42
|
+
/** Gap between the button and the menu, in px. */
|
|
43
|
+
offset?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface MenuItemProps extends Omit<ComponentProps<'button'>, 'onSelect'> {
|
|
46
|
+
/** Shown before the label; size it yourself (e.g. size-4). */
|
|
47
|
+
icon?: ReactNode;
|
|
48
|
+
/** Red, for actions that remove or leave something. */
|
|
49
|
+
destructive?: boolean;
|
|
50
|
+
/** Runs after the menu closes. */
|
|
51
|
+
onSelect?: () => void;
|
|
52
|
+
/** Put the item's role and styles on the single child element (a link) instead of a button. */
|
|
53
|
+
asChild?: boolean;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/menu/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAA4C,SAAS,EAAqB,MAAM,OAAO,CAAC;AAkB/G;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,SAAS,+BAejE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,+BAelF;AAED,oHAAoH;AACpH,wBAAgB,WAAW,CAAC,EAAE,KAAa,EAAE,MAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,+BAkC/G;AAKD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EACrB,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,OAAO,EACP,GAAG,IAAI,EACV,EAAE,aAAa,+BAwBf;AAED,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,+BAElE;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,+BAEvE;AAED,MAAM,WAAW,SAAS;IACtB,mFAAmF;IACnF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,QAAQ,CAAC;IAC9D,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC3D,uFAAuF;IACvF,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;IAC7E,8DAA8D;IAC9D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { useGraphicsMode as t } from "../utils/graphics.js";
|
|
4
|
+
import { Slot as n } from "../utils/slot.js";
|
|
5
|
+
import { anchoredStyle as r, useAnchoredPopup as i } from "../utils/useAnchoredPopup.js";
|
|
6
|
+
import { createContext as a, useContext as o, useId as s } from "react";
|
|
7
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
8
|
+
//#region packages/menu/index.tsx
|
|
9
|
+
var u = a(() => {}), d = a(null);
|
|
10
|
+
function f(e) {
|
|
11
|
+
let t = o(d);
|
|
12
|
+
if (!t) throw Error(`<${e}> must be inside <Menu>`);
|
|
13
|
+
return t;
|
|
14
|
+
}
|
|
15
|
+
function p({ onOpenChange: e, children: n }) {
|
|
16
|
+
t();
|
|
17
|
+
let r = s(), a = i({ onOpenChange: (t) => {
|
|
18
|
+
t && a.popupRef.current?.focus(), e?.(t);
|
|
19
|
+
} });
|
|
20
|
+
return /* @__PURE__ */ c(d.Provider, {
|
|
21
|
+
value: {
|
|
22
|
+
popup: a,
|
|
23
|
+
triggerId: r
|
|
24
|
+
},
|
|
25
|
+
children: /* @__PURE__ */ c(u.Provider, {
|
|
26
|
+
value: () => a.setOpen(!1),
|
|
27
|
+
children: n
|
|
28
|
+
})
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function m({ asChild: e, style: t, children: r, ...i }) {
|
|
32
|
+
let { popup: a, triggerId: o } = f("MenuTrigger"), s = {
|
|
33
|
+
id: o,
|
|
34
|
+
"aria-haspopup": "menu",
|
|
35
|
+
...a.triggerProps,
|
|
36
|
+
...i,
|
|
37
|
+
style: {
|
|
38
|
+
...a.triggerProps.style,
|
|
39
|
+
...t
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return e ? /* @__PURE__ */ c(n, {
|
|
43
|
+
...s,
|
|
44
|
+
children: r
|
|
45
|
+
}) : /* @__PURE__ */ c("button", {
|
|
46
|
+
type: "button",
|
|
47
|
+
...s,
|
|
48
|
+
children: r
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function h({ align: t = "end", offset: n = 6, className: i, style: a, children: o, ...s }) {
|
|
52
|
+
let { popup: l, triggerId: u } = f("MenuContent"), d = (e) => {
|
|
53
|
+
let t = Array.from(l.popupRef.current?.querySelectorAll("[role=\"menuitem\"]") ?? []), n = t.indexOf(document.activeElement), r = t.length - 1, i = {
|
|
54
|
+
ArrowDown: n + 1,
|
|
55
|
+
ArrowUp: n === -1 ? r : n - 1,
|
|
56
|
+
Home: 0,
|
|
57
|
+
End: r
|
|
58
|
+
}[e.key];
|
|
59
|
+
i !== void 0 && (e.preventDefault(), t[(i + t.length) % t.length]?.focus());
|
|
60
|
+
};
|
|
61
|
+
return /* @__PURE__ */ c("div", {
|
|
62
|
+
"aria-labelledby": u,
|
|
63
|
+
...s,
|
|
64
|
+
...l.popupProps,
|
|
65
|
+
role: "menu",
|
|
66
|
+
tabIndex: -1,
|
|
67
|
+
onKeyDown: (e) => {
|
|
68
|
+
s.onKeyDown?.(e), d(e);
|
|
69
|
+
},
|
|
70
|
+
style: {
|
|
71
|
+
...r(l.id, {
|
|
72
|
+
align: t,
|
|
73
|
+
offset: n
|
|
74
|
+
}),
|
|
75
|
+
...a
|
|
76
|
+
},
|
|
77
|
+
className: e("zen__popover glass glass-blur text-foreground min-w-44 rounded-xl p-1.5 outline-hidden", i),
|
|
78
|
+
children: o
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
var g = "flex w-full cursor-default items-center gap-3 rounded-lg px-3 py-2 text-left text-sm outline-hidden select-none hover:bg-tint/[0.07] focus:bg-tint/[0.07]";
|
|
82
|
+
function _({ icon: t, destructive: r, onSelect: i, asChild: a, className: s, children: d, onClick: f, ...p }) {
|
|
83
|
+
let m = o(u), h = {
|
|
84
|
+
...p,
|
|
85
|
+
role: "menuitem",
|
|
86
|
+
tabIndex: -1,
|
|
87
|
+
className: e(g, r && "text-destructive", s),
|
|
88
|
+
onClick: (e) => {
|
|
89
|
+
f?.(e), m(), i?.();
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return a ? /* @__PURE__ */ c(n, {
|
|
93
|
+
...h,
|
|
94
|
+
children: d
|
|
95
|
+
}) : /* @__PURE__ */ l("button", {
|
|
96
|
+
type: "button",
|
|
97
|
+
...h,
|
|
98
|
+
children: [t && /* @__PURE__ */ c("span", {
|
|
99
|
+
"aria-hidden": !0,
|
|
100
|
+
className: e("flex shrink-0", !r && "text-muted-foreground"),
|
|
101
|
+
children: t
|
|
102
|
+
}), d]
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function v({ className: t }) {
|
|
106
|
+
return /* @__PURE__ */ c("div", {
|
|
107
|
+
role: "separator",
|
|
108
|
+
className: e("bg-tint/[0.07] mx-2 my-1 h-px", t)
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function y({ className: t, ...n }) {
|
|
112
|
+
return /* @__PURE__ */ c("div", {
|
|
113
|
+
className: e("flex items-center gap-3 px-3 py-2.5", t),
|
|
114
|
+
...n
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
118
|
+
export { h as MenuContent, y as MenuHeader, _ as MenuItem, v as MenuSeparator, m as MenuTrigger, p as default };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { useId as t } from "react";
|
|
4
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
+
//#region packages/meter/index.tsx
|
|
6
|
+
function i({ value: i, max: a = 100, label: o, detail: s, hint: c, valueText: l, tone: u = "auto", warnAt: d = .85, className: f }) {
|
|
7
|
+
let p = t(), m = i > a, h = a > 0 ? i / a : +(i > 0), g = Math.min(100, Math.max(0, Math.round(h * 100))), _ = u === "auto" ? m ? "danger" : h >= d ? "warning" : "default" : u;
|
|
8
|
+
return /* @__PURE__ */ r("div", {
|
|
9
|
+
role: "meter",
|
|
10
|
+
"aria-labelledby": o ? p : void 0,
|
|
11
|
+
"aria-valuemin": 0,
|
|
12
|
+
"aria-valuemax": a,
|
|
13
|
+
"aria-valuenow": Math.min(i, a),
|
|
14
|
+
"aria-valuetext": l,
|
|
15
|
+
className: e("zen__meter grid grid-cols-2 gap-y-1.5", f),
|
|
16
|
+
children: [
|
|
17
|
+
o && /* @__PURE__ */ n("span", {
|
|
18
|
+
id: p,
|
|
19
|
+
className: "text-sm font-medium",
|
|
20
|
+
children: o
|
|
21
|
+
}),
|
|
22
|
+
s && /* @__PURE__ */ n("span", {
|
|
23
|
+
className: e("col-start-2 text-right text-sm tabular-nums", _ === "danger" ? "text-destructive" : "text-muted-foreground"),
|
|
24
|
+
children: s
|
|
25
|
+
}),
|
|
26
|
+
/* @__PURE__ */ n("div", {
|
|
27
|
+
className: "bg-muted col-span-2 h-2 overflow-hidden rounded-full",
|
|
28
|
+
children: /* @__PURE__ */ n("div", {
|
|
29
|
+
className: e("h-full rounded-full transition-[width] duration-700 ease-[cubic-bezier(0.2,0.8,0.2,1)]", _ === "danger" ? "bg-destructive shadow-[0_0_12px_oklch(var(--destructive)/0.7)]" : _ === "warning" ? "bg-accent-foreground shadow-[0_0_12px_oklch(var(--accent-foreground)/0.6)]" : "from-primary to-glow-2 bg-gradient-to-r shadow-[0_0_12px_oklch(var(--glow)/0.6)]"),
|
|
30
|
+
style: { width: `${g}%` }
|
|
31
|
+
})
|
|
32
|
+
}),
|
|
33
|
+
c && /* @__PURE__ */ n("span", {
|
|
34
|
+
className: e("col-span-2 text-xs", _ === "danger" ? "text-destructive" : "text-muted-foreground"),
|
|
35
|
+
children: c
|
|
36
|
+
})
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { i as default };
|
|
@@ -1,18 +1,41 @@
|
|
|
1
|
+
import { ForeignAmount, RateTable } from '../utils/fx';
|
|
1
2
|
import { Money } from '../utils/money';
|
|
2
3
|
import { ChangeEvent, KeyboardEvent, ReactNode } from 'react';
|
|
3
4
|
/**
|
|
4
5
|
* Amount input in one currency. Shows grouped digits for the locale (1,52,000
|
|
5
6
|
* for en-IN) and accepts shorthand: 1.5L, 2cr, 10k, 1.2m. Commits on blur or
|
|
6
7
|
* Enter; Escape reverts. Values are integer minor units (paise, cents), or null
|
|
7
|
-
* when empty.
|
|
8
|
-
*
|
|
8
|
+
* when empty.
|
|
9
|
+
*
|
|
10
|
+
* With `convert`, the symbol becomes a currency switch: type an amount in e.g.
|
|
11
|
+
* USD and it's converted at the rates you load (in the browser; the amount is
|
|
12
|
+
* never sent anywhere). Replace the symbol with `start`, or build your own field
|
|
13
|
+
* from useMoneyInput, MoneyCurrencyMenu and MoneyConversionHint.
|
|
9
14
|
*/
|
|
10
15
|
export default function MoneyInput({ start, end, compact, disabled, id, autoFocus, className, 'aria-label': ariaLabel, ...options }: MoneyInputProps): import('react').JSX.Element;
|
|
16
|
+
/**
|
|
17
|
+
* The currency switch for a converting field (`convert`): shows the symbol, or
|
|
18
|
+
* the code of the foreign currency being typed in, and opens a menu of your
|
|
19
|
+
* currency and the ones with a rate. Put it in an InputGroup's start slot.
|
|
20
|
+
*/
|
|
21
|
+
export declare function MoneyCurrencyMenu({ money, className }: {
|
|
22
|
+
money: MoneyInputState;
|
|
23
|
+
className?: string;
|
|
24
|
+
}): import('react').JSX.Element | null;
|
|
25
|
+
/**
|
|
26
|
+
* The line under a converting field: getting the rate, the rate and what the
|
|
27
|
+
* typed amount comes to, or what the last amount was converted from.
|
|
28
|
+
*/
|
|
29
|
+
export declare function MoneyConversionHint({ money, className }: {
|
|
30
|
+
money: MoneyInputState;
|
|
31
|
+
className?: string;
|
|
32
|
+
}): import('react').JSX.Element | null;
|
|
11
33
|
/**
|
|
12
34
|
* MoneyInput's behaviour without its markup: spread `inputProps` onto any
|
|
13
35
|
* input (e.g. an InputGroupInput next to your own addons) and show `error`.
|
|
36
|
+
* With `convert`, `conversion` drives MoneyCurrencyMenu and MoneyConversionHint.
|
|
14
37
|
*/
|
|
15
|
-
export declare function useMoneyInput({ value, onChange, currency, locale, allowNegative, allowEmpty, live, onCancel, }: MoneyInputOptions): {
|
|
38
|
+
export declare function useMoneyInput({ value, onChange, currency, locale, allowNegative, allowEmpty, live, onCancel, convert, }: MoneyInputOptions): {
|
|
16
39
|
inputProps: {
|
|
17
40
|
readonly type: "text";
|
|
18
41
|
readonly inputMode: "decimal";
|
|
@@ -26,16 +49,59 @@ export declare function useMoneyInput({ value, onChange, currency, locale, allow
|
|
|
26
49
|
readonly onBlur: () => void;
|
|
27
50
|
readonly onKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;
|
|
28
51
|
};
|
|
29
|
-
/** The currency
|
|
52
|
+
/** The symbol of the currency being typed in, in this locale, e.g. "₹" or "$". */
|
|
30
53
|
symbol: string;
|
|
31
54
|
error: string | null;
|
|
32
55
|
errorId: string;
|
|
56
|
+
/** Id of MoneyConversionHint's line, which the input is described by. */
|
|
57
|
+
hintId: string;
|
|
33
58
|
text: string;
|
|
34
59
|
setText: import('react').Dispatch<import('react').SetStateAction<string>>;
|
|
35
60
|
commit: () => boolean;
|
|
36
61
|
/** The value formatted with its symbol, e.g. "₹1,52,000.00". */
|
|
37
62
|
formatted: string;
|
|
63
|
+
/** With `convert`: the currency switch and conversion state; null without. */
|
|
64
|
+
conversion: {
|
|
65
|
+
/** The field's own currency. */
|
|
66
|
+
home: string;
|
|
67
|
+
locale: string;
|
|
68
|
+
/** The currency being typed in. */
|
|
69
|
+
currency: string;
|
|
70
|
+
/** Whether that's another currency, converted into `home`. */
|
|
71
|
+
foreign: boolean;
|
|
72
|
+
/** Other currencies to offer: `convert.currencies`, less those the loaded rates lack. */
|
|
73
|
+
choices: string[];
|
|
74
|
+
pick: (cur: string) => void;
|
|
75
|
+
status: RatesStatus;
|
|
76
|
+
/** Units of `home` per 1 of `currency`, once loaded. */
|
|
77
|
+
rate: number | null;
|
|
78
|
+
/** Day of the rates, "YYYY-MM-DD", once loaded. */
|
|
79
|
+
date: string | null;
|
|
80
|
+
source: string | undefined;
|
|
81
|
+
/** What the typed amount comes to in `home`. */
|
|
82
|
+
preview: number | null;
|
|
83
|
+
/** What the shown amount was converted from, after a conversion. */
|
|
84
|
+
converted: ForeignAmount | null;
|
|
85
|
+
} | null;
|
|
38
86
|
};
|
|
87
|
+
export type MoneyInputState = ReturnType<typeof useMoneyInput>;
|
|
88
|
+
type RatesStatus = 'idle' | 'loading' | 'ready' | 'error';
|
|
89
|
+
/** Typing amounts in other currencies, converted into the field's own. */
|
|
90
|
+
export interface CurrencyConversion {
|
|
91
|
+
/** Currencies to offer besides the field's own, in order. Those the loaded rates lack are left out. */
|
|
92
|
+
currencies: readonly string[];
|
|
93
|
+
/**
|
|
94
|
+
* Gets the rates, the first time another currency is picked. Return them
|
|
95
|
+
* (from a cache) or a promise; null when unavailable. Cache as you see fit.
|
|
96
|
+
*/
|
|
97
|
+
loadRates: () => RateTable | null | Promise<RateTable | null>;
|
|
98
|
+
/** Named with the rate, e.g. "ECB". */
|
|
99
|
+
source?: string;
|
|
100
|
+
/** The original after a conversion, or null when the amount was typed in the field's currency. */
|
|
101
|
+
onForeign?: (original: ForeignAmount | null) => void;
|
|
102
|
+
/** Open showing a saved foreign amount (e.g. editing an entry that was converted). */
|
|
103
|
+
initial?: ForeignAmount | null;
|
|
104
|
+
}
|
|
39
105
|
export interface MoneyInputOptions {
|
|
40
106
|
/** Amount in minor units (paise, cents), or null when empty. */
|
|
41
107
|
value: Money | null;
|
|
@@ -47,15 +113,18 @@ export interface MoneyInputOptions {
|
|
|
47
113
|
allowNegative?: boolean;
|
|
48
114
|
allowEmpty?: boolean;
|
|
49
115
|
/**
|
|
50
|
-
* For forms: report the amount
|
|
51
|
-
* Save button can never miss it.
|
|
116
|
+
* For forms: report the amount (converted, when typed in another currency) on
|
|
117
|
+
* every keystroke instead of on blur, so a Save button can never miss it.
|
|
118
|
+
* Invalid text reports null.
|
|
52
119
|
*/
|
|
53
120
|
live?: boolean;
|
|
54
121
|
/** Called on Escape, after reverting. */
|
|
55
122
|
onCancel?: () => void;
|
|
123
|
+
/** Let people type in another currency, converted at the rates you load. */
|
|
124
|
+
convert?: CurrencyConversion;
|
|
56
125
|
}
|
|
57
126
|
export interface MoneyInputProps extends MoneyInputOptions {
|
|
58
|
-
/** Replaces the currency symbol, e.g. with
|
|
127
|
+
/** Replaces the currency symbol (or the currency switch), e.g. with your own. */
|
|
59
128
|
start?: ReactNode;
|
|
60
129
|
/** Content after the input, e.g. a unit or a clear button. */
|
|
61
130
|
end?: ReactNode;
|
|
@@ -67,4 +136,5 @@ export interface MoneyInputProps extends MoneyInputOptions {
|
|
|
67
136
|
className?: string;
|
|
68
137
|
'aria-label'?: string;
|
|
69
138
|
}
|
|
139
|
+
export {};
|
|
70
140
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/money-input/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/money-input/index.tsx"],"names":[],"mappings":"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"}
|