@adminiumjs/ui 0.2.9 → 0.3.0-rc.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/dist/components/alert/Alert.d.ts +1 -1
- package/dist/components/alert/Alert.js +1 -1
- package/dist/components/auth-layout/AuthLayout.d.ts +6 -6
- package/dist/components/auth-layout/AuthLayout.js +6 -6
- package/dist/components/auth-screens/ForgotPasswordForm.d.ts +5 -6
- package/dist/components/auth-screens/ForgotPasswordForm.d.ts.map +1 -1
- package/dist/components/auth-screens/ForgotPasswordForm.js.map +1 -1
- package/dist/components/autosave-indicator/AutosaveIndicator.d.ts +2 -2
- package/dist/components/autosave-indicator/AutosaveIndicator.js +1 -1
- package/dist/components/avatar/Avatar.d.ts +5 -5
- package/dist/components/avatar/Avatar.js +5 -5
- package/dist/components/avatar-stack/AvatarStack.d.ts +1 -1
- package/dist/components/avatar-stack/AvatarStack.js +1 -1
- package/dist/components/badge/Badge.d.ts +1 -1
- package/dist/components/badge/Badge.js +1 -1
- package/dist/components/badge/index.js +2 -2
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/banner/Banner.d.ts +1 -1
- package/dist/components/banner/Banner.js +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/components/breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/bulk-action-bar/BulkActionBar.d.ts +2 -2
- package/dist/components/bulk-action-bar/BulkActionBar.js +2 -2
- package/dist/components/button/Button.d.ts +3 -3
- package/dist/components/button/Button.js +3 -3
- package/dist/components/card/Card.d.ts +1 -1
- package/dist/components/card/Card.js +1 -1
- package/dist/components/check-row/CheckRow.d.ts +34 -0
- package/dist/components/check-row/CheckRow.d.ts.map +1 -0
- package/dist/components/check-row/CheckRow.js +53 -0
- package/dist/components/check-row/CheckRow.js.map +1 -0
- package/dist/components/check-row/index.d.ts +3 -0
- package/dist/components/check-row/index.d.ts.map +1 -0
- package/dist/components/check-row/index.js +3 -0
- package/dist/components/check-row/index.js.map +1 -0
- package/dist/components/checkbox/Checkbox.d.ts +1 -1
- package/dist/components/checkbox/Checkbox.js +1 -1
- package/dist/components/chip-input/ChipInput.d.ts +9 -2
- package/dist/components/chip-input/ChipInput.d.ts.map +1 -1
- package/dist/components/chip-input/ChipInput.js +3 -3
- package/dist/components/chip-input/ChipInput.js.map +1 -1
- package/dist/components/choice-chips/ChoiceChips.d.ts +2 -2
- package/dist/components/choice-chips/ChoiceChips.js +2 -2
- package/dist/components/combobox/Combobox.d.ts +1 -1
- package/dist/components/combobox/Combobox.js +1 -1
- package/dist/components/command-palette/CommandPalette.d.ts +1 -1
- package/dist/components/command-palette/CommandPalette.js +1 -1
- package/dist/components/command-palette/useCommandK.d.ts +4 -3
- package/dist/components/command-palette/useCommandK.d.ts.map +1 -1
- package/dist/components/command-palette/useCommandK.js +4 -3
- package/dist/components/command-palette/useCommandK.js.map +1 -1
- package/dist/components/confirm-modal/ConfirmModal.d.ts +7 -7
- package/dist/components/confirm-modal/ConfirmModal.js +1 -1
- package/dist/components/count-badge/CountBadge.d.ts +1 -1
- package/dist/components/count-badge/CountBadge.js +1 -1
- package/dist/components/date-input/DateInput.d.ts +1 -1
- package/dist/components/date-input/DateInput.js +1 -1
- package/dist/components/delta-pill/DeltaPill.d.ts +1 -1
- package/dist/components/delta-pill/DeltaPill.js +1 -1
- package/dist/components/divider/Divider.d.ts +1 -1
- package/dist/components/divider/Divider.js +1 -1
- package/dist/components/drawer/Drawer.d.ts +3 -3
- package/dist/components/drawer/Drawer.js +2 -2
- package/dist/components/drawer/Drawer.js.map +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.d.ts +1 -1
- package/dist/components/dropdown-menu/DropdownMenu.js +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +1 -1
- package/dist/components/empty-state/EmptyState.js +1 -1
- package/dist/components/filter-chip/FilterChip.d.ts +1 -1
- package/dist/components/filter-chip/FilterChip.js +1 -1
- package/dist/components/form-dialog/FormDialog.d.ts +79 -0
- package/dist/components/form-dialog/FormDialog.d.ts.map +1 -0
- package/dist/components/form-dialog/FormDialog.js +76 -0
- package/dist/components/form-dialog/FormDialog.js.map +1 -0
- package/dist/components/form-dialog/index.d.ts +3 -0
- package/dist/components/form-dialog/index.d.ts.map +1 -0
- package/dist/components/form-dialog/index.js +3 -0
- package/dist/components/form-dialog/index.js.map +1 -0
- package/dist/components/form-field/FormField.d.ts +1 -1
- package/dist/components/form-field/FormField.d.ts.map +1 -1
- package/dist/components/form-field/FormField.js +3 -2
- package/dist/components/form-field/FormField.js.map +1 -1
- package/dist/components/icon/Icon.d.ts +6 -6
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +1 -1
- package/dist/components/icon/Icon.js.map +1 -1
- package/dist/components/icon/icon-names.js +3 -3
- package/dist/components/icon/icon-names.js.map +1 -1
- package/dist/components/icon-button/IconButton.d.ts +2 -2
- package/dist/components/icon-button/IconButton.js +2 -2
- package/dist/components/icon-tile/IconTile.d.ts +1 -1
- package/dist/components/icon-tile/IconTile.js +2 -2
- package/dist/components/icon-tile/IconTile.js.map +1 -1
- package/dist/components/input/Input.d.ts +2 -2
- package/dist/components/input/Input.js +2 -2
- package/dist/components/input-group/InputGroup.d.ts +2 -2
- package/dist/components/input-group/InputGroup.js +2 -2
- package/dist/components/kbd/Kbd.d.ts +1 -1
- package/dist/components/kbd/Kbd.js +1 -1
- package/dist/components/key-value-list/KeyValueList.d.ts +1 -1
- package/dist/components/key-value-list/KeyValueList.js +1 -1
- package/dist/components/label/Label.d.ts +1 -1
- package/dist/components/label/Label.js +1 -1
- package/dist/components/meta-pill/MetaPill.d.ts +23 -0
- package/dist/components/meta-pill/MetaPill.d.ts.map +1 -0
- package/dist/components/meta-pill/MetaPill.js +19 -0
- package/dist/components/meta-pill/MetaPill.js.map +1 -0
- package/dist/components/meta-pill/index.d.ts +2 -0
- package/dist/components/meta-pill/index.d.ts.map +1 -0
- package/dist/components/meta-pill/index.js +3 -0
- package/dist/components/meta-pill/index.js.map +1 -0
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +3 -2
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/mono-text/MonoText.d.ts +2 -3
- package/dist/components/mono-text/MonoText.d.ts.map +1 -1
- package/dist/components/mono-text/MonoText.js +2 -3
- package/dist/components/mono-text/MonoText.js.map +1 -1
- package/dist/components/month-calendar/MonthCalendar.d.ts +46 -0
- package/dist/components/month-calendar/MonthCalendar.d.ts.map +1 -0
- package/dist/components/month-calendar/MonthCalendar.js +55 -0
- package/dist/components/month-calendar/MonthCalendar.js.map +1 -0
- package/dist/components/month-calendar/index.d.ts +2 -0
- package/dist/components/month-calendar/index.d.ts.map +1 -0
- package/dist/components/month-calendar/index.js +3 -0
- package/dist/components/month-calendar/index.js.map +1 -0
- package/dist/components/number-stepper/NumberStepper.d.ts +16 -2
- package/dist/components/number-stepper/NumberStepper.d.ts.map +1 -1
- package/dist/components/number-stepper/NumberStepper.js +22 -3
- package/dist/components/number-stepper/NumberStepper.js.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +1 -1
- package/dist/components/pagination/Pagination.js +1 -1
- package/dist/components/password-strength/PasswordStrength.d.ts +1 -1
- package/dist/components/password-strength/PasswordStrength.js +1 -1
- package/dist/components/permission-matrix/PermissionMatrix.d.ts +3 -3
- package/dist/components/popover/Popover.d.ts +1 -1
- package/dist/components/popover/Popover.js +1 -1
- package/dist/components/progress-bar/ProgressBar.d.ts +1 -1
- package/dist/components/progress-bar/ProgressBar.js +2 -2
- package/dist/components/progress-bar/ProgressBar.js.map +1 -1
- package/dist/components/radio/Radio.d.ts +2 -2
- package/dist/components/radio/Radio.js +2 -2
- package/dist/components/radio-card/RadioCard.d.ts +18 -8
- package/dist/components/radio-card/RadioCard.d.ts.map +1 -1
- package/dist/components/radio-card/RadioCard.js +4 -4
- package/dist/components/radio-card/RadioCard.js.map +1 -1
- package/dist/components/runtime-chip/RuntimeChip.d.ts +9 -9
- package/dist/components/runtime-chip/RuntimeChip.js +8 -8
- package/dist/components/search-input/SearchInput.d.ts +1 -1
- package/dist/components/search-input/SearchInput.js +1 -1
- package/dist/components/secret-input/SecretInput.d.ts +1 -1
- package/dist/components/secret-input/SecretInput.js +1 -1
- package/dist/components/segmented-control/SegmentedControl.d.ts +1 -1
- package/dist/components/segmented-control/SegmentedControl.js +1 -1
- package/dist/components/select/Select.d.ts +1 -1
- package/dist/components/select/Select.js +1 -1
- package/dist/components/skeleton/Skeleton.d.ts +1 -1
- package/dist/components/skeleton/Skeleton.js +2 -2
- package/dist/components/skeleton/Skeleton.js.map +1 -1
- package/dist/components/slider/Slider.d.ts +1 -1
- package/dist/components/slider/Slider.js +1 -1
- package/dist/components/slot-grid/SlotGrid.d.ts +37 -0
- package/dist/components/slot-grid/SlotGrid.d.ts.map +1 -0
- package/dist/components/slot-grid/SlotGrid.js +47 -0
- package/dist/components/slot-grid/SlotGrid.js.map +1 -0
- package/dist/components/slot-grid/index.d.ts +2 -0
- package/dist/components/slot-grid/index.d.ts.map +1 -0
- package/dist/components/slot-grid/index.js +3 -0
- package/dist/components/slot-grid/index.js.map +1 -0
- package/dist/components/snackbar/Snackbar.d.ts +1 -1
- package/dist/components/snackbar/Snackbar.js +1 -1
- package/dist/components/spinner/Spinner.d.ts +1 -1
- package/dist/components/spinner/Spinner.js +1 -1
- package/dist/components/status-pill/StatusPill.d.ts +1 -1
- package/dist/components/status-pill/StatusPill.js +5 -5
- package/dist/components/status-pill/StatusPill.js.map +1 -1
- package/dist/components/step-rail/StepRail.d.ts +36 -0
- package/dist/components/step-rail/StepRail.d.ts.map +1 -0
- package/dist/components/step-rail/StepRail.js +28 -0
- package/dist/components/step-rail/StepRail.js.map +1 -0
- package/dist/components/step-rail/index.d.ts +2 -0
- package/dist/components/step-rail/index.d.ts.map +1 -0
- package/dist/components/step-rail/index.js +3 -0
- package/dist/components/step-rail/index.js.map +1 -0
- package/dist/components/stepper/Stepper.d.ts +1 -1
- package/dist/components/stepper/Stepper.js +1 -1
- package/dist/components/success-state/SuccessState.d.ts +1 -2
- package/dist/components/success-state/SuccessState.d.ts.map +1 -1
- package/dist/components/success-state/SuccessState.js +1 -2
- package/dist/components/success-state/SuccessState.js.map +1 -1
- package/dist/components/switch/Switch.d.ts +2 -2
- package/dist/components/switch/Switch.js +2 -2
- package/dist/components/tabs/Tabs.d.ts +1 -1
- package/dist/components/tabs/Tabs.js +1 -1
- package/dist/components/tag/Tag.d.ts +1 -1
- package/dist/components/tag/Tag.js +1 -1
- package/dist/components/textarea/Textarea.d.ts +1 -1
- package/dist/components/textarea/Textarea.js +1 -1
- package/dist/components/toast/Toast.d.ts +5 -6
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js +5 -6
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/toast/useToastQueue.d.ts +6 -7
- package/dist/components/toast/useToastQueue.d.ts.map +1 -1
- package/dist/components/toast/useToastQueue.js +6 -7
- package/dist/components/toast/useToastQueue.js.map +1 -1
- package/dist/components/toggle-row/ToggleRow.d.ts +33 -0
- package/dist/components/toggle-row/ToggleRow.d.ts.map +1 -0
- package/dist/components/toggle-row/ToggleRow.js +41 -0
- package/dist/components/toggle-row/ToggleRow.js.map +1 -0
- package/dist/components/toggle-row/index.d.ts +3 -0
- package/dist/components/toggle-row/index.d.ts.map +1 -0
- package/dist/components/toggle-row/index.js +3 -0
- package/dist/components/toggle-row/index.js.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts +1 -1
- package/dist/components/tooltip/Tooltip.js +1 -1
- package/dist/components/two-phase-modal/TwoPhaseModal.d.ts +3 -4
- package/dist/components/two-phase-modal/TwoPhaseModal.d.ts.map +1 -1
- package/dist/components/two-phase-modal/TwoPhaseModal.js +3 -4
- package/dist/components/two-phase-modal/TwoPhaseModal.js.map +1 -1
- package/dist/hooks/useUndoableAction.d.ts +5 -5
- package/dist/hooks/useUndoableAction.js +5 -5
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/cn.d.ts +3 -4
- package/dist/lib/cn.d.ts.map +1 -1
- package/dist/lib/cn.js +3 -4
- package/dist/lib/cn.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/tones.d.ts +10 -9
- package/dist/lib/tones.d.ts.map +1 -1
- package/dist/lib/tones.js +10 -9
- package/dist/lib/tones.js.map +1 -1
- package/dist/lib/week.d.ts +37 -0
- package/dist/lib/week.d.ts.map +1 -0
- package/dist/lib/week.js +71 -0
- package/dist/lib/week.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +4 -5
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/ThemeProvider.js +19 -19
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/context.d.ts +6 -5
- package/dist/theme/context.d.ts.map +1 -1
- package/dist/theme/context.js.map +1 -1
- package/dist/theme/subscribe.d.ts +4 -4
- package/dist/theme/subscribe.js +1 -1
- package/dist/theme/types.d.ts +10 -10
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/types.js +4 -4
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +2 -3
- package/dist/theme/useTheme.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export interface MonthCalendarProps {
|
|
2
|
+
/** The month on screen, as `YYYY-MM`. Controlled: the arrows report, never set. */
|
|
3
|
+
month: string;
|
|
4
|
+
onMonth: (month: string) => void;
|
|
5
|
+
/** The chosen day, `YYYY-MM-DD`, or null. */
|
|
6
|
+
value: string | null;
|
|
7
|
+
onChange: (day: string) => void;
|
|
8
|
+
/** Days nothing can be put on — struck through and inert (comp 634–652). */
|
|
9
|
+
unavailable?: readonly string[] | undefined;
|
|
10
|
+
/** Nothing before this day may be chosen; `YYYY-MM-DD`. */
|
|
11
|
+
min?: string | undefined;
|
|
12
|
+
locale?: string | undefined;
|
|
13
|
+
/** Accessible names — this package ships no copy. */
|
|
14
|
+
labels: {
|
|
15
|
+
previous: string;
|
|
16
|
+
next: string;
|
|
17
|
+
month: (month: string) => string;
|
|
18
|
+
};
|
|
19
|
+
className?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* MonthCalendar — the month grid (comp
|
|
23
|
+
* 322–334, 634–652).
|
|
24
|
+
*
|
|
25
|
+
* ─── A real calendar, in the reader's own week ─────────────────────────────
|
|
26
|
+
*
|
|
27
|
+
* The comp's grid is a fixed 7 × 5 with a hardcoded offset, and it puts
|
|
28
|
+
* 1 September 2026 on a Wednesday — it is a Tuesday. It also gives the month
|
|
29
|
+
* arrows no handlers. Both are drawing conveniences in a mock-up and both are
|
|
30
|
+
* defects in a product, so this computes the month from the calendar, starts
|
|
31
|
+
* the week where the reader's locale starts it, and moves.
|
|
32
|
+
*
|
|
33
|
+
* ─── Unavailable is INERT, not just decorated ──────────────────────────────
|
|
34
|
+
*
|
|
35
|
+
* A struck-through day that still accepts a click is a screen that takes a
|
|
36
|
+
* booking it has already said it cannot take. `disabled` carries that to the
|
|
37
|
+
* keyboard and to a screen reader as well as to the eye.
|
|
38
|
+
*
|
|
39
|
+
* ─── Height is fixed by the grid, not by the month ─────────────────────────
|
|
40
|
+
*
|
|
41
|
+
* `monthGrid` pads to whole weeks, so February and August are the same height
|
|
42
|
+
* and the legend under the calendar does not jump a line when the month
|
|
43
|
+
* changes.
|
|
44
|
+
*/
|
|
45
|
+
export declare function MonthCalendar({ month, onMonth, value, onChange, unavailable, min, locale, labels, className, }: MonthCalendarProps): import("react").JSX.Element;
|
|
46
|
+
//# sourceMappingURL=MonthCalendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthCalendar.d.ts","sourceRoot":"","sources":["../../../src/components/month-calendar/MonthCalendar.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,6CAA6C;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4EAA4E;IAC5E,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5C,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qDAAqD;IACrD,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;KAAE,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,EACX,GAAG,EACH,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE,kBAAkB,+BAgFpB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { ChevronLeft, ChevronRight } from 'lucide-react';
|
|
5
|
+
import { cn } from '../../lib/cn.js';
|
|
6
|
+
import { dayKey, monthGrid, weekdayInitials } from '../../lib/week.js';
|
|
7
|
+
import { IconButton } from '../icon-button/IconButton.js';
|
|
8
|
+
/**
|
|
9
|
+
* MonthCalendar — the month grid (comp
|
|
10
|
+
* 322–334, 634–652).
|
|
11
|
+
*
|
|
12
|
+
* ─── A real calendar, in the reader's own week ─────────────────────────────
|
|
13
|
+
*
|
|
14
|
+
* The comp's grid is a fixed 7 × 5 with a hardcoded offset, and it puts
|
|
15
|
+
* 1 September 2026 on a Wednesday — it is a Tuesday. It also gives the month
|
|
16
|
+
* arrows no handlers. Both are drawing conveniences in a mock-up and both are
|
|
17
|
+
* defects in a product, so this computes the month from the calendar, starts
|
|
18
|
+
* the week where the reader's locale starts it, and moves.
|
|
19
|
+
*
|
|
20
|
+
* ─── Unavailable is INERT, not just decorated ──────────────────────────────
|
|
21
|
+
*
|
|
22
|
+
* A struck-through day that still accepts a click is a screen that takes a
|
|
23
|
+
* booking it has already said it cannot take. `disabled` carries that to the
|
|
24
|
+
* keyboard and to a screen reader as well as to the eye.
|
|
25
|
+
*
|
|
26
|
+
* ─── Height is fixed by the grid, not by the month ─────────────────────────
|
|
27
|
+
*
|
|
28
|
+
* `monthGrid` pads to whole weeks, so February and August are the same height
|
|
29
|
+
* and the legend under the calendar does not jump a line when the month
|
|
30
|
+
* changes.
|
|
31
|
+
*/
|
|
32
|
+
export function MonthCalendar({ month, onMonth, value, onChange, unavailable, min, locale, labels, className, }) {
|
|
33
|
+
const [year, monthIndex] = useMemo(() => {
|
|
34
|
+
const [y, m] = month.split('-');
|
|
35
|
+
return [Number(y), Number(m) - 1];
|
|
36
|
+
}, [month]);
|
|
37
|
+
const cells = useMemo(() => monthGrid(year, monthIndex, locale), [year, monthIndex, locale]);
|
|
38
|
+
const initials = useMemo(() => weekdayInitials(locale), [locale]);
|
|
39
|
+
const blocked = useMemo(() => new Set(unavailable ?? []), [unavailable]);
|
|
40
|
+
const title = useMemo(() => new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric' }).format(new Date(year, monthIndex, 1)), [year, monthIndex, locale]);
|
|
41
|
+
const shift = (by) => {
|
|
42
|
+
const next = new Date(year, monthIndex + by, 1);
|
|
43
|
+
onMonth(`${String(next.getFullYear()).padStart(4, '0')}-${String(next.getMonth() + 1).padStart(2, '0')}`);
|
|
44
|
+
};
|
|
45
|
+
return (_jsxs("div", { className: cn('min-w-0', className), "data-testid": "month-calendar", children: [_jsxs("div", { className: "mb-3.5 flex items-center justify-between", children: [_jsx("span", { className: "text-[13.5px] font-extrabold text-fg", children: title }), _jsxs("div", { className: "flex gap-1.5", children: [_jsx(IconButton, { variant: "bordered", size: "sm", label: labels.previous, onClick: () => shift(-1), children: _jsx(ChevronLeft, { className: "size-3.5" }) }), _jsx(IconButton, { variant: "bordered", size: "sm", label: labels.next, onClick: () => shift(1), children: _jsx(ChevronRight, { className: "size-3.5" }) })] })] }), _jsx("div", { className: "mb-1.5 grid grid-cols-7 gap-1", "aria-hidden": "true", children: initials.map((initial, index) => (_jsx("span", { className: "text-center text-[10.5px] font-bold text-fg-subtle", children: initial }, index))) }), _jsx("div", { className: "grid grid-cols-7 gap-1", role: "group", "aria-label": labels.month(title), children: cells.map((day, index) => {
|
|
46
|
+
if (day === null)
|
|
47
|
+
return _jsx("span", { className: "h-[34px]" }, index);
|
|
48
|
+
const key = dayKey(day);
|
|
49
|
+
const taken = blocked.has(key);
|
|
50
|
+
const past = min !== undefined && key < min;
|
|
51
|
+
const chosen = key === value;
|
|
52
|
+
return (_jsx("button", { type: "button", disabled: taken || past, "aria-pressed": chosen, "aria-label": new Intl.DateTimeFormat(locale, { dateStyle: 'full' }).format(day), "data-testid": `calendar-day-${key}`, onClick: () => onChange(key), className: cn('h-[34px] rounded-[9px] border border-transparent font-mono text-[12.5px] font-semibold', 'focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-accent', chosen && 'bg-accent font-extrabold text-accent-fg', !chosen && taken && 'bg-surface-3 text-fg-subtle line-through', !chosen && past && 'text-fg-subtle', !chosen && !taken && !past && 'text-fg hover:bg-surface-2'), children: day.getDate() }, key));
|
|
53
|
+
}) })] }));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=MonthCalendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonthCalendar.js","sourceRoot":"","sources":["../../../src/components/month-calendar/MonthCalendar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/month-calendar/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/month-calendar/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAA2B,MAAM,oBAAoB,CAAC"}
|
|
@@ -16,14 +16,28 @@ export interface NumberStepperProps extends Omit<React.ComponentPropsWithRef<'in
|
|
|
16
16
|
decrementLabel: string;
|
|
17
17
|
/** Danger border + focus ring + `aria-invalid`. */
|
|
18
18
|
error?: boolean | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* `field` (default) is the chevron column inside the input's chrome — the
|
|
21
|
+
* shape every existing caller renders. `buttons` is the design comp's own:
|
|
22
|
+
* a −, a big mono value and a +,
|
|
23
|
+
* each a 34px bordered square, with the unit beside them.
|
|
24
|
+
*
|
|
25
|
+
* Two layouts rather than two components because it is one control with one
|
|
26
|
+
* contract: the same value, the same bounds, the same step, the same
|
|
27
|
+
* `spinbutton` semantics. What differs is how much room the number is given,
|
|
28
|
+
* and that is a caller's decision.
|
|
29
|
+
*/
|
|
30
|
+
layout?: 'field' | 'buttons' | undefined;
|
|
31
|
+
/** The word after the number in the `buttons` layout: "guests", "seats". */
|
|
32
|
+
unit?: string | undefined;
|
|
19
33
|
/** Extra classes for the inner `<input>` (className styles the wrapper). */
|
|
20
34
|
inputClassName?: string | undefined;
|
|
21
35
|
}
|
|
22
36
|
/**
|
|
23
37
|
* NumberStepper — mono `input[type=number]` (native `spinbutton`: typed
|
|
24
38
|
* input, ↑↓ arrow keys) plus a chevron up/down column honoring
|
|
25
|
-
* min/max/step (research/design-system.md
|
|
39
|
+
* min/max/step (research/design-system.md Tier 2). The chevron buttons
|
|
26
40
|
* are `tabIndex={-1}` — keyboard users step with the arrow keys.
|
|
27
41
|
*/
|
|
28
|
-
export declare function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step, incrementLabel, decrementLabel, error, disabled, ref, ...inputProps }: NumberStepperProps): React.JSX.Element;
|
|
42
|
+
export declare function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step, incrementLabel, decrementLabel, error, layout, unit, disabled, ref, ...inputProps }: NumberStepperProps): React.JSX.Element;
|
|
29
43
|
//# sourceMappingURL=NumberStepper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberStepper.d.ts","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,kBACf,SAAQ,IAAI,CACV,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACpC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAC3F;IACD,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AASD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAQ,EACR,cAAc,EACd,cAAc,EACd,KAAa,EACb,QAAQ,EACR,GAAG,EACH,GAAG,UAAU,EACd,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"NumberStepper.d.ts","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,kBACf,SAAQ,IAAI,CACV,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACpC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAC3F;IACD,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC7D,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AASD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,cAAc,EACd,KAAK,EACL,YAAY,EACZ,aAAa,EACb,GAAG,EACH,GAAG,EACH,IAAQ,EACR,cAAc,EACd,cAAc,EACd,KAAa,EACb,MAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,GAAG,UAAU,EACd,EAAE,kBAAkB,qBAyJpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
-
import { ChevronDown, ChevronUp } from 'lucide-react';
|
|
3
|
+
import { ChevronDown, ChevronUp, Minus, Plus } from 'lucide-react';
|
|
4
4
|
import { useRef, useState } from 'react';
|
|
5
5
|
import { cn } from '../../lib/cn.js';
|
|
6
6
|
function clamp(next, min, max) {
|
|
@@ -14,10 +14,10 @@ function clamp(next, min, max) {
|
|
|
14
14
|
/**
|
|
15
15
|
* NumberStepper — mono `input[type=number]` (native `spinbutton`: typed
|
|
16
16
|
* input, ↑↓ arrow keys) plus a chevron up/down column honoring
|
|
17
|
-
* min/max/step (research/design-system.md
|
|
17
|
+
* min/max/step (research/design-system.md Tier 2). The chevron buttons
|
|
18
18
|
* are `tabIndex={-1}` — keyboard users step with the arrow keys.
|
|
19
19
|
*/
|
|
20
|
-
export function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step = 1, incrementLabel, decrementLabel, error = false, disabled, ref, ...inputProps }) {
|
|
20
|
+
export function NumberStepper({ className, inputClassName, value, defaultValue, onValueChange, min, max, step = 1, incrementLabel, decrementLabel, error = false, layout = 'field', unit, disabled, ref, ...inputProps }) {
|
|
21
21
|
const innerRef = useRef(null);
|
|
22
22
|
const [internal, setInternal] = useState(defaultValue ?? null);
|
|
23
23
|
const isControlled = value !== undefined;
|
|
@@ -41,8 +41,27 @@ export function NumberStepper({ className, inputClassName, value, defaultValue,
|
|
|
41
41
|
};
|
|
42
42
|
const atMin = current !== null && min !== undefined && current <= min;
|
|
43
43
|
const atMax = current !== null && max !== undefined && current >= max;
|
|
44
|
+
const bigButtonClasses = 'flex size-[34px] shrink-0 items-center justify-center rounded-md border border-border-strong bg-surface text-fg-muted ' +
|
|
45
|
+
'transition-colors hover:bg-surface-2 disabled:pointer-events-none disabled:opacity-40 ' +
|
|
46
|
+
'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent';
|
|
44
47
|
const stepperButtonClasses = 'flex h-1/2 w-6 items-center justify-center text-fg-subtle transition-colors hover:bg-surface-3 hover:text-fg ' +
|
|
45
48
|
'disabled:pointer-events-none disabled:opacity-40 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-accent';
|
|
49
|
+
if (layout === 'buttons') {
|
|
50
|
+
/*
|
|
51
|
+
* The value is a `spinbutton` in its own right — NOT a number input made to
|
|
52
|
+
* look like text. Arrow keys, Home/End and a typed value all have to keep
|
|
53
|
+
* working: the comp draws two buttons and a number, and a person who
|
|
54
|
+
* reaches it by keyboard still expects to type into it.
|
|
55
|
+
*/
|
|
56
|
+
return (_jsxs("div", { className: cn('flex items-center gap-2.5', disabled === true && 'opacity-40', className), children: [_jsx("button", { type: "button", "aria-label": decrementLabel, disabled: disabled === true || atMin, onClick: () => stepBy(-1), className: bigButtonClasses, children: _jsx(Minus, { "aria-hidden": "true", className: "size-[15px]" }) }), _jsx("input", { ref: setRef, type: "number", inputMode: "numeric", value: current ?? '', onChange: (event) => {
|
|
57
|
+
const parsed = event.target.value === '' ? null : event.target.valueAsNumber;
|
|
58
|
+
commit(parsed === null || Number.isNaN(parsed) ? null : parsed);
|
|
59
|
+
}, ...(min !== undefined ? { min } : {}), ...(max !== undefined ? { max } : {}), step: step, disabled: disabled, ...(error ? { 'aria-invalid': true } : {}), className: cn('min-w-[3ch] bg-transparent text-center font-mono text-[15px] font-extrabold tabular-nums text-fg', 'focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent', '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none', 'w-[var(--adm-stepper-width)]', inputClassName),
|
|
60
|
+
// The field grows with the number it holds, so the width is a value
|
|
61
|
+
// rather than a class — through a custom property, the one shape the
|
|
62
|
+
// tokens-only rule allows.
|
|
63
|
+
style: { '--adm-stepper-width': `${String(Math.max(String(current ?? '').length, 2))}ch` }, ...inputProps }), _jsx("button", { type: "button", "aria-label": incrementLabel, disabled: disabled === true || atMax, onClick: () => stepBy(1), className: bigButtonClasses, children: _jsx(Plus, { "aria-hidden": "true", className: "size-[15px]" }) }), unit === undefined ? null : (_jsx("span", { className: "ms-0.5 text-caption text-fg-subtle", children: unit }))] }));
|
|
64
|
+
}
|
|
46
65
|
return (_jsxs("div", { "data-invalid": error ? '' : undefined, className: cn('flex h-[34px] w-full min-w-0 items-stretch overflow-hidden rounded-md border border-border-strong bg-surface-2', 'transition-[border-color,box-shadow] duration-150', 'focus-within:border-accent focus-within:ring-[3px] focus-within:ring-accent-soft', 'has-[input:disabled]:pointer-events-none has-[input:disabled]:opacity-40', 'data-[invalid]:border-danger data-[invalid]:focus-within:ring-danger-soft', className), children: [_jsx("input", { ref: setRef, type: "number", inputMode: "decimal", value: current ?? '', onChange: (event) => {
|
|
47
66
|
const parsed = event.target.value === '' ? null : event.target.valueAsNumber;
|
|
48
67
|
commit(parsed === null || Number.isNaN(parsed) ? null : parsed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"NumberStepper.js","sourceRoot":"","sources":["../../../src/components/number-stepper/NumberStepper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export declare function paginationRange(page: number, pageCount: number, sibling
|
|
|
20
20
|
/**
|
|
21
21
|
* Pagination — 32px square page buttons (active = accent fill), mono numbers,
|
|
22
22
|
* RTL-mirrored chevrons, ellipsis windowing
|
|
23
|
-
* (research/design-system.md
|
|
23
|
+
* (research/design-system.md Tier 3).
|
|
24
24
|
*/
|
|
25
25
|
export declare function Pagination({ page, pageCount, onPageChange, siblingCount, label, previousLabel, nextLabel, pageLabel, className, ...props }: PaginationProps): import("react").JSX.Element;
|
|
26
26
|
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -26,7 +26,7 @@ const squareClasses = 'inline-flex size-8 shrink-0 items-center justify-center r
|
|
|
26
26
|
/**
|
|
27
27
|
* Pagination — 32px square page buttons (active = accent fill), mono numbers,
|
|
28
28
|
* RTL-mirrored chevrons, ellipsis windowing
|
|
29
|
-
* (research/design-system.md
|
|
29
|
+
* (research/design-system.md Tier 3).
|
|
30
30
|
*/
|
|
31
31
|
export function Pagination({ page, pageCount, onPageChange, siblingCount = 1, label, previousLabel, nextLabel, pageLabel, className, ...props }) {
|
|
32
32
|
const range = paginationRange(page, pageCount, siblingCount);
|
|
@@ -22,7 +22,7 @@ export interface PasswordStrengthProps extends ComponentPropsWithRef<'div'> {
|
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* PasswordStrength — segmented 4-bar meter + tone-colored label, injectable
|
|
25
|
-
* scoring (research/design-system.md
|
|
25
|
+
* scoring (research/design-system.md Tier 3, Auth screens). Announces via
|
|
26
26
|
* `role="meter"`; the label updates in an `aria-live` region.
|
|
27
27
|
*/
|
|
28
28
|
export declare function PasswordStrength({ value, score, labels, label, className, ...props }: PasswordStrengthProps): import("react").JSX.Element;
|
|
@@ -33,7 +33,7 @@ const labelTone = {
|
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
35
35
|
* PasswordStrength — segmented 4-bar meter + tone-colored label, injectable
|
|
36
|
-
* scoring (research/design-system.md
|
|
36
|
+
* scoring (research/design-system.md Tier 3, Auth screens). Announces via
|
|
37
37
|
* `role="meter"`; the label updates in an `aria-live` region.
|
|
38
38
|
*/
|
|
39
39
|
export function PasswordStrength({ value, score = defaultPasswordScore, labels, label, className, ...props }) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type * as React from 'react';
|
|
2
2
|
/**
|
|
3
|
-
* The RBAC grant-string grammar (apps/server/src/rbac/permissions.ts,
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* The RBAC grant-string grammar (apps/server/src/rbac/permissions.ts),
|
|
4
|
+
* mirrored as template-literal types so permission keys are checked at the
|
|
5
|
+
* call site:
|
|
6
6
|
*
|
|
7
7
|
* ```
|
|
8
8
|
* system:<area>:<verb> // closed set, e.g. system:roles:manage
|
|
@@ -11,7 +11,7 @@ export declare const PopoverClose: React.ForwardRefExoticComponent<PopoverPrimit
|
|
|
11
11
|
export type PopoverContentProps = Omit<React.ComponentPropsWithRef<typeof PopoverPrimitive.Content>, 'style'>;
|
|
12
12
|
/**
|
|
13
13
|
* Popover — anchored panel on `--surface`, radius 14 (`rounded-lg`),
|
|
14
|
-
* `--shadow-menu`, `nb-pop` entrance (research/design-system.md
|
|
14
|
+
* `--shadow-menu`, `nb-pop` entrance (research/design-system.md Tier 3).
|
|
15
15
|
* Focus is moved into the panel and trapped by Radix; Esc/outside-click
|
|
16
16
|
* dismiss and return focus to the trigger.
|
|
17
17
|
*/
|
|
@@ -13,7 +13,7 @@ export const PopoverAnchor = PopoverPrimitive.Anchor;
|
|
|
13
13
|
export const PopoverClose = PopoverPrimitive.Close;
|
|
14
14
|
/**
|
|
15
15
|
* Popover — anchored panel on `--surface`, radius 14 (`rounded-lg`),
|
|
16
|
-
* `--shadow-menu`, `nb-pop` entrance (research/design-system.md
|
|
16
|
+
* `--shadow-menu`, `nb-pop` entrance (research/design-system.md Tier 3).
|
|
17
17
|
* Focus is moved into the panel and trapped by Radix; Esc/outside-click
|
|
18
18
|
* dismiss and return focus to the trigger.
|
|
19
19
|
*/
|
|
@@ -3,7 +3,7 @@ import type * as React from 'react';
|
|
|
3
3
|
import type { Tone } from '../badge/Badge.js';
|
|
4
4
|
/**
|
|
5
5
|
* Pill progress track (surface-3) — 4/6/10px heights
|
|
6
|
-
* (research/design-system.md
|
|
6
|
+
* (research/design-system.md Tier 1).
|
|
7
7
|
*/
|
|
8
8
|
export declare const progressBarVariants: (props?: ({
|
|
9
9
|
size?: "sm" | "md" | "lg" | null | undefined;
|
|
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority';
|
|
|
4
4
|
import { cn } from '../../lib/cn.js';
|
|
5
5
|
/**
|
|
6
6
|
* Pill progress track (surface-3) — 4/6/10px heights
|
|
7
|
-
* (research/design-system.md
|
|
7
|
+
* (research/design-system.md Tier 1).
|
|
8
8
|
*/
|
|
9
9
|
export const progressBarVariants = cva('w-full overflow-hidden rounded-full bg-surface-3', {
|
|
10
10
|
variants: {
|
|
@@ -30,7 +30,7 @@ export function ProgressBar({ className, size, value, max = 100, tone = 'accent'
|
|
|
30
30
|
const pct = (clamped / upper) * 100;
|
|
31
31
|
return (_jsx("div", { role: "progressbar", "aria-valuemin": 0, "aria-valuemax": upper, "aria-valuenow": clamped, "aria-label": label, "data-tone": tone, className: cn(progressBarVariants({ size }), className), ...props, children: _jsx("div", { className: cn('h-full w-[var(--adm-progress)] rounded-full', FILL_TONE_CLASSES[tone], animated &&
|
|
32
32
|
'origin-[0%_50%] animate-[nb-grow_0.85s_cubic-bezier(.2,.7,.3,1)] [--nb-grow-x:0] [--nb-grow-y:1] rtl:origin-[100%_50%]'),
|
|
33
|
-
// Sanctioned escape hatch: CSS custom properties only
|
|
33
|
+
// Sanctioned escape hatch: CSS custom properties only.
|
|
34
34
|
style: { '--adm-progress': `${pct}%` } }) }));
|
|
35
35
|
}
|
|
36
36
|
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../src/components/progress-bar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAI/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,kDAAkD,EAAE;IACzF,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;SACZ;KACF;IACD,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAiBF,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,IAAI,EACJ,KAAK,EACL,GAAG,GAAG,GAAG,EACT,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,IAAI,EACf,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAEpC,OAAO,CACL,cACE,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,KAAK,mBACL,OAAO,gBACV,KAAK,eACN,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,YAET,cACE,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,iBAAiB,CAAC,IAAI,CAAC,EACvB,QAAQ;gBACN,wHAAwH,CAC3H;YACD,
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../src/components/progress-bar/ProgressBar.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAI/C,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAGrC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,kDAAkD,EAAE;IACzF,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,KAAK;YACT,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,OAAO;SACZ;KACF;IACD,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAyB;IAC9C,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,WAAW;IACnB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,WAAW;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAiBF,MAAM,UAAU,WAAW,CAAC,EAC1B,SAAS,EACT,IAAI,EACJ,KAAK,EACL,GAAG,GAAG,GAAG,EACT,IAAI,GAAG,QAAQ,EACf,QAAQ,GAAG,IAAI,EACf,KAAK,EACL,GAAG,KAAK,EACS;IACjB,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAEpC,OAAO,CACL,cACE,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,KAAK,mBACL,OAAO,gBACV,KAAK,eACN,IAAI,EACf,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACnD,KAAK,YAET,cACE,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,iBAAiB,CAAC,IAAI,CAAC,EACvB,QAAQ;gBACN,wHAAwH,CAC3H;YACD,uDAAuD;YACvD,KAAK,EAAE,EAAE,gBAAgB,EAAE,GAAG,GAAG,GAAG,EAAE,GACtC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -18,8 +18,8 @@ export interface RadioProps extends Omit<React.ComponentPropsWithRef<typeof Radi
|
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Radio — dot radio, 18px circle on `--surface-2`; checked = accent border +
|
|
21
|
-
* accent dot (research/design-system.md
|
|
22
|
-
*
|
|
21
|
+
* accent dot (research/design-system.md Tier 2). Card-styled selection lives
|
|
22
|
+
* in `RadioCard`.
|
|
23
23
|
*/
|
|
24
24
|
export declare function Radio({ label, description, className, id, ...props }: RadioProps): React.JSX.Element;
|
|
25
25
|
//# sourceMappingURL=Radio.d.ts.map
|
|
@@ -13,8 +13,8 @@ export function RadioGroup({ className, ...props }) {
|
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Radio — dot radio, 18px circle on `--surface-2`; checked = accent border +
|
|
16
|
-
* accent dot (research/design-system.md
|
|
17
|
-
*
|
|
16
|
+
* accent dot (research/design-system.md Tier 2). Card-styled selection lives
|
|
17
|
+
* in `RadioCard`.
|
|
18
18
|
*/
|
|
19
19
|
export function Radio({ label, description, className, id, ...props }) {
|
|
20
20
|
const generatedId = useId();
|
|
@@ -9,6 +9,17 @@ export interface RadioCardProps extends Omit<React.ComponentPropsWithRef<typeof
|
|
|
9
9
|
icon?: React.ReactNode | undefined;
|
|
10
10
|
/** Trailing slot on the title row — e.g. a mono price or a `Badge`. */
|
|
11
11
|
trailing?: React.ReactNode | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* The BIG line under the title, as the design comp draws it: 20px
|
|
14
|
+
* mono, tight tracking — a delivery window, a size, a duration.
|
|
15
|
+
*
|
|
16
|
+
* `valueLine`, not `value`: a radio item's `value` is what it SUBMITS, and
|
|
17
|
+
* this is what it shows. Distinct from `description`, which is the sentence
|
|
18
|
+
* under it — a card that offers a choice usually has one number worth reading
|
|
19
|
+
* from across the room and one line of prose, and folding them together made
|
|
20
|
+
* the number prose.
|
|
21
|
+
*/
|
|
22
|
+
valueLine?: React.ReactNode | undefined;
|
|
12
23
|
/** Hide the top-end check indicator shown when selected. */
|
|
13
24
|
hideIndicator?: boolean | undefined;
|
|
14
25
|
/**
|
|
@@ -16,19 +27,18 @@ export interface RadioCardProps extends Omit<React.ComponentPropsWithRef<typeof
|
|
|
16
27
|
*
|
|
17
28
|
* `row` (default) is the one every existing caller renders: a bare leading
|
|
18
29
|
* glyph beside a 13px title. `tile` and `stack` are the two the onboarding
|
|
19
|
-
* comps draw
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* work, and it is not exported.
|
|
30
|
+
* comps draw — a 40px accent-filling icon tile, leading with a description
|
|
31
|
+
* or centred above a label — and they are here rather than hand-rolled in
|
|
32
|
+
* the wizard because the Radix item underneath is what makes arrow keys
|
|
33
|
+
* and `aria-checked` work, and it is not exported.
|
|
24
34
|
*/
|
|
25
35
|
layout?: 'row' | 'tile' | 'stack' | undefined;
|
|
26
36
|
}
|
|
27
37
|
/**
|
|
28
38
|
* RadioCard — selectable card variant of the radio item
|
|
29
|
-
* (research/design-system.md
|
|
39
|
+
* (research/design-system.md Tier 2): full-card click target, selected =
|
|
30
40
|
* accent border + accent-soft bg + check indicator. Must be rendered inside
|
|
31
|
-
* a `RadioGroup` (
|
|
41
|
+
* a `RadioGroup` (./radio); arrow keys move and select between cards.
|
|
32
42
|
*/
|
|
33
|
-
export declare function RadioCard({ layout, title, description, icon, trailing, hideIndicator, className, ...props }: RadioCardProps): React.JSX.Element;
|
|
43
|
+
export declare function RadioCard({ layout, title, description, valueLine, icon, trailing, hideIndicator, className, ...props }: RadioCardProps): React.JSX.Element;
|
|
34
44
|
//# sourceMappingURL=RadioCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioCard.d.ts","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACtH,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,6DAA6D;IAC7D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC
|
|
1
|
+
{"version":3,"file":"RadioCard.d.ts","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACtH,2EAA2E;IAC3E,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,uCAAuC;IACvC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,6DAA6D;IAC7D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACxC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AA4BD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,MAAc,EACd,KAAK,EACL,WAAW,EACX,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,aAAqB,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,qBA2DhB"}
|
|
@@ -28,12 +28,12 @@ const LAYOUT = {
|
|
|
28
28
|
};
|
|
29
29
|
/**
|
|
30
30
|
* RadioCard — selectable card variant of the radio item
|
|
31
|
-
* (research/design-system.md
|
|
31
|
+
* (research/design-system.md Tier 2): full-card click target, selected =
|
|
32
32
|
* accent border + accent-soft bg + check indicator. Must be rendered inside
|
|
33
|
-
* a `RadioGroup` (
|
|
33
|
+
* a `RadioGroup` (./radio); arrow keys move and select between cards.
|
|
34
34
|
*/
|
|
35
|
-
export function RadioCard({ layout = 'row', title, description, icon, trailing, hideIndicator = false, className, ...props }) {
|
|
36
|
-
return (_jsxs(RadioGroupPrimitive.Item, { className: cn('group relative flex w-full cursor-pointer border border-border-strong bg-surface text-start ', LAYOUT[layout].card, layout === 'stack' ? '' : 'text-start ', 'transition-[border-color,background-color,box-shadow] duration-150 hover:border-fg-subtle ', 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent ', 'disabled:pointer-events-none disabled:opacity-40 ', 'data-[state=checked]:border-accent data-[state=checked]:bg-accent-soft', className), ...props, children: [icon ? (_jsx("span", { "aria-hidden": "true", className: cn('flex shrink-0 text-fg-muted group-data-[state=checked]:text-accent', LAYOUT[layout].icon), children: icon })) : null, _jsxs("span", { className: cn('flex min-w-0 flex-col gap-0.5', layout === 'stack' ? 'items-center' : 'flex-1'), children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: LAYOUT[layout].title, children: title }), trailing ? _jsx("span", { className: "ms-auto flex shrink-0 items-center", children: trailing }) : null] }), description === undefined || description === null ? null : (_jsx("span", { className: LAYOUT[layout].description, children: description }))] }), hideIndicator ? null : (_jsx(RadioGroupPrimitive.Indicator, { "aria-hidden": "true", className: cn('absolute end-2.5 top-2.5 flex size-[18px] items-center justify-center rounded-full bg-accent text-accent-fg',
|
|
35
|
+
export function RadioCard({ layout = 'row', title, description, valueLine, icon, trailing, hideIndicator = false, className, ...props }) {
|
|
36
|
+
return (_jsxs(RadioGroupPrimitive.Item, { className: cn('group relative flex w-full cursor-pointer border border-border-strong bg-surface text-start ', LAYOUT[layout].card, layout === 'stack' ? '' : 'text-start ', 'transition-[border-color,background-color,box-shadow] duration-150 hover:border-fg-subtle ', 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent ', 'disabled:pointer-events-none disabled:opacity-40 ', 'data-[state=checked]:border-accent data-[state=checked]:bg-accent-soft', className), ...props, children: [icon ? (_jsx("span", { "aria-hidden": "true", className: cn('flex shrink-0 text-fg-muted group-data-[state=checked]:text-accent', LAYOUT[layout].icon), children: icon })) : null, _jsxs("span", { className: cn('flex min-w-0 flex-col gap-0.5', layout === 'stack' ? 'items-center' : 'flex-1'), children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx("span", { className: LAYOUT[layout].title, children: title }), trailing ? _jsx("span", { className: "ms-auto flex shrink-0 items-center", children: trailing }) : null] }), valueLine === undefined || valueLine === null ? null : (_jsx("span", { className: "font-mono text-[20px] font-extrabold tracking-[-0.02em] text-fg", children: valueLine })), description === undefined || description === null ? null : (_jsx("span", { className: LAYOUT[layout].description, children: description }))] }), hideIndicator ? null : (_jsx(RadioGroupPrimitive.Indicator, { "aria-hidden": "true", className: cn('absolute end-2.5 top-2.5 flex size-[18px] items-center justify-center rounded-full bg-accent text-accent-fg',
|
|
37
37
|
// keep the check clear of the trailing slot when both are present
|
|
38
38
|
trailing ? 'top-auto bottom-2.5' : ''), children: _jsx(Check, { strokeWidth: 3, className: "size-3" }) }))] }));
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioCard.js","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioCard.js","sourceRoot":"","sources":["../../../src/components/radio-card/RadioCard.tsx"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAGrC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAsCrC,+EAA+E;AAC/E,MAAM,MAAM,GAAG;IACb,GAAG,EAAE;QACH,IAAI,EAAE,oCAAoC;QAC1C,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EAAE,uCAAuC;KACrD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,2CAA2C;QACjD,IAAI,EACF,kEAAkE;YAClE,oGAAoG;QACtG,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,iDAAiD;KAC/D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,qEAAqE;QAC3E,IAAI,EACF,kEAAkE;YAClE,+FAA+F;QACjG,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,iDAAiD;KAC/D;CACO,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EACxB,MAAM,GAAG,KAAK,EACd,KAAK,EACL,WAAW,EACX,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,aAAa,GAAG,KAAK,EACrB,SAAS,EACT,GAAG,KAAK,EACO;IACf,OAAO,CACL,MAAC,mBAAmB,CAAC,IAAI,IACvB,SAAS,EAAE,EAAE,CACX,8FAA8F,EAC9F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EACnB,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EACvC,4FAA4F,EAC5F,sFAAsF,EACtF,mDAAmD,EACnD,wEAAwE,EACxE,SAAS,CACV,KACG,KAAK,aAER,IAAI,CAAC,CAAC,CAAC,CACN,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,oEAAoE,EACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CACpB,YAEA,IAAI,GACA,CACR,CAAC,CAAC,CAAC,IAAI,EACR,gBACE,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAC/C,aAED,gBAAM,SAAS,EAAC,yBAAyB,aACvC,eAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,YAAG,KAAK,GAAQ,EACpD,QAAQ,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,oCAAoC,YAAE,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,IACpF,EACN,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtD,eAAM,SAAS,EAAC,iEAAiE,YAC9E,SAAS,GACL,CACR,EACA,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC1D,eAAM,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,YAAG,WAAW,GAAQ,CAClE,IACI,EACN,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtB,KAAC,mBAAmB,CAAC,SAAS,mBAChB,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,6GAA6G;gBAC7G,kEAAkE;gBAClE,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACtC,YAED,KAAC,KAAK,IAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAC,QAAQ,GAAG,GACd,CACjC,IACwB,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The four states of the desktop runtime chip
|
|
3
|
-
*
|
|
2
|
+
* The four states of the desktop runtime chip, verbatim from that table's
|
|
3
|
+
* rows:
|
|
4
4
|
*
|
|
5
5
|
* | State | Chip | Tone |
|
|
6
6
|
* | Local DBs only, no sharing | `Local` (hard-drive icon) | muted |
|
|
@@ -25,9 +25,9 @@ export interface RuntimeChipProps {
|
|
|
25
25
|
*/
|
|
26
26
|
label: string;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
* "accent-soft; click → LAN panel". Supplying this renders a real `<button>`
|
|
29
|
+
* — not a `<span>` with a click handler — so the chip is reachable by
|
|
30
|
+
* keyboard and announced as actionable. Omit it and the chip is inert
|
|
31
31
|
* presentation, which is the honest rendering of the three states that have
|
|
32
32
|
* nowhere to go.
|
|
33
33
|
*/
|
|
@@ -43,12 +43,12 @@ export interface RuntimeChipProps {
|
|
|
43
43
|
}
|
|
44
44
|
/**
|
|
45
45
|
* The desktop runtime chip: what this Adminium is, and whether its data is
|
|
46
|
-
* where you think it is
|
|
47
|
-
*
|
|
46
|
+
* where you think it is. Sits in the topbar next to the environment area,
|
|
47
|
+
* desktop only.
|
|
48
48
|
*
|
|
49
49
|
* Fed by `GET /api/v1/system/info` + a connection-health poll — never by the
|
|
50
|
-
* preload bridge (
|
|
51
|
-
*
|
|
50
|
+
* preload bridge (is explicit, explains why: the server is the authority for
|
|
51
|
+
* feature gating, the bridge only for native affordances).
|
|
52
52
|
*/
|
|
53
53
|
export declare function RuntimeChip({ state, label, onClick, description, className }: RuntimeChipProps): import("react").JSX.Element;
|
|
54
54
|
//# sourceMappingURL=RuntimeChip.d.ts.map
|
|
@@ -4,10 +4,10 @@ import { Database, HardDrive, Unplug, Wifi } from 'lucide-react';
|
|
|
4
4
|
import { cn } from '../../lib/cn.js';
|
|
5
5
|
import { badgeVariants } from '../badge/Badge.js';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* The tone column, mapped onto the shared `Tone` vocabulary: "muted" is
|
|
8
|
+
* `neutral` (surface-3 + fg-muted), "accent-soft" is `accent` (accent-soft +
|
|
9
|
+
* accent), "warn" is `warn`. No new tints — the whole point of the vocabulary
|
|
10
|
+
* is that a chip cannot invent a colour.
|
|
11
11
|
*
|
|
12
12
|
* ICONS: `hard-drive` for `local` is specified. The rest follow
|
|
13
13
|
* `System States.dc.html`, whose "Database unreachable" state is a
|
|
@@ -24,12 +24,12 @@ const STATE_STYLES = Object.freeze({
|
|
|
24
24
|
});
|
|
25
25
|
/**
|
|
26
26
|
* The desktop runtime chip: what this Adminium is, and whether its data is
|
|
27
|
-
* where you think it is
|
|
28
|
-
*
|
|
27
|
+
* where you think it is. Sits in the topbar next to the environment area,
|
|
28
|
+
* desktop only.
|
|
29
29
|
*
|
|
30
30
|
* Fed by `GET /api/v1/system/info` + a connection-health poll — never by the
|
|
31
|
-
* preload bridge (
|
|
32
|
-
*
|
|
31
|
+
* preload bridge (is explicit, explains why: the server is the authority for
|
|
32
|
+
* feature gating, the bridge only for native affordances).
|
|
33
33
|
*/
|
|
34
34
|
export function RuntimeChip({ state, label, onClick, description, className }) {
|
|
35
35
|
const { icon: Icon, tone } = STATE_STYLES[state];
|
|
@@ -20,7 +20,7 @@ export type SearchInputProps = SearchInputBaseProps & ({
|
|
|
20
20
|
/**
|
|
21
21
|
* SearchInput — Search icon + borderless input inside a bordered `--surface-2`
|
|
22
22
|
* pill, optional `Kbd` "⌘K" chip and clear button
|
|
23
|
-
* (research/design-system.md
|
|
23
|
+
* (research/design-system.md Tier 2).
|
|
24
24
|
*/
|
|
25
25
|
export declare function SearchInput({ className, inputClassName, kbd, onClear, clearLabel, ref, onChange, ...inputProps }: SearchInputProps): React.JSX.Element;
|
|
26
26
|
export {};
|
|
@@ -7,7 +7,7 @@ import { Kbd } from '../kbd/index.js';
|
|
|
7
7
|
/**
|
|
8
8
|
* SearchInput — Search icon + borderless input inside a bordered `--surface-2`
|
|
9
9
|
* pill, optional `Kbd` "⌘K" chip and clear button
|
|
10
|
-
* (research/design-system.md
|
|
10
|
+
* (research/design-system.md Tier 2).
|
|
11
11
|
*/
|
|
12
12
|
export function SearchInput({ className, inputClassName, kbd, onClear, clearLabel, ref, onChange, ...inputProps }) {
|
|
13
13
|
const innerRef = useRef(null);
|
|
@@ -21,7 +21,7 @@ export interface SecretInputProps extends Omit<React.ComponentPropsWithRef<'inpu
|
|
|
21
21
|
* SecretInput — masked mono value (API keys, tokens) with an eye reveal
|
|
22
22
|
* toggle and a copy button that flips to a check + announces `copiedLabel`
|
|
23
23
|
* through a polite `aria-live` region for 1.4s
|
|
24
|
-
* (research/design-system.md
|
|
24
|
+
* (research/design-system.md Tier 2).
|
|
25
25
|
*/
|
|
26
26
|
export declare function SecretInput({ className, inputClassName, revealLabel, hideLabel, copyLabel, copiedLabel, error, onCopy, ref, ...inputProps }: SecretInputProps): React.JSX.Element;
|
|
27
27
|
//# sourceMappingURL=SecretInput.d.ts.map
|
|
@@ -11,7 +11,7 @@ export const SECRET_COPIED_MS = 1400;
|
|
|
11
11
|
* SecretInput — masked mono value (API keys, tokens) with an eye reveal
|
|
12
12
|
* toggle and a copy button that flips to a check + announces `copiedLabel`
|
|
13
13
|
* through a polite `aria-live` region for 1.4s
|
|
14
|
-
* (research/design-system.md
|
|
14
|
+
* (research/design-system.md Tier 2).
|
|
15
15
|
*/
|
|
16
16
|
export function SecretInput({ className, inputClassName, revealLabel, hideLabel, copyLabel, copiedLabel, error = false, onCopy, ref, ...inputProps }) {
|
|
17
17
|
const innerRef = useRef(null);
|