@proyecto-viviana/ui 0.6.1 → 0.6.3
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 +14 -16
- package/dist/_chunk/LinkButton.js +9 -9
- package/dist/_chunk/LinkButton.js.map +1 -1
- package/dist/_chunk/LinkButton.jsx +9 -9
- package/dist/_chunk/LinkButton.jsx.map +1 -1
- package/dist/_chunk/RangeCalendar.js +7 -7
- package/dist/_chunk/RangeCalendar.js.map +1 -1
- package/dist/_chunk/RangeCalendar.jsx +7 -7
- package/dist/_chunk/RangeCalendar.jsx.map +1 -1
- package/dist/_chunk/Tabs.js +2 -2
- package/dist/_chunk/Tabs.jsx +2 -2
- package/dist/_chunk/breadcrumbs.js +2 -2
- package/dist/_chunk/breadcrumbs.js.map +1 -1
- package/dist/_chunk/breadcrumbs.jsx +2 -2
- package/dist/_chunk/breadcrumbs.jsx.map +1 -1
- package/dist/_chunk/button.js +3 -3
- package/dist/_chunk/button.jsx +3 -3
- package/dist/_chunk/color.js +4 -4
- package/dist/_chunk/color.jsx +4 -4
- package/dist/_chunk/form.js +5 -7
- package/dist/_chunk/form.js.map +1 -1
- package/dist/_chunk/form.jsx +5 -8
- package/dist/_chunk/form.jsx.map +1 -1
- package/dist/_chunk/layout.js +5 -1
- package/dist/_chunk/layout.js.map +1 -1
- package/dist/_chunk/layout.jsx +5 -1
- package/dist/_chunk/layout.jsx.map +1 -1
- package/dist/_chunk/list.js +4 -4
- package/dist/_chunk/list.jsx +4 -4
- package/dist/_chunk/menu.js +1 -1
- package/dist/_chunk/menu.js.map +1 -1
- package/dist/_chunk/menu.jsx +1 -1
- package/dist/_chunk/menu.jsx.map +1 -1
- package/dist/_chunk/numberfield.js +2 -2
- package/dist/_chunk/numberfield.jsx +2 -2
- package/dist/_chunk/s2-action-button-styles.js +8 -8
- package/dist/_chunk/s2-action-button-styles.js.map +1 -1
- package/dist/_chunk/s2-action-button-styles.jsx +8 -8
- package/dist/_chunk/s2-action-button-styles.jsx.map +1 -1
- package/dist/_chunk/s2-menu-styles.js +1 -1
- package/dist/_chunk/s2-menu-styles.jsx +1 -1
- package/dist/_chunk/slider.js +6 -6
- package/dist/_chunk/slider.jsx +6 -6
- package/dist/_chunk/switch.js +2 -2
- package/dist/_chunk/switch.jsx +2 -2
- package/dist/_chunk/table.js +3 -3
- package/dist/_chunk/table.js.map +1 -1
- package/dist/_chunk/table.jsx +3 -3
- package/dist/_chunk/table.jsx.map +1 -1
- package/dist/_chunk/text.js +1 -1
- package/dist/_chunk/text.jsx +1 -1
- package/dist/_chunk/textfield.js +4 -4
- package/dist/_chunk/textfield.jsx +4 -4
- package/dist/_chunk/toast.js +3 -3
- package/dist/_chunk/toast.jsx +3 -3
- package/dist/actiongroup/index.js +2 -2
- package/dist/actiongroup/index.jsx +2 -2
- package/dist/badge/index.js +6 -6
- package/dist/badge/index.jsx +6 -6
- package/dist/breadcrumbs/index.d.ts.map +1 -1
- package/dist/calendar/DateField.d.ts.map +1 -1
- package/dist/calendar/DateField.js +2 -2
- package/dist/calendar/DateField.js.map +1 -1
- package/dist/calendar/DateField.jsx +2 -2
- package/dist/calendar/DateField.jsx.map +1 -1
- package/dist/calendar/DatePicker.d.ts.map +1 -1
- package/dist/calendar/DatePicker.js +2 -2
- package/dist/calendar/DatePicker.js.map +1 -1
- package/dist/calendar/DatePicker.jsx +2 -2
- package/dist/calendar/DatePicker.jsx.map +1 -1
- package/dist/calendar/DateRangePicker.js +2 -2
- package/dist/calendar/DateRangePicker.jsx +2 -2
- package/dist/calendar/RangeCalendar.d.ts.map +1 -1
- package/dist/calendar/TimeField.d.ts.map +1 -1
- package/dist/calendar/TimeField.js +2 -2
- package/dist/calendar/TimeField.js.map +1 -1
- package/dist/calendar/TimeField.jsx +2 -2
- package/dist/calendar/TimeField.jsx.map +1 -1
- package/dist/calendar/index.js +5 -5
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/index.jsx +5 -5
- package/dist/calendar/index.jsx.map +1 -1
- package/dist/checkbox/index.js +3 -3
- package/dist/checkbox/index.jsx +3 -3
- package/dist/combobox/index.js +2 -2
- package/dist/combobox/index.jsx +2 -2
- package/dist/dropzone/index.js +1 -1
- package/dist/dropzone/index.jsx +1 -1
- package/dist/font-faces.css +13 -6
- package/dist/form/index.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChartIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChartIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelChartIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCheckIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCheckIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCheckIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronDownIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronDownIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronDownIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronRightIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronRightIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelChevronRightIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelClockIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelClockIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelClockIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCodeIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCodeIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCodeIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCommunityIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCommunityIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCommunityIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelCubeIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelCubeIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelCubeIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelFlameIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelFlameIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelFlameIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelHomeIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelHomeIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelHomeIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelLayoutIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelLayoutIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelLayoutIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelMessageIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelMessageIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelMessageIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavCommunityIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavCommunityIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavCommunityIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavExploreIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavExploreIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavExploreIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavLiveIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavLiveIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavLiveIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPathwaysIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPathwaysIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPathwaysIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavPlaygroundIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavProjectsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavProjectsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavProjectsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavReferenceIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavReferenceIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavReferenceIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavSettingsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavSettingsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavSettingsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNavTopicsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNavTopicsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNavTopicsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelNotificationIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelNotificationIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelNotificationIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelPathwaysIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelPathwaysIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelPathwaysIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelPlayIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelPlayIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelPlayIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelSearchIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelSearchIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelSearchIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelSettingsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelSettingsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelSettingsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelSparkleIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelSparkleIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelSparkleIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelTopicsIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelTopicsIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelTopicsIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelUserIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelUserIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelUserIcon.jsx.map +1 -1
- package/dist/icon/pixel-icons/PixelZapIcon.d.ts.map +1 -1
- package/dist/icon/pixel-icons/PixelZapIcon.js.map +1 -1
- package/dist/icon/pixel-icons/PixelZapIcon.jsx.map +1 -1
- package/dist/inlinealert/index.js +6 -6
- package/dist/inlinealert/index.jsx +6 -6
- package/dist/labeledvalue/index.js +1 -1
- package/dist/labeledvalue/index.jsx +1 -1
- package/dist/layout/Flex.d.ts +2 -0
- package/dist/layout/Flex.d.ts.map +1 -1
- package/dist/link/index.d.ts.map +1 -1
- package/dist/link/index.js +1 -4
- package/dist/link/index.js.map +1 -1
- package/dist/link/index.jsx +1 -4
- package/dist/link/index.jsx.map +1 -1
- package/dist/listbox/index.js +3 -3
- package/dist/listbox/index.jsx +4 -4
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/meter/index.d.ts.map +1 -1
- package/dist/meter/index.js +2 -2
- package/dist/meter/index.js.map +1 -1
- package/dist/meter/index.jsx +2 -2
- package/dist/meter/index.jsx.map +1 -1
- package/dist/notificationbadge/index.js +1 -1
- package/dist/notificationbadge/index.jsx +1 -1
- package/dist/picker/index.js +3 -3
- package/dist/picker/index.jsx +3 -3
- package/dist/popover/index.js +1 -1
- package/dist/popover/index.jsx +1 -1
- package/dist/progress/ProgressCircle.js +2 -2
- package/dist/progress/ProgressCircle.js.map +1 -1
- package/dist/progress/ProgressCircle.jsx +2 -2
- package/dist/progress/ProgressCircle.jsx.map +1 -1
- package/dist/progress-bar/index.js +4 -4
- package/dist/progress-bar/index.jsx +4 -4
- package/dist/radio/index.js +2 -2
- package/dist/radio/index.jsx +2 -2
- package/dist/searchfield/index.js +2 -2
- package/dist/searchfield/index.jsx +2 -2
- package/dist/segmentedcontrol/index.js +2 -5
- package/dist/segmentedcontrol/index.js.map +1 -1
- package/dist/segmentedcontrol/index.jsx +2 -5
- package/dist/segmentedcontrol/index.jsx.map +1 -1
- package/dist/select/index.js +3 -3
- package/dist/select/index.jsx +3 -3
- package/dist/selectboxgroup/index.js +1 -1
- package/dist/selectboxgroup/index.jsx +1 -1
- package/dist/statuslight/index.js +1 -1
- package/dist/statuslight/index.jsx +1 -1
- package/dist/steplist/index.js +5 -5
- package/dist/steplist/index.jsx +5 -5
- package/dist/style/glasselated-ramps.d.ts.map +1 -1
- package/dist/style/index.js +18 -9
- package/dist/style/index.js.map +1 -1
- package/dist/style/spectrum-theme.d.ts +7 -7
- package/dist/style/spectrum-theme.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/tag-group/index.js +10 -10
- package/dist/tag-group/index.js.map +1 -1
- package/dist/tag-group/index.jsx +10 -10
- package/dist/tag-group/index.jsx.map +1 -1
- package/dist/toolbar/index.d.ts.map +1 -1
- package/dist/toolbar/index.js.map +1 -1
- package/dist/toolbar/index.jsx.map +1 -1
- package/dist/tree/index.d.ts.map +1 -1
- package/dist/tree/index.js +5 -5
- package/dist/tree/index.js.map +1 -1
- package/dist/tree/index.jsx +5 -5
- package/dist/tree/index.jsx.map +1 -1
- package/dist/viviana-tokens.css +39 -12
- package/package.json +18 -5
- package/src/breadcrumbs/index.tsx +14 -7
- package/src/button/s2-action-button-styles.ts +8 -8
- package/src/button/s2-button-styles.ts +8 -8
- package/src/calendar/DateField.tsx +2 -6
- package/src/calendar/DatePicker.tsx +8 -1
- package/src/calendar/RangeCalendar.tsx +13 -7
- package/src/calendar/TimeField.tsx +2 -6
- package/src/calendar/index.tsx +4 -4
- package/src/font-faces.css +13 -6
- package/src/form/index.tsx +5 -6
- package/src/icon/pixel-icons/PixelChartIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCheckIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelChevronDownIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelChevronRightIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelClockIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCodeIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCommunityIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelCubeIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelFlameIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelHomeIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelLayoutIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelMessageIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavCommunityIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavExploreIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavLiveIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavPathwaysIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavPlaygroundIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavProjectsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavReferenceIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavSettingsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNavTopicsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelNotificationIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelPathwaysIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelPlayIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelSearchIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelSettingsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelSparkleIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelTopicsIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelUserIcon.tsx +4 -1
- package/src/icon/pixel-icons/PixelZapIcon.tsx +4 -1
- package/src/layout/Flex.tsx +7 -0
- package/src/link/index.tsx +3 -1
- package/src/menu/index.tsx +1 -3
- package/src/meter/index.tsx +1 -3
- package/src/progress/ProgressCircle.tsx +1 -1
- package/src/segmentedcontrol/index.tsx +6 -6
- package/src/style/glasselated-ramps.ts +37 -33
- package/src/style/spectrum-theme.ts +22 -17
- package/src/table/index.tsx +1 -3
- package/src/tag-group/index.tsx +8 -8
- package/src/toolbar/index.tsx +4 -1
- package/src/tree/index.tsx +3 -11
- package/src/viviana-tokens.css +39 -12
|
@@ -65,8 +65,8 @@ const actionGroupItem = function anonymous(props) {
|
|
|
65
65
|
else if (props.isPressed) rules += " pQKeKoe151";
|
|
66
66
|
else if (props.isFocusVisible) rules += " pQKeKoe151";
|
|
67
67
|
else if (props.isHovered) rules += " pQKeKoe151";
|
|
68
|
-
else rules += "
|
|
69
|
-
if (props.isSelected) rules += "
|
|
68
|
+
else rules += " pWQ7V3d151";
|
|
69
|
+
if (props.isSelected) rules += " gnhAeB151";
|
|
70
70
|
else rules += " g9151";
|
|
71
71
|
return rules;
|
|
72
72
|
};
|
|
@@ -63,8 +63,8 @@ const actionGroupItem = function anonymous(props) {
|
|
|
63
63
|
else if (props.isPressed) rules += " pQKeKoe151";
|
|
64
64
|
else if (props.isFocusVisible) rules += " pQKeKoe151";
|
|
65
65
|
else if (props.isHovered) rules += " pQKeKoe151";
|
|
66
|
-
else rules += "
|
|
67
|
-
if (props.isSelected) rules += "
|
|
66
|
+
else rules += " pWQ7V3d151";
|
|
67
|
+
if (props.isSelected) rules += " gnhAeB151";
|
|
68
68
|
else rules += " g9151";
|
|
69
69
|
return rules;
|
|
70
70
|
};
|
package/dist/badge/index.js
CHANGED
|
@@ -167,15 +167,15 @@ const badgeStyles = function anonymous(props, overrides) {
|
|
|
167
167
|
else if (props.variant === "yellow") rules += " gN151";
|
|
168
168
|
else if (props.variant === "orange") rules += " gYNPFce151";
|
|
169
169
|
else if (props.variant === "red") rules += " geTwQfb151";
|
|
170
|
-
else if (props.variant === "gray") rules += "
|
|
170
|
+
else if (props.variant === "gray") rules += " gyQCYGb151";
|
|
171
171
|
else if (props.variant === "metric") rules += " gmb1iPc151";
|
|
172
172
|
else if (props.variant === "live") rules += " gQtAfKc151";
|
|
173
|
-
else if (props.variant === "negative") rules += "
|
|
173
|
+
else if (props.variant === "negative") rules += " gbwuI7c151";
|
|
174
174
|
else if (props.variant === "notice") rules += " gYNPFce151";
|
|
175
|
-
else if (props.variant === "positive") rules += "
|
|
176
|
-
else if (props.variant === "neutral") rules += "
|
|
175
|
+
else if (props.variant === "positive") rules += " g4izmob151";
|
|
176
|
+
else if (props.variant === "neutral") rules += " gyQCYGb151";
|
|
177
177
|
else if (props.variant === "informative") rules += " gGAGle151";
|
|
178
|
-
else if (props.variant === "accent") rules += "
|
|
178
|
+
else if (props.variant === "accent") rules += " gnhAeB151";
|
|
179
179
|
}
|
|
180
180
|
rules += " _jf151";
|
|
181
181
|
rules += " _kJ8iPYd151";
|
|
@@ -187,7 +187,7 @@ const badgeStyles = function anonymous(props, overrides) {
|
|
|
187
187
|
else if (props.variant === "negative") rules += " ihuKnyb151";
|
|
188
188
|
else if (props.variant === "notice") rules += " iU7Lghc151";
|
|
189
189
|
else if (props.variant === "positive") rules += " ibiKgae151";
|
|
190
|
-
else if (props.variant === "neutral") rules += "
|
|
190
|
+
else if (props.variant === "neutral") rules += " ijas2xd151";
|
|
191
191
|
else if (props.variant === "informative") rules += " iY8y2k151";
|
|
192
192
|
else if (props.variant === "accent") rules += " i5dxOg151";
|
|
193
193
|
else rules += " iA151";
|
package/dist/badge/index.jsx
CHANGED
|
@@ -163,15 +163,15 @@ const badgeStyles = function anonymous(props, overrides) {
|
|
|
163
163
|
else if (props.variant === "yellow") rules += " gN151";
|
|
164
164
|
else if (props.variant === "orange") rules += " gYNPFce151";
|
|
165
165
|
else if (props.variant === "red") rules += " geTwQfb151";
|
|
166
|
-
else if (props.variant === "gray") rules += "
|
|
166
|
+
else if (props.variant === "gray") rules += " gyQCYGb151";
|
|
167
167
|
else if (props.variant === "metric") rules += " gmb1iPc151";
|
|
168
168
|
else if (props.variant === "live") rules += " gQtAfKc151";
|
|
169
|
-
else if (props.variant === "negative") rules += "
|
|
169
|
+
else if (props.variant === "negative") rules += " gbwuI7c151";
|
|
170
170
|
else if (props.variant === "notice") rules += " gYNPFce151";
|
|
171
|
-
else if (props.variant === "positive") rules += "
|
|
172
|
-
else if (props.variant === "neutral") rules += "
|
|
171
|
+
else if (props.variant === "positive") rules += " g4izmob151";
|
|
172
|
+
else if (props.variant === "neutral") rules += " gyQCYGb151";
|
|
173
173
|
else if (props.variant === "informative") rules += " gGAGle151";
|
|
174
|
-
else if (props.variant === "accent") rules += "
|
|
174
|
+
else if (props.variant === "accent") rules += " gnhAeB151";
|
|
175
175
|
}
|
|
176
176
|
rules += " _jf151";
|
|
177
177
|
rules += " _kJ8iPYd151";
|
|
@@ -183,7 +183,7 @@ const badgeStyles = function anonymous(props, overrides) {
|
|
|
183
183
|
else if (props.variant === "negative") rules += " ihuKnyb151";
|
|
184
184
|
else if (props.variant === "notice") rules += " iU7Lghc151";
|
|
185
185
|
else if (props.variant === "positive") rules += " ibiKgae151";
|
|
186
|
-
else if (props.variant === "neutral") rules += "
|
|
186
|
+
else if (props.variant === "neutral") rules += " ijas2xd151";
|
|
187
187
|
else if (props.variant === "informative") rules += " iY8y2k151";
|
|
188
188
|
else if (props.variant === "accent") rules += " i5dxOg151";
|
|
189
189
|
else rules += " iA151";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/breadcrumbs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EAaT,MAAM,UAAU,CAAC;AAClB,OAAO,EAIL,KAAK,mBAAmB,IAAI,2BAA2B,EACvD,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,IAAI,wBAAwB,EAElD,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAIjC,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAC/C,wBAAwB,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CACvC;IACC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACpD,gDAAgD;IAChD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC;IACvD,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,2BAA2B,EAC3B,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CACvC;IACC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,yBAAyB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACnF,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC;IACvD,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAwBlD,eAAO,MAAM,kBAAkB,yEAAmE,CAAC;AA0DnG;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAMtE;yBANe,WAAW;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/breadcrumbs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EAaT,MAAM,UAAU,CAAC;AAClB,OAAO,EAIL,KAAK,mBAAmB,IAAI,2BAA2B,EACvD,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,IAAI,wBAAwB,EAElD,MAAM,wCAAwC,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAIjC,YAAY,EAAE,iBAAiB,EAAE,CAAC;AAClC,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAC/C,wBAAwB,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CACvC;IACC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACpD,gDAAgD;IAChD,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC;IACvD,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,8DAA8D;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sCAAsC;IACtC,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,2BAA2B,EAC3B,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CACvC;IACC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,yBAAyB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;IACnF,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC;IACvD,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,GAAG,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC5B;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAwBlD,eAAO,MAAM,kBAAkB,yEAAmE,CAAC;AA0DnG;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAMtE;yBANe,WAAW;;;AAkkB3B;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,GAAG,CAAC,OAAO,CAkF9D;AAED,eAAO,MAAM,cAAc,mBAAa,CAAC;AACzC,eAAO,MAAM,IAAI,mBAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateField.d.ts","sourceRoot":"","sources":["../../src/calendar/DateField.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,GAAG,EAMT,MAAM,UAAU,CAAC;AAClB,OAAO,EAQL,KAAK,cAAc,IAAI,sBAAsB,EAG7C,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,wCAAwC,CAAC;AAMhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAe5C,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE/F,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,KAAK,CAAC;AAClD,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,IAAI,CAC3E,sBAAsB,CAAC,CAAC,CAAC,EACzB,OAAO,GAAG,OAAO,GAAG,UAAU,CAC/B;IACC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACpB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,wBAAwB;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,qBAAqB;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,mDAAmD;IACnD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,uCAAuC;IACvC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,2BAA2B,CAAC;CAClD;AAED,eAAO,MAAM,gBAAgB,uEAAiE,CAAC;
|
|
1
|
+
{"version":3,"file":"DateField.d.ts","sourceRoot":"","sources":["../../src/calendar/DateField.tsx"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,GAAG,EAMT,MAAM,UAAU,CAAC;AAClB,OAAO,EAQL,KAAK,cAAc,IAAI,sBAAsB,EAG7C,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,wCAAwC,CAAC;AAMhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAe5C,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAE/F,MAAM,MAAM,aAAa,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,KAAK,CAAC;AAClD,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,IAAI,CAC3E,sBAAsB,CAAC,CAAC,CAAC,EACzB,OAAO,GAAG,OAAO,GAAG,UAAU,CAC/B;IACC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACpB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,wBAAwB;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC1B,qBAAqB;IACrB,YAAY,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC3B,mDAAmD;IACnD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,uCAAuC;IACvC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,2BAA2B,CAAC;CAClD;AAED,eAAO,MAAM,gBAAgB,uEAAiE,CAAC;AA0Y/F;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,SAAS,GAAG,YAAY,EAC1D,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GACvB,GAAG,CAAC,OAAO,CA2Eb;AAED,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -139,7 +139,7 @@ const dateFieldLabel = function anonymous(props) {
|
|
|
139
139
|
}
|
|
140
140
|
if (props.isStaticColor) rules += " pl151";
|
|
141
141
|
else if (props.isDisabled) rules += " pUvnvv151";
|
|
142
|
-
else rules += "
|
|
142
|
+
else rules += " pWQ7V3d151";
|
|
143
143
|
rules += " plb151";
|
|
144
144
|
rules += " ri151";
|
|
145
145
|
return rules;
|
|
@@ -367,7 +367,7 @@ const helpText = function anonymous(props) {
|
|
|
367
367
|
} else if (props.isInvalid) {
|
|
368
368
|
rules += " pYjUhNc151";
|
|
369
369
|
rules += " plQBRyrc151";
|
|
370
|
-
} else rules += "
|
|
370
|
+
} else rules += " pWQ7V3d151";
|
|
371
371
|
rules += " -_8sjo0b-t5ZbAob151";
|
|
372
372
|
rules += " _qb151";
|
|
373
373
|
rules += " TgOnRt151";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateField.js","names":[],"sources":["../../src/calendar/DateField.tsx"],"sourcesContent":["// @ts-nocheck - style-system generics need the same dedicated pass as DatePicker.\nimport {\n createContext,\n createEffect,\n createSignal,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n DateField as HeadlessDateField,\n DateFieldLabel as HeadlessDateFieldLabel,\n DateFieldDescription as HeadlessDateFieldDescription,\n DateFieldErrorMessage as HeadlessDateFieldErrorMessage,\n DateInput,\n DateSegment,\n useDateFieldContext,\n type DateFieldProps as HeadlessDateFieldProps,\n type DateFieldRenderProps,\n type DateSegmentRenderProps,\n type CalendarDate,\n type DateValue,\n} from \"@proyecto-viviana/solidaria-components\";\nimport {\n useLocale,\n createFocusVisibleListener,\n isFocusVisible as isGlobalFocusVisible,\n} from \"@proyecto-viviana/solidaria\";\nimport type { StyleString } from \"../style\";\nimport { baseColor, focusRing, fontRelative, style } from \"../style\" with { type: \"macro\" };\nimport {\n control,\n controlFont,\n field,\n fieldInput,\n fieldLabel,\n getAllowedOverrides,\n} from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { CenterBaseline } from \"../icon/center-baseline\";\nimport AlertTriangleIcon from \"../icon/s2wf-icons/AlertTriangleIcon\";\nimport AsteriskIcon from \"../icon/ui-icons/Asterisk\";\nimport { useProviderProps } from \"../provider\";\nimport { useFormProps, useIsInForm } from \"../form\";\nimport { getSlottedContextProps, type SpectrumContextValue } from \"../button/spectrum-context\";\n\nexport type DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\" | \"sm\" | \"md\" | \"lg\";\ntype S2DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type DateFieldLabelPosition = \"top\" | \"side\";\nexport type DateFieldLabelAlign = \"start\" | \"end\";\nexport type DateFieldNecessityIndicator = \"icon\" | \"label\";\n\nexport interface DateFieldProps<T extends DateValue = DateValue> extends Omit<\n HeadlessDateFieldProps<T>,\n \"class\" | \"style\" | \"children\"\n> {\n /** The size of the field. @default 'M' */\n size?: DateFieldSize;\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n /** Backward-compatible class alias. Prefer UNSAFE_className for S2 parity. */\n class?: string;\n /** Label for the field. */\n label?: JSX.Element;\n /** A ContextualHelp element to render next to the label. */\n contextualHelp?: JSX.Element;\n /** Description text. */\n description?: JSX.Element;\n /** Error message. */\n errorMessage?: JSX.Element;\n /** Position of the label relative to the field. */\n labelPosition?: DateFieldLabelPosition;\n /** Label alignment for side labels. */\n labelAlign?: DateFieldLabelAlign;\n /** Whether required fields show an icon or text label. */\n necessityIndicator?: DateFieldNecessityIndicator;\n}\n\nexport const DateFieldContext = createContext<SpectrumContextValue<DateFieldProps<any>>>(null);\n\ninterface DateFieldStyleProps extends DateFieldRenderProps {\n size?: S2DateFieldSize;\n labelPosition?: DateFieldLabelPosition;\n labelAlign?: DateFieldLabelAlign;\n isFocusWithin?: boolean;\n isFocusVisible?: boolean;\n isInForm?: boolean;\n}\n\nconst dateFieldRoot = style<DateFieldStyleProps>(\n {\n ...field(),\n },\n getAllowedOverrides(),\n);\n\nconst dateFieldLabelWrapper = style<DateFieldStyleProps>({\n gridArea: \"label\",\n display: \"inline\",\n textAlign: {\n labelAlign: {\n start: \"start\",\n end: \"end\",\n },\n },\n paddingBottom: {\n labelPosition: {\n top: \"--field-gap\",\n },\n },\n contain: {\n labelPosition: {\n top: \"inline-size\",\n },\n },\n});\n\nconst dateFieldLabel = style<DateFieldStyleProps>({\n ...fieldLabel(),\n});\n\nconst dateFieldGroup = style<DateFieldStyleProps>({\n ...focusRing(),\n ...control({ shape: \"default\", register: \"matte\" }),\n ...fieldInput(),\n textWrap: \"nowrap\",\n paddingX: \"edge-to-text\",\n transition: \"default\",\n borderColor: {\n default: \"well-border\",\n forcedColors: \"ButtonBorder\",\n isInvalid: {\n default: baseColor(\"negative\"),\n forcedColors: \"Mark\",\n },\n isFocusWithin: {\n default: \"gray-900\",\n isInvalid: \"negative-1000\",\n forcedColors: \"Highlight\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n backgroundColor: {\n default: \"well\",\n forcedColors: \"Field\",\n },\n color: {\n default: baseColor(\"neutral\"),\n forcedColors: \"ButtonText\",\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst segmentContainer = style({\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n height: \"full\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n scrollbarWidth: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n textWrap: \"nowrap\",\n});\n\nconst dateSegment = style<DateSegmentRenderProps & { isPunctuation?: boolean }>({\n outlineStyle: \"none\",\n caretColor: \"transparent\",\n backgroundColor: {\n default: \"transparent\",\n isFocused: \"blue-800\",\n forcedColors: {\n default: \"transparent\",\n isFocused: \"Highlight\",\n },\n },\n color: {\n isFocused: \"white\",\n isDisabled: \"disabled\",\n forcedColors: {\n isFocused: \"HighlightText\",\n isDisabled: \"GrayText\",\n },\n },\n borderRadius: \"[2px]\",\n paddingX: {\n default: 2,\n isPunctuation: 0,\n },\n paddingY: 2,\n forcedColorAdjust: \"none\",\n});\n\nconst helpText = style<DateFieldStyleProps>({\n gridArea: \"helptext\",\n display: \"flex\",\n margin: 0,\n alignItems: \"baseline\",\n gap: \"text-to-visual\",\n font: controlFont(),\n color: {\n default: \"neutral-subdued\",\n isInvalid: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n contain: \"inline-size\",\n paddingTop: \"--field-gap\",\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst fieldErrorIcon = style({\n size: fontRelative(20),\n marginStart: \"text-to-visual\",\n marginEnd: fontRelative(-2),\n flexShrink: 0,\n \"--iconPrimary\": {\n type: \"fill\",\n value: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n },\n});\n\nconst requiredIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n});\n\nconst noWrap = style({\n whiteSpace: \"nowrap\",\n});\n\nfunction normalizeDateFieldSize(size: DateFieldSize | undefined): S2DateFieldSize {\n switch (size) {\n case \"S\":\n case \"sm\":\n return \"S\";\n case \"L\":\n case \"lg\":\n return \"L\";\n case \"XL\":\n return \"XL\";\n case \"M\":\n case \"md\":\n default:\n return \"M\";\n }\n}\n\nfunction requiredIconStyle(size: S2DateFieldSize): JSX.CSSProperties {\n const pixelSize = size === \"L\" || size === \"XL\" ? 10 : 8;\n return {\n width: `${pixelSize}px`,\n height: `${pixelSize}px`,\n };\n}\n\nfunction focusFirstEditableSegment(event: Event & { currentTarget: HTMLDivElement }) {\n const target = event.target as Element | null;\n if (target?.closest('[role=\"spinbutton\"]')) {\n return;\n }\n\n event.preventDefault();\n const segments = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"spinbutton\"]:not([aria-disabled=\"true\"])',\n ),\n );\n for (let i = segments.length - 1; i >= 0; i--) {\n if (!segments[i].hasAttribute(\"data-placeholder\")) {\n segments[i].focus();\n return;\n }\n }\n segments[0]?.focus();\n}\n\nfunction DateFieldContent(props: {\n label?: JSX.Element;\n contextualHelp?: JSX.Element;\n description?: JSX.Element;\n errorMessage?: JSX.Element;\n size: S2DateFieldSize;\n labelPosition: DateFieldLabelPosition;\n labelAlign: DateFieldLabelAlign;\n necessityIndicator: DateFieldNecessityIndicator;\n}): JSX.Element {\n const { state, aria } = useDateFieldContext();\n const isDisabled = () => state.isDisabled();\n const isInvalid = () => state.isInvalid();\n const isRequired = () => state.isRequired();\n // S2's FieldGroup is a RAC <Group role=\"presentation\"> that consumes the SAME\n // GroupContext as the inner DateInput group, so upstream both elements carry\n // the field's aria-labelledby (label) and aria-describedby (value description\n // + help text). We render the FieldGroup as a styled div, so surface those two\n // identity attributes here; the D6 AX driver walks every element with\n // aria-describedby, and the presentation wrapper must match React's. The group\n // event handlers stay local — they're pruned from the AX tree and duplicating\n // the arrow-nav onKeyDown would double-advance focus (RAC relies on synthetic\n // stopPropagation ordering we can't guarantee across Solid's delegation).\n const groupAria = () => aria.inputProps as Record<string, string | undefined>;\n // Mirror the RAC Group that S2's FieldGroup renders on. Its `useFocusRing({\n // within: true })` exposes TWO states the styled FieldGroup reads\n // (Field.tsx:281-284): `isFocusWithin` drives the border color, while\n // `isFocusVisible` (focus-within AND keyboard modality) drives the outline\n // focus ring (`...focusRing()`) and brightens the text to `neutral:focused`\n // (`baseColor('neutral').isFocusVisible`). The headless field tracks focus on\n // the inner role=\"group\"; this bordered presentation wrapper is a separate,\n // non-focusable element, so track focus-within here via the reliably-bubbling\n // onFocusIn/onFocusOut (Solid's onFocus does not bubble to a container) and\n // compose focus-visible from the global interaction modality — exactly how\n // createFocusRing derives `isFocusVisible = isFocused && focusVisibleFlag`.\n const [isFocusWithin, setIsFocusWithin] = createSignal(false);\n const [isFocusVisibleModality, setIsFocusVisibleModality] = createSignal(\n isGlobalFocusVisible(),\n );\n createEffect(() => {\n const cleanup = createFocusVisibleListener((visible) =>\n setIsFocusVisibleModality(visible),\n );\n onCleanup(cleanup);\n });\n const isFocusVisibleWithin = () => isFocusWithin() && isFocusVisibleModality();\n\n return (\n <>\n <Show when={props.label}>\n <div\n class={dateFieldLabelWrapper({\n size: props.size,\n labelPosition: props.labelPosition,\n labelAlign: props.labelAlign,\n })}\n >\n <HeadlessDateFieldLabel\n class={dateFieldLabel({\n size: props.size,\n labelPosition: props.labelPosition,\n isDisabled: isDisabled(),\n })}\n >\n {props.label}\n <Show when={isRequired() || props.necessityIndicator === \"label\"}>\n <span class={noWrap}>\n \n <Show\n when={props.necessityIndicator === \"icon\"}\n fallback={\n <span aria-hidden={isRequired() ? true : undefined}>\n {isRequired() ? \"(required)\" : \"(optional)\"}\n </span>\n }\n >\n <AsteriskIcon\n size={props.size === \"S\" ? \"M\" : props.size}\n styles={requiredIcon}\n style={requiredIconStyle(props.size)}\n aria-hidden=\"true\"\n />\n </Show>\n </span>\n </Show>\n </HeadlessDateFieldLabel>\n <Show when={props.contextualHelp}>\n <span data-slot=\"contextualHelp\" class={noWrap}>\n {props.contextualHelp}\n </span>\n </Show>\n </div>\n </Show>\n\n <div\n role=\"presentation\"\n aria-labelledby={groupAria()[\"aria-labelledby\"]}\n aria-describedby={groupAria()[\"aria-describedby\"]}\n class={dateFieldGroup({\n size: props.size,\n isInvalid: isInvalid(),\n isDisabled: isDisabled(),\n isFocusWithin: isFocusWithin(),\n isFocusVisible: isFocusVisibleWithin(),\n })}\n onPointerDown={(event) => {\n if (event.pointerType === \"mouse\") {\n focusFirstEditableSegment(event);\n }\n }}\n onTouchEnd={focusFirstEditableSegment}\n onFocusIn={() => setIsFocusWithin(true)}\n onFocusOut={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setIsFocusWithin(false);\n }\n }}\n data-focused={isFocusWithin() ? \"true\" : undefined}\n data-focus-visible={isFocusVisibleWithin() ? \"true\" : undefined}\n data-disabled={isDisabled() ? \"true\" : undefined}\n data-invalid={isInvalid() ? \"true\" : undefined}\n >\n {/*\n S2 layers the segments: FieldGroup (this bordered role=\"presentation\"\n wrapper) → DateInputContainer (segmentContainer div) → AriaDateInput\n (the unstyled role=\"group\"). Keep the segmentContainer styling on the\n wrapper and leave the group unstyled so its computed box matches.\n */}\n <div class={segmentContainer}>\n <DateInput class=\"\">\n {(segment) => (\n <DateSegment\n segment={segment}\n class={(renderProps) =>\n dateSegment({\n ...renderProps,\n isDisabled: isDisabled(),\n isPunctuation: segment.type === \"literal\",\n })\n }\n />\n )}\n </DateInput>\n </div>\n\n <Show when={isInvalid() && !isDisabled()}>\n <CenterBaseline>\n <AlertTriangleIcon styles={fieldErrorIcon} />\n </CenterBaseline>\n </Show>\n </div>\n\n <Show when={props.description && !isInvalid()}>\n <HeadlessDateFieldDescription\n class={helpText({ size: props.size, isInvalid: false, isDisabled: isDisabled() })}\n >\n {props.description}\n </HeadlessDateFieldDescription>\n </Show>\n\n <Show when={props.errorMessage && isInvalid()}>\n <HeadlessDateFieldErrorMessage\n class={helpText({ size: props.size, isInvalid: true, isDisabled: isDisabled() })}\n >\n {props.errorMessage}\n </HeadlessDateFieldErrorMessage>\n </Show>\n </>\n );\n}\n\n/**\n * DateFields allow users to enter and edit date and time values using a keyboard.\n */\nexport function DateField<T extends DateValue = CalendarDate>(\n props: DateFieldProps<T>,\n): JSX.Element {\n // Slotted context props sit below explicit props; `useFormProps`/`useProviderProps`\n // wrap the result so the form/Skeleton disabled-force stays outermost (mirrors\n // upstream's `useSpectrumContextProps` → `useFormProps` order).\n const contextProps = getSlottedContextProps(useContext(DateFieldContext), props.slot);\n const merged = useProviderProps(useFormProps(mergeProps(contextProps ?? {}, props)));\n const isInForm = useIsInForm();\n const [local, rest] = splitProps(merged, [\n \"size\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"class\",\n \"label\",\n \"contextualHelp\",\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n ]);\n\n const size = () => normalizeDateFieldSize(local.size);\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n const isInvalid = () => local.isInvalid === true;\n const locale = useLocale();\n\n const rootClassName = (renderProps: DateFieldRenderProps) =>\n [\n \"solidaria-DateField\",\n local.UNSAFE_className,\n local.class,\n dateFieldRoot(\n {\n ...renderProps,\n size: size(),\n labelPosition: labelPosition(),\n isInForm,\n },\n local.styles,\n ),\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <HeadlessDateField\n {...rest}\n locale={(rest as { locale?: string }).locale ?? locale().locale}\n validationState={\n isInvalid()\n ? \"invalid\"\n : (rest as { validationState?: \"valid\" | \"invalid\" }).validationState\n }\n label={local.label as string | undefined}\n description={local.description as string | undefined}\n errorMessage={local.errorMessage as string | undefined}\n class={rootClassName}\n style={local.UNSAFE_style}\n >\n <DateFieldContent\n label={local.label}\n contextualHelp={local.contextualHelp}\n description={local.description}\n errorMessage={local.errorMessage}\n size={size()}\n labelPosition={labelPosition()}\n labelAlign={labelAlign()}\n necessityIndicator={necessityIndicator()}\n />\n </HeadlessDateField>\n );\n}\n\nexport type { CalendarDate, DateValue };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateField.js","names":[],"sources":["../../src/calendar/DateField.tsx"],"sourcesContent":["// @ts-nocheck - style-system generics need the same dedicated pass as DatePicker.\nimport {\n createContext,\n createEffect,\n createSignal,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n DateField as HeadlessDateField,\n DateFieldLabel as HeadlessDateFieldLabel,\n DateFieldDescription as HeadlessDateFieldDescription,\n DateFieldErrorMessage as HeadlessDateFieldErrorMessage,\n DateInput,\n DateSegment,\n useDateFieldContext,\n type DateFieldProps as HeadlessDateFieldProps,\n type DateFieldRenderProps,\n type DateSegmentRenderProps,\n type CalendarDate,\n type DateValue,\n} from \"@proyecto-viviana/solidaria-components\";\nimport {\n useLocale,\n createFocusVisibleListener,\n isFocusVisible as isGlobalFocusVisible,\n} from \"@proyecto-viviana/solidaria\";\nimport type { StyleString } from \"../style\";\nimport { baseColor, focusRing, fontRelative, style } from \"../style\" with { type: \"macro\" };\nimport {\n control,\n controlFont,\n field,\n fieldInput,\n fieldLabel,\n getAllowedOverrides,\n} from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { CenterBaseline } from \"../icon/center-baseline\";\nimport AlertTriangleIcon from \"../icon/s2wf-icons/AlertTriangleIcon\";\nimport AsteriskIcon from \"../icon/ui-icons/Asterisk\";\nimport { useProviderProps } from \"../provider\";\nimport { useFormProps, useIsInForm } from \"../form\";\nimport { getSlottedContextProps, type SpectrumContextValue } from \"../button/spectrum-context\";\n\nexport type DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\" | \"sm\" | \"md\" | \"lg\";\ntype S2DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type DateFieldLabelPosition = \"top\" | \"side\";\nexport type DateFieldLabelAlign = \"start\" | \"end\";\nexport type DateFieldNecessityIndicator = \"icon\" | \"label\";\n\nexport interface DateFieldProps<T extends DateValue = DateValue> extends Omit<\n HeadlessDateFieldProps<T>,\n \"class\" | \"style\" | \"children\"\n> {\n /** The size of the field. @default 'M' */\n size?: DateFieldSize;\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n /** Backward-compatible class alias. Prefer UNSAFE_className for S2 parity. */\n class?: string;\n /** Label for the field. */\n label?: JSX.Element;\n /** A ContextualHelp element to render next to the label. */\n contextualHelp?: JSX.Element;\n /** Description text. */\n description?: JSX.Element;\n /** Error message. */\n errorMessage?: JSX.Element;\n /** Position of the label relative to the field. */\n labelPosition?: DateFieldLabelPosition;\n /** Label alignment for side labels. */\n labelAlign?: DateFieldLabelAlign;\n /** Whether required fields show an icon or text label. */\n necessityIndicator?: DateFieldNecessityIndicator;\n}\n\nexport const DateFieldContext = createContext<SpectrumContextValue<DateFieldProps<any>>>(null);\n\ninterface DateFieldStyleProps extends DateFieldRenderProps {\n size?: S2DateFieldSize;\n labelPosition?: DateFieldLabelPosition;\n labelAlign?: DateFieldLabelAlign;\n isFocusWithin?: boolean;\n isFocusVisible?: boolean;\n isInForm?: boolean;\n}\n\nconst dateFieldRoot = style<DateFieldStyleProps>(\n {\n ...field(),\n },\n getAllowedOverrides(),\n);\n\nconst dateFieldLabelWrapper = style<DateFieldStyleProps>({\n gridArea: \"label\",\n display: \"inline\",\n textAlign: {\n labelAlign: {\n start: \"start\",\n end: \"end\",\n },\n },\n paddingBottom: {\n labelPosition: {\n top: \"--field-gap\",\n },\n },\n contain: {\n labelPosition: {\n top: \"inline-size\",\n },\n },\n});\n\nconst dateFieldLabel = style<DateFieldStyleProps>({\n ...fieldLabel(),\n});\n\nconst dateFieldGroup = style<DateFieldStyleProps>({\n ...focusRing(),\n ...control({ shape: \"default\", register: \"matte\" }),\n ...fieldInput(),\n textWrap: \"nowrap\",\n paddingX: \"edge-to-text\",\n transition: \"default\",\n borderColor: {\n default: \"well-border\",\n forcedColors: \"ButtonBorder\",\n isInvalid: {\n default: baseColor(\"negative\"),\n forcedColors: \"Mark\",\n },\n isFocusWithin: {\n default: \"gray-900\",\n isInvalid: \"negative-1000\",\n forcedColors: \"Highlight\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n backgroundColor: {\n default: \"well\",\n forcedColors: \"Field\",\n },\n color: {\n default: baseColor(\"neutral\"),\n forcedColors: \"ButtonText\",\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst segmentContainer = style({\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n height: \"full\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n scrollbarWidth: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n textWrap: \"nowrap\",\n});\n\nconst dateSegment = style<DateSegmentRenderProps & { isPunctuation?: boolean }>({\n outlineStyle: \"none\",\n caretColor: \"transparent\",\n backgroundColor: {\n default: \"transparent\",\n isFocused: \"blue-800\",\n forcedColors: {\n default: \"transparent\",\n isFocused: \"Highlight\",\n },\n },\n color: {\n isFocused: \"white\",\n isDisabled: \"disabled\",\n forcedColors: {\n isFocused: \"HighlightText\",\n isDisabled: \"GrayText\",\n },\n },\n borderRadius: \"[2px]\",\n paddingX: {\n default: 2,\n isPunctuation: 0,\n },\n paddingY: 2,\n forcedColorAdjust: \"none\",\n});\n\nconst helpText = style<DateFieldStyleProps>({\n gridArea: \"helptext\",\n display: \"flex\",\n margin: 0,\n alignItems: \"baseline\",\n gap: \"text-to-visual\",\n font: controlFont(),\n color: {\n default: \"neutral-subdued\",\n isInvalid: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n contain: \"inline-size\",\n paddingTop: \"--field-gap\",\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst fieldErrorIcon = style({\n size: fontRelative(20),\n marginStart: \"text-to-visual\",\n marginEnd: fontRelative(-2),\n flexShrink: 0,\n \"--iconPrimary\": {\n type: \"fill\",\n value: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n },\n});\n\nconst requiredIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n});\n\nconst noWrap = style({\n whiteSpace: \"nowrap\",\n});\n\nfunction normalizeDateFieldSize(size: DateFieldSize | undefined): S2DateFieldSize {\n switch (size) {\n case \"S\":\n case \"sm\":\n return \"S\";\n case \"L\":\n case \"lg\":\n return \"L\";\n case \"XL\":\n return \"XL\";\n case \"M\":\n case \"md\":\n default:\n return \"M\";\n }\n}\n\nfunction requiredIconStyle(size: S2DateFieldSize): JSX.CSSProperties {\n const pixelSize = size === \"L\" || size === \"XL\" ? 10 : 8;\n return {\n width: `${pixelSize}px`,\n height: `${pixelSize}px`,\n };\n}\n\nfunction focusFirstEditableSegment(event: Event & { currentTarget: HTMLDivElement }) {\n const target = event.target as Element | null;\n if (target?.closest('[role=\"spinbutton\"]')) {\n return;\n }\n\n event.preventDefault();\n const segments = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"spinbutton\"]:not([aria-disabled=\"true\"])',\n ),\n );\n for (let i = segments.length - 1; i >= 0; i--) {\n if (!segments[i].hasAttribute(\"data-placeholder\")) {\n segments[i].focus();\n return;\n }\n }\n segments[0]?.focus();\n}\n\nfunction DateFieldContent(props: {\n label?: JSX.Element;\n contextualHelp?: JSX.Element;\n description?: JSX.Element;\n errorMessage?: JSX.Element;\n size: S2DateFieldSize;\n labelPosition: DateFieldLabelPosition;\n labelAlign: DateFieldLabelAlign;\n necessityIndicator: DateFieldNecessityIndicator;\n}): JSX.Element {\n const { state, aria } = useDateFieldContext();\n const isDisabled = () => state.isDisabled();\n const isInvalid = () => state.isInvalid();\n const isRequired = () => state.isRequired();\n // S2's FieldGroup is a RAC <Group role=\"presentation\"> that consumes the SAME\n // GroupContext as the inner DateInput group, so upstream both elements carry\n // the field's aria-labelledby (label) and aria-describedby (value description\n // + help text). We render the FieldGroup as a styled div, so surface those two\n // identity attributes here; the D6 AX driver walks every element with\n // aria-describedby, and the presentation wrapper must match React's. The group\n // event handlers stay local — they're pruned from the AX tree and duplicating\n // the arrow-nav onKeyDown would double-advance focus (RAC relies on synthetic\n // stopPropagation ordering we can't guarantee across Solid's delegation).\n const groupAria = () => aria.inputProps as Record<string, string | undefined>;\n // Mirror the RAC Group that S2's FieldGroup renders on. Its `useFocusRing({\n // within: true })` exposes TWO states the styled FieldGroup reads\n // (Field.tsx:281-284): `isFocusWithin` drives the border color, while\n // `isFocusVisible` (focus-within AND keyboard modality) drives the outline\n // focus ring (`...focusRing()`) and brightens the text to `neutral:focused`\n // (`baseColor('neutral').isFocusVisible`). The headless field tracks focus on\n // the inner role=\"group\"; this bordered presentation wrapper is a separate,\n // non-focusable element, so track focus-within here via the reliably-bubbling\n // onFocusIn/onFocusOut (Solid's onFocus does not bubble to a container) and\n // compose focus-visible from the global interaction modality — exactly how\n // createFocusRing derives `isFocusVisible = isFocused && focusVisibleFlag`.\n const [isFocusWithin, setIsFocusWithin] = createSignal(false);\n const [isFocusVisibleModality, setIsFocusVisibleModality] = createSignal(isGlobalFocusVisible());\n createEffect(() => {\n const cleanup = createFocusVisibleListener((visible) => setIsFocusVisibleModality(visible));\n onCleanup(cleanup);\n });\n const isFocusVisibleWithin = () => isFocusWithin() && isFocusVisibleModality();\n\n return (\n <>\n <Show when={props.label}>\n <div\n class={dateFieldLabelWrapper({\n size: props.size,\n labelPosition: props.labelPosition,\n labelAlign: props.labelAlign,\n })}\n >\n <HeadlessDateFieldLabel\n class={dateFieldLabel({\n size: props.size,\n labelPosition: props.labelPosition,\n isDisabled: isDisabled(),\n })}\n >\n {props.label}\n <Show when={isRequired() || props.necessityIndicator === \"label\"}>\n <span class={noWrap}>\n \n <Show\n when={props.necessityIndicator === \"icon\"}\n fallback={\n <span aria-hidden={isRequired() ? true : undefined}>\n {isRequired() ? \"(required)\" : \"(optional)\"}\n </span>\n }\n >\n <AsteriskIcon\n size={props.size === \"S\" ? \"M\" : props.size}\n styles={requiredIcon}\n style={requiredIconStyle(props.size)}\n aria-hidden=\"true\"\n />\n </Show>\n </span>\n </Show>\n </HeadlessDateFieldLabel>\n <Show when={props.contextualHelp}>\n <span data-slot=\"contextualHelp\" class={noWrap}>\n {props.contextualHelp}\n </span>\n </Show>\n </div>\n </Show>\n\n <div\n role=\"presentation\"\n aria-labelledby={groupAria()[\"aria-labelledby\"]}\n aria-describedby={groupAria()[\"aria-describedby\"]}\n class={dateFieldGroup({\n size: props.size,\n isInvalid: isInvalid(),\n isDisabled: isDisabled(),\n isFocusWithin: isFocusWithin(),\n isFocusVisible: isFocusVisibleWithin(),\n })}\n onPointerDown={(event) => {\n if (event.pointerType === \"mouse\") {\n focusFirstEditableSegment(event);\n }\n }}\n onTouchEnd={focusFirstEditableSegment}\n onFocusIn={() => setIsFocusWithin(true)}\n onFocusOut={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setIsFocusWithin(false);\n }\n }}\n data-focused={isFocusWithin() ? \"true\" : undefined}\n data-focus-visible={isFocusVisibleWithin() ? \"true\" : undefined}\n data-disabled={isDisabled() ? \"true\" : undefined}\n data-invalid={isInvalid() ? \"true\" : undefined}\n >\n {/*\n S2 layers the segments: FieldGroup (this bordered role=\"presentation\"\n wrapper) → DateInputContainer (segmentContainer div) → AriaDateInput\n (the unstyled role=\"group\"). Keep the segmentContainer styling on the\n wrapper and leave the group unstyled so its computed box matches.\n */}\n <div class={segmentContainer}>\n <DateInput class=\"\">\n {(segment) => (\n <DateSegment\n segment={segment}\n class={(renderProps) =>\n dateSegment({\n ...renderProps,\n isDisabled: isDisabled(),\n isPunctuation: segment.type === \"literal\",\n })\n }\n />\n )}\n </DateInput>\n </div>\n\n <Show when={isInvalid() && !isDisabled()}>\n <CenterBaseline>\n <AlertTriangleIcon styles={fieldErrorIcon} />\n </CenterBaseline>\n </Show>\n </div>\n\n <Show when={props.description && !isInvalid()}>\n <HeadlessDateFieldDescription\n class={helpText({ size: props.size, isInvalid: false, isDisabled: isDisabled() })}\n >\n {props.description}\n </HeadlessDateFieldDescription>\n </Show>\n\n <Show when={props.errorMessage && isInvalid()}>\n <HeadlessDateFieldErrorMessage\n class={helpText({ size: props.size, isInvalid: true, isDisabled: isDisabled() })}\n >\n {props.errorMessage}\n </HeadlessDateFieldErrorMessage>\n </Show>\n </>\n );\n}\n\n/**\n * DateFields allow users to enter and edit date and time values using a keyboard.\n */\nexport function DateField<T extends DateValue = CalendarDate>(\n props: DateFieldProps<T>,\n): JSX.Element {\n // Slotted context props sit below explicit props; `useFormProps`/`useProviderProps`\n // wrap the result so the form/Skeleton disabled-force stays outermost (mirrors\n // upstream's `useSpectrumContextProps` → `useFormProps` order).\n const contextProps = getSlottedContextProps(useContext(DateFieldContext), props.slot);\n const merged = useProviderProps(useFormProps(mergeProps(contextProps ?? {}, props)));\n const isInForm = useIsInForm();\n const [local, rest] = splitProps(merged, [\n \"size\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"class\",\n \"label\",\n \"contextualHelp\",\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n ]);\n\n const size = () => normalizeDateFieldSize(local.size);\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n const isInvalid = () => local.isInvalid === true;\n const locale = useLocale();\n\n const rootClassName = (renderProps: DateFieldRenderProps) =>\n [\n \"solidaria-DateField\",\n local.UNSAFE_className,\n local.class,\n dateFieldRoot(\n {\n ...renderProps,\n size: size(),\n labelPosition: labelPosition(),\n isInForm,\n },\n local.styles,\n ),\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <HeadlessDateField\n {...rest}\n locale={(rest as { locale?: string }).locale ?? locale().locale}\n validationState={\n isInvalid()\n ? \"invalid\"\n : (rest as { validationState?: \"valid\" | \"invalid\" }).validationState\n }\n label={local.label as string | undefined}\n description={local.description as string | undefined}\n errorMessage={local.errorMessage as string | undefined}\n class={rootClassName}\n style={local.UNSAFE_style}\n >\n <DateFieldContent\n label={local.label}\n contextualHelp={local.contextualHelp}\n description={local.description}\n errorMessage={local.errorMessage}\n size={size()}\n labelPosition={labelPosition()}\n labelAlign={labelAlign()}\n necessityIndicator={necessityIndicator()}\n />\n </HeadlessDateField>\n );\n}\n\nexport type { CalendarDate, DateValue };\n"],"mappings":"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"}
|
|
@@ -130,7 +130,7 @@ const dateFieldLabel = function anonymous(props) {
|
|
|
130
130
|
}
|
|
131
131
|
if (props.isStaticColor) rules += " pl151";
|
|
132
132
|
else if (props.isDisabled) rules += " pUvnvv151";
|
|
133
|
-
else rules += "
|
|
133
|
+
else rules += " pWQ7V3d151";
|
|
134
134
|
rules += " plb151";
|
|
135
135
|
rules += " ri151";
|
|
136
136
|
return rules;
|
|
@@ -359,7 +359,7 @@ const helpText = function anonymous(props) {
|
|
|
359
359
|
} else if (props.isInvalid) {
|
|
360
360
|
rules += " pYjUhNc151";
|
|
361
361
|
rules += " plQBRyrc151";
|
|
362
|
-
} else rules += "
|
|
362
|
+
} else rules += " pWQ7V3d151";
|
|
363
363
|
rules += " -_8sjo0b-t5ZbAob151";
|
|
364
364
|
rules += " _qb151";
|
|
365
365
|
rules += " TgOnRt151";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateField.jsx","names":[],"sources":["../../src/calendar/DateField.tsx"],"sourcesContent":["// @ts-nocheck - style-system generics need the same dedicated pass as DatePicker.\nimport {\n createContext,\n createEffect,\n createSignal,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n DateField as HeadlessDateField,\n DateFieldLabel as HeadlessDateFieldLabel,\n DateFieldDescription as HeadlessDateFieldDescription,\n DateFieldErrorMessage as HeadlessDateFieldErrorMessage,\n DateInput,\n DateSegment,\n useDateFieldContext,\n type DateFieldProps as HeadlessDateFieldProps,\n type DateFieldRenderProps,\n type DateSegmentRenderProps,\n type CalendarDate,\n type DateValue,\n} from \"@proyecto-viviana/solidaria-components\";\nimport {\n useLocale,\n createFocusVisibleListener,\n isFocusVisible as isGlobalFocusVisible,\n} from \"@proyecto-viviana/solidaria\";\nimport type { StyleString } from \"../style\";\nimport { baseColor, focusRing, fontRelative, style } from \"../style\" with { type: \"macro\" };\nimport {\n control,\n controlFont,\n field,\n fieldInput,\n fieldLabel,\n getAllowedOverrides,\n} from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { CenterBaseline } from \"../icon/center-baseline\";\nimport AlertTriangleIcon from \"../icon/s2wf-icons/AlertTriangleIcon\";\nimport AsteriskIcon from \"../icon/ui-icons/Asterisk\";\nimport { useProviderProps } from \"../provider\";\nimport { useFormProps, useIsInForm } from \"../form\";\nimport { getSlottedContextProps, type SpectrumContextValue } from \"../button/spectrum-context\";\n\nexport type DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\" | \"sm\" | \"md\" | \"lg\";\ntype S2DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type DateFieldLabelPosition = \"top\" | \"side\";\nexport type DateFieldLabelAlign = \"start\" | \"end\";\nexport type DateFieldNecessityIndicator = \"icon\" | \"label\";\n\nexport interface DateFieldProps<T extends DateValue = DateValue> extends Omit<\n HeadlessDateFieldProps<T>,\n \"class\" | \"style\" | \"children\"\n> {\n /** The size of the field. @default 'M' */\n size?: DateFieldSize;\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n /** Backward-compatible class alias. Prefer UNSAFE_className for S2 parity. */\n class?: string;\n /** Label for the field. */\n label?: JSX.Element;\n /** A ContextualHelp element to render next to the label. */\n contextualHelp?: JSX.Element;\n /** Description text. */\n description?: JSX.Element;\n /** Error message. */\n errorMessage?: JSX.Element;\n /** Position of the label relative to the field. */\n labelPosition?: DateFieldLabelPosition;\n /** Label alignment for side labels. */\n labelAlign?: DateFieldLabelAlign;\n /** Whether required fields show an icon or text label. */\n necessityIndicator?: DateFieldNecessityIndicator;\n}\n\nexport const DateFieldContext = createContext<SpectrumContextValue<DateFieldProps<any>>>(null);\n\ninterface DateFieldStyleProps extends DateFieldRenderProps {\n size?: S2DateFieldSize;\n labelPosition?: DateFieldLabelPosition;\n labelAlign?: DateFieldLabelAlign;\n isFocusWithin?: boolean;\n isFocusVisible?: boolean;\n isInForm?: boolean;\n}\n\nconst dateFieldRoot = style<DateFieldStyleProps>(\n {\n ...field(),\n },\n getAllowedOverrides(),\n);\n\nconst dateFieldLabelWrapper = style<DateFieldStyleProps>({\n gridArea: \"label\",\n display: \"inline\",\n textAlign: {\n labelAlign: {\n start: \"start\",\n end: \"end\",\n },\n },\n paddingBottom: {\n labelPosition: {\n top: \"--field-gap\",\n },\n },\n contain: {\n labelPosition: {\n top: \"inline-size\",\n },\n },\n});\n\nconst dateFieldLabel = style<DateFieldStyleProps>({\n ...fieldLabel(),\n});\n\nconst dateFieldGroup = style<DateFieldStyleProps>({\n ...focusRing(),\n ...control({ shape: \"default\", register: \"matte\" }),\n ...fieldInput(),\n textWrap: \"nowrap\",\n paddingX: \"edge-to-text\",\n transition: \"default\",\n borderColor: {\n default: \"well-border\",\n forcedColors: \"ButtonBorder\",\n isInvalid: {\n default: baseColor(\"negative\"),\n forcedColors: \"Mark\",\n },\n isFocusWithin: {\n default: \"gray-900\",\n isInvalid: \"negative-1000\",\n forcedColors: \"Highlight\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n backgroundColor: {\n default: \"well\",\n forcedColors: \"Field\",\n },\n color: {\n default: baseColor(\"neutral\"),\n forcedColors: \"ButtonText\",\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst segmentContainer = style({\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n height: \"full\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n scrollbarWidth: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n textWrap: \"nowrap\",\n});\n\nconst dateSegment = style<DateSegmentRenderProps & { isPunctuation?: boolean }>({\n outlineStyle: \"none\",\n caretColor: \"transparent\",\n backgroundColor: {\n default: \"transparent\",\n isFocused: \"blue-800\",\n forcedColors: {\n default: \"transparent\",\n isFocused: \"Highlight\",\n },\n },\n color: {\n isFocused: \"white\",\n isDisabled: \"disabled\",\n forcedColors: {\n isFocused: \"HighlightText\",\n isDisabled: \"GrayText\",\n },\n },\n borderRadius: \"[2px]\",\n paddingX: {\n default: 2,\n isPunctuation: 0,\n },\n paddingY: 2,\n forcedColorAdjust: \"none\",\n});\n\nconst helpText = style<DateFieldStyleProps>({\n gridArea: \"helptext\",\n display: \"flex\",\n margin: 0,\n alignItems: \"baseline\",\n gap: \"text-to-visual\",\n font: controlFont(),\n color: {\n default: \"neutral-subdued\",\n isInvalid: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n contain: \"inline-size\",\n paddingTop: \"--field-gap\",\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst fieldErrorIcon = style({\n size: fontRelative(20),\n marginStart: \"text-to-visual\",\n marginEnd: fontRelative(-2),\n flexShrink: 0,\n \"--iconPrimary\": {\n type: \"fill\",\n value: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n },\n});\n\nconst requiredIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n});\n\nconst noWrap = style({\n whiteSpace: \"nowrap\",\n});\n\nfunction normalizeDateFieldSize(size: DateFieldSize | undefined): S2DateFieldSize {\n switch (size) {\n case \"S\":\n case \"sm\":\n return \"S\";\n case \"L\":\n case \"lg\":\n return \"L\";\n case \"XL\":\n return \"XL\";\n case \"M\":\n case \"md\":\n default:\n return \"M\";\n }\n}\n\nfunction requiredIconStyle(size: S2DateFieldSize): JSX.CSSProperties {\n const pixelSize = size === \"L\" || size === \"XL\" ? 10 : 8;\n return {\n width: `${pixelSize}px`,\n height: `${pixelSize}px`,\n };\n}\n\nfunction focusFirstEditableSegment(event: Event & { currentTarget: HTMLDivElement }) {\n const target = event.target as Element | null;\n if (target?.closest('[role=\"spinbutton\"]')) {\n return;\n }\n\n event.preventDefault();\n const segments = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"spinbutton\"]:not([aria-disabled=\"true\"])',\n ),\n );\n for (let i = segments.length - 1; i >= 0; i--) {\n if (!segments[i].hasAttribute(\"data-placeholder\")) {\n segments[i].focus();\n return;\n }\n }\n segments[0]?.focus();\n}\n\nfunction DateFieldContent(props: {\n label?: JSX.Element;\n contextualHelp?: JSX.Element;\n description?: JSX.Element;\n errorMessage?: JSX.Element;\n size: S2DateFieldSize;\n labelPosition: DateFieldLabelPosition;\n labelAlign: DateFieldLabelAlign;\n necessityIndicator: DateFieldNecessityIndicator;\n}): JSX.Element {\n const { state, aria } = useDateFieldContext();\n const isDisabled = () => state.isDisabled();\n const isInvalid = () => state.isInvalid();\n const isRequired = () => state.isRequired();\n // S2's FieldGroup is a RAC <Group role=\"presentation\"> that consumes the SAME\n // GroupContext as the inner DateInput group, so upstream both elements carry\n // the field's aria-labelledby (label) and aria-describedby (value description\n // + help text). We render the FieldGroup as a styled div, so surface those two\n // identity attributes here; the D6 AX driver walks every element with\n // aria-describedby, and the presentation wrapper must match React's. The group\n // event handlers stay local — they're pruned from the AX tree and duplicating\n // the arrow-nav onKeyDown would double-advance focus (RAC relies on synthetic\n // stopPropagation ordering we can't guarantee across Solid's delegation).\n const groupAria = () => aria.inputProps as Record<string, string | undefined>;\n // Mirror the RAC Group that S2's FieldGroup renders on. Its `useFocusRing({\n // within: true })` exposes TWO states the styled FieldGroup reads\n // (Field.tsx:281-284): `isFocusWithin` drives the border color, while\n // `isFocusVisible` (focus-within AND keyboard modality) drives the outline\n // focus ring (`...focusRing()`) and brightens the text to `neutral:focused`\n // (`baseColor('neutral').isFocusVisible`). The headless field tracks focus on\n // the inner role=\"group\"; this bordered presentation wrapper is a separate,\n // non-focusable element, so track focus-within here via the reliably-bubbling\n // onFocusIn/onFocusOut (Solid's onFocus does not bubble to a container) and\n // compose focus-visible from the global interaction modality — exactly how\n // createFocusRing derives `isFocusVisible = isFocused && focusVisibleFlag`.\n const [isFocusWithin, setIsFocusWithin] = createSignal(false);\n const [isFocusVisibleModality, setIsFocusVisibleModality] = createSignal(\n isGlobalFocusVisible(),\n );\n createEffect(() => {\n const cleanup = createFocusVisibleListener((visible) =>\n setIsFocusVisibleModality(visible),\n );\n onCleanup(cleanup);\n });\n const isFocusVisibleWithin = () => isFocusWithin() && isFocusVisibleModality();\n\n return (\n <>\n <Show when={props.label}>\n <div\n class={dateFieldLabelWrapper({\n size: props.size,\n labelPosition: props.labelPosition,\n labelAlign: props.labelAlign,\n })}\n >\n <HeadlessDateFieldLabel\n class={dateFieldLabel({\n size: props.size,\n labelPosition: props.labelPosition,\n isDisabled: isDisabled(),\n })}\n >\n {props.label}\n <Show when={isRequired() || props.necessityIndicator === \"label\"}>\n <span class={noWrap}>\n \n <Show\n when={props.necessityIndicator === \"icon\"}\n fallback={\n <span aria-hidden={isRequired() ? true : undefined}>\n {isRequired() ? \"(required)\" : \"(optional)\"}\n </span>\n }\n >\n <AsteriskIcon\n size={props.size === \"S\" ? \"M\" : props.size}\n styles={requiredIcon}\n style={requiredIconStyle(props.size)}\n aria-hidden=\"true\"\n />\n </Show>\n </span>\n </Show>\n </HeadlessDateFieldLabel>\n <Show when={props.contextualHelp}>\n <span data-slot=\"contextualHelp\" class={noWrap}>\n {props.contextualHelp}\n </span>\n </Show>\n </div>\n </Show>\n\n <div\n role=\"presentation\"\n aria-labelledby={groupAria()[\"aria-labelledby\"]}\n aria-describedby={groupAria()[\"aria-describedby\"]}\n class={dateFieldGroup({\n size: props.size,\n isInvalid: isInvalid(),\n isDisabled: isDisabled(),\n isFocusWithin: isFocusWithin(),\n isFocusVisible: isFocusVisibleWithin(),\n })}\n onPointerDown={(event) => {\n if (event.pointerType === \"mouse\") {\n focusFirstEditableSegment(event);\n }\n }}\n onTouchEnd={focusFirstEditableSegment}\n onFocusIn={() => setIsFocusWithin(true)}\n onFocusOut={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setIsFocusWithin(false);\n }\n }}\n data-focused={isFocusWithin() ? \"true\" : undefined}\n data-focus-visible={isFocusVisibleWithin() ? \"true\" : undefined}\n data-disabled={isDisabled() ? \"true\" : undefined}\n data-invalid={isInvalid() ? \"true\" : undefined}\n >\n {/*\n S2 layers the segments: FieldGroup (this bordered role=\"presentation\"\n wrapper) → DateInputContainer (segmentContainer div) → AriaDateInput\n (the unstyled role=\"group\"). Keep the segmentContainer styling on the\n wrapper and leave the group unstyled so its computed box matches.\n */}\n <div class={segmentContainer}>\n <DateInput class=\"\">\n {(segment) => (\n <DateSegment\n segment={segment}\n class={(renderProps) =>\n dateSegment({\n ...renderProps,\n isDisabled: isDisabled(),\n isPunctuation: segment.type === \"literal\",\n })\n }\n />\n )}\n </DateInput>\n </div>\n\n <Show when={isInvalid() && !isDisabled()}>\n <CenterBaseline>\n <AlertTriangleIcon styles={fieldErrorIcon} />\n </CenterBaseline>\n </Show>\n </div>\n\n <Show when={props.description && !isInvalid()}>\n <HeadlessDateFieldDescription\n class={helpText({ size: props.size, isInvalid: false, isDisabled: isDisabled() })}\n >\n {props.description}\n </HeadlessDateFieldDescription>\n </Show>\n\n <Show when={props.errorMessage && isInvalid()}>\n <HeadlessDateFieldErrorMessage\n class={helpText({ size: props.size, isInvalid: true, isDisabled: isDisabled() })}\n >\n {props.errorMessage}\n </HeadlessDateFieldErrorMessage>\n </Show>\n </>\n );\n}\n\n/**\n * DateFields allow users to enter and edit date and time values using a keyboard.\n */\nexport function DateField<T extends DateValue = CalendarDate>(\n props: DateFieldProps<T>,\n): JSX.Element {\n // Slotted context props sit below explicit props; `useFormProps`/`useProviderProps`\n // wrap the result so the form/Skeleton disabled-force stays outermost (mirrors\n // upstream's `useSpectrumContextProps` → `useFormProps` order).\n const contextProps = getSlottedContextProps(useContext(DateFieldContext), props.slot);\n const merged = useProviderProps(useFormProps(mergeProps(contextProps ?? {}, props)));\n const isInForm = useIsInForm();\n const [local, rest] = splitProps(merged, [\n \"size\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"class\",\n \"label\",\n \"contextualHelp\",\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n ]);\n\n const size = () => normalizeDateFieldSize(local.size);\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n const isInvalid = () => local.isInvalid === true;\n const locale = useLocale();\n\n const rootClassName = (renderProps: DateFieldRenderProps) =>\n [\n \"solidaria-DateField\",\n local.UNSAFE_className,\n local.class,\n dateFieldRoot(\n {\n ...renderProps,\n size: size(),\n labelPosition: labelPosition(),\n isInForm,\n },\n local.styles,\n ),\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <HeadlessDateField\n {...rest}\n locale={(rest as { locale?: string }).locale ?? locale().locale}\n validationState={\n isInvalid()\n ? \"invalid\"\n : (rest as { validationState?: \"valid\" | \"invalid\" }).validationState\n }\n label={local.label as string | undefined}\n description={local.description as string | undefined}\n errorMessage={local.errorMessage as string | undefined}\n class={rootClassName}\n style={local.UNSAFE_style}\n >\n <DateFieldContent\n label={local.label}\n contextualHelp={local.contextualHelp}\n description={local.description}\n errorMessage={local.errorMessage}\n size={size()}\n labelPosition={labelPosition()}\n labelAlign={labelAlign()}\n necessityIndicator={necessityIndicator()}\n />\n </HeadlessDateField>\n );\n}\n\nexport type { CalendarDate, DateValue };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateField.jsx","names":[],"sources":["../../src/calendar/DateField.tsx"],"sourcesContent":["// @ts-nocheck - style-system generics need the same dedicated pass as DatePicker.\nimport {\n createContext,\n createEffect,\n createSignal,\n type JSX,\n mergeProps,\n onCleanup,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport {\n DateField as HeadlessDateField,\n DateFieldLabel as HeadlessDateFieldLabel,\n DateFieldDescription as HeadlessDateFieldDescription,\n DateFieldErrorMessage as HeadlessDateFieldErrorMessage,\n DateInput,\n DateSegment,\n useDateFieldContext,\n type DateFieldProps as HeadlessDateFieldProps,\n type DateFieldRenderProps,\n type DateSegmentRenderProps,\n type CalendarDate,\n type DateValue,\n} from \"@proyecto-viviana/solidaria-components\";\nimport {\n useLocale,\n createFocusVisibleListener,\n isFocusVisible as isGlobalFocusVisible,\n} from \"@proyecto-viviana/solidaria\";\nimport type { StyleString } from \"../style\";\nimport { baseColor, focusRing, fontRelative, style } from \"../style\" with { type: \"macro\" };\nimport {\n control,\n controlFont,\n field,\n fieldInput,\n fieldLabel,\n getAllowedOverrides,\n} from \"../s2-internal/style-utils\" with { type: \"macro\" };\nimport { CenterBaseline } from \"../icon/center-baseline\";\nimport AlertTriangleIcon from \"../icon/s2wf-icons/AlertTriangleIcon\";\nimport AsteriskIcon from \"../icon/ui-icons/Asterisk\";\nimport { useProviderProps } from \"../provider\";\nimport { useFormProps, useIsInForm } from \"../form\";\nimport { getSlottedContextProps, type SpectrumContextValue } from \"../button/spectrum-context\";\n\nexport type DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\" | \"sm\" | \"md\" | \"lg\";\ntype S2DateFieldSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type DateFieldLabelPosition = \"top\" | \"side\";\nexport type DateFieldLabelAlign = \"start\" | \"end\";\nexport type DateFieldNecessityIndicator = \"icon\" | \"label\";\n\nexport interface DateFieldProps<T extends DateValue = DateValue> extends Omit<\n HeadlessDateFieldProps<T>,\n \"class\" | \"style\" | \"children\"\n> {\n /** The size of the field. @default 'M' */\n size?: DateFieldSize;\n /** Spectrum-defined generated classes. */\n styles?: StyleString;\n /** Additional CSS class name. Use only as a last resort. */\n UNSAFE_className?: string;\n /** Additional inline styles. Use only as a last resort. */\n UNSAFE_style?: JSX.CSSProperties;\n /** Backward-compatible class alias. Prefer UNSAFE_className for S2 parity. */\n class?: string;\n /** Label for the field. */\n label?: JSX.Element;\n /** A ContextualHelp element to render next to the label. */\n contextualHelp?: JSX.Element;\n /** Description text. */\n description?: JSX.Element;\n /** Error message. */\n errorMessage?: JSX.Element;\n /** Position of the label relative to the field. */\n labelPosition?: DateFieldLabelPosition;\n /** Label alignment for side labels. */\n labelAlign?: DateFieldLabelAlign;\n /** Whether required fields show an icon or text label. */\n necessityIndicator?: DateFieldNecessityIndicator;\n}\n\nexport const DateFieldContext = createContext<SpectrumContextValue<DateFieldProps<any>>>(null);\n\ninterface DateFieldStyleProps extends DateFieldRenderProps {\n size?: S2DateFieldSize;\n labelPosition?: DateFieldLabelPosition;\n labelAlign?: DateFieldLabelAlign;\n isFocusWithin?: boolean;\n isFocusVisible?: boolean;\n isInForm?: boolean;\n}\n\nconst dateFieldRoot = style<DateFieldStyleProps>(\n {\n ...field(),\n },\n getAllowedOverrides(),\n);\n\nconst dateFieldLabelWrapper = style<DateFieldStyleProps>({\n gridArea: \"label\",\n display: \"inline\",\n textAlign: {\n labelAlign: {\n start: \"start\",\n end: \"end\",\n },\n },\n paddingBottom: {\n labelPosition: {\n top: \"--field-gap\",\n },\n },\n contain: {\n labelPosition: {\n top: \"inline-size\",\n },\n },\n});\n\nconst dateFieldLabel = style<DateFieldStyleProps>({\n ...fieldLabel(),\n});\n\nconst dateFieldGroup = style<DateFieldStyleProps>({\n ...focusRing(),\n ...control({ shape: \"default\", register: \"matte\" }),\n ...fieldInput(),\n textWrap: \"nowrap\",\n paddingX: \"edge-to-text\",\n transition: \"default\",\n borderColor: {\n default: \"well-border\",\n forcedColors: \"ButtonBorder\",\n isInvalid: {\n default: baseColor(\"negative\"),\n forcedColors: \"Mark\",\n },\n isFocusWithin: {\n default: \"gray-900\",\n isInvalid: \"negative-1000\",\n forcedColors: \"Highlight\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n backgroundColor: {\n default: \"well\",\n forcedColors: \"Field\",\n },\n color: {\n default: baseColor(\"neutral\"),\n forcedColors: \"ButtonText\",\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst segmentContainer = style({\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n height: \"full\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n scrollbarWidth: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n textWrap: \"nowrap\",\n});\n\nconst dateSegment = style<DateSegmentRenderProps & { isPunctuation?: boolean }>({\n outlineStyle: \"none\",\n caretColor: \"transparent\",\n backgroundColor: {\n default: \"transparent\",\n isFocused: \"blue-800\",\n forcedColors: {\n default: \"transparent\",\n isFocused: \"Highlight\",\n },\n },\n color: {\n isFocused: \"white\",\n isDisabled: \"disabled\",\n forcedColors: {\n isFocused: \"HighlightText\",\n isDisabled: \"GrayText\",\n },\n },\n borderRadius: \"[2px]\",\n paddingX: {\n default: 2,\n isPunctuation: 0,\n },\n paddingY: 2,\n forcedColorAdjust: \"none\",\n});\n\nconst helpText = style<DateFieldStyleProps>({\n gridArea: \"helptext\",\n display: \"flex\",\n margin: 0,\n alignItems: \"baseline\",\n gap: \"text-to-visual\",\n font: controlFont(),\n color: {\n default: \"neutral-subdued\",\n isInvalid: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n contain: \"inline-size\",\n paddingTop: \"--field-gap\",\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst fieldErrorIcon = style({\n size: fontRelative(20),\n marginStart: \"text-to-visual\",\n marginEnd: fontRelative(-2),\n flexShrink: 0,\n \"--iconPrimary\": {\n type: \"fill\",\n value: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n },\n});\n\nconst requiredIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n});\n\nconst noWrap = style({\n whiteSpace: \"nowrap\",\n});\n\nfunction normalizeDateFieldSize(size: DateFieldSize | undefined): S2DateFieldSize {\n switch (size) {\n case \"S\":\n case \"sm\":\n return \"S\";\n case \"L\":\n case \"lg\":\n return \"L\";\n case \"XL\":\n return \"XL\";\n case \"M\":\n case \"md\":\n default:\n return \"M\";\n }\n}\n\nfunction requiredIconStyle(size: S2DateFieldSize): JSX.CSSProperties {\n const pixelSize = size === \"L\" || size === \"XL\" ? 10 : 8;\n return {\n width: `${pixelSize}px`,\n height: `${pixelSize}px`,\n };\n}\n\nfunction focusFirstEditableSegment(event: Event & { currentTarget: HTMLDivElement }) {\n const target = event.target as Element | null;\n if (target?.closest('[role=\"spinbutton\"]')) {\n return;\n }\n\n event.preventDefault();\n const segments = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"spinbutton\"]:not([aria-disabled=\"true\"])',\n ),\n );\n for (let i = segments.length - 1; i >= 0; i--) {\n if (!segments[i].hasAttribute(\"data-placeholder\")) {\n segments[i].focus();\n return;\n }\n }\n segments[0]?.focus();\n}\n\nfunction DateFieldContent(props: {\n label?: JSX.Element;\n contextualHelp?: JSX.Element;\n description?: JSX.Element;\n errorMessage?: JSX.Element;\n size: S2DateFieldSize;\n labelPosition: DateFieldLabelPosition;\n labelAlign: DateFieldLabelAlign;\n necessityIndicator: DateFieldNecessityIndicator;\n}): JSX.Element {\n const { state, aria } = useDateFieldContext();\n const isDisabled = () => state.isDisabled();\n const isInvalid = () => state.isInvalid();\n const isRequired = () => state.isRequired();\n // S2's FieldGroup is a RAC <Group role=\"presentation\"> that consumes the SAME\n // GroupContext as the inner DateInput group, so upstream both elements carry\n // the field's aria-labelledby (label) and aria-describedby (value description\n // + help text). We render the FieldGroup as a styled div, so surface those two\n // identity attributes here; the D6 AX driver walks every element with\n // aria-describedby, and the presentation wrapper must match React's. The group\n // event handlers stay local — they're pruned from the AX tree and duplicating\n // the arrow-nav onKeyDown would double-advance focus (RAC relies on synthetic\n // stopPropagation ordering we can't guarantee across Solid's delegation).\n const groupAria = () => aria.inputProps as Record<string, string | undefined>;\n // Mirror the RAC Group that S2's FieldGroup renders on. Its `useFocusRing({\n // within: true })` exposes TWO states the styled FieldGroup reads\n // (Field.tsx:281-284): `isFocusWithin` drives the border color, while\n // `isFocusVisible` (focus-within AND keyboard modality) drives the outline\n // focus ring (`...focusRing()`) and brightens the text to `neutral:focused`\n // (`baseColor('neutral').isFocusVisible`). The headless field tracks focus on\n // the inner role=\"group\"; this bordered presentation wrapper is a separate,\n // non-focusable element, so track focus-within here via the reliably-bubbling\n // onFocusIn/onFocusOut (Solid's onFocus does not bubble to a container) and\n // compose focus-visible from the global interaction modality — exactly how\n // createFocusRing derives `isFocusVisible = isFocused && focusVisibleFlag`.\n const [isFocusWithin, setIsFocusWithin] = createSignal(false);\n const [isFocusVisibleModality, setIsFocusVisibleModality] = createSignal(isGlobalFocusVisible());\n createEffect(() => {\n const cleanup = createFocusVisibleListener((visible) => setIsFocusVisibleModality(visible));\n onCleanup(cleanup);\n });\n const isFocusVisibleWithin = () => isFocusWithin() && isFocusVisibleModality();\n\n return (\n <>\n <Show when={props.label}>\n <div\n class={dateFieldLabelWrapper({\n size: props.size,\n labelPosition: props.labelPosition,\n labelAlign: props.labelAlign,\n })}\n >\n <HeadlessDateFieldLabel\n class={dateFieldLabel({\n size: props.size,\n labelPosition: props.labelPosition,\n isDisabled: isDisabled(),\n })}\n >\n {props.label}\n <Show when={isRequired() || props.necessityIndicator === \"label\"}>\n <span class={noWrap}>\n \n <Show\n when={props.necessityIndicator === \"icon\"}\n fallback={\n <span aria-hidden={isRequired() ? true : undefined}>\n {isRequired() ? \"(required)\" : \"(optional)\"}\n </span>\n }\n >\n <AsteriskIcon\n size={props.size === \"S\" ? \"M\" : props.size}\n styles={requiredIcon}\n style={requiredIconStyle(props.size)}\n aria-hidden=\"true\"\n />\n </Show>\n </span>\n </Show>\n </HeadlessDateFieldLabel>\n <Show when={props.contextualHelp}>\n <span data-slot=\"contextualHelp\" class={noWrap}>\n {props.contextualHelp}\n </span>\n </Show>\n </div>\n </Show>\n\n <div\n role=\"presentation\"\n aria-labelledby={groupAria()[\"aria-labelledby\"]}\n aria-describedby={groupAria()[\"aria-describedby\"]}\n class={dateFieldGroup({\n size: props.size,\n isInvalid: isInvalid(),\n isDisabled: isDisabled(),\n isFocusWithin: isFocusWithin(),\n isFocusVisible: isFocusVisibleWithin(),\n })}\n onPointerDown={(event) => {\n if (event.pointerType === \"mouse\") {\n focusFirstEditableSegment(event);\n }\n }}\n onTouchEnd={focusFirstEditableSegment}\n onFocusIn={() => setIsFocusWithin(true)}\n onFocusOut={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n setIsFocusWithin(false);\n }\n }}\n data-focused={isFocusWithin() ? \"true\" : undefined}\n data-focus-visible={isFocusVisibleWithin() ? \"true\" : undefined}\n data-disabled={isDisabled() ? \"true\" : undefined}\n data-invalid={isInvalid() ? \"true\" : undefined}\n >\n {/*\n S2 layers the segments: FieldGroup (this bordered role=\"presentation\"\n wrapper) → DateInputContainer (segmentContainer div) → AriaDateInput\n (the unstyled role=\"group\"). Keep the segmentContainer styling on the\n wrapper and leave the group unstyled so its computed box matches.\n */}\n <div class={segmentContainer}>\n <DateInput class=\"\">\n {(segment) => (\n <DateSegment\n segment={segment}\n class={(renderProps) =>\n dateSegment({\n ...renderProps,\n isDisabled: isDisabled(),\n isPunctuation: segment.type === \"literal\",\n })\n }\n />\n )}\n </DateInput>\n </div>\n\n <Show when={isInvalid() && !isDisabled()}>\n <CenterBaseline>\n <AlertTriangleIcon styles={fieldErrorIcon} />\n </CenterBaseline>\n </Show>\n </div>\n\n <Show when={props.description && !isInvalid()}>\n <HeadlessDateFieldDescription\n class={helpText({ size: props.size, isInvalid: false, isDisabled: isDisabled() })}\n >\n {props.description}\n </HeadlessDateFieldDescription>\n </Show>\n\n <Show when={props.errorMessage && isInvalid()}>\n <HeadlessDateFieldErrorMessage\n class={helpText({ size: props.size, isInvalid: true, isDisabled: isDisabled() })}\n >\n {props.errorMessage}\n </HeadlessDateFieldErrorMessage>\n </Show>\n </>\n );\n}\n\n/**\n * DateFields allow users to enter and edit date and time values using a keyboard.\n */\nexport function DateField<T extends DateValue = CalendarDate>(\n props: DateFieldProps<T>,\n): JSX.Element {\n // Slotted context props sit below explicit props; `useFormProps`/`useProviderProps`\n // wrap the result so the form/Skeleton disabled-force stays outermost (mirrors\n // upstream's `useSpectrumContextProps` → `useFormProps` order).\n const contextProps = getSlottedContextProps(useContext(DateFieldContext), props.slot);\n const merged = useProviderProps(useFormProps(mergeProps(contextProps ?? {}, props)));\n const isInForm = useIsInForm();\n const [local, rest] = splitProps(merged, [\n \"size\",\n \"styles\",\n \"UNSAFE_className\",\n \"UNSAFE_style\",\n \"class\",\n \"label\",\n \"contextualHelp\",\n \"description\",\n \"errorMessage\",\n \"isInvalid\",\n \"labelPosition\",\n \"labelAlign\",\n \"necessityIndicator\",\n ]);\n\n const size = () => normalizeDateFieldSize(local.size);\n const labelPosition = () => local.labelPosition ?? \"top\";\n const labelAlign = () => local.labelAlign ?? \"start\";\n const necessityIndicator = () => local.necessityIndicator ?? \"icon\";\n const isInvalid = () => local.isInvalid === true;\n const locale = useLocale();\n\n const rootClassName = (renderProps: DateFieldRenderProps) =>\n [\n \"solidaria-DateField\",\n local.UNSAFE_className,\n local.class,\n dateFieldRoot(\n {\n ...renderProps,\n size: size(),\n labelPosition: labelPosition(),\n isInForm,\n },\n local.styles,\n ),\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <HeadlessDateField\n {...rest}\n locale={(rest as { locale?: string }).locale ?? locale().locale}\n validationState={\n isInvalid()\n ? \"invalid\"\n : (rest as { validationState?: \"valid\" | \"invalid\" }).validationState\n }\n label={local.label as string | undefined}\n description={local.description as string | undefined}\n errorMessage={local.errorMessage as string | undefined}\n class={rootClassName}\n style={local.UNSAFE_style}\n >\n <DateFieldContent\n label={local.label}\n contextualHelp={local.contextualHelp}\n description={local.description}\n errorMessage={local.errorMessage}\n size={size()}\n labelPosition={labelPosition()}\n labelAlign={labelAlign()}\n necessityIndicator={necessityIndicator()}\n />\n </HeadlessDateField>\n );\n}\n\nexport type { CalendarDate, DateValue };\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/calendar/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,GAAG,EAKT,MAAM,UAAU,CAAC;AAElB,OAAO,EAUL,KAAK,eAAe,IAAI,uBAAuB,EAC/C,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,wCAAwC,CAAC;AAiBhD,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAW/F,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzE,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7F,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,IAAI,CAC5E,uBAAuB,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CACpE;IACC,4CAA4C;IAC5C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,cAAc,CAAC,EAAE,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,iBAAiB,wEAAkE,CAAC;AA0djG,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,YAAY,EAC3D,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../src/calendar/DatePicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,GAAG,EAKT,MAAM,UAAU,CAAC;AAElB,OAAO,EAUL,KAAK,eAAe,IAAI,uBAAuB,EAC/C,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,wCAAwC,CAAC;AAiBhD,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAW/F,MAAM,MAAM,cAAc,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzE,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7F,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,IAAI,CAC5E,uBAAuB,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,gBAAgB,GAAG,eAAe,CACpE;IACC,4CAA4C;IAC5C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC7B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,cAAc,CAAC,EAAE,wBAAwB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,iBAAiB,wEAAkE,CAAC;AA0djG,wBAAgB,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,YAAY,EAC3D,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,GAAG,CAAC,OAAO,CAwMb;AAyDD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -178,7 +178,7 @@ const datePickerLabel = function anonymous(props) {
|
|
|
178
178
|
}
|
|
179
179
|
if (props.isStaticColor) rules += " pl151";
|
|
180
180
|
else if (props.isDisabled) rules += " pUvnvv151";
|
|
181
|
-
else rules += "
|
|
181
|
+
else rules += " pWQ7V3d151";
|
|
182
182
|
rules += " plb151";
|
|
183
183
|
rules += " ri151";
|
|
184
184
|
return rules;
|
|
@@ -503,7 +503,7 @@ const helpText = function anonymous(props) {
|
|
|
503
503
|
} else if (props.isInvalid) {
|
|
504
504
|
rules += " pYjUhNc151";
|
|
505
505
|
rules += " plQBRyrc151";
|
|
506
|
-
} else rules += "
|
|
506
|
+
} else rules += " pWQ7V3d151";
|
|
507
507
|
rules += " -_8sjo0b-t5ZbAob151";
|
|
508
508
|
rules += " _qb151";
|
|
509
509
|
rules += " TgOnRt151";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../src/calendar/DatePicker.tsx"],"sourcesContent":["// @ts-nocheck - style-system types need a dedicated pass; removing this would require\n// fixing ~20 style-definition type mismatches unrelated to component behavior.\nimport {\n createContext,\n createSignal,\n type JSX,\n mergeProps,\n splitProps,\n Show,\n useContext,\n} from \"solid-js\";\nimport { pressScale } from \"../pressScale\";\nimport {\n DatePicker as HeadlessDatePicker,\n DatePickerLabel as HeadlessDatePickerLabel,\n DatePickerDescription as HeadlessDatePickerDescription,\n DatePickerErrorMessage as HeadlessDatePickerErrorMessage,\n DatePickerButton,\n DatePickerContent,\n DateInput,\n DateSegment,\n useDatePickerContext,\n type DatePickerProps as HeadlessDatePickerProps,\n type CalendarDate,\n type DateValue,\n} from \"@proyecto-viviana/solidaria-components\";\nimport { createHover, useLocale } from \"@proyecto-viviana/solidaria\";\nimport { Calendar } from \"./index\";\nimport { TimeField } from \"../datepicker\";\nimport {\n baseColor,\n focusRing,\n fontRelative,\n lightDark,\n setColorScheme,\n style,\n} from \"../style\" with { type: \"macro\" };\nimport { CenterBaseline } from \"../icon/center-baseline\";\nimport AlertTriangleIcon from \"../icon/s2wf-icons/AlertTriangleIcon\";\nimport S2CalendarIcon from \"../icon/s2wf-icons/CalendarIcon\";\nimport AsteriskIcon from \"../icon/ui-icons/Asterisk\";\nimport { useProviderProps, useTheme } from \"../provider\";\nimport { getSlottedContextProps, type SpectrumContextValue } from \"../button/spectrum-context\";\nimport {\n control,\n controlBorderRadius,\n controlFont,\n field,\n fieldInput,\n fieldLabel,\n getAllowedOverrides,\n} from \"../s2-internal/style-utils\" with { type: \"macro\" };\n\nexport type DatePickerSize = \"S\" | \"M\" | \"L\" | \"XL\" | \"sm\" | \"md\" | \"lg\";\ntype NormalizedDatePickerSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type DatePickerFirstDayOfWeek = \"sun\" | \"mon\" | \"tue\" | \"wed\" | \"thu\" | \"fri\" | \"sat\";\n\nexport interface DatePickerProps<T extends DateValue = DateValue> extends Omit<\n HeadlessDatePickerProps<T>,\n \"class\" | \"style\" | \"children\" | \"firstDayOfWeek\" | \"visibleMonths\"\n> {\n /** The size of the picker. @default 'md' */\n size?: DatePickerSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label for the field. */\n label?: string;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n /** A ContextualHelp element to place next to the label. */\n contextualHelp?: JSX.Element;\n /** Placeholder text. */\n placeholder?: string;\n /**\n * The maximum number of months to display at once in the calendar popover.\n *\n * @default 1\n */\n maxVisibleMonths?: number;\n /** The day that starts the week. */\n firstDayOfWeek?: DatePickerFirstDayOfWeek | 0 | 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nexport const DatePickerContext = createContext<SpectrumContextValue<DatePickerProps<any>>>(null);\n\nfunction normalizeDatePickerSize(size: DatePickerSize | undefined): NormalizedDatePickerSize {\n switch (size) {\n case \"S\":\n case \"sm\":\n return \"S\";\n case \"L\":\n case \"lg\":\n return \"L\";\n case \"XL\":\n return \"XL\";\n case \"M\":\n case \"md\":\n default:\n return \"M\";\n }\n}\n\nfunction normalizeFirstDayOfWeek(\n firstDayOfWeek: DatePickerFirstDayOfWeek | 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined,\n): 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined {\n switch (firstDayOfWeek) {\n case \"sun\":\n return 0;\n case \"mon\":\n return 1;\n case \"tue\":\n return 2;\n case \"wed\":\n return 3;\n case \"thu\":\n return 4;\n case \"fri\":\n return 5;\n case \"sat\":\n return 6;\n default:\n return firstDayOfWeek;\n }\n}\n\nfunction requiredIconStyle(size: NormalizedDatePickerSize): JSX.CSSProperties {\n const pixelSize = size === \"L\" || size === \"XL\" ? 10 : 8;\n return {\n width: `${pixelSize}px`,\n height: `${pixelSize}px`,\n };\n}\n\nfunction datePickerFieldGroupStyle(size: NormalizedDatePickerSize): JSX.CSSProperties | undefined {\n if (size !== \"L\" && size !== \"XL\") return undefined;\n\n return {\n \"padding-inline-end\": \"6px\",\n width: size === \"L\" ? \"224px\" : \"240px\",\n };\n}\n\nconst datePickerRoot = style(\n {\n ...field(),\n position: \"relative\",\n },\n getAllowedOverrides(),\n);\n\nconst datePickerLabelWrapper = style({\n gridArea: \"label\",\n display: \"inline\",\n paddingBottom: {\n labelPosition: {\n top: \"--field-gap\",\n },\n },\n contain: {\n labelPosition: {\n top: \"inline-size\",\n },\n },\n});\n\nconst datePickerLabel = style<any>({\n ...fieldLabel(),\n});\n\nconst datePickerFieldGroup = style({\n ...focusRing(),\n ...control({ shape: \"default\", register: \"matte\" }),\n ...fieldInput(),\n transition: \"default\",\n textWrap: \"nowrap\",\n paddingStart: \"edge-to-text\",\n paddingEnd: {\n size: {\n S: 2,\n M: 4,\n L: \"[6px]\",\n XL: \"[6px]\",\n },\n },\n backgroundColor: {\n // S2 `fieldGroupStyles.backgroundColor` (Field.tsx) is a FLAT `gray-25` with\n // no `isHovered` variant — the field surface does not lighten/darken on hover\n // (only its `color: baseColor(\"neutral\")` does). Wrapping this in\n // `baseColor(\"gray-25\")` injected a phantom `gray-25:hovered` that darkened\n // the field to 248 on hover while S2 stays at 255 (matches certified\n // DateField/TimeField, which use the flat token).\n default: \"well\",\n forcedColors: \"Field\",\n },\n borderColor: {\n default: \"well-border\",\n isInvalid: {\n default: baseColor(\"negative\"),\n forcedColors: \"Mark\",\n },\n isFocusWithin: {\n default: \"gray-900\",\n isInvalid: \"negative-1000\",\n forcedColors: \"Highlight\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n color: {\n default: baseColor(\"neutral\"),\n forcedColors: \"ButtonText\",\n // Mirror S2 `fieldGroupStyles.color` (Field.tsx): the disabled color nests\n // its own forced-colors branch so a disabled field in forced-colors resolves\n // to `GrayText`, not the flat `ButtonText`. A flat `isDisabled: \"disabled\"`\n // loses that branch and paints CanvasText in forced-colors.\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst dateInputContainer = style({\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n height: \"full\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n scrollbarWidth: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n textWrap: \"nowrap\",\n});\n\nconst dateSegment = style<{ isFocused?: boolean; isPunctuation?: boolean }>({\n outlineStyle: \"none\",\n caretColor: \"transparent\",\n backgroundColor: {\n default: \"transparent\",\n isFocused: \"blue-800\",\n forcedColors: {\n default: \"transparent\",\n isFocused: \"Highlight\",\n },\n },\n color: {\n isFocused: \"white\",\n isDisabled: \"disabled\",\n forcedColors: {\n isFocused: \"HighlightText\",\n isDisabled: \"GrayText\",\n },\n },\n borderRadius: \"[2px]\",\n paddingX: {\n default: 2,\n isPunctuation: 0,\n },\n paddingY: 2,\n forcedColorAdjust: \"none\",\n});\n\nconst fieldErrorIcon = style({\n size: fontRelative(20),\n marginStart: \"text-to-visual\",\n marginEnd: fontRelative(-2),\n flexShrink: 0,\n \"--iconPrimary\": {\n type: \"fill\",\n value: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n },\n});\n\nconst requiredIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n});\n\nconst calendarIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n size: fontRelative(14),\n});\n\nconst noWrap = style({\n whiteSpace: \"nowrap\",\n});\n\nconst calendarButton = style<{\n isOpen?: boolean;\n isDisabled?: boolean;\n isHovered?: boolean;\n isPressed?: boolean;\n isFocusVisible?: boolean;\n size: NormalizedDatePickerSize;\n}>({\n ...focusRing(),\n ...controlBorderRadius(\"sm\"),\n position: \"relative\",\n font: {\n size: {\n S: \"ui-sm\",\n M: \"ui\",\n L: \"ui-lg\",\n XL: \"ui-xl\",\n },\n },\n cursor: \"default\",\n display: \"flex\",\n textAlign: \"center\",\n borderStyle: \"none\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: {\n size: {\n S: 16,\n M: 20,\n L: 24,\n XL: 32,\n },\n },\n height: \"auto\",\n marginStart: \"text-to-control\",\n aspectRatio: \"square\",\n flexShrink: 0,\n transition: {\n default: \"default\",\n forcedColors: \"none\",\n },\n backgroundColor: {\n default: baseColor(\"gray-100\"),\n isOpen: \"gray-200\",\n isDisabled: \"disabled\",\n forcedColors: {\n default: \"ButtonText\",\n isHovered: \"Highlight\",\n isOpen: \"Highlight\",\n isDisabled: \"GrayText\",\n },\n },\n color: {\n default: baseColor(\"neutral\"),\n isDisabled: \"disabled\",\n forcedColors: \"ButtonFace\",\n },\n});\n\nconst helpText = style<{ isInvalid?: boolean; isDisabled?: boolean }>({\n gridArea: \"helptext\",\n display: \"flex\",\n margin: 0,\n alignItems: \"baseline\",\n gap: \"text-to-visual\",\n font: controlFont(),\n color: {\n default: \"neutral-subdued\",\n isInvalid: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n // Mirror S2's `helpTextStyles` (Field.mjs) exactly — the same style the\n // certified DateField help text carries. `--iconPrimary` tints the FieldError\n // icon and `cursor` is set on the help text ITSELF (class `rD151`/`ri151`), not\n // inherited: `text` at rest, `default` when disabled.\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n contain: \"inline-size\",\n paddingTop: \"--field-gap\",\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst datePickerPopover = style<{\n colorScheme: \"light\" | \"dark\" | \"light dark\";\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n isEntering?: boolean;\n isExiting?: boolean;\n}>({\n ...setColorScheme(),\n \"--s2-container-bg\": {\n type: \"backgroundColor\",\n value: {\n default: \"layer-2\",\n forcedColors: \"Background\",\n },\n },\n backgroundColor: \"--s2-container-bg\",\n // Glasselated: frost the scene behind the surface — the container bg is the\n // translucent `--surface-card`; the blur is what makes it read as glass.\n backdropFilter: \"var(--blur-card)\",\n boxShadow: \"elevated\",\n borderRadius: \"panel\",\n display: \"flex\",\n width: \"[max-content]\",\n maxWidth: \"calc(100vw - 24px)\",\n padding: 0,\n minHeight: 0,\n overflow: \"visible\",\n boxSizing: \"border-box\",\n isolation: \"isolate\",\n outlineStyle: \"solid\",\n outlineWidth: 1,\n outlineColor: {\n default: lightDark(\"transparent-white-25\", \"gray-200\"),\n forcedColors: \"ButtonBorder\",\n },\n // Byte-copied from the shared `popoverStyles` enter/exit motion (which is\n // itself S2 `Popover.tsx`'s `popover()` motion). S2's DatePicker popover is a\n // plain `<Popover>`, so its enter transition IS this generic opacity/translate\n // fade — NOT a bespoke keyframe. The port's DatePicker owns a private\n // `DatePickerContent` that bypasses the shared Popover, so the same tokens are\n // mirrored here and driven by `createEnterAnimation` (data-entering) below.\n opacity: {\n isEntering: 0,\n isExiting: 0,\n },\n translateY: {\n placement: {\n top: {\n isEntering: 4,\n isExiting: 4,\n },\n bottom: {\n isEntering: -4,\n isExiting: -4,\n },\n },\n },\n translateX: {\n placement: {\n left: {\n isEntering: 4,\n isExiting: 4,\n },\n right: {\n isEntering: -4,\n isExiting: -4,\n },\n },\n },\n transition: \"[opacity, translate]\",\n transitionDuration: 200,\n transitionTimingFunction: {\n isExiting: \"in\",\n },\n pointerEvents: {\n isExiting: \"none\",\n },\n});\n\nconst datePickerPopoverInner = style({\n padding: 0,\n boxSizing: \"border-box\",\n outlineStyle: \"none\",\n borderRadius: \"inherit\",\n overflow: \"auto\",\n position: \"relative\",\n width: \"full\",\n maxSize: \"[inherit]\",\n});\n\nconst datePickerPopoverFrame = style({\n paddingX: 16,\n paddingY: 24,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n boxSizing: \"border-box\",\n size: \"full\",\n});\n\nconst datePickerCalendarPopoverStyle: JSX.CSSProperties = {\n width: \"272px\",\n \"max-width\": \"100%\",\n};\n\n/**\n * A date picker combines a date field and a calendar popup.\n */\n/**\n * The presentation FieldGroup shell. Mirrors the S2/RAC oracle's `_r_3_` node:\n * a `role=\"presentation\"` div carrying the field label (`aria-labelledby`) +\n * describedby + the arrow-navigation/press layer, all sourced from\n * `pickerAria.groupProps`. A context-consuming component (not inline JSX in the\n * DatePicker body) so `useDatePickerContext()` resolves the provider inside\n * `HeadlessDatePicker`. The styled class/style/onClick layer on top.\n */\nfunction DatePickerFieldGroup(props: {\n size: NormalizedDatePickerSize;\n isInvalid: boolean;\n isDisabled: boolean;\n style?: JSX.CSSProperties;\n onClick?: JSX.EventHandlerUnion<HTMLDivElement, MouseEvent>;\n children?: JSX.Element;\n}): JSX.Element {\n const datePicker = useDatePickerContext();\n // S2's FieldGroup renders on RAC's <Group>, whose `useHover` publishes\n // `data-hovered`. The field text color is `baseColor(\"neutral\")`, which\n // brightens one gray step (gray-800 → gray-900) on hover. S2's style macro\n // applies that hover step as a *renderProps-gated atomic class* — the class\n // is included in `fieldGroupStyles({isHovered})` only when the Group reports\n // `isHovered`, NOT via a bare `[data-hovered]` CSS selector. So the class\n // itself must be recomputed here with `isHovered`; emitting the attribute\n // alone never brightens the text (D7). Suppress hover while disabled,\n // matching `useHover({isDisabled})`.\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return props.isDisabled;\n },\n });\n return (\n <div\n {...datePicker.pickerAria.groupProps}\n {...hoverProps}\n // S2 seeds its FieldGroup's RAC <Group> with role=\"presentation\", overriding\n // the faithful role=\"group\" that `createDatePicker` returns (RAC useDatePicker\n // groupProps). Placed after the spread so it wins (JSX later-attr precedence).\n role=\"presentation\"\n class={datePickerFieldGroup({\n size: props.size,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isHovered: isHovered(),\n })}\n style={props.style}\n onClick={props.onClick}\n data-hovered={isHovered() ? \"true\" : undefined}\n >\n {props.children}\n </div>\n );\n}\n\nexport function DatePicker<T extends DateValue = CalendarDate>(\n props: DatePickerProps<T>,\n): JSX.Element {\n const providerProps = useProviderProps(props);\n const contextProps = getSlottedContextProps(useContext(DatePickerContext), (props as any).slot);\n const merged = mergeProps(providerProps, contextProps ?? {}, props);\n const [local, calendarProps, rest] = splitProps(\n merged,\n [\n \"size\",\n \"class\",\n \"label\",\n \"description\",\n \"errorMessage\",\n \"contextualHelp\",\n \"isInvalid\",\n \"placeholder\",\n \"maxVisibleMonths\",\n ],\n [\n \"minValue\",\n \"maxValue\",\n \"isDateUnavailable\",\n \"firstDayOfWeek\",\n \"pageBehavior\",\n \"placeholderValue\",\n \"createCalendar\",\n ],\n );\n\n const size = () => normalizeDatePickerSize(local.size);\n const isInvalid = () => local.isInvalid === true;\n const isDisabled = () => rest.isDisabled === true;\n const visibleMonths = () => Math.max(1, Number(local.maxVisibleMonths ?? 1));\n const locale = useLocale();\n // Mirrors S2's CalendarButton `buttonRef` → `pressScale(buttonRef)`: the port\n // sizes the press transform against the real trigger element.\n const [buttonEl, setButtonEl] = createSignal<HTMLButtonElement>();\n\n const hasTime = () => {\n const granularity = (rest as { granularity?: string }).granularity;\n if (granularity && granularity !== \"day\") return true;\n const value = (rest as { value?: DateValue }).value;\n if (value && \"hour\" in value) return true;\n const defaultValue = (rest as { defaultValue?: DateValue }).defaultValue;\n if (defaultValue && \"hour\" in defaultValue) return true;\n return false;\n };\n\n return (\n <HeadlessDatePicker\n {...calendarProps}\n {...rest}\n firstDayOfWeek={normalizeFirstDayOfWeek(calendarProps.firstDayOfWeek)}\n visibleMonths={visibleMonths()}\n locale={(rest as { locale?: string }).locale ?? locale().locale}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={(renderProps) =>\n [\n local.class,\n datePickerRoot({\n ...renderProps,\n size: size(),\n labelPosition: \"top\",\n isInForm: false,\n }),\n ]\n .filter(Boolean)\n .join(\" \")\n }\n >\n <Show when={local.label}>\n <div class={datePickerLabelWrapper({ size: size(), labelPosition: \"top\" })}>\n <HeadlessDatePickerLabel\n class={datePickerLabel({ size: size(), isDisabled: isDisabled() })}\n >\n {local.label}\n <Show when={rest.isRequired}>\n <span class={noWrap}>\n \n <AsteriskIcon\n size={size() === \"S\" ? \"M\" : size()}\n styles={requiredIcon}\n style={requiredIconStyle(size())}\n aria-hidden=\"true\"\n />\n </span>\n </Show>\n </HeadlessDatePickerLabel>\n <Show when={local.contextualHelp}>\n <span data-slot=\"contextualHelp\" class={noWrap}>\n {local.contextualHelp}\n </span>\n </Show>\n </div>\n </Show>\n\n <DatePickerFieldGroup\n size={size()}\n isInvalid={isInvalid()}\n isDisabled={isDisabled()}\n style={datePickerFieldGroupStyle(size())}\n onClick={(e) => {\n const target = e.target as HTMLElement;\n if (!target.closest('button, [role=\"spinbutton\"]')) {\n const segments = Array.from(\n e.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"spinbutton\"]:not([aria-disabled=\"true\"])',\n ),\n );\n for (let i = segments.length - 1; i >= 0; i--) {\n if (!segments[i].hasAttribute(\"data-placeholder\")) {\n segments[i].focus();\n return;\n }\n }\n segments[0]?.focus();\n }\n }}\n >\n {/*\n Mirror S2 DatePicker's `<DateInputContainer><DateInput /></…>` nesting\n (DatePicker.tsx line 248) — and the port's own DateField. The flex\n container (`dateInputContainer`) lives on a WRAPPING div; the\n AriaDateInput group keeps an EMPTY class so it stays an unstyled block\n div. This matters: if the flex class sits on the group itself, the\n segments become direct flex items and CSS blockifies them\n (display:inline → block) and sizes them as flex items — the segment\n must stay inline/auto to match the S2 oracle.\n */}\n <div class={dateInputContainer}>\n <DateInput class=\"\">\n {(segment) => (\n <DateSegment\n segment={segment}\n class={({ isFocused, isDisabled }) =>\n dateSegment({\n isFocused,\n isDisabled,\n isPunctuation: segment.type === \"literal\",\n })\n }\n />\n )}\n </DateInput>\n </div>\n\n <Show when={isInvalid()}>\n <CenterBaseline>\n <AlertTriangleIcon styles={fieldErrorIcon} />\n </CenterBaseline>\n </Show>\n\n <DatePickerButton\n ref={setButtonEl}\n class={({ isDisabled, isOpen, isHovered, isPressed, isFocusVisible }) =>\n calendarButton({ isDisabled, isOpen, isHovered, isPressed, isFocusVisible, size: size() })\n }\n style={pressScale(buttonEl)}\n >\n <S2CalendarIcon styles={calendarIcon} />\n </DatePickerButton>\n\n <DatePickerPopup\n size={size()}\n hasTime={hasTime()}\n maxVisibleMonths={visibleMonths()}\n calendarProps={calendarProps}\n hourCycle={(rest as { hourCycle?: 12 | 24 }).hourCycle}\n shouldForceLeadingZeros={\n (rest as { shouldForceLeadingZeros?: boolean }).shouldForceLeadingZeros\n }\n />\n </DatePickerFieldGroup>\n\n <Show when={local.description && !isInvalid()}>\n <HeadlessDatePickerDescription\n class={helpText({ size: size(), isInvalid: false, isDisabled: isDisabled() })}\n >\n {local.description}\n </HeadlessDatePickerDescription>\n </Show>\n\n <Show when={isInvalid() && local.errorMessage}>\n <HeadlessDatePickerErrorMessage\n class={helpText({ size: size(), isInvalid: true, isDisabled: isDisabled() })}\n >\n {local.errorMessage}\n </HeadlessDatePickerErrorMessage>\n </Show>\n </HeadlessDatePicker>\n );\n}\n\nfunction DatePickerPopup(props: {\n size: NormalizedDatePickerSize;\n hasTime?: boolean;\n maxVisibleMonths?: number;\n calendarProps?: Record<string, unknown>;\n hourCycle?: 12 | 24;\n shouldForceLeadingZeros?: boolean;\n}): JSX.Element {\n const theme = useTheme();\n const datePicker = useDatePickerContext();\n const timeGranularity = () =>\n datePicker.datePickerState.granularity === \"day\"\n ? \"minute\"\n : datePicker.datePickerState.granularity;\n\n return (\n <DatePickerContent\n class={(rp) =>\n datePickerPopover({\n colorScheme: theme.colorScheme,\n placement: rp.placement ?? undefined,\n isEntering: rp.isEntering,\n isExiting: rp.isExiting,\n })\n }\n >\n <div class={datePickerPopoverInner}>\n <div class={datePickerPopoverFrame}>\n <Calendar\n size=\"md\"\n visibleMonths={props.maxVisibleMonths}\n UNSAFE_style={datePickerCalendarPopoverStyle}\n {...(props.calendarProps ?? {})}\n />\n <Show when={props.hasTime}>\n <TimeField\n size=\"md\"\n label=\"Time\"\n value={datePicker.datePickerState.timeValue() ?? undefined}\n granularity={timeGranularity()}\n hourCycle={props.hourCycle}\n shouldForceLeadingZeros={props.shouldForceLeadingZeros}\n onChange={(nextValue) => {\n if (nextValue) {\n datePicker.datePickerState.setTimeValue(nextValue);\n }\n }}\n />\n </Show>\n </div>\n </div>\n </DatePickerContent>\n );\n}\n\nexport type { CalendarDate, DateValue };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","names":[],"sources":["../../src/calendar/DatePicker.tsx"],"sourcesContent":["// @ts-nocheck - style-system types need a dedicated pass; removing this would require\n// fixing ~20 style-definition type mismatches unrelated to component behavior.\nimport {\n createContext,\n createSignal,\n type JSX,\n mergeProps,\n splitProps,\n Show,\n useContext,\n} from \"solid-js\";\nimport { pressScale } from \"../pressScale\";\nimport {\n DatePicker as HeadlessDatePicker,\n DatePickerLabel as HeadlessDatePickerLabel,\n DatePickerDescription as HeadlessDatePickerDescription,\n DatePickerErrorMessage as HeadlessDatePickerErrorMessage,\n DatePickerButton,\n DatePickerContent,\n DateInput,\n DateSegment,\n useDatePickerContext,\n type DatePickerProps as HeadlessDatePickerProps,\n type CalendarDate,\n type DateValue,\n} from \"@proyecto-viviana/solidaria-components\";\nimport { createHover, useLocale } from \"@proyecto-viviana/solidaria\";\nimport { Calendar } from \"./index\";\nimport { TimeField } from \"../datepicker\";\nimport {\n baseColor,\n focusRing,\n fontRelative,\n lightDark,\n setColorScheme,\n style,\n} from \"../style\" with { type: \"macro\" };\nimport { CenterBaseline } from \"../icon/center-baseline\";\nimport AlertTriangleIcon from \"../icon/s2wf-icons/AlertTriangleIcon\";\nimport S2CalendarIcon from \"../icon/s2wf-icons/CalendarIcon\";\nimport AsteriskIcon from \"../icon/ui-icons/Asterisk\";\nimport { useProviderProps, useTheme } from \"../provider\";\nimport { getSlottedContextProps, type SpectrumContextValue } from \"../button/spectrum-context\";\nimport {\n control,\n controlBorderRadius,\n controlFont,\n field,\n fieldInput,\n fieldLabel,\n getAllowedOverrides,\n} from \"../s2-internal/style-utils\" with { type: \"macro\" };\n\nexport type DatePickerSize = \"S\" | \"M\" | \"L\" | \"XL\" | \"sm\" | \"md\" | \"lg\";\ntype NormalizedDatePickerSize = \"S\" | \"M\" | \"L\" | \"XL\";\nexport type DatePickerFirstDayOfWeek = \"sun\" | \"mon\" | \"tue\" | \"wed\" | \"thu\" | \"fri\" | \"sat\";\n\nexport interface DatePickerProps<T extends DateValue = DateValue> extends Omit<\n HeadlessDatePickerProps<T>,\n \"class\" | \"style\" | \"children\" | \"firstDayOfWeek\" | \"visibleMonths\"\n> {\n /** The size of the picker. @default 'md' */\n size?: DatePickerSize;\n /** Additional CSS class name. */\n class?: string;\n /** Label for the field. */\n label?: string;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n /** A ContextualHelp element to place next to the label. */\n contextualHelp?: JSX.Element;\n /** Placeholder text. */\n placeholder?: string;\n /**\n * The maximum number of months to display at once in the calendar popover.\n *\n * @default 1\n */\n maxVisibleMonths?: number;\n /** The day that starts the week. */\n firstDayOfWeek?: DatePickerFirstDayOfWeek | 0 | 1 | 2 | 3 | 4 | 5 | 6;\n}\n\nexport const DatePickerContext = createContext<SpectrumContextValue<DatePickerProps<any>>>(null);\n\nfunction normalizeDatePickerSize(size: DatePickerSize | undefined): NormalizedDatePickerSize {\n switch (size) {\n case \"S\":\n case \"sm\":\n return \"S\";\n case \"L\":\n case \"lg\":\n return \"L\";\n case \"XL\":\n return \"XL\";\n case \"M\":\n case \"md\":\n default:\n return \"M\";\n }\n}\n\nfunction normalizeFirstDayOfWeek(\n firstDayOfWeek: DatePickerFirstDayOfWeek | 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined,\n): 0 | 1 | 2 | 3 | 4 | 5 | 6 | undefined {\n switch (firstDayOfWeek) {\n case \"sun\":\n return 0;\n case \"mon\":\n return 1;\n case \"tue\":\n return 2;\n case \"wed\":\n return 3;\n case \"thu\":\n return 4;\n case \"fri\":\n return 5;\n case \"sat\":\n return 6;\n default:\n return firstDayOfWeek;\n }\n}\n\nfunction requiredIconStyle(size: NormalizedDatePickerSize): JSX.CSSProperties {\n const pixelSize = size === \"L\" || size === \"XL\" ? 10 : 8;\n return {\n width: `${pixelSize}px`,\n height: `${pixelSize}px`,\n };\n}\n\nfunction datePickerFieldGroupStyle(size: NormalizedDatePickerSize): JSX.CSSProperties | undefined {\n if (size !== \"L\" && size !== \"XL\") return undefined;\n\n return {\n \"padding-inline-end\": \"6px\",\n width: size === \"L\" ? \"224px\" : \"240px\",\n };\n}\n\nconst datePickerRoot = style(\n {\n ...field(),\n position: \"relative\",\n },\n getAllowedOverrides(),\n);\n\nconst datePickerLabelWrapper = style({\n gridArea: \"label\",\n display: \"inline\",\n paddingBottom: {\n labelPosition: {\n top: \"--field-gap\",\n },\n },\n contain: {\n labelPosition: {\n top: \"inline-size\",\n },\n },\n});\n\nconst datePickerLabel = style<any>({\n ...fieldLabel(),\n});\n\nconst datePickerFieldGroup = style({\n ...focusRing(),\n ...control({ shape: \"default\", register: \"matte\" }),\n ...fieldInput(),\n transition: \"default\",\n textWrap: \"nowrap\",\n paddingStart: \"edge-to-text\",\n paddingEnd: {\n size: {\n S: 2,\n M: 4,\n L: \"[6px]\",\n XL: \"[6px]\",\n },\n },\n backgroundColor: {\n // S2 `fieldGroupStyles.backgroundColor` (Field.tsx) is a FLAT `gray-25` with\n // no `isHovered` variant — the field surface does not lighten/darken on hover\n // (only its `color: baseColor(\"neutral\")` does). Wrapping this in\n // `baseColor(\"gray-25\")` injected a phantom `gray-25:hovered` that darkened\n // the field to 248 on hover while S2 stays at 255 (matches certified\n // DateField/TimeField, which use the flat token).\n default: \"well\",\n forcedColors: \"Field\",\n },\n borderColor: {\n default: \"well-border\",\n isInvalid: {\n default: baseColor(\"negative\"),\n forcedColors: \"Mark\",\n },\n isFocusWithin: {\n default: \"gray-900\",\n isInvalid: \"negative-1000\",\n forcedColors: \"Highlight\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n color: {\n default: baseColor(\"neutral\"),\n forcedColors: \"ButtonText\",\n // Mirror S2 `fieldGroupStyles.color` (Field.tsx): the disabled color nests\n // its own forced-colors branch so a disabled field in forced-colors resolves\n // to `GrayText`, not the flat `ButtonText`. A flat `isDisabled: \"disabled\"`\n // loses that branch and paints CanvasText in forced-colors.\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst dateInputContainer = style({\n flexGrow: 1,\n flexShrink: 1,\n minWidth: 0,\n height: \"full\",\n overflowX: \"auto\",\n overflowY: \"hidden\",\n scrollbarWidth: \"none\",\n display: \"flex\",\n alignItems: \"center\",\n textWrap: \"nowrap\",\n});\n\nconst dateSegment = style<{ isFocused?: boolean; isPunctuation?: boolean }>({\n outlineStyle: \"none\",\n caretColor: \"transparent\",\n backgroundColor: {\n default: \"transparent\",\n isFocused: \"blue-800\",\n forcedColors: {\n default: \"transparent\",\n isFocused: \"Highlight\",\n },\n },\n color: {\n isFocused: \"white\",\n isDisabled: \"disabled\",\n forcedColors: {\n isFocused: \"HighlightText\",\n isDisabled: \"GrayText\",\n },\n },\n borderRadius: \"[2px]\",\n paddingX: {\n default: 2,\n isPunctuation: 0,\n },\n paddingY: 2,\n forcedColorAdjust: \"none\",\n});\n\nconst fieldErrorIcon = style({\n size: fontRelative(20),\n marginStart: \"text-to-visual\",\n marginEnd: fontRelative(-2),\n flexShrink: 0,\n \"--iconPrimary\": {\n type: \"fill\",\n value: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n },\n});\n\nconst requiredIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n});\n\nconst calendarIcon = style({\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n size: fontRelative(14),\n});\n\nconst noWrap = style({\n whiteSpace: \"nowrap\",\n});\n\nconst calendarButton = style<{\n isOpen?: boolean;\n isDisabled?: boolean;\n isHovered?: boolean;\n isPressed?: boolean;\n isFocusVisible?: boolean;\n size: NormalizedDatePickerSize;\n}>({\n ...focusRing(),\n ...controlBorderRadius(\"sm\"),\n position: \"relative\",\n font: {\n size: {\n S: \"ui-sm\",\n M: \"ui\",\n L: \"ui-lg\",\n XL: \"ui-xl\",\n },\n },\n cursor: \"default\",\n display: \"flex\",\n textAlign: \"center\",\n borderStyle: \"none\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: {\n size: {\n S: 16,\n M: 20,\n L: 24,\n XL: 32,\n },\n },\n height: \"auto\",\n marginStart: \"text-to-control\",\n aspectRatio: \"square\",\n flexShrink: 0,\n transition: {\n default: \"default\",\n forcedColors: \"none\",\n },\n backgroundColor: {\n default: baseColor(\"gray-100\"),\n isOpen: \"gray-200\",\n isDisabled: \"disabled\",\n forcedColors: {\n default: \"ButtonText\",\n isHovered: \"Highlight\",\n isOpen: \"Highlight\",\n isDisabled: \"GrayText\",\n },\n },\n color: {\n default: baseColor(\"neutral\"),\n isDisabled: \"disabled\",\n forcedColors: \"ButtonFace\",\n },\n});\n\nconst helpText = style<{ isInvalid?: boolean; isDisabled?: boolean }>({\n gridArea: \"helptext\",\n display: \"flex\",\n margin: 0,\n alignItems: \"baseline\",\n gap: \"text-to-visual\",\n font: controlFont(),\n color: {\n default: \"neutral-subdued\",\n isInvalid: {\n default: \"negative\",\n forcedColors: \"Mark\",\n },\n isDisabled: {\n default: \"disabled\",\n forcedColors: \"GrayText\",\n },\n },\n // Mirror S2's `helpTextStyles` (Field.mjs) exactly — the same style the\n // certified DateField help text carries. `--iconPrimary` tints the FieldError\n // icon and `cursor` is set on the help text ITSELF (class `rD151`/`ri151`), not\n // inherited: `text` at rest, `default` when disabled.\n \"--iconPrimary\": {\n type: \"fill\",\n value: \"currentColor\",\n },\n contain: \"inline-size\",\n paddingTop: \"--field-gap\",\n cursor: {\n default: \"text\",\n isDisabled: \"default\",\n },\n});\n\nconst datePickerPopover = style<{\n colorScheme: \"light\" | \"dark\" | \"light dark\";\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n isEntering?: boolean;\n isExiting?: boolean;\n}>({\n ...setColorScheme(),\n \"--s2-container-bg\": {\n type: \"backgroundColor\",\n value: {\n default: \"layer-2\",\n forcedColors: \"Background\",\n },\n },\n backgroundColor: \"--s2-container-bg\",\n // Glasselated: frost the scene behind the surface — the container bg is the\n // translucent `--surface-card`; the blur is what makes it read as glass.\n backdropFilter: \"var(--blur-card)\",\n boxShadow: \"elevated\",\n borderRadius: \"panel\",\n display: \"flex\",\n width: \"[max-content]\",\n maxWidth: \"calc(100vw - 24px)\",\n padding: 0,\n minHeight: 0,\n overflow: \"visible\",\n boxSizing: \"border-box\",\n isolation: \"isolate\",\n outlineStyle: \"solid\",\n outlineWidth: 1,\n outlineColor: {\n default: lightDark(\"transparent-white-25\", \"gray-200\"),\n forcedColors: \"ButtonBorder\",\n },\n // Byte-copied from the shared `popoverStyles` enter/exit motion (which is\n // itself S2 `Popover.tsx`'s `popover()` motion). S2's DatePicker popover is a\n // plain `<Popover>`, so its enter transition IS this generic opacity/translate\n // fade — NOT a bespoke keyframe. The port's DatePicker owns a private\n // `DatePickerContent` that bypasses the shared Popover, so the same tokens are\n // mirrored here and driven by `createEnterAnimation` (data-entering) below.\n opacity: {\n isEntering: 0,\n isExiting: 0,\n },\n translateY: {\n placement: {\n top: {\n isEntering: 4,\n isExiting: 4,\n },\n bottom: {\n isEntering: -4,\n isExiting: -4,\n },\n },\n },\n translateX: {\n placement: {\n left: {\n isEntering: 4,\n isExiting: 4,\n },\n right: {\n isEntering: -4,\n isExiting: -4,\n },\n },\n },\n transition: \"[opacity, translate]\",\n transitionDuration: 200,\n transitionTimingFunction: {\n isExiting: \"in\",\n },\n pointerEvents: {\n isExiting: \"none\",\n },\n});\n\nconst datePickerPopoverInner = style({\n padding: 0,\n boxSizing: \"border-box\",\n outlineStyle: \"none\",\n borderRadius: \"inherit\",\n overflow: \"auto\",\n position: \"relative\",\n width: \"full\",\n maxSize: \"[inherit]\",\n});\n\nconst datePickerPopoverFrame = style({\n paddingX: 16,\n paddingY: 24,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: 16,\n boxSizing: \"border-box\",\n size: \"full\",\n});\n\nconst datePickerCalendarPopoverStyle: JSX.CSSProperties = {\n width: \"272px\",\n \"max-width\": \"100%\",\n};\n\n/**\n * A date picker combines a date field and a calendar popup.\n */\n/**\n * The presentation FieldGroup shell. Mirrors the S2/RAC oracle's `_r_3_` node:\n * a `role=\"presentation\"` div carrying the field label (`aria-labelledby`) +\n * describedby + the arrow-navigation/press layer, all sourced from\n * `pickerAria.groupProps`. A context-consuming component (not inline JSX in the\n * DatePicker body) so `useDatePickerContext()` resolves the provider inside\n * `HeadlessDatePicker`. The styled class/style/onClick layer on top.\n */\nfunction DatePickerFieldGroup(props: {\n size: NormalizedDatePickerSize;\n isInvalid: boolean;\n isDisabled: boolean;\n style?: JSX.CSSProperties;\n onClick?: JSX.EventHandlerUnion<HTMLDivElement, MouseEvent>;\n children?: JSX.Element;\n}): JSX.Element {\n const datePicker = useDatePickerContext();\n // S2's FieldGroup renders on RAC's <Group>, whose `useHover` publishes\n // `data-hovered`. The field text color is `baseColor(\"neutral\")`, which\n // brightens one gray step (gray-800 → gray-900) on hover. S2's style macro\n // applies that hover step as a *renderProps-gated atomic class* — the class\n // is included in `fieldGroupStyles({isHovered})` only when the Group reports\n // `isHovered`, NOT via a bare `[data-hovered]` CSS selector. So the class\n // itself must be recomputed here with `isHovered`; emitting the attribute\n // alone never brightens the text (D7). Suppress hover while disabled,\n // matching `useHover({isDisabled})`.\n const { isHovered, hoverProps } = createHover({\n get isDisabled() {\n return props.isDisabled;\n },\n });\n return (\n <div\n {...datePicker.pickerAria.groupProps}\n {...hoverProps}\n // S2 seeds its FieldGroup's RAC <Group> with role=\"presentation\", overriding\n // the faithful role=\"group\" that `createDatePicker` returns (RAC useDatePicker\n // groupProps). Placed after the spread so it wins (JSX later-attr precedence).\n role=\"presentation\"\n class={datePickerFieldGroup({\n size: props.size,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isHovered: isHovered(),\n })}\n style={props.style}\n onClick={props.onClick}\n data-hovered={isHovered() ? \"true\" : undefined}\n >\n {props.children}\n </div>\n );\n}\n\nexport function DatePicker<T extends DateValue = CalendarDate>(\n props: DatePickerProps<T>,\n): JSX.Element {\n const providerProps = useProviderProps(props);\n const contextProps = getSlottedContextProps(useContext(DatePickerContext), (props as any).slot);\n const merged = mergeProps(providerProps, contextProps ?? {}, props);\n const [local, calendarProps, rest] = splitProps(\n merged,\n [\n \"size\",\n \"class\",\n \"label\",\n \"description\",\n \"errorMessage\",\n \"contextualHelp\",\n \"isInvalid\",\n \"placeholder\",\n \"maxVisibleMonths\",\n ],\n [\n \"minValue\",\n \"maxValue\",\n \"isDateUnavailable\",\n \"firstDayOfWeek\",\n \"pageBehavior\",\n \"placeholderValue\",\n \"createCalendar\",\n ],\n );\n\n const size = () => normalizeDatePickerSize(local.size);\n const isInvalid = () => local.isInvalid === true;\n const isDisabled = () => rest.isDisabled === true;\n const visibleMonths = () => Math.max(1, Number(local.maxVisibleMonths ?? 1));\n const locale = useLocale();\n // Mirrors S2's CalendarButton `buttonRef` → `pressScale(buttonRef)`: the port\n // sizes the press transform against the real trigger element.\n const [buttonEl, setButtonEl] = createSignal<HTMLButtonElement>();\n\n const hasTime = () => {\n const granularity = (rest as { granularity?: string }).granularity;\n if (granularity && granularity !== \"day\") return true;\n const value = (rest as { value?: DateValue }).value;\n if (value && \"hour\" in value) return true;\n const defaultValue = (rest as { defaultValue?: DateValue }).defaultValue;\n if (defaultValue && \"hour\" in defaultValue) return true;\n return false;\n };\n\n return (\n <HeadlessDatePicker\n {...calendarProps}\n {...rest}\n firstDayOfWeek={normalizeFirstDayOfWeek(calendarProps.firstDayOfWeek)}\n visibleMonths={visibleMonths()}\n locale={(rest as { locale?: string }).locale ?? locale().locale}\n label={local.label}\n description={local.description}\n errorMessage={local.errorMessage}\n isInvalid={isInvalid()}\n class={(renderProps) =>\n [\n local.class,\n datePickerRoot({\n ...renderProps,\n size: size(),\n labelPosition: \"top\",\n isInForm: false,\n }),\n ]\n .filter(Boolean)\n .join(\" \")\n }\n >\n <Show when={local.label}>\n <div class={datePickerLabelWrapper({ size: size(), labelPosition: \"top\" })}>\n <HeadlessDatePickerLabel\n class={datePickerLabel({ size: size(), isDisabled: isDisabled() })}\n >\n {local.label}\n <Show when={rest.isRequired}>\n <span class={noWrap}>\n \n <AsteriskIcon\n size={size() === \"S\" ? \"M\" : size()}\n styles={requiredIcon}\n style={requiredIconStyle(size())}\n aria-hidden=\"true\"\n />\n </span>\n </Show>\n </HeadlessDatePickerLabel>\n <Show when={local.contextualHelp}>\n <span data-slot=\"contextualHelp\" class={noWrap}>\n {local.contextualHelp}\n </span>\n </Show>\n </div>\n </Show>\n\n <DatePickerFieldGroup\n size={size()}\n isInvalid={isInvalid()}\n isDisabled={isDisabled()}\n style={datePickerFieldGroupStyle(size())}\n onClick={(e) => {\n const target = e.target as HTMLElement;\n if (!target.closest('button, [role=\"spinbutton\"]')) {\n const segments = Array.from(\n e.currentTarget.querySelectorAll<HTMLElement>(\n '[role=\"spinbutton\"]:not([aria-disabled=\"true\"])',\n ),\n );\n for (let i = segments.length - 1; i >= 0; i--) {\n if (!segments[i].hasAttribute(\"data-placeholder\")) {\n segments[i].focus();\n return;\n }\n }\n segments[0]?.focus();\n }\n }}\n >\n {/*\n Mirror S2 DatePicker's `<DateInputContainer><DateInput /></…>` nesting\n (DatePicker.tsx line 248) — and the port's own DateField. The flex\n container (`dateInputContainer`) lives on a WRAPPING div; the\n AriaDateInput group keeps an EMPTY class so it stays an unstyled block\n div. This matters: if the flex class sits on the group itself, the\n segments become direct flex items and CSS blockifies them\n (display:inline → block) and sizes them as flex items — the segment\n must stay inline/auto to match the S2 oracle.\n */}\n <div class={dateInputContainer}>\n <DateInput class=\"\">\n {(segment) => (\n <DateSegment\n segment={segment}\n class={({ isFocused, isDisabled }) =>\n dateSegment({\n isFocused,\n isDisabled,\n isPunctuation: segment.type === \"literal\",\n })\n }\n />\n )}\n </DateInput>\n </div>\n\n <Show when={isInvalid()}>\n <CenterBaseline>\n <AlertTriangleIcon styles={fieldErrorIcon} />\n </CenterBaseline>\n </Show>\n\n <DatePickerButton\n ref={setButtonEl}\n class={({ isDisabled, isOpen, isHovered, isPressed, isFocusVisible }) =>\n calendarButton({\n isDisabled,\n isOpen,\n isHovered,\n isPressed,\n isFocusVisible,\n size: size(),\n })\n }\n style={pressScale(buttonEl)}\n >\n <S2CalendarIcon styles={calendarIcon} />\n </DatePickerButton>\n\n <DatePickerPopup\n size={size()}\n hasTime={hasTime()}\n maxVisibleMonths={visibleMonths()}\n calendarProps={calendarProps}\n hourCycle={(rest as { hourCycle?: 12 | 24 }).hourCycle}\n shouldForceLeadingZeros={\n (rest as { shouldForceLeadingZeros?: boolean }).shouldForceLeadingZeros\n }\n />\n </DatePickerFieldGroup>\n\n <Show when={local.description && !isInvalid()}>\n <HeadlessDatePickerDescription\n class={helpText({ size: size(), isInvalid: false, isDisabled: isDisabled() })}\n >\n {local.description}\n </HeadlessDatePickerDescription>\n </Show>\n\n <Show when={isInvalid() && local.errorMessage}>\n <HeadlessDatePickerErrorMessage\n class={helpText({ size: size(), isInvalid: true, isDisabled: isDisabled() })}\n >\n {local.errorMessage}\n </HeadlessDatePickerErrorMessage>\n </Show>\n </HeadlessDatePicker>\n );\n}\n\nfunction DatePickerPopup(props: {\n size: NormalizedDatePickerSize;\n hasTime?: boolean;\n maxVisibleMonths?: number;\n calendarProps?: Record<string, unknown>;\n hourCycle?: 12 | 24;\n shouldForceLeadingZeros?: boolean;\n}): JSX.Element {\n const theme = useTheme();\n const datePicker = useDatePickerContext();\n const timeGranularity = () =>\n datePicker.datePickerState.granularity === \"day\"\n ? \"minute\"\n : datePicker.datePickerState.granularity;\n\n return (\n <DatePickerContent\n class={(rp) =>\n datePickerPopover({\n colorScheme: theme.colorScheme,\n placement: rp.placement ?? undefined,\n isEntering: rp.isEntering,\n isExiting: rp.isExiting,\n })\n }\n >\n <div class={datePickerPopoverInner}>\n <div class={datePickerPopoverFrame}>\n <Calendar\n size=\"md\"\n visibleMonths={props.maxVisibleMonths}\n UNSAFE_style={datePickerCalendarPopoverStyle}\n {...(props.calendarProps ?? {})}\n />\n <Show when={props.hasTime}>\n <TimeField\n size=\"md\"\n label=\"Time\"\n value={datePicker.datePickerState.timeValue() ?? undefined}\n granularity={timeGranularity()}\n hourCycle={props.hourCycle}\n shouldForceLeadingZeros={props.shouldForceLeadingZeros}\n onChange={(nextValue) => {\n if (nextValue) {\n datePicker.datePickerState.setTimeValue(nextValue);\n }\n }}\n />\n </Show>\n </div>\n </div>\n </DatePickerContent>\n );\n}\n\nexport type { CalendarDate, DateValue };\n"],"mappings":"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"}
|