@clicoh/orion-library 1.0.6 → 1.0.7
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/assets/css/base.css +2 -0
- package/dist/components/02-molecules/TimePicker/TimePicker.d.ts +30 -0
- package/dist/components/02-molecules/TimePicker/TimePicker.d.ts.map +1 -0
- package/dist/components/02-molecules/TimePicker/TimePicker.jsx +91 -0
- package/dist/components/02-molecules/TimePicker/TimePicker.jsx.map +1 -0
- package/dist/components/02-molecules/TimePicker/index.d.ts +2 -0
- package/dist/components/02-molecules/TimePicker/index.d.ts.map +1 -0
- package/dist/components/02-molecules/TimePicker/index.js +2 -0
- package/dist/components/02-molecules/TimePicker/index.js.map +1 -0
- package/dist/components/02-molecules/index.d.ts +1 -0
- package/dist/components/02-molecules/index.d.ts.map +1 -1
- package/dist/components/02-molecules/index.js +1 -0
- package/dist/components/02-molecules/index.js.map +1 -1
- package/dist/utils/time.d.ts +10 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +25 -0
- package/dist/utils/time.js.map +1 -0
- package/package.json +1 -1
- package/tailwind.config.ts +2 -0
package/assets/css/base.css
CHANGED
|
@@ -45,10 +45,12 @@
|
|
|
45
45
|
--color-success-dark-1: #264936;
|
|
46
46
|
|
|
47
47
|
--color-info-1: #e9f2ff;
|
|
48
|
+
--color-info-2: #DBEAFE;
|
|
48
49
|
--color-info: #297eff;
|
|
49
50
|
--color-info-dark: #5498ff;
|
|
50
51
|
--color-info-dark-1: #233554;
|
|
51
52
|
--color-info-dark-2: #DBEAFE;
|
|
53
|
+
--color-info-dark-3: #1E40AF;
|
|
52
54
|
|
|
53
55
|
--color-teal-1: #e8fcfa;
|
|
54
56
|
--color-teal: #25dec8;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
type TimePickerProps = {
|
|
3
|
+
value?: string;
|
|
4
|
+
defaultValue?: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
onTimeChange?: (time: string) => void;
|
|
7
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
8
|
+
/**
|
|
9
|
+
* TimePicker component that allows selecting only hour and half-hour slots.
|
|
10
|
+
*
|
|
11
|
+
* @component
|
|
12
|
+
* @example
|
|
13
|
+
* // Example usage of TimePicker component
|
|
14
|
+
* <TimePicker
|
|
15
|
+
* defaultValue="08:30 AM"
|
|
16
|
+
* onTimeChange={(time) => console.log(time)}
|
|
17
|
+
* />
|
|
18
|
+
*
|
|
19
|
+
* @param {TimePickerProps} props - The properties of the TimePicker component.
|
|
20
|
+
* @param {string} [props.value] - Controlled time value in `hh:mm AM/PM` format.
|
|
21
|
+
* @param {string} [props.defaultValue] - Initial uncontrolled value in `hh:mm AM/PM` format.
|
|
22
|
+
* @param {boolean} [props.disabled=false] - Whether the control is disabled.
|
|
23
|
+
* @param {(time: string) => void} [props.onTimeChange] - Callback fired when the selected time changes.
|
|
24
|
+
* @param {HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the wrapper.
|
|
25
|
+
*
|
|
26
|
+
* @returns {ReactNode} The rendered TimePicker component.
|
|
27
|
+
*/
|
|
28
|
+
export declare function TimePicker({ value, defaultValue, disabled, onTimeChange, ...restProps }: TimePickerProps): ReactNode;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=TimePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePicker.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAUf,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;AASnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,QAAgB,EAChB,YAAY,EACZ,GAAG,SAAS,EACb,EAAE,eAAe,GAAG,SAAS,CAyE7B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { useEffect, useState, } from 'react';
|
|
4
|
+
import { MdKeyboardArrowDown, MdKeyboardArrowUp } from 'react-icons/md';
|
|
5
|
+
import { formatTime, padTimeValue, parseTime, } from '../../../utils/time';
|
|
6
|
+
const hoursLimit = {
|
|
7
|
+
min: 1,
|
|
8
|
+
max: 12,
|
|
9
|
+
};
|
|
10
|
+
const minuteValues = [0, 30];
|
|
11
|
+
/**
|
|
12
|
+
* TimePicker component that allows selecting only hour and half-hour slots.
|
|
13
|
+
*
|
|
14
|
+
* @component
|
|
15
|
+
* @example
|
|
16
|
+
* // Example usage of TimePicker component
|
|
17
|
+
* <TimePicker
|
|
18
|
+
* defaultValue="08:30 AM"
|
|
19
|
+
* onTimeChange={(time) => console.log(time)}
|
|
20
|
+
* />
|
|
21
|
+
*
|
|
22
|
+
* @param {TimePickerProps} props - The properties of the TimePicker component.
|
|
23
|
+
* @param {string} [props.value] - Controlled time value in `hh:mm AM/PM` format.
|
|
24
|
+
* @param {string} [props.defaultValue] - Initial uncontrolled value in `hh:mm AM/PM` format.
|
|
25
|
+
* @param {boolean} [props.disabled=false] - Whether the control is disabled.
|
|
26
|
+
* @param {(time: string) => void} [props.onTimeChange] - Callback fired when the selected time changes.
|
|
27
|
+
* @param {HTMLAttributes<HTMLDivElement>} [props.restProps] - Additional HTML attributes for the wrapper.
|
|
28
|
+
*
|
|
29
|
+
* @returns {ReactNode} The rendered TimePicker component.
|
|
30
|
+
*/
|
|
31
|
+
export function TimePicker({ value, defaultValue, disabled = false, onTimeChange, ...restProps }) {
|
|
32
|
+
const [time, setTime] = useState(() => parseTime(value || defaultValue));
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (!value)
|
|
35
|
+
return;
|
|
36
|
+
setTime(parseTime(value));
|
|
37
|
+
}, [value]);
|
|
38
|
+
const updateTime = (nextState) => {
|
|
39
|
+
setTime(nextState);
|
|
40
|
+
onTimeChange?.(formatTime(nextState));
|
|
41
|
+
};
|
|
42
|
+
const updateHour = (step) => {
|
|
43
|
+
const nextHour = time.hour + step;
|
|
44
|
+
if (nextHour > hoursLimit.max) {
|
|
45
|
+
return updateTime({ ...time, hour: hoursLimit.min });
|
|
46
|
+
}
|
|
47
|
+
if (nextHour < hoursLimit.min) {
|
|
48
|
+
return updateTime({ ...time, hour: hoursLimit.max });
|
|
49
|
+
}
|
|
50
|
+
return updateTime({ ...time, hour: nextHour });
|
|
51
|
+
};
|
|
52
|
+
const updateMinute = (step) => {
|
|
53
|
+
const currentIndex = minuteValues.indexOf(time.minute);
|
|
54
|
+
const nextIndex = (currentIndex + step + minuteValues.length) % minuteValues.length;
|
|
55
|
+
return updateTime({ ...time, minute: minuteValues[nextIndex] });
|
|
56
|
+
};
|
|
57
|
+
return (<div {...restProps} className={clsx('border-info bg-info-2 inline-flex items-center justify-center rounded-xl border px-5 py-3', disabled && 'border-gray-3', restProps.className)}>
|
|
58
|
+
<TimeValue value={padTimeValue(time.hour)} disabled={disabled} onIncrement={() => updateHour(1)} onDecrement={() => updateHour(-1)}/>
|
|
59
|
+
<span className="text-info-dark-3 px-2 text-4xl leading-none font-bold">
|
|
60
|
+
:
|
|
61
|
+
</span>
|
|
62
|
+
<TimeValue value={padTimeValue(time.minute)} disabled={disabled} onIncrement={() => updateMinute(1)} onDecrement={() => updateMinute(-1)}/>
|
|
63
|
+
<div className="ml-2 flex flex-col gap-y-1 overflow-hidden">
|
|
64
|
+
<PeriodButton period="AM" currentPeriod={time.period} disabled={disabled} onClick={() => updateTime({ ...time, period: 'AM' })}/>
|
|
65
|
+
<PeriodButton period="PM" currentPeriod={time.period} disabled={disabled} onClick={() => updateTime({ ...time, period: 'PM' })}/>
|
|
66
|
+
</div>
|
|
67
|
+
</div>);
|
|
68
|
+
}
|
|
69
|
+
function TimeValue({ value, disabled, onIncrement, onDecrement, }) {
|
|
70
|
+
return (<div className="inline-flex items-center">
|
|
71
|
+
<span className={clsx('text-info-dark-3 text-5xl leading-none font-bold tabular-nums', disabled && 'text-gray-3')}>
|
|
72
|
+
{value}
|
|
73
|
+
</span>
|
|
74
|
+
<div className="ml-1 inline-flex flex-col">
|
|
75
|
+
<button type="button" aria-label={`Increment ${value}`} onClick={onIncrement} disabled={disabled} className={clsx('inline-flex cursor-pointer items-center justify-center leading-none', 'not-disabled:hover:text-info-dark-3', 'disabled:text-gray-3 disabled:cursor-not-allowed')}>
|
|
76
|
+
<MdKeyboardArrowUp size={24}/>
|
|
77
|
+
</button>
|
|
78
|
+
<button type="button" aria-label={`Decrement ${value}`} onClick={onDecrement} disabled={disabled} className={clsx('text-dark inline-flex cursor-pointer items-center justify-center text-sm leading-none transition-colors', 'not-disabled:hover:text-info-dark-3', 'disabled:text-gray-3 disabled:cursor-not-allowed')}>
|
|
79
|
+
<MdKeyboardArrowDown size={24}/>
|
|
80
|
+
</button>
|
|
81
|
+
</div>
|
|
82
|
+
</div>);
|
|
83
|
+
}
|
|
84
|
+
function PeriodButton({ period, currentPeriod, disabled, onClick, }) {
|
|
85
|
+
return (<button type="button" onClick={onClick} disabled={disabled} className={clsx('flex h-6 w-8 items-center justify-center rounded-md text-xs font-semibold transition-colors', period === currentPeriod
|
|
86
|
+
? 'bg-info text-white'
|
|
87
|
+
: 'text-gray-1 not-disabled:hover:bg-gray-6 bg-white', disabled && 'text-gray-3 cursor-not-allowed')}>
|
|
88
|
+
{period}
|
|
89
|
+
</button>);
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=TimePicker.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimePicker.jsx","sourceRoot":"","sources":["../../../../src/components/02-molecules/TimePicker/TimePicker.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAGL,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,UAAU,EACV,YAAY,EACZ,SAAS,GAGV,MAAM,qBAAqB,CAAC;AAS7B,MAAM,UAAU,GAAG;IACjB,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,EAAE;CACR,CAAC;AAEF,MAAM,YAAY,GAAgC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,YAAY,EACZ,QAAQ,GAAG,KAAK,EAChB,YAAY,EACZ,GAAG,SAAS,EACI;IAChB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAkB,GAAG,EAAE,CACrD,SAAS,CAAC,KAAK,IAAI,YAAY,CAAC,CACjC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,CAAC,SAA0B,EAAE,EAAE;QAChD,OAAO,CAAC,SAAS,CAAC,CAAC;QACnB,YAAY,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,SAAS,GACb,CAAC,YAAY,GAAG,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;QACpE,OAAO,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,GAAG,CACF,IAAI,SAAS,CAAC,CACd,SAAS,CAAC,CAAC,IAAI,CACb,2FAA2F,EAC3F,QAAQ,IAAI,eAAe,EAC3B,SAAS,CAAC,SAAS,CACpB,CAAC,CAEF;MAAA,CAAC,SAAS,CACR,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAC/B,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACjC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAEpC;MAAA,CAAC,IAAI,CAAC,SAAS,CAAC,uDAAuD,CACrE;;MACF,EAAE,IAAI,CACN;MAAA,CAAC,SAAS,CACR,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CACjC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACnC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAEtC;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,4CAA4C,CACzD;QAAA,CAAC,YAAY,CACX,MAAM,CAAC,IAAI,CACX,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3B,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAEvD;QAAA,CAAC,YAAY,CACX,MAAM,CAAC,IAAI,CACX,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3B,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAEzD;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AASD,SAAS,SAAS,CAAC,EACjB,KAAK,EACL,QAAQ,EACR,WAAW,EACX,WAAW,GACI;IACf,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CACvC;MAAA,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,IAAI,CACb,+DAA+D,EAC/D,QAAQ,IAAI,aAAa,CAC1B,CAAC,CAEF;QAAA,CAAC,KAAK,CACR;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,2BAA2B,CACxC;QAAA,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,UAAU,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CACjC,OAAO,CAAC,CAAC,WAAW,CAAC,CACrB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,SAAS,CAAC,CAAC,IAAI,CACb,qEAAqE,EACrE,qCAAqC,EACrC,kDAAkD,CACnD,CAAC,CAEF;UAAA,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAC9B;QAAA,EAAE,MAAM,CACR;QAAA,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,UAAU,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CACjC,OAAO,CAAC,CAAC,WAAW,CAAC,CACrB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,SAAS,CAAC,CAAC,IAAI,CACb,yGAAyG,EACzG,qCAAqC,EACrC,kDAAkD,CACnD,CAAC,CAEF;UAAA,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAChC;QAAA,EAAE,MAAM,CACV;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC;AASD,SAAS,YAAY,CAAC,EACpB,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,GACW;IAClB,OAAO,CACL,CAAC,MAAM,CACL,IAAI,CAAC,QAAQ,CACb,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,SAAS,CAAC,CAAC,IAAI,CACb,6FAA6F,EAC7F,MAAM,KAAK,aAAa;YACtB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,mDAAmD,EACvD,QAAQ,IAAI,gCAAgC,CAC7C,CAAC,CAEF;MAAA,CAAC,MAAM,CACT;IAAA,EAAE,MAAM,CAAC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/02-molecules/TimePicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/02-molecules/TimePicker/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/02-molecules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/02-molecules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/02-molecules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/02-molecules/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type TimePickerPeriod = 'AM' | 'PM';
|
|
2
|
+
export type TimePickerState = {
|
|
3
|
+
hour: number;
|
|
4
|
+
minute: 0 | 30;
|
|
5
|
+
period: TimePickerPeriod;
|
|
6
|
+
};
|
|
7
|
+
export declare function parseTime(value?: string): TimePickerState;
|
|
8
|
+
export declare function formatTime(time: TimePickerState): string;
|
|
9
|
+
export declare function padTimeValue(value: number): string;
|
|
10
|
+
//# sourceMappingURL=time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAQF,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAazD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAExD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const defaultTime = {
|
|
2
|
+
hour: 8,
|
|
3
|
+
minute: 30,
|
|
4
|
+
period: 'AM',
|
|
5
|
+
};
|
|
6
|
+
export function parseTime(value) {
|
|
7
|
+
if (!value)
|
|
8
|
+
return defaultTime;
|
|
9
|
+
const matches = value.trim().match(/^([0]?[1-9]|1[0-2]):(00|30)\s?(AM|PM)$/i);
|
|
10
|
+
if (!matches)
|
|
11
|
+
return defaultTime;
|
|
12
|
+
const [, hour, minute, period] = matches;
|
|
13
|
+
return {
|
|
14
|
+
hour: Number(hour),
|
|
15
|
+
minute: Number(minute),
|
|
16
|
+
period: period.toUpperCase(),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function formatTime(time) {
|
|
20
|
+
return `${padTimeValue(time.hour)}:${padTimeValue(time.minute)} ${time.period}`;
|
|
21
|
+
}
|
|
22
|
+
export function padTimeValue(value) {
|
|
23
|
+
return value.toString().padStart(2, '0');
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../src/utils/time.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAoB;IACnC,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAE/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAE9E,IAAI,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IAEjC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAA8B;QACnD,MAAM,EAAE,MAAM,CAAC,WAAW,EAAsB;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAqB;IAC9C,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC"}
|
package/package.json
CHANGED
package/tailwind.config.ts
CHANGED