@urbicon-ui/blocks 6.37.1 → 6.38.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.
Files changed (60) hide show
  1. package/dist/components/AvatarGroup/AvatarGroup.svelte +60 -0
  2. package/dist/components/AvatarGroup/AvatarGroup.svelte.d.ts +4 -0
  3. package/dist/components/AvatarGroup/avatar-group.variants.d.ts +20 -0
  4. package/dist/components/AvatarGroup/avatar-group.variants.js +21 -0
  5. package/dist/components/AvatarGroup/index.d.ts +57 -0
  6. package/dist/components/AvatarGroup/index.js +2 -0
  7. package/dist/components/Calendar/calendar.variants.d.ts +126 -126
  8. package/dist/components/CopyButton/CopyButton.svelte +139 -0
  9. package/dist/components/CopyButton/CopyButton.svelte.d.ts +4 -0
  10. package/dist/components/CopyButton/copy-button.variants.d.ts +29 -0
  11. package/dist/components/CopyButton/copy-button.variants.js +32 -0
  12. package/dist/components/CopyButton/index.d.ts +55 -0
  13. package/dist/components/CopyButton/index.js +2 -0
  14. package/dist/components/FileUpload/FileUpload.svelte.d.ts +1 -1
  15. package/dist/components/PinInput/pin-input.variants.d.ts +7 -7
  16. package/dist/components/PinInput/pin-input.variants.js +25 -29
  17. package/dist/components/Planner/planner.variants.d.ts +34 -34
  18. package/dist/components/TimeInput/time-input.variants.d.ts +9 -9
  19. package/dist/components/TimeInput/time-input.variants.js +24 -21
  20. package/dist/components/index.d.ts +4 -0
  21. package/dist/components/index.js +2 -0
  22. package/dist/i18n/index.d.ts +6 -390
  23. package/dist/internal/field-chrome.d.ts +87 -0
  24. package/dist/internal/field-chrome.js +81 -0
  25. package/dist/primitives/Accordion/accordion.variants.d.ts +7 -7
  26. package/dist/primitives/Alert/alert.variants.d.ts +8 -8
  27. package/dist/primitives/Avatar/avatar.variants.d.ts +12 -12
  28. package/dist/primitives/Badge/badge.variants.d.ts +10 -10
  29. package/dist/primitives/Button/button.variants.d.ts +4 -4
  30. package/dist/primitives/Card/card.variants.d.ts +5 -5
  31. package/dist/primitives/Checkbox/checkbox.variants.d.ts +7 -7
  32. package/dist/primitives/Collapsible/collapsible.variants.d.ts +6 -6
  33. package/dist/primitives/Combobox/combobox.variants.d.ts +50 -50
  34. package/dist/primitives/Input/input.variants.d.ts +27 -27
  35. package/dist/primitives/Input/input.variants.js +24 -19
  36. package/dist/primitives/JourneyTimeline/journey-timeline.variants.d.ts +22 -22
  37. package/dist/primitives/Kbd/Kbd.svelte +44 -0
  38. package/dist/primitives/Kbd/Kbd.svelte.d.ts +4 -0
  39. package/dist/primitives/Kbd/index.d.ts +51 -0
  40. package/dist/primitives/Kbd/index.js +2 -0
  41. package/dist/primitives/Kbd/kbd.variants.d.ts +20 -0
  42. package/dist/primitives/Kbd/kbd.variants.js +27 -0
  43. package/dist/primitives/Progress/progress.variants.d.ts +11 -11
  44. package/dist/primitives/RadioGroup/radioGroup.variants.d.ts +6 -6
  45. package/dist/primitives/Select/select.variants.d.ts +34 -34
  46. package/dist/primitives/Skeleton/skeleton.variants.d.ts +3 -3
  47. package/dist/primitives/Spinner/spinner.variants.d.ts +48 -48
  48. package/dist/primitives/Stepper/stepper.variants.d.ts +11 -11
  49. package/dist/primitives/Textarea/textarea.variants.d.ts +21 -21
  50. package/dist/primitives/Toast/toast.variants.d.ts +12 -12
  51. package/dist/primitives/Toggle/toggle.variants.d.ts +7 -7
  52. package/dist/primitives/Toolbar/toolbar.variants.d.ts +6 -6
  53. package/dist/primitives/Tooltip/tooltip.variants.d.ts +3 -3
  54. package/dist/primitives/index.d.ts +2 -0
  55. package/dist/primitives/index.js +1 -0
  56. package/dist/translations/de.d.ts +4 -0
  57. package/dist/translations/de.js +4 -0
  58. package/dist/translations/en.d.ts +4 -0
  59. package/dist/translations/en.js +4 -0
  60. package/package.json +3 -3
@@ -0,0 +1,139 @@
1
+ <script lang="ts">
2
+ import { useBlocksI18n } from '../..';
3
+ import { resolveIcon } from '../../icons';
4
+ import CheckIconDefault from '../../icons/CheckIcon.svelte';
5
+ import CopyIconDefault from '../../icons/CopyIcon.svelte';
6
+ import { Button } from '../../primitives/Button';
7
+ import { getBlocksConfig, resolveSlotClasses } from '../../provider';
8
+ import { copyButtonVariants } from './copy-button.variants';
9
+ import type { CopyButtonProps } from './index';
10
+
11
+ const CopyIcon = resolveIcon('copy', CopyIconDefault);
12
+ const CheckIcon = resolveIcon('check', CheckIconDefault);
13
+
14
+ let {
15
+ value,
16
+ label,
17
+ copiedLabel,
18
+ timeout = 2000,
19
+ variant = 'ghost',
20
+ intent = 'neutral',
21
+ size = 'md',
22
+ tier,
23
+ disabled = false,
24
+ hideIcon = false,
25
+ onCopy,
26
+ onError,
27
+ class: className = '',
28
+ unstyled: unstyledProp = false,
29
+ slotClasses: slotClassesProp = {},
30
+ preset,
31
+ // a11y attributes the component owns and merges consumer intent into (below),
32
+ // pulled out of restProps so the component's state wiring can't be clobbered.
33
+ 'aria-label': ariaLabelProp,
34
+ title: titleProp,
35
+ ...restProps
36
+ }: CopyButtonProps = $props();
37
+
38
+ const bt = useBlocksI18n();
39
+
40
+ const blocksConfig = getBlocksConfig();
41
+ const unstyled = $derived(unstyledProp || blocksConfig?.unstyled || false);
42
+
43
+ let state = $state<'idle' | 'copied' | 'error'>('idle');
44
+ let timer: ReturnType<typeof setTimeout> | undefined;
45
+
46
+ const copyText = $derived(label ?? bt('accessibility.copy'));
47
+ const copiedText = $derived(copiedLabel ?? bt('accessibility.copied'));
48
+ const failedText = $derived(bt('accessibility.copyFailed'));
49
+ const stateText = $derived(
50
+ state === 'copied' ? copiedText : state === 'error' ? failedText : copyText
51
+ );
52
+ // Real text in a polite live region — the reliable way to announce the outcome
53
+ // in icon-only mode (an aria-label change is not announced by aria-live).
54
+ const announcement = $derived(
55
+ state === 'copied' ? copiedText : state === 'error' ? failedText : ''
56
+ );
57
+
58
+ const effectiveIntent = $derived(
59
+ state === 'copied' ? 'success' : state === 'error' ? 'danger' : intent
60
+ );
61
+
62
+ const styles = $derived(unstyled ? null : copyButtonVariants({ size, state }));
63
+ const slotClasses = $derived(
64
+ resolveSlotClasses(
65
+ blocksConfig,
66
+ 'CopyButton',
67
+ preset,
68
+ { size, state, variant, intent },
69
+ slotClassesProp
70
+ )
71
+ );
72
+
73
+ const buttonClass = $derived(
74
+ [styles?.base(), slotClasses?.base, className].filter(Boolean).join(' ') || undefined
75
+ );
76
+ const iconClass = $derived(
77
+ [styles?.icon(), slotClasses?.icon].filter(Boolean).join(' ') || undefined
78
+ );
79
+ const labelClass = $derived(
80
+ [styles?.label(), slotClasses?.label].filter(Boolean).join(' ') || undefined
81
+ );
82
+
83
+ // The visible label reflects state for sighted users (screen readers get the
84
+ // outcome from the live region instead).
85
+ const visibleLabel = $derived(
86
+ state === 'copied' ? copiedText : state === 'error' ? failedText : label
87
+ );
88
+
89
+ // Icon-only mode carries its accessible name on the button (a stable action
90
+ // name; a consumer override stays supplemental). Labelled mode lets the
91
+ // visible text be the name (WCAG 2.5.3), keeping any consumer aria-label.
92
+ const ariaLabel = $derived(label ? ariaLabelProp : (ariaLabelProp ?? copyText));
93
+
94
+ function scheduleReset() {
95
+ clearTimeout(timer);
96
+ if (timeout > 0) timer = setTimeout(() => (state = 'idle'), timeout);
97
+ }
98
+
99
+ async function handleCopy() {
100
+ try {
101
+ if (!navigator.clipboard?.writeText) throw new Error('Clipboard API unavailable');
102
+ await navigator.clipboard.writeText(value);
103
+ state = 'copied';
104
+ onCopy?.(value);
105
+ } catch (error) {
106
+ state = 'error';
107
+ onError?.(error);
108
+ }
109
+ scheduleReset();
110
+ }
111
+
112
+ $effect(() => () => clearTimeout(timer));
113
+ </script>
114
+
115
+ <span class="contents">
116
+ <Button
117
+ {...restProps}
118
+ {variant}
119
+ intent={effectiveIntent}
120
+ {size}
121
+ {tier}
122
+ {disabled}
123
+ {unstyled}
124
+ onclick={handleCopy}
125
+ class={buttonClass}
126
+ aria-label={ariaLabel}
127
+ title={titleProp ?? stateText}
128
+ >
129
+ {#if !hideIcon}
130
+ {#if state === 'copied'}
131
+ <CheckIcon class={iconClass} aria-hidden="true" />
132
+ {:else}
133
+ <CopyIcon class={iconClass} aria-hidden="true" />
134
+ {/if}
135
+ {/if}
136
+ {#if label}<span class={labelClass}>{visibleLabel}</span>{/if}
137
+ </Button>
138
+ <span class="sr-only" role="status">{announcement}</span>
139
+ </span>
@@ -0,0 +1,4 @@
1
+ import type { CopyButtonProps } from './index.js';
2
+ declare const CopyButton: import("svelte").Component<CopyButtonProps, {}, "">;
3
+ type CopyButton = ReturnType<typeof CopyButton>;
4
+ export default CopyButton;
@@ -0,0 +1,29 @@
1
+ import { type SlotNames, type VariantProps } from '../../utils/variants.js';
2
+ export declare const copyButtonVariants: ((props?: {
3
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | undefined;
4
+ state?: "error" | "idle" | "copied" | undefined;
5
+ } | undefined) => {
6
+ base: (props?: ({
7
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | undefined;
8
+ state?: "error" | "idle" | "copied" | undefined;
9
+ } & {
10
+ class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
11
+ }) | undefined) => string;
12
+ icon: (props?: ({
13
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | undefined;
14
+ state?: "error" | "idle" | "copied" | undefined;
15
+ } & {
16
+ class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
17
+ }) | undefined) => string;
18
+ label: (props?: ({
19
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xs" | undefined;
20
+ state?: "error" | "idle" | "copied" | undefined;
21
+ } & {
22
+ class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
23
+ }) | undefined) => string;
24
+ }) & {
25
+ readonly config: import("../../utils/variants.js").TVConfig;
26
+ };
27
+ export type CopyButtonVariants = VariantProps<typeof copyButtonVariants>;
28
+ /** Slot names derived from the `tv()` config above — single source of truth for `slotClasses`. */
29
+ export type CopyButtonSlots = SlotNames<typeof copyButtonVariants>;
@@ -0,0 +1,32 @@
1
+ import { tv } from '../../utils/variants.js';
2
+ // CopyButton is-a Button (it forwards variant/intent/size/tier to the public
3
+ // Button). These variants only size the embedded icon and carry the tiny
4
+ // success micro-interaction — the button chrome itself comes from Button.
5
+ export const copyButtonVariants = tv({
6
+ slots: {
7
+ // Merged onto the underlying Button's `class`. Usually empty; present so
8
+ // consumers get a stable `slotClasses.base` hook and `unstyled` symmetry.
9
+ base: [],
10
+ icon: ['shrink-0 transition-transform duration-[var(--blocks-duration-fast)]'],
11
+ label: ['whitespace-nowrap']
12
+ },
13
+ variants: {
14
+ size: {
15
+ '2xs': { icon: 'size-3' },
16
+ xs: { icon: 'size-3' },
17
+ sm: { icon: 'size-3.5' },
18
+ md: { icon: 'size-4' },
19
+ lg: { icon: 'size-5' },
20
+ xl: { icon: 'size-5' }
21
+ },
22
+ state: {
23
+ idle: {},
24
+ copied: { icon: 'scale-110' },
25
+ error: {}
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ size: 'md',
30
+ state: 'idle'
31
+ }
32
+ });
@@ -0,0 +1,55 @@
1
+ import type { HTMLButtonAttributes } from 'svelte/elements';
2
+ import type { ButtonProps } from '../../primitives/Button/index.js';
3
+ import type { CopyButtonSlots } from './copy-button.variants.js';
4
+ /**
5
+ * @description One-tap copy-to-clipboard button with built-in success feedback (the icon
6
+ * swaps to a check and the intent flips to success for a moment). Icon-only by default;
7
+ * pass `label` for a labelled variant. Forwards `variant`/`intent`/`size`/`tier` to the
8
+ * underlying Button, so it inherits the full button styling vocabulary.
9
+ *
10
+ * @tag action
11
+ * @related Button
12
+ * @related Kbd
13
+ * @related Tooltip
14
+ * @stability beta
15
+ *
16
+ * @example
17
+ * ```svelte
18
+ * <CopyButton value="npm i @urbicon-ui/blocks" />
19
+ * ```
20
+ *
21
+ * @example
22
+ * ```svelte
23
+ * <CopyButton value={apiKey} label="Copy key" variant="outlined" />
24
+ * ```
25
+ */
26
+ export interface CopyButtonProps extends Pick<ButtonProps, 'variant' | 'intent' | 'size' | 'tier' | 'disabled'>, Omit<HTMLButtonAttributes, 'value' | 'onclick' | 'class' | 'disabled'> {
27
+ /** The text written to the clipboard when pressed. */
28
+ value: string;
29
+ /** Optional visible label next to the icon. When omitted the button is icon-only. */
30
+ label?: string;
31
+ /** Visible label shown for `timeout` ms after a successful copy. @default the i18n "Copied" string */
32
+ copiedLabel?: string;
33
+ /** How long the success/error state stays before reverting, in ms. `0` keeps it until the next copy. @default 2000 */
34
+ timeout?: number;
35
+ /** Hide the copy/check icon (label-only). @default false */
36
+ hideIcon?: boolean;
37
+ /** Called with `value` after it is written to the clipboard. */
38
+ onCopy?: (value: string) => void;
39
+ /** Called with the thrown error when the clipboard write fails (permission denied, insecure context, …). */
40
+ onError?: (error: unknown) => void;
41
+ /** Additional CSS class merged onto the underlying Button. */
42
+ class?: string;
43
+ /** Strip all default styles; forwarded to the underlying Button. */
44
+ unstyled?: boolean;
45
+ /** Per-slot class overrides. Slots: base | icon | label */
46
+ slotClasses?: Partial<Record<CopyButtonSlots, string>>;
47
+ /**
48
+ * Apply a named preset registered via `<BlocksProvider presets={{ CopyButton: {...} }}>`.
49
+ * Prefer this over `class` overrides when the requested look falls outside the
50
+ * semantic intent palette — presets keep hover/active/dark-mode logic coherent.
51
+ */
52
+ preset?: string;
53
+ }
54
+ export { default as CopyButton } from './CopyButton.svelte';
55
+ export { type CopyButtonVariants, copyButtonVariants } from './copy-button.variants.js';
@@ -0,0 +1,2 @@
1
+ export { default as CopyButton } from './CopyButton.svelte';
2
+ export { copyButtonVariants } from './copy-button.variants.js';
@@ -1,4 +1,4 @@
1
1
  import type { FileUploadProps } from './index.js';
2
- declare const FileUpload: import("svelte").Component<FileUploadProps, {}, "file" | "files">;
2
+ declare const FileUpload: import("svelte").Component<FileUploadProps, {}, "files" | "file">;
3
3
  type FileUpload = ReturnType<typeof FileUpload>;
4
4
  export default FileUpload;
@@ -3,7 +3,7 @@ export declare const pinInputVariants: ((props?: {
3
3
  tier?: "commit" | "modify" | undefined;
4
4
  variant?: "ghost" | "filled" | "outlined" | undefined;
5
5
  size?: "sm" | "md" | "lg" | undefined;
6
- intent?: "default" | "success" | "warning" | "danger" | undefined;
6
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
7
7
  disabled?: boolean | undefined;
8
8
  readonly?: boolean | undefined;
9
9
  messageType?: "error" | "helper" | undefined;
@@ -14,7 +14,7 @@ export declare const pinInputVariants: ((props?: {
14
14
  tier?: "commit" | "modify" | undefined;
15
15
  variant?: "ghost" | "filled" | "outlined" | undefined;
16
16
  size?: "sm" | "md" | "lg" | undefined;
17
- intent?: "default" | "success" | "warning" | "danger" | undefined;
17
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
18
18
  disabled?: boolean | undefined;
19
19
  readonly?: boolean | undefined;
20
20
  messageType?: "error" | "helper" | undefined;
@@ -27,7 +27,7 @@ export declare const pinInputVariants: ((props?: {
27
27
  tier?: "commit" | "modify" | undefined;
28
28
  variant?: "ghost" | "filled" | "outlined" | undefined;
29
29
  size?: "sm" | "md" | "lg" | undefined;
30
- intent?: "default" | "success" | "warning" | "danger" | undefined;
30
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
31
31
  disabled?: boolean | undefined;
32
32
  readonly?: boolean | undefined;
33
33
  messageType?: "error" | "helper" | undefined;
@@ -40,7 +40,7 @@ export declare const pinInputVariants: ((props?: {
40
40
  tier?: "commit" | "modify" | undefined;
41
41
  variant?: "ghost" | "filled" | "outlined" | undefined;
42
42
  size?: "sm" | "md" | "lg" | undefined;
43
- intent?: "default" | "success" | "warning" | "danger" | undefined;
43
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
44
44
  disabled?: boolean | undefined;
45
45
  readonly?: boolean | undefined;
46
46
  messageType?: "error" | "helper" | undefined;
@@ -53,7 +53,7 @@ export declare const pinInputVariants: ((props?: {
53
53
  tier?: "commit" | "modify" | undefined;
54
54
  variant?: "ghost" | "filled" | "outlined" | undefined;
55
55
  size?: "sm" | "md" | "lg" | undefined;
56
- intent?: "default" | "success" | "warning" | "danger" | undefined;
56
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
57
57
  disabled?: boolean | undefined;
58
58
  readonly?: boolean | undefined;
59
59
  messageType?: "error" | "helper" | undefined;
@@ -66,7 +66,7 @@ export declare const pinInputVariants: ((props?: {
66
66
  tier?: "commit" | "modify" | undefined;
67
67
  variant?: "ghost" | "filled" | "outlined" | undefined;
68
68
  size?: "sm" | "md" | "lg" | undefined;
69
- intent?: "default" | "success" | "warning" | "danger" | undefined;
69
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
70
70
  disabled?: boolean | undefined;
71
71
  readonly?: boolean | undefined;
72
72
  messageType?: "error" | "helper" | undefined;
@@ -79,7 +79,7 @@ export declare const pinInputVariants: ((props?: {
79
79
  tier?: "commit" | "modify" | undefined;
80
80
  variant?: "ghost" | "filled" | "outlined" | undefined;
81
81
  size?: "sm" | "md" | "lg" | undefined;
82
- intent?: "default" | "success" | "warning" | "danger" | undefined;
82
+ intent?: "success" | "warning" | "danger" | "default" | undefined;
83
83
  disabled?: boolean | undefined;
84
84
  readonly?: boolean | undefined;
85
85
  messageType?: "error" | "helper" | undefined;
@@ -1,17 +1,23 @@
1
+ import { FIELD_DISABLED_FRAME, FIELD_LABEL, FIELD_LABEL_DISABLED, FIELD_MESSAGE_TONES, FIELD_NATIVE_DISABLED, FIELD_NATIVE_READONLY, FIELD_REQUIRED_LABEL, FIELD_SURFACE, FIELD_TRANSITION, fieldErrorFrame, fieldFocusRing, fieldIntentFrames, fieldSurfaceVariants } from '../../internal/field-chrome.js';
1
2
  import { tv } from '../../utils/variants.js';
3
+ // Each cell is directly focusable, so the ring lives on the cell itself.
4
+ const focus = 'focus-visible';
5
+ const surface = fieldSurfaceVariants(focus);
6
+ const intents = fieldIntentFrames(focus);
2
7
  export const pinInputVariants = tv({
3
8
  slots: {
4
9
  root: ['flex flex-col gap-1.5'],
5
- label: ['block font-medium text-text-secondary text-sm'],
10
+ label: [FIELD_LABEL],
6
11
  group: ['flex items-center'],
7
12
  cell: [
8
13
  'box-border text-center font-medium tabular-nums caret-primary',
9
- 'border text-text-primary bg-surface-base',
10
- 'transition-[color,background-color,border-color,box-shadow] duration-[var(--blocks-duration-fast)] ease-out',
11
- 'focus-visible:outline-none focus-visible:border-primary focus-visible:ring-2 focus-visible:ring-primary/20 focus-visible:z-10',
14
+ FIELD_SURFACE,
15
+ FIELD_TRANSITION,
16
+ // `focus-visible:z-10` lifts the focused cell's ring above its neighbours.
17
+ `focus-visible:outline-none ${fieldFocusRing(focus)} focus-visible:z-10`,
12
18
  'hover:border-border-default',
13
- 'disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-surface-subtle',
14
- 'read-only:bg-surface-subtle read-only:cursor-default'
19
+ FIELD_NATIVE_DISABLED,
20
+ FIELD_NATIVE_READONLY
15
21
  ],
16
22
  separator: ['text-text-tertiary select-none'],
17
23
  message: ['text-xs']
@@ -24,13 +30,9 @@ export const pinInputVariants = tv({
24
30
  commit: { cell: 'rounded-commit' }
25
31
  },
26
32
  variant: {
27
- outlined: { cell: 'border-border-subtle' },
28
- filled: {
29
- cell: 'bg-surface-interactive border-transparent hover:bg-surface-hover focus-visible:bg-surface-base'
30
- },
31
- ghost: {
32
- cell: 'bg-transparent hover:bg-surface-subtle focus-visible:bg-surface-base focus-visible:border-border-subtle'
33
- }
33
+ outlined: { cell: surface.outlined },
34
+ filled: { cell: surface.filled },
35
+ ghost: { cell: surface.ghost }
34
36
  },
35
37
  size: {
36
38
  sm: {
@@ -53,20 +55,14 @@ export const pinInputVariants = tv({
53
55
  },
54
56
  intent: {
55
57
  default: {},
56
- success: {
57
- cell: 'border-success focus-visible:border-success focus-visible:ring-success/20'
58
- },
59
- warning: {
60
- cell: 'border-warning focus-visible:border-warning focus-visible:ring-warning/20'
61
- },
62
- danger: {
63
- cell: 'border-danger focus-visible:border-danger focus-visible:ring-danger/20'
64
- }
58
+ success: { cell: intents.success },
59
+ warning: { cell: intents.warning },
60
+ danger: { cell: intents.danger }
65
61
  },
66
62
  disabled: {
67
63
  true: {
68
- cell: 'opacity-50 cursor-not-allowed bg-surface-disabled pointer-events-none',
69
- label: 'text-text-disabled'
64
+ cell: FIELD_DISABLED_FRAME,
65
+ label: FIELD_LABEL_DISABLED
70
66
  }
71
67
  },
72
68
  readonly: {
@@ -75,17 +71,17 @@ export const pinInputVariants = tv({
75
71
  // Declared BEFORE `error` so the error tone wins the message-color bucket
76
72
  // in every call shape — `{ error: true }` alone must read red.
77
73
  messageType: {
78
- error: { message: 'text-danger' },
79
- helper: { message: 'text-text-tertiary' }
74
+ error: { message: FIELD_MESSAGE_TONES.error },
75
+ helper: { message: FIELD_MESSAGE_TONES.helper }
80
76
  },
81
77
  error: {
82
78
  true: {
83
- cell: 'border-danger focus-visible:border-danger focus-visible:ring-danger/20',
84
- message: 'text-danger'
79
+ cell: fieldErrorFrame(focus),
80
+ message: FIELD_MESSAGE_TONES.error
85
81
  }
86
82
  },
87
83
  required: {
88
- true: { label: "after:content-['*'] after:ml-1 after:text-danger" }
84
+ true: { label: FIELD_REQUIRED_LABEL }
89
85
  }
90
86
  },
91
87
  compoundVariants: [
@@ -8,118 +8,118 @@ import { type SlotNames, type VariantProps } from '../../utils/variants.js';
8
8
  * matrix to the three axes that actually change layout: `view`, `variant`, `size`.
9
9
  */
10
10
  export declare const plannerVariants: ((props?: {
11
- view?: "month" | "week" | "range" | undefined;
12
- variant?: "default" | "bordered" | "ghost" | undefined;
11
+ view?: "month" | "range" | "week" | undefined;
12
+ variant?: "default" | "ghost" | "bordered" | undefined;
13
13
  size?: "sm" | "md" | "lg" | undefined;
14
14
  } | undefined) => {
15
15
  base: (props?: ({
16
- view?: "month" | "week" | "range" | undefined;
17
- variant?: "default" | "bordered" | "ghost" | undefined;
16
+ view?: "month" | "range" | "week" | undefined;
17
+ variant?: "default" | "ghost" | "bordered" | undefined;
18
18
  size?: "sm" | "md" | "lg" | undefined;
19
19
  } & {
20
20
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
21
21
  }) | undefined) => string;
22
22
  header: (props?: ({
23
- view?: "month" | "week" | "range" | undefined;
24
- variant?: "default" | "bordered" | "ghost" | undefined;
23
+ view?: "month" | "range" | "week" | undefined;
24
+ variant?: "default" | "ghost" | "bordered" | undefined;
25
25
  size?: "sm" | "md" | "lg" | undefined;
26
26
  } & {
27
27
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
28
28
  }) | undefined) => string;
29
29
  headerTitle: (props?: ({
30
- view?: "month" | "week" | "range" | undefined;
31
- variant?: "default" | "bordered" | "ghost" | undefined;
30
+ view?: "month" | "range" | "week" | undefined;
31
+ variant?: "default" | "ghost" | "bordered" | undefined;
32
32
  size?: "sm" | "md" | "lg" | undefined;
33
33
  } & {
34
34
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
35
35
  }) | undefined) => string;
36
36
  nav: (props?: ({
37
- view?: "month" | "week" | "range" | undefined;
38
- variant?: "default" | "bordered" | "ghost" | undefined;
37
+ view?: "month" | "range" | "week" | undefined;
38
+ variant?: "default" | "ghost" | "bordered" | undefined;
39
39
  size?: "sm" | "md" | "lg" | undefined;
40
40
  } & {
41
41
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
42
42
  }) | undefined) => string;
43
43
  navButton: (props?: ({
44
- view?: "month" | "week" | "range" | undefined;
45
- variant?: "default" | "bordered" | "ghost" | undefined;
44
+ view?: "month" | "range" | "week" | undefined;
45
+ variant?: "default" | "ghost" | "bordered" | undefined;
46
46
  size?: "sm" | "md" | "lg" | undefined;
47
47
  } & {
48
48
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
49
49
  }) | undefined) => string;
50
50
  grid: (props?: ({
51
- view?: "month" | "week" | "range" | undefined;
52
- variant?: "default" | "bordered" | "ghost" | undefined;
51
+ view?: "month" | "range" | "week" | undefined;
52
+ variant?: "default" | "ghost" | "bordered" | undefined;
53
53
  size?: "sm" | "md" | "lg" | undefined;
54
54
  } & {
55
55
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
56
56
  }) | undefined) => string;
57
57
  weekdayHeader: (props?: ({
58
- view?: "month" | "week" | "range" | undefined;
59
- variant?: "default" | "bordered" | "ghost" | undefined;
58
+ view?: "month" | "range" | "week" | undefined;
59
+ variant?: "default" | "ghost" | "bordered" | undefined;
60
60
  size?: "sm" | "md" | "lg" | undefined;
61
61
  } & {
62
62
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
63
63
  }) | undefined) => string;
64
64
  weekday: (props?: ({
65
- view?: "month" | "week" | "range" | undefined;
66
- variant?: "default" | "bordered" | "ghost" | undefined;
65
+ view?: "month" | "range" | "week" | undefined;
66
+ variant?: "default" | "ghost" | "bordered" | undefined;
67
67
  size?: "sm" | "md" | "lg" | undefined;
68
68
  } & {
69
69
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
70
70
  }) | undefined) => string;
71
71
  weekNumber: (props?: ({
72
- view?: "month" | "week" | "range" | undefined;
73
- variant?: "default" | "bordered" | "ghost" | undefined;
72
+ view?: "month" | "range" | "week" | undefined;
73
+ variant?: "default" | "ghost" | "bordered" | undefined;
74
74
  size?: "sm" | "md" | "lg" | undefined;
75
75
  } & {
76
76
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
77
77
  }) | undefined) => string;
78
78
  week: (props?: ({
79
- view?: "month" | "week" | "range" | undefined;
80
- variant?: "default" | "bordered" | "ghost" | undefined;
79
+ view?: "month" | "range" | "week" | undefined;
80
+ variant?: "default" | "ghost" | "bordered" | undefined;
81
81
  size?: "sm" | "md" | "lg" | undefined;
82
82
  } & {
83
83
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
84
84
  }) | undefined) => string;
85
85
  cell: (props?: ({
86
- view?: "month" | "week" | "range" | undefined;
87
- variant?: "default" | "bordered" | "ghost" | undefined;
86
+ view?: "month" | "range" | "week" | undefined;
87
+ variant?: "default" | "ghost" | "bordered" | undefined;
88
88
  size?: "sm" | "md" | "lg" | undefined;
89
89
  } & {
90
90
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
91
91
  }) | undefined) => string;
92
92
  cellHeader: (props?: ({
93
- view?: "month" | "week" | "range" | undefined;
94
- variant?: "default" | "bordered" | "ghost" | undefined;
93
+ view?: "month" | "range" | "week" | undefined;
94
+ variant?: "default" | "ghost" | "bordered" | undefined;
95
95
  size?: "sm" | "md" | "lg" | undefined;
96
96
  } & {
97
97
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
98
98
  }) | undefined) => string;
99
99
  cellWeekday: (props?: ({
100
- view?: "month" | "week" | "range" | undefined;
101
- variant?: "default" | "bordered" | "ghost" | undefined;
100
+ view?: "month" | "range" | "week" | undefined;
101
+ variant?: "default" | "ghost" | "bordered" | undefined;
102
102
  size?: "sm" | "md" | "lg" | undefined;
103
103
  } & {
104
104
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
105
105
  }) | undefined) => string;
106
106
  cellDate: (props?: ({
107
- view?: "month" | "week" | "range" | undefined;
108
- variant?: "default" | "bordered" | "ghost" | undefined;
107
+ view?: "month" | "range" | "week" | undefined;
108
+ variant?: "default" | "ghost" | "bordered" | undefined;
109
109
  size?: "sm" | "md" | "lg" | undefined;
110
110
  } & {
111
111
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
112
112
  }) | undefined) => string;
113
113
  cellItems: (props?: ({
114
- view?: "month" | "week" | "range" | undefined;
115
- variant?: "default" | "bordered" | "ghost" | undefined;
114
+ view?: "month" | "range" | "week" | undefined;
115
+ variant?: "default" | "ghost" | "bordered" | undefined;
116
116
  size?: "sm" | "md" | "lg" | undefined;
117
117
  } & {
118
118
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;
119
119
  }) | undefined) => string;
120
120
  empty: (props?: ({
121
- view?: "month" | "week" | "range" | undefined;
122
- variant?: "default" | "bordered" | "ghost" | undefined;
121
+ view?: "month" | "range" | "week" | undefined;
122
+ variant?: "default" | "ghost" | "bordered" | undefined;
123
123
  size?: "sm" | "md" | "lg" | undefined;
124
124
  } & {
125
125
  class?: string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | (string | number | false | /*elided*/ any | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined)[] | Record<string, boolean | null | undefined> | null | undefined;