@orianatech/pire 0.2.0

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 (154) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +7 -0
  3. package/README.md +114 -0
  4. package/dist/components/core/Avatar.d.cts +11 -0
  5. package/dist/components/core/Avatar.d.ts +12 -0
  6. package/dist/components/core/Avatar.d.ts.map +1 -0
  7. package/dist/components/core/Badge.d.cts +9 -0
  8. package/dist/components/core/Badge.d.ts +10 -0
  9. package/dist/components/core/Badge.d.ts.map +1 -0
  10. package/dist/components/core/Button.d.cts +17 -0
  11. package/dist/components/core/Button.d.ts +18 -0
  12. package/dist/components/core/Button.d.ts.map +1 -0
  13. package/dist/components/core/Card.d.cts +13 -0
  14. package/dist/components/core/Card.d.ts +14 -0
  15. package/dist/components/core/Card.d.ts.map +1 -0
  16. package/dist/components/core/Icon.d.cts +22 -0
  17. package/dist/components/core/Icon.d.ts +23 -0
  18. package/dist/components/core/Icon.d.ts.map +1 -0
  19. package/dist/components/core/IconButton.d.cts +15 -0
  20. package/dist/components/core/IconButton.d.ts +16 -0
  21. package/dist/components/core/IconButton.d.ts.map +1 -0
  22. package/dist/components/core/SegmentedControl.d.cts +23 -0
  23. package/dist/components/core/SegmentedControl.d.ts +24 -0
  24. package/dist/components/core/SegmentedControl.d.ts.map +1 -0
  25. package/dist/components/core/Tag.d.cts +8 -0
  26. package/dist/components/core/Tag.d.ts +9 -0
  27. package/dist/components/core/Tag.d.ts.map +1 -0
  28. package/dist/components/data/DataTable.d.cts +40 -0
  29. package/dist/components/data/DataTable.d.ts +41 -0
  30. package/dist/components/data/DataTable.d.ts.map +1 -0
  31. package/dist/components/data/DescriptionList.d.cts +21 -0
  32. package/dist/components/data/DescriptionList.d.ts +22 -0
  33. package/dist/components/data/DescriptionList.d.ts.map +1 -0
  34. package/dist/components/data/FilterBar.d.cts +19 -0
  35. package/dist/components/data/FilterBar.d.ts +20 -0
  36. package/dist/components/data/FilterBar.d.ts.map +1 -0
  37. package/dist/components/data/KpiTile.d.cts +23 -0
  38. package/dist/components/data/KpiTile.d.ts +24 -0
  39. package/dist/components/data/KpiTile.d.ts.map +1 -0
  40. package/dist/components/data/LinkList.d.cts +18 -0
  41. package/dist/components/data/LinkList.d.ts +19 -0
  42. package/dist/components/data/LinkList.d.ts.map +1 -0
  43. package/dist/components/data/ObjectHeader.d.cts +21 -0
  44. package/dist/components/data/ObjectHeader.d.ts +22 -0
  45. package/dist/components/data/ObjectHeader.d.ts.map +1 -0
  46. package/dist/components/data/Timeline.d.cts +16 -0
  47. package/dist/components/data/Timeline.d.ts +17 -0
  48. package/dist/components/data/Timeline.d.ts.map +1 -0
  49. package/dist/components/feedback/Dialog.d.cts +21 -0
  50. package/dist/components/feedback/Dialog.d.ts +22 -0
  51. package/dist/components/feedback/Dialog.d.ts.map +1 -0
  52. package/dist/components/feedback/InlineMessage.d.cts +13 -0
  53. package/dist/components/feedback/InlineMessage.d.ts +14 -0
  54. package/dist/components/feedback/InlineMessage.d.ts.map +1 -0
  55. package/dist/components/feedback/ProgressBar.d.cts +16 -0
  56. package/dist/components/feedback/ProgressBar.d.ts +17 -0
  57. package/dist/components/feedback/ProgressBar.d.ts.map +1 -0
  58. package/dist/components/feedback/Toast.d.cts +28 -0
  59. package/dist/components/feedback/Toast.d.ts +29 -0
  60. package/dist/components/feedback/Toast.d.ts.map +1 -0
  61. package/dist/components/feedback/Tooltip.d.cts +11 -0
  62. package/dist/components/feedback/Tooltip.d.ts +12 -0
  63. package/dist/components/feedback/Tooltip.d.ts.map +1 -0
  64. package/dist/components/forms/Checkbox.d.cts +9 -0
  65. package/dist/components/forms/Checkbox.d.ts +10 -0
  66. package/dist/components/forms/Checkbox.d.ts.map +1 -0
  67. package/dist/components/forms/ComboBox.d.cts +45 -0
  68. package/dist/components/forms/ComboBox.d.ts +46 -0
  69. package/dist/components/forms/ComboBox.d.ts.map +1 -0
  70. package/dist/components/forms/DatePicker.d.cts +27 -0
  71. package/dist/components/forms/DatePicker.d.ts +28 -0
  72. package/dist/components/forms/DatePicker.d.ts.map +1 -0
  73. package/dist/components/forms/FormField.d.cts +17 -0
  74. package/dist/components/forms/FormField.d.ts +18 -0
  75. package/dist/components/forms/FormField.d.ts.map +1 -0
  76. package/dist/components/forms/Input.d.cts +33 -0
  77. package/dist/components/forms/Input.d.ts +34 -0
  78. package/dist/components/forms/Input.d.ts.map +1 -0
  79. package/dist/components/forms/NumberField.d.cts +33 -0
  80. package/dist/components/forms/NumberField.d.ts +34 -0
  81. package/dist/components/forms/NumberField.d.ts.map +1 -0
  82. package/dist/components/forms/Radio.d.cts +18 -0
  83. package/dist/components/forms/Radio.d.ts +19 -0
  84. package/dist/components/forms/Radio.d.ts.map +1 -0
  85. package/dist/components/forms/Select.d.cts +28 -0
  86. package/dist/components/forms/Select.d.ts +29 -0
  87. package/dist/components/forms/Select.d.ts.map +1 -0
  88. package/dist/components/forms/Switch.d.cts +9 -0
  89. package/dist/components/forms/Switch.d.ts +10 -0
  90. package/dist/components/forms/Switch.d.ts.map +1 -0
  91. package/dist/components/forms/ValueHelpField.d.cts +31 -0
  92. package/dist/components/forms/ValueHelpField.d.ts +32 -0
  93. package/dist/components/forms/ValueHelpField.d.ts.map +1 -0
  94. package/dist/components/layout/FooterBar.d.cts +10 -0
  95. package/dist/components/layout/FooterBar.d.ts +11 -0
  96. package/dist/components/layout/FooterBar.d.ts.map +1 -0
  97. package/dist/components/layout/PageHeader.d.cts +10 -0
  98. package/dist/components/layout/PageHeader.d.ts +11 -0
  99. package/dist/components/layout/PageHeader.d.ts.map +1 -0
  100. package/dist/components/layout/SectionHeader.d.cts +11 -0
  101. package/dist/components/layout/SectionHeader.d.ts +12 -0
  102. package/dist/components/layout/SectionHeader.d.ts.map +1 -0
  103. package/dist/components/layout/SelectionBar.d.cts +14 -0
  104. package/dist/components/layout/SelectionBar.d.ts +15 -0
  105. package/dist/components/layout/SelectionBar.d.ts.map +1 -0
  106. package/dist/components/navigation/Breadcrumb.d.cts +14 -0
  107. package/dist/components/navigation/Breadcrumb.d.ts +15 -0
  108. package/dist/components/navigation/Breadcrumb.d.ts.map +1 -0
  109. package/dist/components/navigation/Pagination.d.cts +13 -0
  110. package/dist/components/navigation/Pagination.d.ts +14 -0
  111. package/dist/components/navigation/Pagination.d.ts.map +1 -0
  112. package/dist/components/navigation/ShellBar.d.cts +17 -0
  113. package/dist/components/navigation/ShellBar.d.ts +18 -0
  114. package/dist/components/navigation/ShellBar.d.ts.map +1 -0
  115. package/dist/components/navigation/SideNav.d.cts +22 -0
  116. package/dist/components/navigation/SideNav.d.ts +23 -0
  117. package/dist/components/navigation/SideNav.d.ts.map +1 -0
  118. package/dist/components/navigation/Tabs.d.cts +23 -0
  119. package/dist/components/navigation/Tabs.d.ts +24 -0
  120. package/dist/components/navigation/Tabs.d.ts.map +1 -0
  121. package/dist/components/patterns/ConfirmDialog.d.cts +21 -0
  122. package/dist/components/patterns/ConfirmDialog.d.ts +22 -0
  123. package/dist/components/patterns/ConfirmDialog.d.ts.map +1 -0
  124. package/dist/components/patterns/EmptyState.d.cts +13 -0
  125. package/dist/components/patterns/EmptyState.d.ts +14 -0
  126. package/dist/components/patterns/EmptyState.d.ts.map +1 -0
  127. package/dist/components/patterns/SidePanel.d.cts +14 -0
  128. package/dist/components/patterns/SidePanel.d.ts +15 -0
  129. package/dist/components/patterns/SidePanel.d.ts.map +1 -0
  130. package/dist/components/patterns/ValueHelpDialog.d.cts +20 -0
  131. package/dist/components/patterns/ValueHelpDialog.d.ts +21 -0
  132. package/dist/components/patterns/ValueHelpDialog.d.ts.map +1 -0
  133. package/dist/components/utils/cx.d.cts +2 -0
  134. package/dist/components/utils/cx.d.ts +3 -0
  135. package/dist/components/utils/cx.d.ts.map +1 -0
  136. package/dist/components.css +352 -0
  137. package/dist/index.cjs +1590 -0
  138. package/dist/index.cjs.map +1 -0
  139. package/dist/index.d.cts +46 -0
  140. package/dist/index.d.ts +47 -0
  141. package/dist/index.d.ts.map +1 -0
  142. package/dist/index.js +1560 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/pire.css +11 -0
  145. package/dist/tokens/base.css +18 -0
  146. package/dist/tokens/colors.css +53 -0
  147. package/dist/tokens/elevation.css +21 -0
  148. package/dist/tokens/fonts.css +15 -0
  149. package/dist/tokens/motion.css +13 -0
  150. package/dist/tokens/spacing.css +18 -0
  151. package/dist/tokens/themes.css +23 -0
  152. package/dist/tokens/typography.css +39 -0
  153. package/dist/tokens.css +8 -0
  154. package/package.json +99 -0
@@ -0,0 +1,45 @@
1
+ import type * as React from 'react';
2
+ export interface ComboBoxOption {
3
+ value: string;
4
+ label: string;
5
+ secondary?: string;
6
+ isDisabled?: boolean;
7
+ }
8
+ export interface ComboBoxProps {
9
+ label?: React.ReactNode;
10
+ value?: string | null;
11
+ defaultValue?: string;
12
+ onChange?: (value: string | null) => void;
13
+ /**
14
+ * Free-text as typed, on every keystroke.
15
+ *
16
+ * Server-side search is only partly supported. `options` is passed to React Aria as
17
+ * `defaultItems`, so React Aria applies its own local "contains" filter on top of
18
+ * whatever you supply: any result whose `label` does not literally contain the typed
19
+ * text is hidden client-side, and when the local filter matches nothing the menu
20
+ * closes. Fuzzy, synonym, code-to-description and server-ranked matches are therefore
21
+ * dropped. Use this to observe input (analytics, a debounced prefetch, mirroring the
22
+ * text elsewhere), or for server search only where the returned labels are guaranteed
23
+ * to contain the query as a substring. For true server-driven search with no local
24
+ * filtering, use ValueHelpField.
25
+ */
26
+ onInputChange?: (text: string) => void;
27
+ options?: Array<string | ComboBoxOption>;
28
+ placeholder?: string;
29
+ description?: React.ReactNode;
30
+ errorMessage?: React.ReactNode;
31
+ isInvalid?: boolean;
32
+ isDisabled?: boolean;
33
+ isRequired?: boolean;
34
+ isReadOnly?: boolean;
35
+ /** Allow committing free text that isn't in `options`, instead of reverting to the last valid selection. */
36
+ allowsCustomValue?: boolean;
37
+ size?: 'sm' | 'md' | 'lg';
38
+ fullWidth?: boolean;
39
+ name?: string;
40
+ className?: string;
41
+ style?: React.CSSProperties;
42
+ }
43
+ /** Type-ahead picker for lists too long to scroll — material, cost centre, G/L account.
44
+ * Below ~10 fixed options use Select; for master-data search with several columns use ValueHelpField. */
45
+ export declare function ComboBox({ label, value, defaultValue, onChange, onInputChange, options, description, errorMessage, size, fullWidth, className, style, ...rest }: ComboBoxProps): React.JSX.Element;
@@ -0,0 +1,46 @@
1
+ import type * as React from 'react';
2
+ export interface ComboBoxOption {
3
+ value: string;
4
+ label: string;
5
+ secondary?: string;
6
+ isDisabled?: boolean;
7
+ }
8
+ export interface ComboBoxProps {
9
+ label?: React.ReactNode;
10
+ value?: string | null;
11
+ defaultValue?: string;
12
+ onChange?: (value: string | null) => void;
13
+ /**
14
+ * Free-text as typed, on every keystroke.
15
+ *
16
+ * Server-side search is only partly supported. `options` is passed to React Aria as
17
+ * `defaultItems`, so React Aria applies its own local "contains" filter on top of
18
+ * whatever you supply: any result whose `label` does not literally contain the typed
19
+ * text is hidden client-side, and when the local filter matches nothing the menu
20
+ * closes. Fuzzy, synonym, code-to-description and server-ranked matches are therefore
21
+ * dropped. Use this to observe input (analytics, a debounced prefetch, mirroring the
22
+ * text elsewhere), or for server search only where the returned labels are guaranteed
23
+ * to contain the query as a substring. For true server-driven search with no local
24
+ * filtering, use ValueHelpField.
25
+ */
26
+ onInputChange?: (text: string) => void;
27
+ options?: Array<string | ComboBoxOption>;
28
+ placeholder?: string;
29
+ description?: React.ReactNode;
30
+ errorMessage?: React.ReactNode;
31
+ isInvalid?: boolean;
32
+ isDisabled?: boolean;
33
+ isRequired?: boolean;
34
+ isReadOnly?: boolean;
35
+ /** Allow committing free text that isn't in `options`, instead of reverting to the last valid selection. */
36
+ allowsCustomValue?: boolean;
37
+ size?: 'sm' | 'md' | 'lg';
38
+ fullWidth?: boolean;
39
+ name?: string;
40
+ className?: string;
41
+ style?: React.CSSProperties;
42
+ }
43
+ /** Type-ahead picker for lists too long to scroll — material, cost centre, G/L account.
44
+ * Below ~10 fixed options use Select; for master-data search with several columns use ValueHelpField. */
45
+ export declare function ComboBox({ label, value, defaultValue, onChange, onInputChange, options, description, errorMessage, size, fullWidth, className, style, ...rest }: ComboBoxProps): React.JSX.Element;
46
+ //# sourceMappingURL=ComboBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboBox.d.ts","sourceRoot":"","sources":["../../../src/components/forms/ComboBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAMpC,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE;AAE1G,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAKD;0GAC0G;AAC1G,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAY,EAC1F,WAAW,EAAE,YAAY,EAAE,IAAW,EAAE,SAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,aAAa,qBAiCrG"}
@@ -0,0 +1,27 @@
1
+ import type * as React from 'react';
2
+ import type { DateValue } from 'react-aria-components';
3
+ export interface DatePickerProps {
4
+ label?: React.ReactNode;
5
+ value?: DateValue | null;
6
+ defaultValue?: DateValue | null;
7
+ onChange?: (value: DateValue | null) => void;
8
+ minValue?: DateValue;
9
+ maxValue?: DateValue;
10
+ /** Return true for dates that cannot be picked — factory calendar, blocked periods. */
11
+ isDateUnavailable?: (date: DateValue) => boolean;
12
+ description?: React.ReactNode;
13
+ errorMessage?: React.ReactNode;
14
+ isInvalid?: boolean;
15
+ isDisabled?: boolean;
16
+ isReadOnly?: boolean;
17
+ isRequired?: boolean;
18
+ size?: 'sm' | 'md' | 'lg';
19
+ fullWidth?: boolean;
20
+ name?: string;
21
+ className?: string;
22
+ style?: React.CSSProperties;
23
+ }
24
+ /** Date entry with a segmented field and a calendar popover. Segments follow the user's locale,
25
+ * so a German user types dd.mm.yyyy without any prop change. Wrap the app in React Aria's
26
+ * I18nProvider to pin a locale. */
27
+ export declare function DatePicker({ label, description, errorMessage, size, fullWidth, className, style, ...rest }: DatePickerProps): React.JSX.Element;
@@ -0,0 +1,28 @@
1
+ import type * as React from 'react';
2
+ import type { DateValue } from 'react-aria-components';
3
+ export interface DatePickerProps {
4
+ label?: React.ReactNode;
5
+ value?: DateValue | null;
6
+ defaultValue?: DateValue | null;
7
+ onChange?: (value: DateValue | null) => void;
8
+ minValue?: DateValue;
9
+ maxValue?: DateValue;
10
+ /** Return true for dates that cannot be picked — factory calendar, blocked periods. */
11
+ isDateUnavailable?: (date: DateValue) => boolean;
12
+ description?: React.ReactNode;
13
+ errorMessage?: React.ReactNode;
14
+ isInvalid?: boolean;
15
+ isDisabled?: boolean;
16
+ isReadOnly?: boolean;
17
+ isRequired?: boolean;
18
+ size?: 'sm' | 'md' | 'lg';
19
+ fullWidth?: boolean;
20
+ name?: string;
21
+ className?: string;
22
+ style?: React.CSSProperties;
23
+ }
24
+ /** Date entry with a segmented field and a calendar popover. Segments follow the user's locale,
25
+ * so a German user types dd.mm.yyyy without any prop change. Wrap the app in React Aria's
26
+ * I18nProvider to pin a locale. */
27
+ export declare function DatePicker({ label, description, errorMessage, size, fullWidth, className, style, ...rest }: DatePickerProps): React.JSX.Element;
28
+ //# sourceMappingURL=DatePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/forms/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIvD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uFAAuF;IACvF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC;IACjD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;oCAEoC;AACpC,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAW,EAAE,SAAgB,EAC1F,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,qBA4C7C"}
@@ -0,0 +1,17 @@
1
+ import type * as React from 'react';
2
+ export interface FormFieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ label: React.ReactNode;
4
+ /** id of the control this label points at. Required when wrapping a bare control. */
5
+ htmlFor?: string;
6
+ isRequired?: boolean;
7
+ /** Static help text. Hidden while an error is shown. */
8
+ hint?: React.ReactNode;
9
+ /** Error message; rendered in an alert row with an icon. */
10
+ error?: React.ReactNode;
11
+ /** horizontal = right-aligned 160px label column, the ERP detail-form default. */
12
+ layout?: 'stacked' | 'horizontal';
13
+ children?: React.ReactNode;
14
+ }
15
+ /** Label + control + hint/error wrapper for controls that do not manage their own label
16
+ * (most Pire controls do — use their `label` prop first). */
17
+ export declare function FormField({ label, htmlFor, isRequired, hint, error, layout, children, className, ...rest }: FormFieldProps): React.JSX.Element;
@@ -0,0 +1,18 @@
1
+ import type * as React from 'react';
2
+ export interface FormFieldProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
3
+ label: React.ReactNode;
4
+ /** id of the control this label points at. Required when wrapping a bare control. */
5
+ htmlFor?: string;
6
+ isRequired?: boolean;
7
+ /** Static help text. Hidden while an error is shown. */
8
+ hint?: React.ReactNode;
9
+ /** Error message; rendered in an alert row with an icon. */
10
+ error?: React.ReactNode;
11
+ /** horizontal = right-aligned 160px label column, the ERP detail-form default. */
12
+ layout?: 'stacked' | 'horizontal';
13
+ children?: React.ReactNode;
14
+ }
15
+ /** Label + control + hint/error wrapper for controls that do not manage their own label
16
+ * (most Pire controls do — use their `label` prop first). */
17
+ export declare function FormField({ label, htmlFor, isRequired, hint, error, layout, children, className, ...rest }: FormFieldProps): React.JSX.Element;
18
+ //# sourceMappingURL=FormField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormField.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAIpC,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5F,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,kFAAkF;IAClF,MAAM,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED;8DAC8D;AAC9D,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,qBAYtI"}
@@ -0,0 +1,33 @@
1
+ import type * as React from 'react';
2
+ export interface InputProps {
3
+ label?: React.ReactNode;
4
+ value?: string;
5
+ defaultValue?: string;
6
+ /** Receives the raw string value. */
7
+ onChange?: (value: string) => void;
8
+ placeholder?: string;
9
+ type?: 'text' | 'search' | 'email' | 'number' | 'date' | 'password' | 'tel' | 'url';
10
+ /** Leading icon slug — "search", "calendar", "hash". */
11
+ icon?: string;
12
+ /** Trailing static text: unit, currency, "of 40". */
13
+ suffix?: React.ReactNode;
14
+ /** Help text below the field. Replaced by errorMessage when invalid. */
15
+ description?: React.ReactNode;
16
+ errorMessage?: React.ReactNode;
17
+ isInvalid?: boolean;
18
+ isDisabled?: boolean;
19
+ isReadOnly?: boolean;
20
+ isRequired?: boolean;
21
+ size?: 'sm' | 'md' | 'lg';
22
+ /** Right-aligned tabular mono — use for every amount, quantity and ID. */
23
+ numeric?: boolean;
24
+ fullWidth?: boolean;
25
+ name?: string;
26
+ autoFocus?: boolean;
27
+ className?: string;
28
+ style?: React.CSSProperties;
29
+ inputRef?: React.Ref<HTMLInputElement>;
30
+ }
31
+ /** Single-line text entry. Labels, descriptions and errors are wired to the input by React Aria,
32
+ * so no manual aria-describedby is ever needed. */
33
+ export declare function Input({ label, icon, suffix, description, errorMessage, size, numeric, fullWidth, className, style, inputRef, onChange, ...rest }: InputProps): React.JSX.Element;
@@ -0,0 +1,34 @@
1
+ import type * as React from 'react';
2
+ export interface InputProps {
3
+ label?: React.ReactNode;
4
+ value?: string;
5
+ defaultValue?: string;
6
+ /** Receives the raw string value. */
7
+ onChange?: (value: string) => void;
8
+ placeholder?: string;
9
+ type?: 'text' | 'search' | 'email' | 'number' | 'date' | 'password' | 'tel' | 'url';
10
+ /** Leading icon slug — "search", "calendar", "hash". */
11
+ icon?: string;
12
+ /** Trailing static text: unit, currency, "of 40". */
13
+ suffix?: React.ReactNode;
14
+ /** Help text below the field. Replaced by errorMessage when invalid. */
15
+ description?: React.ReactNode;
16
+ errorMessage?: React.ReactNode;
17
+ isInvalid?: boolean;
18
+ isDisabled?: boolean;
19
+ isReadOnly?: boolean;
20
+ isRequired?: boolean;
21
+ size?: 'sm' | 'md' | 'lg';
22
+ /** Right-aligned tabular mono — use for every amount, quantity and ID. */
23
+ numeric?: boolean;
24
+ fullWidth?: boolean;
25
+ name?: string;
26
+ autoFocus?: boolean;
27
+ className?: string;
28
+ style?: React.CSSProperties;
29
+ inputRef?: React.Ref<HTMLInputElement>;
30
+ }
31
+ /** Single-line text entry. Labels, descriptions and errors are wired to the input by React Aria,
32
+ * so no manual aria-describedby is ever needed. */
33
+ export declare function Input({ label, icon, suffix, description, errorMessage, size, numeric, fullWidth, className, style, inputRef, onChange, ...rest }: InputProps): React.JSX.Element;
34
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAKpC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;IACpF,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,wEAAwE;IACxE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACxC;AAED;oDACoD;AACpD,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,IAAW,EAAE,OAAO,EAC1F,SAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,qBAmB9E"}
@@ -0,0 +1,33 @@
1
+ import type * as React from 'react';
2
+ export interface NumberFieldProps {
3
+ label?: React.ReactNode;
4
+ /** Accessible name when `label` is omitted — e.g. in a table cell where the column header
5
+ * already carries the visible text. A field with neither is unnamed and fails axe. */
6
+ 'aria-label'?: string;
7
+ value?: number;
8
+ defaultValue?: number;
9
+ onChange?: (value: number) => void;
10
+ minValue?: number;
11
+ maxValue?: number;
12
+ step?: number;
13
+ /** Intl.NumberFormat options — currency, unit, decimals. Locale comes from the app's I18nProvider. */
14
+ formatOptions?: Intl.NumberFormatOptions;
15
+ /** Trailing unit shown after the figure: EA, KG, %. */
16
+ suffix?: React.ReactNode;
17
+ description?: React.ReactNode;
18
+ errorMessage?: React.ReactNode;
19
+ isInvalid?: boolean;
20
+ isDisabled?: boolean;
21
+ isReadOnly?: boolean;
22
+ isRequired?: boolean;
23
+ /** Hide the increment/decrement buttons — typical inside dense table cells. */
24
+ hideStepper?: boolean;
25
+ size?: 'sm' | 'md' | 'lg';
26
+ fullWidth?: boolean;
27
+ name?: string;
28
+ className?: string;
29
+ style?: React.CSSProperties;
30
+ }
31
+ /** Quantities, prices and any figure the user edits. Always right-aligned tabular mono, with
32
+ * arrow-key and scroll stepping supplied by React Aria. */
33
+ export declare function NumberField({ label, suffix, description, errorMessage, hideStepper, size, fullWidth, className, style, ...rest }: NumberFieldProps): React.JSX.Element;
@@ -0,0 +1,34 @@
1
+ import type * as React from 'react';
2
+ export interface NumberFieldProps {
3
+ label?: React.ReactNode;
4
+ /** Accessible name when `label` is omitted — e.g. in a table cell where the column header
5
+ * already carries the visible text. A field with neither is unnamed and fails axe. */
6
+ 'aria-label'?: string;
7
+ value?: number;
8
+ defaultValue?: number;
9
+ onChange?: (value: number) => void;
10
+ minValue?: number;
11
+ maxValue?: number;
12
+ step?: number;
13
+ /** Intl.NumberFormat options — currency, unit, decimals. Locale comes from the app's I18nProvider. */
14
+ formatOptions?: Intl.NumberFormatOptions;
15
+ /** Trailing unit shown after the figure: EA, KG, %. */
16
+ suffix?: React.ReactNode;
17
+ description?: React.ReactNode;
18
+ errorMessage?: React.ReactNode;
19
+ isInvalid?: boolean;
20
+ isDisabled?: boolean;
21
+ isReadOnly?: boolean;
22
+ isRequired?: boolean;
23
+ /** Hide the increment/decrement buttons — typical inside dense table cells. */
24
+ hideStepper?: boolean;
25
+ size?: 'sm' | 'md' | 'lg';
26
+ fullWidth?: boolean;
27
+ name?: string;
28
+ className?: string;
29
+ style?: React.CSSProperties;
30
+ }
31
+ /** Quantities, prices and any figure the user edits. Always right-aligned tabular mono, with
32
+ * arrow-key and scroll stepping supplied by React Aria. */
33
+ export declare function NumberField({ label, suffix, description, errorMessage, hideStepper, size, fullWidth, className, style, ...rest }: NumberFieldProps): React.JSX.Element;
34
+ //# sourceMappingURL=NumberField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberField.d.ts","sourceRoot":"","sources":["../../../src/components/forms/NumberField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAMpC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;2FACuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,aAAa,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;IACzC,uDAAuD;IACvD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;4DAC4D;AAC5D,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,IAAW,EAC9F,SAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,qBAuBhE"}
@@ -0,0 +1,18 @@
1
+ import type * as React from 'react';
2
+ import { type RadioGroupProps as AriaRadioGroupProps, type RadioProps as AriaRadioProps } from 'react-aria-components';
3
+ export interface RadioGroupProps extends Omit<AriaRadioGroupProps, 'className' | 'children'> {
4
+ label?: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ errorMessage?: React.ReactNode;
7
+ children?: React.ReactNode;
8
+ className?: string;
9
+ }
10
+ /** Radios must live in a group — that is what gives arrow-key navigation and a single tab stop. */
11
+ export declare function RadioGroup({ label, description, errorMessage, children, className, ...rest }: RadioGroupProps): React.JSX.Element;
12
+ export interface RadioProps extends Omit<AriaRadioProps, 'className' | 'children'> {
13
+ label?: React.ReactNode;
14
+ hint?: React.ReactNode;
15
+ children?: React.ReactNode;
16
+ className?: string;
17
+ }
18
+ export declare function Radio({ label, hint, children, className, ...rest }: RadioProps): React.JSX.Element;
@@ -0,0 +1,19 @@
1
+ import type * as React from 'react';
2
+ import { type RadioGroupProps as AriaRadioGroupProps, type RadioProps as AriaRadioProps } from 'react-aria-components';
3
+ export interface RadioGroupProps extends Omit<AriaRadioGroupProps, 'className' | 'children'> {
4
+ label?: React.ReactNode;
5
+ description?: React.ReactNode;
6
+ errorMessage?: React.ReactNode;
7
+ children?: React.ReactNode;
8
+ className?: string;
9
+ }
10
+ /** Radios must live in a group — that is what gives arrow-key navigation and a single tab stop. */
11
+ export declare function RadioGroup({ label, description, errorMessage, children, className, ...rest }: RadioGroupProps): React.JSX.Element;
12
+ export interface RadioProps extends Omit<AriaRadioProps, 'className' | 'children'> {
13
+ label?: React.ReactNode;
14
+ hint?: React.ReactNode;
15
+ children?: React.ReactNode;
16
+ className?: string;
17
+ }
18
+ export declare function Radio({ label, hint, children, className, ...rest }: RadioProps): React.JSX.Element;
19
+ //# sourceMappingURL=Radio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,KAAK,eAAe,IAAI,mBAAmB,EAAE,KAAK,UAAU,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGhH,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,mBAAmB,EAAE,WAAW,GAAG,UAAU,CAAC;IAC1F,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,qBAS7G;AAED,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,UAAU,CAAC;IAChF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,qBAU9E"}
@@ -0,0 +1,28 @@
1
+ import type * as React from 'react';
2
+ export type SelectOption = string | {
3
+ value: string;
4
+ label: string;
5
+ isDisabled?: boolean;
6
+ };
7
+ export interface SelectProps {
8
+ label?: React.ReactNode;
9
+ value?: string | null;
10
+ defaultValue?: string;
11
+ onChange?: (value: string) => void;
12
+ options?: SelectOption[];
13
+ /** Shown when nothing is selected. */
14
+ placeholder?: string;
15
+ description?: React.ReactNode;
16
+ errorMessage?: React.ReactNode;
17
+ isInvalid?: boolean;
18
+ isDisabled?: boolean;
19
+ isRequired?: boolean;
20
+ size?: 'sm' | 'md' | 'lg';
21
+ fullWidth?: boolean;
22
+ name?: string;
23
+ className?: string;
24
+ style?: React.CSSProperties;
25
+ }
26
+ /** Single-choice picker. Uses a listbox popover rather than a native <select> so the option
27
+ * rows can carry Pire typography and keyboard behaviour is identical across browsers. */
28
+ export declare function Select({ label, value, defaultValue, onChange, options, placeholder, description, errorMessage, size, fullWidth, className, style, ...rest }: SelectProps): React.JSX.Element;
@@ -0,0 +1,29 @@
1
+ import type * as React from 'react';
2
+ export type SelectOption = string | {
3
+ value: string;
4
+ label: string;
5
+ isDisabled?: boolean;
6
+ };
7
+ export interface SelectProps {
8
+ label?: React.ReactNode;
9
+ value?: string | null;
10
+ defaultValue?: string;
11
+ onChange?: (value: string) => void;
12
+ options?: SelectOption[];
13
+ /** Shown when nothing is selected. */
14
+ placeholder?: string;
15
+ description?: React.ReactNode;
16
+ errorMessage?: React.ReactNode;
17
+ isInvalid?: boolean;
18
+ isDisabled?: boolean;
19
+ isRequired?: boolean;
20
+ size?: 'sm' | 'md' | 'lg';
21
+ fullWidth?: boolean;
22
+ name?: string;
23
+ className?: string;
24
+ style?: React.CSSProperties;
25
+ }
26
+ /** Single-choice picker. Uses a listbox popover rather than a native <select> so the option
27
+ * rows can carry Pire typography and keyboard behaviour is identical across browsers. */
28
+ export declare function Select({ label, value, defaultValue, onChange, options, placeholder, description, errorMessage, size, fullWidth, className, style, ...rest }: SelectProps): React.JSX.Element;
29
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAMpC,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3F,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAID;0FAC0F;AAC1F,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAY,EAAE,WAAuB,EAClG,WAAW,EAAE,YAAY,EAAE,IAAW,EAAE,SAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,qBA6BnG"}
@@ -0,0 +1,9 @@
1
+ import type * as React from 'react';
2
+ import { type SwitchProps as AriaSwitchProps } from 'react-aria-components';
3
+ export interface SwitchProps extends Omit<AriaSwitchProps, 'className' | 'children'> {
4
+ label?: React.ReactNode;
5
+ children?: React.ReactNode;
6
+ className?: string;
7
+ }
8
+ /** Immediate-effect toggle. For settings that need a save step, use a Checkbox. */
9
+ export declare function Switch({ label, children, className, ...rest }: SwitchProps): React.JSX.Element;
@@ -0,0 +1,10 @@
1
+ import type * as React from 'react';
2
+ import { type SwitchProps as AriaSwitchProps } from 'react-aria-components';
3
+ export interface SwitchProps extends Omit<AriaSwitchProps, 'className' | 'children'> {
4
+ label?: React.ReactNode;
5
+ children?: React.ReactNode;
6
+ className?: string;
7
+ }
8
+ /** Immediate-effect toggle. For settings that need a save step, use a Checkbox. */
9
+ export declare function Switch({ label, children, className, ...rest }: SwitchProps): React.JSX.Element;
10
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/components/forms/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EAAwB,KAAK,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGlG,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,UAAU,CAAC;IAClF,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,qBAO1E"}
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import type { DataTableColumn } from '../data/DataTable.cjs';
3
+ export interface ValueHelpFieldProps<T extends {
4
+ id: string | number;
5
+ } = any> {
6
+ label?: React.ReactNode;
7
+ /** The picked record, or null. */
8
+ value?: T | null;
9
+ onChange?: (row: T | null) => void;
10
+ /** How the picked record reads in the closed field. Default: "id — name". */
11
+ format?: (row: T) => string;
12
+ /** Records offered in the dialog, and the columns that identify them. */
13
+ rows?: T[];
14
+ columns?: DataTableColumn<T>[];
15
+ dialogTitle?: React.ReactNode;
16
+ placeholder?: string;
17
+ description?: React.ReactNode;
18
+ errorMessage?: React.ReactNode;
19
+ isInvalid?: boolean;
20
+ isDisabled?: boolean;
21
+ isRequired?: boolean;
22
+ /** Provide to render a clear affordance once a record is picked. */
23
+ allowsClear?: boolean;
24
+ className?: string;
25
+ style?: React.CSSProperties;
26
+ }
27
+ /** The ERP field that cannot be typed: a read-only display of the picked master-data record plus
28
+ * the value-help trigger. Pairs Input with ValueHelpDialog so screens stop rewiring both. */
29
+ export declare function ValueHelpField<T extends {
30
+ id: string | number;
31
+ }>({ label, value, onChange, format, rows, columns, dialogTitle, placeholder, description, errorMessage, isInvalid, isDisabled, isRequired, allowsClear, className, style }: ValueHelpFieldProps<T>): React.JSX.Element;
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import type { DataTableColumn } from '../data/DataTable.js';
3
+ export interface ValueHelpFieldProps<T extends {
4
+ id: string | number;
5
+ } = any> {
6
+ label?: React.ReactNode;
7
+ /** The picked record, or null. */
8
+ value?: T | null;
9
+ onChange?: (row: T | null) => void;
10
+ /** How the picked record reads in the closed field. Default: "id — name". */
11
+ format?: (row: T) => string;
12
+ /** Records offered in the dialog, and the columns that identify them. */
13
+ rows?: T[];
14
+ columns?: DataTableColumn<T>[];
15
+ dialogTitle?: React.ReactNode;
16
+ placeholder?: string;
17
+ description?: React.ReactNode;
18
+ errorMessage?: React.ReactNode;
19
+ isInvalid?: boolean;
20
+ isDisabled?: boolean;
21
+ isRequired?: boolean;
22
+ /** Provide to render a clear affordance once a record is picked. */
23
+ allowsClear?: boolean;
24
+ className?: string;
25
+ style?: React.CSSProperties;
26
+ }
27
+ /** The ERP field that cannot be typed: a read-only display of the picked master-data record plus
28
+ * the value-help trigger. Pairs Input with ValueHelpDialog so screens stop rewiring both. */
29
+ export declare function ValueHelpField<T extends {
30
+ id: string | number;
31
+ }>({ label, value, onChange, format, rows, columns, dialogTitle, placeholder, description, errorMessage, isInvalid, isDisabled, isRequired, allowsClear, className, style }: ValueHelpFieldProps<T>): React.JSX.Element;
32
+ //# sourceMappingURL=ValueHelpField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueHelpField.d.ts","sourceRoot":"","sources":["../../../src/components/forms/ValueHelpField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,GAAG;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,kCAAkC;IAClC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACnC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5B,yEAAyE;IACzE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAMD;8FAC8F;AAC9F,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAsB,EAChH,IAAS,EAAE,OAAY,EAAE,WAAW,EAAE,WAA4B,EAAE,WAAW,EAAE,YAAY,EAC7F,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,qBAmB3F"}
@@ -0,0 +1,10 @@
1
+ import type * as React from 'react';
2
+ export interface FooterBarProps extends React.HTMLAttributes<HTMLElement> {
3
+ /** Left-hand status: validation summary, draft saved at, total. */
4
+ note?: React.ReactNode;
5
+ /** Commit actions. Cancel first, primary or danger last. */
6
+ actions?: React.ReactNode;
7
+ }
8
+ /** Sticky commit bar for create and edit screens: the page scrolls, the decision stays visible.
9
+ * Give the scrolling container bottom padding equal to the bar height. */
10
+ export declare function FooterBar({ note, actions, children, className, ...rest }: FooterBarProps): React.JSX.Element;
@@ -0,0 +1,11 @@
1
+ import type * as React from 'react';
2
+ export interface FooterBarProps extends React.HTMLAttributes<HTMLElement> {
3
+ /** Left-hand status: validation summary, draft saved at, total. */
4
+ note?: React.ReactNode;
5
+ /** Commit actions. Cancel first, primary or danger last. */
6
+ actions?: React.ReactNode;
7
+ }
8
+ /** Sticky commit bar for create and edit screens: the page scrolls, the decision stays visible.
9
+ * Give the scrolling container bottom padding equal to the bar height. */
10
+ export declare function FooterBar({ note, actions, children, className, ...rest }: FooterBarProps): React.JSX.Element;
11
+ //# sourceMappingURL=FooterBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FooterBar.d.ts","sourceRoot":"","sources":["../../../src/components/layout/FooterBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACvE,mEAAmE;IACnE,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;2EAC2E;AAC3E,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,cAAc,qBAQxF"}
@@ -0,0 +1,10 @@
1
+ import type * as React from 'react';
2
+ export interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
3
+ title: React.ReactNode;
4
+ /** One line of context: scope, plant, data timestamp. */
5
+ subtitle?: React.ReactNode;
6
+ actions?: React.ReactNode;
7
+ }
8
+ /** Heading block for pages that are not a single object — launchpads, settings, reports.
9
+ * Object pages use ObjectHeader instead. */
10
+ export declare function PageHeader({ title, subtitle, actions, className, ...rest }: PageHeaderProps): React.JSX.Element;
@@ -0,0 +1,11 @@
1
+ import type * as React from 'react';
2
+ export interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
3
+ title: React.ReactNode;
4
+ /** One line of context: scope, plant, data timestamp. */
5
+ subtitle?: React.ReactNode;
6
+ actions?: React.ReactNode;
7
+ }
8
+ /** Heading block for pages that are not a single object — launchpads, settings, reports.
9
+ * Object pages use ObjectHeader instead. */
10
+ export declare function PageHeader({ title, subtitle, actions, className, ...rest }: PageHeaderProps): React.JSX.Element;
11
+ //# sourceMappingURL=PageHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IACvF,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;6CAC6C;AAC7C,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,qBAU3F"}
@@ -0,0 +1,11 @@
1
+ import type * as React from 'react';
2
+ export interface SectionHeaderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {
3
+ /** Uppercase micro-caps eyebrow — the space or group name. */
4
+ title: React.ReactNode;
5
+ /** Count or qualifier shown beside the title. */
6
+ meta?: React.ReactNode;
7
+ /** Usually one tertiary Button: "Open space", "See all". */
8
+ actions?: React.ReactNode;
9
+ }
10
+ /** Divides a long page into named bands. Pairs with a KPI row or a card grid below it. */
11
+ export declare function SectionHeader({ title, meta, actions, className, ...rest }: SectionHeaderProps): React.JSX.Element;