@refraktor/dates 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/build/components/date-input/date-input.d.ts.map +1 -1
  3. package/build/components/date-input/date-input.js +5 -3
  4. package/build/components/date-range-picker/date-range-picker.d.ts +4 -0
  5. package/build/components/date-range-picker/date-range-picker.d.ts.map +1 -0
  6. package/build/components/date-range-picker/date-range-picker.js +379 -0
  7. package/build/components/date-range-picker/date-range-picker.types.d.ts +100 -0
  8. package/build/components/date-range-picker/date-range-picker.types.d.ts.map +1 -0
  9. package/build/components/date-range-picker/date-range-picker.types.js +1 -0
  10. package/build/components/date-range-picker/index.d.ts +3 -0
  11. package/build/components/date-range-picker/index.d.ts.map +1 -0
  12. package/build/components/date-range-picker/index.js +1 -0
  13. package/build/components/index.d.ts +2 -0
  14. package/build/components/index.d.ts.map +1 -1
  15. package/build/components/index.js +2 -0
  16. package/build/components/month-input/month-input.d.ts.map +1 -1
  17. package/build/components/month-input/month-input.js +5 -3
  18. package/build/components/time-input/index.d.ts +3 -0
  19. package/build/components/time-input/index.d.ts.map +1 -0
  20. package/build/components/time-input/index.js +1 -0
  21. package/build/components/time-input/time-input.d.ts +4 -0
  22. package/build/components/time-input/time-input.d.ts.map +1 -0
  23. package/build/components/time-input/time-input.js +18 -0
  24. package/build/components/time-input/time-input.types.d.ts +21 -0
  25. package/build/components/time-input/time-input.types.d.ts.map +1 -0
  26. package/build/components/time-input/time-input.types.js +1 -0
  27. package/build/components/time-picker/index.d.ts +3 -0
  28. package/build/components/time-picker/index.d.ts.map +1 -0
  29. package/build/components/time-picker/index.js +1 -0
  30. package/build/components/time-picker/time-picker.d.ts +4 -0
  31. package/build/components/time-picker/time-picker.d.ts.map +1 -0
  32. package/build/components/time-picker/time-picker.js +553 -0
  33. package/build/components/time-picker/time-picker.types.d.ts +114 -0
  34. package/build/components/time-picker/time-picker.types.d.ts.map +1 -0
  35. package/build/components/time-picker/time-picker.types.js +1 -0
  36. package/build/components/year-input/year-input.d.ts.map +1 -1
  37. package/build/components/year-input/year-input.js +5 -3
  38. package/build/style.css +1 -1
  39. package/package.json +3 -3
  40. package/src/components/date-input/date-input.tsx +5 -2
  41. package/src/components/index.ts +2 -0
  42. package/src/components/month-input/month-input.tsx +5 -2
  43. package/src/components/time-input/index.ts +6 -0
  44. package/src/components/time-input/time-input.tsx +48 -0
  45. package/src/components/time-input/time-input.types.ts +30 -0
  46. package/src/components/time-picker/index.ts +10 -0
  47. package/src/components/time-picker/time-picker.tsx +1088 -0
  48. package/src/components/time-picker/time-picker.types.ts +166 -0
  49. package/src/components/year-input/year-input.tsx +5 -2
@@ -0,0 +1,114 @@
1
+ import type { Placement } from "@floating-ui/react";
2
+ import { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
3
+ import { RefraktorRadius, RefraktorSize, InputVariant, createClassNamesConfig, createComponentConfig, FactoryPayload } from "@refraktor/core";
4
+ export type TimePickerValue = string;
5
+ export type TimePickerFormat = "12h" | "24h";
6
+ export type TimePickerAmPmLabels = {
7
+ am: string;
8
+ pm: string;
9
+ };
10
+ export type TimePickerClassNames = {
11
+ root?: string;
12
+ fieldsWrapper?: string;
13
+ field?: string;
14
+ separator?: string;
15
+ amPmInput?: string;
16
+ dropdown?: string;
17
+ dropdownColumn?: string;
18
+ dropdownColumnLabel?: string;
19
+ dropdownOption?: string;
20
+ dropdownOptionActive?: string;
21
+ };
22
+ export type TimePickerPopoverProps = {
23
+ /** Dropdown placement relative to the input @default `bottom-start` */
24
+ placement?: Placement;
25
+ /** Offset distance from the input in pixels @default `4` */
26
+ offset?: number;
27
+ };
28
+ interface _TimePickerProps {
29
+ /** Controlled time value in 24h format (`HH:mm` or `HH:mm:ss`). Empty string for no value. */
30
+ value?: TimePickerValue;
31
+ /** Uncontrolled initial time value in 24h format (`HH:mm` or `HH:mm:ss`). */
32
+ defaultValue?: TimePickerValue;
33
+ /** Called when the time value changes. Fires when all visible fields are filled, or all are cleared. */
34
+ onChange?: (value: TimePickerValue) => void;
35
+ /** Time display format @default `"24h"` */
36
+ format?: TimePickerFormat;
37
+ /** Show seconds field @default `false` */
38
+ withSeconds?: boolean;
39
+ /** Show scrollable dropdown with time options @default `false` */
40
+ withDropdown?: boolean;
41
+ /** Show clear button in the right section @default `false` */
42
+ clearable?: boolean;
43
+ /** Minimum selectable time in 24h format (`HH:mm` or `HH:mm:ss`) */
44
+ min?: TimePickerValue;
45
+ /** Maximum selectable time in 24h format (`HH:mm` or `HH:mm:ss`) */
46
+ max?: TimePickerValue;
47
+ /** Step for hour increment/decrement and dropdown generation @default `1` */
48
+ hoursStep?: number;
49
+ /** Step for minute increment/decrement and dropdown generation @default `1` */
50
+ minutesStep?: number;
51
+ /** Step for second increment/decrement and dropdown generation @default `1` */
52
+ secondsStep?: number;
53
+ /** Custom AM/PM labels @default `{ am: "AM", pm: "PM" }` */
54
+ amPmLabels?: TimePickerAmPmLabels;
55
+ /** Whether the input is disabled @default `false` */
56
+ disabled?: boolean;
57
+ /** Whether the input is read-only @default `false` */
58
+ readOnly?: boolean;
59
+ /** Input variant @default `"default"` */
60
+ variant?: InputVariant;
61
+ /** Component size @default `"md"` */
62
+ size?: RefraktorSize;
63
+ /** Border radius @default `"default"` */
64
+ radius?: RefraktorRadius;
65
+ /** Label text */
66
+ label?: ReactNode;
67
+ /** Description text displayed below the label */
68
+ description?: ReactNode;
69
+ /** Error message */
70
+ error?: ReactNode;
71
+ /** Whether the field is required */
72
+ required?: boolean;
73
+ /** Display an asterisk next to the label */
74
+ withAsterisk?: boolean;
75
+ /** Left section content */
76
+ leftSection?: ReactNode;
77
+ /** Right section content (overridden by clearable when value is set) */
78
+ rightSection?: ReactNode;
79
+ /** Ref for the hours input element */
80
+ hoursRef?: Ref<HTMLInputElement>;
81
+ /** Ref for the minutes input element */
82
+ minutesRef?: Ref<HTMLInputElement>;
83
+ /** Ref for the seconds input element */
84
+ secondsRef?: Ref<HTMLInputElement>;
85
+ /** Ref for the AM/PM select element */
86
+ amPmRef?: Ref<HTMLInputElement>;
87
+ /** Aria label for hours input */
88
+ hoursInputLabel?: string;
89
+ /** Aria label for minutes input */
90
+ minutesInputLabel?: string;
91
+ /** Aria label for seconds input */
92
+ secondsInputLabel?: string;
93
+ /** Aria label for AM/PM input */
94
+ amPmInputLabel?: string;
95
+ /** Popover props for the dropdown */
96
+ popoverProps?: TimePickerPopoverProps;
97
+ /** Called when any field gains focus */
98
+ onFocus?: (event: React.FocusEvent<HTMLDivElement>) => void;
99
+ /** Called when all fields lose focus */
100
+ onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;
101
+ /** Used for styling different parts of the component */
102
+ classNames?: TimePickerClassNames;
103
+ }
104
+ export type TimePickerProps = _TimePickerProps & Omit<ComponentPropsWithoutRef<"div">, "onChange" | "value" | "defaultValue" | "onFocus" | "onBlur">;
105
+ export interface TimePickerFactoryPayload extends FactoryPayload {
106
+ props: TimePickerProps;
107
+ ref: HTMLDivElement;
108
+ compound: {
109
+ configure: ReturnType<typeof createComponentConfig<TimePickerProps>>;
110
+ classNames: ReturnType<typeof createClassNamesConfig<TimePickerClassNames>>;
111
+ };
112
+ }
113
+ export {};
114
+ //# sourceMappingURL=time-picker.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-picker.types.d.ts","sourceRoot":"","sources":["../../../src/components/time-picker/time-picker.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"year-input.d.ts","sourceRoot":"","sources":["../../../src/components/year-input/year-input.tsx"],"names":[],"mappings":"AA6BA,OAAO,EAEH,uBAAuB,EAE1B,MAAM,oBAAoB,CAAC;AAkC5B,QAAA,MAAM,SAAS,uEAiRb,CAAC;AAMH,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"year-input.d.ts","sourceRoot":"","sources":["../../../src/components/year-input/year-input.tsx"],"names":[],"mappings":"AA6BA,OAAO,EAEH,uBAAuB,EAE1B,MAAM,oBAAoB,CAAC;AAkC5B,QAAA,MAAM,SAAS,uEAoRb,CAAC;AAMH,eAAe,SAAS,CAAC"}
@@ -88,7 +88,8 @@ const YearInput = factory((_props, ref) => {
88
88
  open: isOpen,
89
89
  onOpenChange: handleOpenChange,
90
90
  middleware,
91
- whileElementsMounted: autoUpdate
91
+ whileElementsMounted: autoUpdate,
92
+ strategy: "fixed"
92
93
  });
93
94
  const focus = useFocus(floating.context, {
94
95
  enabled: !disabled
@@ -145,8 +146,9 @@ const YearInput = factory((_props, ref) => {
145
146
  onClick,
146
147
  onKeyDown: handleInputKeyDown
147
148
  });
148
- const dropdownContent = (_jsx(Transition, { transition: "fade", duration: 150, mounted: isOpen, ...transitionProps, children: _jsx("div", { ref: floating.refs.setFloating, id: dropdownId, style: {
149
- ...floating.floatingStyles
149
+ const dropdownContent = (_jsx(Transition, { transition: "fade", duration: 150, mounted: isOpen, style: { position: "relative", zIndex: 1000 }, ...transitionProps, children: _jsx("div", { ref: floating.refs.setFloating, id: dropdownId, style: {
150
+ ...floating.floatingStyles,
151
+ zIndex: 1000
150
152
  }, className: cx("w-60 z-50 border border-[var(--refraktor-border)] bg-[var(--refraktor-bg)] p-2 text-[var(--refraktor-text)] shadow-md", getRadius(radius), classes.dropdown), ...getFloatingProps(), children: _jsx(YearPicker, { value: selectedYear, onChange: handleYearChange, minYear: minYear, maxYear: maxYear, yearsPerPage: yearsPerPage, columns: columns, disabled: disabled, size: size, radius: radius, className: cx("bg-transparent p-0", classes.yearPicker) }) }) }));
151
153
  const wrappedContent = isOpen ? (_jsx(FloatingFocusManager, { context: floating.context, modal: false, initialFocus: -1, returnFocus: false, children: dropdownContent })) : (dropdownContent);
152
154
  return (_jsxs(_Fragment, { children: [_jsx(Input, { ref: setInputRef, id: _id, readOnly: true, value: inputValue, disabled: disabled, size: size, radius: radius, role: "combobox", "aria-haspopup": "dialog", "aria-expanded": isOpen, "aria-controls": isOpen ? dropdownId : undefined, className: cx(classes.input, className), classNames: inputClassNames, ...inputProps, ...mergedReferenceProps }), withinPortal ? (_jsx(FloatingPortal, { children: wrappedContent })) : (wrappedContent)] }));
package/build/style.css CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.relative{position:relative}.z-50{z-index:50}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-7{width:calc(var(--spacing)*7);height:calc(var(--spacing)*7)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[var\(--refraktor-border\)\]{border-color:var(--refraktor-border)}.bg-\[var\(--refraktor-bg\)\]{background-color:var(--refraktor-bg)}.bg-\[var\(--refraktor-primary\)\]{background-color:var(--refraktor-primary)}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing)*0)}.p-2{padding:calc(var(--spacing)*2)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.text-center{text-align:center}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-\[var\(--refraktor-primary-text\)\]{color:var(--refraktor-primary-text)}.text-\[var\(--refraktor-text\)\]{color:var(--refraktor-text)}.text-\[var\(--refraktor-text-secondary\)\]{color:var(--refraktor-text-secondary)}.opacity-50{opacity:.5}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--refraktor-primary\)\]{--tw-ring-color:var(--refraktor-primary)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-\[var\(--refraktor-bg-hover\)\]:hover{background-color:var(--refraktor-bg-hover)}.hover\:bg-\[var\(--refraktor-primary\)\]:hover{background-color:var(--refraktor-primary)}}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[var\(--refraktor-primary\)\]:focus-visible{outline-color:var(--refraktor-primary)}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:cursor-not-allowed[data-disabled=true]{cursor:not-allowed}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.z-50{z-index:50}.ml-1{margin-left:calc(var(--spacing)*1)}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-7{width:calc(var(--spacing)*7);height:calc(var(--spacing)*7)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-full{height:100%}.max-h-52{max-height:calc(var(--spacing)*52)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[1\.5rem\]{width:1.5rem}.w-\[1\.25rem\]{width:1.25rem}.w-\[1\.75rem\]{width:1.75rem}.w-\[2\.5rem\]{width:2.5rem}.w-\[2\.25rem\]{width:2.25rem}.w-\[2\.75rem\]{width:2.75rem}.w-\[2rem\]{width:2rem}.w-\[3\.25rem\]{width:3.25rem}.w-full{width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-\[var\(--refraktor-border\)\]>:not(:last-child)){border-color:var(--refraktor-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-\[var\(--refraktor-border\)\]{border-color:var(--refraktor-border)}.border-\[var\(--refraktor-colors-red-6\)\]{border-color:var(--refraktor-colors-red-6)}.bg-\[var\(--refraktor-bg\)\]{background-color:var(--refraktor-bg)}.bg-\[var\(--refraktor-bg-subtle\)\]{background-color:var(--refraktor-bg-subtle)}.bg-\[var\(--refraktor-primary\)\]{background-color:var(--refraktor-primary)}.bg-transparent{background-color:#0000}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.text-center{text-align:center}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-\[var\(--refraktor-primary-text\)\]{color:var(--refraktor-primary-text)}.text-\[var\(--refraktor-text\)\]{color:var(--refraktor-text)}.text-\[var\(--refraktor-text-secondary\)\]{color:var(--refraktor-text-secondary)}.opacity-50{opacity:.5}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-\[var\(--refraktor-primary\)\]{--tw-ring-color:var(--refraktor-primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-\[var\(--refraktor-text-tertiary\)\]::placeholder{color:var(--refraktor-text-tertiary)}.focus-within\:border-\[var\(--refraktor-primary\)\]:focus-within{border-color:var(--refraktor-primary)}@media (hover:hover){.hover\:bg-\[var\(--refraktor-bg-hover\)\]:hover{background-color:var(--refraktor-bg-hover)}.hover\:bg-\[var\(--refraktor-primary\)\]:hover{background-color:var(--refraktor-primary)}.hover\:text-\[var\(--refraktor-text\)\]:hover{color:var(--refraktor-text)}}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[var\(--refraktor-primary\)\]:focus-visible{outline-color:var(--refraktor-primary)}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:cursor-not-allowed[data-disabled=true]{cursor:not-allowed}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@refraktor/dates",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -24,8 +24,8 @@
24
24
  "react": ">=18.0.0",
25
25
  "react-dom": ">=18.0.0",
26
26
  "dayjs": "^1.11.19",
27
- "@refraktor/core": "0.0.2",
28
- "@refraktor/utils": "0.0.2"
27
+ "@refraktor/core": "0.0.4",
28
+ "@refraktor/utils": "0.0.4"
29
29
  },
30
30
  "devDependencies": {
31
31
  "typescript": "^5.9.3"
@@ -195,7 +195,8 @@ const DateInput = factory<DateInputFactoryPayload>((_props, ref) => {
195
195
  open: isOpen,
196
196
  onOpenChange: handleOpenChange,
197
197
  middleware,
198
- whileElementsMounted: autoUpdate
198
+ whileElementsMounted: autoUpdate,
199
+ strategy: "fixed"
199
200
  });
200
201
 
201
202
  const focus = useFocus(floating.context, {
@@ -286,13 +287,15 @@ const DateInput = factory<DateInputFactoryPayload>((_props, ref) => {
286
287
  transition="fade"
287
288
  duration={150}
288
289
  mounted={isOpen}
290
+ style={{ position: "relative", zIndex: 1000 }}
289
291
  {...transitionProps}
290
292
  >
291
293
  <div
292
294
  ref={floating.refs.setFloating}
293
295
  id={dropdownId}
294
296
  style={{
295
- ...floating.floatingStyles
297
+ ...floating.floatingStyles,
298
+ zIndex: 1000
296
299
  }}
297
300
  className={cx(
298
301
  "w-80 z-50 border border-[var(--refraktor-border)] bg-[var(--refraktor-bg)] p-2 text-[var(--refraktor-text)] shadow-md",
@@ -5,3 +5,5 @@ export * from "./month-picker";
5
5
  export * from "./month-input";
6
6
  export * from "./year-picker";
7
7
  export * from "./year-input";
8
+ export * from "./time-picker";
9
+ export * from "./time-input";
@@ -193,7 +193,8 @@ const MonthInput = factory<MonthInputFactoryPayload>((_props, ref) => {
193
193
  open: isOpen,
194
194
  onOpenChange: handleOpenChange,
195
195
  middleware,
196
- whileElementsMounted: autoUpdate
196
+ whileElementsMounted: autoUpdate,
197
+ strategy: "fixed"
197
198
  });
198
199
 
199
200
  const focus = useFocus(floating.context, {
@@ -278,13 +279,15 @@ const MonthInput = factory<MonthInputFactoryPayload>((_props, ref) => {
278
279
  transition="fade"
279
280
  duration={150}
280
281
  mounted={isOpen}
282
+ style={{ position: "relative", zIndex: 1000 }}
281
283
  {...transitionProps}
282
284
  >
283
285
  <div
284
286
  ref={floating.refs.setFloating}
285
287
  id={dropdownId}
286
288
  style={{
287
- ...floating.floatingStyles
289
+ ...floating.floatingStyles,
290
+ zIndex: 1000
288
291
  }}
289
292
  className={cx(
290
293
  "w-72 z-50 border border-[var(--refraktor-border)] bg-[var(--refraktor-bg)] p-2 text-[var(--refraktor-text)] shadow-md",
@@ -0,0 +1,6 @@
1
+ export { default as TimeInput } from "./time-input";
2
+ export type {
3
+ TimeInputClassNames,
4
+ TimeInputFactoryPayload,
5
+ TimeInputProps
6
+ } from "./time-input.types";
@@ -0,0 +1,48 @@
1
+ import {
2
+ createClassNamesConfig,
3
+ createComponentConfig,
4
+ factory,
5
+ Input,
6
+ useClassNames,
7
+ useProps,
8
+ useTheme
9
+ } from "@refraktor/core";
10
+ import {
11
+ TimeInputClassNames,
12
+ TimeInputFactoryPayload,
13
+ TimeInputProps
14
+ } from "./time-input.types";
15
+
16
+ const defaultProps = {
17
+ withSeconds: false,
18
+ size: "md",
19
+ radius: "default",
20
+ variant: "default"
21
+ } satisfies Partial<TimeInputProps>;
22
+
23
+ const TimeInput = factory<TimeInputFactoryPayload>((_props, ref) => {
24
+ const { cx } = useTheme();
25
+ const {
26
+ withSeconds,
27
+ className,
28
+ classNames,
29
+ ...inputProps
30
+ } = useProps("TimeInput", defaultProps, _props);
31
+ const classes = useClassNames("TimeInput", classNames);
32
+
33
+ return (
34
+ <Input
35
+ ref={ref}
36
+ type="time"
37
+ step={withSeconds ? 1 : undefined}
38
+ className={cx(classes.input, className)}
39
+ {...inputProps}
40
+ />
41
+ );
42
+ });
43
+
44
+ TimeInput.displayName = "@refraktor/dates/TimeInput";
45
+ TimeInput.configure = createComponentConfig<TimeInputProps>();
46
+ TimeInput.classNames = createClassNamesConfig<TimeInputClassNames>();
47
+
48
+ export default TimeInput;
@@ -0,0 +1,30 @@
1
+ import {
2
+ createClassNamesConfig,
3
+ createComponentConfig,
4
+ FactoryPayload,
5
+ InputProps
6
+ } from "@refraktor/core";
7
+
8
+ export type TimeInputClassNames = {
9
+ input?: string;
10
+ };
11
+
12
+ interface _TimeInputProps {
13
+ /** Show seconds in the native time input @default `false` */
14
+ withSeconds?: boolean;
15
+
16
+ /** Used for styling TimeInput parts */
17
+ classNames?: TimeInputClassNames;
18
+ }
19
+
20
+ export type TimeInputProps = _TimeInputProps &
21
+ Omit<InputProps, "type" | "classNames">;
22
+
23
+ export interface TimeInputFactoryPayload extends FactoryPayload {
24
+ props: TimeInputProps;
25
+ ref: HTMLInputElement;
26
+ compound: {
27
+ configure: ReturnType<typeof createComponentConfig<TimeInputProps>>;
28
+ classNames: ReturnType<typeof createClassNamesConfig<TimeInputClassNames>>;
29
+ };
30
+ }
@@ -0,0 +1,10 @@
1
+ export { default as TimePicker } from "./time-picker";
2
+ export type {
3
+ TimePickerAmPmLabels,
4
+ TimePickerClassNames,
5
+ TimePickerFactoryPayload,
6
+ TimePickerFormat,
7
+ TimePickerPopoverProps,
8
+ TimePickerProps,
9
+ TimePickerValue
10
+ } from "./time-picker.types";