@planningcenter/tapestry 3.2.1-rc.1 → 3.2.1-rc.10

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 (79) hide show
  1. package/dist/components/NumberStepper/NumberStepper.d.ts +44 -0
  2. package/dist/components/NumberStepper/NumberStepper.d.ts.map +1 -0
  3. package/dist/components/NumberStepper/NumberStepper.js +22 -0
  4. package/dist/components/NumberStepper/NumberStepper.js.map +1 -0
  5. package/dist/components/NumberStepper/index.d.ts +4 -0
  6. package/dist/components/NumberStepper/index.d.ts.map +1 -0
  7. package/dist/components/combo-box/ComboBox.d.ts +77 -0
  8. package/dist/components/combo-box/ComboBox.d.ts.map +1 -0
  9. package/dist/components/combo-box/ComboBox.js +35 -0
  10. package/dist/components/combo-box/ComboBox.js.map +1 -0
  11. package/dist/components/combo-box/index.d.ts +4 -0
  12. package/dist/components/combo-box/index.d.ts.map +1 -0
  13. package/dist/components/date-picker/DatePicker.d.ts +9 -7
  14. package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
  15. package/dist/components/date-picker/DatePicker.js +16 -2
  16. package/dist/components/date-picker/DatePicker.js.map +1 -1
  17. package/dist/components/date-picker/index.d.ts +1 -1
  18. package/dist/components/date-picker/index.d.ts.map +1 -1
  19. package/dist/components/page-header/index.js +3 -3
  20. package/dist/components/sidenav/index.js +5 -5
  21. package/dist/components/time-field/TimeField.d.ts +47 -0
  22. package/dist/components/time-field/TimeField.d.ts.map +1 -0
  23. package/dist/components/time-field/TimeField.js +19 -0
  24. package/dist/components/time-field/TimeField.js.map +1 -0
  25. package/dist/components/time-field/index.d.ts +4 -0
  26. package/dist/components/time-field/index.d.ts.map +1 -0
  27. package/dist/ext/@internationalized/date/dist/CalendarDate.js +153 -0
  28. package/dist/ext/@internationalized/date/dist/CalendarDate.js.map +1 -0
  29. package/dist/ext/@internationalized/date/dist/GregorianCalendar.js +139 -0
  30. package/dist/ext/@internationalized/date/dist/GregorianCalendar.js.map +1 -0
  31. package/dist/ext/@internationalized/date/dist/conversion.js +156 -0
  32. package/dist/ext/@internationalized/date/dist/conversion.js.map +1 -0
  33. package/dist/ext/@internationalized/date/dist/manipulation.js +219 -0
  34. package/dist/ext/@internationalized/date/dist/manipulation.js.map +1 -0
  35. package/dist/ext/@internationalized/date/dist/queries.js +26 -0
  36. package/dist/ext/@internationalized/date/dist/queries.js.map +1 -0
  37. package/dist/ext/@internationalized/date/dist/string.js +38 -0
  38. package/dist/ext/@internationalized/date/dist/string.js.map +1 -0
  39. package/dist/ext/@internationalized/date/dist/utils.js +16 -0
  40. package/dist/ext/@internationalized/date/dist/utils.js.map +1 -0
  41. package/dist/ext/@swc/helpers/esm/_check_private_redeclaration.js +8 -0
  42. package/dist/ext/@swc/helpers/esm/_check_private_redeclaration.js.map +1 -0
  43. package/dist/ext/@swc/helpers/esm/_class_private_field_init.js +9 -0
  44. package/dist/ext/@swc/helpers/esm/_class_private_field_init.js.map +1 -0
  45. package/dist/index.css +52 -3
  46. package/dist/index.css.map +1 -1
  47. package/dist/packages/tapestry-wc/dist/components/p-Bc3D1UhE.js +41 -0
  48. package/dist/packages/tapestry-wc/dist/components/p-Bc3D1UhE.js.map +1 -0
  49. package/dist/packages/tapestry-wc/dist/components/p-CNhTorvM.js +51 -0
  50. package/dist/packages/tapestry-wc/dist/components/p-CNhTorvM.js.map +1 -0
  51. package/dist/packages/tapestry-wc/dist/components/p-D8qDXp6N.js +1736 -0
  52. package/dist/packages/tapestry-wc/dist/components/p-D8qDXp6N.js.map +1 -0
  53. package/dist/packages/tapestry-wc/dist/components/p-DT6EbtzB.js +22 -0
  54. package/dist/packages/tapestry-wc/dist/components/p-DT6EbtzB.js.map +1 -0
  55. package/dist/packages/tapestry-wc/dist/components/p-asSY9hZ8.js +886 -0
  56. package/dist/packages/tapestry-wc/dist/components/p-asSY9hZ8.js.map +1 -0
  57. package/dist/packages/tapestry-wc/dist/components/tds-page-header-nav.js +10 -0
  58. package/dist/packages/tapestry-wc/dist/components/tds-page-header-nav.js.map +1 -0
  59. package/dist/packages/tapestry-wc/dist/components/tds-page-header.js +63 -0
  60. package/dist/packages/tapestry-wc/dist/components/tds-page-header.js.map +1 -0
  61. package/dist/packages/tapestry-wc/dist/components/tds-sidenav-item.js +96 -0
  62. package/dist/packages/tapestry-wc/dist/components/tds-sidenav-item.js.map +1 -0
  63. package/dist/packages/tapestry-wc/dist/components/tds-sidenav-responsive-header.js +10 -0
  64. package/dist/packages/tapestry-wc/dist/components/tds-sidenav-responsive-header.js.map +1 -0
  65. package/dist/packages/tapestry-wc/dist/components/tds-sidenav-section.js +52 -0
  66. package/dist/packages/tapestry-wc/dist/components/tds-sidenav-section.js.map +1 -0
  67. package/dist/packages/tapestry-wc/dist/components/tds-sidenav.js +74 -0
  68. package/dist/packages/tapestry-wc/dist/components/tds-sidenav.js.map +1 -0
  69. package/dist/reactRender.css +906 -293
  70. package/dist/reactRender.css.map +1 -1
  71. package/dist/reactRenderLegacy.css +906 -293
  72. package/dist/reactRenderLegacy.css.map +1 -1
  73. package/dist/unstable.css +646 -33
  74. package/dist/unstable.css.map +1 -1
  75. package/dist/unstable.d.ts +3 -0
  76. package/dist/unstable.d.ts.map +1 -1
  77. package/dist/unstable.js +3 -0
  78. package/dist/unstable.js.map +1 -1
  79. package/package.json +3 -3
@@ -0,0 +1,44 @@
1
+ import "../button/btn.css";
2
+ import "./index.css";
3
+ import React, { type AriaAttributes } from "react";
4
+ export type NumberStepperSize = "md" | "lg";
5
+ export interface NumberStepperProps {
6
+ /** The default uncontrolled value. */
7
+ defaultValue?: number;
8
+ /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */
9
+ description?: string;
10
+ /** Disables the input and stepper buttons. */
11
+ disabled?: boolean;
12
+ /** Formatting options for the displayed value. Uses `Intl.NumberFormat`. */
13
+ formatOptions?: Intl.NumberFormatOptions;
14
+ /** If `true`, renders the label visually hidden. */
15
+ hideLabel?: boolean;
16
+ /** If `true`, applies error styling to the field and description. */
17
+ invalid?: boolean;
18
+ /** Accessible label for the field. */
19
+ label: string;
20
+ /** Maximum allowed value. */
21
+ max?: number;
22
+ /** Minimum allowed value. */
23
+ min?: number;
24
+ /** Field name for form submission. */
25
+ name?: string;
26
+ /** Called when the value changes. */
27
+ onChange?: (value: number) => void;
28
+ /** Allows the value to be read but not changed. */
29
+ readOnly?: boolean;
30
+ /** If `true`, appends an asterisk after the label text. */
31
+ required?: boolean;
32
+ /** The size of the number stepper. */
33
+ size?: NumberStepperSize;
34
+ /** Amount to increment or decrement by. Defaults to `1`. */
35
+ step?: number;
36
+ /** The controlled value. */
37
+ value?: number;
38
+ }
39
+ export type NumberStepperElementProps = NumberStepperProps & Omit<AriaAttributes, keyof NumberStepperProps> & {
40
+ className?: string;
41
+ id?: string;
42
+ };
43
+ export declare function NumberStepper({ className, defaultValue, description, disabled, formatOptions, hideLabel, id, invalid, label, max, min, name, onChange, readOnly, required, size, step, value, ...restProps }: NumberStepperElementProps): React.JSX.Element;
44
+ //# sourceMappingURL=NumberStepper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberStepper.d.ts","sourceRoot":"","sources":["../../../src/components/NumberStepper/NumberStepper.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAA;AAC1B,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAUlD,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAA;AAE3C,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAA;IACxC,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6BAA6B;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sCAAsC;IACtC,IAAI,CAAC,EAAE,iBAAiB,CAAA;IACxB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,yBAAyB,GAAG,kBAAkB,GACxD,IAAI,CAAC,cAAc,EAAE,MAAM,kBAAkB,CAAC,GAAG;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAEH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,SAAS,EACT,EAAE,EACF,OAAO,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAW,EACX,IAAI,EACJ,KAAK,EACL,GAAG,SAAS,EACb,EAAE,yBAAyB,qBAwD3B"}
@@ -0,0 +1,22 @@
1
+ import Icon from '../../utilities/Icon.js';
2
+ import classNames from 'classnames';
3
+ import React__default from 'react';
4
+ import { NumberField, Label, Group, Input, Button, Text } from 'react-aria-components';
5
+
6
+ function NumberStepper({ className, defaultValue, description, disabled, formatOptions, hideLabel, id, invalid, label, max, min, name, onChange, readOnly, required, size = "md", step, value, ...restProps }) {
7
+ const combinedClassName = classNames("tds-number-stepper", { "tds-number-stepper--lg": size === "lg" }, className);
8
+ return (React__default.createElement(NumberField, { ...restProps, "aria-label": hideLabel ? label : undefined, className: combinedClassName, defaultValue: defaultValue, formatOptions: formatOptions, id: id, isDisabled: disabled, isInvalid: invalid, isReadOnly: readOnly, isRequired: required, maxValue: max, minValue: min, name: name, onChange: onChange ?? undefined, step: step, value: value },
9
+ !hideLabel && (React__default.createElement(Label, { className: "tds-number-stepper-label" }, label)),
10
+ React__default.createElement(Group, { className: "tds-number-stepper-field" },
11
+ React__default.createElement(Input, { className: "tds-number-stepper-input" }),
12
+ React__default.createElement(Button, { className: "tds-btn tds-btn--infield tds-number-stepper-button", slot: "decrement" },
13
+ React__default.createElement(Icon, { "aria-hidden": true, symbol: "general#minus" })),
14
+ React__default.createElement(Button, { className: "tds-btn tds-btn--infield tds-number-stepper-button", slot: "increment" },
15
+ React__default.createElement(Icon, { "aria-hidden": true, symbol: "general#plus" }))),
16
+ description && (React__default.createElement(Text, { className: "tds-number-stepper-description", slot: "description" },
17
+ React__default.createElement(Icon, { "aria-hidden": true, className: "tds-number-stepper-description-invalid-icon", symbol: "general#exclamation-triangle" }),
18
+ description))));
19
+ }
20
+
21
+ export { NumberStepper };
22
+ //# sourceMappingURL=NumberStepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberStepper.js","sources":["../../../src/components/NumberStepper/NumberStepper.tsx"],"sourcesContent":["import \"../button/btn.css\"\nimport \"./index.css\"\n\nimport Icon from \"@utilities/Icon\"\nimport classNames from \"classnames\"\nimport React, { type AriaAttributes } from \"react\"\nimport {\n Button,\n Group,\n Input,\n Label,\n NumberField as AriaNumberField,\n Text,\n} from \"react-aria-components\"\n\nexport type NumberStepperSize = \"md\" | \"lg\"\n\nexport interface NumberStepperProps {\n /** The default uncontrolled value. */\n defaultValue?: number\n /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */\n description?: string\n /** Disables the input and stepper buttons. */\n disabled?: boolean\n /** Formatting options for the displayed value. Uses `Intl.NumberFormat`. */\n formatOptions?: Intl.NumberFormatOptions\n /** If `true`, renders the label visually hidden. */\n hideLabel?: boolean\n /** If `true`, applies error styling to the field and description. */\n invalid?: boolean\n /** Accessible label for the field. */\n label: string\n /** Maximum allowed value. */\n max?: number\n /** Minimum allowed value. */\n min?: number\n /** Field name for form submission. */\n name?: string\n /** Called when the value changes. */\n onChange?: (value: number) => void\n /** Allows the value to be read but not changed. */\n readOnly?: boolean\n /** If `true`, appends an asterisk after the label text. */\n required?: boolean\n /** The size of the number stepper. */\n size?: NumberStepperSize\n /** Amount to increment or decrement by. Defaults to `1`. */\n step?: number\n /** The controlled value. */\n value?: number\n}\n\nexport type NumberStepperElementProps = NumberStepperProps &\n Omit<AriaAttributes, keyof NumberStepperProps> & {\n className?: string\n id?: string\n }\n\nexport function NumberStepper({\n className,\n defaultValue,\n description,\n disabled,\n formatOptions,\n hideLabel,\n id,\n invalid,\n label,\n max,\n min,\n name,\n onChange,\n readOnly,\n required,\n size = \"md\",\n step,\n value,\n ...restProps\n}: NumberStepperElementProps) {\n const combinedClassName = classNames(\n \"tds-number-stepper\",\n { \"tds-number-stepper--lg\": size === \"lg\" },\n className\n )\n\n return (\n <AriaNumberField\n {...restProps}\n aria-label={hideLabel ? label : undefined}\n className={combinedClassName}\n defaultValue={defaultValue}\n formatOptions={formatOptions}\n id={id}\n isDisabled={disabled}\n isInvalid={invalid}\n isReadOnly={readOnly}\n isRequired={required}\n maxValue={max}\n minValue={min}\n name={name}\n onChange={onChange ?? undefined}\n step={step}\n value={value}\n >\n {!hideLabel && (\n <Label className=\"tds-number-stepper-label\">{label}</Label>\n )}\n <Group className=\"tds-number-stepper-field\">\n <Input className=\"tds-number-stepper-input\" />\n <Button\n className=\"tds-btn tds-btn--infield tds-number-stepper-button\"\n slot=\"decrement\"\n >\n <Icon aria-hidden symbol=\"general#minus\" />\n </Button>\n <Button\n className=\"tds-btn tds-btn--infield tds-number-stepper-button\"\n slot=\"increment\"\n >\n <Icon aria-hidden symbol=\"general#plus\" />\n </Button>\n </Group>\n {description && (\n <Text className=\"tds-number-stepper-description\" slot=\"description\">\n <Icon\n aria-hidden\n className=\"tds-number-stepper-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n />\n {description}\n </Text>\n )}\n </AriaNumberField>\n )\n}\n"],"names":["React","AriaNumberField"],"mappings":";;;;;AA0DM,SAAU,aAAa,CAAC,EAC5B,SAAS,EACT,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,aAAa,EACb,SAAS,EACT,EAAE,EACF,OAAO,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,GAAG,IAAI,EACX,IAAI,EACJ,KAAK,EACL,GAAG,SAAS,EACc,EAAA;AAC1B,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAClC,oBAAoB,EACpB,EAAE,wBAAwB,EAAE,IAAI,KAAK,IAAI,EAAE,EAC3C,SAAS,CACV;AAED,IAAA,QACEA,cAAA,CAAA,aAAA,CAACC,WAAe,EAAA,EAAA,GACV,SAAS,EAAA,YAAA,EACD,SAAS,GAAG,KAAK,GAAG,SAAS,EACzC,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,EAAE,EAAE,EAAE,EACN,UAAU,EAAE,QAAQ,EACpB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EAAA;AAEX,QAAA,CAAC,SAAS,KACTD,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,EAAE,KAAK,CAAS,CAC5D;AACD,QAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA;AACzC,YAAAA,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,0BAA0B,EAAA,CAAG;YAC9CA,cAAA,CAAA,aAAA,CAAC,MAAM,IACL,SAAS,EAAC,oDAAoD,EAC9D,IAAI,EAAC,WAAW,EAAA;AAEhB,gBAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAA,aAAA,EAAA,IAAA,EAAa,MAAM,EAAC,eAAe,GAAG,CACpC;YACTA,cAAA,CAAA,aAAA,CAAC,MAAM,IACL,SAAS,EAAC,oDAAoD,EAC9D,IAAI,EAAC,WAAW,EAAA;AAEhB,gBAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAA,aAAA,EAAA,IAAA,EAAa,MAAM,EAAC,cAAc,EAAA,CAAG,CACnC,CACH;QACP,WAAW,KACVA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,gCAAgC,EAAC,IAAI,EAAC,aAAa,EAAA;YACjEA,cAAA,CAAA,aAAA,CAAC,IAAI,yBAEH,SAAS,EAAC,6CAA6C,EACvD,MAAM,EAAC,8BAA8B,EAAA,CACrC;AACD,YAAA,WAAW,CACP,CACR,CACe;AAEtB;;;;"}
@@ -0,0 +1,4 @@
1
+ import "./index.css";
2
+ export type { NumberStepperElementProps, NumberStepperProps, NumberStepperSize, } from "./NumberStepper";
3
+ export { NumberStepper } from "./NumberStepper";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NumberStepper/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,77 @@
1
+ import "../button/btn.css";
2
+ import "./index.css";
3
+ import React, { type AriaAttributes, type ReactNode } from "react";
4
+ import type { Key, ListBoxItemProps, ListBoxSectionProps } from "react-aria-components";
5
+ export type ComboBoxSize = "md" | "lg";
6
+ export interface ComboBoxProps<T extends object = object> {
7
+ /** Whether the combo box allows the menu to be open when the collection is empty. */
8
+ allowsEmptyCollection?: boolean;
9
+ /** The children of the combo box (ComboBoxItem elements or a render function). */
10
+ children: ReactNode | ((item: T) => ReactNode);
11
+ /** The default uncontrolled value of the text input. */
12
+ defaultInputValue?: string;
13
+ /** The default list of items (uncontrolled dynamic collection). */
14
+ defaultItems?: Iterable<T>;
15
+ /**
16
+ * The default uncontrolled selected value(s).
17
+ * Pass a `Key[]` when `selectionMode` is `"multiple"`.
18
+ */
19
+ defaultValue?: Key | Key[] | null;
20
+ /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */
21
+ description?: string;
22
+ /** Disables the field and trigger button. */
23
+ disabled?: boolean;
24
+ /** Item keys that are disabled and cannot be selected or focused. */
25
+ disabledKeys?: Iterable<Key>;
26
+ /** Custom filter function for determining if an item should appear in the list. */
27
+ filter?: (textValue: string, inputValue: string) => boolean;
28
+ /** If `true`, the `label` text is rendered as an `aria-label` instead of a visible label element. */
29
+ hideLabel?: boolean;
30
+ /** The controlled value of the text input. */
31
+ inputValue?: string;
32
+ /** Whether the input is in an invalid state. */
33
+ invalid?: boolean;
34
+ /** The list of items (controlled dynamic collection). */
35
+ items?: Iterable<T>;
36
+ /** Accessible label for the field. */
37
+ label: string;
38
+ /** Controls when the listbox opens. */
39
+ menuTrigger?: "focus" | "input" | "manual";
40
+ /** Field name for form submission. */
41
+ name?: string;
42
+ /**
43
+ * Called when the selected value(s) change.
44
+ * Receives `Key[]` when `selectionMode` is `"multiple"`, otherwise `Key | null`.
45
+ */
46
+ onChange?: ((value: Key | null) => void) | ((value: Key[]) => void);
47
+ /** Called when the input text changes. */
48
+ onInputChange?: (value: string) => void;
49
+ /** Placeholder text for the input. */
50
+ placeholder?: string;
51
+ /** If `true`, allows the value to be read but not changed. */
52
+ readOnly?: boolean;
53
+ /** If `true`, appends an asterisk at the end of the label text. */
54
+ required?: boolean;
55
+ /** Controls whether one or multiple items can be selected. Defaults to `"single"`. */
56
+ selectionMode?: "single" | "multiple";
57
+ /** The size of the combo box. */
58
+ size?: ComboBoxSize;
59
+ /**
60
+ * The controlled selected value(s).
61
+ * Pass a `Key[]` when `selectionMode` is `"multiple"`.
62
+ */
63
+ value?: Key | Key[] | null;
64
+ }
65
+ export type ComboBoxElementProps<T extends object = object> = ComboBoxProps<T> & Omit<AriaAttributes, keyof ComboBoxProps<T>> & {
66
+ className?: string;
67
+ id?: string;
68
+ };
69
+ export declare function ComboBox<T extends object>({ allowsEmptyCollection, children, className, defaultInputValue, defaultItems, defaultValue, description, disabled, disabledKeys, filter, hideLabel, inputValue, invalid, items, label, menuTrigger, name, onChange, onInputChange, placeholder, readOnly, required, selectionMode, size, value, ...restProps }: ComboBoxElementProps<T>): React.JSX.Element;
70
+ export declare function ComboBoxItem<T extends object>(props: ListBoxItemProps<T>): React.JSX.Element;
71
+ interface ComboBoxSectionProps<T extends object> extends Omit<ListBoxSectionProps<T>, "children"> {
72
+ children: ReactNode;
73
+ title?: string;
74
+ }
75
+ export declare function ComboBoxSection<T extends object>({ children, title, ...props }: ComboBoxSectionProps<T>): React.JSX.Element;
76
+ export {};
77
+ //# sourceMappingURL=ComboBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../../../src/components/combo-box/ComboBox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import Icon from '../../utilities/Icon.js';
2
+ import classNames from 'classnames';
3
+ import React__default from 'react';
4
+ import { ComboBox as ComboBox$1, Label, Group, Input, Button, Popover, ListBox, Text, ListBoxItem, ListBoxSection, Header } from 'react-aria-components';
5
+
6
+ function ComboBox({ allowsEmptyCollection, children, className, defaultInputValue, defaultItems, defaultValue, description, disabled, disabledKeys, filter, hideLabel, inputValue, invalid, items, label, menuTrigger, name, onChange, onInputChange, placeholder, readOnly, required, selectionMode, size = "md", value, ...restProps }) {
7
+ const combinedClassName = classNames("tds-combo-box", { "tds-combo-box--lg": size === "lg" }, className);
8
+ return (
9
+ // React Aria's ComboBox uses conditional generic types (ComboBoxProps<T, M>) to
10
+ // differentiate value/defaultValue/onChange/selectionMode per selection mode. Since
11
+ // our interface intentionally abstracts this detail, we bridge with targeted assertions
12
+ // on the four props that carry the selection-mode variance.
13
+ React__default.createElement(ComboBox$1, { ...restProps, allowsEmptyCollection: allowsEmptyCollection, "aria-label": hideLabel ? label : undefined, className: combinedClassName, defaultFilter: filter, defaultInputValue: defaultInputValue, defaultItems: defaultItems, defaultValue: defaultValue, disabledKeys: disabledKeys, inputValue: inputValue, isDisabled: disabled, isInvalid: invalid, isReadOnly: readOnly, isRequired: required, items: items, menuTrigger: menuTrigger, name: name, onChange: onChange, onInputChange: onInputChange, selectionMode: selectionMode, value: value },
14
+ !hideLabel && React__default.createElement(Label, { className: "tds-combo-box-label" }, label),
15
+ React__default.createElement(Group, { className: "tds-combo-box-field" },
16
+ React__default.createElement(Input, { className: "tds-combo-box-input", placeholder: placeholder }),
17
+ React__default.createElement(Button, { className: classNames("tds-combo-box-button", menuTrigger !== "focus" && "tds-btn tds-btn--infield") },
18
+ React__default.createElement(Icon, { "aria-hidden": true, symbol: "general#down-caret" }))),
19
+ React__default.createElement(Popover, { className: "tds-combo-box-popover" },
20
+ React__default.createElement(ListBox, { className: "tds-combo-box-list" }, children)),
21
+ description && (React__default.createElement(Text, { className: "tds-combo-box-description", slot: "description" },
22
+ React__default.createElement(Icon, { "aria-hidden": true, className: "tds-combo-box-description-invalid-icon", symbol: "general#exclamation-triangle" }),
23
+ description))));
24
+ }
25
+ function ComboBoxItem(props) {
26
+ return (React__default.createElement(ListBoxItem, { ...props, className: classNames("tds-combo-box-list-item", props.className) }));
27
+ }
28
+ function ComboBoxSection({ children, title, ...props }) {
29
+ return (React__default.createElement(ListBoxSection, { ...props, className: classNames("tds-combo-box-list-section", props.className) },
30
+ title && (React__default.createElement(Header, { className: "tds-combo-box-section-header" }, title)),
31
+ children));
32
+ }
33
+
34
+ export { ComboBox, ComboBoxItem, ComboBoxSection };
35
+ //# sourceMappingURL=ComboBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboBox.js","sources":["../../../src/components/combo-box/ComboBox.tsx"],"sourcesContent":["import \"../button/btn.css\"\nimport \"./index.css\"\n\nimport Icon from \"@utilities/Icon\"\nimport classNames from \"classnames\"\nimport React, { type AriaAttributes, type ReactNode } from \"react\"\nimport type {\n Key,\n ListBoxItemProps,\n ListBoxSectionProps,\n} from \"react-aria-components\"\nimport {\n Button,\n ComboBox as AriaComboBox,\n Group,\n Header,\n Input,\n Label,\n ListBox,\n ListBoxItem,\n ListBoxSection,\n Popover,\n Text,\n} from \"react-aria-components\"\n\nexport type ComboBoxSize = \"md\" | \"lg\"\n\nexport interface ComboBoxProps<T extends object = object> {\n /** Whether the combo box allows the menu to be open when the collection is empty. */\n allowsEmptyCollection?: boolean\n /** The children of the combo box (ComboBoxItem elements or a render function). */\n children: ReactNode | ((item: T) => ReactNode)\n /** The default uncontrolled value of the text input. */\n defaultInputValue?: string\n /** The default list of items (uncontrolled dynamic collection). */\n defaultItems?: Iterable<T>\n /**\n * The default uncontrolled selected value(s).\n * Pass a `Key[]` when `selectionMode` is `\"multiple\"`.\n */\n defaultValue?: Key | Key[] | null\n /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */\n description?: string\n /** Disables the field and trigger button. */\n disabled?: boolean\n /** Item keys that are disabled and cannot be selected or focused. */\n disabledKeys?: Iterable<Key>\n /** Custom filter function for determining if an item should appear in the list. */\n filter?: (textValue: string, inputValue: string) => boolean\n /** If `true`, the `label` text is rendered as an `aria-label` instead of a visible label element. */\n hideLabel?: boolean\n /** The controlled value of the text input. */\n inputValue?: string\n /** Whether the input is in an invalid state. */\n invalid?: boolean\n /** The list of items (controlled dynamic collection). */\n items?: Iterable<T>\n /** Accessible label for the field. */\n label: string\n /** Controls when the listbox opens. */\n menuTrigger?: \"focus\" | \"input\" | \"manual\"\n /** Field name for form submission. */\n name?: string\n /**\n * Called when the selected value(s) change.\n * Receives `Key[]` when `selectionMode` is `\"multiple\"`, otherwise `Key | null`.\n */\n onChange?: ((value: Key | null) => void) | ((value: Key[]) => void)\n /** Called when the input text changes. */\n onInputChange?: (value: string) => void\n /** Placeholder text for the input. */\n placeholder?: string\n /** If `true`, allows the value to be read but not changed. */\n readOnly?: boolean\n /** If `true`, appends an asterisk at the end of the label text. */\n required?: boolean\n /** Controls whether one or multiple items can be selected. Defaults to `\"single\"`. */\n selectionMode?: \"single\" | \"multiple\"\n /** The size of the combo box. */\n size?: ComboBoxSize\n /**\n * The controlled selected value(s).\n * Pass a `Key[]` when `selectionMode` is `\"multiple\"`.\n */\n value?: Key | Key[] | null\n}\n\nexport type ComboBoxElementProps<T extends object = object> = ComboBoxProps<T> &\n Omit<AriaAttributes, keyof ComboBoxProps<T>> & {\n className?: string\n id?: string\n }\n\nexport function ComboBox<T extends object>({\n allowsEmptyCollection,\n children,\n className,\n defaultInputValue,\n defaultItems,\n defaultValue,\n description,\n disabled,\n disabledKeys,\n filter,\n hideLabel,\n inputValue,\n invalid,\n items,\n label,\n menuTrigger,\n name,\n onChange,\n onInputChange,\n placeholder,\n readOnly,\n required,\n selectionMode,\n size = \"md\",\n value,\n ...restProps\n}: ComboBoxElementProps<T>) {\n const combinedClassName = classNames(\n \"tds-combo-box\",\n { \"tds-combo-box--lg\": size === \"lg\" },\n className\n )\n\n return (\n // React Aria's ComboBox uses conditional generic types (ComboBoxProps<T, M>) to\n // differentiate value/defaultValue/onChange/selectionMode per selection mode. Since\n // our interface intentionally abstracts this detail, we bridge with targeted assertions\n // on the four props that carry the selection-mode variance.\n <AriaComboBox\n {...restProps}\n allowsEmptyCollection={allowsEmptyCollection}\n aria-label={hideLabel ? label : undefined}\n className={combinedClassName}\n defaultFilter={filter}\n defaultInputValue={defaultInputValue}\n defaultItems={defaultItems}\n defaultValue={defaultValue as unknown as Key | null}\n disabledKeys={disabledKeys}\n inputValue={inputValue}\n isDisabled={disabled}\n isInvalid={invalid}\n isReadOnly={readOnly}\n isRequired={required}\n items={items}\n menuTrigger={menuTrigger}\n name={name}\n onChange={onChange as unknown as (value: Key | null) => void}\n onInputChange={onInputChange}\n selectionMode={selectionMode as \"single\" | undefined}\n value={value as unknown as Key | null}\n >\n {!hideLabel && <Label className=\"tds-combo-box-label\">{label}</Label>}\n <Group className=\"tds-combo-box-field\">\n <Input className=\"tds-combo-box-input\" placeholder={placeholder} />\n <Button\n className={classNames(\n \"tds-combo-box-button\",\n menuTrigger !== \"focus\" && \"tds-btn tds-btn--infield\"\n )}\n >\n <Icon aria-hidden symbol=\"general#down-caret\" />\n </Button>\n </Group>\n <Popover className=\"tds-combo-box-popover\">\n <ListBox className=\"tds-combo-box-list\">{children}</ListBox>\n </Popover>\n {description && (\n <Text className=\"tds-combo-box-description\" slot=\"description\">\n <Icon\n aria-hidden\n className=\"tds-combo-box-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n />\n {description}\n </Text>\n )}\n </AriaComboBox>\n )\n}\n\nexport function ComboBoxItem<T extends object>(props: ListBoxItemProps<T>) {\n return (\n <ListBoxItem\n {...props}\n className={classNames(\"tds-combo-box-list-item\", props.className)}\n />\n )\n}\n\ninterface ComboBoxSectionProps<T extends object>\n extends Omit<ListBoxSectionProps<T>, \"children\"> {\n children: ReactNode\n title?: string\n}\n\nexport function ComboBoxSection<T extends object>({\n children,\n title,\n ...props\n}: ComboBoxSectionProps<T>) {\n return (\n <ListBoxSection\n {...props}\n className={classNames(\"tds-combo-box-list-section\", props.className)}\n >\n {title && (\n <Header className=\"tds-combo-box-section-header\">{title}</Header>\n )}\n {children}\n </ListBoxSection>\n )\n}\n"],"names":["React","AriaComboBox"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import "./index.css";
2
+ export type { ComboBoxElementProps, ComboBoxProps, ComboBoxSize, } from "./ComboBox";
3
+ export { ComboBox, ComboBoxItem, ComboBoxSection } from "./ComboBox";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/combo-box/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA"}
@@ -1,7 +1,9 @@
1
+ import "../button/btn.css";
1
2
  import "./index.css";
2
- import type { DateValue } from "@internationalized/date";
3
+ import { type DateValue } from "@internationalized/date";
3
4
  import React, { type AriaAttributes } from "react";
4
5
  export type DatePickerSize = "md" | "lg";
6
+ export type DatePickerDateValue = DateValue | string;
5
7
  export interface DatePickerProps {
6
8
  /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */
7
9
  description?: string;
@@ -17,10 +19,10 @@ export interface DatePickerProps {
17
19
  isDateUnavailable?: (date: DateValue) => boolean;
18
20
  /** Accessible label for the field. */
19
21
  label: string;
20
- /** Maximum selectable date. */
21
- max?: DateValue;
22
- /** Minimum selectable date. */
23
- min?: DateValue;
22
+ /** Maximum selectable date. Accepts a DateValue or ISO date string. */
23
+ max?: DatePickerDateValue;
24
+ /** Minimum selectable date. Accepts a DateValue or ISO date string. */
25
+ min?: DatePickerDateValue;
24
26
  /** Called when the selected date changes. */
25
27
  onChange?: (value: DateValue | null) => void;
26
28
  /** If `true`, allows the value to be read but not changed. */
@@ -29,8 +31,8 @@ export interface DatePickerProps {
29
31
  required?: boolean;
30
32
  /** The size of the date picker. */
31
33
  size?: DatePickerSize;
32
- /** The controlled value. */
33
- value?: DateValue | null;
34
+ /** The controlled value. Accepts a DateValue or ISO date string. */
35
+ value?: DatePickerDateValue | null;
34
36
  }
35
37
  export type DatePickerElementProps = DatePickerProps & Omit<AriaAttributes, keyof DatePickerProps> & {
36
38
  className?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,KAAK,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAmBlD,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAExC,MAAM,WAAW,eAAe;IAC9B,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;IACtE,qGAAqG;IACrG,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IAChD,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,+BAA+B;IAC/B,GAAG,CAAC,EAAE,SAAS,CAAA;IACf,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAClD,IAAI,CAAC,cAAc,EAAE,MAAM,eAAe,CAAC,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAEH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,WAAW,EACX,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,KAAK,EACL,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAW,EACX,KAAK,EACL,GAAG,SAAS,EACb,EAAE,sBAAsB,qBAyFxB;yBA1Ge,UAAU"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAA;AAC1B,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,yBAAyB,CAAA;AAGnE,OAAO,KAAK,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AAmBlD,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAExC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAA;AAepD,MAAM,WAAW,eAAe;IAC9B,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4FAA4F;IAC5F,cAAc,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;IACtE,qGAAqG;IACrG,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAA;IAChD,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,uEAAuE;IACvE,GAAG,CAAC,EAAE,mBAAmB,CAAA;IACzB,uEAAuE;IACvE,GAAG,CAAC,EAAE,mBAAmB,CAAA;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAA;IAC5C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB,oEAAoE;IACpE,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,MAAM,sBAAsB,GAAG,eAAe,GAClD,IAAI,CAAC,cAAc,EAAE,MAAM,eAAe,CAAC,GAAG;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAEH,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,WAAW,EACX,QAAQ,EACR,cAAc,EACd,SAAS,EACT,OAAO,EACP,iBAAiB,EACjB,KAAK,EACL,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAW,EACX,KAAK,EACL,GAAG,SAAS,EACb,EAAE,sBAAsB,qBA6FxB;yBA9Ge,UAAU"}
@@ -1,17 +1,31 @@
1
+ import { parseDate as $fae977aafc393c5c$export$6b862160d295c8e } from './../../ext/@internationalized/date/dist/string.js';
1
2
  import Icon from '../../utilities/Icon.js';
2
3
  import classNames from 'classnames';
3
4
  import React__default from 'react';
4
5
  import { DatePicker as DatePicker$1, Label, Group, DateInput, DateSegment, Button, Popover, Calendar, Heading, CalendarGrid, CalendarGridHeader, CalendarHeaderCell, CalendarGridBody, CalendarCell, Text } from 'react-aria-components';
5
6
 
7
+ function toCalendarDate(input) {
8
+ if (input === null)
9
+ return null;
10
+ if (input === undefined)
11
+ return undefined;
12
+ if (typeof input === "object" && "calendar" in input) {
13
+ return input;
14
+ }
15
+ return $fae977aafc393c5c$export$6b862160d295c8e(input);
16
+ }
6
17
  function DatePicker({ className, description, disabled, firstDayOfWeek, hideLabel, invalid, isDateUnavailable, label, max, min, onChange, readOnly, required, size = "md", value, ...restProps }) {
18
+ const convertedValue = toCalendarDate(value);
19
+ const convertedMin = toCalendarDate(min) ?? undefined;
20
+ const convertedMax = toCalendarDate(max) ?? undefined;
7
21
  const combinedClassName = classNames("tds-date-picker", { "tds-date-picker--lg": size === "lg" }, className);
8
- return (React__default.createElement(DatePicker$1, { ...restProps, "aria-label": hideLabel ? label : undefined, className: combinedClassName, isDateUnavailable: isDateUnavailable, isDisabled: disabled, isInvalid: invalid, isReadOnly: readOnly, isRequired: required, maxValue: max ?? undefined, minValue: min ?? undefined, onChange: onChange ?? undefined, value: value },
22
+ return (React__default.createElement(DatePicker$1, { ...restProps, "aria-label": hideLabel ? label : undefined, className: combinedClassName, isDateUnavailable: isDateUnavailable, isDisabled: disabled, isInvalid: invalid, isReadOnly: readOnly, isRequired: required, maxValue: convertedMax, minValue: convertedMin, onChange: onChange ?? undefined, value: convertedValue },
9
23
  !hideLabel && React__default.createElement(Label, { className: "tds-date-picker-label" }, label),
10
24
  React__default.createElement(Group, { className: "tds-date-picker-field" },
11
25
  React__default.createElement(DateInput, { className: "tds-date-picker-input" }, (segment) => (React__default.createElement(DateSegment, { className: segment.type === "literal"
12
26
  ? "tds-date-picker-segment-separator"
13
27
  : "tds-date-picker-segment", segment: segment }))),
14
- React__default.createElement(Button, { className: "tds-date-picker-button" },
28
+ React__default.createElement(Button, { className: "tds-btn tds-btn--infield tds-date-picker-button" },
15
29
  React__default.createElement(Icon, { "aria-hidden": true, symbol: "general#calendar" }))),
16
30
  React__default.createElement(Popover, { className: "tds-date-picker-popover" },
17
31
  React__default.createElement(Calendar, { className: "tds-date-picker-calendar", firstDayOfWeek: firstDayOfWeek },
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sources":["../../../src/components/date-picker/DatePicker.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport type { DateValue } from \"@internationalized/date\"\nimport Icon from \"@utilities/Icon\"\nimport classNames from \"classnames\"\nimport React, { type AriaAttributes } from \"react\"\nimport {\n Button,\n Calendar,\n CalendarCell,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHeader,\n CalendarHeaderCell,\n DateInput,\n DatePicker as AriaDatePicker,\n DateSegment,\n Group,\n Heading,\n Label,\n Popover,\n Text,\n} from \"react-aria-components\"\n\nexport type DatePickerSize = \"md\" | \"lg\"\n\nexport interface DatePickerProps {\n /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */\n description?: string\n /** Disables the input and calendar button. */\n disabled?: boolean\n /** Sets the first day of the week in the calendar. Defaults to locale-appropriate value. */\n firstDayOfWeek?: \"fri\" | \"mon\" | \"sat\" | \"sun\" | \"thu\" | \"tue\" | \"wed\"\n /** If `true`, the `label` text is rendered as an `aria-label` instead of a visible label element. */\n hideLabel?: boolean\n /** Whether the input is in an invalid state. */\n invalid?: boolean\n /** Callback that returns `true` for dates that should be visible but not selectable. */\n isDateUnavailable?: (date: DateValue) => boolean\n /** Accessible label for the field. */\n label: string\n /** Maximum selectable date. */\n max?: DateValue\n /** Minimum selectable date. */\n min?: DateValue\n /** Called when the selected date changes. */\n onChange?: (value: DateValue | null) => void\n /** If `true`, allows the value to be read but not changed. */\n readOnly?: boolean\n /** If `true`, appends an asterisk at the end of the label text. */\n required?: boolean\n /** The size of the date picker. */\n size?: DatePickerSize\n /** The controlled value. */\n value?: DateValue | null\n}\n\nexport type DatePickerElementProps = DatePickerProps &\n Omit<AriaAttributes, keyof DatePickerProps> & {\n className?: string\n id?: string\n }\n\nexport function DatePicker({\n className,\n description,\n disabled,\n firstDayOfWeek,\n hideLabel,\n invalid,\n isDateUnavailable,\n label,\n max,\n min,\n onChange,\n readOnly,\n required,\n size = \"md\",\n value,\n ...restProps\n}: DatePickerElementProps) {\n const combinedClassName = classNames(\n \"tds-date-picker\",\n { \"tds-date-picker--lg\": size === \"lg\" },\n className\n )\n\n return (\n <AriaDatePicker\n {...restProps}\n aria-label={hideLabel ? label : undefined}\n className={combinedClassName}\n isDateUnavailable={isDateUnavailable}\n isDisabled={disabled}\n isInvalid={invalid}\n isReadOnly={readOnly}\n isRequired={required}\n maxValue={max ?? undefined}\n minValue={min ?? undefined}\n onChange={onChange ?? undefined}\n value={value}\n >\n {!hideLabel && <Label className=\"tds-date-picker-label\">{label}</Label>}\n <Group className=\"tds-date-picker-field\">\n <DateInput className=\"tds-date-picker-input\">\n {(segment) => (\n <DateSegment\n className={\n segment.type === \"literal\"\n ? \"tds-date-picker-segment-separator\"\n : \"tds-date-picker-segment\"\n }\n segment={segment}\n />\n )}\n </DateInput>\n <Button className=\"tds-date-picker-button\">\n <Icon aria-hidden symbol=\"general#calendar\" />\n </Button>\n </Group>\n <Popover className=\"tds-date-picker-popover\">\n <Calendar\n className=\"tds-date-picker-calendar\"\n firstDayOfWeek={firstDayOfWeek}\n >\n <header className=\"tds-date-picker-calendar-header\">\n <Button className=\"tds-date-picker-calendar-nav\" slot=\"previous\">\n <Icon aria-hidden symbol=\"general#left-chevron\" />\n </Button>\n <Heading className=\"tds-date-picker-calendar-title\" />\n <Button className=\"tds-date-picker-calendar-nav\" slot=\"next\">\n <Icon aria-hidden symbol=\"general#right-chevron\" />\n </Button>\n </header>\n <CalendarGrid className=\"tds-date-picker-calendar-grid\">\n <CalendarGridHeader className=\"tds-date-picker-calendar-grid-header\">\n {(day) => (\n <CalendarHeaderCell className=\"tds-date-picker-calendar-header-cell\">\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody className=\"tds-date-picker-calendar-grid-body\">\n {(date) => (\n <CalendarCell\n className=\"tds-date-picker-calendar-cell\"\n date={date}\n />\n )}\n </CalendarGridBody>\n </CalendarGrid>\n </Calendar>\n </Popover>\n {description && (\n <Text\n elementType=\"p\"\n className=\"tds-date-picker-description\"\n slot=\"description\"\n >\n <Icon\n aria-hidden\n className=\"tds-date-picker-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n />\n {description}\n </Text>\n )}\n </AriaDatePicker>\n )\n}\n\nDatePicker.displayName = \"DatePicker\"\n"],"names":["React","AriaDatePicker"],"mappings":"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"}
1
+ {"version":3,"file":"DatePicker.js","sources":["../../../src/components/date-picker/DatePicker.tsx"],"sourcesContent":["import \"../button/btn.css\"\nimport \"./index.css\"\n\nimport { type DateValue, parseDate } from \"@internationalized/date\"\nimport Icon from \"@utilities/Icon\"\nimport classNames from \"classnames\"\nimport React, { type AriaAttributes } from \"react\"\nimport {\n Button,\n Calendar,\n CalendarCell,\n CalendarGrid,\n CalendarGridBody,\n CalendarGridHeader,\n CalendarHeaderCell,\n DateInput,\n DatePicker as AriaDatePicker,\n DateSegment,\n Group,\n Heading,\n Label,\n Popover,\n Text,\n} from \"react-aria-components\"\n\nexport type DatePickerSize = \"md\" | \"lg\"\n\nexport type DatePickerDateValue = DateValue | string\n\nfunction toCalendarDate(\n input: DatePickerDateValue | null | undefined\n): DateValue | null | undefined {\n if (input === null) return null\n if (input === undefined) return undefined\n\n if (typeof input === \"object\" && \"calendar\" in input) {\n return input\n }\n\n return parseDate(input)\n}\n\nexport interface DatePickerProps {\n /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */\n description?: string\n /** Disables the input and calendar button. */\n disabled?: boolean\n /** Sets the first day of the week in the calendar. Defaults to locale-appropriate value. */\n firstDayOfWeek?: \"fri\" | \"mon\" | \"sat\" | \"sun\" | \"thu\" | \"tue\" | \"wed\"\n /** If `true`, the `label` text is rendered as an `aria-label` instead of a visible label element. */\n hideLabel?: boolean\n /** Whether the input is in an invalid state. */\n invalid?: boolean\n /** Callback that returns `true` for dates that should be visible but not selectable. */\n isDateUnavailable?: (date: DateValue) => boolean\n /** Accessible label for the field. */\n label: string\n /** Maximum selectable date. Accepts a DateValue or ISO date string. */\n max?: DatePickerDateValue\n /** Minimum selectable date. Accepts a DateValue or ISO date string. */\n min?: DatePickerDateValue\n /** Called when the selected date changes. */\n onChange?: (value: DateValue | null) => void\n /** If `true`, allows the value to be read but not changed. */\n readOnly?: boolean\n /** If `true`, appends an asterisk at the end of the label text. */\n required?: boolean\n /** The size of the date picker. */\n size?: DatePickerSize\n /** The controlled value. Accepts a DateValue or ISO date string. */\n value?: DatePickerDateValue | null\n}\n\nexport type DatePickerElementProps = DatePickerProps &\n Omit<AriaAttributes, keyof DatePickerProps> & {\n className?: string\n id?: string\n }\n\nexport function DatePicker({\n className,\n description,\n disabled,\n firstDayOfWeek,\n hideLabel,\n invalid,\n isDateUnavailable,\n label,\n max,\n min,\n onChange,\n readOnly,\n required,\n size = \"md\",\n value,\n ...restProps\n}: DatePickerElementProps) {\n const convertedValue = toCalendarDate(value)\n const convertedMin = toCalendarDate(min) ?? undefined\n const convertedMax = toCalendarDate(max) ?? undefined\n\n const combinedClassName = classNames(\n \"tds-date-picker\",\n { \"tds-date-picker--lg\": size === \"lg\" },\n className\n )\n\n return (\n <AriaDatePicker\n {...restProps}\n aria-label={hideLabel ? label : undefined}\n className={combinedClassName}\n isDateUnavailable={isDateUnavailable}\n isDisabled={disabled}\n isInvalid={invalid}\n isReadOnly={readOnly}\n isRequired={required}\n maxValue={convertedMax}\n minValue={convertedMin}\n onChange={onChange ?? undefined}\n value={convertedValue}\n >\n {!hideLabel && <Label className=\"tds-date-picker-label\">{label}</Label>}\n <Group className=\"tds-date-picker-field\">\n <DateInput className=\"tds-date-picker-input\">\n {(segment) => (\n <DateSegment\n className={\n segment.type === \"literal\"\n ? \"tds-date-picker-segment-separator\"\n : \"tds-date-picker-segment\"\n }\n segment={segment}\n />\n )}\n </DateInput>\n <Button className=\"tds-btn tds-btn--infield tds-date-picker-button\">\n <Icon aria-hidden symbol=\"general#calendar\" />\n </Button>\n </Group>\n <Popover className=\"tds-date-picker-popover\">\n <Calendar\n className=\"tds-date-picker-calendar\"\n firstDayOfWeek={firstDayOfWeek}\n >\n <header className=\"tds-date-picker-calendar-header\">\n <Button className=\"tds-date-picker-calendar-nav\" slot=\"previous\">\n <Icon aria-hidden symbol=\"general#left-chevron\" />\n </Button>\n <Heading className=\"tds-date-picker-calendar-title\" />\n <Button className=\"tds-date-picker-calendar-nav\" slot=\"next\">\n <Icon aria-hidden symbol=\"general#right-chevron\" />\n </Button>\n </header>\n <CalendarGrid className=\"tds-date-picker-calendar-grid\">\n <CalendarGridHeader className=\"tds-date-picker-calendar-grid-header\">\n {(day) => (\n <CalendarHeaderCell className=\"tds-date-picker-calendar-header-cell\">\n {day}\n </CalendarHeaderCell>\n )}\n </CalendarGridHeader>\n <CalendarGridBody className=\"tds-date-picker-calendar-grid-body\">\n {(date) => (\n <CalendarCell\n className=\"tds-date-picker-calendar-cell\"\n date={date}\n />\n )}\n </CalendarGridBody>\n </CalendarGrid>\n </Calendar>\n </Popover>\n {description && (\n <Text\n elementType=\"p\"\n className=\"tds-date-picker-description\"\n slot=\"description\"\n >\n <Icon\n aria-hidden\n className=\"tds-date-picker-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n />\n {description}\n </Text>\n )}\n </AriaDatePicker>\n )\n}\n\nDatePicker.displayName = \"DatePicker\"\n"],"names":["parseDate","React","AriaDatePicker"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import "./index.css";
2
- export type { DatePickerElementProps, DatePickerProps, DatePickerSize, } from "./DatePicker";
2
+ export type { DatePickerDateValue, DatePickerElementProps, DatePickerProps, DatePickerSize, } from "./DatePicker";
3
3
  export { DatePicker } from "./DatePicker";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/date-picker/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
@@ -1,6 +1,6 @@
1
- import '../../tapestry-wc/dist/components/p-D8qDXp6N.js';
2
- import { defineCustomElement } from '../../tapestry-wc/dist/components/tds-page-header.js';
3
- import { defineCustomElement as defineCustomElement$1 } from '../../tapestry-wc/dist/components/tds-page-header-nav.js';
1
+ import '../../packages/tapestry-wc/dist/components/p-D8qDXp6N.js';
2
+ import { defineCustomElement } from '../../packages/tapestry-wc/dist/components/tds-page-header.js';
3
+ import { defineCustomElement as defineCustomElement$1 } from '../../packages/tapestry-wc/dist/components/tds-page-header-nav.js';
4
4
 
5
5
  defineCustomElement();
6
6
  defineCustomElement$1();
@@ -1,8 +1,8 @@
1
- import '../../tapestry-wc/dist/components/p-D8qDXp6N.js';
2
- import { defineCustomElement } from '../../tapestry-wc/dist/components/tds-sidenav.js';
3
- import { defineCustomElement as defineCustomElement$1 } from '../../tapestry-wc/dist/components/tds-sidenav-item.js';
4
- import { defineCustomElement as defineCustomElement$3 } from '../../tapestry-wc/dist/components/tds-sidenav-responsive-header.js';
5
- import { defineCustomElement as defineCustomElement$2 } from '../../tapestry-wc/dist/components/tds-sidenav-section.js';
1
+ import '../../packages/tapestry-wc/dist/components/p-D8qDXp6N.js';
2
+ import { defineCustomElement } from '../../packages/tapestry-wc/dist/components/tds-sidenav.js';
3
+ import { defineCustomElement as defineCustomElement$1 } from '../../packages/tapestry-wc/dist/components/tds-sidenav-item.js';
4
+ import { defineCustomElement as defineCustomElement$3 } from '../../packages/tapestry-wc/dist/components/tds-sidenav-responsive-header.js';
5
+ import { defineCustomElement as defineCustomElement$2 } from '../../packages/tapestry-wc/dist/components/tds-sidenav-section.js';
6
6
 
7
7
  defineCustomElement();
8
8
  defineCustomElement$1();
@@ -0,0 +1,47 @@
1
+ import "./index.css";
2
+ import type { CalendarDateTime, Time, ZonedDateTime } from "@internationalized/date";
3
+ import React, { type AriaAttributes } from "react";
4
+ export type TimeFieldSize = "md" | "lg";
5
+ export type TimeFieldValue = CalendarDateTime | Time | ZonedDateTime;
6
+ export interface TimeFieldProps {
7
+ /** The default uncontrolled value (e.g. `new Time(9, 30)` or `new CalendarDateTime(2025, 1, 1, 9, 30)`). */
8
+ defaultValue?: TimeFieldValue | null;
9
+ /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */
10
+ description?: string;
11
+ /** Disables the field. */
12
+ disabled?: boolean;
13
+ /** If `true`, always shows leading zeros in the hour field. */
14
+ forceLeadingZeros?: boolean;
15
+ /** If `true`, renders the label visually hidden. */
16
+ hideLabel?: boolean;
17
+ /** If `true`, hides the time zone abbreviation for ZonedDateTime values. */
18
+ hideTimeZone?: boolean;
19
+ /** Whether to display in 12 or 24 hour format. By default, determined by locale. */
20
+ hourCycle?: 12 | 24;
21
+ /** If `true`, applies error styling to the field and description. */
22
+ invalid?: boolean;
23
+ /** Accessible label for the field. */
24
+ label: string;
25
+ /** The maximum allowed time (e.g. `new Time(17, 0)`). */
26
+ max?: TimeFieldValue;
27
+ /** The minimum allowed time (e.g. `new Time(9, 0)`). */
28
+ min?: TimeFieldValue;
29
+ /** Field name for form submission. */
30
+ name?: string;
31
+ /** Called when the value changes. */
32
+ onChange?: (value: TimeFieldValue | null) => void;
33
+ /** Allows the value to be read but not changed. */
34
+ readOnly?: boolean;
35
+ /** If `true`, appends an asterisk after the label text. */
36
+ required?: boolean;
37
+ /** The size of the time field. */
38
+ size?: TimeFieldSize;
39
+ /** The controlled value (e.g. `new Time(9, 30)` or `new CalendarDateTime(2025, 1, 1, 9, 30)`). */
40
+ value?: TimeFieldValue | null;
41
+ }
42
+ export type TimeFieldElementProps = TimeFieldProps & Omit<AriaAttributes, keyof TimeFieldProps> & {
43
+ className?: string;
44
+ id?: string;
45
+ };
46
+ export declare function TimeField({ className, defaultValue, description, disabled, forceLeadingZeros, hideLabel, hideTimeZone, hourCycle, invalid, label, max, min, name, onChange, readOnly, required, size, value, ...restProps }: TimeFieldElementProps): React.JSX.Element;
47
+ //# sourceMappingURL=TimeField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeField.d.ts","sourceRoot":"","sources":["../../../src/components/time-field/TimeField.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,KAAK,EACV,gBAAgB,EAChB,IAAI,EACJ,aAAa,EACd,MAAM,yBAAyB,CAAA;AAGhC,OAAO,KAAK,EAAE,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAA;AASlD,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAA;AAEvC,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,IAAI,GAAG,aAAa,CAAA;AAEpE,MAAM,WAAW,cAAc;IAC7B,4GAA4G;IAC5G,YAAY,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACpC,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oFAAoF;IACpF,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAA;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,wDAAwD;IACxD,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAA;IACjD,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,kGAAkG;IAClG,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAChD,IAAI,CAAC,cAAc,EAAE,MAAM,cAAc,CAAC,GAAG;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAEH,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,OAAO,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAW,EACX,KAAK,EACL,GAAG,SAAS,EACb,EAAE,qBAAqB,qBAwDvB"}
@@ -0,0 +1,19 @@
1
+ import Icon from '../../utilities/Icon.js';
2
+ import classNames from 'classnames';
3
+ import React__default from 'react';
4
+ import { TimeField as TimeField$1, Label, DateInput, DateSegment, Text } from 'react-aria-components';
5
+
6
+ function TimeField({ className, defaultValue, description, disabled, forceLeadingZeros, hideLabel, hideTimeZone, hourCycle, invalid, label, max, min, name, onChange, readOnly, required, size = "md", value, ...restProps }) {
7
+ const combinedClassName = classNames("tds-time-field", { "tds-time-field--lg": size === "lg" }, className);
8
+ return (React__default.createElement(TimeField$1, { ...restProps, "aria-label": hideLabel ? label : undefined, className: combinedClassName, defaultValue: defaultValue, granularity: "minute", hideTimeZone: hideTimeZone, hourCycle: hourCycle, isDisabled: disabled, isInvalid: invalid, isReadOnly: readOnly, isRequired: required, maxValue: max ?? undefined, minValue: min ?? undefined, name: name, onChange: onChange ?? undefined, shouldForceLeadingZeros: forceLeadingZeros, value: value },
9
+ !hideLabel && React__default.createElement(Label, { className: "tds-time-field-label" }, label),
10
+ React__default.createElement(DateInput, { className: "tds-time-field-input" }, (segment) => (React__default.createElement(DateSegment, { className: segment.type === "literal"
11
+ ? "tds-time-field-segment-separator"
12
+ : "tds-time-field-segment", segment: segment }))),
13
+ description && (React__default.createElement(Text, { elementType: "p", className: "tds-time-field-description", slot: "description" },
14
+ React__default.createElement(Icon, { "aria-hidden": true, className: "tds-time-field-description-invalid-icon", symbol: "general#exclamation-triangle" }),
15
+ description))));
16
+ }
17
+
18
+ export { TimeField };
19
+ //# sourceMappingURL=TimeField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeField.js","sources":["../../../src/components/time-field/TimeField.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport type {\n CalendarDateTime,\n Time,\n ZonedDateTime,\n} from \"@internationalized/date\"\nimport Icon from \"@utilities/Icon\"\nimport classNames from \"classnames\"\nimport React, { type AriaAttributes } from \"react\"\nimport {\n DateInput,\n DateSegment,\n Label,\n Text,\n TimeField as AriaTimeField,\n} from \"react-aria-components\"\n\nexport type TimeFieldSize = \"md\" | \"lg\"\n\nexport type TimeFieldValue = CalendarDateTime | Time | ZonedDateTime\n\nexport interface TimeFieldProps {\n /** The default uncontrolled value (e.g. `new Time(9, 30)` or `new CalendarDateTime(2025, 1, 1, 9, 30)`). */\n defaultValue?: TimeFieldValue | null\n /** Helper text displayed below the component. Styled as error text when `invalid` is `true`. */\n description?: string\n /** Disables the field. */\n disabled?: boolean\n /** If `true`, always shows leading zeros in the hour field. */\n forceLeadingZeros?: boolean\n /** If `true`, renders the label visually hidden. */\n hideLabel?: boolean\n /** If `true`, hides the time zone abbreviation for ZonedDateTime values. */\n hideTimeZone?: boolean\n /** Whether to display in 12 or 24 hour format. By default, determined by locale. */\n hourCycle?: 12 | 24\n /** If `true`, applies error styling to the field and description. */\n invalid?: boolean\n /** Accessible label for the field. */\n label: string\n /** The maximum allowed time (e.g. `new Time(17, 0)`). */\n max?: TimeFieldValue\n /** The minimum allowed time (e.g. `new Time(9, 0)`). */\n min?: TimeFieldValue\n /** Field name for form submission. */\n name?: string\n /** Called when the value changes. */\n onChange?: (value: TimeFieldValue | null) => void\n /** Allows the value to be read but not changed. */\n readOnly?: boolean\n /** If `true`, appends an asterisk after the label text. */\n required?: boolean\n /** The size of the time field. */\n size?: TimeFieldSize\n /** The controlled value (e.g. `new Time(9, 30)` or `new CalendarDateTime(2025, 1, 1, 9, 30)`). */\n value?: TimeFieldValue | null\n}\n\nexport type TimeFieldElementProps = TimeFieldProps &\n Omit<AriaAttributes, keyof TimeFieldProps> & {\n className?: string\n id?: string\n }\n\nexport function TimeField({\n className,\n defaultValue,\n description,\n disabled,\n forceLeadingZeros,\n hideLabel,\n hideTimeZone,\n hourCycle,\n invalid,\n label,\n max,\n min,\n name,\n onChange,\n readOnly,\n required,\n size = \"md\",\n value,\n ...restProps\n}: TimeFieldElementProps) {\n const combinedClassName = classNames(\n \"tds-time-field\",\n { \"tds-time-field--lg\": size === \"lg\" },\n className\n )\n\n return (\n <AriaTimeField\n {...restProps}\n aria-label={hideLabel ? label : undefined}\n className={combinedClassName}\n defaultValue={defaultValue}\n granularity=\"minute\"\n hideTimeZone={hideTimeZone}\n hourCycle={hourCycle}\n isDisabled={disabled}\n isInvalid={invalid}\n isReadOnly={readOnly}\n isRequired={required}\n maxValue={max ?? undefined}\n minValue={min ?? undefined}\n name={name}\n onChange={onChange ?? undefined}\n shouldForceLeadingZeros={forceLeadingZeros}\n value={value}\n >\n {!hideLabel && <Label className=\"tds-time-field-label\">{label}</Label>}\n <DateInput className=\"tds-time-field-input\">\n {(segment) => (\n <DateSegment\n className={\n segment.type === \"literal\"\n ? \"tds-time-field-segment-separator\"\n : \"tds-time-field-segment\"\n }\n segment={segment}\n />\n )}\n </DateInput>\n {description && (\n <Text\n elementType=\"p\"\n className=\"tds-time-field-description\"\n slot=\"description\"\n >\n <Icon\n aria-hidden\n className=\"tds-time-field-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n />\n {description}\n </Text>\n )}\n </AriaTimeField>\n )\n}\n"],"names":["React","AriaTimeField"],"mappings":";;;;;AAiEM,SAAU,SAAS,CAAC,EACxB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,OAAO,EACP,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,IAAI,GAAG,IAAI,EACX,KAAK,EACL,GAAG,SAAS,EACU,EAAA;AACtB,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAClC,gBAAgB,EAChB,EAAE,oBAAoB,EAAE,IAAI,KAAK,IAAI,EAAE,EACvC,SAAS,CACV;AAED,IAAA,QACEA,cAAA,CAAA,aAAA,CAACC,WAAa,EAAA,EAAA,GACR,SAAS,gBACD,SAAS,GAAG,KAAK,GAAG,SAAS,EACzC,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAC,QAAQ,EACpB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,QAAQ,EACpB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,QAAQ,EACpB,UAAU,EAAE,QAAQ,EACpB,QAAQ,EAAE,GAAG,IAAI,SAAS,EAC1B,QAAQ,EAAE,GAAG,IAAI,SAAS,EAC1B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,uBAAuB,EAAE,iBAAiB,EAC1C,KAAK,EAAE,KAAK,EAAA;QAEX,CAAC,SAAS,IAAID,cAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,EAAE,KAAK,CAAS;QACtEA,cAAA,CAAA,aAAA,CAAC,SAAS,IAAC,SAAS,EAAC,sBAAsB,EAAA,EACxC,CAAC,OAAO,MACPA,cAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EACV,SAAS,EACP,OAAO,CAAC,IAAI,KAAK;AACf,kBAAE;kBACA,wBAAwB,EAE9B,OAAO,EAAE,OAAO,EAAA,CAChB,CACH,CACS;AACX,QAAA,WAAW,KACVA,cAAA,CAAA,aAAA,CAAC,IAAI,IACH,WAAW,EAAC,GAAG,EACf,SAAS,EAAC,4BAA4B,EACtC,IAAI,EAAC,aAAa,EAAA;YAElBA,cAAA,CAAA,aAAA,CAAC,IAAI,yBAEH,SAAS,EAAC,yCAAyC,EACnD,MAAM,EAAC,8BAA8B,EAAA,CACrC;AACD,YAAA,WAAW,CACP,CACR,CACa;AAEpB;;;;"}
@@ -0,0 +1,4 @@
1
+ import "./index.css";
2
+ export type { TimeFieldElementProps, TimeFieldProps, TimeFieldSize, } from "./TimeField";
3
+ export { TimeField } from "./TimeField";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/time-field/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,qBAAqB,EACrB,cAAc,EACd,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"}