@panneau/ui 0.0.0-stage → 5.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -2
- package/dist/alert/Alert.css +78 -0
- package/dist/alert/Alert.d.ts +30 -0
- package/dist/alert/Alert.d.ts.map +1 -0
- package/dist/alert/Alert.js +64 -0
- package/dist/alert/Alert.js.map +1 -0
- package/dist/alert/Alert.module.js +30 -0
- package/dist/alert/Alert.module.js.map +1 -0
- package/dist/badge/Badge.css +60 -0
- package/dist/badge/Badge.d.ts +15 -0
- package/dist/badge/Badge.d.ts.map +1 -0
- package/dist/badge/Badge.js +21 -0
- package/dist/badge/Badge.js.map +1 -0
- package/dist/badge/Badge.module.js +22 -0
- package/dist/badge/Badge.module.js.map +1 -0
- package/dist/button/Button.css +112 -0
- package/dist/button/Button.d.ts +26 -0
- package/dist/button/Button.d.ts.map +1 -0
- package/dist/button/Button.js +39 -0
- package/dist/button/Button.js.map +1 -0
- package/dist/button/Button.module.js +28 -0
- package/dist/button/Button.module.js.map +1 -0
- package/dist/card/Card.css +50 -0
- package/dist/card/Card.d.ts +20 -0
- package/dist/card/Card.d.ts.map +1 -0
- package/dist/card/Card.js +38 -0
- package/dist/card/Card.js.map +1 -0
- package/dist/card/Card.module.js +18 -0
- package/dist/card/Card.module.js.map +1 -0
- package/dist/checkbox/Checkbox.css +79 -0
- package/dist/checkbox/Checkbox.d.ts +11 -0
- package/dist/checkbox/Checkbox.d.ts.map +1 -0
- package/dist/checkbox/Checkbox.js +43 -0
- package/dist/checkbox/Checkbox.js.map +1 -0
- package/dist/checkbox/Checkbox.module.js +16 -0
- package/dist/checkbox/Checkbox.module.js.map +1 -0
- package/dist/checkbox/ChoiceChrome.d.ts +15 -0
- package/dist/checkbox/ChoiceChrome.d.ts.map +1 -0
- package/dist/checkbox/ChoiceChrome.js +36 -0
- package/dist/checkbox/ChoiceChrome.js.map +1 -0
- package/dist/combo-box/ComboBox.css +26 -0
- package/dist/combo-box/ComboBox.d.ts +30 -0
- package/dist/combo-box/ComboBox.d.ts.map +1 -0
- package/dist/combo-box/ComboBox.js +106 -0
- package/dist/combo-box/ComboBox.js.map +1 -0
- package/dist/combo-box/ComboBox.module.js +14 -0
- package/dist/combo-box/ComboBox.module.js.map +1 -0
- package/dist/date-picker/DatePicker.css +135 -0
- package/dist/date-picker/DatePicker.d.ts +12 -0
- package/dist/date-picker/DatePicker.d.ts.map +1 -0
- package/dist/date-picker/DatePicker.js +93 -0
- package/dist/date-picker/DatePicker.js.map +1 -0
- package/dist/date-picker/DatePicker.module.js +30 -0
- package/dist/date-picker/DatePicker.module.js.map +1 -0
- package/dist/dialog/Dialog.css +126 -0
- package/dist/dialog/Dialog.d.ts +31 -0
- package/dist/dialog/Dialog.d.ts.map +1 -0
- package/dist/dialog/Dialog.js +61 -0
- package/dist/dialog/Dialog.js.map +1 -0
- package/dist/dialog/Dialog.module.js +30 -0
- package/dist/dialog/Dialog.module.js.map +1 -0
- package/dist/disclosure/Disclosure.css +54 -0
- package/dist/disclosure/Disclosure.d.ts +20 -0
- package/dist/disclosure/Disclosure.d.ts.map +1 -0
- package/dist/disclosure/Disclosure.js +43 -0
- package/dist/disclosure/Disclosure.js.map +1 -0
- package/dist/disclosure/Disclosure.module.js +22 -0
- package/dist/disclosure/Disclosure.module.js.map +1 -0
- package/dist/field/Field.css +145 -0
- package/dist/field/Field.module.js +30 -0
- package/dist/field/Field.module.js.map +1 -0
- package/dist/field/FieldParts.d.ts +32 -0
- package/dist/field/FieldParts.d.ts.map +1 -0
- package/dist/field/FieldParts.js +56 -0
- package/dist/field/FieldParts.js.map +1 -0
- package/dist/field/Fieldset.d.ts +22 -0
- package/dist/field/Fieldset.d.ts.map +1 -0
- package/dist/field/Fieldset.js +50 -0
- package/dist/field/Fieldset.js.map +1 -0
- package/dist/icon/Icon.css +5 -0
- package/dist/icon/Icon.d.ts +31 -0
- package/dist/icon/Icon.d.ts.map +1 -0
- package/dist/icon/Icon.js +29 -0
- package/dist/icon/Icon.js.map +1 -0
- package/dist/icon/Icon.module.js +8 -0
- package/dist/icon/Icon.module.js.map +1 -0
- package/dist/icon-button/IconButton.css +9 -0
- package/dist/icon-button/IconButton.d.ts +15 -0
- package/dist/icon-button/IconButton.d.ts.map +1 -0
- package/dist/icon-button/IconButton.js +26 -0
- package/dist/icon-button/IconButton.js.map +1 -0
- package/dist/icon-button/IconButton.module.js +12 -0
- package/dist/icon-button/IconButton.module.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/intl/messages.d.ts +2 -0
- package/dist/intl/messages.d.ts.map +1 -0
- package/dist/intl/messages.js +1 -0
- package/dist/intl/usePanneauIntl.d.ts +7 -0
- package/dist/intl/usePanneauIntl.d.ts.map +1 -0
- package/dist/intl/usePanneauIntl.js +22 -0
- package/dist/intl/usePanneauIntl.js.map +1 -0
- package/dist/locales/index.d.ts +15 -0
- package/dist/locales/index.d.ts.map +1 -0
- package/dist/locales/index.js +21 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/menu/Menu.d.ts +27 -0
- package/dist/menu/Menu.d.ts.map +1 -0
- package/dist/menu/Menu.js +57 -0
- package/dist/menu/Menu.js.map +1 -0
- package/dist/number-input/NumberInput.css +57 -0
- package/dist/number-input/NumberInput.d.ts +21 -0
- package/dist/number-input/NumberInput.d.ts.map +1 -0
- package/dist/number-input/NumberInput.js +82 -0
- package/dist/number-input/NumberInput.js.map +1 -0
- package/dist/number-input/NumberInput.module.js +16 -0
- package/dist/number-input/NumberInput.module.js.map +1 -0
- package/dist/popover/Popover.css +32 -0
- package/dist/popover/Popover.d.ts +18 -0
- package/dist/popover/Popover.d.ts.map +1 -0
- package/dist/popover/Popover.js +41 -0
- package/dist/popover/Popover.js.map +1 -0
- package/dist/popover/Popover.module.js +14 -0
- package/dist/popover/Popover.module.js.map +1 -0
- package/dist/radio-group/RadioGroup.css +83 -0
- package/dist/radio-group/RadioGroup.d.ts +12 -0
- package/dist/radio-group/RadioGroup.d.ts.map +1 -0
- package/dist/radio-group/RadioGroup.js +61 -0
- package/dist/radio-group/RadioGroup.js.map +1 -0
- package/dist/radio-group/RadioGroup.module.js +20 -0
- package/dist/radio-group/RadioGroup.module.js.map +1 -0
- package/dist/root/PanneauRoot.css +251 -0
- package/dist/root/PanneauRoot.d.ts +34 -0
- package/dist/root/PanneauRoot.d.ts.map +1 -0
- package/dist/root/PanneauRoot.js +84 -0
- package/dist/root/PanneauRoot.js.map +1 -0
- package/dist/root/PanneauRoot.module.js +12 -0
- package/dist/root/PanneauRoot.module.js.map +1 -0
- package/dist/select/ListBox.css +104 -0
- package/dist/select/ListBox.module.js +32 -0
- package/dist/select/ListBox.module.js.map +1 -0
- package/dist/select/Select.d.ts +45 -0
- package/dist/select/Select.d.ts.map +1 -0
- package/dist/select/Select.js +136 -0
- package/dist/select/Select.js.map +1 -0
- package/dist/spinner/Spinner.css +40 -0
- package/dist/spinner/Spinner.d.ts +11 -0
- package/dist/spinner/Spinner.d.ts.map +1 -0
- package/dist/spinner/Spinner.js +25 -0
- package/dist/spinner/Spinner.js.map +1 -0
- package/dist/spinner/Spinner.module.js +18 -0
- package/dist/spinner/Spinner.module.js.map +1 -0
- package/dist/switch/Switch.css +69 -0
- package/dist/switch/Switch.d.ts +11 -0
- package/dist/switch/Switch.d.ts.map +1 -0
- package/dist/switch/Switch.js +33 -0
- package/dist/switch/Switch.js.map +1 -0
- package/dist/switch/Switch.module.js +15 -0
- package/dist/switch/Switch.module.js.map +1 -0
- package/dist/tabs/Tabs.css +83 -0
- package/dist/tabs/Tabs.d.ts +27 -0
- package/dist/tabs/Tabs.d.ts.map +1 -0
- package/dist/tabs/Tabs.js +141 -0
- package/dist/tabs/Tabs.js.map +1 -0
- package/dist/tabs/Tabs.module.js +16 -0
- package/dist/tabs/Tabs.module.js.map +1 -0
- package/dist/text-area/TextArea.css +8 -0
- package/dist/text-area/TextArea.d.ts +11 -0
- package/dist/text-area/TextArea.d.ts.map +1 -0
- package/dist/text-area/TextArea.js +41 -0
- package/dist/text-area/TextArea.js.map +1 -0
- package/dist/text-area/TextArea.module.js +8 -0
- package/dist/text-area/TextArea.module.js.map +1 -0
- package/dist/text-input/TextInput.d.ts +17 -0
- package/dist/text-input/TextInput.d.ts.map +1 -0
- package/dist/text-input/TextInput.js +61 -0
- package/dist/text-input/TextInput.js.map +1 -0
- package/dist/theme/bootstrap.d.ts +8 -0
- package/dist/theme/bootstrap.d.ts.map +1 -0
- package/dist/theme/bootstrap.js +61 -0
- package/dist/theme/bootstrap.js.map +1 -0
- package/dist/theme/theme.d.ts +23 -0
- package/dist/theme/theme.d.ts.map +1 -0
- package/dist/theme/theme.js +30 -0
- package/dist/theme/theme.js.map +1 -0
- package/dist/time-input/TimeInput.d.ts +8 -0
- package/dist/time-input/TimeInput.d.ts.map +1 -0
- package/dist/time-input/TimeInput.js +45 -0
- package/dist/time-input/TimeInput.js.map +1 -0
- package/dist/toast/Toast.css +109 -0
- package/dist/toast/Toast.d.ts +39 -0
- package/dist/toast/Toast.d.ts.map +1 -0
- package/dist/toast/Toast.js +152 -0
- package/dist/toast/Toast.js.map +1 -0
- package/dist/toast/Toast.module.js +30 -0
- package/dist/toast/Toast.module.js.map +1 -0
- package/dist/tooltip/Tooltip.css +25 -0
- package/dist/tooltip/Tooltip.d.ts +19 -0
- package/dist/tooltip/Tooltip.d.ts.map +1 -0
- package/dist/tooltip/Tooltip.js +29 -0
- package/dist/tooltip/Tooltip.js.map +1 -0
- package/dist/tooltip/Tooltip.module.js +12 -0
- package/dist/tooltip/Tooltip.module.js.map +1 -0
- package/dist/utils/cx.d.ts +3 -0
- package/dist/utils/cx.d.ts.map +1 -0
- package/dist/utils/cx.js +9 -0
- package/dist/utils/cx.js.map +1 -0
- package/package.json +48 -5
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
.panneau-control-DKgKDX.panneau-control-DKgKDX {
|
|
2
|
+
padding-inline-end: 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.panneau-input-wYghuH {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex: 1 1 auto;
|
|
8
|
+
align-items: center;
|
|
9
|
+
min-width: 0;
|
|
10
|
+
overflow-x: auto;
|
|
11
|
+
white-space: nowrap;
|
|
12
|
+
font-variant-numeric: tabular-nums;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.panneau-segment-hRUT-e {
|
|
16
|
+
padding: 0 0.0625rem;
|
|
17
|
+
border-radius: var(--panneau-radius-sm);
|
|
18
|
+
outline: none;
|
|
19
|
+
caret-color: transparent;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.panneau-segment-hRUT-e[data-type='literal'] {
|
|
23
|
+
padding: 0;
|
|
24
|
+
color: var(--panneau-color-text-muted);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.panneau-segment-hRUT-e[data-placeholder] {
|
|
28
|
+
color: var(--panneau-color-text-muted);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.panneau-segment-hRUT-e[data-focused] {
|
|
32
|
+
color: var(--panneau-color-accent-text);
|
|
33
|
+
background-color: var(--panneau-color-accent);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.panneau-button-SywO8u {
|
|
37
|
+
display: flex;
|
|
38
|
+
align-items: center;
|
|
39
|
+
justify-content: center;
|
|
40
|
+
align-self: stretch;
|
|
41
|
+
width: 2.25rem;
|
|
42
|
+
padding: 0;
|
|
43
|
+
color: var(--panneau-color-text-muted);
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
background: transparent;
|
|
46
|
+
border: 0;
|
|
47
|
+
border-inline-start: var(--panneau-border-width) solid var(--panneau-color-border);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.panneau-button-SywO8u[data-hovered] {
|
|
51
|
+
color: var(--panneau-color-text);
|
|
52
|
+
background-color: var(--panneau-color-hover);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.panneau-button-SywO8u[data-focus-visible] {
|
|
56
|
+
outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
|
|
57
|
+
outline-offset: -2px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.panneau-calendar-F3LtsQ {
|
|
61
|
+
width: max-content;
|
|
62
|
+
max-width: 100%;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.panneau-header-p4dCKF {
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: space-between;
|
|
69
|
+
gap: var(--panneau-space-2);
|
|
70
|
+
margin-bottom: var(--panneau-space-2);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.panneau-heading-V16FH- {
|
|
74
|
+
margin: 0;
|
|
75
|
+
font-size: var(--panneau-font-size-md);
|
|
76
|
+
font-weight: var(--panneau-font-weight-bold);
|
|
77
|
+
text-transform: capitalize;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.panneau-grid-eanFoG {
|
|
81
|
+
border-collapse: collapse;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.panneau-weekday-DwEU9E {
|
|
85
|
+
padding-bottom: var(--panneau-space-1);
|
|
86
|
+
font-size: var(--panneau-font-size-xs);
|
|
87
|
+
font-weight: var(--panneau-font-weight-medium);
|
|
88
|
+
color: var(--panneau-color-text-muted);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.panneau-cell-WCk0GL {
|
|
92
|
+
display: flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
justify-content: center;
|
|
95
|
+
width: 2.25rem;
|
|
96
|
+
height: 2.25rem;
|
|
97
|
+
font-size: var(--panneau-font-size-md);
|
|
98
|
+
font-variant-numeric: tabular-nums;
|
|
99
|
+
cursor: pointer;
|
|
100
|
+
border-radius: var(--panneau-radius-md);
|
|
101
|
+
outline: none;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.panneau-cell-WCk0GL[data-outside-month] {
|
|
105
|
+
display: none;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.panneau-cell-WCk0GL[data-hovered] {
|
|
109
|
+
background-color: var(--panneau-color-hover);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.panneau-cell-WCk0GL[data-selected] {
|
|
113
|
+
color: var(--panneau-color-accent-text);
|
|
114
|
+
background-color: var(--panneau-color-accent);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.panneau-cell-WCk0GL[data-today]:not([data-selected]) {
|
|
118
|
+
font-weight: var(--panneau-font-weight-bold);
|
|
119
|
+
box-shadow: inset 0 0 0 1px var(--panneau-color-border-control);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.panneau-cell-WCk0GL[data-disabled],
|
|
123
|
+
.panneau-cell-WCk0GL[data-unavailable] {
|
|
124
|
+
cursor: not-allowed;
|
|
125
|
+
opacity: 0.4;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.panneau-cell-WCk0GL[data-focus-visible] {
|
|
129
|
+
outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
|
|
130
|
+
outline-offset: 1px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.panneau-time-3Ejhhf {
|
|
134
|
+
margin-top: var(--panneau-space-3);
|
|
135
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type DatePickerProps as AriaDatePickerProps, type DateValue } from 'react-aria-components';
|
|
2
|
+
import { type FieldChromeProps } from '../field/FieldParts';
|
|
3
|
+
export interface DatePickerProps extends Omit<AriaDatePickerProps<DateValue>, 'className' | 'style' | 'children' | 'isInvalid' | 'validate'>, FieldChromeProps {
|
|
4
|
+
controlClassName?: string;
|
|
5
|
+
popoverClassName?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A date, or a date and time with `granularity="minute"`, typed segment by segment in the order of
|
|
9
|
+
* the locale, or picked in a calendar. Values are `@internationalized/date` objects.
|
|
10
|
+
*/
|
|
11
|
+
export declare function DatePicker({ label, description, errors, isRequired, isReadOnly, className, labelClassName, descriptionClassName, errorsClassName, controlClassName, popoverClassName, ...props }: DatePickerProps): import("react").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/date-picker/DatePicker.tsx"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,eAAe,IAAI,mBAAmB,EAU3C,KAAK,SAAS,EAIjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,qBAAqB,CAAC;AAO7B,MAAM,WAAW,eACb,SACI,IAAI,CACA,mBAAmB,CAAC,SAAS,CAAC,EAC9B,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAChE,EACD,gBAAgB;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,WAAW,EACX,MAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,GAAG,KAAK,EACX,EAAE,eAAe,+BA0DjB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { cx } from "../utils/cx.js";
|
|
2
|
+
import { Icon } from "../icon/Icon.js";
|
|
3
|
+
import Field_module_default from "../field/Field.module.js";
|
|
4
|
+
import { FieldDescription, FieldErrors, FieldLabel } from "../field/FieldParts.js";
|
|
5
|
+
import Popover_module_default from "../popover/Popover.module.js";
|
|
6
|
+
import { PopoverSurface } from "../popover/Popover.js";
|
|
7
|
+
import DatePicker_module_default from "./DatePicker.module.js";
|
|
8
|
+
import { CalendarDays, ChevronLeft, ChevronRight } from "lucide-react";
|
|
9
|
+
import { Button, Calendar, CalendarCell, CalendarGrid, CalendarGridBody, CalendarGridHeader, CalendarHeaderCell, DateInput, DatePicker, DateSegment, Dialog, Group, Heading } from "react-aria-components";
|
|
10
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
+
//#region src/date-picker/DatePicker.tsx
|
|
12
|
+
/**
|
|
13
|
+
* A date, or a date and time with `granularity="minute"`, typed segment by segment in the order of
|
|
14
|
+
* the locale, or picked in a calendar. Values are `@internationalized/date` objects.
|
|
15
|
+
*/
|
|
16
|
+
function DatePicker$1({ label, description, errors = [], isRequired, isReadOnly, className, labelClassName, descriptionClassName, errorsClassName, controlClassName, popoverClassName, ...props }) {
|
|
17
|
+
const invalid = errors.length > 0;
|
|
18
|
+
return /* @__PURE__ */ jsxs(DatePicker, {
|
|
19
|
+
...props,
|
|
20
|
+
isRequired,
|
|
21
|
+
isReadOnly,
|
|
22
|
+
isInvalid: invalid,
|
|
23
|
+
validationBehavior: "aria",
|
|
24
|
+
className: cx(Field_module_default.field, className),
|
|
25
|
+
children: [
|
|
26
|
+
/* @__PURE__ */ jsx(FieldLabel, {
|
|
27
|
+
isRequired,
|
|
28
|
+
className: labelClassName,
|
|
29
|
+
children: label
|
|
30
|
+
}),
|
|
31
|
+
/* @__PURE__ */ jsxs(Group, {
|
|
32
|
+
className: cx(Field_module_default.control, DatePicker_module_default.control, controlClassName),
|
|
33
|
+
"data-readonly": isReadOnly || void 0,
|
|
34
|
+
children: [/* @__PURE__ */ jsx(DateInput, {
|
|
35
|
+
className: DatePicker_module_default.input,
|
|
36
|
+
children: (segment) => /* @__PURE__ */ jsx(DateSegment, {
|
|
37
|
+
segment,
|
|
38
|
+
className: DatePicker_module_default.segment
|
|
39
|
+
})
|
|
40
|
+
}), isReadOnly !== true ? /* @__PURE__ */ jsx(Button, {
|
|
41
|
+
className: DatePicker_module_default.button,
|
|
42
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: CalendarDays })
|
|
43
|
+
}) : null]
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ jsx(FieldDescription, {
|
|
46
|
+
className: descriptionClassName,
|
|
47
|
+
children: description
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ jsx(FieldErrors, {
|
|
50
|
+
errors,
|
|
51
|
+
className: errorsClassName
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ jsx(PopoverSurface, {
|
|
54
|
+
className: popoverClassName,
|
|
55
|
+
children: /* @__PURE__ */ jsx(Dialog, {
|
|
56
|
+
className: Popover_module_default.dialog,
|
|
57
|
+
children: /* @__PURE__ */ jsxs(Calendar, {
|
|
58
|
+
className: DatePicker_module_default.calendar,
|
|
59
|
+
children: [/* @__PURE__ */ jsxs("header", {
|
|
60
|
+
className: DatePicker_module_default.header,
|
|
61
|
+
children: [
|
|
62
|
+
/* @__PURE__ */ jsx(Button, {
|
|
63
|
+
slot: "previous",
|
|
64
|
+
className: DatePicker_module_default.button,
|
|
65
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: ChevronLeft })
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ jsx(Heading, { className: DatePicker_module_default.heading }),
|
|
68
|
+
/* @__PURE__ */ jsx(Button, {
|
|
69
|
+
slot: "next",
|
|
70
|
+
className: DatePicker_module_default.button,
|
|
71
|
+
children: /* @__PURE__ */ jsx(Icon, { icon: ChevronRight })
|
|
72
|
+
})
|
|
73
|
+
]
|
|
74
|
+
}), /* @__PURE__ */ jsxs(CalendarGrid, {
|
|
75
|
+
className: DatePicker_module_default.grid,
|
|
76
|
+
children: [/* @__PURE__ */ jsx(CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsx(CalendarHeaderCell, {
|
|
77
|
+
className: DatePicker_module_default.weekday,
|
|
78
|
+
children: day
|
|
79
|
+
}) }), /* @__PURE__ */ jsx(CalendarGridBody, { children: (date) => /* @__PURE__ */ jsx(CalendarCell, {
|
|
80
|
+
date,
|
|
81
|
+
className: DatePicker_module_default.cell
|
|
82
|
+
}) })]
|
|
83
|
+
})]
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
})
|
|
87
|
+
]
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
export { DatePicker$1 as DatePicker };
|
|
92
|
+
|
|
93
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":["DatePicker","AriaDatePicker","fieldStyles","styles","popoverStyles"],"sources":["../../src/date-picker/DatePicker.tsx"],"sourcesContent":["import { CalendarDays, ChevronLeft, ChevronRight } from 'lucide-react';\nimport {\n DatePicker as AriaDatePicker,\n type DatePickerProps as AriaDatePickerProps,\n Button,\n Calendar,\n CalendarCell,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHeader,\n CalendarHeaderCell,\n DateInput,\n DateSegment,\n type DateValue,\n Dialog,\n Group,\n Heading,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles,\n} from '../field/FieldParts';\nimport { Icon } from '../icon/Icon';\nimport { PopoverSurface } from '../popover/Popover';\nimport popoverStyles from '../popover/Popover.module.css';\nimport { cx } from '../utils/cx';\nimport styles from './DatePicker.module.css';\n\nexport interface DatePickerProps\n extends\n Omit<\n AriaDatePickerProps<DateValue>,\n 'className' | 'style' | 'children' | 'isInvalid' | 'validate'\n >,\n FieldChromeProps {\n controlClassName?: string;\n popoverClassName?: string;\n}\n\n/**\n * A date, or a date and time with `granularity=\"minute\"`, typed segment by segment in the order of\n * the locale, or picked in a calendar. Values are `@internationalized/date` objects.\n */\nexport function DatePicker({\n label,\n description,\n errors = [],\n isRequired,\n isReadOnly,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n popoverClassName,\n ...props\n}: DatePickerProps) {\n const invalid = errors.length > 0;\n return (\n <AriaDatePicker\n {...props}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isInvalid={invalid}\n validationBehavior=\"aria\"\n className={cx(fieldStyles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n <Group\n className={cx(fieldStyles.control, styles.control, controlClassName)}\n data-readonly={isReadOnly || undefined}\n >\n <DateInput className={styles.input}>\n {(segment) => <DateSegment segment={segment} className={styles.segment} />}\n </DateInput>\n {isReadOnly !== true ? (\n <Button className={styles.button}>\n <Icon icon={CalendarDays} />\n </Button>\n ) : null}\n </Group>\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n <PopoverSurface className={popoverClassName}>\n <Dialog className={popoverStyles.dialog}>\n <Calendar className={styles.calendar}>\n <header className={styles.header}>\n <Button slot=\"previous\" className={styles.button}>\n <Icon icon={ChevronLeft} />\n </Button>\n <Heading className={styles.heading} />\n <Button slot=\"next\" className={styles.button}>\n <Icon icon={ChevronRight} />\n </Button>\n </header>\n <CalendarGrid className={styles.grid}>\n <CalendarGridHeader>\n {(day) => (\n <CalendarHeaderCell className={styles.weekday}>\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody>\n {(date) => <CalendarCell date={date} className={styles.cell} />}\n </CalendarGridBody>\n </CalendarGrid>\n </Calendar>\n </Dialog>\n </PopoverSurface>\n </AriaDatePicker>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AA+CA,SAAgBA,aAAW,EACvB,OACA,aACA,SAAS,CAAA,GACT,YACA,YACA,WACA,gBACA,sBACA,iBACA,kBACA,kBACA,GAAG,SACa;CAChB,MAAM,UAAU,OAAO,SAAS;CAChC,OACI,qBAACC,YAAD;EACI,GAAI;EACQ;EACA;EACZ,WAAW;EACX,oBAAmB;EACnB,WAAW,GAAGC,qBAAY,OAAO,SAAS;EAN9C,UAAA;GAQI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACZ,qBAAC,OAAD;IACI,WAAW,GAAGA,qBAAY,SAASC,0BAAO,SAAS,gBAAgB;IACnE,iBAAe,cAAc,KAAA;IAFjC,UAAA,CAII,oBAAC,WAAD;KAAW,WAAWA,0BAAO;KACvB,WAAA,YAAY,oBAAC,aAAD;MAAsB;MAAS,WAAWA,0BAAO;KAAQ,CAAA;IAChE,CAAA,GACV,eAAe,OACZ,oBAAC,QAAD;KAAQ,WAAWA,0BAAO;KACtB,UAAA,oBAAC,MAAD,EAAM,MAAM,aAAa,CAAA;IACrB,CAAA,IACR,IACD;;GACP,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;GACxD,oBAAC,gBAAD;IAAgB,WAAW;IACvB,UAAA,oBAAC,QAAD;KAAQ,WAAWC,uBAAc;KAC7B,UAAA,qBAAC,UAAD;MAAU,WAAWD,0BAAO;MAA5B,UAAA,CACI,qBAAC,UAAD;OAAQ,WAAWA,0BAAO;OAA1B,UAAA;QACI,oBAAC,QAAD;SAAQ,MAAK;SAAW,WAAWA,0BAAO;SACtC,UAAA,oBAAC,MAAD,EAAM,MAAM,YAAY,CAAA;QACpB,CAAA;QACR,oBAAC,SAAD,EAAS,WAAWA,0BAAO,QAAQ,CAAA;QACnC,oBAAC,QAAD;SAAQ,MAAK;SAAO,WAAWA,0BAAO;SAClC,UAAA,oBAAC,MAAD,EAAM,MAAM,aAAa,CAAA;QACrB,CAAA;OACJ;MACR,CAAA,GAAA,qBAAC,cAAD;OAAc,WAAWA,0BAAO;OAAhC,UAAA,CACI,oBAAC,oBAAD,EAAA,WACM,QACE,oBAAC,oBAAD;QAAoB,WAAWA,0BAAO;QACjC,UAAA;OACe,CAAA,EAER,CAAA,GACpB,oBAAC,kBAAD,EAAA,WACM,SAAS,oBAAC,cAAD;QAAoB;QAAM,WAAWA,0BAAO;OAAK,CAAA,EAC9C,CAAA,CACR;MACR,CAAA,CAAA;;IACN,CAAA;GACI,CAAA;EACJ;;AAExB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import "./DatePicker.css";
|
|
2
|
+
//#region src/date-picker/DatePicker.module.css
|
|
3
|
+
var control = "panneau-control-DKgKDX";
|
|
4
|
+
var input = "panneau-input-wYghuH";
|
|
5
|
+
var segment = "panneau-segment-hRUT-e";
|
|
6
|
+
var button = "panneau-button-SywO8u";
|
|
7
|
+
var calendar = "panneau-calendar-F3LtsQ";
|
|
8
|
+
var header = "panneau-header-p4dCKF";
|
|
9
|
+
var heading = "panneau-heading-V16FH-";
|
|
10
|
+
var grid = "panneau-grid-eanFoG";
|
|
11
|
+
var weekday = "panneau-weekday-DwEU9E";
|
|
12
|
+
var cell = "panneau-cell-WCk0GL";
|
|
13
|
+
var time = "panneau-time-3Ejhhf";
|
|
14
|
+
var DatePicker_module_default = {
|
|
15
|
+
control,
|
|
16
|
+
input,
|
|
17
|
+
segment,
|
|
18
|
+
button,
|
|
19
|
+
calendar,
|
|
20
|
+
header,
|
|
21
|
+
heading,
|
|
22
|
+
grid,
|
|
23
|
+
weekday,
|
|
24
|
+
cell,
|
|
25
|
+
time
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { button, calendar, cell, control, DatePicker_module_default as default, grid, header, heading, input, segment, time, weekday };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=DatePicker.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.module.js","names":[],"sources":["../../src/date-picker/DatePicker.module.css"],"sourcesContent":[".control.control {\n padding-inline-end: 0;\n}\n\n.input {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-width: 0;\n overflow-x: auto;\n white-space: nowrap;\n font-variant-numeric: tabular-nums;\n}\n\n.segment {\n padding: 0 0.0625rem;\n border-radius: var(--panneau-radius-sm);\n outline: none;\n caret-color: transparent;\n}\n\n.segment[data-type='literal'] {\n padding: 0;\n color: var(--panneau-color-text-muted);\n}\n\n.segment[data-placeholder] {\n color: var(--panneau-color-text-muted);\n}\n\n.segment[data-focused] {\n color: var(--panneau-color-accent-text);\n background-color: var(--panneau-color-accent);\n}\n\n.button {\n display: flex;\n align-items: center;\n justify-content: center;\n align-self: stretch;\n width: 2.25rem;\n padding: 0;\n color: var(--panneau-color-text-muted);\n cursor: pointer;\n background: transparent;\n border: 0;\n border-inline-start: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n.button[data-hovered] {\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-hover);\n}\n\n.button[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: -2px;\n}\n\n.calendar {\n width: max-content;\n max-width: 100%;\n}\n\n.header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--panneau-space-2);\n margin-bottom: var(--panneau-space-2);\n}\n\n.heading {\n margin: 0;\n font-size: var(--panneau-font-size-md);\n font-weight: var(--panneau-font-weight-bold);\n text-transform: capitalize;\n}\n\n.grid {\n border-collapse: collapse;\n}\n\n.weekday {\n padding-bottom: var(--panneau-space-1);\n font-size: var(--panneau-font-size-xs);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n}\n\n.cell {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 2.25rem;\n height: 2.25rem;\n font-size: var(--panneau-font-size-md);\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n border-radius: var(--panneau-radius-md);\n outline: none;\n}\n\n.cell[data-outside-month] {\n display: none;\n}\n\n.cell[data-hovered] {\n background-color: var(--panneau-color-hover);\n}\n\n.cell[data-selected] {\n color: var(--panneau-color-accent-text);\n background-color: var(--panneau-color-accent);\n}\n\n.cell[data-today]:not([data-selected]) {\n font-weight: var(--panneau-font-weight-bold);\n box-shadow: inset 0 0 0 1px var(--panneau-color-border-control);\n}\n\n.cell[data-disabled],\n.cell[data-unavailable] {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.cell[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 1px;\n}\n\n.time {\n margin-top: var(--panneau-space-3);\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
.panneau-overlay-nLaR62 {
|
|
2
|
+
position: fixed;
|
|
3
|
+
inset: 0;
|
|
4
|
+
z-index: var(--panneau-z-overlay);
|
|
5
|
+
display: flex;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
min-height: 100dvh;
|
|
9
|
+
padding: var(--panneau-space-4);
|
|
10
|
+
background-color: var(--panneau-color-backdrop);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.panneau-overlay-nLaR62[data-entering] {
|
|
14
|
+
animation: panneau-fade-wJ4pz5 var(--panneau-duration) ease-out;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.panneau-overlay-nLaR62[data-exiting] {
|
|
18
|
+
animation: panneau-fade-wJ4pz5 var(--panneau-duration) ease-in reverse;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.panneau-modal-Ucsou3 {
|
|
22
|
+
display: flex;
|
|
23
|
+
width: 100%;
|
|
24
|
+
max-width: 32rem;
|
|
25
|
+
max-height: calc(100dvh - 2 * var(--panneau-space-4));
|
|
26
|
+
outline: none;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.panneau-sm-pQA1LI {
|
|
30
|
+
max-width: 24rem;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.panneau-lg-YG9jfw {
|
|
34
|
+
max-width: 48rem;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.panneau-modal-Ucsou3[data-entering] {
|
|
38
|
+
animation: panneau-rise-13o1zo var(--panneau-duration) ease-out;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.panneau-dialog-Q-k-Yw {
|
|
42
|
+
display: flex;
|
|
43
|
+
flex-direction: column;
|
|
44
|
+
width: 100%;
|
|
45
|
+
max-height: inherit;
|
|
46
|
+
color: var(--panneau-color-text);
|
|
47
|
+
background-color: var(--panneau-color-surface-raised);
|
|
48
|
+
border-radius: var(--panneau-radius-lg);
|
|
49
|
+
box-shadow: var(--panneau-shadow-lg);
|
|
50
|
+
outline: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.panneau-header-rSdjF8 {
|
|
54
|
+
display: flex;
|
|
55
|
+
align-items: flex-start;
|
|
56
|
+
gap: var(--panneau-space-3);
|
|
57
|
+
padding: var(--panneau-space-4) var(--panneau-space-4) 0 var(--panneau-space-5);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.panneau-title-JCRwmh {
|
|
61
|
+
flex: 1 1 auto;
|
|
62
|
+
min-width: 0;
|
|
63
|
+
padding-top: var(--panneau-space-1);
|
|
64
|
+
font-size: var(--panneau-font-size-lg);
|
|
65
|
+
font-weight: var(--panneau-font-weight-bold);
|
|
66
|
+
line-height: var(--panneau-line-height-tight);
|
|
67
|
+
overflow-wrap: anywhere;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.panneau-body-HZoCzz {
|
|
71
|
+
flex: 1 1 auto;
|
|
72
|
+
min-height: 0;
|
|
73
|
+
padding: var(--panneau-space-3) var(--panneau-space-5) var(--panneau-space-4);
|
|
74
|
+
overflow-y: auto;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.panneau-footer-zpq7M7 {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-wrap: wrap;
|
|
80
|
+
justify-content: flex-end;
|
|
81
|
+
gap: var(--panneau-space-2);
|
|
82
|
+
padding: var(--panneau-space-3) var(--panneau-space-5) var(--panneau-space-4);
|
|
83
|
+
border-top: var(--panneau-border-width) solid var(--panneau-color-border);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Phones: the dialog is a sheet at the bottom, with full-width buttons. */
|
|
87
|
+
@media (max-width: 30rem) {
|
|
88
|
+
.panneau-overlay-nLaR62 {
|
|
89
|
+
align-items: flex-end;
|
|
90
|
+
padding: 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.panneau-modal-Ucsou3,
|
|
94
|
+
.panneau-sm-pQA1LI,
|
|
95
|
+
.panneau-lg-YG9jfw {
|
|
96
|
+
max-width: none;
|
|
97
|
+
max-height: calc(100dvh - var(--panneau-space-8));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.panneau-dialog-Q-k-Yw {
|
|
101
|
+
border-end-start-radius: 0;
|
|
102
|
+
border-end-end-radius: 0;
|
|
103
|
+
padding-bottom: env(safe-area-inset-bottom);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.panneau-footer-zpq7M7 {
|
|
107
|
+
flex-direction: column-reverse;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.panneau-footer-zpq7M7 > * {
|
|
111
|
+
width: 100%;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@keyframes panneau-fade-wJ4pz5 {
|
|
116
|
+
from {
|
|
117
|
+
opacity: 0;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@keyframes panneau-rise-13o1zo {
|
|
122
|
+
from {
|
|
123
|
+
opacity: 0;
|
|
124
|
+
transform: translateY(0.5rem);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type ModalOverlayProps } from 'react-aria-components';
|
|
3
|
+
export interface DialogProps extends Pick<ModalOverlayProps, 'isOpen' | 'defaultOpen' | 'onOpenChange' | 'isKeyboardDismissDisabled'> {
|
|
4
|
+
/** Heading of the dialog, which also labels it. */
|
|
5
|
+
title: ReactNode;
|
|
6
|
+
/** Content, or a function that gets `close()`. */
|
|
7
|
+
children?: ReactNode | ((close: () => void) => ReactNode);
|
|
8
|
+
/** Buttons at the bottom, or a function that gets `close()`. */
|
|
9
|
+
footer?: ReactNode | ((close: () => void) => ReactNode);
|
|
10
|
+
/**
|
|
11
|
+
* Closes on a click outside and shows a close button. Defaults to true. Turn it off for dialogs
|
|
12
|
+
* that need an answer.
|
|
13
|
+
*/
|
|
14
|
+
isDismissable?: boolean;
|
|
15
|
+
/** `alertdialog` for confirmations and interruptions. Defaults to `dialog`. */
|
|
16
|
+
role?: 'dialog' | 'alertdialog';
|
|
17
|
+
size?: 'sm' | 'md' | 'lg';
|
|
18
|
+
className?: string;
|
|
19
|
+
overlayClassName?: string;
|
|
20
|
+
headerClassName?: string;
|
|
21
|
+
bodyClassName?: string;
|
|
22
|
+
footerClassName?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A modal dialog. Controlled with `isOpen` and `onOpenChange`, or inside a `DialogTrigger` with
|
|
26
|
+
* its button as the first child. It traps focus, closes with Escape, and returns focus when it
|
|
27
|
+
* closes. On phones, it opens as a sheet at the bottom of the screen.
|
|
28
|
+
*/
|
|
29
|
+
export declare function Dialog({ title, children, footer, isDismissable, role, size, className, overlayClassName, headerClassName, bodyClassName, footerClassName, ...props }: DialogProps): import("react").JSX.Element | null;
|
|
30
|
+
export { DialogTrigger } from 'react-aria-components';
|
|
31
|
+
//# sourceMappingURL=Dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../src/dialog/Dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAKH,KAAK,iBAAiB,EACzB,MAAM,uBAAuB,CAAC;AAS/B,MAAM,WAAW,WAAY,SAAQ,IAAI,CACrC,iBAAiB,EACjB,QAAQ,GAAG,aAAa,GAAG,cAAc,GAAG,2BAA2B,CAC1E;IACG,mDAAmD;IACnD,KAAK,EAAE,SAAS,CAAC;IACjB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IAC1D,gEAAgE;IAChE,MAAM,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,CAAC;IACxD;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACnB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,aAAoB,EACpB,IAAe,EACf,IAAW,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,GAAG,KAAK,EACX,EAAE,WAAW,sCA6Cb;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { cx } from "../utils/cx.js";
|
|
2
|
+
import { messages } from "../intl/messages.js";
|
|
3
|
+
import { usePanneauIntl } from "../intl/usePanneauIntl.js";
|
|
4
|
+
import { usePortalContainer } from "../root/PanneauRoot.js";
|
|
5
|
+
import { IconButton } from "../icon-button/IconButton.js";
|
|
6
|
+
import Dialog_module_default from "./Dialog.module.js";
|
|
7
|
+
import { X } from "lucide-react";
|
|
8
|
+
import { Dialog, DialogTrigger, Heading, Modal, ModalOverlay } from "react-aria-components";
|
|
9
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
10
|
+
//#region src/dialog/Dialog.tsx
|
|
11
|
+
/**
|
|
12
|
+
* A modal dialog. Controlled with `isOpen` and `onOpenChange`, or inside a `DialogTrigger` with
|
|
13
|
+
* its button as the first child. It traps focus, closes with Escape, and returns focus when it
|
|
14
|
+
* closes. On phones, it opens as a sheet at the bottom of the screen.
|
|
15
|
+
*/
|
|
16
|
+
function Dialog$1({ title, children, footer, isDismissable = true, role = "dialog", size = "md", className, overlayClassName, headerClassName, bodyClassName, footerClassName, ...props }) {
|
|
17
|
+
const intl = usePanneauIntl();
|
|
18
|
+
const container = usePortalContainer();
|
|
19
|
+
if (container === null) return null;
|
|
20
|
+
return /* @__PURE__ */ jsx(ModalOverlay, {
|
|
21
|
+
...props,
|
|
22
|
+
isDismissable,
|
|
23
|
+
className: cx(Dialog_module_default.overlay, overlayClassName),
|
|
24
|
+
UNSTABLE_portalContainer: container,
|
|
25
|
+
children: /* @__PURE__ */ jsx(Modal, {
|
|
26
|
+
className: cx(Dialog_module_default.modal, Dialog_module_default[size]),
|
|
27
|
+
children: /* @__PURE__ */ jsx(Dialog, {
|
|
28
|
+
role,
|
|
29
|
+
className: cx(Dialog_module_default.dialog, className),
|
|
30
|
+
children: ({ close }) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
31
|
+
/* @__PURE__ */ jsxs("div", {
|
|
32
|
+
className: cx(Dialog_module_default.header, headerClassName),
|
|
33
|
+
children: [/* @__PURE__ */ jsx(Heading, {
|
|
34
|
+
slot: "title",
|
|
35
|
+
className: Dialog_module_default.title,
|
|
36
|
+
children: title
|
|
37
|
+
}), isDismissable ? /* @__PURE__ */ jsx(IconButton, {
|
|
38
|
+
icon: X,
|
|
39
|
+
size: "sm",
|
|
40
|
+
label: intl.formatMessage(messages.close),
|
|
41
|
+
showTooltip: false,
|
|
42
|
+
onPress: close
|
|
43
|
+
}) : null]
|
|
44
|
+
}),
|
|
45
|
+
/* @__PURE__ */ jsx("div", {
|
|
46
|
+
className: cx(Dialog_module_default.body, bodyClassName),
|
|
47
|
+
children: typeof children === "function" ? children(close) : children
|
|
48
|
+
}),
|
|
49
|
+
footer !== void 0 && footer !== null ? /* @__PURE__ */ jsx("div", {
|
|
50
|
+
className: cx(Dialog_module_default.footer, footerClassName),
|
|
51
|
+
children: typeof footer === "function" ? footer(close) : footer
|
|
52
|
+
}) : null
|
|
53
|
+
] })
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
export { Dialog$1 as Dialog, DialogTrigger };
|
|
60
|
+
|
|
61
|
+
//# sourceMappingURL=Dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.js","names":["Dialog","styles","AriaDialog","_Fragment"],"sources":["../../src/dialog/Dialog.tsx"],"sourcesContent":["import { X } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport {\n Dialog as AriaDialog,\n Heading,\n Modal,\n ModalOverlay,\n type ModalOverlayProps,\n} from 'react-aria-components';\n\nimport { IconButton } from '../icon-button/IconButton';\nimport { messages } from '../intl/messages';\nimport { usePanneauIntl } from '../intl/usePanneauIntl';\nimport { usePortalContainer } from '../root/PanneauRoot';\nimport { cx } from '../utils/cx';\nimport styles from './Dialog.module.css';\n\nexport interface DialogProps extends Pick<\n ModalOverlayProps,\n 'isOpen' | 'defaultOpen' | 'onOpenChange' | 'isKeyboardDismissDisabled'\n> {\n /** Heading of the dialog, which also labels it. */\n title: ReactNode;\n /** Content, or a function that gets `close()`. */\n children?: ReactNode | ((close: () => void) => ReactNode);\n /** Buttons at the bottom, or a function that gets `close()`. */\n footer?: ReactNode | ((close: () => void) => ReactNode);\n /**\n * Closes on a click outside and shows a close button. Defaults to true. Turn it off for dialogs\n * that need an answer.\n */\n isDismissable?: boolean;\n /** `alertdialog` for confirmations and interruptions. Defaults to `dialog`. */\n role?: 'dialog' | 'alertdialog';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n overlayClassName?: string;\n headerClassName?: string;\n bodyClassName?: string;\n footerClassName?: string;\n}\n\n/**\n * A modal dialog. Controlled with `isOpen` and `onOpenChange`, or inside a `DialogTrigger` with\n * its button as the first child. It traps focus, closes with Escape, and returns focus when it\n * closes. On phones, it opens as a sheet at the bottom of the screen.\n */\nexport function Dialog({\n title,\n children,\n footer,\n isDismissable = true,\n role = 'dialog',\n size = 'md',\n className,\n overlayClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n ...props\n}: DialogProps) {\n const intl = usePanneauIntl();\n const container = usePortalContainer();\n if (container === null) {\n return null;\n }\n return (\n <ModalOverlay\n {...props}\n isDismissable={isDismissable}\n className={cx(styles.overlay, overlayClassName)}\n UNSTABLE_portalContainer={container}\n >\n <Modal className={cx(styles.modal, styles[size])}>\n <AriaDialog role={role} className={cx(styles.dialog, className)}>\n {({ close }) => (\n <>\n <div className={cx(styles.header, headerClassName)}>\n <Heading slot=\"title\" className={styles.title}>\n {title}\n </Heading>\n {isDismissable ? (\n <IconButton\n icon={X}\n size=\"sm\"\n label={intl.formatMessage(messages.close)}\n showTooltip={false}\n onPress={close}\n />\n ) : null}\n </div>\n <div className={cx(styles.body, bodyClassName)}>\n {typeof children === 'function' ? children(close) : children}\n </div>\n {footer !== undefined && footer !== null ? (\n <div className={cx(styles.footer, footerClassName)}>\n {typeof footer === 'function' ? footer(close) : footer}\n </div>\n ) : null}\n </>\n )}\n </AriaDialog>\n </Modal>\n </ModalOverlay>\n );\n}\n\nexport { DialogTrigger } from 'react-aria-components';\n"],"mappings":";;;;;;;;;;;;;;;AA+CA,SAAgBA,SAAO,EACnB,OACA,UACA,QACA,gBAAgB,MAChB,OAAO,UACP,OAAO,MACP,WACA,kBACA,iBACA,eACA,iBACA,GAAG,SACS;CACZ,MAAM,OAAO,eAAe;CAC5B,MAAM,YAAY,mBAAmB;CACrC,IAAI,cAAc,MACd,OAAO;CAEX,OACI,oBAAC,cAAD;EACI,GAAI;EACW;EACf,WAAW,GAAGC,sBAAO,SAAS,gBAAgB;EAC9C,0BAA0B;EAE1B,UAAA,oBAAC,OAAD;GAAO,WAAW,GAAGA,sBAAO,OAAOA,sBAAO,KAAK;GAC3C,UAAA,oBAACC,QAAD;IAAkB;IAAM,WAAW,GAAGD,sBAAO,QAAQ,SAAS;IACxD,WAAA,EAAE,YACA,qBAAAE,UAAA,EAAA,UAAA;KACI,qBAAC,OAAD;MAAK,WAAW,GAAGF,sBAAO,QAAQ,eAAe;MAAjD,UAAA,CACI,oBAAC,SAAD;OAAS,MAAK;OAAQ,WAAWA,sBAAO;OACnC,UAAA;MACI,CAAA,GACR,gBACG,oBAAC,YAAD;OACI,MAAM;OACN,MAAK;OACL,OAAO,KAAK,cAAc,SAAS,KAAK;OACxC,aAAa;OACb,SAAS;MAAM,CAAA,IAEnB,IACH;;KACL,oBAAC,OAAD;MAAK,WAAW,GAAGA,sBAAO,MAAM,aAAa;MACxC,UAAA,OAAO,aAAa,aAAa,SAAS,KAAK,IAAI;KACnD,CAAA;KACJ,WAAW,KAAA,KAAa,WAAW,OAChC,oBAAC,OAAD;MAAK,WAAW,GAAGA,sBAAO,QAAQ,eAAe;MAC5C,UAAA,OAAO,WAAW,aAAa,OAAO,KAAK,IAAI;KAC/C,CAAA,IACL;IACR,EAAA,CAAA;GAEI,CAAA;EACT,CAAA;CACG,CAAA;AAEtB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import "./Dialog.css";
|
|
2
|
+
//#region src/dialog/Dialog.module.css
|
|
3
|
+
var overlay = "panneau-overlay-nLaR62";
|
|
4
|
+
var fade = "panneau-fade-wJ4pz5";
|
|
5
|
+
var modal = "panneau-modal-Ucsou3";
|
|
6
|
+
var sm = "panneau-sm-pQA1LI";
|
|
7
|
+
var lg = "panneau-lg-YG9jfw";
|
|
8
|
+
var rise = "panneau-rise-13o1zo";
|
|
9
|
+
var dialog = "panneau-dialog-Q-k-Yw";
|
|
10
|
+
var header = "panneau-header-rSdjF8";
|
|
11
|
+
var title = "panneau-title-JCRwmh";
|
|
12
|
+
var body = "panneau-body-HZoCzz";
|
|
13
|
+
var footer = "panneau-footer-zpq7M7";
|
|
14
|
+
var Dialog_module_default = {
|
|
15
|
+
overlay,
|
|
16
|
+
fade,
|
|
17
|
+
modal,
|
|
18
|
+
sm,
|
|
19
|
+
lg,
|
|
20
|
+
rise,
|
|
21
|
+
dialog,
|
|
22
|
+
header,
|
|
23
|
+
title,
|
|
24
|
+
body,
|
|
25
|
+
footer
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { body, Dialog_module_default as default, dialog, fade, footer, header, lg, modal, overlay, rise, sm, title };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=Dialog.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.module.js","names":[],"sources":["../../src/dialog/Dialog.module.css"],"sourcesContent":[".overlay {\n position: fixed;\n inset: 0;\n z-index: var(--panneau-z-overlay);\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100dvh;\n padding: var(--panneau-space-4);\n background-color: var(--panneau-color-backdrop);\n}\n\n.overlay[data-entering] {\n animation: fade var(--panneau-duration) ease-out;\n}\n\n.overlay[data-exiting] {\n animation: fade var(--panneau-duration) ease-in reverse;\n}\n\n.modal {\n display: flex;\n width: 100%;\n max-width: 32rem;\n max-height: calc(100dvh - 2 * var(--panneau-space-4));\n outline: none;\n}\n\n.sm {\n max-width: 24rem;\n}\n\n.lg {\n max-width: 48rem;\n}\n\n.modal[data-entering] {\n animation: rise var(--panneau-duration) ease-out;\n}\n\n.dialog {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: inherit;\n color: var(--panneau-color-text);\n background-color: var(--panneau-color-surface-raised);\n border-radius: var(--panneau-radius-lg);\n box-shadow: var(--panneau-shadow-lg);\n outline: none;\n}\n\n.header {\n display: flex;\n align-items: flex-start;\n gap: var(--panneau-space-3);\n padding: var(--panneau-space-4) var(--panneau-space-4) 0 var(--panneau-space-5);\n}\n\n.title {\n flex: 1 1 auto;\n min-width: 0;\n padding-top: var(--panneau-space-1);\n font-size: var(--panneau-font-size-lg);\n font-weight: var(--panneau-font-weight-bold);\n line-height: var(--panneau-line-height-tight);\n overflow-wrap: anywhere;\n}\n\n.body {\n flex: 1 1 auto;\n min-height: 0;\n padding: var(--panneau-space-3) var(--panneau-space-5) var(--panneau-space-4);\n overflow-y: auto;\n}\n\n.footer {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--panneau-space-2);\n padding: var(--panneau-space-3) var(--panneau-space-5) var(--panneau-space-4);\n border-top: var(--panneau-border-width) solid var(--panneau-color-border);\n}\n\n/* Phones: the dialog is a sheet at the bottom, with full-width buttons. */\n@media (max-width: 30rem) {\n .overlay {\n align-items: flex-end;\n padding: 0;\n }\n\n .modal,\n .sm,\n .lg {\n max-width: none;\n max-height: calc(100dvh - var(--panneau-space-8));\n }\n\n .dialog {\n border-end-start-radius: 0;\n border-end-end-radius: 0;\n padding-bottom: env(safe-area-inset-bottom);\n }\n\n .footer {\n flex-direction: column-reverse;\n }\n\n .footer > * {\n width: 100%;\n }\n}\n\n@keyframes fade {\n from {\n opacity: 0;\n }\n}\n\n@keyframes rise {\n from {\n opacity: 0;\n transform: translateY(0.5rem);\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
.panneau-disclosure-WME8SS {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
min-width: 0;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.panneau-trigger-0Jo--Y {
|
|
8
|
+
display: flex;
|
|
9
|
+
align-items: center;
|
|
10
|
+
gap: var(--panneau-space-2);
|
|
11
|
+
width: 100%;
|
|
12
|
+
min-height: var(--panneau-control-height);
|
|
13
|
+
padding: 0;
|
|
14
|
+
font-size: var(--panneau-font-size-lg);
|
|
15
|
+
font-weight: var(--panneau-font-weight-bold);
|
|
16
|
+
text-align: start;
|
|
17
|
+
color: var(--panneau-color-text);
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
background: transparent;
|
|
20
|
+
border: 0;
|
|
21
|
+
border-radius: var(--panneau-radius-sm);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.panneau-trigger-0Jo--Y[data-focus-visible] {
|
|
25
|
+
outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
|
|
26
|
+
outline-offset: 2px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.panneau-chevron-1tYsh0 {
|
|
30
|
+
color: var(--panneau-color-text-muted);
|
|
31
|
+
transition: transform var(--panneau-duration);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.panneau-disclosure-WME8SS[data-expanded] .panneau-chevron-1tYsh0 {
|
|
35
|
+
transform: rotate(90deg);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.panneau-title-DSKeDu {
|
|
39
|
+
flex: 1 1 auto;
|
|
40
|
+
min-width: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.panneau-panel-heR-bQ {
|
|
44
|
+
min-width: 0;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.panneau-panelContent-FQV3Na {
|
|
48
|
+
padding-top: var(--panneau-space-3);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.panneau-heading-pnG2s2 {
|
|
52
|
+
margin: 0;
|
|
53
|
+
font: inherit;
|
|
54
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface DisclosureProps {
|
|
3
|
+
/** Title of the button that expands and collapses the content. */
|
|
4
|
+
title: ReactNode;
|
|
5
|
+
/** Content after the title, in the button: a count of errors. */
|
|
6
|
+
titleEnd?: ReactNode;
|
|
7
|
+
/** Heading level of the title. Defaults to 3. */
|
|
8
|
+
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
isExpanded?: boolean;
|
|
11
|
+
defaultExpanded?: boolean;
|
|
12
|
+
onExpandedChange?: (isExpanded: boolean) => void;
|
|
13
|
+
id?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
triggerClassName?: string;
|
|
16
|
+
panelClassName?: string;
|
|
17
|
+
}
|
|
18
|
+
/** A section whose content can be collapsed under its title. */
|
|
19
|
+
export declare function Disclosure({ title, titleEnd, headingLevel, children, className, triggerClassName, panelClassName, ...props }: DisclosureProps): import("react").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=Disclosure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Disclosure.d.ts","sourceRoot":"","sources":["../../src/disclosure/Disclosure.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,MAAM,WAAW,eAAe;IAC5B,kEAAkE;IAClE,KAAK,EAAE,SAAS,CAAC;IACjB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,YAAgB,EAChB,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,GAAG,KAAK,EACX,EAAE,eAAe,+BAejB"}
|