jaci-ui 0.3.0 → 0.5.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 (188) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +85 -0
  3. package/dist/components/calendar/calendar.cjs +377 -0
  4. package/dist/components/calendar/calendar.cjs.map +1 -0
  5. package/dist/components/calendar/calendar.d.cts +56 -0
  6. package/dist/components/calendar/calendar.d.ts +56 -0
  7. package/dist/components/calendar/calendar.js +368 -0
  8. package/dist/components/calendar/calendar.js.map +1 -0
  9. package/dist/components/calendar/index.d.cts +2 -0
  10. package/dist/components/calendar/index.d.ts +2 -0
  11. package/dist/components/combobox/combobox.cjs +13 -1
  12. package/dist/components/combobox/combobox.cjs.map +1 -1
  13. package/dist/components/combobox/combobox.d.cts +7 -2
  14. package/dist/components/combobox/combobox.d.ts +7 -2
  15. package/dist/components/combobox/combobox.js +13 -2
  16. package/dist/components/combobox/combobox.js.map +1 -1
  17. package/dist/components/combobox/index.d.cts +2 -2
  18. package/dist/components/combobox/index.d.ts +2 -2
  19. package/dist/components/command/command.cjs +55 -34
  20. package/dist/components/command/command.cjs.map +1 -1
  21. package/dist/components/command/command.d.cts +1 -0
  22. package/dist/components/command/command.d.ts +1 -0
  23. package/dist/components/command/command.js +55 -34
  24. package/dist/components/command/command.js.map +1 -1
  25. package/dist/components/controls/input.cjs +26 -5
  26. package/dist/components/controls/input.cjs.map +1 -1
  27. package/dist/components/controls/input.d.cts +5 -2
  28. package/dist/components/controls/input.d.ts +5 -2
  29. package/dist/components/controls/input.js +28 -7
  30. package/dist/components/controls/input.js.map +1 -1
  31. package/dist/components/controls/textarea.cjs +26 -5
  32. package/dist/components/controls/textarea.cjs.map +1 -1
  33. package/dist/components/controls/textarea.d.cts +5 -2
  34. package/dist/components/controls/textarea.d.ts +5 -2
  35. package/dist/components/controls/textarea.js +28 -7
  36. package/dist/components/controls/textarea.js.map +1 -1
  37. package/dist/components/data-toolbar/data-toolbar.cjs +141 -0
  38. package/dist/components/data-toolbar/data-toolbar.cjs.map +1 -0
  39. package/dist/components/data-toolbar/data-toolbar.d.cts +50 -0
  40. package/dist/components/data-toolbar/data-toolbar.d.ts +50 -0
  41. package/dist/components/data-toolbar/data-toolbar.js +132 -0
  42. package/dist/components/data-toolbar/data-toolbar.js.map +1 -0
  43. package/dist/components/data-toolbar/index.d.cts +2 -0
  44. package/dist/components/data-toolbar/index.d.ts +2 -0
  45. package/dist/components/data-view/data-view.cjs +33 -1
  46. package/dist/components/data-view/data-view.cjs.map +1 -1
  47. package/dist/components/data-view/data-view.d.cts +12 -1
  48. package/dist/components/data-view/data-view.d.ts +12 -1
  49. package/dist/components/data-view/data-view.js +31 -2
  50. package/dist/components/data-view/data-view.js.map +1 -1
  51. package/dist/components/data-view/index.d.cts +2 -2
  52. package/dist/components/data-view/index.d.ts +2 -2
  53. package/dist/components/date-picker/date-picker.cjs +9 -9
  54. package/dist/components/date-picker/date-picker.cjs.map +1 -1
  55. package/dist/components/date-picker/date-picker.d.cts +3 -1
  56. package/dist/components/date-picker/date-picker.d.ts +3 -1
  57. package/dist/components/date-picker/date-picker.js +9 -9
  58. package/dist/components/date-picker/date-picker.js.map +1 -1
  59. package/dist/components/date-range-picker/date-range-picker.cjs +589 -0
  60. package/dist/components/date-range-picker/date-range-picker.cjs.map +1 -0
  61. package/dist/components/date-range-picker/date-range-picker.d.cts +134 -0
  62. package/dist/components/date-range-picker/date-range-picker.d.ts +134 -0
  63. package/dist/components/date-range-picker/date-range-picker.js +568 -0
  64. package/dist/components/date-range-picker/date-range-picker.js.map +1 -0
  65. package/dist/components/date-range-picker/index.d.cts +2 -0
  66. package/dist/components/date-range-picker/index.d.ts +2 -0
  67. package/dist/components/field/field.cjs +106 -11
  68. package/dist/components/field/field.cjs.map +1 -1
  69. package/dist/components/field/field.d.cts +22 -4
  70. package/dist/components/field/field.d.ts +22 -4
  71. package/dist/components/field/field.js +107 -13
  72. package/dist/components/field/field.js.map +1 -1
  73. package/dist/components/field/index.d.cts +2 -2
  74. package/dist/components/field/index.d.ts +2 -2
  75. package/dist/components/list/list.cjs +3 -1
  76. package/dist/components/list/list.cjs.map +1 -1
  77. package/dist/components/list/list.d.cts +3 -1
  78. package/dist/components/list/list.d.ts +3 -1
  79. package/dist/components/list/list.js +3 -1
  80. package/dist/components/list/list.js.map +1 -1
  81. package/dist/components/pagination/index.d.cts +2 -2
  82. package/dist/components/pagination/index.d.ts +2 -2
  83. package/dist/components/pagination/pagination.cjs +122 -21
  84. package/dist/components/pagination/pagination.cjs.map +1 -1
  85. package/dist/components/pagination/pagination.d.cts +25 -13
  86. package/dist/components/pagination/pagination.d.ts +25 -13
  87. package/dist/components/pagination/pagination.js +122 -23
  88. package/dist/components/pagination/pagination.js.map +1 -1
  89. package/dist/components/pin-input/index.d.cts +2 -0
  90. package/dist/components/pin-input/index.d.ts +2 -0
  91. package/dist/components/pin-input/pin-input.cjs +266 -0
  92. package/dist/components/pin-input/pin-input.cjs.map +1 -0
  93. package/dist/components/pin-input/pin-input.d.cts +46 -0
  94. package/dist/components/pin-input/pin-input.d.ts +46 -0
  95. package/dist/components/pin-input/pin-input.js +258 -0
  96. package/dist/components/pin-input/pin-input.js.map +1 -0
  97. package/dist/components/select/index.d.cts +2 -2
  98. package/dist/components/select/index.d.ts +2 -2
  99. package/dist/components/select/select.cjs +80 -3
  100. package/dist/components/select/select.cjs.map +1 -1
  101. package/dist/components/select/select.d.cts +18 -3
  102. package/dist/components/select/select.d.ts +18 -3
  103. package/dist/components/select/select.js +78 -5
  104. package/dist/components/select/select.js.map +1 -1
  105. package/dist/components/table/index.d.cts +2 -2
  106. package/dist/components/table/index.d.ts +2 -2
  107. package/dist/components/table/table.cjs +265 -46
  108. package/dist/components/table/table.cjs.map +1 -1
  109. package/dist/components/table/table.d.cts +41 -8
  110. package/dist/components/table/table.d.ts +41 -8
  111. package/dist/components/table/table.js +264 -48
  112. package/dist/components/table/table.js.map +1 -1
  113. package/dist/components/tags-input/tags-input.cjs +83 -5
  114. package/dist/components/tags-input/tags-input.cjs.map +1 -1
  115. package/dist/components/tags-input/tags-input.d.cts +3 -0
  116. package/dist/components/tags-input/tags-input.d.ts +3 -0
  117. package/dist/components/tags-input/tags-input.js +83 -5
  118. package/dist/components/tags-input/tags-input.js.map +1 -1
  119. package/dist/components/tree-view/index.d.cts +2 -2
  120. package/dist/components/tree-view/index.d.ts +2 -2
  121. package/dist/components/tree-view/tree-view.cjs +60 -3
  122. package/dist/components/tree-view/tree-view.cjs.map +1 -1
  123. package/dist/components/tree-view/tree-view.d.cts +12 -1
  124. package/dist/components/tree-view/tree-view.d.ts +12 -1
  125. package/dist/components/tree-view/tree-view.js +58 -4
  126. package/dist/components/tree-view/tree-view.js.map +1 -1
  127. package/dist/components/upload/index.d.cts +2 -2
  128. package/dist/components/upload/index.d.ts +2 -2
  129. package/dist/components/upload/upload.cjs +90 -10
  130. package/dist/components/upload/upload.cjs.map +1 -1
  131. package/dist/components/upload/upload.d.cts +25 -2
  132. package/dist/components/upload/upload.d.ts +25 -2
  133. package/dist/components/upload/upload.js +89 -11
  134. package/dist/components/upload/upload.js.map +1 -1
  135. package/dist/index.cjs +74 -1
  136. package/dist/index.d.cts +17 -9
  137. package/dist/index.d.ts +17 -9
  138. package/dist/index.js +14 -10
  139. package/dist/styled-system/recipes/calendar.cjs +43 -0
  140. package/dist/styled-system/recipes/calendar.cjs.map +1 -0
  141. package/dist/styled-system/recipes/calendar.js +43 -0
  142. package/dist/styled-system/recipes/calendar.js.map +1 -0
  143. package/dist/styled-system/recipes/combobox.cjs +1 -0
  144. package/dist/styled-system/recipes/combobox.cjs.map +1 -1
  145. package/dist/styled-system/recipes/combobox.js +1 -0
  146. package/dist/styled-system/recipes/combobox.js.map +1 -1
  147. package/dist/styled-system/recipes/data-toolbar.cjs +40 -0
  148. package/dist/styled-system/recipes/data-toolbar.cjs.map +1 -0
  149. package/dist/styled-system/recipes/data-toolbar.js +40 -0
  150. package/dist/styled-system/recipes/data-toolbar.js.map +1 -0
  151. package/dist/styled-system/recipes/data-view.cjs +3 -0
  152. package/dist/styled-system/recipes/data-view.cjs.map +1 -1
  153. package/dist/styled-system/recipes/data-view.js +3 -0
  154. package/dist/styled-system/recipes/data-view.js.map +1 -1
  155. package/dist/styled-system/recipes/date-range-picker.cjs +52 -0
  156. package/dist/styled-system/recipes/date-range-picker.cjs.map +1 -0
  157. package/dist/styled-system/recipes/date-range-picker.js +52 -0
  158. package/dist/styled-system/recipes/date-range-picker.js.map +1 -0
  159. package/dist/styled-system/recipes/list.cjs +7 -1
  160. package/dist/styled-system/recipes/list.cjs.map +1 -1
  161. package/dist/styled-system/recipes/list.js +7 -1
  162. package/dist/styled-system/recipes/list.js.map +1 -1
  163. package/dist/styled-system/recipes/pagination.cjs +9 -1
  164. package/dist/styled-system/recipes/pagination.cjs.map +1 -1
  165. package/dist/styled-system/recipes/pagination.js +9 -1
  166. package/dist/styled-system/recipes/pagination.js.map +1 -1
  167. package/dist/styled-system/recipes/pin-input.cjs +39 -0
  168. package/dist/styled-system/recipes/pin-input.cjs.map +1 -0
  169. package/dist/styled-system/recipes/pin-input.js +39 -0
  170. package/dist/styled-system/recipes/pin-input.js.map +1 -0
  171. package/dist/styled-system/recipes/select.cjs +5 -1
  172. package/dist/styled-system/recipes/select.cjs.map +1 -1
  173. package/dist/styled-system/recipes/select.js +5 -1
  174. package/dist/styled-system/recipes/select.js.map +1 -1
  175. package/dist/styled-system/recipes/table.cjs +15 -2
  176. package/dist/styled-system/recipes/table.cjs.map +1 -1
  177. package/dist/styled-system/recipes/table.js +15 -2
  178. package/dist/styled-system/recipes/table.js.map +1 -1
  179. package/dist/styled-system/recipes/tree-view.cjs +4 -1
  180. package/dist/styled-system/recipes/tree-view.cjs.map +1 -1
  181. package/dist/styled-system/recipes/tree-view.js +4 -1
  182. package/dist/styled-system/recipes/tree-view.js.map +1 -1
  183. package/dist/styled-system/recipes/upload.cjs +2 -0
  184. package/dist/styled-system/recipes/upload.cjs.map +1 -1
  185. package/dist/styled-system/recipes/upload.js +2 -0
  186. package/dist/styled-system/recipes/upload.js.map +1 -1
  187. package/dist/styles.css +995 -95
  188. package/package.json +3 -2
@@ -1,28 +1,49 @@
1
1
  "use client";
2
2
  import { cx } from "../../styled-system/css/cx.js";
3
3
  import { textarea } from "../../styled-system/recipes/textarea.js";
4
- import { useFieldState } from "../field/field.js";
4
+ import { Spinner } from "../layout/index.js";
5
+ import { FieldControl, useFieldState } from "../field/field.js";
6
+ import { InputGroup } from "../input-group/input-group.js";
5
7
  import { forwardRef } from "react";
6
- import { jsx } from "react/jsx-runtime";
7
- import { Field } from "@base-ui/react/field";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
8
9
  //#region src/components/controls/textarea.tsx
9
- const Textarea = forwardRef(function Textarea({ className, size = "md", ...props }, ref) {
10
+ const Textarea = forwardRef(function Textarea({ className, loading = false, prefix, size = "md", suffix, ...props }, ref) {
10
11
  const { insideField } = useFieldState();
11
12
  const controlProps = {
12
13
  ...props,
14
+ "aria-busy": loading || void 0,
13
15
  className: cx(textarea({ size }), className),
14
16
  "data-jaci-component": "textarea",
17
+ "data-loading": loading || void 0,
15
18
  "data-slot": "textarea"
16
19
  };
17
- if (insideField) return /* @__PURE__ */ jsx(Field.Control, {
20
+ const control = insideField ? /* @__PURE__ */ jsx(FieldControl, {
18
21
  ...controlProps,
19
22
  ref,
20
23
  render: /* @__PURE__ */ jsx("textarea", {})
21
- });
22
- return /* @__PURE__ */ jsx("textarea", {
24
+ }) : /* @__PURE__ */ jsx("textarea", {
23
25
  ...controlProps,
24
26
  ref
25
27
  });
28
+ if (prefix !== void 0 || suffix !== void 0 || loading) return /* @__PURE__ */ jsxs(InputGroup, { children: [
29
+ prefix !== void 0 ? /* @__PURE__ */ jsx(InputGroup.Addon, {
30
+ "data-slot": "textarea-prefix",
31
+ children: prefix
32
+ }) : null,
33
+ control,
34
+ loading ? /* @__PURE__ */ jsx(InputGroup.Addon, {
35
+ "aria-hidden": "true",
36
+ "data-slot": "textarea-loading",
37
+ children: /* @__PURE__ */ jsx(Spinner, {
38
+ label: "",
39
+ size: "sm"
40
+ })
41
+ }) : suffix !== void 0 ? /* @__PURE__ */ jsx(InputGroup.Addon, {
42
+ "data-slot": "textarea-suffix",
43
+ children: suffix
44
+ }) : null
45
+ ] });
46
+ return control;
26
47
  });
27
48
  //#endregion
28
49
  export { Textarea };
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","names":["BaseField"],"sources":["../../../src/components/controls/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentProps, ComponentPropsWithoutRef, Ref } from \"react\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { textarea } from \"../../styled-system/recipes\";\nimport { useFieldState } from \"../field\";\n\nexport interface TextareaProps extends ComponentPropsWithoutRef<\"textarea\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, size = \"md\", ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n className: cx(textarea({ size }), className),\n \"data-jaci-component\": \"textarea\",\n \"data-slot\": \"textarea\",\n };\n\n if (insideField) {\n return (\n <BaseField.Control\n {...(controlProps as unknown as ComponentProps<typeof BaseField.Control>)}\n ref={ref as Ref<HTMLElement>}\n render={<textarea />}\n />\n );\n }\n\n return <textarea {...controlProps} ref={ref} />;\n});\n"],"mappings":";;;;;;;;AAcA,MAAa,WAAW,WAA+C,SAAS,SAC9E,EAAE,WAAW,OAAO,MAAM,GAAG,SAC7B,KACA;CACA,MAAM,EAAE,gBAAgB,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,WAAW,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3C,uBAAuB;EACvB,aAAa;CACf;CAEA,IAAI,aACF,OACE,oBAACA,MAAU,SAAX;EACE,GAAK;EACA;EACL,QAAQ,oBAAC,YAAD,CAAW,CAAA;CACpB,CAAA;CAIL,OAAO,oBAAC,YAAD;EAAU,GAAI;EAAmB;CAAM,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"textarea.js","names":[],"sources":["../../../src/components/controls/textarea.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport type { ComponentProps, ComponentPropsWithoutRef, ReactNode, Ref } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { textarea } from \"../../styled-system/recipes\";\nimport { FieldControl, useFieldState } from \"../field\";\nimport { InputGroup } from \"../input-group\";\nimport { Spinner } from \"../layout\";\n\nexport interface TextareaProps extends Omit<ComponentPropsWithoutRef<\"textarea\">, \"prefix\"> {\n size?: \"sm\" | \"md\" | \"lg\";\n prefix?: ReactNode;\n suffix?: ReactNode;\n loading?: boolean;\n}\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { className, loading = false, prefix, size = \"md\", suffix, ...props },\n ref,\n) {\n const { insideField } = useFieldState();\n const controlProps = {\n ...props,\n \"aria-busy\": loading || undefined,\n className: cx(textarea({ size }), className),\n \"data-jaci-component\": \"textarea\",\n \"data-loading\": loading || undefined,\n \"data-slot\": \"textarea\",\n };\n const control = insideField ? (\n <FieldControl\n {...(controlProps as unknown as ComponentProps<typeof FieldControl>)}\n ref={ref as Ref<HTMLElement>}\n render={<textarea />}\n />\n ) : (\n <textarea {...controlProps} ref={ref} />\n );\n\n if (prefix !== undefined || suffix !== undefined || loading) {\n return (\n <InputGroup>\n {prefix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-prefix\">{prefix}</InputGroup.Addon>\n ) : null}\n {control}\n {loading ? (\n <InputGroup.Addon aria-hidden=\"true\" data-slot=\"textarea-loading\">\n <Spinner label=\"\" size=\"sm\" />\n </InputGroup.Addon>\n ) : suffix !== undefined ? (\n <InputGroup.Addon data-slot=\"textarea-suffix\">{suffix}</InputGroup.Addon>\n ) : null}\n </InputGroup>\n );\n }\n\n return control;\n});\n"],"mappings":";;;;;;;;;AAkBA,MAAa,WAAW,WAA+C,SAAS,SAC9E,EAAE,WAAW,UAAU,OAAO,QAAQ,OAAO,MAAM,QAAQ,GAAG,SAC9D,KACA;CACA,MAAM,EAAE,gBAAgB,cAAc;CACtC,MAAM,eAAe;EACnB,GAAG;EACH,aAAa,WAAW,KAAA;EACxB,WAAW,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,SAAS;EAC3C,uBAAuB;EACvB,gBAAgB,WAAW,KAAA;EAC3B,aAAa;CACf;CACA,MAAM,UAAU,cACd,oBAAC,cAAD;EACE,GAAK;EACA;EACL,QAAQ,oBAAC,YAAD,CAAW,CAAA;CACpB,CAAA,IAED,oBAAC,YAAD;EAAU,GAAI;EAAmB;CAAM,CAAA;CAGzC,IAAI,WAAW,KAAA,KAAa,WAAW,KAAA,KAAa,SAClD,OACE,qBAAC,YAAD,EAAA,UAAA;EACG,WAAW,KAAA,IACV,oBAAC,WAAW,OAAZ;GAAkB,aAAU;aAAmB;EAAyB,CAAA,IACtE;EACH;EACA,UACC,oBAAC,WAAW,OAAZ;GAAkB,eAAY;GAAO,aAAU;aAC7C,oBAAC,SAAD;IAAS,OAAM;IAAG,MAAK;GAAM,CAAA;EACb,CAAA,IAChB,WAAW,KAAA,IACb,oBAAC,WAAW,OAAZ;GAAkB,aAAU;aAAmB;EAAyB,CAAA,IACtE;CACM,EAAA,CAAA;CAIhB,OAAO;AACT,CAAC"}
@@ -0,0 +1,141 @@
1
+ "use client";
2
+ const require_cx = require("../../styled-system/css/cx.cjs");
3
+ const require_data_toolbar = require("../../styled-system/recipes/data-toolbar.cjs");
4
+ let react = require("react");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
6
+ //#region src/components/data-toolbar/data-toolbar.tsx
7
+ const SelectionContext = (0, react.createContext)(null);
8
+ const DataToolbarRoot = (0, react.forwardRef)(function DataToolbarRoot({ className, role, ...props }, ref) {
9
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
10
+ ...props,
11
+ ref,
12
+ className: require_cx.cx(require_data_toolbar.dataToolbar().root, className),
13
+ "data-jaci-component": "data-toolbar",
14
+ "data-slot": "data-toolbar",
15
+ role: role ?? "toolbar"
16
+ });
17
+ });
18
+ const DataToolbarSearch = (0, react.forwardRef)(function DataToolbarSearch({ className, defaultValue = "", onValueChange, value: controlledValue, ...props }, ref) {
19
+ const [uncontrolledValue, setUncontrolledValue] = (0, react.useState)(defaultValue);
20
+ const value = controlledValue ?? uncontrolledValue;
21
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
22
+ ...props,
23
+ ref,
24
+ className: require_cx.cx(require_data_toolbar.dataToolbar().search, className),
25
+ "data-slot": "data-toolbar-search",
26
+ onChange: (event) => {
27
+ if (controlledValue === void 0) setUncontrolledValue(event.currentTarget.value);
28
+ onValueChange?.(event.currentTarget.value);
29
+ props.onChange?.(event);
30
+ },
31
+ type: props.type ?? "search",
32
+ value
33
+ });
34
+ });
35
+ const DataToolbarFilters = (0, react.forwardRef)(function DataToolbarFilters({ className, ...props }, ref) {
36
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
37
+ ...props,
38
+ ref,
39
+ className: require_cx.cx(require_data_toolbar.dataToolbar().filters, className),
40
+ "data-slot": "data-toolbar-filters"
41
+ });
42
+ });
43
+ const DataToolbarSort = (0, react.forwardRef)(function DataToolbarSort({ className, defaultValue = "", onValueChange, value: controlledValue, ...props }, ref) {
44
+ const [uncontrolledValue, setUncontrolledValue] = (0, react.useState)(defaultValue);
45
+ const value = controlledValue ?? uncontrolledValue;
46
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("select", {
47
+ ...props,
48
+ ref,
49
+ className: require_cx.cx(require_data_toolbar.dataToolbar().sort, className),
50
+ "data-slot": "data-toolbar-sort",
51
+ onChange: (event) => {
52
+ if (controlledValue === void 0) setUncontrolledValue(event.currentTarget.value);
53
+ onValueChange?.(event.currentTarget.value);
54
+ props.onChange?.(event);
55
+ },
56
+ value
57
+ });
58
+ });
59
+ const DataToolbarSelection = (0, react.forwardRef)(function DataToolbarSelection({ children, className, count, label = "selected", onClear, ...props }, ref) {
60
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectionContext.Provider, {
61
+ value: {
62
+ count,
63
+ onClear
64
+ },
65
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
66
+ ...props,
67
+ ref,
68
+ "aria-live": "polite",
69
+ className: require_cx.cx(require_data_toolbar.dataToolbar().selection, className),
70
+ "data-count": count,
71
+ "data-slot": "data-toolbar-selection",
72
+ children: children ?? `${count} ${label}`
73
+ })
74
+ });
75
+ });
76
+ const DataToolbarClearSelection = (0, react.forwardRef)(function DataToolbarClearSelection({ children = "Clear selection", className, onClick, ...props }, ref) {
77
+ const context = (0, react.useContext)(SelectionContext);
78
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
79
+ ...props,
80
+ ref,
81
+ className: require_cx.cx(require_data_toolbar.dataToolbar().clearSelection, className),
82
+ "data-slot": "data-toolbar-clear-selection",
83
+ onClick: (event) => {
84
+ context?.onClear?.();
85
+ onClick?.(event);
86
+ },
87
+ type: "button",
88
+ children
89
+ });
90
+ });
91
+ const DataToolbarActions = (0, react.forwardRef)(function DataToolbarActions({ className, ...props }, ref) {
92
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
93
+ ...props,
94
+ ref,
95
+ className: require_cx.cx(require_data_toolbar.dataToolbar().actions, className),
96
+ "data-slot": "data-toolbar-actions"
97
+ });
98
+ });
99
+ const DataToolbarClear = (0, react.forwardRef)(function DataToolbarClear({ children = "Clear filters", className, ...props }, ref) {
100
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
101
+ ...props,
102
+ ref,
103
+ className: require_cx.cx(require_data_toolbar.dataToolbar().clear, className),
104
+ "data-slot": "data-toolbar-clear",
105
+ type: "button",
106
+ children
107
+ });
108
+ });
109
+ const DataToolbarSeparator = (0, react.forwardRef)(function DataToolbarSeparator({ className, ...props }, ref) {
110
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
111
+ ...props,
112
+ ref,
113
+ "aria-hidden": "true",
114
+ className: require_cx.cx(require_data_toolbar.dataToolbar().separator, className),
115
+ "data-slot": "data-toolbar-separator"
116
+ });
117
+ });
118
+ const DataToolbar = {
119
+ Root: DataToolbarRoot,
120
+ Search: DataToolbarSearch,
121
+ Filters: DataToolbarFilters,
122
+ Sort: DataToolbarSort,
123
+ Selection: DataToolbarSelection,
124
+ ClearSelection: DataToolbarClearSelection,
125
+ Actions: DataToolbarActions,
126
+ Clear: DataToolbarClear,
127
+ Separator: DataToolbarSeparator
128
+ };
129
+ //#endregion
130
+ exports.DataToolbar = DataToolbar;
131
+ exports.DataToolbarActions = DataToolbarActions;
132
+ exports.DataToolbarClear = DataToolbarClear;
133
+ exports.DataToolbarClearSelection = DataToolbarClearSelection;
134
+ exports.DataToolbarFilters = DataToolbarFilters;
135
+ exports.DataToolbarRoot = DataToolbarRoot;
136
+ exports.DataToolbarSearch = DataToolbarSearch;
137
+ exports.DataToolbarSelection = DataToolbarSelection;
138
+ exports.DataToolbarSeparator = DataToolbarSeparator;
139
+ exports.DataToolbarSort = DataToolbarSort;
140
+
141
+ //# sourceMappingURL=data-toolbar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-toolbar.cjs","names":["cx","dataToolbar"],"sources":["../../../src/components/data-toolbar/data-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataToolbar } from \"../../styled-system/recipes\";\n\ninterface SelectionContextValue {\n count: number;\n onClear: (() => void) | undefined;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\nexport type DataToolbarRootProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarRoot = forwardRef<HTMLDivElement, DataToolbarRootProps>(\n function DataToolbarRoot({ className, role, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().root, className)}\n data-jaci-component=\"data-toolbar\"\n data-slot=\"data-toolbar\"\n role={role ?? \"toolbar\"}\n />\n );\n },\n);\n\nexport interface DataToolbarSearchProps\n extends Omit<ComponentPropsWithoutRef<\"input\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"input\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSearch = forwardRef<HTMLInputElement, DataToolbarSearchProps>(\n function DataToolbarSearch(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <input\n {...props}\n ref={ref}\n className={cx(dataToolbar().search, className)}\n data-slot=\"data-toolbar-search\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n type={props.type ?? \"search\"}\n value={value}\n />\n );\n },\n);\n\nexport type DataToolbarFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarFilters = forwardRef<HTMLDivElement, DataToolbarFiltersProps>(\n function DataToolbarFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().filters, className)}\n data-slot=\"data-toolbar-filters\"\n />\n );\n },\n);\n\nexport interface DataToolbarSortProps\n extends Omit<ComponentPropsWithoutRef<\"select\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"select\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSort = forwardRef<HTMLSelectElement, DataToolbarSortProps>(\n function DataToolbarSort(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <select\n {...props}\n ref={ref}\n className={cx(dataToolbar().sort, className)}\n data-slot=\"data-toolbar-sort\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n value={value}\n />\n );\n },\n);\n\nexport interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<\"div\"> {\n count: number;\n label?: ReactNode;\n onClear?: () => void;\n}\nexport const DataToolbarSelection = forwardRef<HTMLDivElement, DataToolbarSelectionProps>(\n function DataToolbarSelection(\n { children, className, count, label = \"selected\", onClear, ...props },\n ref,\n ) {\n return (\n <SelectionContext.Provider value={{ count, onClear }}>\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataToolbar().selection, className)}\n data-count={count}\n data-slot=\"data-toolbar-selection\"\n >\n {children ?? `${count} ${label}`}\n </div>\n </SelectionContext.Provider>\n );\n },\n);\n\nexport interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<\"button\"> {\n children?: ReactNode;\n}\nexport const DataToolbarClearSelection = forwardRef<\n HTMLButtonElement,\n DataToolbarClearSelectionProps\n>(function DataToolbarClearSelection(\n { children = \"Clear selection\", className, onClick, ...props },\n ref,\n) {\n const context = useContext(SelectionContext);\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clearSelection, className)}\n data-slot=\"data-toolbar-clear-selection\"\n onClick={(event) => {\n context?.onClear?.();\n onClick?.(event);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type DataToolbarActionsProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarActions = forwardRef<HTMLDivElement, DataToolbarActionsProps>(\n function DataToolbarActions({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().actions, className)}\n data-slot=\"data-toolbar-actions\"\n />\n );\n },\n);\n\nexport type DataToolbarClearProps = ComponentPropsWithoutRef<\"button\">;\nexport const DataToolbarClear = forwardRef<HTMLButtonElement, DataToolbarClearProps>(\n function DataToolbarClear({ children = \"Clear filters\", className, ...props }, ref) {\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clear, className)}\n data-slot=\"data-toolbar-clear\"\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type DataToolbarSeparatorProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarSeparator = forwardRef<HTMLDivElement, DataToolbarSeparatorProps>(\n function DataToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(dataToolbar().separator, className)}\n data-slot=\"data-toolbar-separator\"\n />\n );\n },\n);\n\nexport const DataToolbar = {\n Root: DataToolbarRoot,\n Search: DataToolbarSearch,\n Filters: DataToolbarFilters,\n Sort: DataToolbarSort,\n Selection: DataToolbarSelection,\n ClearSelection: DataToolbarClearSelection,\n Actions: DataToolbarActions,\n Clear: DataToolbarClear,\n Separator: DataToolbarSeparator,\n};\n"],"mappings":";;;;;;AAaA,MAAM,oBAAA,GAAA,MAAA,cAAA,CAA+D,IAAI;AAGzE,MAAa,mBAAA,GAAA,MAAA,WAAA,CACX,SAAS,gBAAgB,EAAE,WAAW,MAAM,GAAG,SAAS,KAAK;CAC3D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,WAAWA,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,MAAM,SAAS;EAC3C,uBAAoB;EACpB,aAAU;EACV,MAAM,QAAQ;CACf,CAAA;AAEL,CACF;AAUA,MAAa,qBAAA,GAAA,MAAA,WAAA,CACX,SAAS,kBACP,EAAE,WAAW,eAAe,IAAI,eAAe,OAAO,iBAAiB,GAAG,SAC1E,KACA;CACA,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,SAAA,CAAiC,YAAY;CACvE,MAAM,QAAQ,mBAAmB;CACjC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;EACE,GAAI;EACC;EACL,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,QAAQ,SAAS;EAC7C,aAAU;EACV,WAAW,UAAU;GACnB,IAAI,oBAAoB,KAAA,GAAW,qBAAqB,MAAM,cAAc,KAAK;GACjF,gBAAgB,MAAM,cAAc,KAAK;GACzC,MAAM,WAAW,KAAK;EACxB;EACA,MAAM,MAAM,QAAQ;EACb;CACR,CAAA;AAEL,CACF;AAGA,MAAa,sBAAA,GAAA,MAAA,WAAA,CACX,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,SAAS,SAAS;EAC9C,aAAU;CACX,CAAA;AAEL,CACF;AAUA,MAAa,mBAAA,GAAA,MAAA,WAAA,CACX,SAAS,gBACP,EAAE,WAAW,eAAe,IAAI,eAAe,OAAO,iBAAiB,GAAG,SAC1E,KACA;CACA,MAAM,CAAC,mBAAmB,yBAAA,GAAA,MAAA,SAAA,CAAiC,YAAY;CACvE,MAAM,QAAQ,mBAAmB;CACjC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EACE,GAAI;EACC;EACL,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,MAAM,SAAS;EAC3C,aAAU;EACV,WAAW,UAAU;GACnB,IAAI,oBAAoB,KAAA,GAAW,qBAAqB,MAAM,cAAc,KAAK;GACjF,gBAAgB,MAAM,cAAc,KAAK;GACzC,MAAM,WAAW,KAAK;EACxB;EACO;CACR,CAAA;AAEL,CACF;AAOA,MAAa,wBAAA,GAAA,MAAA,WAAA,CACX,SAAS,qBACP,EAAE,UAAU,WAAW,OAAO,QAAQ,YAAY,SAAS,GAAG,SAC9D,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAiB,UAAlB;EAA2B,OAAO;GAAE;GAAO;EAAQ;YACjD,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GACE,GAAI;GACC;GACL,aAAU;GACV,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,WAAW,SAAS;GAChD,cAAY;GACZ,aAAU;aAET,YAAY,GAAG,MAAM,GAAG;EACtB,CAAA;CACoB,CAAA;AAE/B,CACF;AAKA,MAAa,6BAAA,GAAA,MAAA,WAAA,CAGX,SAAS,0BACT,EAAE,WAAW,mBAAmB,WAAW,SAAS,GAAG,SACvD,KACA;CACA,MAAM,WAAA,GAAA,MAAA,WAAA,CAAqB,gBAAgB;CAC3C,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EACE,GAAI;EACC;EACL,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,gBAAgB,SAAS;EACrD,aAAU;EACV,UAAU,UAAU;GAClB,SAAS,UAAU;GACnB,UAAU,KAAK;EACjB;EACA,MAAK;EAEJ;CACK,CAAA;AAEZ,CAAC;AAGD,MAAa,sBAAA,GAAA,MAAA,WAAA,CACX,SAAS,mBAAmB,EAAE,WAAW,GAAG,SAAS,KAAK;CACxD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,SAAS,SAAS;EAC9C,aAAU;CACX,CAAA;AAEL,CACF;AAGA,MAAa,oBAAA,GAAA,MAAA,WAAA,CACX,SAAS,iBAAiB,EAAE,WAAW,iBAAiB,WAAW,GAAG,SAAS,KAAK;CAClF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EACE,GAAI;EACC;EACL,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,OAAO,SAAS;EAC5C,aAAU;EACV,MAAK;EAEJ;CACK,CAAA;AAEZ,CACF;AAGA,MAAa,wBAAA,GAAA,MAAA,WAAA,CACX,SAAS,qBAAqB,EAAE,WAAW,GAAG,SAAS,KAAK;CAC1D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,eAAY;EACZ,WAAWD,WAAAA,GAAGC,qBAAAA,YAAY,CAAC,CAAC,WAAW,SAAS;EAChD,aAAU;CACX,CAAA;AAEL,CACF;AAEA,MAAa,cAAc;CACzB,MAAM;CACN,QAAQ;CACR,SAAS;CACT,MAAM;CACN,WAAW;CACX,gBAAgB;CAChB,SAAS;CACT,OAAO;CACP,WAAW;AACb"}
@@ -0,0 +1,50 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ //#region src/components/data-toolbar/data-toolbar.d.ts
3
+ type DataToolbarRootProps = ComponentPropsWithoutRef<"div">;
4
+ declare const DataToolbarRoot: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
5
+ interface DataToolbarSearchProps extends Omit<ComponentPropsWithoutRef<"input">, "defaultValue" | "onChange" | "value"> {
6
+ defaultValue?: string;
7
+ onChange?: ComponentPropsWithoutRef<"input">["onChange"];
8
+ onValueChange?: (value: string) => void;
9
+ value?: string;
10
+ }
11
+ declare const DataToolbarSearch: import("react").ForwardRefExoticComponent<DataToolbarSearchProps & import("react").RefAttributes<HTMLInputElement>>;
12
+ type DataToolbarFiltersProps = ComponentPropsWithoutRef<"div">;
13
+ declare const DataToolbarFilters: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
14
+ interface DataToolbarSortProps extends Omit<ComponentPropsWithoutRef<"select">, "defaultValue" | "onChange" | "value"> {
15
+ defaultValue?: string;
16
+ onChange?: ComponentPropsWithoutRef<"select">["onChange"];
17
+ onValueChange?: (value: string) => void;
18
+ value?: string;
19
+ }
20
+ declare const DataToolbarSort: import("react").ForwardRefExoticComponent<DataToolbarSortProps & import("react").RefAttributes<HTMLSelectElement>>;
21
+ interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<"div"> {
22
+ count: number;
23
+ label?: ReactNode;
24
+ onClear?: () => void;
25
+ }
26
+ declare const DataToolbarSelection: import("react").ForwardRefExoticComponent<DataToolbarSelectionProps & import("react").RefAttributes<HTMLDivElement>>;
27
+ interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<"button"> {
28
+ children?: ReactNode;
29
+ }
30
+ declare const DataToolbarClearSelection: import("react").ForwardRefExoticComponent<DataToolbarClearSelectionProps & import("react").RefAttributes<HTMLButtonElement>>;
31
+ type DataToolbarActionsProps = ComponentPropsWithoutRef<"div">;
32
+ declare const DataToolbarActions: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
33
+ type DataToolbarClearProps = ComponentPropsWithoutRef<"button">;
34
+ declare const DataToolbarClear: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
35
+ type DataToolbarSeparatorProps = ComponentPropsWithoutRef<"div">;
36
+ declare const DataToolbarSeparator: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
37
+ declare const DataToolbar: {
38
+ Root: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
39
+ Search: import("react").ForwardRefExoticComponent<DataToolbarSearchProps & import("react").RefAttributes<HTMLInputElement>>;
40
+ Filters: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
41
+ Sort: import("react").ForwardRefExoticComponent<DataToolbarSortProps & import("react").RefAttributes<HTMLSelectElement>>;
42
+ Selection: import("react").ForwardRefExoticComponent<DataToolbarSelectionProps & import("react").RefAttributes<HTMLDivElement>>;
43
+ ClearSelection: import("react").ForwardRefExoticComponent<DataToolbarClearSelectionProps & import("react").RefAttributes<HTMLButtonElement>>;
44
+ Actions: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
45
+ Clear: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
46
+ Separator: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
47
+ };
48
+ //#endregion
49
+ export { DataToolbar, DataToolbarActions, DataToolbarActionsProps, DataToolbarClear, DataToolbarClearProps, DataToolbarClearSelection, DataToolbarClearSelectionProps, DataToolbarFilters, DataToolbarFiltersProps, DataToolbarRoot, DataToolbarRootProps, DataToolbarSearch, DataToolbarSearchProps, DataToolbarSelection, DataToolbarSelectionProps, DataToolbarSeparator, DataToolbarSeparatorProps, DataToolbarSort, DataToolbarSortProps };
50
+ //# sourceMappingURL=data-toolbar.d.cts.map
@@ -0,0 +1,50 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ //#region src/components/data-toolbar/data-toolbar.d.ts
3
+ type DataToolbarRootProps = ComponentPropsWithoutRef<"div">;
4
+ declare const DataToolbarRoot: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
5
+ interface DataToolbarSearchProps extends Omit<ComponentPropsWithoutRef<"input">, "defaultValue" | "onChange" | "value"> {
6
+ defaultValue?: string;
7
+ onChange?: ComponentPropsWithoutRef<"input">["onChange"];
8
+ onValueChange?: (value: string) => void;
9
+ value?: string;
10
+ }
11
+ declare const DataToolbarSearch: import("react").ForwardRefExoticComponent<DataToolbarSearchProps & import("react").RefAttributes<HTMLInputElement>>;
12
+ type DataToolbarFiltersProps = ComponentPropsWithoutRef<"div">;
13
+ declare const DataToolbarFilters: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
14
+ interface DataToolbarSortProps extends Omit<ComponentPropsWithoutRef<"select">, "defaultValue" | "onChange" | "value"> {
15
+ defaultValue?: string;
16
+ onChange?: ComponentPropsWithoutRef<"select">["onChange"];
17
+ onValueChange?: (value: string) => void;
18
+ value?: string;
19
+ }
20
+ declare const DataToolbarSort: import("react").ForwardRefExoticComponent<DataToolbarSortProps & import("react").RefAttributes<HTMLSelectElement>>;
21
+ interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<"div"> {
22
+ count: number;
23
+ label?: ReactNode;
24
+ onClear?: () => void;
25
+ }
26
+ declare const DataToolbarSelection: import("react").ForwardRefExoticComponent<DataToolbarSelectionProps & import("react").RefAttributes<HTMLDivElement>>;
27
+ interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<"button"> {
28
+ children?: ReactNode;
29
+ }
30
+ declare const DataToolbarClearSelection: import("react").ForwardRefExoticComponent<DataToolbarClearSelectionProps & import("react").RefAttributes<HTMLButtonElement>>;
31
+ type DataToolbarActionsProps = ComponentPropsWithoutRef<"div">;
32
+ declare const DataToolbarActions: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
33
+ type DataToolbarClearProps = ComponentPropsWithoutRef<"button">;
34
+ declare const DataToolbarClear: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
35
+ type DataToolbarSeparatorProps = ComponentPropsWithoutRef<"div">;
36
+ declare const DataToolbarSeparator: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
37
+ declare const DataToolbar: {
38
+ Root: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
39
+ Search: import("react").ForwardRefExoticComponent<DataToolbarSearchProps & import("react").RefAttributes<HTMLInputElement>>;
40
+ Filters: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
41
+ Sort: import("react").ForwardRefExoticComponent<DataToolbarSortProps & import("react").RefAttributes<HTMLSelectElement>>;
42
+ Selection: import("react").ForwardRefExoticComponent<DataToolbarSelectionProps & import("react").RefAttributes<HTMLDivElement>>;
43
+ ClearSelection: import("react").ForwardRefExoticComponent<DataToolbarClearSelectionProps & import("react").RefAttributes<HTMLButtonElement>>;
44
+ Actions: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
45
+ Clear: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
46
+ Separator: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
47
+ };
48
+ //#endregion
49
+ export { DataToolbar, DataToolbarActions, DataToolbarActionsProps, DataToolbarClear, DataToolbarClearProps, DataToolbarClearSelection, DataToolbarClearSelectionProps, DataToolbarFilters, DataToolbarFiltersProps, DataToolbarRoot, DataToolbarRootProps, DataToolbarSearch, DataToolbarSearchProps, DataToolbarSelection, DataToolbarSelectionProps, DataToolbarSeparator, DataToolbarSeparatorProps, DataToolbarSort, DataToolbarSortProps };
50
+ //# sourceMappingURL=data-toolbar.d.ts.map
@@ -0,0 +1,132 @@
1
+ "use client";
2
+ import { cx } from "../../styled-system/css/cx.js";
3
+ import { dataToolbar } from "../../styled-system/recipes/data-toolbar.js";
4
+ import { createContext, forwardRef, useContext, useState } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/data-toolbar/data-toolbar.tsx
7
+ const SelectionContext = createContext(null);
8
+ const DataToolbarRoot = forwardRef(function DataToolbarRoot({ className, role, ...props }, ref) {
9
+ return /* @__PURE__ */ jsx("div", {
10
+ ...props,
11
+ ref,
12
+ className: cx(dataToolbar().root, className),
13
+ "data-jaci-component": "data-toolbar",
14
+ "data-slot": "data-toolbar",
15
+ role: role ?? "toolbar"
16
+ });
17
+ });
18
+ const DataToolbarSearch = forwardRef(function DataToolbarSearch({ className, defaultValue = "", onValueChange, value: controlledValue, ...props }, ref) {
19
+ const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
20
+ const value = controlledValue ?? uncontrolledValue;
21
+ return /* @__PURE__ */ jsx("input", {
22
+ ...props,
23
+ ref,
24
+ className: cx(dataToolbar().search, className),
25
+ "data-slot": "data-toolbar-search",
26
+ onChange: (event) => {
27
+ if (controlledValue === void 0) setUncontrolledValue(event.currentTarget.value);
28
+ onValueChange?.(event.currentTarget.value);
29
+ props.onChange?.(event);
30
+ },
31
+ type: props.type ?? "search",
32
+ value
33
+ });
34
+ });
35
+ const DataToolbarFilters = forwardRef(function DataToolbarFilters({ className, ...props }, ref) {
36
+ return /* @__PURE__ */ jsx("div", {
37
+ ...props,
38
+ ref,
39
+ className: cx(dataToolbar().filters, className),
40
+ "data-slot": "data-toolbar-filters"
41
+ });
42
+ });
43
+ const DataToolbarSort = forwardRef(function DataToolbarSort({ className, defaultValue = "", onValueChange, value: controlledValue, ...props }, ref) {
44
+ const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
45
+ const value = controlledValue ?? uncontrolledValue;
46
+ return /* @__PURE__ */ jsx("select", {
47
+ ...props,
48
+ ref,
49
+ className: cx(dataToolbar().sort, className),
50
+ "data-slot": "data-toolbar-sort",
51
+ onChange: (event) => {
52
+ if (controlledValue === void 0) setUncontrolledValue(event.currentTarget.value);
53
+ onValueChange?.(event.currentTarget.value);
54
+ props.onChange?.(event);
55
+ },
56
+ value
57
+ });
58
+ });
59
+ const DataToolbarSelection = forwardRef(function DataToolbarSelection({ children, className, count, label = "selected", onClear, ...props }, ref) {
60
+ return /* @__PURE__ */ jsx(SelectionContext.Provider, {
61
+ value: {
62
+ count,
63
+ onClear
64
+ },
65
+ children: /* @__PURE__ */ jsx("div", {
66
+ ...props,
67
+ ref,
68
+ "aria-live": "polite",
69
+ className: cx(dataToolbar().selection, className),
70
+ "data-count": count,
71
+ "data-slot": "data-toolbar-selection",
72
+ children: children ?? `${count} ${label}`
73
+ })
74
+ });
75
+ });
76
+ const DataToolbarClearSelection = forwardRef(function DataToolbarClearSelection({ children = "Clear selection", className, onClick, ...props }, ref) {
77
+ const context = useContext(SelectionContext);
78
+ return /* @__PURE__ */ jsx("button", {
79
+ ...props,
80
+ ref,
81
+ className: cx(dataToolbar().clearSelection, className),
82
+ "data-slot": "data-toolbar-clear-selection",
83
+ onClick: (event) => {
84
+ context?.onClear?.();
85
+ onClick?.(event);
86
+ },
87
+ type: "button",
88
+ children
89
+ });
90
+ });
91
+ const DataToolbarActions = forwardRef(function DataToolbarActions({ className, ...props }, ref) {
92
+ return /* @__PURE__ */ jsx("div", {
93
+ ...props,
94
+ ref,
95
+ className: cx(dataToolbar().actions, className),
96
+ "data-slot": "data-toolbar-actions"
97
+ });
98
+ });
99
+ const DataToolbarClear = forwardRef(function DataToolbarClear({ children = "Clear filters", className, ...props }, ref) {
100
+ return /* @__PURE__ */ jsx("button", {
101
+ ...props,
102
+ ref,
103
+ className: cx(dataToolbar().clear, className),
104
+ "data-slot": "data-toolbar-clear",
105
+ type: "button",
106
+ children
107
+ });
108
+ });
109
+ const DataToolbarSeparator = forwardRef(function DataToolbarSeparator({ className, ...props }, ref) {
110
+ return /* @__PURE__ */ jsx("div", {
111
+ ...props,
112
+ ref,
113
+ "aria-hidden": "true",
114
+ className: cx(dataToolbar().separator, className),
115
+ "data-slot": "data-toolbar-separator"
116
+ });
117
+ });
118
+ const DataToolbar = {
119
+ Root: DataToolbarRoot,
120
+ Search: DataToolbarSearch,
121
+ Filters: DataToolbarFilters,
122
+ Sort: DataToolbarSort,
123
+ Selection: DataToolbarSelection,
124
+ ClearSelection: DataToolbarClearSelection,
125
+ Actions: DataToolbarActions,
126
+ Clear: DataToolbarClear,
127
+ Separator: DataToolbarSeparator
128
+ };
129
+ //#endregion
130
+ export { DataToolbar, DataToolbarActions, DataToolbarClear, DataToolbarClearSelection, DataToolbarFilters, DataToolbarRoot, DataToolbarSearch, DataToolbarSelection, DataToolbarSeparator, DataToolbarSort };
131
+
132
+ //# sourceMappingURL=data-toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-toolbar.js","names":[],"sources":["../../../src/components/data-toolbar/data-toolbar.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, forwardRef, useContext, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataToolbar } from \"../../styled-system/recipes\";\n\ninterface SelectionContextValue {\n count: number;\n onClear: (() => void) | undefined;\n}\n\nconst SelectionContext = createContext<SelectionContextValue | null>(null);\n\nexport type DataToolbarRootProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarRoot = forwardRef<HTMLDivElement, DataToolbarRootProps>(\n function DataToolbarRoot({ className, role, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().root, className)}\n data-jaci-component=\"data-toolbar\"\n data-slot=\"data-toolbar\"\n role={role ?? \"toolbar\"}\n />\n );\n },\n);\n\nexport interface DataToolbarSearchProps\n extends Omit<ComponentPropsWithoutRef<\"input\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"input\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSearch = forwardRef<HTMLInputElement, DataToolbarSearchProps>(\n function DataToolbarSearch(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <input\n {...props}\n ref={ref}\n className={cx(dataToolbar().search, className)}\n data-slot=\"data-toolbar-search\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n type={props.type ?? \"search\"}\n value={value}\n />\n );\n },\n);\n\nexport type DataToolbarFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarFilters = forwardRef<HTMLDivElement, DataToolbarFiltersProps>(\n function DataToolbarFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().filters, className)}\n data-slot=\"data-toolbar-filters\"\n />\n );\n },\n);\n\nexport interface DataToolbarSortProps\n extends Omit<ComponentPropsWithoutRef<\"select\">, \"defaultValue\" | \"onChange\" | \"value\"> {\n defaultValue?: string;\n onChange?: ComponentPropsWithoutRef<\"select\">[\"onChange\"];\n onValueChange?: (value: string) => void;\n value?: string;\n}\n\nexport const DataToolbarSort = forwardRef<HTMLSelectElement, DataToolbarSortProps>(\n function DataToolbarSort(\n { className, defaultValue = \"\", onValueChange, value: controlledValue, ...props },\n ref,\n ) {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const value = controlledValue ?? uncontrolledValue;\n return (\n <select\n {...props}\n ref={ref}\n className={cx(dataToolbar().sort, className)}\n data-slot=\"data-toolbar-sort\"\n onChange={(event) => {\n if (controlledValue === undefined) setUncontrolledValue(event.currentTarget.value);\n onValueChange?.(event.currentTarget.value);\n props.onChange?.(event);\n }}\n value={value}\n />\n );\n },\n);\n\nexport interface DataToolbarSelectionProps extends ComponentPropsWithoutRef<\"div\"> {\n count: number;\n label?: ReactNode;\n onClear?: () => void;\n}\nexport const DataToolbarSelection = forwardRef<HTMLDivElement, DataToolbarSelectionProps>(\n function DataToolbarSelection(\n { children, className, count, label = \"selected\", onClear, ...props },\n ref,\n ) {\n return (\n <SelectionContext.Provider value={{ count, onClear }}>\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataToolbar().selection, className)}\n data-count={count}\n data-slot=\"data-toolbar-selection\"\n >\n {children ?? `${count} ${label}`}\n </div>\n </SelectionContext.Provider>\n );\n },\n);\n\nexport interface DataToolbarClearSelectionProps extends ComponentPropsWithoutRef<\"button\"> {\n children?: ReactNode;\n}\nexport const DataToolbarClearSelection = forwardRef<\n HTMLButtonElement,\n DataToolbarClearSelectionProps\n>(function DataToolbarClearSelection(\n { children = \"Clear selection\", className, onClick, ...props },\n ref,\n) {\n const context = useContext(SelectionContext);\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clearSelection, className)}\n data-slot=\"data-toolbar-clear-selection\"\n onClick={(event) => {\n context?.onClear?.();\n onClick?.(event);\n }}\n type=\"button\"\n >\n {children}\n </button>\n );\n});\n\nexport type DataToolbarActionsProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarActions = forwardRef<HTMLDivElement, DataToolbarActionsProps>(\n function DataToolbarActions({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataToolbar().actions, className)}\n data-slot=\"data-toolbar-actions\"\n />\n );\n },\n);\n\nexport type DataToolbarClearProps = ComponentPropsWithoutRef<\"button\">;\nexport const DataToolbarClear = forwardRef<HTMLButtonElement, DataToolbarClearProps>(\n function DataToolbarClear({ children = \"Clear filters\", className, ...props }, ref) {\n return (\n <button\n {...props}\n ref={ref}\n className={cx(dataToolbar().clear, className)}\n data-slot=\"data-toolbar-clear\"\n type=\"button\"\n >\n {children}\n </button>\n );\n },\n);\n\nexport type DataToolbarSeparatorProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataToolbarSeparator = forwardRef<HTMLDivElement, DataToolbarSeparatorProps>(\n function DataToolbarSeparator({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-hidden=\"true\"\n className={cx(dataToolbar().separator, className)}\n data-slot=\"data-toolbar-separator\"\n />\n );\n },\n);\n\nexport const DataToolbar = {\n Root: DataToolbarRoot,\n Search: DataToolbarSearch,\n Filters: DataToolbarFilters,\n Sort: DataToolbarSort,\n Selection: DataToolbarSelection,\n ClearSelection: DataToolbarClearSelection,\n Actions: DataToolbarActions,\n Clear: DataToolbarClear,\n Separator: DataToolbarSeparator,\n};\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { DataToolbar, DataToolbarActions, DataToolbarActionsProps, DataToolbarClear, DataToolbarClearProps, DataToolbarClearSelection, DataToolbarClearSelectionProps, DataToolbarFilters, DataToolbarFiltersProps, DataToolbarRoot, DataToolbarRootProps, DataToolbarSearch, DataToolbarSearchProps, DataToolbarSelection, DataToolbarSelectionProps, DataToolbarSeparator, DataToolbarSeparatorProps, DataToolbarSort, DataToolbarSortProps } from "./data-toolbar.cjs";
2
+ export { DataToolbar, DataToolbarActions, type DataToolbarActionsProps, DataToolbarClear, type DataToolbarClearProps, DataToolbarClearSelection, type DataToolbarClearSelectionProps, DataToolbarFilters, type DataToolbarFiltersProps, DataToolbarRoot, type DataToolbarRootProps, DataToolbarSearch, type DataToolbarSearchProps, DataToolbarSelection, type DataToolbarSelectionProps, DataToolbarSeparator, type DataToolbarSeparatorProps, DataToolbarSort, type DataToolbarSortProps };
@@ -0,0 +1,2 @@
1
+ import { DataToolbar, DataToolbarActions, DataToolbarActionsProps, DataToolbarClear, DataToolbarClearProps, DataToolbarClearSelection, DataToolbarClearSelectionProps, DataToolbarFilters, DataToolbarFiltersProps, DataToolbarRoot, DataToolbarRootProps, DataToolbarSearch, DataToolbarSearchProps, DataToolbarSelection, DataToolbarSelectionProps, DataToolbarSeparator, DataToolbarSeparatorProps, DataToolbarSort, DataToolbarSortProps } from "./data-toolbar.js";
2
+ export { DataToolbar, DataToolbarActions, type DataToolbarActionsProps, DataToolbarClear, type DataToolbarClearProps, DataToolbarClearSelection, type DataToolbarClearSelectionProps, DataToolbarFilters, type DataToolbarFiltersProps, DataToolbarRoot, type DataToolbarRootProps, DataToolbarSearch, type DataToolbarSearchProps, DataToolbarSelection, type DataToolbarSelectionProps, DataToolbarSeparator, type DataToolbarSeparatorProps, DataToolbarSort, type DataToolbarSortProps };
@@ -3,7 +3,7 @@ const require_data_view = require("../../styled-system/recipes/data-view.cjs");
3
3
  let react = require("react");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  //#region src/components/data-view/data-view.tsx
6
- const DataViewRoot = (0, react.forwardRef)(function DataViewRoot({ children, className, columns = 3, layout = "list", ...props }, ref) {
6
+ const DataViewRoot = (0, react.forwardRef)(function DataViewRoot({ children, className, columns = 3, layout = "list", status = "idle", ...props }, ref) {
7
7
  const styles = require_data_view.dataView({
8
8
  columns: String(columns),
9
9
  layout
@@ -12,9 +12,11 @@ const DataViewRoot = (0, react.forwardRef)(function DataViewRoot({ children, cla
12
12
  ...props,
13
13
  ref,
14
14
  className: require_cx.cx(styles.root, className),
15
+ "aria-busy": props["aria-busy"] ?? (status === "loading" || void 0),
15
16
  "data-columns": columns,
16
17
  "data-jaci-component": "data-view",
17
18
  "data-layout": layout,
19
+ "data-status": status,
18
20
  "data-slot": "data-view",
19
21
  children
20
22
  });
@@ -27,6 +29,14 @@ const DataViewToolbar = (0, react.forwardRef)(function DataViewToolbar({ classNa
27
29
  "data-slot": "data-view-toolbar"
28
30
  });
29
31
  });
32
+ const DataViewFilters = (0, react.forwardRef)(function DataViewFilters({ className, ...props }, ref) {
33
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
34
+ ...props,
35
+ ref,
36
+ className: require_cx.cx(require_data_view.dataView().filters, className),
37
+ "data-slot": "data-view-filters"
38
+ });
39
+ });
30
40
  const DataViewContent = (0, react.forwardRef)(function DataViewContent({ className, ...props }, ref) {
31
41
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
32
42
  ...props,
@@ -35,6 +45,22 @@ const DataViewContent = (0, react.forwardRef)(function DataViewContent({ classNa
35
45
  "data-slot": "data-view-content"
36
46
  });
37
47
  });
48
+ const DataViewFooter = (0, react.forwardRef)(function DataViewFooter({ className, ...props }, ref) {
49
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
50
+ ...props,
51
+ ref,
52
+ className: require_cx.cx(require_data_view.dataView().footer, className),
53
+ "data-slot": "data-view-footer"
54
+ });
55
+ });
56
+ const DataViewPagination = (0, react.forwardRef)(function DataViewPagination({ className, ...props }, ref) {
57
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
58
+ ...props,
59
+ ref,
60
+ className: require_cx.cx(require_data_view.dataView().pagination, className),
61
+ "data-slot": "data-view-pagination"
62
+ });
63
+ });
38
64
  const DataViewLoading = (0, react.forwardRef)(function DataViewLoading({ children = "Loading…", className, ...props }, ref) {
39
65
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
40
66
  ...props,
@@ -68,7 +94,10 @@ const DataViewError = (0, react.forwardRef)(function DataViewError({ children =
68
94
  const DataView = {
69
95
  Root: DataViewRoot,
70
96
  Toolbar: DataViewToolbar,
97
+ Filters: DataViewFilters,
71
98
  Content: DataViewContent,
99
+ Footer: DataViewFooter,
100
+ Pagination: DataViewPagination,
72
101
  Loading: DataViewLoading,
73
102
  Empty: DataViewEmpty,
74
103
  Error: DataViewError
@@ -78,7 +107,10 @@ exports.DataView = DataView;
78
107
  exports.DataViewContent = DataViewContent;
79
108
  exports.DataViewEmpty = DataViewEmpty;
80
109
  exports.DataViewError = DataViewError;
110
+ exports.DataViewFilters = DataViewFilters;
111
+ exports.DataViewFooter = DataViewFooter;
81
112
  exports.DataViewLoading = DataViewLoading;
113
+ exports.DataViewPagination = DataViewPagination;
82
114
  exports.DataViewRoot = DataViewRoot;
83
115
  exports.DataViewToolbar = DataViewToolbar;
84
116
 
@@ -1 +1 @@
1
- {"version":3,"file":"data-view.cjs","names":["dataView","cx"],"sources":["../../../src/components/data-view/data-view.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataView } from \"../../styled-system/recipes\";\n\nexport type DataViewLayout = \"table\" | \"list\" | \"grid\";\nexport type DataViewColumns = 1 | 2 | 3 | 4;\n\nexport interface DataViewRootProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"children\"> {\n children?: ReactNode;\n columns?: DataViewColumns;\n layout?: DataViewLayout;\n}\n\nexport const DataViewRoot = forwardRef<HTMLElement, DataViewRootProps>(function DataViewRoot(\n { children, className, columns = 3, layout = \"list\", ...props },\n ref,\n) {\n const styles = dataView({ columns: String(columns) as \"1\" | \"2\" | \"3\" | \"4\", layout });\n\n return (\n <section\n {...props}\n ref={ref}\n className={cx(styles.root, className)}\n data-columns={columns}\n data-jaci-component=\"data-view\"\n data-layout={layout}\n data-slot=\"data-view\"\n >\n {children}\n </section>\n );\n});\n\nexport type DataViewToolbarProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewToolbar = forwardRef<HTMLDivElement, DataViewToolbarProps>(\n function DataViewToolbar({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().toolbar, className)}\n data-slot=\"data-view-toolbar\"\n />\n );\n },\n);\n\nexport type DataViewContentProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewContent = forwardRef<HTMLDivElement, DataViewContentProps>(\n function DataViewContent({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().content, className)}\n data-slot=\"data-view-content\"\n />\n );\n },\n);\n\nexport interface DataViewStateProps extends ComponentPropsWithoutRef<\"div\"> {\n children?: ReactNode;\n}\n\nexport const DataViewLoading = forwardRef<HTMLDivElement, DataViewStateProps>(\n function DataViewLoading({ children = \"Loading…\", className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataView().loading, className)}\n data-slot=\"data-view-loading\"\n >\n {children}\n </div>\n );\n },\n);\n\nexport const DataViewEmpty = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewEmpty(\n { children = \"No results found.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().empty, className)}\n data-slot=\"data-view-empty\"\n >\n {children}\n </div>\n );\n});\n\nexport const DataViewError = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewError(\n { children = \"Something went wrong.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"assertive\"\n className={cx(dataView().error, className)}\n data-slot=\"data-view-error\"\n role=\"alert\"\n >\n {children}\n </div>\n );\n});\n\n// biome-ignore lint/suspicious/noShadowRestrictedNames: DataView is the public component API name.\nexport const DataView = {\n Root: DataViewRoot,\n Toolbar: DataViewToolbar,\n Content: DataViewContent,\n Loading: DataViewLoading,\n Empty: DataViewEmpty,\n Error: DataViewError,\n};\n"],"mappings":";;;;;AAeA,MAAa,gBAAA,GAAA,MAAA,WAAA,CAA0D,SAAS,aAC9E,EAAE,UAAU,WAAW,UAAU,GAAG,SAAS,QAAQ,GAAG,SACxD,KACA;CACA,MAAM,SAASA,kBAAAA,SAAS;EAAE,SAAS,OAAO,OAAO;EAA4B;CAAO,CAAC;CAErF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;EACE,GAAI;EACC;EACL,WAAWC,WAAAA,GAAG,OAAO,MAAM,SAAS;EACpC,gBAAc;EACd,uBAAoB;EACpB,eAAa;EACb,aAAU;EAET;CACM,CAAA;AAEb,CAAC;AAGD,MAAa,mBAAA,GAAA,MAAA,WAAA,CACX,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAS,KAAK;CACrD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,WAAWA,WAAAA,GAAGD,kBAAAA,SAAS,CAAC,CAAC,SAAS,SAAS;EAC3C,aAAU;CACX,CAAA;AAEL,CACF;AAGA,MAAa,mBAAA,GAAA,MAAA,WAAA,CACX,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAS,KAAK;CACrD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,WAAWC,WAAAA,GAAGD,kBAAAA,SAAS,CAAC,CAAC,SAAS,SAAS;EAC3C,aAAU;CACX,CAAA;AAEL,CACF;AAMA,MAAa,mBAAA,GAAA,MAAA,WAAA,CACX,SAAS,gBAAgB,EAAE,WAAW,YAAY,WAAW,GAAG,SAAS,KAAK;CAC5E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,aAAU;EACV,WAAWC,WAAAA,GAAGD,kBAAAA,SAAS,CAAC,CAAC,SAAS,SAAS;EAC3C,aAAU;EAET;CACE,CAAA;AAET,CACF;AAEA,MAAa,iBAAA,GAAA,MAAA,WAAA,CAA+D,SAAS,cACnF,EAAE,WAAW,qBAAqB,WAAW,GAAG,SAChD,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,WAAWC,WAAAA,GAAGD,kBAAAA,SAAS,CAAC,CAAC,OAAO,SAAS;EACzC,aAAU;EAET;CACE,CAAA;AAET,CAAC;AAED,MAAa,iBAAA,GAAA,MAAA,WAAA,CAA+D,SAAS,cACnF,EAAE,WAAW,yBAAyB,WAAW,GAAG,SACpD,KACA;CACA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,GAAI;EACC;EACL,aAAU;EACV,WAAWC,WAAAA,GAAGD,kBAAAA,SAAS,CAAC,CAAC,OAAO,SAAS;EACzC,aAAU;EACV,MAAK;EAEJ;CACE,CAAA;AAET,CAAC;AAGD,MAAa,WAAW;CACtB,MAAM;CACN,SAAS;CACT,SAAS;CACT,SAAS;CACT,OAAO;CACP,OAAO;AACT"}
1
+ {"version":3,"file":"data-view.cjs","names":["dataView","cx"],"sources":["../../../src/components/data-view/data-view.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport { cx } from \"../../styled-system/css\";\nimport { dataView } from \"../../styled-system/recipes\";\n\nexport type DataViewLayout = \"table\" | \"list\" | \"grid\";\nexport type DataViewColumns = 1 | 2 | 3 | 4;\nexport type DataViewStatus = \"idle\" | \"loading\" | \"empty\" | \"error\" | \"ready\";\n\nexport interface DataViewRootProps extends Omit<ComponentPropsWithoutRef<\"section\">, \"children\"> {\n children?: ReactNode;\n columns?: DataViewColumns;\n layout?: DataViewLayout;\n status?: DataViewStatus;\n}\n\nexport const DataViewRoot = forwardRef<HTMLElement, DataViewRootProps>(function DataViewRoot(\n { children, className, columns = 3, layout = \"list\", status = \"idle\", ...props },\n ref,\n) {\n const styles = dataView({ columns: String(columns) as \"1\" | \"2\" | \"3\" | \"4\", layout });\n\n return (\n <section\n {...props}\n ref={ref}\n className={cx(styles.root, className)}\n aria-busy={props[\"aria-busy\"] ?? (status === \"loading\" || undefined)}\n data-columns={columns}\n data-jaci-component=\"data-view\"\n data-layout={layout}\n data-status={status}\n data-slot=\"data-view\"\n >\n {children}\n </section>\n );\n});\n\nexport type DataViewToolbarProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewToolbar = forwardRef<HTMLDivElement, DataViewToolbarProps>(\n function DataViewToolbar({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().toolbar, className)}\n data-slot=\"data-view-toolbar\"\n />\n );\n },\n);\n\nexport type DataViewFiltersProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewFilters = forwardRef<HTMLDivElement, DataViewFiltersProps>(\n function DataViewFilters({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().filters, className)}\n data-slot=\"data-view-filters\"\n />\n );\n },\n);\n\nexport type DataViewContentProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewContent = forwardRef<HTMLDivElement, DataViewContentProps>(\n function DataViewContent({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().content, className)}\n data-slot=\"data-view-content\"\n />\n );\n },\n);\n\nexport type DataViewFooterProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewFooter = forwardRef<HTMLDivElement, DataViewFooterProps>(\n function DataViewFooter({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().footer, className)}\n data-slot=\"data-view-footer\"\n />\n );\n },\n);\n\nexport type DataViewPaginationProps = ComponentPropsWithoutRef<\"div\">;\nexport const DataViewPagination = forwardRef<HTMLDivElement, DataViewPaginationProps>(\n function DataViewPagination({ className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().pagination, className)}\n data-slot=\"data-view-pagination\"\n />\n );\n },\n);\n\nexport interface DataViewStateProps extends ComponentPropsWithoutRef<\"div\"> {\n children?: ReactNode;\n}\n\nexport const DataViewLoading = forwardRef<HTMLDivElement, DataViewStateProps>(\n function DataViewLoading({ children = \"Loading…\", className, ...props }, ref) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"polite\"\n className={cx(dataView().loading, className)}\n data-slot=\"data-view-loading\"\n >\n {children}\n </div>\n );\n },\n);\n\nexport const DataViewEmpty = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewEmpty(\n { children = \"No results found.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n className={cx(dataView().empty, className)}\n data-slot=\"data-view-empty\"\n >\n {children}\n </div>\n );\n});\n\nexport const DataViewError = forwardRef<HTMLDivElement, DataViewStateProps>(function DataViewError(\n { children = \"Something went wrong.\", className, ...props },\n ref,\n) {\n return (\n <div\n {...props}\n ref={ref}\n aria-live=\"assertive\"\n className={cx(dataView().error, className)}\n data-slot=\"data-view-error\"\n role=\"alert\"\n >\n {children}\n </div>\n );\n});\n\n// biome-ignore lint/suspicious/noShadowRestrictedNames: DataView is the public component API name.\nexport const DataView = {\n Root: DataViewRoot,\n Toolbar: DataViewToolbar,\n Filters: DataViewFilters,\n Content: DataViewContent,\n Footer: DataViewFooter,\n Pagination: DataViewPagination,\n Loading: DataViewLoading,\n Empty: DataViewEmpty,\n Error: DataViewError,\n};\n"],"mappings":"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"}