@cascivo/react 0.16.0 → 0.17.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 +6 -1
- package/dist/accordion/accordion.js +5 -4
- package/dist/app-shell/app-shell.css +1 -1
- package/dist/app-shell/app-shell.js +28 -26
- package/dist/app-shell/app-shell.module.js +8 -8
- package/dist/badge/badge.js +1 -1
- package/dist/button/button.css +1 -1
- package/dist/button/button.js +4 -1
- package/dist/button/button.module.js +4 -1
- package/dist/calendar/calendar.js +67 -63
- package/dist/card/card.css +1 -1
- package/dist/card/card.module.js +8 -8
- package/dist/checkbox/checkbox.css +1 -1
- package/dist/checkbox/checkbox.module.js +4 -4
- package/dist/combobox/combobox.js +55 -54
- package/dist/context-menu/context-menu.js +42 -38
- package/dist/data-table/data-table.css +1 -1
- package/dist/data-table/data-table.js +155 -160
- package/dist/data-table/data-table.module.js +29 -29
- package/dist/date-picker/date-picker.js +90 -89
- package/dist/field/field.css +1 -1
- package/dist/field/field.module.js +3 -3
- package/dist/index.d.ts +307 -145
- package/dist/infinite-scroll/infinite-scroll.css +1 -0
- package/dist/infinite-scroll/infinite-scroll.js +49 -0
- package/dist/infinite-scroll/infinite-scroll.module.js +8 -0
- package/dist/large-title-header/large-title-header.css +1 -0
- package/dist/large-title-header/large-title-header.js +38 -0
- package/dist/large-title-header/large-title-header.module.js +13 -0
- package/dist/layouts/src/grid/grid.css +1 -1
- package/dist/layouts/src/grid/grid.module.js +3 -3
- package/dist/link/link.css +1 -1
- package/dist/link/link.module.js +1 -1
- package/dist/menu/menu.js +47 -43
- package/dist/node/accordion/accordion.js +5 -4
- package/dist/node/app-shell/app-shell.js +28 -26
- package/dist/node/app-shell/app-shell.module.js +8 -8
- package/dist/node/badge/badge.js +1 -1
- package/dist/node/button/button.js +4 -1
- package/dist/node/button/button.module.js +4 -1
- package/dist/node/calendar/calendar.js +67 -63
- package/dist/node/card/card.module.js +8 -8
- package/dist/node/checkbox/checkbox.module.js +4 -4
- package/dist/node/combobox/combobox.js +55 -54
- package/dist/node/context-menu/context-menu.js +42 -38
- package/dist/node/data-table/data-table.js +155 -160
- package/dist/node/data-table/data-table.module.js +29 -29
- package/dist/node/date-picker/date-picker.js +90 -89
- package/dist/node/field/field.module.js +3 -3
- package/dist/node/infinite-scroll/infinite-scroll.js +49 -0
- package/dist/node/infinite-scroll/infinite-scroll.module.js +7 -0
- package/dist/node/large-title-header/large-title-header.js +38 -0
- package/dist/node/large-title-header/large-title-header.module.js +12 -0
- package/dist/node/layouts/src/grid/grid.module.js +3 -3
- package/dist/node/link/link.module.js +1 -1
- package/dist/node/menu/menu.js +47 -43
- package/dist/node/react/src/index.js +27 -23
- package/dist/node/reorder-list/reorder-list.js +143 -0
- package/dist/node/reorder-list/reorder-list.module.js +11 -0
- package/dist/node/search/search.js +5 -4
- package/dist/node/side-nav/side-nav.js +90 -89
- package/dist/node/skip-nav/skip-nav.js +1 -0
- package/dist/node/swap/swap.js +2 -3
- package/dist/node/switcher/switcher.js +1 -1
- package/dist/node/tabs/tabs.js +41 -40
- package/dist/node/tag/tag.module.js +2 -2
- package/dist/node/toc/toc.js +5 -4
- package/dist/node/virtual-list/virtual-list.js +40 -0
- package/dist/node/virtual-list/virtual-list.module.js +7 -0
- package/dist/node/wheel-picker/wheel-picker.js +84 -0
- package/dist/node/wheel-picker/wheel-picker.module.js +8 -0
- package/dist/react/src/index.js +27 -23
- package/dist/reorder-list/reorder-list.css +1 -0
- package/dist/reorder-list/reorder-list.js +143 -0
- package/dist/reorder-list/reorder-list.module.js +12 -0
- package/dist/search/search.js +5 -4
- package/dist/side-nav/side-nav.js +90 -89
- package/dist/skip-nav/skip-nav.js +1 -0
- package/dist/styles.css +48 -11
- package/dist/swap/swap.js +2 -3
- package/dist/switcher/switcher.js +1 -1
- package/dist/tabs/tabs.js +41 -40
- package/dist/tag/tag.css +1 -1
- package/dist/tag/tag.module.js +2 -2
- package/dist/toc/toc.js +5 -4
- package/dist/virtual-list/virtual-list.css +1 -0
- package/dist/virtual-list/virtual-list.js +40 -0
- package/dist/virtual-list/virtual-list.module.js +8 -0
- package/dist/wheel-picker/wheel-picker.css +1 -0
- package/dist/wheel-picker/wheel-picker.js +84 -0
- package/dist/wheel-picker/wheel-picker.module.js +9 -0
- package/package.json +4 -4
- package/readme.body.md +6 -1
- package/dist/node/react/src/theme.js +0 -78
- package/dist/node/storage/src/drivers.js +0 -34
- package/dist/node/storage/src/persisted-signal.js +0 -41
- package/dist/react/src/theme.js +0 -78
- package/dist/storage/src/drivers.js +0 -34
- package/dist/storage/src/persisted-signal.js +0 -41
package/README.md
CHANGED
|
@@ -249,7 +249,7 @@ routing break after adding one of these, check that the import resolves to
|
|
|
249
249
|
|
|
250
250
|
## Component index
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
197 components, exported from `@cascivo/react`. Full props, examples, and live demos at [cascivo.com/docs](https://cascivo.com/docs).
|
|
253
253
|
|
|
254
254
|
### Inputs
|
|
255
255
|
|
|
@@ -282,6 +282,7 @@ routing break after adding one of these, check that the import resolves to
|
|
|
282
282
|
- **Radio** — Single choice from a set, grouped with RadioGroup
|
|
283
283
|
- **RadioCard** — Selectable card backed by a native radio input. Use RadioCardGroup for single-select groups.
|
|
284
284
|
- **RatingGroup** — Star rating input with accessible radio group pattern
|
|
285
|
+
- **ReorderList** — List whose rows can be reordered by pointer drag or entirely by keyboard
|
|
285
286
|
- **Search** — Search input with debounced search callback and clear button
|
|
286
287
|
- **SegmentedControl** — Mutually exclusive toggle group
|
|
287
288
|
- **Select** — Native select menu styled to match the design system
|
|
@@ -293,6 +294,7 @@ routing break after adding one of these, check that the import resolves to
|
|
|
293
294
|
- **TimePicker** — Native time input wrapper with label, hint, error, and size variants
|
|
294
295
|
- **Toggle** — On/off switch built as an accessible button
|
|
295
296
|
- **ToggleGroup** — A set of toggle buttons for single or multiple selection
|
|
297
|
+
- **WheelPicker** — iOS-style drum picker — a column of options that scrolls and snaps to a selection
|
|
296
298
|
|
|
297
299
|
### Display
|
|
298
300
|
|
|
@@ -353,6 +355,7 @@ routing break after adding one of these, check that the import resolves to
|
|
|
353
355
|
- **TreeView** — Hierarchical, expandable tree of nodes with keyboard navigation and selection
|
|
354
356
|
- **User** — Identity composite: an avatar with a name, description, and optional action slot
|
|
355
357
|
- **UsersTablePage** — Full users management page with table, search, and invite action.
|
|
358
|
+
- **VirtualList** — Renders only the rows inside the viewport, so list length costs no extra DOM
|
|
356
359
|
- **VisuallyHidden** — Hides content visually while keeping it available to screen readers
|
|
357
360
|
|
|
358
361
|
### Overlay
|
|
@@ -381,6 +384,7 @@ routing break after adding one of these, check that the import resolves to
|
|
|
381
384
|
- **Dock** — Fixed bottom navigation bar for mobile app shells with up to 5 items
|
|
382
385
|
- **Header** — App top bar with brand, primary navigation links, and an actions slot
|
|
383
386
|
- **HeaderPanel** — Non-modal panel anchored below the shell header at the inline-end edge — hosts notifications, app switcher, user settings
|
|
387
|
+
- **LargeTitleHeader** — Scrolling region whose large title collapses into a compact sticky bar as it scrolls
|
|
384
388
|
- **Link** — Styled anchor for navigation, standalone or inline within prose
|
|
385
389
|
- **Menubar** — Horizontal application menu bar with keyboard-navigable dropdown menus
|
|
386
390
|
- **MenuButton** — A button that opens an anchored action menu of one-shot commands
|
|
@@ -427,6 +431,7 @@ routing break after adding one of these, check that the import resolves to
|
|
|
427
431
|
|
|
428
432
|
### Feedback
|
|
429
433
|
|
|
434
|
+
- **InfiniteScroll** — Loads the next page when the end of a list scrolls into view
|
|
430
435
|
- **InlineLoading** — Compact inline status indicator that pairs a label with a loading, success, or error state
|
|
431
436
|
- **Notification** — Inline, actionable notification banner that surfaces a titled message with an optional recovery action
|
|
432
437
|
- **Progress** — Horizontal bar showing the completion progress of a tracked operation
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import e from "./accordion.module.js";
|
|
4
4
|
import { createContext as t, forwardRef as n, useId as r, useRef as i } from "react";
|
|
5
|
-
import { cn as a,
|
|
5
|
+
import { cn as a, useControllableSignal as o, useSignalEffect as s, useSignals as c } from "@cascivo/core";
|
|
6
6
|
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
7
|
//#region ../components/src/accordion/accordion.tsx
|
|
8
8
|
var d = t(null), f = t(null);
|
|
@@ -10,9 +10,10 @@ function p(e) {
|
|
|
10
10
|
return e === void 0 ? [] : Array.isArray(e) ? e : [e];
|
|
11
11
|
}
|
|
12
12
|
function m({ type: t = "single", defaultValue: n, value: i, onValueChange: s, className: c, children: u }) {
|
|
13
|
-
let f = r(), m = o(
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
let f = r(), [m] = o({
|
|
14
|
+
value: i === void 0 ? void 0 : p(i),
|
|
15
|
+
defaultValue: p(n)
|
|
16
|
+
}), h = {
|
|
16
17
|
open: m,
|
|
17
18
|
baseId: f,
|
|
18
19
|
type: t,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer cascivo.component{.
|
|
1
|
+
@layer cascivo.component{._shell_pf33o_4{box-sizing:border-box;block-size:100dvh;font-family:var(--cascivo-font-sans);color:var(--cascivo-color-foreground);background-color:var(--cascivo-color-background);flex-direction:column;display:flex;overflow:hidden}._header_pf33o_16{z-index:var(--cascivo-z-raised);flex:none}._body_pf33o_21{flex:auto;min-block-size:0;display:flex;position:relative}._navWrapper_pf33o_32{z-index:var(--cascivo-z-overlay);block-size:100%;transition:transform var(--cascivo-motion-emphasis);position:absolute;inset-block:0;inset-inline-start:0;overflow:hidden;transform:translate(-100%)}._navWrapper_pf33o_32[data-open=true]{transform:translate(0)}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) ._navWrapper_pf33o_32{transform:translate(100%)}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) ._navWrapper_pf33o_32[data-open=true]{transform:translate(0)}._navInner_pf33o_58{block-size:100%;inline-size:var(--cascivo-shell-panel-inline-size,20rem);display:flex}._navInner_pf33o_58>*{flex:auto;min-block-size:0}._scrim_pf33o_70{z-index:var(--cascivo-z-dropdown);opacity:0;visibility:hidden;transition:opacity var(--cascivo-motion-emphasis), visibility var(--cascivo-motion-emphasis);background-color:oklch(0% 0 0/.4);position:absolute;inset:0}._scrim_pf33o_70[data-open=true]{opacity:1;visibility:visible}._main_pf33o_87{min-inline-size:0;padding:var(--cascivo-space-6);flex:auto;overflow-y:auto}._main_pf33o_87[data-padding=none]{padding:0}._main_pf33o_87[data-padding="1"]{padding:var(--cascivo-space-1)}._main_pf33o_87[data-padding="2"]{padding:var(--cascivo-space-2)}._main_pf33o_87[data-padding="3"]{padding:var(--cascivo-space-3)}._main_pf33o_87[data-padding="4"]{padding:var(--cascivo-space-4)}._main_pf33o_87[data-padding="5"]{padding:var(--cascivo-space-5)}._main_pf33o_87[data-padding="6"]{padding:var(--cascivo-space-6)}._main_pf33o_87[data-padding="8"]{padding:var(--cascivo-space-8)}._main_pf33o_87[data-padding="10"]{padding:var(--cascivo-space-10)}._main_pf33o_87[data-padding="12"]{padding:var(--cascivo-space-12)}._footer_pf33o_128{flex:none}@media (width>=64rem){._navWrapper_pf33o_32{z-index:auto;inline-size:var(--cascivo-shell-aside-inline-size,18rem);transition:inline-size var(--cascivo-motion-emphasis);flex-shrink:0;position:static;transform:none}._navWrapper_pf33o_32[data-open=false]{inline-size:0}._navInner_pf33o_58{inline-size:var(--cascivo-shell-aside-inline-size,18rem)}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) ._navWrapper_pf33o_32{transform:none}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) ._navWrapper_pf33o_32[data-open=true]{transform:none}._scrim_pf33o_70{display:none}}}
|
|
@@ -2,56 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
import e from "./app-shell.module.js";
|
|
4
4
|
import { cloneElement as t, isValidElement as n, useRef as r } from "react";
|
|
5
|
-
import { cn as i,
|
|
5
|
+
import { cn as i, useControllableSignal as a, useSignalEffect as o, useSignals as s } from "@cascivo/core";
|
|
6
6
|
import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
7
|
//#region ../components/src/app-shell/app-shell.tsx
|
|
8
|
-
function d({ header: d, nav: f, children: p, footer: m, open: h, defaultOpen: g, onOpenChange: _,
|
|
8
|
+
function d({ header: d, nav: f, children: p, footer: m, open: h, defaultOpen: g, onOpenChange: _, padding: v = 6, className: y, ...b }) {
|
|
9
9
|
s();
|
|
10
|
-
let
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
let x = h !== void 0, [S] = a({
|
|
11
|
+
value: h,
|
|
12
|
+
defaultValue: g ?? !0
|
|
13
|
+
}), C = r(null), w = r(null);
|
|
14
|
+
function T(e) {
|
|
15
|
+
x || (S.value = e), _?.(e);
|
|
15
16
|
}
|
|
16
|
-
function
|
|
17
|
-
typeof document < "u" && (
|
|
17
|
+
function E() {
|
|
18
|
+
typeof document < "u" && (w.current = document.activeElement), T(!S.value);
|
|
18
19
|
}
|
|
19
20
|
o(() => {
|
|
20
|
-
|
|
21
|
+
x || g !== void 0 || typeof window > "u" || typeof window.matchMedia != "function" || window.matchMedia("(max-width: 63.999rem)").matches && (S.value = !1);
|
|
21
22
|
}), o(() => {
|
|
22
|
-
if (!
|
|
23
|
+
if (!S.value || typeof document > "u") return;
|
|
23
24
|
let e = (e) => {
|
|
24
|
-
e.key === "Escape" &&
|
|
25
|
+
e.key === "Escape" && T(!1);
|
|
25
26
|
};
|
|
26
27
|
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
27
28
|
}), o(() => {
|
|
28
|
-
let e =
|
|
29
|
-
if (e) if (
|
|
29
|
+
let e = C.current;
|
|
30
|
+
if (e) if (S.value) e.removeAttribute("inert");
|
|
30
31
|
else {
|
|
31
32
|
e.setAttribute("inert", "");
|
|
32
|
-
let t =
|
|
33
|
+
let t = w.current;
|
|
33
34
|
t && e.contains(document.activeElement) && t.focus();
|
|
34
35
|
}
|
|
35
36
|
});
|
|
36
|
-
let
|
|
37
|
-
onMenuClick:
|
|
38
|
-
menuExpanded:
|
|
37
|
+
let D = n(d) && f ? t(d, {
|
|
38
|
+
onMenuClick: E,
|
|
39
|
+
menuExpanded: S.value
|
|
39
40
|
}) : d;
|
|
40
41
|
return /* @__PURE__ */ u("div", {
|
|
41
|
-
className: i(e.shell,
|
|
42
|
-
"data-open":
|
|
43
|
-
...
|
|
42
|
+
className: i(e.shell, y),
|
|
43
|
+
"data-open": S.value,
|
|
44
|
+
...b,
|
|
44
45
|
children: [
|
|
45
46
|
/* @__PURE__ */ l("div", {
|
|
46
47
|
className: e.header,
|
|
47
|
-
children:
|
|
48
|
+
children: D
|
|
48
49
|
}),
|
|
49
50
|
/* @__PURE__ */ u("div", {
|
|
50
51
|
className: e.body,
|
|
51
52
|
children: [f && /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l("div", {
|
|
52
|
-
ref:
|
|
53
|
+
ref: C,
|
|
53
54
|
className: e.navWrapper,
|
|
54
|
-
"data-open":
|
|
55
|
+
"data-open": S.value,
|
|
55
56
|
"data-testid": "app-shell-nav",
|
|
56
57
|
"data-cascivo-appshell-nav": "",
|
|
57
58
|
children: /* @__PURE__ */ l("div", {
|
|
@@ -60,15 +61,16 @@ function d({ header: d, nav: f, children: p, footer: m, open: h, defaultOpen: g,
|
|
|
60
61
|
})
|
|
61
62
|
}), /* @__PURE__ */ l("div", {
|
|
62
63
|
className: e.scrim,
|
|
63
|
-
"data-open":
|
|
64
|
+
"data-open": S.value,
|
|
64
65
|
"data-testid": "app-shell-scrim",
|
|
65
66
|
"aria-hidden": "true",
|
|
66
|
-
onClick: () =>
|
|
67
|
+
onClick: () => T(!1)
|
|
67
68
|
})] }), /* @__PURE__ */ l("main", {
|
|
68
69
|
id: "cascade-main",
|
|
69
70
|
tabIndex: -1,
|
|
70
71
|
className: e.main,
|
|
71
72
|
"data-cascivo-appshell-main": "",
|
|
73
|
+
"data-padding": v === "none" ? "none" : String(v),
|
|
72
74
|
children: p
|
|
73
75
|
})]
|
|
74
76
|
}),
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import './app-shell.css';
|
|
2
2
|
var e = {
|
|
3
|
-
shell: "
|
|
4
|
-
header: "
|
|
5
|
-
body: "
|
|
6
|
-
navWrapper: "
|
|
7
|
-
navInner: "
|
|
8
|
-
scrim: "
|
|
9
|
-
main: "
|
|
10
|
-
footer: "
|
|
3
|
+
shell: "_shell_pf33o_4",
|
|
4
|
+
header: "_header_pf33o_16",
|
|
5
|
+
body: "_body_pf33o_21",
|
|
6
|
+
navWrapper: "_navWrapper_pf33o_32",
|
|
7
|
+
navInner: "_navInner_pf33o_58",
|
|
8
|
+
scrim: "_scrim_pf33o_70",
|
|
9
|
+
main: "_main_pf33o_87",
|
|
10
|
+
footer: "_footer_pf33o_128"
|
|
11
11
|
};
|
|
12
12
|
//#endregion
|
|
13
13
|
export { e as default };
|
package/dist/badge/badge.js
CHANGED
|
@@ -3,7 +3,7 @@ import { cn as t, normalizeTone as n } from "@cascivo/core/pure";
|
|
|
3
3
|
import { jsx as r } from "react/jsx-runtime";
|
|
4
4
|
//#region ../components/src/badge/badge.tsx
|
|
5
5
|
var i = {
|
|
6
|
-
neutral: "
|
|
6
|
+
neutral: "secondary",
|
|
7
7
|
info: "info",
|
|
8
8
|
success: "success",
|
|
9
9
|
warning: "warning",
|
package/dist/button/button.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer cascivo.component{.
|
|
1
|
+
@layer cascivo.component{._label_yace7_10{align-items:center;gap:inherit;display:inline-flex}._button_yace7_8{justify-content:center;align-items:center;gap:var(--cascivo-space-2);font-family:var(--cascivo-font-sans);font-weight:var(--cascivo-font-medium);line-height:var(--cascivo-leading-none);white-space:nowrap;cursor:pointer;transition:background-color var(--cascivo-duration-150) var(--cascivo-ease-out), color var(--cascivo-duration-150) var(--cascivo-ease-out), box-shadow var(--cascivo-duration-150) var(--cascivo-ease-out);border-radius:var(--cascivo-button-radius,var(--cascivo-radius-control));border:1px solid #0000;text-decoration:none;display:inline-flex}._button_yace7_8:focus-visible{box-shadow:var(--cascivo-focus-ring);outline:none}._button_yace7_8:disabled,._button_yace7_8[aria-disabled=true]{opacity:.5;opacity:var(--cascivo-disabled-opacity,.5);cursor:not-allowed;pointer-events:none}._button_yace7_8[data-size=sm]{height:var(--cascivo-control-height-sm);padding-inline:var(--cascivo-space-3);font-size:var(--cascivo-text-ui)}._button_yace7_8[data-size=md]{height:var(--cascivo-control-height-md);padding-inline:var(--cascivo-space-4);padding-block:.5rem;padding-block:--cascivo-step(2);font-size:var(--cascivo-text-ui)}._button_yace7_8[data-size=lg]{height:var(--cascivo-control-height-lg);padding-inline:var(--cascivo-space-6);font-size:var(--cascivo-text-body)}@media (pointer:coarse){._button_yace7_8[data-size=sm],._button_yace7_8[data-size=md]{min-block-size:var(--cascivo-target-min-coarse,2.75rem)}}._button_yace7_8[data-variant=primary]{background-color:var(--cascivo-color-primary);color:var(--cascivo-color-primary-fg)}._button_yace7_8[data-variant=primary]:hover:not(:disabled){background-color:var(--cascivo-color-primary-hover)}._button_yace7_8[data-variant=primary]:active:not(:disabled){background-color:var(--cascivo-color-primary-active)}._button_yace7_8[data-variant=secondary]{background-color:var(--cascivo-color-secondary);color:var(--cascivo-color-secondary-content)}._button_yace7_8[data-variant=secondary]:hover:not(:disabled){background-color:var(--cascivo-color-secondary-hover)}._button_yace7_8[data-variant=ghost]{color:var(--cascivo-color-text);background-color:#0000}._button_yace7_8[data-variant=ghost]:hover:not(:disabled){background-color:var(--cascivo-color-bg-subtle)}._button_yace7_8[data-variant=destructive]{background-color:var(--cascivo-color-destructive);color:var(--cascivo-color-text-on-destructive)}._button_yace7_8[data-variant=destructive]:hover:not(:disabled){background-color:var(--cascivo-color-destructive-hover)}}@media (forced-colors:active){._button_yace7_8{border:1px solid buttontext}._button_yace7_8:focus-visible{outline-offset:2px;outline:2px solid highlight}._button_yace7_8:disabled{color:graytext;border-color:graytext}}
|
package/dist/button/button.js
CHANGED
|
@@ -25,7 +25,10 @@ var s = i(function({ variant: i = "primary", size: s = "md", loading: c = !1, as
|
|
|
25
25
|
children: [c && /* @__PURE__ */ a(e, {
|
|
26
26
|
size: "sm",
|
|
27
27
|
"aria-hidden": "true"
|
|
28
|
-
}), /* @__PURE__ */ a("span", {
|
|
28
|
+
}), /* @__PURE__ */ a("span", {
|
|
29
|
+
className: t.label,
|
|
30
|
+
children: f
|
|
31
|
+
})]
|
|
29
32
|
});
|
|
30
33
|
});
|
|
31
34
|
//#endregion
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import e from "./calendar.module.js";
|
|
4
|
-
import { batch as t, cn as n,
|
|
5
|
-
import { builtin as
|
|
6
|
-
import { jsx as
|
|
4
|
+
import { batch as t, cn as n, useControllableSignal as r, useSignal as i, useSignals as a } from "@cascivo/core";
|
|
5
|
+
import { builtin as o, currentLocale as s, t as c } from "@cascivo/i18n";
|
|
6
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
7
|
//#region ../components/src/calendar/calendar.tsx
|
|
8
|
-
function
|
|
8
|
+
function d(e) {
|
|
9
9
|
try {
|
|
10
10
|
let t = new Intl.Locale(e).weekInfo;
|
|
11
11
|
if (t) return t.firstDay % 7;
|
|
12
12
|
} catch {}
|
|
13
13
|
return 1;
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function f(e, t, n) {
|
|
16
16
|
let r = new Date(Date.UTC(e, t, 1)), i = new Date(Date.UTC(e, t + 1, 0)), a = (r.getUTCDay() - n + 7) % 7, o = [];
|
|
17
17
|
for (let e = 0; e < a; e++) o.push(null);
|
|
18
18
|
for (let n = 1; n <= i.getUTCDate(); n++) o.push(new Date(Date.UTC(e, t, n)));
|
|
@@ -21,22 +21,22 @@ function d(e, t, n) {
|
|
|
21
21
|
for (let e = 0; e < o.length; e += 7) s.push(o.slice(e, e + 7));
|
|
22
22
|
return s;
|
|
23
23
|
}
|
|
24
|
-
function
|
|
24
|
+
function p(e) {
|
|
25
25
|
return `${e.getUTCFullYear()}-${e.getUTCMonth()}-${e.getUTCDate()}`;
|
|
26
26
|
}
|
|
27
|
-
function p(e, t) {
|
|
28
|
-
return !e || !t ? !1 : f(e) === f(t);
|
|
29
|
-
}
|
|
30
27
|
function m(e, t) {
|
|
31
|
-
return
|
|
28
|
+
return !e || !t ? !1 : p(e) === p(t);
|
|
32
29
|
}
|
|
33
30
|
function h(e, t) {
|
|
34
|
-
return new Date(Date.UTC(e.getUTCFullYear(), e.getUTCMonth()
|
|
31
|
+
return new Date(Date.UTC(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate() + t));
|
|
35
32
|
}
|
|
36
33
|
function g(e, t) {
|
|
37
|
-
return
|
|
34
|
+
return new Date(Date.UTC(e.getUTCFullYear(), e.getUTCMonth() + t, e.getUTCDate()));
|
|
35
|
+
}
|
|
36
|
+
function _(e, t) {
|
|
37
|
+
return h(e, -((e.getUTCDay() - t + 7) % 7));
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function v(e, t, n) {
|
|
40
40
|
if (t) {
|
|
41
41
|
let n = new Date(Date.UTC(t.getUTCFullYear(), t.getUTCMonth(), t.getUTCDate()));
|
|
42
42
|
if (e.getTime() < n.getTime()) return !0;
|
|
@@ -47,96 +47,100 @@ function _(e, t, n) {
|
|
|
47
47
|
}
|
|
48
48
|
return !1;
|
|
49
49
|
}
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
let
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
50
|
+
function y({ value: p, defaultValue: y, onValueChange: b, min: x, max: S, disabled: C, locale: w, size: T = "md", labels: E, className: D, isInRange: O, isRangeStart: k, isRangeEnd: A, onDayHover: j, month: M, year: N, onViewChange: P, hideNav: F = !1 }) {
|
|
51
|
+
a();
|
|
52
|
+
let I = w ?? s(), L = E?.previousMonth ?? c(o.calendar.previousMonth), R = E?.nextMonth ?? c(o.calendar.nextMonth), z = p === void 0 ? y ?? null : p, B = /* @__PURE__ */ new Date(), V = z ?? y ?? B, [H] = r({
|
|
53
|
+
value: N,
|
|
54
|
+
defaultValue: V.getUTCFullYear()
|
|
55
|
+
}), [U] = r({
|
|
56
|
+
value: M,
|
|
57
|
+
defaultValue: V.getUTCMonth()
|
|
58
|
+
}), W = i(V), G = d(I), K = f(H.value, U.value, G), q = new Intl.DateTimeFormat(I, { weekday: "short" }), J = Array.from({ length: 7 }, (e, t) => {
|
|
59
|
+
let n = new Date(Date.UTC(2024, 0, 7 + G + t));
|
|
60
|
+
return q.format(n);
|
|
61
|
+
}), ee = new Intl.DateTimeFormat(I, {
|
|
58
62
|
weekday: "long",
|
|
59
63
|
year: "numeric",
|
|
60
64
|
month: "long",
|
|
61
65
|
day: "numeric"
|
|
62
|
-
}), Y = new Intl.DateTimeFormat(
|
|
66
|
+
}), Y = new Intl.DateTimeFormat(I, {
|
|
63
67
|
month: "long",
|
|
64
68
|
year: "numeric"
|
|
65
|
-
}).format(new Date(Date.UTC(
|
|
66
|
-
Z ?
|
|
67
|
-
|
|
68
|
-
}),
|
|
69
|
+
}).format(new Date(Date.UTC(H.value, U.value, 1))), X = (e) => v(e, x, S) || (C ? C(e) : !1), Z = M !== void 0 || N !== void 0, te = (e) => {
|
|
70
|
+
Z ? W.value = e : t(() => {
|
|
71
|
+
H.value = e.getUTCFullYear(), U.value = e.getUTCMonth(), W.value = e;
|
|
72
|
+
}), P?.({
|
|
69
73
|
month: e.getUTCMonth(),
|
|
70
74
|
year: e.getUTCFullYear()
|
|
71
75
|
});
|
|
72
76
|
}, Q = (e) => {
|
|
73
|
-
X(e) ||
|
|
77
|
+
X(e) || b?.(e);
|
|
74
78
|
}, $ = (e) => {
|
|
75
|
-
let n =
|
|
79
|
+
let n = g(new Date(Date.UTC(H.value, U.value, 1)), e), r = n.getUTCMonth(), i = n.getUTCFullYear();
|
|
76
80
|
Z || t(() => {
|
|
77
|
-
|
|
78
|
-
}),
|
|
81
|
+
U.value = r, H.value = i;
|
|
82
|
+
}), P?.({
|
|
79
83
|
month: r,
|
|
80
84
|
year: i
|
|
81
85
|
});
|
|
82
86
|
};
|
|
83
|
-
return /* @__PURE__ */
|
|
84
|
-
className: n(e.calendar,
|
|
85
|
-
"data-size":
|
|
86
|
-
onMouseLeave: () =>
|
|
87
|
-
children: [/* @__PURE__ */
|
|
87
|
+
return /* @__PURE__ */ u("div", {
|
|
88
|
+
className: n(e.calendar, D),
|
|
89
|
+
"data-size": T,
|
|
90
|
+
onMouseLeave: () => j?.(null),
|
|
91
|
+
children: [/* @__PURE__ */ u("div", {
|
|
88
92
|
className: e.header,
|
|
89
93
|
children: [
|
|
90
|
-
|
|
94
|
+
F ? /* @__PURE__ */ l("span", { className: e.navSpacer }) : /* @__PURE__ */ l("button", {
|
|
91
95
|
type: "button",
|
|
92
96
|
className: e.navButton,
|
|
93
|
-
"aria-label":
|
|
97
|
+
"aria-label": L,
|
|
94
98
|
onClick: () => $(-1),
|
|
95
99
|
children: "‹"
|
|
96
100
|
}),
|
|
97
|
-
/* @__PURE__ */
|
|
101
|
+
/* @__PURE__ */ l("span", {
|
|
98
102
|
className: e.monthLabel,
|
|
99
103
|
"aria-live": "polite",
|
|
100
104
|
children: Y
|
|
101
105
|
}),
|
|
102
|
-
|
|
106
|
+
F ? /* @__PURE__ */ l("span", { className: e.navSpacer }) : /* @__PURE__ */ l("button", {
|
|
103
107
|
type: "button",
|
|
104
108
|
className: e.navButton,
|
|
105
|
-
"aria-label":
|
|
109
|
+
"aria-label": R,
|
|
106
110
|
onClick: () => $(1),
|
|
107
111
|
children: "›"
|
|
108
112
|
})
|
|
109
113
|
]
|
|
110
|
-
}), /* @__PURE__ */
|
|
114
|
+
}), /* @__PURE__ */ u("table", {
|
|
111
115
|
role: "grid",
|
|
112
116
|
"aria-label": Y,
|
|
113
117
|
className: e.grid,
|
|
114
118
|
onKeyDown: (e) => {
|
|
115
|
-
let t =
|
|
119
|
+
let t = W.value, n;
|
|
116
120
|
switch (e.key) {
|
|
117
121
|
case "ArrowRight":
|
|
118
|
-
n =
|
|
122
|
+
n = h(t, 1);
|
|
119
123
|
break;
|
|
120
124
|
case "ArrowLeft":
|
|
121
|
-
n =
|
|
125
|
+
n = h(t, -1);
|
|
122
126
|
break;
|
|
123
127
|
case "ArrowDown":
|
|
124
|
-
n =
|
|
128
|
+
n = h(t, 7);
|
|
125
129
|
break;
|
|
126
130
|
case "ArrowUp":
|
|
127
|
-
n =
|
|
131
|
+
n = h(t, -7);
|
|
128
132
|
break;
|
|
129
133
|
case "Home":
|
|
130
|
-
n =
|
|
134
|
+
n = _(t, G);
|
|
131
135
|
break;
|
|
132
136
|
case "End":
|
|
133
|
-
n =
|
|
137
|
+
n = h(_(t, G), 6);
|
|
134
138
|
break;
|
|
135
139
|
case "PageUp":
|
|
136
|
-
n =
|
|
140
|
+
n = g(t, e.shiftKey ? -12 : -1);
|
|
137
141
|
break;
|
|
138
142
|
case "PageDown":
|
|
139
|
-
n =
|
|
143
|
+
n = g(t, e.shiftKey ? 12 : 1);
|
|
140
144
|
break;
|
|
141
145
|
case "Enter":
|
|
142
146
|
case " ":
|
|
@@ -144,45 +148,45 @@ function v({ value: f, defaultValue: v, onValueChange: y, min: b, max: x, disabl
|
|
|
144
148
|
return;
|
|
145
149
|
default: return;
|
|
146
150
|
}
|
|
147
|
-
e.preventDefault(),
|
|
151
|
+
e.preventDefault(), te(n), j?.(n);
|
|
148
152
|
},
|
|
149
|
-
children: [/* @__PURE__ */
|
|
153
|
+
children: [/* @__PURE__ */ l("thead", { children: /* @__PURE__ */ l("tr", {
|
|
150
154
|
role: "row",
|
|
151
|
-
children:
|
|
155
|
+
children: J.map((t) => /* @__PURE__ */ l("th", {
|
|
152
156
|
className: e.weekday,
|
|
153
157
|
abbr: t,
|
|
154
158
|
scope: "col",
|
|
155
159
|
children: t
|
|
156
160
|
}, t))
|
|
157
|
-
}) }), /* @__PURE__ */
|
|
161
|
+
}) }), /* @__PURE__ */ l("tbody", { children: K.map((t, n) => /* @__PURE__ */ l("tr", {
|
|
158
162
|
role: "row",
|
|
159
163
|
children: t.map((t, n) => {
|
|
160
|
-
if (!t) return /* @__PURE__ */
|
|
164
|
+
if (!t) return /* @__PURE__ */ l("td", {
|
|
161
165
|
role: "gridcell",
|
|
162
166
|
className: e.empty
|
|
163
167
|
}, n);
|
|
164
|
-
let r =
|
|
165
|
-
return /* @__PURE__ */
|
|
168
|
+
let r = m(t, z), i = m(t, B), a = m(t, W.value), o = X(t), s = O ? O(t) : !1, c = k ? k(t) : !1, u = A ? A(t) : !1;
|
|
169
|
+
return /* @__PURE__ */ l("td", {
|
|
166
170
|
role: "gridcell",
|
|
167
171
|
className: e.cell,
|
|
168
172
|
"aria-selected": r,
|
|
169
|
-
children: /* @__PURE__ */
|
|
173
|
+
children: /* @__PURE__ */ l("button", {
|
|
170
174
|
type: "button",
|
|
171
175
|
className: e.day,
|
|
172
176
|
tabIndex: a ? 0 : -1,
|
|
173
|
-
"aria-label":
|
|
177
|
+
"aria-label": ee.format(t),
|
|
174
178
|
"aria-current": i ? "date" : void 0,
|
|
175
179
|
"aria-disabled": o || void 0,
|
|
176
180
|
"data-selected": r || void 0,
|
|
177
181
|
"data-today": i || void 0,
|
|
178
182
|
"data-in-range": s || void 0,
|
|
179
|
-
"data-range-start":
|
|
183
|
+
"data-range-start": c || void 0,
|
|
180
184
|
"data-range-end": u || void 0,
|
|
181
185
|
onClick: () => Q(t),
|
|
182
186
|
onFocus: () => {
|
|
183
|
-
|
|
187
|
+
W.value = t;
|
|
184
188
|
},
|
|
185
|
-
onMouseEnter: () =>
|
|
189
|
+
onMouseEnter: () => j?.(t),
|
|
186
190
|
children: t.getUTCDate()
|
|
187
191
|
})
|
|
188
192
|
}, n);
|
|
@@ -192,4 +196,4 @@ function v({ value: f, defaultValue: v, onValueChange: y, min: b, max: x, disabl
|
|
|
192
196
|
});
|
|
193
197
|
}
|
|
194
198
|
//#endregion
|
|
195
|
-
export {
|
|
199
|
+
export { y as Calendar };
|
package/dist/card/card.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer cascivo.component{.
|
|
1
|
+
@layer cascivo.component{._card_ipz9f_2{background-color:var(--cascivo-color-surface);border-radius:var(--cascivo-radius-surface);padding:var(--_card-p,0);position:relative;overflow:hidden}._card_ipz9f_2:has(>._header_ipz9f_19,>._content_ipz9f_19,>._footer_ipz9f_19){padding:0}._card_ipz9f_2[data-padding=none]{--_card-p:0}._card_ipz9f_2[data-padding=sm]{--_card-p:var(--cascivo-space-4);--_card-inner-p:var(--cascivo-space-4)}._card_ipz9f_2[data-padding=md]{--_card-p:var(--cascivo-space-6);--_card-inner-p:var(--cascivo-space-6)}._card_ipz9f_2[data-padding=lg]{--_card-p:var(--cascivo-space-8);--_card-inner-p:var(--cascivo-space-8)}._card_ipz9f_2[data-variant=default]{border:1px solid var(--cascivo-color-border)}._card_ipz9f_2[data-variant=outlined]{border:1.5px solid var(--cascivo-color-border-strong)}._card_ipz9f_2[data-variant=elevated]{box-shadow:var(--cascivo-shadow-md);border:none}._header_ipz9f_19{padding:var(--_card-inner-p,var(--cascivo-space-6));gap:var(--cascivo-space-1);flex-direction:column;min-inline-size:0;padding-block-end:0;display:flex}._headerRow_ipz9f_74{justify-content:space-between;align-items:flex-start;gap:var(--cascivo-space-3);flex-direction:row}._headerRow_ipz9f_74 ._headerMain_ipz9f_82{gap:var(--cascivo-space-1);flex-direction:column;min-inline-size:0;display:flex}._headerRow_ipz9f_74 ._headerActions_ipz9f_89{align-items:center;gap:var(--cascivo-space-1);flex-shrink:0;display:flex}._title_ipz9f_97{font-family:var(--cascivo-font-sans);font-size:var(--cascivo-text-lg);font-weight:var(--cascivo-font-semibold);color:var(--cascivo-color-text);line-height:var(--cascivo-leading-tight);margin:0}._content_ipz9f_19{padding:var(--_card-inner-p,var(--cascivo-space-6));color:var(--cascivo-color-text-subtle);font-family:var(--cascivo-font-sans);font-size:var(--cascivo-text-sm);line-height:var(--cascivo-leading-relaxed)}._footer_ipz9f_19{padding:var(--_card-inner-p,var(--cascivo-space-6));align-items:center;gap:var(--cascivo-space-2);min-inline-size:0;padding-block-start:0;display:flex}._footer_ipz9f_19>*{min-inline-size:0}}
|
package/dist/card/card.module.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import './card.css';
|
|
2
2
|
var e = {
|
|
3
|
-
card: "
|
|
4
|
-
header: "
|
|
5
|
-
content: "
|
|
6
|
-
footer: "
|
|
7
|
-
headerRow: "
|
|
8
|
-
headerMain: "
|
|
9
|
-
headerActions: "
|
|
10
|
-
title: "
|
|
3
|
+
card: "_card_ipz9f_2",
|
|
4
|
+
header: "_header_ipz9f_19",
|
|
5
|
+
content: "_content_ipz9f_19",
|
|
6
|
+
footer: "_footer_ipz9f_19",
|
|
7
|
+
headerRow: "_headerRow_ipz9f_74",
|
|
8
|
+
headerMain: "_headerMain_ipz9f_82",
|
|
9
|
+
headerActions: "_headerActions_ipz9f_89",
|
|
10
|
+
title: "_title_ipz9f_97"
|
|
11
11
|
};
|
|
12
12
|
//#endregion
|
|
13
13
|
export { e as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer cascivo.component{.
|
|
1
|
+
@layer cascivo.component{._wrapper_4zlmw_2{align-items:center;gap:var(--cascivo-space-2);font-family:var(--cascivo-font-sans);cursor:pointer;display:inline-flex}._wrapper_4zlmw_2[data-disabled]{opacity:.5;cursor:not-allowed}._input_4zlmw_15{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}._control_4zlmw_28{--_check-color:transparent;pointer-events:none;background-color:var(--cascivo-color-surface);border:1px solid var(--cascivo-color-border-strong);border-radius:var(--cascivo-radius-indicator);block-size:1.125rem;inline-size:1.125rem;transition:background-color var(--cascivo-duration-150) var(--cascivo-ease-out), border-color var(--cascivo-duration-150) var(--cascivo-ease-out), box-shadow var(--cascivo-duration-150) var(--cascivo-ease-out);flex-shrink:0;display:inline-flex}._control_4zlmw_28:after{content:"";background-color:var(--_check-color);block-size:100%;inline-size:100%;-webkit-mask:var(--_check-icon,none) no-repeat center / .75rem;mask:var(--_check-icon,none) no-repeat center / .75rem}._input_4zlmw_15:checked+._control_4zlmw_28,._input_4zlmw_15:indeterminate+._control_4zlmw_28{--_check-color:var(--cascivo-color-text-on-accent);background-color:var(--cascivo-color-accent);border-color:var(--cascivo-color-accent)}._input_4zlmw_15:checked+._control_4zlmw_28{--_check-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8.5l3 3 6-6'/%3E%3C/svg%3E")}._input_4zlmw_15:indeterminate+._control_4zlmw_28{--_check-icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='black' stroke-width='2' stroke-linecap='round' d='M4 8h8'/%3E%3C/svg%3E")}._input_4zlmw_15:focus-visible+._control_4zlmw_28{box-shadow:var(--cascivo-focus-ring);outline:none}._label_4zlmw_78{font-size:var(--cascivo-text-sm);color:var(--cascivo-color-text);line-height:var(--cascivo-leading-snug)}}@media (forced-colors:active){._control_4zlmw_28{background-color:field;border:1px solid buttontext}._input_4zlmw_15:checked+._control_4zlmw_28,._input_4zlmw_15:indeterminate+._control_4zlmw_28{background-color:highlight;border-color:highlight}._input_4zlmw_15:focus-visible+._control_4zlmw_28{outline-offset:2px;outline:2px solid highlight}}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import './checkbox.css';
|
|
2
2
|
var e = {
|
|
3
|
-
wrapper: "
|
|
4
|
-
input: "
|
|
5
|
-
control: "
|
|
6
|
-
label: "
|
|
3
|
+
wrapper: "_wrapper_4zlmw_2",
|
|
4
|
+
input: "_input_4zlmw_15",
|
|
5
|
+
control: "_control_4zlmw_28",
|
|
6
|
+
label: "_label_4zlmw_78"
|
|
7
7
|
};
|
|
8
8
|
//#endregion
|
|
9
9
|
export { e as default };
|