Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
40916ee
feat(dropdown): TEDI-Ready Dropdown component #94
airikej Feb 18, 2026
793bc10
chore: fix stories #94
airikej Feb 18, 2026
a6e6ef2
feat(dropdown): add dropdown separator and divided prop + examples #94
airikej Feb 18, 2026
c0d085a
feat(dropdown): tree variant, placement control #94
airikej Feb 20, 2026
dd27964
feat(separator): match stories with Figma #94
airikej Feb 25, 2026
eb19728
Merge branch 'rc' into feat/94-dropdown-tedi-ready-component-development
airikej Feb 26, 2026
3ee3091
fix(dropdown): fix stories #94
airikej Feb 26, 2026
e13e729
feat(date-picker): initial commit #24
airikej Feb 26, 2026
5c763d7
Merge branch 'feat/94-dropdown-tedi-ready-component-development' into…
airikej Feb 26, 2026
ec73cad
feat(dropdown): add className props, add box-shadow, remove unused ty…
airikej Feb 26, 2026
eeb2bdf
Merge branch 'feat/94-dropdown-tedi-ready-component-development' into…
airikej Feb 26, 2026
672d263
feat(date-field): new TEDI-Ready DateField component #24
airikej Mar 3, 2026
d778f1c
feat(date-field): type error fixes #24
airikej Mar 3, 2026
d5ada60
feat(date-field): fix examples, add unit tests #24
airikej Mar 4, 2026
0957015
feat(date-field): states example, css fixes #24
airikej Mar 4, 2026
664a254
fix(dropdown): focused item indicator fix, fix stories #94
airikej Mar 4, 2026
d547f58
fix(dropdown): fix tab targeting on choice items #94
airikej Mar 4, 2026
ca094c4
fix(dropdown): fix focus scrolling bug #94
airikej Mar 4, 2026
dede6b1
Merge branch 'feat/94-dropdown-tedi-ready-component-development' into…
airikej Mar 4, 2026
a9483dc
feat(date-field): fix month and year grid selections when calendarVie…
airikej Mar 4, 2026
8b0f3de
fix(date-field): today button margin issue fix #24
airikej Mar 4, 2026
4c34025
fix(dropdown): design review fixes #94
airikej Mar 5, 2026
9ca8250
fix(dropdown): checkbox/radio tab targeting fix #94
airikej Mar 5, 2026
ad8fb49
fix(dropdown): add deprecated badge to Community component, update Fi…
airikej Mar 5, 2026
a528d7c
fix(dropdown): add more test coverage #94
airikej Mar 5, 2026
31df95d
fix(dropdown): update tests #94
airikej Mar 5, 2026
061ac3e
fix(dropdown): improve test coverage #94
airikej Mar 5, 2026
73e0e2d
Merge branch 'feat/94-dropdown-tedi-ready-component-development' into…
airikej Mar 5, 2026
9f5ee48
feat(date-field, date-calendar): separate components #24
airikej Mar 17, 2026
b49bb74
Merge branch 'rc' into feat/24-datefield-new-tedi-ready-component
airikej Mar 17, 2026
f6cb4c7
feat(date-field): design review fixes #24
airikej Mar 24, 2026
0d04f75
feat(date-field): update stories #24
airikej Mar 24, 2026
21eeca5
fix(date-field): multivalue calendar positioning #24
airikej Mar 24, 2026
273535f
feat(calendar): design review fixes #24
airikej Mar 25, 2026
808e73f
fix(date-field): design review fixes vol 2 #24
airikej Apr 6, 2026
b653378
feat(date-picker): design review fixes on Calendar #24
airikej Apr 6, 2026
2d2b643
fix(date-field): design review fixes #24
airikej Apr 8, 2026
fceb50a
feat(date-field): calendar fixes #24
airikej Apr 8, 2026
86d13ea
feat(date-field): add tests #24
airikej Apr 9, 2026
aaf57b5
Merge branch 'rc' into feat/24-datefield-new-tedi-ready-component
airikej Apr 9, 2026
2a7d22c
fix(date-field, calendar): code review fixes #24
airikej Apr 10, 2026
67fd752
feat(date-field): code review fixes, update test coverage #24
airikej Apr 13, 2026
ae4bed4
feat(date-field): code review fixes #24
airikej Apr 13, 2026
021048e
fix(date-field): code review fixes #24
airikej Apr 14, 2026
8283b08
fix(date-field): code review fixes #24
airikej Apr 15, 2026
3efd978
feat(time-field): new TEDI-ready component #25
airikej Apr 17, 2026
246af09
fix(time-field, time-picker): code review fixes #25
airikej Apr 21, 2026
35adf95
fix(time-picker): code review fixes #25
airikej Apr 21, 2026
cf72695
fix(time-picker): code review fixes, improve test coverage #25
airikej Apr 21, 2026
769e2a3
fix(time-field, time-picker): code review fixes #25
airikej Apr 23, 2026
9723972
fix(time-picker): fix initial value reset #25
airikej Apr 23, 2026
812811a
fix(time-field): radio grid tab selection fix #25
airikej Apr 23, 2026
3050c25
fix(time-field): code review fixes #25
airikej Apr 24, 2026
97d4435
fix(date-field): code review fixes #24
airikej Apr 24, 2026
df2683c
Merge branch 'rc' into feat/24-datefield-new-tedi-ready-component
airikej Apr 24, 2026
ddbd662
fix(calendar): code review fixes #24
airikej Apr 24, 2026
d4cfeee
feat(date-field): fix desc formatting for Storybook to show prop desc…
airikej Apr 28, 2026
1ffe798
feat(date-field): improve prop name #24
airikej Apr 30, 2026
f2070ec
Merge branch 'rc' into feat/24-datefield-new-tedi-ready-component
airikej Apr 30, 2026
304bd61
fix(time-field): improve scrolling, toggle picker button #25
airikej May 4, 2026
2a43344
fix(date-field): code review fixes #24
airikej May 4, 2026
7875880
fix(date-field): code review fixes #24
airikej May 5, 2026
ef05ef4
fix(date-field): multiple months mobile fix #24
airikej May 6, 2026
d289e7d
fix(date-field): locale parsing more universal #24
airikej May 6, 2026
dbcb728
Merge branch 'feat/25-timefield-new-tedi-ready-component-1' into feat…
airikej May 6, 2026
c961b4e
Merge branch 'feat/24-datefield-new-tedi-ready-component' into feat/5…
airikej May 6, 2026
b6c8816
feat(date-time-field): component development #554
airikej May 6, 2026
b89ea98
feat(date-time-field): refactor #554
airikej May 6, 2026
3c9e292
feat(date-time-field): refactor #554
airikej May 6, 2026
9fa8c3b
fix(date-time-field): timewheel fixes #554
airikej May 7, 2026
bcd674b
fix(time-field): code review changes #25
airikej May 11, 2026
639f0ba
fix(time-field): remove duplicate row #25
airikej May 11, 2026
ae15d7b
fix(date-field): code review fixes #24
airikej May 11, 2026
aa2e57d
fix(time-field): allow useNativePicker to be used regardless of break…
airikej May 11, 2026
7c923a4
fix(date-field): add breakpoint props support #24
airikej May 11, 2026
9090caf
fix(date-field): remove duplicate appearance:none; #24
airikej May 11, 2026
fb55cd3
fix(date-field): textfield focus styles, textfield small input height…
airikej May 11, 2026
b9970c3
fix(text-field): align right area content center #24
airikej May 11, 2026
d2502ed
fix(time-field): add formatting when valid time without delimiter is …
airikej May 11, 2026
abc144c
fix(date-field,calendar): cr fixes #24
airikej May 12, 2026
f735235
Merge branch 'rc' into feat/24-datefield-new-tedi-ready-component
airikej May 12, 2026
1c1f698
fix(choice-group): remove comment #25
airikej May 12, 2026
4ab45ea
Merge branch 'feat/24-datefield-new-tedi-ready-component' into feat/5…
airikej May 13, 2026
487a4cc
feat(time-wheel): wrap keyboard navigation at column ends #25
airikej May 13, 2026
765140d
chore: update consumer skills for TimeField and TimePicker #25
airikej May 13, 2026
279dd36
Merge branch 'rc' into feat/25-timefield-new-tedi-ready-component-1
airikej May 14, 2026
b091209
Merge branch 'feat/25-timefield-new-tedi-ready-component-1' into feat…
airikej May 14, 2026
4679416
feat(date-time-field): update consumer skill, update stories #554
airikej May 14, 2026
471ee9e
fix(date-time-field): cr fixes #554
airikej May 14, 2026
4227a47
Merge branch 'rc' into feat/554-datetimefield-component
airikej May 20, 2026
2e0fdb3
feat(date-time-field): refactor #554
airikej May 20, 2026
8c9e351
fix(date-time-field): remove duplicate height #554
airikej May 20, 2026
a6df8bf
fix(date-time-field): improve test coverage #554
airikej May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@ import Calendar, { CalendarStatus } from './calendar';
const meta: Meta<typeof Calendar> = {
component: Calendar,
title: 'Community/Form/Pickers/Calendar',
parameters: {
status: {
type: ['deprecated', 'ExistsInTediReady'],
},
},
};

export default meta;
Expand Down
6 changes: 6 additions & 0 deletions src/community/components/form/pickers/calendar/calendar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import styles from './calendar.module.scss';
export type CalendarValue = Dayjs | null;
export type CalendarStatus = 'error' | 'success' | 'inactive';

/**
* @deprecated Use `Calendar` from `@tedi-design-system/react/tedi` instead.
*/
export interface CalendarProps {
/**
* Currently selected value. Accepts a dayjs date object.
Expand Down Expand Up @@ -94,6 +97,9 @@ export interface CalendarProps {
shouldShowStatusOnDate?: (day: CalendarValue) => CalendarStatus | undefined;
}

/**
* @deprecated Use `Calendar` from `@tedi-design-system/react/tedi` instead.
*/
export const Calendar = (props: CalendarProps): JSX.Element => {
const {
value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import DatePicker, { DatePickerProps } from './datepicker';
const meta: Meta<typeof DatePicker> = {
component: DatePicker,
title: 'Community/Form/Pickers/DatePicker',
parameters: {
status: {
type: ['deprecated', 'ExistsInTediReady'],
},
},
};

export default meta;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import MuiInputTransition from '../mui-input-transition/mui-input-transition';

export type DatepickerValue = Dayjs | null;

/**
* @deprecated Use `DateField` from `@tedi-design-system/react/tedi` instead.
*/
export interface DatePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'value' | 'onChange'> {
/**
* Datepicker initial value. Accepts a dayjs date object.
Expand Down Expand Up @@ -92,6 +95,9 @@ export interface DatePickerProps extends Omit<TextFieldProps, 'defaultValue' | '
onClose?: () => void;
}

/**
* @deprecated Use `DateField` from `@tedi-design-system/react/tedi` instead.
*/
export const DatePicker = (props: DatePickerProps): JSX.Element => {
const {
value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import DateTimePicker, { DateTimePickerProps } from './datetimepicker';
const meta: Meta<typeof DateTimePicker> = {
component: DateTimePicker,
title: 'Community/Form/Pickers/DateTimePicker',
parameters: {
status: {
type: ['deprecated', 'ExistsInTediReady'],
},
},
};

export default meta;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import MuiInputTransition from '../mui-input-transition/mui-input-transition';

export type DateTimepickerValue = Dayjs | null;

/**
* @deprecated Use `DateTimeField` from `@tedi-design-system/react/tedi` instead.
*/
export interface DateTimePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'value' | 'onChange'> {
/**
* DateTimepicker initial value. Accepts a dayjs date object.
Expand Down Expand Up @@ -131,6 +134,9 @@ export interface DateTimePickerProps extends Omit<TextFieldProps, 'defaultValue'
onClose?: () => void;
}

/**
* @deprecated Use `DateTimeField` from `@tedi-design-system/react/tedi` instead.
*/
export const DateTimePicker = (props: DateTimePickerProps): JSX.Element => {
const {
value,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ import TimePicker, { TimePickerProps } from './timepicker';
const meta: Meta<typeof TimePicker> = {
component: TimePicker,
title: 'Community/Form/Pickers/TimePicker',
parameters: {
status: {
type: ['deprecated', 'ExistsInTediReady'],
},
},
};

export default meta;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ import MuiInputTransition from '../mui-input-transition/mui-input-transition';

export type TimePickerValue = Dayjs | null;

/**
* @deprecated Use `TimeField` from `@tedi-design-system/react/tedi` instead.
*/
export interface TimePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'value' | 'onChange'> {
/**
* TimePicker initial value. Accepts a dayjs date object.
Expand Down Expand Up @@ -75,6 +78,9 @@ export interface TimePickerProps extends Omit<TextFieldProps, 'defaultValue' | '
onClose?: () => void;
}

/**
* @deprecated Use `TimeField` from `@tedi-design-system/react/tedi` instead.
*/
export const TimePicker = (props: TimePickerProps): JSX.Element => {
const {
defaultValue,
Expand Down
3 changes: 2 additions & 1 deletion src/tedi/components/content/calendar/calendar.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@
all: unset;
display: block;
width: 100%;
height: 100%;
width: var(--form-calendar-date-width);
height: var(--form-calendar-date-width);
overflow: hidden;
font-size: var(--body-regular-size);
font-weight: var(--tedi-weight-02);
Expand Down
93 changes: 93 additions & 0 deletions src/tedi/components/form/_field-icon-button.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
// Shared icon-button states for picker-style form fields
// (`DateField`, `TimeField`, `DateTimeField`).
//
// All three render a TextField with a trailing icon button that opens a
// popover (calendar / time wheel / both). The icon button uses identical
// hover, open (`aria-expanded='true'`) and disabled treatments — this
// partial centralises the rules so cross-cutting tweaks (token swaps,
// accessibility fixes, design-review touch-ups) only need to land once.
//
// **The textfield's own `:active` pseudo (mousedown press) is handled by
// `textfield.module.scss` and inherits through to all three fields — it
// does not belong here.**
//
// Usage (inside each field's `*__textfield` block):
//
// ```scss
// @use '../field-icon-button' as field-icon-button;
//
// .tedi-foo-field__textfield {
// @include field-icon-button.states;
//
// &--disabled {
// @include field-icon-button.disabled;
// }
//
// &.tedi-foo-field__icon--disabled {
// @include field-icon-button.icon-only-disabled;
// }
// }
// ```
//
// The selector `button:not([data-name='closing-button']):last-child`
// targets the picker-trigger button while explicitly skipping the clear
// ("closing") button — that one has its own hover treatment from
// `<ClosingButton>` and shouldn't pick up the picker icon's hover bg.

@mixin states {
button:not([data-name='closing-button']):last-child {
display: flex;
align-items: center;
justify-content: center;
width: var(--button-xs-icon-size);
min-height: var(--form-field-button-height-sm);
max-height: var(--form-field-button-height-sm);
border-radius: var(--button-radius-sm);

> span {
color: var(--button-main-neutral-text-default);
}

&:hover {
background-color: var(--form-datepicker-date-hover);
}
}

// Open-popover state: the textfield root carries `aria-expanded='true'`
// while the picker is mounted. Icon button takes the active background
// tint and active text colour to mirror the open-dropdown affordance.
&[aria-expanded='true'] button:not([data-name='closing-button']):last-child {
background-color: var(--form-datepicker-date-hover);

> span {
color: var(--button-main-neutral-text-active);
}
}
}

// Fully-disabled field — desaturates the icon and suppresses the hover bg.
// Applied alongside the field's own `*--disabled` modifier rule.
@mixin disabled {
button:not([data-name='closing-button']):last-child {
> span {
color: var(--button-main-disabled-general-text);
}

&:hover {
background: none;
}
}
}

// Icon-only disabled — the input itself stays editable but the picker is
// unavailable (e.g. `readOnly` or `showPicker={false}`). Suppresses the
// hover/focus background so the icon doesn't pretend to be a trigger.
@mixin icon-only-disabled {
button:not([data-name='closing-button']):last-child {
&:hover,
&:focus {
cursor: auto;
background: none;
}
}
}
Loading
Loading