@panneau/ui 0.0.0-stage → 5.0.0-alpha.1

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 (213) hide show
  1. package/README.md +74 -2
  2. package/dist/alert/Alert.css +78 -0
  3. package/dist/alert/Alert.d.ts +30 -0
  4. package/dist/alert/Alert.d.ts.map +1 -0
  5. package/dist/alert/Alert.js +64 -0
  6. package/dist/alert/Alert.js.map +1 -0
  7. package/dist/alert/Alert.module.js +30 -0
  8. package/dist/alert/Alert.module.js.map +1 -0
  9. package/dist/badge/Badge.css +60 -0
  10. package/dist/badge/Badge.d.ts +15 -0
  11. package/dist/badge/Badge.d.ts.map +1 -0
  12. package/dist/badge/Badge.js +21 -0
  13. package/dist/badge/Badge.js.map +1 -0
  14. package/dist/badge/Badge.module.js +22 -0
  15. package/dist/badge/Badge.module.js.map +1 -0
  16. package/dist/button/Button.css +112 -0
  17. package/dist/button/Button.d.ts +26 -0
  18. package/dist/button/Button.d.ts.map +1 -0
  19. package/dist/button/Button.js +39 -0
  20. package/dist/button/Button.js.map +1 -0
  21. package/dist/button/Button.module.js +28 -0
  22. package/dist/button/Button.module.js.map +1 -0
  23. package/dist/card/Card.css +50 -0
  24. package/dist/card/Card.d.ts +20 -0
  25. package/dist/card/Card.d.ts.map +1 -0
  26. package/dist/card/Card.js +38 -0
  27. package/dist/card/Card.js.map +1 -0
  28. package/dist/card/Card.module.js +18 -0
  29. package/dist/card/Card.module.js.map +1 -0
  30. package/dist/checkbox/Checkbox.css +79 -0
  31. package/dist/checkbox/Checkbox.d.ts +11 -0
  32. package/dist/checkbox/Checkbox.d.ts.map +1 -0
  33. package/dist/checkbox/Checkbox.js +43 -0
  34. package/dist/checkbox/Checkbox.js.map +1 -0
  35. package/dist/checkbox/Checkbox.module.js +16 -0
  36. package/dist/checkbox/Checkbox.module.js.map +1 -0
  37. package/dist/checkbox/ChoiceChrome.d.ts +15 -0
  38. package/dist/checkbox/ChoiceChrome.d.ts.map +1 -0
  39. package/dist/checkbox/ChoiceChrome.js +36 -0
  40. package/dist/checkbox/ChoiceChrome.js.map +1 -0
  41. package/dist/combo-box/ComboBox.css +26 -0
  42. package/dist/combo-box/ComboBox.d.ts +30 -0
  43. package/dist/combo-box/ComboBox.d.ts.map +1 -0
  44. package/dist/combo-box/ComboBox.js +106 -0
  45. package/dist/combo-box/ComboBox.js.map +1 -0
  46. package/dist/combo-box/ComboBox.module.js +14 -0
  47. package/dist/combo-box/ComboBox.module.js.map +1 -0
  48. package/dist/date-picker/DatePicker.css +135 -0
  49. package/dist/date-picker/DatePicker.d.ts +12 -0
  50. package/dist/date-picker/DatePicker.d.ts.map +1 -0
  51. package/dist/date-picker/DatePicker.js +93 -0
  52. package/dist/date-picker/DatePicker.js.map +1 -0
  53. package/dist/date-picker/DatePicker.module.js +30 -0
  54. package/dist/date-picker/DatePicker.module.js.map +1 -0
  55. package/dist/dialog/Dialog.css +126 -0
  56. package/dist/dialog/Dialog.d.ts +31 -0
  57. package/dist/dialog/Dialog.d.ts.map +1 -0
  58. package/dist/dialog/Dialog.js +61 -0
  59. package/dist/dialog/Dialog.js.map +1 -0
  60. package/dist/dialog/Dialog.module.js +30 -0
  61. package/dist/dialog/Dialog.module.js.map +1 -0
  62. package/dist/disclosure/Disclosure.css +54 -0
  63. package/dist/disclosure/Disclosure.d.ts +20 -0
  64. package/dist/disclosure/Disclosure.d.ts.map +1 -0
  65. package/dist/disclosure/Disclosure.js +43 -0
  66. package/dist/disclosure/Disclosure.js.map +1 -0
  67. package/dist/disclosure/Disclosure.module.js +22 -0
  68. package/dist/disclosure/Disclosure.module.js.map +1 -0
  69. package/dist/field/Field.css +145 -0
  70. package/dist/field/Field.module.js +30 -0
  71. package/dist/field/Field.module.js.map +1 -0
  72. package/dist/field/FieldParts.d.ts +32 -0
  73. package/dist/field/FieldParts.d.ts.map +1 -0
  74. package/dist/field/FieldParts.js +56 -0
  75. package/dist/field/FieldParts.js.map +1 -0
  76. package/dist/field/Fieldset.d.ts +22 -0
  77. package/dist/field/Fieldset.d.ts.map +1 -0
  78. package/dist/field/Fieldset.js +50 -0
  79. package/dist/field/Fieldset.js.map +1 -0
  80. package/dist/icon/Icon.css +5 -0
  81. package/dist/icon/Icon.d.ts +31 -0
  82. package/dist/icon/Icon.d.ts.map +1 -0
  83. package/dist/icon/Icon.js +29 -0
  84. package/dist/icon/Icon.js.map +1 -0
  85. package/dist/icon/Icon.module.js +8 -0
  86. package/dist/icon/Icon.module.js.map +1 -0
  87. package/dist/icon/namedIcons.d.ts +16 -0
  88. package/dist/icon/namedIcons.d.ts.map +1 -0
  89. package/dist/icon/namedIcons.js +90 -0
  90. package/dist/icon/namedIcons.js.map +1 -0
  91. package/dist/icon-button/IconButton.css +9 -0
  92. package/dist/icon-button/IconButton.d.ts +15 -0
  93. package/dist/icon-button/IconButton.d.ts.map +1 -0
  94. package/dist/icon-button/IconButton.js +26 -0
  95. package/dist/icon-button/IconButton.js.map +1 -0
  96. package/dist/icon-button/IconButton.module.js +12 -0
  97. package/dist/icon-button/IconButton.module.js.map +1 -0
  98. package/dist/index.d.ts +33 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +30 -0
  101. package/dist/intl/messages.d.ts +2 -0
  102. package/dist/intl/messages.d.ts.map +1 -0
  103. package/dist/intl/messages.js +1 -0
  104. package/dist/intl/usePanneauIntl.d.ts +7 -0
  105. package/dist/intl/usePanneauIntl.d.ts.map +1 -0
  106. package/dist/intl/usePanneauIntl.js +22 -0
  107. package/dist/intl/usePanneauIntl.js.map +1 -0
  108. package/dist/locales/index.d.ts +15 -0
  109. package/dist/locales/index.d.ts.map +1 -0
  110. package/dist/locales/index.js +21 -0
  111. package/dist/locales/index.js.map +1 -0
  112. package/dist/menu/Menu.d.ts +27 -0
  113. package/dist/menu/Menu.d.ts.map +1 -0
  114. package/dist/menu/Menu.js +57 -0
  115. package/dist/menu/Menu.js.map +1 -0
  116. package/dist/number-input/NumberInput.css +57 -0
  117. package/dist/number-input/NumberInput.d.ts +21 -0
  118. package/dist/number-input/NumberInput.d.ts.map +1 -0
  119. package/dist/number-input/NumberInput.js +82 -0
  120. package/dist/number-input/NumberInput.js.map +1 -0
  121. package/dist/number-input/NumberInput.module.js +16 -0
  122. package/dist/number-input/NumberInput.module.js.map +1 -0
  123. package/dist/popover/Popover.css +32 -0
  124. package/dist/popover/Popover.d.ts +18 -0
  125. package/dist/popover/Popover.d.ts.map +1 -0
  126. package/dist/popover/Popover.js +41 -0
  127. package/dist/popover/Popover.js.map +1 -0
  128. package/dist/popover/Popover.module.js +14 -0
  129. package/dist/popover/Popover.module.js.map +1 -0
  130. package/dist/radio-group/RadioGroup.css +83 -0
  131. package/dist/radio-group/RadioGroup.d.ts +12 -0
  132. package/dist/radio-group/RadioGroup.d.ts.map +1 -0
  133. package/dist/radio-group/RadioGroup.js +61 -0
  134. package/dist/radio-group/RadioGroup.js.map +1 -0
  135. package/dist/radio-group/RadioGroup.module.js +20 -0
  136. package/dist/radio-group/RadioGroup.module.js.map +1 -0
  137. package/dist/root/PanneauRoot.css +251 -0
  138. package/dist/root/PanneauRoot.d.ts +34 -0
  139. package/dist/root/PanneauRoot.d.ts.map +1 -0
  140. package/dist/root/PanneauRoot.js +84 -0
  141. package/dist/root/PanneauRoot.js.map +1 -0
  142. package/dist/root/PanneauRoot.module.js +12 -0
  143. package/dist/root/PanneauRoot.module.js.map +1 -0
  144. package/dist/select/ListBox.css +104 -0
  145. package/dist/select/ListBox.module.js +32 -0
  146. package/dist/select/ListBox.module.js.map +1 -0
  147. package/dist/select/Select.d.ts +45 -0
  148. package/dist/select/Select.d.ts.map +1 -0
  149. package/dist/select/Select.js +136 -0
  150. package/dist/select/Select.js.map +1 -0
  151. package/dist/spinner/Spinner.css +40 -0
  152. package/dist/spinner/Spinner.d.ts +11 -0
  153. package/dist/spinner/Spinner.d.ts.map +1 -0
  154. package/dist/spinner/Spinner.js +25 -0
  155. package/dist/spinner/Spinner.js.map +1 -0
  156. package/dist/spinner/Spinner.module.js +18 -0
  157. package/dist/spinner/Spinner.module.js.map +1 -0
  158. package/dist/switch/Switch.css +69 -0
  159. package/dist/switch/Switch.d.ts +11 -0
  160. package/dist/switch/Switch.d.ts.map +1 -0
  161. package/dist/switch/Switch.js +33 -0
  162. package/dist/switch/Switch.js.map +1 -0
  163. package/dist/switch/Switch.module.js +15 -0
  164. package/dist/switch/Switch.module.js.map +1 -0
  165. package/dist/tabs/Tabs.css +83 -0
  166. package/dist/tabs/Tabs.d.ts +27 -0
  167. package/dist/tabs/Tabs.d.ts.map +1 -0
  168. package/dist/tabs/Tabs.js +141 -0
  169. package/dist/tabs/Tabs.js.map +1 -0
  170. package/dist/tabs/Tabs.module.js +16 -0
  171. package/dist/tabs/Tabs.module.js.map +1 -0
  172. package/dist/text-area/TextArea.css +8 -0
  173. package/dist/text-area/TextArea.d.ts +11 -0
  174. package/dist/text-area/TextArea.d.ts.map +1 -0
  175. package/dist/text-area/TextArea.js +41 -0
  176. package/dist/text-area/TextArea.js.map +1 -0
  177. package/dist/text-area/TextArea.module.js +8 -0
  178. package/dist/text-area/TextArea.module.js.map +1 -0
  179. package/dist/text-input/TextInput.d.ts +17 -0
  180. package/dist/text-input/TextInput.d.ts.map +1 -0
  181. package/dist/text-input/TextInput.js +61 -0
  182. package/dist/text-input/TextInput.js.map +1 -0
  183. package/dist/theme/bootstrap.d.ts +8 -0
  184. package/dist/theme/bootstrap.d.ts.map +1 -0
  185. package/dist/theme/bootstrap.js +61 -0
  186. package/dist/theme/bootstrap.js.map +1 -0
  187. package/dist/theme/theme.d.ts +23 -0
  188. package/dist/theme/theme.d.ts.map +1 -0
  189. package/dist/theme/theme.js +30 -0
  190. package/dist/theme/theme.js.map +1 -0
  191. package/dist/time-input/TimeInput.d.ts +8 -0
  192. package/dist/time-input/TimeInput.d.ts.map +1 -0
  193. package/dist/time-input/TimeInput.js +45 -0
  194. package/dist/time-input/TimeInput.js.map +1 -0
  195. package/dist/toast/Toast.css +109 -0
  196. package/dist/toast/Toast.d.ts +39 -0
  197. package/dist/toast/Toast.d.ts.map +1 -0
  198. package/dist/toast/Toast.js +152 -0
  199. package/dist/toast/Toast.js.map +1 -0
  200. package/dist/toast/Toast.module.js +30 -0
  201. package/dist/toast/Toast.module.js.map +1 -0
  202. package/dist/tooltip/Tooltip.css +25 -0
  203. package/dist/tooltip/Tooltip.d.ts +19 -0
  204. package/dist/tooltip/Tooltip.d.ts.map +1 -0
  205. package/dist/tooltip/Tooltip.js +29 -0
  206. package/dist/tooltip/Tooltip.js.map +1 -0
  207. package/dist/tooltip/Tooltip.module.js +12 -0
  208. package/dist/tooltip/Tooltip.module.js.map +1 -0
  209. package/dist/utils/cx.d.ts +3 -0
  210. package/dist/utils/cx.d.ts.map +1 -0
  211. package/dist/utils/cx.js +9 -0
  212. package/dist/utils/cx.js.map +1 -0
  213. package/package.json +48 -5
@@ -0,0 +1,69 @@
1
+ .panneau-switch-pwmftu {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ gap: var(--panneau-space-2);
5
+ min-height: 1.5rem;
6
+ font-size: var(--panneau-font-size-md);
7
+ color: var(--panneau-color-text);
8
+ cursor: pointer;
9
+ -webkit-tap-highlight-color: transparent;
10
+ }
11
+
12
+ .panneau-switch-pwmftu[data-disabled] {
13
+ cursor: not-allowed;
14
+ opacity: 0.55;
15
+ }
16
+
17
+ .panneau-switch-pwmftu[data-readonly] {
18
+ cursor: default;
19
+ }
20
+
21
+ .panneau-track-PtpuqW {
22
+ position: relative;
23
+ flex: 0 0 auto;
24
+ width: 2.25rem;
25
+ height: 1.25rem;
26
+ background-color: var(--panneau-color-border-control);
27
+ border-radius: var(--panneau-radius-full);
28
+ transition: background-color var(--panneau-duration);
29
+ }
30
+
31
+ .panneau-thumb-pQGDyC {
32
+ position: absolute;
33
+ top: 0.125rem;
34
+ left: 0.125rem;
35
+ width: 1rem;
36
+ height: 1rem;
37
+ background-color: var(--panneau-color-surface);
38
+ border-radius: var(--panneau-radius-full);
39
+ box-shadow: var(--panneau-shadow-sm);
40
+ transition: transform var(--panneau-duration);
41
+ }
42
+
43
+ .panneau-switch-pwmftu[data-selected] .panneau-track-PtpuqW {
44
+ background-color: var(--panneau-color-accent);
45
+ }
46
+
47
+ .panneau-switch-pwmftu[data-selected] .panneau-thumb-pQGDyC {
48
+ background-color: var(--panneau-color-accent-text);
49
+ transform: translateX(1rem);
50
+ }
51
+
52
+ .panneau-switch-pwmftu[data-selected] .panneau-thumb-pQGDyC:dir(rtl) {
53
+ transform: translateX(-1rem);
54
+ }
55
+
56
+ .panneau-switch-pwmftu[data-focus-visible] .panneau-track-PtpuqW {
57
+ outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
58
+ outline-offset: 2px;
59
+ }
60
+
61
+ .panneau-label-L3fUnh {
62
+ overflow-wrap: anywhere;
63
+ }
64
+
65
+ @media (pointer: coarse) {
66
+ .panneau-switch-pwmftu {
67
+ min-height: 2.75rem;
68
+ }
69
+ }
@@ -0,0 +1,11 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type SwitchProps as AriaSwitchProps } from 'react-aria-components';
3
+ import { type ChoiceChromeProps } from '../checkbox/ChoiceChrome';
4
+ export interface SwitchProps extends Omit<AriaSwitchProps, 'className' | 'style' | 'children'>, ChoiceChromeProps {
5
+ /** Label, next to the switch. */
6
+ children?: ReactNode;
7
+ switchClassName?: string;
8
+ }
9
+ /** An on and off switch, for settings that apply at once. */
10
+ export declare function Switch({ children, description, errors, className, switchClassName, descriptionClassName, errorsClassName, ...props }: SwitchProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../src/switch/Switch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAwB,KAAK,WAAW,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElG,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIhF,MAAM,WAAW,WACb,SAAQ,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC,EAAE,iBAAiB;IACpF,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,6DAA6D;AAC7D,wBAAgB,MAAM,CAAC,EACnB,QAAQ,EACR,WAAW,EACX,MAAW,EACX,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,GAAG,KAAK,EACX,EAAE,WAAW,+BAyBb"}
@@ -0,0 +1,33 @@
1
+ import { cx } from "../utils/cx.js";
2
+ import { ChoiceChrome } from "../checkbox/ChoiceChrome.js";
3
+ import Switch_module_default from "./Switch.module.js";
4
+ import { Switch } from "react-aria-components";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/switch/Switch.tsx
7
+ /** An on and off switch, for settings that apply at once. */
8
+ function Switch$1({ children, description, errors = [], className, switchClassName, descriptionClassName, errorsClassName, ...props }) {
9
+ return /* @__PURE__ */ jsx(ChoiceChrome, {
10
+ description,
11
+ errors,
12
+ className,
13
+ descriptionClassName,
14
+ errorsClassName,
15
+ children: (describedBy) => /* @__PURE__ */ jsxs(Switch, {
16
+ ...props,
17
+ "aria-describedby": describedBy,
18
+ className: cx(Switch_module_default.switch, switchClassName),
19
+ children: [/* @__PURE__ */ jsx("span", {
20
+ className: Switch_module_default.track,
21
+ "aria-hidden": "true",
22
+ children: /* @__PURE__ */ jsx("span", { className: Switch_module_default.thumb })
23
+ }), children !== void 0 ? /* @__PURE__ */ jsx("span", {
24
+ className: Switch_module_default.label,
25
+ children
26
+ }) : null]
27
+ })
28
+ });
29
+ }
30
+ //#endregion
31
+ export { Switch$1 as Switch };
32
+
33
+ //# sourceMappingURL=Switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.js","names":["Switch","AriaSwitch","styles"],"sources":["../../src/switch/Switch.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Switch as AriaSwitch, type SwitchProps as AriaSwitchProps } from 'react-aria-components';\n\nimport { ChoiceChrome, type ChoiceChromeProps } from '../checkbox/ChoiceChrome';\nimport { cx } from '../utils/cx';\nimport styles from './Switch.module.css';\n\nexport interface SwitchProps\n extends Omit<AriaSwitchProps, 'className' | 'style' | 'children'>, ChoiceChromeProps {\n /** Label, next to the switch. */\n children?: ReactNode;\n switchClassName?: string;\n}\n\n/** An on and off switch, for settings that apply at once. */\nexport function Switch({\n children,\n description,\n errors = [],\n className,\n switchClassName,\n descriptionClassName,\n errorsClassName,\n ...props\n}: SwitchProps) {\n return (\n <ChoiceChrome\n description={description}\n errors={errors}\n className={className}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n >\n {(describedBy) => (\n <AriaSwitch\n {...props}\n aria-describedby={describedBy}\n className={cx(styles.switch, switchClassName)}\n >\n <span className={styles.track} aria-hidden=\"true\">\n <span className={styles.thumb} />\n </span>\n {children !== undefined ? (\n <span className={styles.label}>{children}</span>\n ) : null}\n </AriaSwitch>\n )}\n </ChoiceChrome>\n );\n}\n"],"mappings":";;;;;;;AAeA,SAAgBA,SAAO,EACnB,UACA,aACA,SAAS,CAAA,GACT,WACA,iBACA,sBACA,iBACA,GAAG,SACS;CACZ,OACI,oBAAC,cAAD;EACiB;EACL;EACG;EACW;EACL;EAEf,WAAA,gBACE,qBAACC,QAAD;GACI,GAAI;GACJ,oBAAkB;GAClB,WAAW,GAAGC,sBAAO,QAAQ,eAAe;GAHhD,UAAA,CAKI,oBAAC,QAAD;IAAM,WAAWA,sBAAO;IAAO,eAAY;IACvC,UAAA,oBAAC,QAAD,EAAM,WAAWA,sBAAO,MAAM,CAAA;GAC5B,CAAA,GACL,aAAa,KAAA,IACV,oBAAC,QAAD;IAAM,WAAWA,sBAAO;IAAQ;GAAe,CAAA,IAC/C,IACI;;CAEN,CAAA;AAEtB"}
@@ -0,0 +1,15 @@
1
+ import "./Switch.css";
2
+ //#region src/switch/Switch.module.css
3
+ var track = "panneau-track-PtpuqW";
4
+ var thumb = "panneau-thumb-pQGDyC";
5
+ var label = "panneau-label-L3fUnh";
6
+ var Switch_module_default = {
7
+ "switch": "panneau-switch-pwmftu",
8
+ track,
9
+ thumb,
10
+ label
11
+ };
12
+ //#endregion
13
+ export { Switch_module_default as default, label, thumb, track };
14
+
15
+ //# sourceMappingURL=Switch.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.module.js","names":[],"sources":["../../src/switch/Switch.module.css"],"sourcesContent":[".switch {\n display: inline-flex;\n align-items: center;\n gap: var(--panneau-space-2);\n min-height: 1.5rem;\n font-size: var(--panneau-font-size-md);\n color: var(--panneau-color-text);\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n\n.switch[data-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.switch[data-readonly] {\n cursor: default;\n}\n\n.track {\n position: relative;\n flex: 0 0 auto;\n width: 2.25rem;\n height: 1.25rem;\n background-color: var(--panneau-color-border-control);\n border-radius: var(--panneau-radius-full);\n transition: background-color var(--panneau-duration);\n}\n\n.thumb {\n position: absolute;\n top: 0.125rem;\n left: 0.125rem;\n width: 1rem;\n height: 1rem;\n background-color: var(--panneau-color-surface);\n border-radius: var(--panneau-radius-full);\n box-shadow: var(--panneau-shadow-sm);\n transition: transform var(--panneau-duration);\n}\n\n.switch[data-selected] .track {\n background-color: var(--panneau-color-accent);\n}\n\n.switch[data-selected] .thumb {\n background-color: var(--panneau-color-accent-text);\n transform: translateX(1rem);\n}\n\n.switch[data-selected] .thumb:dir(rtl) {\n transform: translateX(-1rem);\n}\n\n.switch[data-focus-visible] .track {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 2px;\n}\n\n.label {\n overflow-wrap: anywhere;\n}\n\n@media (pointer: coarse) {\n .switch {\n min-height: 2.75rem;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,83 @@
1
+ .panneau-tabs-JqDxcK {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--panneau-space-4);
5
+ min-width: 0;
6
+ }
7
+
8
+ .panneau-list-uiIzNm {
9
+ display: flex;
10
+ gap: var(--panneau-space-1);
11
+ overflow-x: auto;
12
+ border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);
13
+ scrollbar-width: none;
14
+ }
15
+
16
+ .panneau-list-uiIzNm::-webkit-scrollbar {
17
+ display: none;
18
+ }
19
+
20
+ .panneau-tab-dwPfFm {
21
+ position: relative;
22
+ display: inline-flex;
23
+ flex: 0 0 auto;
24
+ align-items: center;
25
+ gap: var(--panneau-space-2);
26
+ min-height: var(--panneau-control-height);
27
+ padding: 0 var(--panneau-space-3);
28
+ font-size: var(--panneau-font-size-md);
29
+ font-weight: var(--panneau-font-weight-medium);
30
+ color: var(--panneau-color-text-muted);
31
+ white-space: nowrap;
32
+ cursor: pointer;
33
+ outline: none;
34
+ -webkit-tap-highlight-color: transparent;
35
+ }
36
+
37
+ .panneau-tab-dwPfFm::after {
38
+ position: absolute;
39
+ inset-inline: var(--panneau-space-2);
40
+ bottom: calc(-1 * var(--panneau-border-width));
41
+ height: 2px;
42
+ content: '';
43
+ background-color: transparent;
44
+ border-radius: 2px 2px 0 0;
45
+ }
46
+
47
+ .panneau-tab-dwPfFm[data-hovered] {
48
+ color: var(--panneau-color-text);
49
+ }
50
+
51
+ .panneau-tab-dwPfFm[data-selected] {
52
+ color: var(--panneau-color-text);
53
+ }
54
+
55
+ .panneau-tab-dwPfFm[data-selected]::after {
56
+ background-color: var(--panneau-color-accent);
57
+ }
58
+
59
+ .panneau-tab-dwPfFm[data-disabled] {
60
+ cursor: not-allowed;
61
+ opacity: 0.5;
62
+ }
63
+
64
+ .panneau-tab-dwPfFm[data-focus-visible] {
65
+ outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
66
+ outline-offset: -2px;
67
+ border-radius: var(--panneau-radius-sm);
68
+ }
69
+
70
+ .panneau-panel-H3uAcq {
71
+ min-width: 0;
72
+ outline: none;
73
+ }
74
+
75
+ .panneau-panel-H3uAcq[data-focus-visible] {
76
+ outline: var(--panneau-focus-width) solid var(--panneau-color-focus);
77
+ outline-offset: 2px;
78
+ }
79
+
80
+ .panneau-panel-H3uAcq[data-inert],
81
+ .panneau-panel-H3uAcq[inert] {
82
+ display: none;
83
+ }
@@ -0,0 +1,27 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type TabListProps as AriaTabListProps, type TabPanelProps as AriaTabPanelProps, type TabProps as AriaTabProps, type TabsProps as AriaTabsProps } from 'react-aria-components';
3
+ export interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style'> {
4
+ className?: string;
5
+ }
6
+ /** Tabs: a `TabList` of `Tab`s, then a `TabPanel` per tab, matched by `id`. */
7
+ export declare function Tabs({ className, ...props }: TabsProps): import("react").JSX.Element;
8
+ export interface TabListProps<T extends object> extends Omit<AriaTabListProps<T>, 'className' | 'style'> {
9
+ className?: string;
10
+ }
11
+ /** The row of tabs. It scrolls sideways when the tabs don't fit, on phones. */
12
+ export declare function TabList<T extends object>({ className, ...props }: TabListProps<T>): import("react").JSX.Element;
13
+ export interface TabProps extends Omit<AriaTabProps, 'className' | 'style' | 'children'> {
14
+ children?: ReactNode;
15
+ className?: string;
16
+ }
17
+ /** A tab. Put a `Badge` in it for a count, such as the errors of the panel. */
18
+ export declare function Tab({ className, ...props }: TabProps): import("react").JSX.Element;
19
+ export interface TabPanelProps extends Omit<AriaTabPanelProps, 'className' | 'style'> {
20
+ className?: string;
21
+ }
22
+ /**
23
+ * The content of a tab. With `shouldForceMount`, the panel stays mounted (and hidden) when another
24
+ * tab is selected, which keeps the state of its fields.
25
+ */
26
+ export declare function TabPanel({ className, ...props }: TabPanelProps): import("react").JSX.Element;
27
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../src/tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAGH,KAAK,YAAY,IAAI,gBAAgB,EAErC,KAAK,aAAa,IAAI,iBAAiB,EACvC,KAAK,QAAQ,IAAI,YAAY,EAE7B,KAAK,SAAS,IAAI,aAAa,EAClC,MAAM,uBAAuB,CAAC;AAK/B,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,+BAEtD;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CACxD,gBAAgB,CAAC,CAAC,CAAC,EACnB,WAAW,GAAG,OAAO,CACxB;IACG,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,+BAEjF;AAED,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,UAAU,CAAC;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,wBAAgB,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,+BAEpD;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,OAAO,CAAC;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAE9D"}
@@ -0,0 +1,141 @@
1
+ import { cx } from "../utils/cx.js";
2
+ import Tabs_module_default from "./Tabs.module.js";
3
+ import { Tab, TabList, TabPanel, Tabs } from "react-aria-components";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { c } from "react/compiler-runtime";
6
+ //#region src/tabs/Tabs.tsx
7
+ /** Tabs: a `TabList` of `Tab`s, then a `TabPanel` per tab, matched by `id`. */
8
+ function Tabs$1(t0) {
9
+ const $ = c(8);
10
+ let className;
11
+ let props;
12
+ if ($[0] !== t0) {
13
+ ({className, ...props} = t0);
14
+ $[0] = t0;
15
+ $[1] = className;
16
+ $[2] = props;
17
+ } else {
18
+ className = $[1];
19
+ props = $[2];
20
+ }
21
+ let t1;
22
+ if ($[3] !== className) {
23
+ t1 = cx(Tabs_module_default.tabs, className);
24
+ $[3] = className;
25
+ $[4] = t1;
26
+ } else t1 = $[4];
27
+ let t2;
28
+ if ($[5] !== props || $[6] !== t1) {
29
+ t2 = /* @__PURE__ */ jsx(Tabs, {
30
+ ...props,
31
+ className: t1
32
+ });
33
+ $[5] = props;
34
+ $[6] = t1;
35
+ $[7] = t2;
36
+ } else t2 = $[7];
37
+ return t2;
38
+ }
39
+ /** The row of tabs. It scrolls sideways when the tabs don't fit, on phones. */
40
+ function TabList$1(t0) {
41
+ const $ = c(8);
42
+ let className;
43
+ let props;
44
+ if ($[0] !== t0) {
45
+ ({className, ...props} = t0);
46
+ $[0] = t0;
47
+ $[1] = className;
48
+ $[2] = props;
49
+ } else {
50
+ className = $[1];
51
+ props = $[2];
52
+ }
53
+ let t1;
54
+ if ($[3] !== className) {
55
+ t1 = cx(Tabs_module_default.list, className);
56
+ $[3] = className;
57
+ $[4] = t1;
58
+ } else t1 = $[4];
59
+ let t2;
60
+ if ($[5] !== props || $[6] !== t1) {
61
+ t2 = /* @__PURE__ */ jsx(TabList, {
62
+ ...props,
63
+ className: t1
64
+ });
65
+ $[5] = props;
66
+ $[6] = t1;
67
+ $[7] = t2;
68
+ } else t2 = $[7];
69
+ return t2;
70
+ }
71
+ /** A tab. Put a `Badge` in it for a count, such as the errors of the panel. */
72
+ function Tab$1(t0) {
73
+ const $ = c(8);
74
+ let className;
75
+ let props;
76
+ if ($[0] !== t0) {
77
+ ({className, ...props} = t0);
78
+ $[0] = t0;
79
+ $[1] = className;
80
+ $[2] = props;
81
+ } else {
82
+ className = $[1];
83
+ props = $[2];
84
+ }
85
+ let t1;
86
+ if ($[3] !== className) {
87
+ t1 = cx(Tabs_module_default.tab, className);
88
+ $[3] = className;
89
+ $[4] = t1;
90
+ } else t1 = $[4];
91
+ let t2;
92
+ if ($[5] !== props || $[6] !== t1) {
93
+ t2 = /* @__PURE__ */ jsx(Tab, {
94
+ ...props,
95
+ className: t1
96
+ });
97
+ $[5] = props;
98
+ $[6] = t1;
99
+ $[7] = t2;
100
+ } else t2 = $[7];
101
+ return t2;
102
+ }
103
+ /**
104
+ * The content of a tab. With `shouldForceMount`, the panel stays mounted (and hidden) when another
105
+ * tab is selected, which keeps the state of its fields.
106
+ */
107
+ function TabPanel$1(t0) {
108
+ const $ = c(8);
109
+ let className;
110
+ let props;
111
+ if ($[0] !== t0) {
112
+ ({className, ...props} = t0);
113
+ $[0] = t0;
114
+ $[1] = className;
115
+ $[2] = props;
116
+ } else {
117
+ className = $[1];
118
+ props = $[2];
119
+ }
120
+ let t1;
121
+ if ($[3] !== className) {
122
+ t1 = cx(Tabs_module_default.panel, className);
123
+ $[3] = className;
124
+ $[4] = t1;
125
+ } else t1 = $[4];
126
+ let t2;
127
+ if ($[5] !== props || $[6] !== t1) {
128
+ t2 = /* @__PURE__ */ jsx(TabPanel, {
129
+ ...props,
130
+ className: t1
131
+ });
132
+ $[5] = props;
133
+ $[6] = t1;
134
+ $[7] = t2;
135
+ } else t2 = $[7];
136
+ return t2;
137
+ }
138
+ //#endregion
139
+ export { Tab$1 as Tab, TabList$1 as TabList, TabPanel$1 as TabPanel, Tabs$1 as Tabs };
140
+
141
+ //# sourceMappingURL=Tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.js","names":["Tabs","_c","styles","AriaTabs","TabList","AriaTabList","Tab","AriaTab","TabPanel","AriaTabPanel"],"sources":["../../src/tabs/Tabs.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n Tab as AriaTab,\n TabList as AriaTabList,\n type TabListProps as AriaTabListProps,\n TabPanel as AriaTabPanel,\n type TabPanelProps as AriaTabPanelProps,\n type TabProps as AriaTabProps,\n Tabs as AriaTabs,\n type TabsProps as AriaTabsProps,\n} from 'react-aria-components';\n\nimport { cx } from '../utils/cx';\nimport styles from './Tabs.module.css';\n\nexport interface TabsProps extends Omit<AriaTabsProps, 'className' | 'style'> {\n className?: string;\n}\n\n/** Tabs: a `TabList` of `Tab`s, then a `TabPanel` per tab, matched by `id`. */\nexport function Tabs({ className, ...props }: TabsProps) {\n return <AriaTabs {...props} className={cx(styles.tabs, className)} />;\n}\n\nexport interface TabListProps<T extends object> extends Omit<\n AriaTabListProps<T>,\n 'className' | 'style'\n> {\n className?: string;\n}\n\n/** The row of tabs. It scrolls sideways when the tabs don't fit, on phones. */\nexport function TabList<T extends object>({ className, ...props }: TabListProps<T>) {\n return <AriaTabList {...props} className={cx(styles.list, className)} />;\n}\n\nexport interface TabProps extends Omit<AriaTabProps, 'className' | 'style' | 'children'> {\n children?: ReactNode;\n className?: string;\n}\n\n/** A tab. Put a `Badge` in it for a count, such as the errors of the panel. */\nexport function Tab({ className, ...props }: TabProps) {\n return <AriaTab {...props} className={cx(styles.tab, className)} />;\n}\n\nexport interface TabPanelProps extends Omit<AriaTabPanelProps, 'className' | 'style'> {\n className?: string;\n}\n\n/**\n * The content of a tab. With `shouldForceMount`, the panel stays mounted (and hidden) when another\n * tab is selected, which keeps the state of its fields.\n */\nexport function TabPanel({ className, ...props }: TabPanelProps) {\n return <AriaTabPanel {...props} className={cx(styles.panel, className)} />;\n}\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import "./Tabs.css";
2
+ //#region src/tabs/Tabs.module.css
3
+ var tabs = "panneau-tabs-JqDxcK";
4
+ var list = "panneau-list-uiIzNm";
5
+ var tab = "panneau-tab-dwPfFm";
6
+ var panel = "panneau-panel-H3uAcq";
7
+ var Tabs_module_default = {
8
+ tabs,
9
+ list,
10
+ tab,
11
+ panel
12
+ };
13
+ //#endregion
14
+ export { Tabs_module_default as default, list, panel, tab, tabs };
15
+
16
+ //# sourceMappingURL=Tabs.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.module.js","names":[],"sources":["../../src/tabs/Tabs.module.css"],"sourcesContent":[".tabs {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-4);\n min-width: 0;\n}\n\n.list {\n display: flex;\n gap: var(--panneau-space-1);\n overflow-x: auto;\n border-bottom: var(--panneau-border-width) solid var(--panneau-color-border);\n scrollbar-width: none;\n}\n\n.list::-webkit-scrollbar {\n display: none;\n}\n\n.tab {\n position: relative;\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n gap: var(--panneau-space-2);\n min-height: var(--panneau-control-height);\n padding: 0 var(--panneau-space-3);\n font-size: var(--panneau-font-size-md);\n font-weight: var(--panneau-font-weight-medium);\n color: var(--panneau-color-text-muted);\n white-space: nowrap;\n cursor: pointer;\n outline: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.tab::after {\n position: absolute;\n inset-inline: var(--panneau-space-2);\n bottom: calc(-1 * var(--panneau-border-width));\n height: 2px;\n content: '';\n background-color: transparent;\n border-radius: 2px 2px 0 0;\n}\n\n.tab[data-hovered] {\n color: var(--panneau-color-text);\n}\n\n.tab[data-selected] {\n color: var(--panneau-color-text);\n}\n\n.tab[data-selected]::after {\n background-color: var(--panneau-color-accent);\n}\n\n.tab[data-disabled] {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n.tab[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: -2px;\n border-radius: var(--panneau-radius-sm);\n}\n\n.panel {\n min-width: 0;\n outline: none;\n}\n\n.panel[data-focus-visible] {\n outline: var(--panneau-focus-width) solid var(--panneau-color-focus);\n outline-offset: 2px;\n}\n\n.panel[data-inert],\n.panel[inert] {\n display: none;\n}\n"],"mappings":""}
@@ -0,0 +1,8 @@
1
+ /* Doubled class: overrides the shared control, whatever the CSS order. */
2
+ .panneau-textArea-ET01uE.panneau-textArea-ET01uE {
3
+ display: block;
4
+ min-height: calc(var(--panneau-control-height) * 2);
5
+ padding: var(--panneau-space-2) var(--panneau-space-3);
6
+ line-height: var(--panneau-line-height);
7
+ resize: vertical;
8
+ }
@@ -0,0 +1,11 @@
1
+ import { type TextFieldProps as AriaTextFieldProps } from 'react-aria-components';
2
+ import { type FieldChromeProps } from '../field/FieldParts';
3
+ export interface TextAreaProps extends Omit<AriaTextFieldProps, 'className' | 'style' | 'children' | 'isInvalid' | 'validate'>, FieldChromeProps {
4
+ placeholder?: string;
5
+ /** Visible lines of text. Defaults to 4. */
6
+ rows?: number;
7
+ textAreaClassName?: string;
8
+ }
9
+ /** A multi-line text input with its label, description and errors. */
10
+ export declare function TextArea({ label, description, errors, placeholder, rows, className, labelClassName, descriptionClassName, errorsClassName, textAreaClassName, isRequired, ...props }: TextAreaProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=TextArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../src/text-area/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,cAAc,IAAI,kBAAkB,EAE5C,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,aACb,SACI,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC,EACvF,gBAAgB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,EACrB,KAAK,EACL,WAAW,EACX,MAAW,EACX,WAAW,EACX,IAAQ,EACR,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,GAAG,KAAK,EACX,EAAE,aAAa,+BAqBf"}
@@ -0,0 +1,41 @@
1
+ import { cx } from "../utils/cx.js";
2
+ import Field_module_default from "../field/Field.module.js";
3
+ import { FieldDescription, FieldErrors, FieldLabel } from "../field/FieldParts.js";
4
+ import TextArea_module_default from "./TextArea.module.js";
5
+ import { TextArea, TextField } from "react-aria-components";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ //#region src/text-area/TextArea.tsx
8
+ /** A multi-line text input with its label, description and errors. */
9
+ function TextArea$1({ label, description, errors = [], placeholder, rows = 4, className, labelClassName, descriptionClassName, errorsClassName, textAreaClassName, isRequired, ...props }) {
10
+ return /* @__PURE__ */ jsxs(TextField, {
11
+ ...props,
12
+ isRequired,
13
+ isInvalid: errors.length > 0,
14
+ validationBehavior: "aria",
15
+ className: cx(Field_module_default.field, className),
16
+ children: [
17
+ /* @__PURE__ */ jsx(FieldLabel, {
18
+ isRequired,
19
+ className: labelClassName,
20
+ children: label
21
+ }),
22
+ /* @__PURE__ */ jsx(TextArea, {
23
+ placeholder,
24
+ rows,
25
+ className: cx(Field_module_default.control, TextArea_module_default.textArea, textAreaClassName)
26
+ }),
27
+ /* @__PURE__ */ jsx(FieldDescription, {
28
+ className: descriptionClassName,
29
+ children: description
30
+ }),
31
+ /* @__PURE__ */ jsx(FieldErrors, {
32
+ errors,
33
+ className: errorsClassName
34
+ })
35
+ ]
36
+ });
37
+ }
38
+ //#endregion
39
+ export { TextArea$1 as TextArea };
40
+
41
+ //# sourceMappingURL=TextArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.js","names":["TextArea","fieldStyles","AriaTextArea","styles"],"sources":["../../src/text-area/TextArea.tsx"],"sourcesContent":["import {\n TextArea as AriaTextArea,\n type TextFieldProps as AriaTextFieldProps,\n TextField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles,\n} from '../field/FieldParts';\nimport { cx } from '../utils/cx';\nimport styles from './TextArea.module.css';\n\nexport interface TextAreaProps\n extends\n Omit<AriaTextFieldProps, 'className' | 'style' | 'children' | 'isInvalid' | 'validate'>,\n FieldChromeProps {\n placeholder?: string;\n /** Visible lines of text. Defaults to 4. */\n rows?: number;\n textAreaClassName?: string;\n}\n\n/** A multi-line text input with its label, description and errors. */\nexport function TextArea({\n label,\n description,\n errors = [],\n placeholder,\n rows = 4,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n textAreaClassName,\n isRequired,\n ...props\n}: TextAreaProps) {\n return (\n <TextField\n {...props}\n isRequired={isRequired}\n isInvalid={errors.length > 0}\n validationBehavior=\"aria\"\n className={cx(fieldStyles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n <AriaTextArea\n placeholder={placeholder}\n rows={rows}\n className={cx(fieldStyles.control, styles.textArea, textAreaClassName)}\n />\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </TextField>\n );\n}\n"],"mappings":";;;;;;;;AA2BA,SAAgBA,WAAS,EACrB,OACA,aACA,SAAS,CAAA,GACT,aACA,OAAO,GACP,WACA,gBACA,sBACA,iBACA,mBACA,YACA,GAAG,SACW;CACd,OACI,qBAAC,WAAD;EACI,GAAI;EACQ;EACZ,WAAW,OAAO,SAAS;EAC3B,oBAAmB;EACnB,WAAW,GAAGC,qBAAY,OAAO,SAAS;EAL9C,UAAA;GAOI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACZ,oBAACC,UAAD;IACiB;IACP;IACN,WAAW,GAAGD,qBAAY,SAASE,wBAAO,UAAU,iBAAiB;GAAE,CAAA;GAE3E,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
@@ -0,0 +1,8 @@
1
+ import "./TextArea.css";
2
+ //#region src/text-area/TextArea.module.css
3
+ var textArea = "panneau-textArea-ET01uE";
4
+ var TextArea_module_default = { textArea };
5
+ //#endregion
6
+ export { TextArea_module_default as default, textArea };
7
+
8
+ //# sourceMappingURL=TextArea.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextArea.module.js","names":[],"sources":["../../src/text-area/TextArea.module.css"],"sourcesContent":["/* Doubled class: overrides the shared control, whatever the CSS order. */\n.textArea.textArea {\n display: block;\n min-height: calc(var(--panneau-control-height) * 2);\n padding: var(--panneau-space-2) var(--panneau-space-3);\n line-height: var(--panneau-line-height);\n resize: vertical;\n}\n"],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import type { ReactNode } from 'react';
2
+ import { type TextFieldProps as AriaTextFieldProps } from 'react-aria-components';
3
+ import { type FieldChromeProps } from '../field/FieldParts';
4
+ export interface TextInputProps extends Omit<AriaTextFieldProps, 'className' | 'style' | 'children' | 'isInvalid' | 'validate' | 'type'>, FieldChromeProps {
5
+ type?: 'text' | 'email' | 'url' | 'tel' | 'password' | 'search';
6
+ placeholder?: string;
7
+ /** Content before the text, inside the control: a unit, a URL prefix, an icon. */
8
+ prefix?: ReactNode;
9
+ /** Content after the text, inside the control. */
10
+ suffix?: ReactNode;
11
+ /** Class name of the control (the box around the text). */
12
+ controlClassName?: string;
13
+ inputClassName?: string;
14
+ }
15
+ /** A single-line text input with its label, description and errors. */
16
+ export declare function TextInput({ label, description, errors, placeholder, prefix, suffix, className, labelClassName, descriptionClassName, errorsClassName, controlClassName, inputClassName, isRequired, isReadOnly, ...props }: TextInputProps): import("react").JSX.Element;
17
+ //# sourceMappingURL=TextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../src/text-input/TextInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EACH,KAAK,cAAc,IAAI,kBAAkB,EAI5C,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACH,KAAK,gBAAgB,EAKxB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,cACb,SACI,IAAI,CACA,kBAAkB,EAClB,WAAW,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CACzE,EACD,gBAAgB;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,WAAW,EACX,MAAW,EACX,WAAW,EACX,MAAM,EACN,MAAM,EACN,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,UAAU,EACV,GAAG,KAAK,EACX,EAAE,cAAc,+BAwChB"}
@@ -0,0 +1,61 @@
1
+ import { cx } from "../utils/cx.js";
2
+ import Field_module_default from "../field/Field.module.js";
3
+ import { FieldDescription, FieldErrors, FieldLabel } from "../field/FieldParts.js";
4
+ import { Group, Input, TextField } from "react-aria-components";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/text-input/TextInput.tsx
7
+ /** A single-line text input with its label, description and errors. */
8
+ function TextInput({ label, description, errors = [], placeholder, prefix, suffix, className, labelClassName, descriptionClassName, errorsClassName, controlClassName, inputClassName, isRequired, isReadOnly, ...props }) {
9
+ const invalid = errors.length > 0;
10
+ const adorned = prefix !== void 0 || suffix !== void 0;
11
+ return /* @__PURE__ */ jsxs(TextField, {
12
+ ...props,
13
+ isRequired,
14
+ isReadOnly,
15
+ isInvalid: invalid,
16
+ validationBehavior: "aria",
17
+ className: cx(Field_module_default.field, className),
18
+ children: [
19
+ /* @__PURE__ */ jsx(FieldLabel, {
20
+ isRequired,
21
+ className: labelClassName,
22
+ children: label
23
+ }),
24
+ adorned ? /* @__PURE__ */ jsxs(Group, {
25
+ className: cx(Field_module_default.control, controlClassName),
26
+ "data-invalid": invalid || void 0,
27
+ "data-readonly": isReadOnly || void 0,
28
+ isDisabled: props.isDisabled,
29
+ children: [
30
+ prefix !== void 0 ? /* @__PURE__ */ jsx("span", {
31
+ className: Field_module_default.adornment,
32
+ children: prefix
33
+ }) : null,
34
+ /* @__PURE__ */ jsx(Input, {
35
+ placeholder,
36
+ className: cx(Field_module_default.bare, inputClassName)
37
+ }),
38
+ suffix !== void 0 ? /* @__PURE__ */ jsx("span", {
39
+ className: Field_module_default.adornment,
40
+ children: suffix
41
+ }) : null
42
+ ]
43
+ }) : /* @__PURE__ */ jsx(Input, {
44
+ placeholder,
45
+ className: cx(Field_module_default.control, controlClassName, inputClassName)
46
+ }),
47
+ /* @__PURE__ */ jsx(FieldDescription, {
48
+ className: descriptionClassName,
49
+ children: description
50
+ }),
51
+ /* @__PURE__ */ jsx(FieldErrors, {
52
+ errors,
53
+ className: errorsClassName
54
+ })
55
+ ]
56
+ });
57
+ }
58
+ //#endregion
59
+ export { TextInput };
60
+
61
+ //# sourceMappingURL=TextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.js","names":["styles"],"sources":["../../src/text-input/TextInput.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport {\n type TextFieldProps as AriaTextFieldProps,\n Group,\n Input,\n TextField,\n} from 'react-aria-components';\n\nimport {\n type FieldChromeProps,\n FieldDescription,\n FieldErrors,\n FieldLabel,\n fieldStyles as styles,\n} from '../field/FieldParts';\nimport { cx } from '../utils/cx';\n\nexport interface TextInputProps\n extends\n Omit<\n AriaTextFieldProps,\n 'className' | 'style' | 'children' | 'isInvalid' | 'validate' | 'type'\n >,\n FieldChromeProps {\n type?: 'text' | 'email' | 'url' | 'tel' | 'password' | 'search';\n placeholder?: string;\n /** Content before the text, inside the control: a unit, a URL prefix, an icon. */\n prefix?: ReactNode;\n /** Content after the text, inside the control. */\n suffix?: ReactNode;\n /** Class name of the control (the box around the text). */\n controlClassName?: string;\n inputClassName?: string;\n}\n\n/** A single-line text input with its label, description and errors. */\nexport function TextInput({\n label,\n description,\n errors = [],\n placeholder,\n prefix,\n suffix,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n inputClassName,\n isRequired,\n isReadOnly,\n ...props\n}: TextInputProps) {\n const invalid = errors.length > 0;\n const adorned = prefix !== undefined || suffix !== undefined;\n return (\n <TextField\n {...props}\n isRequired={isRequired}\n isReadOnly={isReadOnly}\n isInvalid={invalid}\n validationBehavior=\"aria\"\n className={cx(styles.field, className)}\n >\n <FieldLabel isRequired={isRequired} className={labelClassName}>\n {label}\n </FieldLabel>\n {adorned ? (\n <Group\n className={cx(styles.control, controlClassName)}\n data-invalid={invalid || undefined}\n data-readonly={isReadOnly || undefined}\n isDisabled={props.isDisabled}\n >\n {prefix !== undefined ? (\n <span className={styles.adornment}>{prefix}</span>\n ) : null}\n <Input placeholder={placeholder} className={cx(styles.bare, inputClassName)} />\n {suffix !== undefined ? (\n <span className={styles.adornment}>{suffix}</span>\n ) : null}\n </Group>\n ) : (\n <Input\n placeholder={placeholder}\n className={cx(styles.control, controlClassName, inputClassName)}\n />\n )}\n <FieldDescription className={descriptionClassName}>{description}</FieldDescription>\n <FieldErrors errors={errors} className={errorsClassName} />\n </TextField>\n );\n}\n"],"mappings":";;;;;;;AAoCA,SAAgB,UAAU,EACtB,OACA,aACA,SAAS,CAAA,GACT,aACA,QACA,QACA,WACA,gBACA,sBACA,iBACA,kBACA,gBACA,YACA,YACA,GAAG,SACY;CACf,MAAM,UAAU,OAAO,SAAS;CAChC,MAAM,UAAU,WAAW,KAAA,KAAa,WAAW,KAAA;CACnD,OACI,qBAAC,WAAD;EACI,GAAI;EACQ;EACA;EACZ,WAAW;EACX,oBAAmB;EACnB,WAAW,GAAGA,qBAAO,OAAO,SAAS;EANzC,UAAA;GAQI,oBAAC,YAAD;IAAwB;IAAY,WAAW;IAC1C,UAAA;GACO,CAAA;GACX,UACG,qBAAC,OAAD;IACI,WAAW,GAAGA,qBAAO,SAAS,gBAAgB;IAC9C,gBAAc,WAAW,KAAA;IACzB,iBAAe,cAAc,KAAA;IAC7B,YAAY,MAAM;IAJtB,UAAA;KAMK,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWA,qBAAO;MAAY,UAAA;KAAa,CAAA,IACjD;KACJ,oBAAC,OAAD;MAAoB;MAAa,WAAW,GAAGA,qBAAO,MAAM,cAAc;KAAE,CAAA;KAC3E,WAAW,KAAA,IACR,oBAAC,QAAD;MAAM,WAAWA,qBAAO;MAAY,UAAA;KAAa,CAAA,IACjD;IACD;GAEP,CAAA,IAAA,oBAAC,OAAD;IACiB;IACb,WAAW,GAAGA,qBAAO,SAAS,kBAAkB,cAAc;GAAE,CAAA;GAGxE,oBAAC,kBAAD;IAAkB,WAAW;IAAuB,UAAA;GAA8B,CAAA;GAClF,oBAAC,aAAD;IAAqB;IAAQ,WAAW;GAAgB,CAAA;EACjD;;AAEnB"}
@@ -0,0 +1,8 @@
1
+ import type { Theme } from './theme';
2
+ /**
3
+ * Maps Panneau's tokens to the CSS variables of Bootstrap 5.3, for sites that use Bootstrap: Panneau
4
+ * then follows the site's colors, fonts and radii, and its color mode (`data-bs-theme`), without
5
+ * using any Bootstrap class. Bootstrap's CSS must be loaded by the site.
6
+ */
7
+ export declare const bootstrapTheme: Theme;
8
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/theme/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,KAkD5B,CAAC"}