sherick-ui 2.2.0 → 2.4.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 +1 -1
- package/dist/cjs/components/Badge.cjs +1 -1
- package/dist/cjs/components/Badge.cjs.map +1 -1
- package/dist/cjs/components/Button.cjs +11 -2
- package/dist/cjs/components/Button.cjs.map +1 -1
- package/dist/cjs/components/Calendar.cjs +2 -2
- package/dist/cjs/components/Calendar.cjs.map +1 -1
- package/dist/cjs/components/Card.cjs +3 -2
- package/dist/cjs/components/Card.cjs.map +1 -1
- package/dist/cjs/components/Checkbox.cjs +3 -1
- package/dist/cjs/components/Checkbox.cjs.map +1 -1
- package/dist/cjs/components/Chip.cjs +3 -3
- package/dist/cjs/components/Chip.cjs.map +1 -1
- package/dist/cjs/components/Combobox.cjs +1 -1
- package/dist/cjs/components/Combobox.cjs.map +1 -1
- package/dist/cjs/components/Command.cjs +3 -3
- package/dist/cjs/components/Command.cjs.map +1 -1
- package/dist/cjs/components/CommandPalette.cjs +1 -1
- package/dist/cjs/components/CommandPalette.cjs.map +1 -1
- package/dist/cjs/components/DateRangePicker.cjs +1 -1
- package/dist/cjs/components/DateRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DialogHeader.cjs +1 -1
- package/dist/cjs/components/DialogHeader.cjs.map +1 -1
- package/dist/cjs/components/Drawer.cjs +1 -1
- package/dist/cjs/components/Drawer.cjs.map +1 -1
- package/dist/cjs/components/Field.cjs +1 -1
- package/dist/cjs/components/Field.cjs.map +1 -1
- package/dist/cjs/components/FileUpload.cjs +3 -3
- package/dist/cjs/components/FileUpload.cjs.map +1 -1
- package/dist/cjs/components/IconButton.cjs +1 -1
- package/dist/cjs/components/IconButton.cjs.map +1 -1
- package/dist/cjs/components/Input.cjs +1 -1
- package/dist/cjs/components/Input.cjs.map +1 -1
- package/dist/cjs/components/NavItem.cjs +3 -3
- package/dist/cjs/components/NavItem.cjs.map +1 -1
- package/dist/cjs/components/NumberField.cjs +2 -2
- package/dist/cjs/components/NumberField.cjs.map +1 -1
- package/dist/cjs/components/Pagination.cjs +1 -1
- package/dist/cjs/components/Pagination.cjs.map +1 -1
- package/dist/cjs/components/Progress.cjs +7 -4
- package/dist/cjs/components/Progress.cjs.map +1 -1
- package/dist/cjs/components/RadioGroup.cjs +1 -1
- package/dist/cjs/components/RadioGroup.cjs.map +1 -1
- package/dist/cjs/components/Search.cjs +4 -1
- package/dist/cjs/components/Search.cjs.map +1 -1
- package/dist/cjs/components/Select.cjs +1 -1
- package/dist/cjs/components/Select.cjs.map +1 -1
- package/dist/cjs/components/Slider.cjs +1 -1
- package/dist/cjs/components/Slider.cjs.map +1 -1
- package/dist/cjs/components/Stepper.cjs +5 -1
- package/dist/cjs/components/Stepper.cjs.map +1 -1
- package/dist/cjs/components/Table.cjs +1 -1
- package/dist/cjs/components/Table.cjs.map +1 -1
- package/dist/cjs/components/Tabs.cjs +1 -1
- package/dist/cjs/components/Tabs.cjs.map +1 -1
- package/dist/cjs/components/Textarea.cjs +1 -1
- package/dist/cjs/components/Textarea.cjs.map +1 -1
- package/dist/cjs/components/Toast.cjs +5 -2
- package/dist/cjs/components/Toast.cjs.map +1 -1
- package/dist/cjs/components/Tooltip.cjs +1 -1
- package/dist/cjs/components/Tooltip.cjs.map +1 -1
- package/dist/cjs/components/TreeView.cjs +43 -10
- package/dist/cjs/components/TreeView.cjs.map +1 -1
- package/dist/cjs/components/date-field.cjs +2 -2
- package/dist/cjs/components/date-field.cjs.map +1 -1
- package/dist/cjs/components/ui.common.cjs +197 -88
- package/dist/cjs/components/ui.common.cjs.map +1 -1
- package/dist/cjs/components/ui.motion.cjs +43 -14
- package/dist/cjs/components/ui.motion.cjs.map +1 -1
- package/dist/cjs/dev.cjs +10 -0
- package/dist/cjs/dev.cjs.map +1 -1
- package/dist/esm/components/Badge.js +2 -2
- package/dist/esm/components/Badge.js.map +1 -1
- package/dist/esm/components/Button.js +12 -3
- package/dist/esm/components/Button.js.map +1 -1
- package/dist/esm/components/Calendar.js +3 -3
- package/dist/esm/components/Calendar.js.map +1 -1
- package/dist/esm/components/Card.js +4 -3
- package/dist/esm/components/Card.js.map +1 -1
- package/dist/esm/components/Checkbox.js +3 -1
- package/dist/esm/components/Checkbox.js.map +1 -1
- package/dist/esm/components/Chip.js +3 -3
- package/dist/esm/components/Chip.js.map +1 -1
- package/dist/esm/components/CodeBlock.js +5 -4
- package/dist/esm/components/CodeBlock.js.map +1 -1
- package/dist/esm/components/Combobox.js +3 -3
- package/dist/esm/components/Combobox.js.map +1 -1
- package/dist/esm/components/Command.js +4 -4
- package/dist/esm/components/Command.js.map +1 -1
- package/dist/esm/components/CommandPalette.js +2 -2
- package/dist/esm/components/CommandPalette.js.map +1 -1
- package/dist/esm/components/DateRangePicker.js +2 -2
- package/dist/esm/components/DateRangePicker.js.map +1 -1
- package/dist/esm/components/DialogHeader.js +2 -2
- package/dist/esm/components/DialogHeader.js.map +1 -1
- package/dist/esm/components/Drawer.js +2 -2
- package/dist/esm/components/Drawer.js.map +1 -1
- package/dist/esm/components/Field.js +2 -2
- package/dist/esm/components/Field.js.map +1 -1
- package/dist/esm/components/FileUpload.js +4 -4
- package/dist/esm/components/FileUpload.js.map +1 -1
- package/dist/esm/components/IconButton.js +1 -1
- package/dist/esm/components/IconButton.js.map +1 -1
- package/dist/esm/components/Input.js +2 -2
- package/dist/esm/components/Input.js.map +1 -1
- package/dist/esm/components/Markdown.js +3 -2
- package/dist/esm/components/Markdown.js.map +1 -1
- package/dist/esm/components/NavItem.js +5 -5
- package/dist/esm/components/NavItem.js.map +1 -1
- package/dist/esm/components/NumberField.js +3 -3
- package/dist/esm/components/NumberField.js.map +1 -1
- package/dist/esm/components/Pagination.js +2 -2
- package/dist/esm/components/Pagination.js.map +1 -1
- package/dist/esm/components/Progress.js +8 -5
- package/dist/esm/components/Progress.js.map +1 -1
- package/dist/esm/components/RadioGroup.js +2 -2
- package/dist/esm/components/RadioGroup.js.map +1 -1
- package/dist/esm/components/Search.js +5 -2
- package/dist/esm/components/Search.js.map +1 -1
- package/dist/esm/components/Select.js +3 -3
- package/dist/esm/components/Select.js.map +1 -1
- package/dist/esm/components/Slider.js +1 -1
- package/dist/esm/components/Slider.js.map +1 -1
- package/dist/esm/components/Stepper.js +6 -2
- package/dist/esm/components/Stepper.js.map +1 -1
- package/dist/esm/components/Table.js +2 -2
- package/dist/esm/components/Table.js.map +1 -1
- package/dist/esm/components/Tabs.js +2 -2
- package/dist/esm/components/Tabs.js.map +1 -1
- package/dist/esm/components/Textarea.js +2 -2
- package/dist/esm/components/Textarea.js.map +1 -1
- package/dist/esm/components/Toast.js +6 -3
- package/dist/esm/components/Toast.js.map +1 -1
- package/dist/esm/components/Tooltip.js +2 -2
- package/dist/esm/components/Tooltip.js.map +1 -1
- package/dist/esm/components/TreeView.js +45 -12
- package/dist/esm/components/TreeView.js.map +1 -1
- package/dist/esm/components/date-field.js +3 -3
- package/dist/esm/components/date-field.js.map +1 -1
- package/dist/esm/components/ui.common.js +194 -90
- package/dist/esm/components/ui.common.js.map +1 -1
- package/dist/esm/components/ui.motion.js +39 -15
- package/dist/esm/components/ui.motion.js.map +1 -1
- package/dist/esm/dev.js +2 -2
- package/dist/styles.css +339 -110
- package/dist/theme.css +40 -7
- package/dist/types/dev.d.cts +88 -56
- package/dist/types/dev.d.ts +88 -56
- package/package.json +1 -1
package/dist/cjs/dev.cjs
CHANGED
|
@@ -6,6 +6,7 @@ var utils = require('./libs/utils.cjs');
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
exports.currentDestination = ui_common.currentDestination;
|
|
9
10
|
exports.density = ui_common.density;
|
|
10
11
|
exports.detail = ui_common.detail;
|
|
11
12
|
exports.disclosure = ui_common.disclosure;
|
|
@@ -13,6 +14,7 @@ exports.edge = ui_common.edge;
|
|
|
13
14
|
exports.edgeTone = ui_common.edgeTone;
|
|
14
15
|
exports.elevation = ui_common.elevation;
|
|
15
16
|
exports.fieldLayout = ui_common.fieldLayout;
|
|
17
|
+
exports.fieldMessage = ui_common.fieldMessage;
|
|
16
18
|
exports.focusRing = ui_common.focusRing;
|
|
17
19
|
exports.focusRingDrag = ui_common.focusRingDrag;
|
|
18
20
|
exports.focusRingHeld = ui_common.focusRingHeld;
|
|
@@ -20,6 +22,7 @@ exports.focusRingInset = ui_common.focusRingInset;
|
|
|
20
22
|
exports.focusRingWithin = ui_common.focusRingWithin;
|
|
21
23
|
exports.groupFocusRing = ui_common.groupFocusRing;
|
|
22
24
|
exports.hitArea = ui_common.hitArea;
|
|
25
|
+
exports.iconSlot = ui_common.iconSlot;
|
|
23
26
|
exports.list = ui_common.list;
|
|
24
27
|
exports.material = ui_common.material;
|
|
25
28
|
exports.matteInset = ui_common.matteInset;
|
|
@@ -28,6 +31,7 @@ exports.overlay = ui_common.overlay;
|
|
|
28
31
|
exports.parentFocusRingInset = ui_common.parentFocusRingInset;
|
|
29
32
|
exports.recessedTop = ui_common.recessedTop;
|
|
30
33
|
exports.recipeAlphas = ui_common.recipeAlphas;
|
|
34
|
+
exports.rim = ui_common.rim;
|
|
31
35
|
exports.selectable = ui_common.selectable;
|
|
32
36
|
exports.selectableRowSurface = ui_common.selectableRowSurface;
|
|
33
37
|
exports.shape = ui_common.shape;
|
|
@@ -37,6 +41,7 @@ exports.stateLayer = ui_common.stateLayer;
|
|
|
37
41
|
exports.stateLayerQuietComposite = ui_common.stateLayerQuietComposite;
|
|
38
42
|
exports.text = ui_common.text;
|
|
39
43
|
exports.tone = ui_common.tone;
|
|
44
|
+
exports.type = ui_common.type;
|
|
40
45
|
exports.motionActivityIndeterminate = ui_motion.motionActivityIndeterminate;
|
|
41
46
|
exports.motionActivityPulse = ui_motion.motionActivityPulse;
|
|
42
47
|
exports.motionActivitySpin = ui_motion.motionActivitySpin;
|
|
@@ -53,7 +58,12 @@ exports.motionPresenceSheet = ui_motion.motionPresenceSheet;
|
|
|
53
58
|
exports.motionPresenceToast = ui_motion.motionPresenceToast;
|
|
54
59
|
exports.motionPresenceTooltip = ui_motion.motionPresenceTooltip;
|
|
55
60
|
exports.motionRelocate = ui_motion.motionRelocate;
|
|
61
|
+
exports.motionRelocateLong = ui_motion.motionRelocateLong;
|
|
62
|
+
exports.motionRim = ui_motion.motionRim;
|
|
63
|
+
exports.motionRowLayer = ui_motion.motionRowLayer;
|
|
56
64
|
exports.motionStateLayer = ui_motion.motionStateLayer;
|
|
57
65
|
exports.motionTactile = ui_motion.motionTactile;
|
|
66
|
+
exports.motionTactileField = ui_motion.motionTactileField;
|
|
67
|
+
exports.motionTactileWide = ui_motion.motionTactileWide;
|
|
58
68
|
exports.cn = utils.cn;
|
|
59
69
|
//# sourceMappingURL=dev.cjs.map
|
package/dist/cjs/dev.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { cn } from '../libs/utils.js';
|
|
3
|
-
import { tone, text, shape } from './ui.common.js';
|
|
3
|
+
import { tone, text, shape, type } from './ui.common.js';
|
|
4
4
|
|
|
5
5
|
const Badge = ({ children, variant = "primary", icon, className, ...props }) => {
|
|
6
|
-
return (jsxs("span", { ...props, className: cn("inline-flex min-h-7 min-w-0 max-w-full items-center justify-center gap-1.5 px-3 py-1
|
|
6
|
+
return (jsxs("span", { ...props, className: cn("inline-flex min-h-7 min-w-0 max-w-full items-center justify-center gap-1.5 px-3 py-1 font-semibold", type.caption, shape.pill, tone.soft[variant], text.high, className), children: [icon && (jsx("span", { className: cn("inline-flex size-3.5 shrink-0 items-center justify-center [&>svg]:size-3.5", tone.text[variant]), "aria-hidden": "true", children: icon })), jsx("span", { className: cn("min-w-0 truncate"), children: children })] }));
|
|
7
7
|
};
|
|
8
8
|
|
|
9
9
|
export { Badge as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.js","sources":["../../../src/components/Badge.tsx"],"sourcesContent":["import React, { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"@/libs/utils\";\nimport { shape, text, tone } from \"./ui.common\";\nimport { Variant } from \"./ui.types\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n variant?: Variant;\n icon?: ReactNode;\n}\n\nconst Badge = ({\n children,\n variant = \"primary\",\n icon,\n className,\n ...props\n}: BadgeProps) => {\n return (\n <span\n {...props}\n className={cn(\n \"inline-flex min-h-7 min-w-0 max-w-full items-center justify-center gap-1.5 px-3 py-1
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../../src/components/Badge.tsx"],"sourcesContent":["import React, { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"@/libs/utils\";\nimport { shape, text, tone, type } from \"./ui.common\";\nimport { Variant } from \"./ui.types\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n variant?: Variant;\n icon?: ReactNode;\n}\n\nconst Badge = ({\n children,\n variant = \"primary\",\n icon,\n className,\n ...props\n}: BadgeProps) => {\n return (\n <span\n {...props}\n className={cn(\n \"inline-flex min-h-7 min-w-0 max-w-full items-center justify-center gap-1.5 px-3 py-1 font-semibold\",\n type.caption,\n shape.pill,\n tone.soft[variant],\n text.high,\n className\n )}\n >\n {/* A badge gives its leading mark one predictable slot: 14px, held at that size whatever artwork\n a caller hands in, with the box — not the artwork's own whitespace — aligned to the label. */}\n {icon && (\n <span className={cn(\"inline-flex size-3.5 shrink-0 items-center justify-center [&>svg]:size-3.5\", tone.text[variant])} aria-hidden=\"true\">\n {icon}\n </span>\n )}\n <span className={cn(\"min-w-0 truncate\")}>{children}</span>\n </span>\n );\n};\n\nexport default Badge;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;AAWA,MAAM,KAAK,GAAG,CAAC,EACb,QAAQ,EACR,OAAO,GAAG,SAAS,EACnB,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACG,KAAI;AACf,IAAA,QACEA,IAAA,CAAA,MAAA,EAAA,EAAA,GACM,KAAK,EACT,SAAS,EAAE,EAAE,CACX,oGAAoG,EACpG,IAAI,CAAC,OAAO,EACZ,KAAK,CAAC,IAAI,EACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAClB,IAAI,CAAC,IAAI,EACT,SAAS,CACV,aAIA,IAAI,KACHC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAE,CAAC,4EAA4E,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAc,MAAM,EAAA,QAAA,EACtI,IAAI,EAAA,CACA,CACR,EACDA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ,CAAA,EAAA,CACrD;AAEX;;"}
|
|
@@ -3,10 +3,16 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
import { Button as Button$1 } from '@base-ui/react/button';
|
|
4
4
|
import { forwardRef } from 'react';
|
|
5
5
|
import { cn } from '../libs/utils.js';
|
|
6
|
-
import { state, elevation, stateLayer, tone, focusRing, density, shape } from './ui.common.js';
|
|
6
|
+
import { iconSlot, state, elevation, stateLayer, tone, focusRing, density, shape } from './ui.common.js';
|
|
7
7
|
import { motionTactile } from './ui.motion.js';
|
|
8
8
|
import { Spinner } from './Spinner.js';
|
|
9
9
|
|
|
10
|
+
/* The mark follows the type step beside it (§10): a compact label takes the compact slot. */
|
|
11
|
+
const slotMap = {
|
|
12
|
+
sm: iconSlot.compact,
|
|
13
|
+
md: iconSlot.normal,
|
|
14
|
+
lg: iconSlot.prominent,
|
|
15
|
+
};
|
|
10
16
|
const sizeMap = {
|
|
11
17
|
sm: `${density.compact} px-4 py-2`,
|
|
12
18
|
md: `${density.normal} px-6 py-3`,
|
|
@@ -14,8 +20,11 @@ const sizeMap = {
|
|
|
14
20
|
};
|
|
15
21
|
const Button = forwardRef(({ children, variant = "primary", appearance = "tonal", size = "md", icon, className, loading = false, disabled, type = "button", ...props }, ref) => {
|
|
16
22
|
const isDisabled = disabled || loading;
|
|
17
|
-
|
|
18
|
-
|
|
23
|
+
/* The action ladder: text sits flat, tonal and filled are raised and recess while held. The
|
|
24
|
+
priority action is never flatter than the one beside it. */
|
|
25
|
+
const isRaised = appearance !== "text";
|
|
26
|
+
const isTactile = isRaised && !isDisabled;
|
|
27
|
+
return (jsxs(Button$1, { ...props, render: jsx("button", { ref: ref }), type: type, disabled: isDisabled, "aria-busy": loading || undefined, className: cn("relative inline-flex min-w-0 max-w-full items-center justify-center gap-2 font-medium tracking-[-0.01em]", shape.pill, sizeMap[size], motionTactile, focusRing, appearance === "filled" && tone.strong[variant], appearance === "filled" && !isDisabled && stateLayer.filled, appearance === "tonal" && tone.tonal[variant], appearance === "tonal" && tone.text[variant], appearance === "tonal" && !isDisabled && (variant === "secondary" ? stateLayer.tonalNeutral : stateLayer.tonal), appearance === "text" && tone.text[variant], appearance === "text" && !isDisabled && stateLayer.quiet, isRaised && elevation.raised, isTactile && state.recess, isDisabled ? state.disabled : state.enabled, className), children: [loading ? (jsx("span", { className: cn(slotMap[size], !icon && "absolute"), children: jsx(Spinner, { size: "small", className: cn("size-full") }) })) : icon ? (jsx("span", { className: cn(slotMap[size]), "aria-hidden": "true", children: icon })) : null, jsx("span", { className: cn("min-w-0 [overflow-wrap:anywhere]", loading && !icon && "opacity-0"), children: children })] }));
|
|
19
28
|
});
|
|
20
29
|
Button.displayName = "Button";
|
|
21
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../src/components/Button.tsx"],"sourcesContent":["\"use client\";\n\nimport { Button as BaseButton } from \"@base-ui/react/button\";\nimport React, { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"@/libs/utils\";\nimport {\n density,\n elevation,\n focusRing,\n shape,\n state,\n stateLayer,\n tone,\n} from \"./ui.common\";\nimport { motionTactile } from \"./ui.motion\";\nimport { Variant } from \"./ui.types\";\nimport { Spinner } from \"./Spinner\";\n\nexport type ButtonAppearance = \"filled\" | \"tonal\" | \"text\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: ReactNode;\n variant?: Variant;\n appearance?: ButtonAppearance;\n size?: ButtonSize;\n icon?: ReactNode;\n loading?: boolean;\n}\n\nconst sizeMap: Record<ButtonSize, string> = {\n sm: `${density.compact} px-4 py-2`,\n md: `${density.normal} px-6 py-3`,\n lg: `${density.prominent} px-8 py-4`,\n};\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n children,\n variant = \"primary\",\n appearance = \"tonal\",\n size = \"md\",\n icon,\n className,\n loading = false,\n disabled,\n type = \"button\",\n ...props\n }, ref) => {\n const isDisabled = disabled || loading;\n const isTactile = appearance === \"tonal\" && !isDisabled;\n\n return (\n <BaseButton\n {...props}\n render={<button ref={ref} />}\n type={type}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={cn(\n \"relative inline-flex min-w-0 max-w-full items-center justify-center gap-2 font-medium tracking-[-0.01em]\",\n shape.pill,\n sizeMap[size],\n motionTactile,\n focusRing,\n appearance === \"filled\" && tone.strong[variant],\n appearance === \"filled\" && !isDisabled && stateLayer.filled,\n appearance === \"tonal\" && tone.tonal[variant],\n appearance === \"tonal\" && tone.text[variant],\n appearance === \"tonal\" && !isDisabled && stateLayer.tonal,\n appearance === \"text\" && tone.text[variant],\n appearance === \"text\" && !isDisabled && stateLayer.quiet,\n appearance === \"tonal\" && elevation.raised,\n isTactile && state.recess,\n isDisabled ? state.disabled : state.enabled,\n className\n )}\n >\n {/* A mark occupies one slot whatever is inside it. The slot is a fixed 20px box, so a nested\n node — a wrapped mark, a status dot — cannot change the control's width, and the loading\n mark lands in the box the icon had. `[&>svg]` normalizes direct SVG artwork; sizing nested\n artwork is the caller's business, as §17 says. */}\n {loading ? (\n <span className={cn(\"inline-flex size-5 shrink-0 items-center justify-center\", !icon && \"absolute\")}>\n <Spinner size=\"small\" className={cn(\"size-5\")} />\n </span>\n ) : icon ? (\n <span className={cn(\"inline-flex size-5 shrink-0 items-center justify-center [&>svg]:size-5\")} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n {/* Retain one label subtree and its accessible name while the spinner occupies its footprint. */}\n <span className={cn(\"min-w-0 [overflow-wrap:anywhere]\", loading && !icon && \"opacity-0\")}>{children}</span>\n </BaseButton>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n"],"names":["_jsxs","BaseButton","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../src/components/Button.tsx"],"sourcesContent":["\"use client\";\n\nimport { Button as BaseButton } from \"@base-ui/react/button\";\nimport React, { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { cn } from \"@/libs/utils\";\nimport {\n density,\n elevation,\n focusRing,\n iconSlot,\n shape,\n state,\n stateLayer,\n tone,\n} from \"./ui.common\";\nimport { motionTactile } from \"./ui.motion\";\nimport { Variant } from \"./ui.types\";\nimport { Spinner } from \"./Spinner\";\n\nexport type ButtonAppearance = \"filled\" | \"tonal\" | \"text\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n children: ReactNode;\n variant?: Variant;\n appearance?: ButtonAppearance;\n size?: ButtonSize;\n icon?: ReactNode;\n loading?: boolean;\n}\n\n/* The mark follows the type step beside it (§10): a compact label takes the compact slot. */\nconst slotMap: Record<ButtonSize, string> = {\n sm: iconSlot.compact,\n md: iconSlot.normal,\n lg: iconSlot.prominent,\n};\n\nconst sizeMap: Record<ButtonSize, string> = {\n sm: `${density.compact} px-4 py-2`,\n md: `${density.normal} px-6 py-3`,\n lg: `${density.prominent} px-8 py-4`,\n};\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({\n children,\n variant = \"primary\",\n appearance = \"tonal\",\n size = \"md\",\n icon,\n className,\n loading = false,\n disabled,\n type = \"button\",\n ...props\n }, ref) => {\n const isDisabled = disabled || loading;\n /* The action ladder: text sits flat, tonal and filled are raised and recess while held. The\n priority action is never flatter than the one beside it. */\n const isRaised = appearance !== \"text\";\n const isTactile = isRaised && !isDisabled;\n\n return (\n <BaseButton\n {...props}\n render={<button ref={ref} />}\n type={type}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={cn(\n \"relative inline-flex min-w-0 max-w-full items-center justify-center gap-2 font-medium tracking-[-0.01em]\",\n shape.pill,\n sizeMap[size],\n motionTactile,\n focusRing,\n appearance === \"filled\" && tone.strong[variant],\n appearance === \"filled\" && !isDisabled && stateLayer.filled,\n appearance === \"tonal\" && tone.tonal[variant],\n appearance === \"tonal\" && tone.text[variant],\n appearance === \"tonal\" && !isDisabled && (variant === \"secondary\" ? stateLayer.tonalNeutral : stateLayer.tonal),\n appearance === \"text\" && tone.text[variant],\n appearance === \"text\" && !isDisabled && stateLayer.quiet,\n isRaised && elevation.raised,\n isTactile && state.recess,\n isDisabled ? state.disabled : state.enabled,\n className\n )}\n >\n {/* A mark occupies one slot whatever is inside it. The slot is a fixed box sized by the\n button's type step, so a nested node — a wrapped mark, a status dot — cannot change the\n control's width, and the loading mark lands in the box the icon had. `[&>svg]` normalizes\n direct SVG artwork; sizing nested artwork is the caller's business, as §17 says. */}\n {loading ? (\n <span className={cn(slotMap[size], !icon && \"absolute\")}>\n <Spinner size=\"small\" className={cn(\"size-full\")} />\n </span>\n ) : icon ? (\n <span className={cn(slotMap[size])} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n {/* Retain one label subtree and its accessible name while the spinner occupies its footprint. */}\n <span className={cn(\"min-w-0 [overflow-wrap:anywhere]\", loading && !icon && \"opacity-0\")}>{children}</span>\n </BaseButton>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n"],"names":["_jsxs","BaseButton","_jsx"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { useDirection } from '@base-ui/react/direction-provider';
|
|
|
4
4
|
import { ArrowLeft, ArrowRight } from 'lucide-react';
|
|
5
5
|
import { forwardRef, useMemo, useCallback, useState, useRef, useEffect, useId } from 'react';
|
|
6
6
|
import { cn } from '../libs/utils.js';
|
|
7
|
-
import { state, density, shape, text, focusRingInset, stateLayer, tone, elevation } from './ui.common.js';
|
|
7
|
+
import { state, density, shape, text, focusRingInset, stateLayer, type, tone, elevation } from './ui.common.js';
|
|
8
8
|
import { motionInkPress, motionFeedback, motionTactile } from './ui.motion.js';
|
|
9
9
|
import { resolveCalendarLabels, createCalendarFormat, normalizeCalendarDate, todayCalendarDate, parseCalendarDate, normalizeDateRange, daysInMonth, dayOfWeek, toCalendarDate, compareCalendarDates, rangeIncludesDate, addCalendarMonths, addCalendarDays } from './date-family.js';
|
|
10
10
|
|
|
@@ -262,7 +262,7 @@ const Calendar = forwardRef((props, ref) => {
|
|
|
262
262
|
}
|
|
263
263
|
}, className: cn("w-full table-fixed border-separate border-spacing-0"), children: [jsx("thead", { children: jsx("tr", { children: Array.from({ length: 7 }, (_, index) => {
|
|
264
264
|
const name = format.weekdayNames[(index + weekStartsOn) % 7];
|
|
265
|
-
return (jsxs("th", { scope: "col", abbr: name.long, className: cn("h-8 px-0 text-center
|
|
265
|
+
return (jsxs("th", { scope: "col", abbr: name.long, className: cn("h-8 px-0 text-center font-medium", type.caption, text.medium), children: [jsx("span", { "aria-hidden": "true", children: name.short }), jsx("span", { className: cn("sr-only"), children: name.long })] }, name.long));
|
|
266
266
|
}) }) }), jsx("tbody", { children: rows.map((row, rowIndex) => (jsx("tr", { children: row.map((day, columnIndex) => {
|
|
267
267
|
if (day === null) {
|
|
268
268
|
return (jsx("td", { role: "gridcell", className: cn("p-0 text-center align-middle") }, `blank-${rowIndex}-${columnIndex}`));
|
|
@@ -286,7 +286,7 @@ const Calendar = forwardRef((props, ref) => {
|
|
|
286
286
|
if (day !== activeDayState)
|
|
287
287
|
setActiveDayState(day);
|
|
288
288
|
}, className: cn(dayButtonClassName, text.high, isToday && `${tone.text.primary} underline underline-offset-4`, selected && isEdge && "font-medium", selected && !joinedRange && cn(invalid ? tone.selected.danger : tone.selected.primary, elevation.control), !disabled && !unavailable && `${stateLayer.quiet} ${state.enabled}`, unavailable && !disabled && state.disabled, disabled && state.disabledDescendant), children: format.formatDayNumber(day) })] }, date));
|
|
289
|
-
}) }, rowIndex))) })] }), jsxs("div", { className: cn("mt-3 flex items-center justify-between gap-3"), children: [jsx("button", { type: "button", disabled: disabled, onClick: goToToday, className: cn(todayButtonClassName, disabled ? state.disabledDescendant : state.enabled), children: labels.today }), jsx("div", { role: "status", className: cn("min-w-0
|
|
289
|
+
}) }, rowIndex))) })] }), jsxs("div", { className: cn("mt-3 flex items-center justify-between gap-3"), children: [jsx("button", { type: "button", disabled: disabled, onClick: goToToday, className: cn(todayButtonClassName, disabled ? state.disabledDescendant : state.enabled), children: labels.today }), jsx("div", { role: "status", className: cn("min-w-0", type.supporting, tone.text.danger), children: rangeMessage !== null && rangeMessage !== void 0 ? rangeMessage : "" })] }), jsx("p", { id: hintId, className: cn("sr-only"), children: isRange ? labels.selectRange : labels.selectDate })] }));
|
|
290
290
|
});
|
|
291
291
|
Calendar.displayName = "Calendar";
|
|
292
292
|
|