@rinzai/zen 0.11.0 → 0.14.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 +37 -7
- package/dist/accordion/index.d.ts +41 -0
- package/dist/accordion/index.d.ts.map +1 -0
- package/dist/accordion/index.js +81 -0
- package/dist/animated-number/index.d.ts +3 -2
- package/dist/animated-number/index.d.ts.map +1 -1
- package/dist/animated-number/index.js +40 -38
- package/dist/avatar/index.d.ts +7 -2
- package/dist/avatar/index.d.ts.map +1 -1
- package/dist/avatar/index.js +17 -11
- package/dist/backdrop/index.d.ts +4 -4
- package/dist/backdrop/index.d.ts.map +1 -1
- package/dist/backdrop/index.js +41 -39
- package/dist/badge/index.d.ts +4 -2
- package/dist/badge/index.d.ts.map +1 -1
- package/dist/badge/index.js +20 -11
- package/dist/base.css +4 -0
- package/dist/breadcrumbs/index.d.ts +1 -1
- package/dist/breadcrumbs/index.d.ts.map +1 -1
- package/dist/breadcrumbs/index.js +25 -24
- package/dist/button/index.d.ts +3 -3
- package/dist/button/index.d.ts.map +1 -1
- package/dist/button/index.js +16 -11
- package/dist/button-group/index.d.ts +13 -0
- package/dist/button-group/index.d.ts.map +1 -0
- package/dist/button-group/index.js +14 -0
- package/dist/calendar/index.d.ts +15 -8
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +97 -91
- package/dist/calendar-heatmap/index.d.ts +7 -5
- package/dist/calendar-heatmap/index.d.ts.map +1 -1
- package/dist/calendar-heatmap/index.js +32 -30
- package/dist/canvas/geometry.js +0 -1
- package/dist/canvas/index.d.ts +6 -6
- package/dist/canvas/index.d.ts.map +1 -1
- package/dist/canvas/index.js +135 -133
- package/dist/carousel/index.d.ts +27 -0
- package/dist/carousel/index.d.ts.map +1 -0
- package/dist/carousel/index.js +162 -0
- package/dist/chart/index.d.ts +5 -4
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.js +137 -135
- package/dist/chart/palette.js +0 -1
- package/dist/checkbox/index.d.ts +3 -3
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +33 -30
- package/dist/chip/index.js +1 -1
- package/dist/code-block/index.d.ts.map +1 -1
- package/dist/code-block/index.js +27 -25
- package/dist/code-input/index.d.ts.map +1 -1
- package/dist/code-input/index.js +30 -24
- package/dist/collapse/index.d.ts +4 -3
- package/dist/collapse/index.d.ts.map +1 -1
- package/dist/collapse/index.js +42 -39
- package/dist/color-picker/index.d.ts +14 -7
- package/dist/color-picker/index.d.ts.map +1 -1
- package/dist/color-picker/index.js +139 -128
- package/dist/combobox/index.d.ts +14 -6
- package/dist/combobox/index.d.ts.map +1 -1
- package/dist/combobox/index.js +158 -146
- package/dist/command-palette/index.d.ts +4 -3
- package/dist/command-palette/index.d.ts.map +1 -1
- package/dist/command-palette/index.js +60 -57
- package/dist/confirm-dialog/index.d.ts +6 -7
- package/dist/confirm-dialog/index.d.ts.map +1 -1
- package/dist/confirm-dialog/index.js +20 -16
- package/dist/date-picker/index.d.ts +23 -14
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +109 -93
- package/dist/dialog/index.d.ts +3 -4
- package/dist/dialog/index.d.ts.map +1 -1
- package/dist/dialog/index.js +58 -55
- package/dist/disclosure/index.d.ts +8 -0
- package/dist/disclosure/index.d.ts.map +1 -1
- package/dist/disclosure/index.js +31 -32
- package/dist/editable-cell/index.d.ts +4 -5
- package/dist/editable-cell/index.d.ts.map +1 -1
- package/dist/editable-cell/index.js +23 -22
- package/dist/field/index.d.ts +8 -8
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +20 -18
- package/dist/filter-bar/index.d.ts +2 -2
- package/dist/filter-bar/index.d.ts.map +1 -1
- package/dist/filter-bar/index.js +38 -36
- package/dist/header/index.d.ts +1 -1
- package/dist/header/index.d.ts.map +1 -1
- package/dist/header/index.js +13 -11
- package/dist/hover-card/index.d.ts +32 -0
- package/dist/hover-card/index.d.ts.map +1 -0
- package/dist/hover-card/index.js +84 -0
- package/dist/icon-picker/index.d.ts +16 -5
- package/dist/icon-picker/index.d.ts.map +1 -1
- package/dist/icon-picker/index.js +42 -47
- package/dist/icons/micro/plus.d.ts +3 -0
- package/dist/icons/micro/plus.d.ts.map +1 -0
- package/dist/icons/micro/plus.js +17 -0
- package/dist/index.d.ts +37 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/input/index.d.ts +5 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +9 -9
- package/dist/input-group/index.d.ts +4 -1
- package/dist/input-group/index.d.ts.map +1 -1
- package/dist/input-group/index.js +14 -14
- package/dist/keypad/index.d.ts +9 -7
- package/dist/keypad/index.d.ts.map +1 -1
- package/dist/keypad/index.js +22 -19
- package/dist/lib.js +112 -97
- package/dist/load-more/index.d.ts +4 -2
- package/dist/load-more/index.d.ts.map +1 -1
- package/dist/load-more/index.js +26 -23
- package/dist/locale-provider/index.d.ts +23 -0
- package/dist/locale-provider/index.d.ts.map +1 -0
- package/dist/locale-provider/index.js +35 -0
- package/dist/menu/index.d.ts +62 -9
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +371 -128
- package/dist/meter/index.d.ts +2 -2
- package/dist/meter/index.d.ts.map +1 -1
- package/dist/meter/index.js +4 -4
- package/dist/money-input/index.d.ts +20 -10
- package/dist/money-input/index.d.ts.map +1 -1
- package/dist/money-input/index.js +199 -190
- package/dist/month-picker/index.d.ts +17 -10
- package/dist/month-picker/index.d.ts.map +1 -1
- package/dist/month-picker/index.js +97 -86
- package/dist/navigation-menu/index.d.ts +42 -0
- package/dist/navigation-menu/index.d.ts.map +1 -0
- package/dist/navigation-menu/index.js +144 -0
- package/dist/number-field/index.d.ts +50 -0
- package/dist/number-field/index.d.ts.map +1 -0
- package/dist/number-field/index.js +133 -0
- package/dist/page-header/index.d.ts +4 -3
- package/dist/page-header/index.d.ts.map +1 -1
- package/dist/page-header/index.js +2 -1
- package/dist/pagination/index.d.ts +1 -1
- package/dist/pagination/index.d.ts.map +1 -1
- package/dist/pagination/index.js +35 -33
- package/dist/progress-ring/index.d.ts +4 -3
- package/dist/progress-ring/index.d.ts.map +1 -1
- package/dist/progress-ring/index.js +11 -10
- package/dist/radio-cards/index.d.ts +9 -5
- package/dist/radio-cards/index.d.ts.map +1 -1
- package/dist/radio-cards/index.js +26 -24
- package/dist/radio-group/index.d.ts +9 -8
- package/dist/radio-group/index.d.ts.map +1 -1
- package/dist/radio-group/index.js +35 -34
- package/dist/range-slider/index.d.ts +10 -4
- package/dist/range-slider/index.d.ts.map +1 -1
- package/dist/range-slider/index.js +43 -31
- package/dist/repeat-picker/index.d.ts +13 -6
- package/dist/repeat-picker/index.d.ts.map +1 -1
- package/dist/repeat-picker/index.js +73 -61
- package/dist/resizable/index.d.ts +29 -0
- package/dist/resizable/index.d.ts.map +1 -0
- package/dist/resizable/index.js +135 -0
- package/dist/segmented/index.d.ts +8 -5
- package/dist/segmented/index.d.ts.map +1 -1
- package/dist/segmented/index.js +36 -34
- package/dist/select/index.d.ts +9 -3
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +99 -96
- package/dist/separator/index.d.ts +14 -0
- package/dist/separator/index.d.ts.map +1 -0
- package/dist/separator/index.js +15 -0
- package/dist/side-nav/index.js +1 -1
- package/dist/skeleton/index.d.ts +4 -4
- package/dist/skeleton/index.d.ts.map +1 -1
- package/dist/skeleton/index.js +4 -3
- package/dist/slider/index.d.ts +6 -3
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/slider/index.js +29 -23
- package/dist/sortable/index.d.ts +10 -20
- package/dist/sortable/index.d.ts.map +1 -1
- package/dist/sortable/index.js +72 -134
- package/dist/sortable/shared.d.ts +56 -0
- package/dist/sortable/shared.d.ts.map +1 -0
- package/dist/sortable/shared.js +104 -0
- package/dist/sortable/tree-model.d.ts +46 -0
- package/dist/sortable/tree-model.d.ts.map +1 -0
- package/dist/sortable/tree-model.js +87 -0
- package/dist/sortable/tree.d.ts +31 -0
- package/dist/sortable/tree.d.ts.map +1 -0
- package/dist/sortable/tree.js +150 -0
- package/dist/sparkline/index.d.ts +1 -1
- package/dist/sparkline/index.d.ts.map +1 -1
- package/dist/sparkline/index.js +26 -25
- package/dist/spinner/index.d.ts +4 -3
- package/dist/spinner/index.d.ts.map +1 -1
- package/dist/spinner/index.js +2 -1
- package/dist/status-pill/index.d.ts.map +1 -1
- package/dist/status-pill/index.js +1 -1
- package/dist/stepper/index.d.ts +1 -1
- package/dist/stepper/index.d.ts.map +1 -1
- package/dist/stepper/index.js +31 -30
- package/dist/tab-bar/index.js +1 -1
- package/dist/table/index.d.ts +5 -5
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +66 -64
- package/dist/table/selection.d.ts +2 -2
- package/dist/table/selection.d.ts.map +1 -1
- package/dist/table/selection.js +41 -38
- package/dist/table/swipe.d.ts +1 -1
- package/dist/table/swipe.d.ts.map +1 -1
- package/dist/table/swipe.js +1 -1
- package/dist/table-of-contents/index.d.ts +4 -2
- package/dist/table-of-contents/index.d.ts.map +1 -1
- package/dist/table-of-contents/index.js +27 -25
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +90 -88
- package/dist/tag-input/index.d.ts +3 -1
- package/dist/tag-input/index.d.ts.map +1 -1
- package/dist/tag-input/index.js +61 -52
- package/dist/theme-toggle/index.d.ts +9 -8
- package/dist/theme-toggle/index.d.ts.map +1 -1
- package/dist/theme-toggle/index.js +30 -28
- package/dist/theme.css +90 -12
- package/dist/time-field/index.d.ts +31 -0
- package/dist/time-field/index.d.ts.map +1 -0
- package/dist/time-field/index.js +175 -0
- package/dist/timeline/index.js +1 -1
- package/dist/toast/index.d.ts +1 -1
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +127 -125
- package/dist/toggle/index.d.ts +2 -2
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +8 -6
- package/dist/toggle-group/index.d.ts +35 -0
- package/dist/toggle-group/index.d.ts.map +1 -0
- package/dist/toggle-group/index.js +53 -0
- package/dist/toolbar/index.d.ts +19 -0
- package/dist/toolbar/index.d.ts.map +1 -0
- package/dist/toolbar/index.js +36 -0
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +40 -74
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +105 -102
- package/dist/trend/index.d.ts +2 -2
- package/dist/trend/index.d.ts.map +1 -1
- package/dist/trend/index.js +20 -19
- package/dist/utils/color.js +0 -1
- package/dist/utils/cva.js +0 -1
- package/dist/utils/cx.js +0 -1
- package/dist/utils/date.d.ts +6 -0
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +1 -2
- package/dist/utils/direction.d.ts +7 -0
- package/dist/utils/direction.d.ts.map +1 -0
- package/dist/utils/direction.js +6 -0
- package/dist/utils/form-value.d.ts +15 -0
- package/dist/utils/form-value.d.ts.map +1 -0
- package/dist/utils/form-value.js +29 -0
- package/dist/utils/fx.js +0 -1
- package/dist/utils/merge.js +0 -1
- package/dist/utils/messages.d.ts +137 -0
- package/dist/utils/messages.d.ts.map +1 -0
- package/dist/utils/messages.js +133 -0
- package/dist/utils/money.js +0 -1
- package/dist/utils/month.js +0 -1
- package/dist/utils/motion.js +0 -1
- package/dist/utils/refs.d.ts +6 -0
- package/dist/utils/refs.d.ts.map +1 -0
- package/dist/utils/refs.js +13 -0
- package/dist/utils/repeat.d.ts +3 -1
- package/dist/utils/repeat.d.ts.map +1 -1
- package/dist/utils/repeat.js +28 -25
- package/dist/utils/roving.d.ts +17 -0
- package/dist/utils/roving.d.ts.map +1 -0
- package/dist/utils/roving.js +35 -0
- package/dist/utils/section-link.js +0 -1
- package/dist/utils/slot.d.ts.map +1 -1
- package/dist/utils/slot.js +7 -11
- package/dist/utils/status-icons.js +7 -7
- package/dist/utils/styles.d.ts +9 -2
- package/dist/utils/styles.d.ts.map +1 -1
- package/dist/utils/styles.js +6 -3
- package/dist/utils/theme-wave.js +0 -1
- package/dist/utils/theme.js +0 -1
- package/dist/utils/useAnchoredPopup.d.ts +7 -4
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +18 -11
- package/dist/utils/useControllable.d.ts +9 -0
- package/dist/utils/useControllable.d.ts.map +1 -0
- package/dist/utils/useControllable.js +15 -0
- package/dist/utils/useHoverPopup.d.ts +39 -0
- package/dist/utils/useHoverPopup.d.ts.map +1 -0
- package/dist/utils/useHoverPopup.js +64 -0
- package/dist/zen.css +1 -1
- package/package.json +1 -1
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
import { DateString } from '../utils/date';
|
|
2
2
|
import { Repeat } from '../utils/repeat';
|
|
3
|
+
import { ComponentProps } from 'react';
|
|
3
4
|
/**
|
|
4
5
|
* How often something recurs, e.g. a bill: every n days, weeks, months or
|
|
5
6
|
* years, on chosen weekdays or a day of the month. Says what it means in
|
|
6
7
|
* words, and with a `start` date, the next few dates it falls on.
|
|
7
8
|
*/
|
|
8
|
-
export default function RepeatPicker({ value,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
export default function RepeatPicker({ value: valueProp, defaultValue, onValueChange, locale: localeProp, start, weekStartsOn: weekStartsOnProp, label: labelProp, name, className, ...rest }: RepeatPickerProps): import('react').JSX.Element;
|
|
10
|
+
/** Other props (aria-*, data-*, an id) go on the fieldset. */
|
|
11
|
+
export interface RepeatPickerProps extends Omit<ComponentProps<'fieldset'>, 'defaultValue' | 'children'> {
|
|
12
|
+
/** The rule, when you keep it. */
|
|
13
|
+
value?: Repeat;
|
|
14
|
+
/** The first rule, when the picker keeps its own. Every month by default. */
|
|
15
|
+
defaultValue?: Repeat;
|
|
16
|
+
onValueChange?: (value: Repeat) => void;
|
|
17
|
+
/** Form field name: the rule is submitted as JSON. */
|
|
18
|
+
name?: string;
|
|
19
|
+
/** For weekday and date names, and the week's first day. Defaults to the LocaleProvider's. */
|
|
20
|
+
locale?: string;
|
|
14
21
|
/** When it starts: its weekday and day of the month are the defaults, and the next dates are shown. */
|
|
15
22
|
start?: DateString;
|
|
16
23
|
/** 0 for Sunday … 6. Defaults to the locale's. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/repeat-picker/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/repeat-picker/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAkD,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAmC,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAY,MAAM,OAAO,CAAC;AAIjD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACjC,KAAK,EAAE,SAAS,EAChB,YAA0C,EAC1C,aAAa,EACb,MAAM,EAAE,UAAU,EAClB,KAAK,EACL,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,SAAS,EAChB,IAAI,EACJ,SAAS,EACT,GAAG,IAAI,EACV,EAAE,iBAAiB,+BAkGnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IACpG,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uGAAuG;IACvG,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1,115 +1,127 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cx as e } from "../utils/cx.js";
|
|
3
|
-
import t from "../
|
|
4
|
-
import n from "../
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
3
|
+
import { useControllable as t } from "../utils/useControllable.js";
|
|
4
|
+
import { useLocale as n, useMessages as r } from "../locale-provider/index.js";
|
|
5
|
+
import i from "../input/index.js";
|
|
6
|
+
import { FormValue as a } from "../utils/form-value.js";
|
|
7
|
+
import o from "../chip/index.js";
|
|
8
|
+
import { dayOfWeek as s, formatDate as c, weekStart as l, weekdayNames as u } from "../utils/date.js";
|
|
9
|
+
import d, { SelectItem as f } from "../select/index.js";
|
|
10
|
+
import { describeRepeat as p, nextOccurrences as m } from "../utils/repeat.js";
|
|
11
|
+
import { useState as h } from "react";
|
|
12
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
10
13
|
//#region packages/repeat-picker/index.tsx
|
|
11
|
-
var
|
|
14
|
+
var y = [
|
|
12
15
|
"day",
|
|
13
16
|
"week",
|
|
14
17
|
"month",
|
|
15
18
|
"year"
|
|
16
19
|
];
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
function b({ value: b, defaultValue: x = {
|
|
21
|
+
every: 1,
|
|
22
|
+
unit: "month"
|
|
23
|
+
}, onValueChange: S, locale: C, start: w, weekStartsOn: T, label: E, name: D, className: O, ...k }) {
|
|
24
|
+
let A = r(), j = E ?? A.repeats, M = n(C), N = T ?? l(M), [P, F, I] = t(b, x, S), [L, R] = h(String(P.every));
|
|
25
|
+
Number(L) !== P.every && L !== "" && R(String(P.every));
|
|
26
|
+
let z = u(M), B = Array.from({ length: 7 }, (e, t) => (N + t) % 7), V = P.weekdays ?? (w ? [s(w)] : []), H = P.every !== 1, U = (e) => {
|
|
27
|
+
let t = {
|
|
28
|
+
every: P.every,
|
|
29
|
+
unit: e
|
|
30
|
+
};
|
|
31
|
+
e === "week" && w && (t.weekdays = [s(w)]), e === "month" && (t.day = w ? Number(w.slice(8)) : 1), F(t);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ v("fieldset", {
|
|
34
|
+
className: e("zen__repeat-picker flex flex-col gap-3", O),
|
|
35
|
+
...k,
|
|
23
36
|
children: [
|
|
24
|
-
/* @__PURE__ */
|
|
37
|
+
/* @__PURE__ */ _(a, {
|
|
38
|
+
name: D,
|
|
39
|
+
value: JSON.stringify(P),
|
|
40
|
+
onReset: I
|
|
41
|
+
}),
|
|
42
|
+
/* @__PURE__ */ _("legend", {
|
|
25
43
|
className: "sr-only",
|
|
26
|
-
children:
|
|
44
|
+
children: j
|
|
27
45
|
}),
|
|
28
|
-
/* @__PURE__ */
|
|
46
|
+
/* @__PURE__ */ v("div", {
|
|
29
47
|
className: "flex items-center gap-2 text-sm",
|
|
30
48
|
children: [
|
|
31
|
-
/* @__PURE__ */
|
|
49
|
+
/* @__PURE__ */ _("span", {
|
|
32
50
|
className: "text-muted-foreground",
|
|
33
|
-
children:
|
|
51
|
+
children: A.every
|
|
34
52
|
}),
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
"aria-label":
|
|
53
|
+
/* @__PURE__ */ _(i, {
|
|
54
|
+
"aria-label": A.howMany,
|
|
37
55
|
inputMode: "numeric",
|
|
38
|
-
value:
|
|
56
|
+
value: L,
|
|
39
57
|
onChange: (e) => {
|
|
40
58
|
let t = e.target.value.replace(/\D/g, "").slice(0, 3);
|
|
41
|
-
|
|
42
|
-
...
|
|
59
|
+
R(t), Number(t) >= 1 && F({
|
|
60
|
+
...P,
|
|
43
61
|
every: Number(t)
|
|
44
62
|
});
|
|
45
63
|
},
|
|
46
|
-
onBlur: () =>
|
|
64
|
+
onBlur: () => R(String(P.every)),
|
|
47
65
|
className: "w-16 text-center tabular-nums"
|
|
48
66
|
}),
|
|
49
|
-
/* @__PURE__ */
|
|
50
|
-
"aria-label":
|
|
51
|
-
value:
|
|
52
|
-
|
|
53
|
-
let t = {
|
|
54
|
-
every: g.every,
|
|
55
|
-
unit: e
|
|
56
|
-
};
|
|
57
|
-
e === "week" && y && (t.weekdays = [r(y)]), e === "month" && (t.day = y ? Number(y.slice(8)) : 1), _(t);
|
|
58
|
-
},
|
|
67
|
+
/* @__PURE__ */ _(d, {
|
|
68
|
+
"aria-label": A.unit,
|
|
69
|
+
value: P.unit,
|
|
70
|
+
onValueChange: U,
|
|
59
71
|
className: "w-32",
|
|
60
|
-
children:
|
|
72
|
+
children: y.map((e) => /* @__PURE__ */ _(f, {
|
|
61
73
|
value: e,
|
|
62
|
-
children:
|
|
74
|
+
children: A.repeatUnit(e, H ? 2 : 1)
|
|
63
75
|
}, e))
|
|
64
76
|
})
|
|
65
77
|
]
|
|
66
78
|
}),
|
|
67
|
-
|
|
79
|
+
P.unit === "week" && /* @__PURE__ */ _("div", {
|
|
68
80
|
role: "group",
|
|
69
|
-
"aria-label":
|
|
81
|
+
"aria-label": A.on,
|
|
70
82
|
className: "flex flex-wrap gap-1.5",
|
|
71
|
-
children:
|
|
72
|
-
let t =
|
|
73
|
-
return /* @__PURE__ */
|
|
83
|
+
children: B.map((e) => {
|
|
84
|
+
let t = V.includes(e);
|
|
85
|
+
return /* @__PURE__ */ _(o, {
|
|
74
86
|
pressed: t,
|
|
75
87
|
onClick: () => {
|
|
76
|
-
t &&
|
|
77
|
-
...
|
|
78
|
-
weekdays: t ?
|
|
88
|
+
t && V.length === 1 || F({
|
|
89
|
+
...P,
|
|
90
|
+
weekdays: t ? V.filter((t) => t !== e) : [...V, e]
|
|
79
91
|
});
|
|
80
92
|
},
|
|
81
|
-
children:
|
|
93
|
+
children: z[e]
|
|
82
94
|
}, e);
|
|
83
95
|
})
|
|
84
96
|
}),
|
|
85
|
-
|
|
86
|
-
"aria-label":
|
|
87
|
-
value: String(
|
|
88
|
-
|
|
89
|
-
...
|
|
97
|
+
P.unit === "month" && /* @__PURE__ */ v(d, {
|
|
98
|
+
"aria-label": A.on,
|
|
99
|
+
value: String(P.day ?? (w ? Number(w.slice(8)) : 1)),
|
|
100
|
+
onValueChange: (e) => F({
|
|
101
|
+
...P,
|
|
90
102
|
day: Number(e)
|
|
91
103
|
}),
|
|
92
104
|
className: "w-40",
|
|
93
|
-
children: [Array.from({ length: 31 }, (e, t) => /* @__PURE__ */
|
|
105
|
+
children: [Array.from({ length: 31 }, (e, t) => /* @__PURE__ */ _(f, {
|
|
94
106
|
value: String(t + 1),
|
|
95
|
-
children:
|
|
96
|
-
}, t + 1)), /* @__PURE__ */
|
|
107
|
+
children: A.day(t + 1)
|
|
108
|
+
}, t + 1)), /* @__PURE__ */ _(f, {
|
|
97
109
|
value: "-1",
|
|
98
|
-
children:
|
|
110
|
+
children: A.lastDay
|
|
99
111
|
})]
|
|
100
112
|
}),
|
|
101
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ v("p", {
|
|
102
114
|
"aria-live": "polite",
|
|
103
115
|
className: "text-muted-foreground text-sm",
|
|
104
|
-
children: [
|
|
105
|
-
/* @__PURE__ */
|
|
106
|
-
|
|
116
|
+
children: [p(P, M, w, A), w && /* @__PURE__ */ v(g, { children: [
|
|
117
|
+
/* @__PURE__ */ _("br", {}),
|
|
118
|
+
A.next,
|
|
107
119
|
" ",
|
|
108
|
-
|
|
120
|
+
m(P, w, 3).map((e) => c(e, M)).join(", ")
|
|
109
121
|
] })]
|
|
110
122
|
})
|
|
111
123
|
]
|
|
112
124
|
});
|
|
113
125
|
}
|
|
114
126
|
//#endregion
|
|
115
|
-
export {
|
|
127
|
+
export { b as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ComponentProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Panels side by side (or stacked, `orientation="vertical"`) with handles
|
|
4
|
+
* between them to drag, or to focus and move with the arrow keys. Sizes are
|
|
5
|
+
* percentages of the group; `onLayout` reports them all after each change,
|
|
6
|
+
* e.g. to keep for next time as the panels' `defaultSize`. Groups nest.
|
|
7
|
+
*/
|
|
8
|
+
export default function ResizablePanelGroup({ orientation, onLayout, ref, className, ...rest }: ResizablePanelGroupProps): import('react').JSX.Element;
|
|
9
|
+
/** One panel: `defaultSize` is a percentage of the group (those without one share what's left); `minSize` and `maxSize` bound it. */
|
|
10
|
+
export declare function ResizablePanel({ defaultSize, minSize, maxSize, id: idProp, className, style, ...rest }: ResizablePanelProps): import('react').JSX.Element;
|
|
11
|
+
/**
|
|
12
|
+
* The boundary between two panels: a hairline that lights up while it's
|
|
13
|
+
* dragged, hovered or focused, with a wider grip than it looks. Arrow keys move
|
|
14
|
+
* it, Home and End take the panel before it to its smallest and largest.
|
|
15
|
+
*/
|
|
16
|
+
export declare function ResizableHandle({ ref: refProp, className, onPointerDown, onKeyDown, ...rest }: ComponentProps<'div'>): import('react').JSX.Element;
|
|
17
|
+
export interface ResizablePanelGroupProps extends ComponentProps<'div'> {
|
|
18
|
+
/** Side by side (default), or stacked. */
|
|
19
|
+
orientation?: 'horizontal' | 'vertical';
|
|
20
|
+
/** Every panel's size, in percent and in order, after each change. */
|
|
21
|
+
onLayout?: (sizes: number[]) => void;
|
|
22
|
+
}
|
|
23
|
+
export interface ResizablePanelProps extends ComponentProps<'div'> {
|
|
24
|
+
/** Its share of the group, in percent. */
|
|
25
|
+
defaultSize?: number;
|
|
26
|
+
minSize?: number;
|
|
27
|
+
maxSize?: number;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/resizable/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EACH,cAAc,EAUjB,MAAM,OAAO,CAAC;AA+Bf;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EACxC,WAA0B,EAC1B,QAAQ,EACR,GAAG,EACH,SAAS,EACT,GAAG,IAAI,EACV,EAAE,wBAAwB,+BAyE1B;AAED,qIAAqI;AACrI,wBAAgB,cAAc,CAAC,EAC3B,WAAW,EACX,OAAW,EACX,OAAa,EACb,EAAE,EAAE,MAAM,EACV,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACV,EAAE,mBAAmB,+BAiBrB;AAKD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,+BA0GpH;AAED,MAAM,WAAW,wBAAyB,SAAQ,cAAc,CAAC,KAAK,CAAC;IACnE,0CAA0C;IAC1C,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,KAAK,CAAC;IAC9D,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { readingKey as t } from "../utils/direction.js";
|
|
4
|
+
import { useMergedRefs as n } from "../utils/refs.js";
|
|
5
|
+
import { useMessages as r } from "../locale-provider/index.js";
|
|
6
|
+
import { createContext as i, useContext as a, useEffect as o, useId as s, useLayoutEffect as c, useRef as l, useState as u } from "react";
|
|
7
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
8
|
+
//#region packages/resizable/index.tsx
|
|
9
|
+
var f = typeof window > "u" ? o : c, p = i(null);
|
|
10
|
+
function m(e) {
|
|
11
|
+
let t = a(p);
|
|
12
|
+
if (!t) throw Error(`<${e}> must be inside <ResizablePanelGroup>`);
|
|
13
|
+
return t;
|
|
14
|
+
}
|
|
15
|
+
var h = "[data-zen-panel]", g = (e, t, n) => Math.min(n, Math.max(t, e));
|
|
16
|
+
function _({ orientation: t = "horizontal", onLayout: r, ref: i, className: a, ...o }) {
|
|
17
|
+
let s = l(null), c = n(s, i), [m, _] = u({}), [v, y] = u({}), b = l(v), x = (e) => {
|
|
18
|
+
b.current = e, y(e);
|
|
19
|
+
}, [S, C] = u(!1), w = () => Array.from(s.current?.querySelectorAll(`:scope > ${h}`) ?? [], (e) => e.dataset.zenPanel);
|
|
20
|
+
f(() => {
|
|
21
|
+
let e = w();
|
|
22
|
+
if (e.some((e) => !m[e])) return;
|
|
23
|
+
let t = (e) => b.current[e] ?? m[e]?.defaultSize, n = e.filter((e) => t(e) === void 0), r = e.reduce((e, n) => e + (t(n) ?? 0), 0), i = n.length ? Math.max(0, 100 - r) / n.length : 0, a = Object.fromEntries(e.map((e) => [e, t(e) ?? i])), o = e.reduce((e, t) => e + a[t], 0) || 1;
|
|
24
|
+
for (let t of e) a[t] = a[t] * 100 / o;
|
|
25
|
+
x(a);
|
|
26
|
+
}, [m]);
|
|
27
|
+
let T = {
|
|
28
|
+
orientation: t,
|
|
29
|
+
sizes: v,
|
|
30
|
+
specs: m,
|
|
31
|
+
register: (e, t) => (_((n) => ({
|
|
32
|
+
...n,
|
|
33
|
+
[e]: t
|
|
34
|
+
})), () => _((t) => {
|
|
35
|
+
let { [e]: n, ...r } = t;
|
|
36
|
+
return r;
|
|
37
|
+
})),
|
|
38
|
+
resize: (e, t, n) => {
|
|
39
|
+
let i = m[e], a = m[t];
|
|
40
|
+
if (!i || !a) return;
|
|
41
|
+
let o = b.current, s = o[e] + o[t], c = g(n, Math.max(i.minSize, s - a.maxSize), Math.min(i.maxSize, s - a.minSize));
|
|
42
|
+
if (c === o[e]) return;
|
|
43
|
+
let l = {
|
|
44
|
+
...o,
|
|
45
|
+
[e]: c,
|
|
46
|
+
[t]: s - c
|
|
47
|
+
};
|
|
48
|
+
x(l), r?.(w().map((e) => l[e]));
|
|
49
|
+
},
|
|
50
|
+
setDragging: C
|
|
51
|
+
};
|
|
52
|
+
return /* @__PURE__ */ d(p.Provider, {
|
|
53
|
+
value: T,
|
|
54
|
+
children: /* @__PURE__ */ d("div", {
|
|
55
|
+
...o,
|
|
56
|
+
ref: c,
|
|
57
|
+
"data-orientation": t,
|
|
58
|
+
"data-dragging": S || void 0,
|
|
59
|
+
className: e("zen__resizable flex size-full", t === "vertical" && "flex-col", S && "select-none", a)
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function v({ defaultSize: t, minSize: n = 0, maxSize: r = 100, id: i, className: a, style: o, ...c }) {
|
|
64
|
+
let l = m("ResizablePanel"), u = s(), p = i ?? u, { register: h } = l;
|
|
65
|
+
f(() => h(p, {
|
|
66
|
+
defaultSize: t,
|
|
67
|
+
minSize: n,
|
|
68
|
+
maxSize: r
|
|
69
|
+
}), [
|
|
70
|
+
p,
|
|
71
|
+
t,
|
|
72
|
+
n,
|
|
73
|
+
r
|
|
74
|
+
]);
|
|
75
|
+
let g = l.sizes[p] ?? t ?? 1;
|
|
76
|
+
return /* @__PURE__ */ d("div", {
|
|
77
|
+
...c,
|
|
78
|
+
id: p,
|
|
79
|
+
"data-zen-panel": p,
|
|
80
|
+
style: {
|
|
81
|
+
flex: `${g} 1 0px`,
|
|
82
|
+
...o
|
|
83
|
+
},
|
|
84
|
+
className: e("min-h-0 min-w-0 overflow-hidden", a)
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
var y = 5;
|
|
88
|
+
function b({ ref: i, className: a, onPointerDown: o, onKeyDown: s, ...c }) {
|
|
89
|
+
let p = r(), g = m("ResizableHandle"), _ = l(null), v = n(_, i), [b, x] = u(null), [S, C] = u(!1), w = g.orientation === "horizontal";
|
|
90
|
+
f(() => {
|
|
91
|
+
let e = _.current, t = e?.previousElementSibling?.closest(h)?.dataset.zenPanel, n = e?.nextElementSibling?.closest(h)?.dataset.zenPanel;
|
|
92
|
+
x((e) => !t || !n ? null : e?.[0] === t && e[1] === n ? e : [t, n]);
|
|
93
|
+
});
|
|
94
|
+
let [T, E] = b ?? [], D = T ? g.sizes[T] : void 0, O = T ? g.specs[T] : void 0, k = (e) => {
|
|
95
|
+
if (o?.(e), e.defaultPrevented || e.button !== 0 || !T || !E || D === void 0) return;
|
|
96
|
+
e.preventDefault();
|
|
97
|
+
let t = e.currentTarget, [n, r] = [t.previousElementSibling, t.nextElementSibling], i = (D + g.sizes[E]) / ((w ? n.offsetWidth + r.offsetWidth : n.offsetHeight + r.offsetHeight) || 1), a = w && getComputedStyle(t).direction === "rtl" ? -1 : 1, s = w ? e.clientX : e.clientY;
|
|
98
|
+
t.setPointerCapture(e.pointerId), t.focus({ preventScroll: !0 }), C(!0), g.setDragging(!0);
|
|
99
|
+
let c = (e) => g.resize(T, E, D + ((w ? e.clientX : e.clientY) - s) * i * a), l = () => {
|
|
100
|
+
C(!1), g.setDragging(!1), t.removeEventListener("pointermove", c), t.removeEventListener("pointerup", l), t.removeEventListener("pointercancel", l);
|
|
101
|
+
};
|
|
102
|
+
t.addEventListener("pointermove", c), t.addEventListener("pointerup", l), t.addEventListener("pointercancel", l);
|
|
103
|
+
}, A = (e) => {
|
|
104
|
+
if (s?.(e), e.defaultPrevented || !T || !E || D === void 0 || !O) return;
|
|
105
|
+
let n = w ? t(e.key, e.currentTarget) : e.key, r = {
|
|
106
|
+
[w ? "ArrowLeft" : "ArrowUp"]: D - y,
|
|
107
|
+
[w ? "ArrowRight" : "ArrowDown"]: D + y,
|
|
108
|
+
Home: O.minSize,
|
|
109
|
+
End: O.maxSize
|
|
110
|
+
}[n];
|
|
111
|
+
r !== void 0 && (e.preventDefault(), g.resize(T, E, r));
|
|
112
|
+
};
|
|
113
|
+
return /* @__PURE__ */ d("div", {
|
|
114
|
+
role: "separator",
|
|
115
|
+
"aria-label": p.resize,
|
|
116
|
+
tabIndex: 0,
|
|
117
|
+
...c,
|
|
118
|
+
ref: v,
|
|
119
|
+
"aria-orientation": w ? "vertical" : "horizontal",
|
|
120
|
+
"aria-controls": T,
|
|
121
|
+
"aria-valuenow": D === void 0 ? void 0 : Math.round(D),
|
|
122
|
+
"aria-valuemin": O?.minSize,
|
|
123
|
+
"aria-valuemax": O?.maxSize,
|
|
124
|
+
"data-active": S || void 0,
|
|
125
|
+
onPointerDown: k,
|
|
126
|
+
onKeyDown: A,
|
|
127
|
+
className: e("group/handle relative z-10 flex shrink-0 touch-none items-center justify-center outline-hidden", w ? "w-px cursor-col-resize before:absolute before:inset-y-0 before:-inset-x-2" : "h-px cursor-row-resize before:absolute before:inset-x-0 before:-inset-y-2", a),
|
|
128
|
+
children: /* @__PURE__ */ d("span", {
|
|
129
|
+
"aria-hidden": !0,
|
|
130
|
+
className: e("bg-tint/[0.09] pointer-events-none absolute transition-[background-color,box-shadow,width,height] duration-200", w ? "inset-y-0 w-px" : "inset-x-0 h-px", "group-hover/handle:bg-primary/60 group-focus-visible/handle:bg-primary group-data-active/handle:bg-primary", "group-focus-visible/handle:shadow-[0_0_12px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] group-data-active/handle:shadow-[0_0_12px_oklch(var(--glow)/calc(0.8*var(--glow-k)))]", w ? "group-focus-visible/handle:w-0.5 group-data-active/handle:w-0.5" : "group-focus-visible/handle:h-0.5 group-data-active/handle:h-0.5")
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
//#endregion
|
|
135
|
+
export { b as ResizableHandle, v as ResizablePanel, _ as default };
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
1
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* A small set of mutually exclusive options, shown as a pill row. Native radio
|
|
4
4
|
* inputs underneath, so arrow keys and forms work as for any radio group. The
|
|
5
5
|
* selection slides between options, like Pills. Fill it with
|
|
6
6
|
* SegmentedItem (any content: text, icons, a disabled option).
|
|
7
7
|
*/
|
|
8
|
-
export default function Segmented<V extends string>({ label, value,
|
|
8
|
+
export default function Segmented<V extends string>({ label, value: valueProp, defaultValue, onValueChange, name, className, children, ...rest }: SegmentedProps<V>): import('react').JSX.Element;
|
|
9
9
|
/** One option of a Segmented: a native radio covering whatever you put inside. */
|
|
10
10
|
export declare function SegmentedItem({ value, disabled, className, children }: SegmentedItemProps): import('react').JSX.Element;
|
|
11
|
-
export interface SegmentedProps<V extends string> {
|
|
11
|
+
export interface SegmentedProps<V extends string> extends Omit<ComponentProps<'div'>, 'defaultValue' | 'children'> {
|
|
12
12
|
label: string;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/** The chosen option, when you keep it. */
|
|
14
|
+
value?: V;
|
|
15
|
+
/** The first chosen option, when the control keeps its own. */
|
|
16
|
+
defaultValue?: V;
|
|
17
|
+
onValueChange?: (value: V) => void;
|
|
15
18
|
/** Form field name; defaults to a generated one. */
|
|
16
19
|
name?: string;
|
|
17
20
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/segmented/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/segmented/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,SAAS,EAA6B,MAAM,OAAO,CAAC;AAY5F;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,cAAc,CAAC,CAAC,CAAC,+BAwCnB;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BA4BzF;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IAC9G,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,EAAE,SAAS,CAAC;CACvB"}
|
package/dist/segmented/index.js
CHANGED
|
@@ -1,58 +1,60 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cx as e } from "../utils/cx.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useControllable as t } from "../utils/useControllable.js";
|
|
4
|
+
import { useIndicator as n } from "../utils/indicator.js";
|
|
5
|
+
import { createContext as r, useContext as i, useId as a, useRef as o } from "react";
|
|
6
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
7
|
//#region packages/segmented/index.tsx
|
|
7
|
-
var
|
|
8
|
-
function
|
|
9
|
-
let
|
|
10
|
-
return /* @__PURE__ */
|
|
11
|
-
className: e("zen__segmented flex flex-col gap-2",
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
var l = r(null);
|
|
9
|
+
function u({ label: r, value: i, defaultValue: u, onValueChange: d, name: f, className: p, children: m, ...h }) {
|
|
10
|
+
let [g, _] = t(i, u, d), v = a(), y = o(null), b = n(y, "label:has(input:checked)", [g, m]);
|
|
11
|
+
return /* @__PURE__ */ c("div", {
|
|
12
|
+
className: e("zen__segmented flex flex-col gap-2", p),
|
|
13
|
+
...h,
|
|
14
|
+
children: [/* @__PURE__ */ s("span", {
|
|
15
|
+
id: v,
|
|
14
16
|
className: "text-sm font-medium",
|
|
15
|
-
children:
|
|
16
|
-
}), /* @__PURE__ */
|
|
17
|
-
ref:
|
|
17
|
+
children: r
|
|
18
|
+
}), /* @__PURE__ */ c("div", {
|
|
19
|
+
ref: y,
|
|
18
20
|
role: "radiogroup",
|
|
19
|
-
"aria-labelledby":
|
|
21
|
+
"aria-labelledby": v,
|
|
20
22
|
className: "glow-edge border-tint/10 bg-tint/[0.03] relative inline-flex w-fit flex-wrap gap-1 rounded-xl border p-1",
|
|
21
|
-
children: [
|
|
23
|
+
children: [b && /* @__PURE__ */ s("span", {
|
|
22
24
|
"aria-hidden": !0,
|
|
23
25
|
className: "zen__segmented-indicator bg-primary/15 ease-out-soft absolute top-0 left-0 rounded-lg shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.4)] transition-[translate,width,height] duration-500",
|
|
24
26
|
style: {
|
|
25
|
-
translate: `${
|
|
26
|
-
width:
|
|
27
|
-
height:
|
|
27
|
+
translate: `${b.x}px ${b.y}px`,
|
|
28
|
+
width: b.w,
|
|
29
|
+
height: b.h
|
|
28
30
|
}
|
|
29
|
-
}), /* @__PURE__ */
|
|
31
|
+
}), /* @__PURE__ */ s(l.Provider, {
|
|
30
32
|
value: {
|
|
31
|
-
name:
|
|
32
|
-
value:
|
|
33
|
-
|
|
34
|
-
measured:
|
|
33
|
+
name: f ?? v,
|
|
34
|
+
value: g,
|
|
35
|
+
select: _,
|
|
36
|
+
measured: b !== null
|
|
35
37
|
},
|
|
36
|
-
children:
|
|
38
|
+
children: m
|
|
37
39
|
})]
|
|
38
40
|
})]
|
|
39
41
|
});
|
|
40
42
|
}
|
|
41
|
-
function
|
|
42
|
-
let
|
|
43
|
-
if (!
|
|
44
|
-
return /* @__PURE__ */
|
|
45
|
-
className: e("text-muted-foreground relative cursor-pointer rounded-lg px-3 py-1.5 text-sm transition-colors duration-300", "hover:text-foreground has-checked:text-foreground has-
|
|
46
|
-
children: [/* @__PURE__ */
|
|
43
|
+
function d({ value: t, disabled: n, className: r, children: a }) {
|
|
44
|
+
let o = i(l);
|
|
45
|
+
if (!o) throw Error("SegmentedItem must be inside a Segmented");
|
|
46
|
+
return /* @__PURE__ */ c("label", {
|
|
47
|
+
className: e("text-muted-foreground relative cursor-pointer rounded-lg px-3 py-1.5 text-sm transition-colors duration-300", "hover:text-foreground has-checked:text-foreground has- has-focus-ring", "has-disabled:hover:text-muted-foreground has-disabled:cursor-not-allowed has-disabled:opacity-50", !o.measured && "has-checked:bg-primary/15 has-checked:shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.4)]", r),
|
|
48
|
+
children: [/* @__PURE__ */ s("input", {
|
|
47
49
|
type: "radio",
|
|
48
50
|
className: "absolute inset-0 z-10 m-0 size-full cursor-pointer appearance-none rounded-[inherit] opacity-0 disabled:cursor-not-allowed",
|
|
49
|
-
name:
|
|
51
|
+
name: o.name,
|
|
50
52
|
value: t,
|
|
51
|
-
checked:
|
|
53
|
+
checked: o.value === t,
|
|
52
54
|
disabled: n,
|
|
53
|
-
onChange: () =>
|
|
55
|
+
onChange: () => o.select(t)
|
|
54
56
|
}), a]
|
|
55
57
|
});
|
|
56
58
|
}
|
|
57
59
|
//#endregion
|
|
58
|
-
export {
|
|
60
|
+
export { d as SegmentedItem, u as default };
|
package/dist/select/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FieldSize } from '../utils/styles';
|
|
1
2
|
import { ComponentProps, ReactNode } from 'react';
|
|
2
3
|
/**
|
|
3
4
|
* Pick one value from a short list: a field-styled button that opens a list
|
|
@@ -5,7 +6,7 @@ import { ComponentProps, ReactNode } from 'react';
|
|
|
5
6
|
* to close. Fill it with SelectItem, organised with SelectGroup and
|
|
6
7
|
* SelectSeparator. For long or searchable lists, use Combobox.
|
|
7
8
|
*/
|
|
8
|
-
export default function Select<V extends string>({ value,
|
|
9
|
+
export default function Select<V extends string>({ value: valueProp, defaultValue, onValueChange, placeholder: placeholderProp, disabled, size, name, id, className, listClassName, children, style, onKeyDown, ...rest }: SelectProps<V>): import('react').JSX.Element;
|
|
9
10
|
/**
|
|
10
11
|
* One choice in a Select. Its `label` (or its text, when that's all it holds)
|
|
11
12
|
* shows in the field once chosen and is matched when typing to jump.
|
|
@@ -20,11 +21,16 @@ export declare function SelectGroup({ label, children }: {
|
|
|
20
21
|
export declare function SelectSeparator(): import('react').JSX.Element;
|
|
21
22
|
/** Also takes the trigger button's props (aria-*, data-*, onBlur…), so Field can wire it up. */
|
|
22
23
|
export interface SelectProps<V extends string> extends Omit<ComponentProps<'button'>, 'value' | 'onChange' | 'children' | 'defaultValue' | 'name'> {
|
|
23
|
-
value
|
|
24
|
-
|
|
24
|
+
/** The chosen value, when you keep it; null for none. */
|
|
25
|
+
value?: V | null;
|
|
26
|
+
/** The first value, when the select keeps its own. */
|
|
27
|
+
defaultValue?: V | null;
|
|
28
|
+
onValueChange?: (value: V) => void;
|
|
25
29
|
/** Shown while nothing is chosen. */
|
|
26
30
|
placeholder?: string;
|
|
27
31
|
disabled?: boolean;
|
|
32
|
+
/** Height, matching Button's: sm (32px), default (40px) or lg (44px). */
|
|
33
|
+
size?: FieldSize;
|
|
28
34
|
/** Form field name: adds a hidden input with the value. */
|
|
29
35
|
name?: string;
|
|
30
36
|
id?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/select/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/select/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAc,KAAK,SAAS,EAA6C,MAAM,mBAAmB,CAAC;AAI1G,OAAO,EAMH,cAAc,EAEd,SAAS,EAQZ,MAAM,OAAO,CAAC;AAaf;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,EAC7C,KAAK,EAAE,SAAS,EAChB,YAAmB,EACnB,aAAa,EACb,WAAW,EAAE,eAAe,EAC5B,QAAgB,EAChB,IAAgB,EAChB,IAAI,EACJ,EAAE,EACF,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,EACL,SAAS,EACT,GAAG,IAAI,EACV,EAAE,WAAW,CAAC,CAAC,CAAC,+BA6IhB;AAuBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,eAAe,+BAiC1F;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,+BASzF;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,gCAE9B;AAED,gGAAgG;AAChG,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CACvD,cAAc,CAAC,QAAQ,CAAC,EACxB,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,GAAG,MAAM,CAC9D;IACG,yDAAyD;IACzD,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,sDAAsD;IACtD,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACvB"}
|