@lattice-php/lattice 0.1.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 (277) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +39 -0
  3. package/dist/action/components/action-group.d.ts +10 -0
  4. package/dist/action/components/action-group.js +79 -0
  5. package/dist/action/components/action-group.js.map +1 -0
  6. package/dist/action/components/action.d.ts +26 -0
  7. package/dist/action/components/action.js +87 -0
  8. package/dist/action/components/action.js.map +1 -0
  9. package/dist/action/effects.d.ts +30 -0
  10. package/dist/action/effects.js +44 -0
  11. package/dist/action/effects.js.map +1 -0
  12. package/dist/action/index.d.ts +1 -0
  13. package/dist/action/index.js +15 -0
  14. package/dist/action/index.js.map +1 -0
  15. package/dist/appearance/index.d.ts +9 -0
  16. package/dist/appearance/index.js +66 -0
  17. package/dist/appearance/index.js.map +1 -0
  18. package/dist/clipboard/index.d.ts +5 -0
  19. package/dist/clipboard/index.js +24 -0
  20. package/dist/clipboard/index.js.map +1 -0
  21. package/dist/core/component-ref.d.ts +8 -0
  22. package/dist/core/component-ref.js +15 -0
  23. package/dist/core/component-ref.js.map +1 -0
  24. package/dist/core/components/badge.d.ts +19 -0
  25. package/dist/core/components/badge.js +32 -0
  26. package/dist/core/components/badge.js.map +1 -0
  27. package/dist/core/components/button.d.ts +23 -0
  28. package/dist/core/components/button.js +68 -0
  29. package/dist/core/components/button.js.map +1 -0
  30. package/dist/core/components/card.d.ts +19 -0
  31. package/dist/core/components/card.js +62 -0
  32. package/dist/core/components/card.js.map +1 -0
  33. package/dist/core/components/confirm-dialog.d.ts +13 -0
  34. package/dist/core/components/confirm-dialog.js +47 -0
  35. package/dist/core/components/confirm-dialog.js.map +1 -0
  36. package/dist/core/components/fragment.d.ts +12 -0
  37. package/dist/core/components/fragment.js +62 -0
  38. package/dist/core/components/fragment.js.map +1 -0
  39. package/dist/core/components/grid.d.ts +10 -0
  40. package/dist/core/components/grid.js +16 -0
  41. package/dist/core/components/grid.js.map +1 -0
  42. package/dist/core/components/heading.d.ts +11 -0
  43. package/dist/core/components/heading.js +39 -0
  44. package/dist/core/components/heading.js.map +1 -0
  45. package/dist/core/components/index.d.ts +1 -0
  46. package/dist/core/components/index.js +36 -0
  47. package/dist/core/components/index.js.map +1 -0
  48. package/dist/core/components/link.d.ts +18 -0
  49. package/dist/core/components/link.js +26 -0
  50. package/dist/core/components/link.js.map +1 -0
  51. package/dist/core/components/modal.d.ts +13 -0
  52. package/dist/core/components/modal.js +75 -0
  53. package/dist/core/components/modal.js.map +1 -0
  54. package/dist/core/components/segmented-control.d.ts +16 -0
  55. package/dist/core/components/segmented-control.js +30 -0
  56. package/dist/core/components/segmented-control.js.map +1 -0
  57. package/dist/core/components/segmented-pills.d.ts +13 -0
  58. package/dist/core/components/segmented-pills.js +31 -0
  59. package/dist/core/components/segmented-pills.js.map +1 -0
  60. package/dist/core/components/spinner.d.ts +2 -0
  61. package/dist/core/components/spinner.js +16 -0
  62. package/dist/core/components/spinner.js.map +1 -0
  63. package/dist/core/components/stack.d.ts +13 -0
  64. package/dist/core/components/stack.js +47 -0
  65. package/dist/core/components/stack.js.map +1 -0
  66. package/dist/core/components/tabs.d.ts +22 -0
  67. package/dist/core/components/tabs.js +118 -0
  68. package/dist/core/components/tabs.js.map +1 -0
  69. package/dist/core/components/text.d.ts +11 -0
  70. package/dist/core/components/text.js +18 -0
  71. package/dist/core/components/text.js.map +1 -0
  72. package/dist/core/props.d.ts +14 -0
  73. package/dist/core/props.js +30 -0
  74. package/dist/core/props.js.map +1 -0
  75. package/dist/core/registry.d.ts +26 -0
  76. package/dist/core/registry.js +36 -0
  77. package/dist/core/registry.js.map +1 -0
  78. package/dist/core/renderer.d.ts +16 -0
  79. package/dist/core/renderer.js +61 -0
  80. package/dist/core/renderer.js.map +1 -0
  81. package/dist/core/types.d.ts +55 -0
  82. package/dist/core/types.js +0 -0
  83. package/dist/events/event-bridge.d.ts +14 -0
  84. package/dist/events/event-bridge.js +75 -0
  85. package/dist/events/event-bridge.js.map +1 -0
  86. package/dist/events/event-names.d.ts +21 -0
  87. package/dist/events/event-names.js +22 -0
  88. package/dist/events/event-names.js.map +1 -0
  89. package/dist/form/components/base/checkbox.d.ts +4 -0
  90. package/dist/form/components/base/checkbox.js +22 -0
  91. package/dist/form/components/base/checkbox.js.map +1 -0
  92. package/dist/form/components/base/field.d.ts +9 -0
  93. package/dist/form/components/base/field.js +38 -0
  94. package/dist/form/components/base/field.js.map +1 -0
  95. package/dist/form/components/base/input-error.d.ts +4 -0
  96. package/dist/form/components/base/input-error.js +14 -0
  97. package/dist/form/components/base/input-error.js.map +1 -0
  98. package/dist/form/components/base/input.d.ts +3 -0
  99. package/dist/form/components/base/input.js +16 -0
  100. package/dist/form/components/base/input.js.map +1 -0
  101. package/dist/form/components/base/label.d.ts +4 -0
  102. package/dist/form/components/base/label.js +16 -0
  103. package/dist/form/components/base/label.js.map +1 -0
  104. package/dist/form/components/base/password-input.d.ts +7 -0
  105. package/dist/form/components/base/password-input.js +29 -0
  106. package/dist/form/components/base/password-input.js.map +1 -0
  107. package/dist/form/components/base/submit-button.d.ts +6 -0
  108. package/dist/form/components/base/submit-button.js +46 -0
  109. package/dist/form/components/base/submit-button.js.map +1 -0
  110. package/dist/form/components/base/textarea.d.ts +3 -0
  111. package/dist/form/components/base/textarea.js +15 -0
  112. package/dist/form/components/base/textarea.js.map +1 -0
  113. package/dist/form/components/conditions.d.ts +25 -0
  114. package/dist/form/components/conditions.js +62 -0
  115. package/dist/form/components/conditions.js.map +1 -0
  116. package/dist/form/components/context.d.ts +20 -0
  117. package/dist/form/components/context.js +30 -0
  118. package/dist/form/components/context.js.map +1 -0
  119. package/dist/form/components/fields/checkbox.d.ts +16 -0
  120. package/dist/form/components/fields/checkbox.js +51 -0
  121. package/dist/form/components/fields/checkbox.js.map +1 -0
  122. package/dist/form/components/fields/choice.d.ts +14 -0
  123. package/dist/form/components/fields/choice.js +49 -0
  124. package/dist/form/components/fields/choice.js.map +1 -0
  125. package/dist/form/components/fields/date-input.d.ts +20 -0
  126. package/dist/form/components/fields/date-input.js +33 -0
  127. package/dist/form/components/fields/date-input.js.map +1 -0
  128. package/dist/form/components/fields/hidden-input.d.ts +10 -0
  129. package/dist/form/components/fields/hidden-input.js +12 -0
  130. package/dist/form/components/fields/hidden-input.js.map +1 -0
  131. package/dist/form/components/fields/number-input.d.ts +23 -0
  132. package/dist/form/components/fields/number-input.js +55 -0
  133. package/dist/form/components/fields/number-input.js.map +1 -0
  134. package/dist/form/components/fields/password-input.d.ts +29 -0
  135. package/dist/form/components/fields/password-input.js +73 -0
  136. package/dist/form/components/fields/password-input.js.map +1 -0
  137. package/dist/form/components/fields/rich-editor.d.ts +17 -0
  138. package/dist/form/components/fields/rich-editor.js +302 -0
  139. package/dist/form/components/fields/rich-editor.js.map +1 -0
  140. package/dist/form/components/fields/select.d.ts +23 -0
  141. package/dist/form/components/fields/select.js +182 -0
  142. package/dist/form/components/fields/select.js.map +1 -0
  143. package/dist/form/components/fields/submit-button.d.ts +10 -0
  144. package/dist/form/components/fields/submit-button.js +14 -0
  145. package/dist/form/components/fields/submit-button.js.map +1 -0
  146. package/dist/form/components/fields/text-input.d.ts +21 -0
  147. package/dist/form/components/fields/text-input.js +33 -0
  148. package/dist/form/components/fields/text-input.js.map +1 -0
  149. package/dist/form/components/fields/textarea.d.ts +20 -0
  150. package/dist/form/components/fields/textarea.js +32 -0
  151. package/dist/form/components/fields/textarea.js.map +1 -0
  152. package/dist/form/components/form-transport.d.ts +8 -0
  153. package/dist/form/components/form-transport.js +31 -0
  154. package/dist/form/components/form-transport.js.map +1 -0
  155. package/dist/form/components/form.d.ts +21 -0
  156. package/dist/form/components/form.js +126 -0
  157. package/dist/form/components/form.js.map +1 -0
  158. package/dist/form/components/index.d.ts +11 -0
  159. package/dist/form/components/index.js +12 -0
  160. package/dist/form/components/resolved-nodes.d.ts +6 -0
  161. package/dist/form/components/resolved-nodes.js +20 -0
  162. package/dist/form/components/resolved-nodes.js.map +1 -0
  163. package/dist/form/components/types.d.ts +7 -0
  164. package/dist/form/components/types.js +0 -0
  165. package/dist/form/components/use-controlled-field.d.ts +16 -0
  166. package/dist/form/components/use-controlled-field.js +33 -0
  167. package/dist/form/components/use-controlled-field.js.map +1 -0
  168. package/dist/form/components/use-dependent-field.d.ts +3 -0
  169. package/dist/form/components/use-dependent-field.js +18 -0
  170. package/dist/form/components/use-dependent-field.js.map +1 -0
  171. package/dist/form/components/use-field-commit.d.ts +14 -0
  172. package/dist/form/components/use-field-commit.js +30 -0
  173. package/dist/form/components/use-field-commit.js.map +1 -0
  174. package/dist/form/components/use-form-resolver.d.ts +2 -0
  175. package/dist/form/components/use-form-resolver.js +57 -0
  176. package/dist/form/components/use-form-resolver.js.map +1 -0
  177. package/dist/form/components/values.d.ts +7 -0
  178. package/dist/form/components/values.js +37 -0
  179. package/dist/form/components/values.js.map +1 -0
  180. package/dist/form/index.d.ts +1 -0
  181. package/dist/form/index.js +33 -0
  182. package/dist/form/index.js.map +1 -0
  183. package/dist/form/skeleton.d.ts +2 -0
  184. package/dist/form/skeleton.js +21 -0
  185. package/dist/form/skeleton.js.map +1 -0
  186. package/dist/generated/types.d.ts +17 -0
  187. package/dist/generated/types.js +0 -0
  188. package/dist/icons/default-icons.d.ts +3 -0
  189. package/dist/icons/default-icons.js +44 -0
  190. package/dist/icons/default-icons.js.map +1 -0
  191. package/dist/icons/dynamic-lucide-renderer.d.ts +2 -0
  192. package/dist/icons/dynamic-lucide-renderer.js +18 -0
  193. package/dist/icons/dynamic-lucide-renderer.js.map +1 -0
  194. package/dist/icons/icon-renderer.d.ts +14 -0
  195. package/dist/icons/icon-renderer.js +35 -0
  196. package/dist/icons/icon-renderer.js.map +1 -0
  197. package/dist/icons/index.d.ts +2 -0
  198. package/dist/icons/index.js +2 -0
  199. package/dist/index.d.ts +22 -0
  200. package/dist/index.js +14 -0
  201. package/dist/inertia.d.ts +17 -0
  202. package/dist/inertia.js +26 -0
  203. package/dist/inertia.js.map +1 -0
  204. package/dist/lattice.css +247 -0
  205. package/dist/lib/utils.d.ts +4 -0
  206. package/dist/lib/utils.js +13 -0
  207. package/dist/lib/utils.js.map +1 -0
  208. package/dist/menu/index.d.ts +1 -0
  209. package/dist/menu/index.js +2 -0
  210. package/dist/menu/use-menu.d.ts +2 -0
  211. package/dist/menu/use-menu.js +9 -0
  212. package/dist/menu/use-menu.js.map +1 -0
  213. package/dist/page.d.ts +6 -0
  214. package/dist/page.js +30 -0
  215. package/dist/page.js.map +1 -0
  216. package/dist/provider.d.ts +7 -0
  217. package/dist/provider.js +19 -0
  218. package/dist/provider.js.map +1 -0
  219. package/dist/registry.d.ts +1 -0
  220. package/dist/registry.js +11 -0
  221. package/dist/registry.js.map +1 -0
  222. package/dist/table/bulk.d.ts +18 -0
  223. package/dist/table/bulk.js +44 -0
  224. package/dist/table/bulk.js.map +1 -0
  225. package/dist/table/components/bulk-bar.d.ts +11 -0
  226. package/dist/table/components/bulk-bar.js +76 -0
  227. package/dist/table/components/bulk-bar.js.map +1 -0
  228. package/dist/table/components/column-filter-control.d.ts +14 -0
  229. package/dist/table/components/column-filter-control.js +244 -0
  230. package/dist/table/components/column-filter-control.js.map +1 -0
  231. package/dist/table/components/column-header.d.ts +7 -0
  232. package/dist/table/components/column-header.js +37 -0
  233. package/dist/table/components/column-header.js.map +1 -0
  234. package/dist/table/components/filter-stack-bar.d.ts +7 -0
  235. package/dist/table/components/filter-stack-bar.js +35 -0
  236. package/dist/table/components/filter-stack-bar.js.map +1 -0
  237. package/dist/table/components/filter-value-input.d.ts +11 -0
  238. package/dist/table/components/filter-value-input.js +82 -0
  239. package/dist/table/components/filter-value-input.js.map +1 -0
  240. package/dist/table/components/pagination.d.ts +14 -0
  241. package/dist/table/components/pagination.js +67 -0
  242. package/dist/table/components/pagination.js.map +1 -0
  243. package/dist/table/components/sort-bar.d.ts +7 -0
  244. package/dist/table/components/sort-bar.js +43 -0
  245. package/dist/table/components/sort-bar.js.map +1 -0
  246. package/dist/table/components/table-action-node.d.ts +4 -0
  247. package/dist/table/components/table-action-node.js +24 -0
  248. package/dist/table/components/table-action-node.js.map +1 -0
  249. package/dist/table/components/table-cell.d.ts +5 -0
  250. package/dist/table/components/table-cell.js +63 -0
  251. package/dist/table/components/table-cell.js.map +1 -0
  252. package/dist/table/components/table.d.ts +3 -0
  253. package/dist/table/components/table.js +189 -0
  254. package/dist/table/components/table.js.map +1 -0
  255. package/dist/table/format.d.ts +3 -0
  256. package/dist/table/format.js +41 -0
  257. package/dist/table/format.js.map +1 -0
  258. package/dist/table/index.d.ts +1 -0
  259. package/dist/table/index.js +10 -0
  260. package/dist/table/index.js.map +1 -0
  261. package/dist/table/payload.d.ts +9 -0
  262. package/dist/table/payload.js +46 -0
  263. package/dist/table/payload.js.map +1 -0
  264. package/dist/table/query.d.ts +12 -0
  265. package/dist/table/query.js +83 -0
  266. package/dist/table/query.js.map +1 -0
  267. package/dist/table/types.d.ts +67 -0
  268. package/dist/table/types.js +0 -0
  269. package/dist/table/use-table-selection.d.ts +12 -0
  270. package/dist/table/use-table-selection.js +46 -0
  271. package/dist/table/use-table-selection.js.map +1 -0
  272. package/dist/table/use-table.d.ts +19 -0
  273. package/dist/table/use-table.js +157 -0
  274. package/dist/table/use-table.js.map +1 -0
  275. package/dist/types/index.d.ts +2 -0
  276. package/dist/types/index.js +0 -0
  277. package/package.json +151 -0
@@ -0,0 +1,23 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { RendererComponent } from '../../../../core/types';
3
+ import * as React from "react";
4
+ export type ButtonVariant = "default" | "destructive" | "ghost" | "link" | "outline" | "secondary";
5
+ declare const buttonVariants: (props?: ({
6
+ variant?: "link" | "default" | "destructive" | "ghost" | "outline" | "secondary" | null | undefined;
7
+ size?: "default" | "icon" | "sm" | "lg" | null | undefined;
8
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
9
+ declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
10
+ asChild?: boolean;
11
+ }): React.JSX.Element;
12
+ declare module '../../../../core/types' {
13
+ interface ComponentProps {
14
+ button: {
15
+ href?: string;
16
+ label?: string;
17
+ variant?: ButtonVariant;
18
+ };
19
+ }
20
+ }
21
+ declare const ButtonComponent: RendererComponent<"button">;
22
+ export default ButtonComponent;
23
+ export { Button, buttonVariants };
@@ -0,0 +1,68 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { getStringProp } from "../props.js";
3
+ import "react";
4
+ import { Link } from "@inertiajs/react";
5
+ import { Slot } from "@radix-ui/react-slot";
6
+ import { cva } from "class-variance-authority";
7
+ import { jsx } from "react/jsx-runtime";
8
+ //#region resources/js/core/components/button.tsx
9
+ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lt-sm text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-lt-ring focus-visible:ring-lt-ring/50 focus-visible:ring-[3px] aria-invalid:ring-lt-danger/20 dark:aria-invalid:ring-lt-danger/40 aria-invalid:border-lt-danger", {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-lt-primary text-lt-primary-fg shadow-xs hover:bg-lt-primary/90",
13
+ destructive: "bg-lt-danger text-lt-danger-fg shadow-xs hover:bg-lt-danger/90 focus-visible:ring-lt-danger/20 dark:focus-visible:ring-lt-danger/40",
14
+ outline: "border border-lt-input bg-lt-bg shadow-xs hover:bg-lt-accent hover:text-lt-accent-fg",
15
+ secondary: "bg-lt-secondary text-lt-secondary-fg shadow-xs hover:bg-lt-secondary/80",
16
+ ghost: "hover:bg-lt-accent hover:text-lt-accent-fg",
17
+ link: "text-lt-primary underline-offset-4 hover:underline"
18
+ },
19
+ size: {
20
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
21
+ sm: "h-8 rounded-lt-sm px-3 has-[>svg]:px-2.5",
22
+ lg: "h-10 rounded-lt-sm px-6 has-[>svg]:px-4",
23
+ icon: "size-9"
24
+ }
25
+ },
26
+ defaultVariants: {
27
+ variant: "default",
28
+ size: "default"
29
+ }
30
+ });
31
+ function Button({ className, variant, size, asChild = false, ...props }) {
32
+ return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
33
+ "data-slot": "button",
34
+ className: cn(buttonVariants({
35
+ variant,
36
+ size,
37
+ className
38
+ })),
39
+ ...props
40
+ });
41
+ }
42
+ function getButtonVariant(variant) {
43
+ if (variant === "default" || variant === "destructive" || variant === "outline" || variant === "secondary" || variant === "ghost" || variant === "link") return variant;
44
+ return "default";
45
+ }
46
+ var ButtonComponent = ({ node }) => {
47
+ const href = getStringProp(node.props, "href");
48
+ const label = getStringProp(node.props, "label", "Action");
49
+ const variant = getButtonVariant(getStringProp(node.props, "variant", "default"));
50
+ if (href) return /* @__PURE__ */ jsx(Button, {
51
+ asChild: true,
52
+ variant,
53
+ size: "lg",
54
+ children: /* @__PURE__ */ jsx(Link, {
55
+ href,
56
+ children: label
57
+ })
58
+ });
59
+ return /* @__PURE__ */ jsx(Button, {
60
+ variant,
61
+ size: "lg",
62
+ children: label
63
+ });
64
+ };
65
+ //#endregion
66
+ export { Button, buttonVariants, ButtonComponent as default };
67
+
68
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","names":[],"sources":["../../../resources/js/core/components/button.tsx"],"sourcesContent":["import { Link } from \"@inertiajs/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { cn } from \"@lattice/lattice/lib/utils\";\nimport { getStringProp } from \"@lattice/lattice/core/props\";\nimport type { RendererComponent } from \"@lattice/lattice/core/types\";\n\nexport type ButtonVariant = \"default\" | \"destructive\" | \"ghost\" | \"link\" | \"outline\" | \"secondary\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lt-sm text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-lt-ring focus-visible:ring-lt-ring/50 focus-visible:ring-[3px] aria-invalid:ring-lt-danger/20 dark:aria-invalid:ring-lt-danger/40 aria-invalid:border-lt-danger\",\n {\n variants: {\n variant: {\n default: \"bg-lt-primary text-lt-primary-fg shadow-xs hover:bg-lt-primary/90\",\n destructive:\n \"bg-lt-danger text-lt-danger-fg shadow-xs hover:bg-lt-danger/90 focus-visible:ring-lt-danger/20 dark:focus-visible:ring-lt-danger/40\",\n outline:\n \"border border-lt-input bg-lt-bg shadow-xs hover:bg-lt-accent hover:text-lt-accent-fg\",\n secondary: \"bg-lt-secondary text-lt-secondary-fg shadow-xs hover:bg-lt-secondary/80\",\n ghost: \"hover:bg-lt-accent hover:text-lt-accent-fg\",\n link: \"text-lt-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-lt-sm px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-lt-sm px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\ndeclare module \"@lattice/lattice/core/types\" {\n interface ComponentProps {\n button: {\n href?: string;\n label?: string;\n variant?: ButtonVariant;\n };\n }\n}\n\nfunction getButtonVariant(variant: string): ButtonVariant {\n if (\n variant === \"default\" ||\n variant === \"destructive\" ||\n variant === \"outline\" ||\n variant === \"secondary\" ||\n variant === \"ghost\" ||\n variant === \"link\"\n ) {\n return variant;\n }\n\n return \"default\";\n}\n\nconst ButtonComponent: RendererComponent<\"button\"> = ({ node }) => {\n const href = getStringProp(node.props, \"href\");\n const label = getStringProp(node.props, \"label\", \"Action\");\n const variant = getButtonVariant(getStringProp(node.props, \"variant\", \"default\"));\n\n if (href) {\n return (\n <Button asChild variant={variant} size=\"lg\">\n <Link href={href}>{label}</Link>\n </Button>\n );\n }\n\n return (\n <Button variant={variant} size=\"lg\">\n {label}\n </Button>\n );\n};\n\nexport default ButtonComponent;\nexport { Button, buttonVariants };\n"],"mappings":";;;;;;;;AAUA,IAAM,iBAAiB,IACrB,wcACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aACE;GACF,SACE;GACF,WAAW;GACX,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACJ,MAAM;EACR;CACF;CACA,iBAAiB;EACf,SAAS;EACT,MAAM;CACR;AACF,CACF;AAEA,SAAS,OAAO,EACd,WACA,SACA,MACA,UAAU,OACV,GAAG,SAIA;CAGH,OACE,oBAHW,UAAU,OAAO,UAG5B;EACE,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;EAAU,CAAC,CAAC;EAC1D,GAAI;CACL,CAAA;AAEL;AAYA,SAAS,iBAAiB,SAAgC;CACxD,IACE,YAAY,aACZ,YAAY,iBACZ,YAAY,aACZ,YAAY,eACZ,YAAY,WACZ,YAAY,QAEZ,OAAO;CAGT,OAAO;AACT;AAEA,IAAM,mBAAgD,EAAE,WAAW;CACjE,MAAM,OAAO,cAAc,KAAK,OAAO,MAAM;CAC7C,MAAM,QAAQ,cAAc,KAAK,OAAO,SAAS,QAAQ;CACzD,MAAM,UAAU,iBAAiB,cAAc,KAAK,OAAO,WAAW,SAAS,CAAC;CAEhF,IAAI,MACF,OACE,oBAAC,QAAD;EAAQ,SAAA;EAAiB;EAAS,MAAK;YACrC,oBAAC,MAAD;GAAY;aAAO;EAAY,CAAA;CACzB,CAAA;CAIZ,OACE,oBAAC,QAAD;EAAiB;EAAS,MAAK;YAC5B;CACK,CAAA;AAEZ"}
@@ -0,0 +1,19 @@
1
+ import { RendererComponent } from '../../../../core/types';
2
+ import * as React from "react";
3
+ declare module '../../../../core/types' {
4
+ interface ComponentProps {
5
+ card: {
6
+ description?: string;
7
+ title?: string;
8
+ };
9
+ }
10
+ }
11
+ declare function Card({ className, ...props }: React.ComponentProps<"article">): React.JSX.Element;
12
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
13
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
14
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
15
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
16
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
17
+ declare const CardComponent: RendererComponent<"card">;
18
+ export default CardComponent;
19
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,62 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { getStringProp } from "../props.js";
3
+ import "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region resources/js/core/components/card.tsx
6
+ function Card({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx("article", {
8
+ "data-slot": "card",
9
+ className: cn("flex flex-col gap-6 rounded-lt border border-lt-border bg-lt-surface py-6 text-lt-surface-fg shadow-xs", className),
10
+ ...props
11
+ });
12
+ }
13
+ function CardHeader({ className, ...props }) {
14
+ return /* @__PURE__ */ jsx("div", {
15
+ "data-slot": "card-header",
16
+ className: cn("flex flex-col gap-1.5 px-6", className),
17
+ ...props
18
+ });
19
+ }
20
+ function CardTitle({ className, ...props }) {
21
+ return /* @__PURE__ */ jsx("div", {
22
+ "data-slot": "card-title",
23
+ className: cn("font-semibold leading-none", className),
24
+ ...props
25
+ });
26
+ }
27
+ function CardDescription({ className, ...props }) {
28
+ return /* @__PURE__ */ jsx("div", {
29
+ "data-slot": "card-description",
30
+ className: cn("text-sm text-lt-muted-fg", className),
31
+ ...props
32
+ });
33
+ }
34
+ function CardContent({ className, ...props }) {
35
+ return /* @__PURE__ */ jsx("div", {
36
+ "data-slot": "card-content",
37
+ className: cn("px-6", className),
38
+ ...props
39
+ });
40
+ }
41
+ function CardFooter({ className, ...props }) {
42
+ return /* @__PURE__ */ jsx("div", {
43
+ "data-slot": "card-footer",
44
+ className: cn("flex items-center px-6", className),
45
+ ...props
46
+ });
47
+ }
48
+ var CardComponent = ({ children, node }) => {
49
+ const title = getStringProp(node.props, "title");
50
+ const description = getStringProp(node.props, "description");
51
+ return /* @__PURE__ */ jsxs(Card, {
52
+ "data-lattice-component": node.id,
53
+ children: [(title || description) && /* @__PURE__ */ jsxs(CardHeader, { children: [title && /* @__PURE__ */ jsx(CardTitle, { children: title }), description && /* @__PURE__ */ jsx(CardDescription, { children: description })] }), children && /* @__PURE__ */ jsx(CardContent, {
54
+ className: "flex flex-col gap-6",
55
+ children
56
+ })]
57
+ });
58
+ };
59
+ //#endregion
60
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardComponent as default };
61
+
62
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":[],"sources":["../../../resources/js/core/components/card.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"@lattice/lattice/lib/utils\";\nimport { getStringProp } from \"@lattice/lattice/core/props\";\nimport type { RendererComponent } from \"@lattice/lattice/core/types\";\n\ndeclare module \"@lattice/lattice/core/types\" {\n interface ComponentProps {\n card: {\n description?: string;\n title?: string;\n };\n }\n}\n\nfunction Card({ className, ...props }: React.ComponentProps<\"article\">) {\n return (\n <article\n data-slot=\"card\"\n className={cn(\n \"flex flex-col gap-6 rounded-lt border border-lt-border bg-lt-surface py-6 text-lt-surface-fg shadow-xs\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\"flex flex-col gap-1.5 px-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"font-semibold leading-none\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-lt-muted-fg\", className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-content\" className={cn(\"px-6\", className)} {...props} />;\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-footer\" className={cn(\"flex items-center px-6\", className)} {...props} />\n );\n}\n\nconst CardComponent: RendererComponent<\"card\"> = ({ children, node }) => {\n const title = getStringProp(node.props, \"title\");\n const description = getStringProp(node.props, \"description\");\n\n return (\n <Card data-lattice-component={node.id}>\n {(title || description) && (\n <CardHeader>\n {title && <CardTitle>{title}</CardTitle>}\n {description && <CardDescription>{description}</CardDescription>}\n </CardHeader>\n )}\n {children && <CardContent className=\"flex flex-col gap-6\">{children}</CardContent>}\n </Card>\n );\n};\n\nexport default CardComponent;\nexport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };\n"],"mappings":";;;;;AAcA,SAAS,KAAK,EAAE,WAAW,GAAG,SAA0C;CACtE,OACE,oBAAC,WAAD;EACE,aAAU;EACV,WAAW,GACT,0GACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,8BAA8B,SAAS;EACrD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,SAAsC;CACvE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,8BAA8B,SAAS;EACrD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,gBAAgB,EAAE,WAAW,GAAG,SAAsC;CAC7E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GAAG,4BAA4B,SAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OAAO,oBAAC,OAAD;EAAK,aAAU;EAAe,WAAW,GAAG,QAAQ,SAAS;EAAG,GAAI;CAAQ,CAAA;AACrF;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAc,WAAW,GAAG,0BAA0B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEjG;AAEA,IAAM,iBAA4C,EAAE,UAAU,WAAW;CACvE,MAAM,QAAQ,cAAc,KAAK,OAAO,OAAO;CAC/C,MAAM,cAAc,cAAc,KAAK,OAAO,aAAa;CAE3D,OACE,qBAAC,MAAD;EAAM,0BAAwB,KAAK;YAAnC,EACI,SAAS,gBACT,qBAAC,YAAD,EAAA,UAAA,CACG,SAAS,oBAAC,WAAD,EAAA,UAAY,MAAiB,CAAA,GACtC,eAAe,oBAAC,iBAAD,EAAA,UAAkB,YAA6B,CAAA,CACrD,EAAA,CAAA,GAEb,YAAY,oBAAC,aAAD;GAAa,WAAU;GAAuB;EAAsB,CAAA,CAC7E;;AAEV"}
@@ -0,0 +1,13 @@
1
+ import { ComponentProps } from 'react';
2
+ import { Button } from './button';
3
+ export declare function ConfirmDialog({ title, description, confirmLabel, cancelLabel, confirmVariant, processing, confirmDisabled, onConfirm, onCancel, }: {
4
+ title: string;
5
+ description?: string;
6
+ confirmLabel: string;
7
+ cancelLabel?: string;
8
+ confirmVariant?: ComponentProps<typeof Button>["variant"];
9
+ processing?: boolean;
10
+ confirmDisabled?: boolean;
11
+ onConfirm: () => void;
12
+ onCancel: () => void;
13
+ }): import("react").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { Button } from "./button.js";
2
+ import { Spinner } from "./spinner.js";
3
+ import { useId } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region resources/js/core/components/confirm-dialog.tsx
6
+ function ConfirmDialog({ title, description, confirmLabel, cancelLabel = "Cancel", confirmVariant = "default", processing = false, confirmDisabled = false, onConfirm, onCancel }) {
7
+ const titleId = useId();
8
+ return /* @__PURE__ */ jsx("div", {
9
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
10
+ children: /* @__PURE__ */ jsxs("div", {
11
+ "aria-labelledby": titleId,
12
+ "aria-modal": "true",
13
+ className: "w-full max-w-md rounded-lt border border-lt-border bg-lt-bg p-6 shadow-lg",
14
+ role: "dialog",
15
+ children: [/* @__PURE__ */ jsxs("div", {
16
+ className: "grid gap-2",
17
+ children: [/* @__PURE__ */ jsx("h2", {
18
+ className: "text-lg font-semibold leading-none tracking-tight",
19
+ id: titleId,
20
+ children: title
21
+ }), description && /* @__PURE__ */ jsx("p", {
22
+ className: "text-sm text-lt-muted-fg",
23
+ children: description
24
+ })]
25
+ }), /* @__PURE__ */ jsxs("div", {
26
+ className: "mt-6 flex justify-end gap-2",
27
+ children: [/* @__PURE__ */ jsx(Button, {
28
+ type: "button",
29
+ variant: "outline",
30
+ disabled: processing,
31
+ onClick: onCancel,
32
+ children: cancelLabel
33
+ }), /* @__PURE__ */ jsxs(Button, {
34
+ type: "button",
35
+ variant: confirmVariant,
36
+ disabled: processing || confirmDisabled,
37
+ onClick: onConfirm,
38
+ children: [processing && /* @__PURE__ */ jsx(Spinner, {}), confirmLabel]
39
+ })]
40
+ })]
41
+ })
42
+ });
43
+ }
44
+ //#endregion
45
+ export { ConfirmDialog };
46
+
47
+ //# sourceMappingURL=confirm-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirm-dialog.js","names":[],"sources":["../../../resources/js/core/components/confirm-dialog.tsx"],"sourcesContent":["import { type ComponentProps, useId } from \"react\";\nimport { Button } from \"./button\";\nimport { Spinner } from \"./spinner\";\n\nexport function ConfirmDialog({\n title,\n description,\n confirmLabel,\n cancelLabel = \"Cancel\",\n confirmVariant = \"default\",\n processing = false,\n confirmDisabled = false,\n onConfirm,\n onCancel,\n}: {\n title: string;\n description?: string;\n confirmLabel: string;\n cancelLabel?: string;\n confirmVariant?: ComponentProps<typeof Button>[\"variant\"];\n processing?: boolean;\n confirmDisabled?: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n}) {\n const titleId = useId();\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div\n aria-labelledby={titleId}\n aria-modal=\"true\"\n className=\"w-full max-w-md rounded-lt border border-lt-border bg-lt-bg p-6 shadow-lg\"\n role=\"dialog\"\n >\n <div className=\"grid gap-2\">\n <h2 className=\"text-lg font-semibold leading-none tracking-tight\" id={titleId}>\n {title}\n </h2>\n {description && <p className=\"text-sm text-lt-muted-fg\">{description}</p>}\n </div>\n <div className=\"mt-6 flex justify-end gap-2\">\n <Button type=\"button\" variant=\"outline\" disabled={processing} onClick={onCancel}>\n {cancelLabel}\n </Button>\n <Button\n type=\"button\"\n variant={confirmVariant}\n disabled={processing || confirmDisabled}\n onClick={onConfirm}\n >\n {processing && <Spinner />}\n {confirmLabel}\n </Button>\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,SAAgB,cAAc,EAC5B,OACA,aACA,cACA,cAAc,UACd,iBAAiB,WACjB,aAAa,OACb,kBAAkB,OAClB,WACA,YAWC;CACD,MAAM,UAAU,MAAM;CAEtB,OACE,oBAAC,OAAD;EAAK,WAAU;YACb,qBAAC,OAAD;GACE,mBAAiB;GACjB,cAAW;GACX,WAAU;GACV,MAAK;aAJP,CAME,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,MAAD;KAAI,WAAU;KAAoD,IAAI;eACnE;IACC,CAAA,GACH,eAAe,oBAAC,KAAD;KAAG,WAAU;eAA4B;IAAe,CAAA,CACrE;OACL,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,QAAD;KAAQ,MAAK;KAAS,SAAQ;KAAU,UAAU;KAAY,SAAS;eACpE;IACK,CAAA,GACR,qBAAC,QAAD;KACE,MAAK;KACL,SAAS;KACT,UAAU,cAAc;KACxB,SAAS;eAJX,CAMG,cAAc,oBAAC,SAAD,CAAU,CAAA,GACxB,YACK;MACL;KACF;;CACF,CAAA;AAET"}
@@ -0,0 +1,12 @@
1
+ import { RendererComponent } from '../../../../core/types';
2
+ declare module '../../../../core/types' {
3
+ interface ComponentProps {
4
+ fragment: {
5
+ endpoint?: string;
6
+ ref?: string;
7
+ lazy?: boolean;
8
+ };
9
+ }
10
+ }
11
+ declare const FragmentComponent: RendererComponent<"fragment">;
12
+ export default FragmentComponent;
@@ -0,0 +1,62 @@
1
+ import { withRefHeader } from "../component-ref.js";
2
+ import { getStringProp } from "../props.js";
3
+ import { LATTICE_EVENT } from "../../events/event-names.js";
4
+ import { Renderer, useRendererContext } from "../renderer.js";
5
+ import { useCallback, useEffect, useState } from "react";
6
+ import { jsx } from "react/jsx-runtime";
7
+ //#region resources/js/core/components/fragment.tsx
8
+ function getComponents(value) {
9
+ if (!Array.isArray(value)) return [];
10
+ return value.filter((node) => typeof node === "object" && node !== null && "type" in node && typeof node.type === "string");
11
+ }
12
+ var FragmentComponent = ({ node }) => {
13
+ const endpoint = getStringProp(node.props, "endpoint");
14
+ const isLazy = node.props?.lazy === true;
15
+ const componentRef = getStringProp(node.props, "ref");
16
+ const [components, setComponents] = useState(() => node.children ?? []);
17
+ const [hasLoaded, setHasLoaded] = useState(!isLazy);
18
+ const [processing, setProcessing] = useState(isLazy && endpoint !== "");
19
+ const { fallback, missingComponent, registry } = useRendererContext();
20
+ const load = useCallback(async () => {
21
+ if (!endpoint) return;
22
+ setProcessing(true);
23
+ try {
24
+ setComponents(getComponents((await (await fetch(endpoint, { headers: {
25
+ Accept: "application/json",
26
+ ...withRefHeader(componentRef)
27
+ } })).json()).components));
28
+ setHasLoaded(true);
29
+ } finally {
30
+ setProcessing(false);
31
+ }
32
+ }, [endpoint, componentRef]);
33
+ useEffect(() => {
34
+ if (!isLazy || hasLoaded) return;
35
+ load();
36
+ }, [
37
+ hasLoaded,
38
+ isLazy,
39
+ load
40
+ ]);
41
+ useEffect(() => {
42
+ function reload(event) {
43
+ if (event.detail?.component !== node.id) return;
44
+ load();
45
+ }
46
+ window.addEventListener(LATTICE_EVENT.reloadComponent, reload);
47
+ return () => window.removeEventListener(LATTICE_EVENT.reloadComponent, reload);
48
+ }, [load, node.id]);
49
+ return /* @__PURE__ */ jsx("div", {
50
+ "data-lattice-fragment": node.id,
51
+ children: processing && components.length === 0 ? /* @__PURE__ */ jsx("div", { className: "h-16 animate-pulse rounded-lt-sm bg-lt-muted" }) : /* @__PURE__ */ jsx(Renderer, {
52
+ fallback,
53
+ missingComponent,
54
+ nodes: components,
55
+ registry
56
+ })
57
+ });
58
+ };
59
+ //#endregion
60
+ export { FragmentComponent as default };
61
+
62
+ //# sourceMappingURL=fragment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragment.js","names":[],"sources":["../../../resources/js/core/components/fragment.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\nimport { withRefHeader } from \"@lattice/lattice/core/component-ref\";\nimport { getStringProp } from \"@lattice/lattice/core/props\";\nimport { Renderer, useRendererContext } from \"@lattice/lattice/core/renderer\";\nimport type { Node, RendererComponent } from \"@lattice/lattice/core/types\";\nimport { LATTICE_EVENT, type ReloadComponentEvent } from \"@lattice/lattice/events/event-names\";\n\ntype FragmentResponse = {\n components?: Node[];\n};\n\ndeclare module \"@lattice/lattice/core/types\" {\n interface ComponentProps {\n fragment: {\n endpoint?: string;\n ref?: string;\n lazy?: boolean;\n };\n }\n}\n\nfunction getComponents(value: unknown): Node[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value.filter(\n (node): node is Node =>\n typeof node === \"object\" && node !== null && \"type\" in node && typeof node.type === \"string\",\n );\n}\n\nconst FragmentComponent: RendererComponent<\"fragment\"> = ({ node }) => {\n const endpoint = getStringProp(node.props, \"endpoint\");\n const isLazy = node.props?.lazy === true;\n const componentRef = getStringProp(node.props, \"ref\");\n const [components, setComponents] = useState(() => node.children ?? []);\n const [hasLoaded, setHasLoaded] = useState(!isLazy);\n const [processing, setProcessing] = useState(isLazy && endpoint !== \"\");\n const { fallback, missingComponent, registry } = useRendererContext();\n\n const load = useCallback(async (): Promise<void> => {\n if (!endpoint) {\n return;\n }\n\n setProcessing(true);\n\n try {\n const response = await fetch(endpoint, {\n headers: {\n Accept: \"application/json\",\n ...withRefHeader(componentRef),\n },\n });\n const result = (await response.json()) as FragmentResponse;\n\n setComponents(getComponents(result.components));\n setHasLoaded(true);\n } finally {\n setProcessing(false);\n }\n }, [endpoint, componentRef]);\n\n useEffect(() => {\n if (!isLazy || hasLoaded) {\n return;\n }\n\n void load();\n }, [hasLoaded, isLazy, load]);\n\n useEffect(() => {\n function reload(event: Event): void {\n const detail = (event as ReloadComponentEvent).detail;\n\n if (detail?.component !== node.id) {\n return;\n }\n\n void load();\n }\n\n window.addEventListener(LATTICE_EVENT.reloadComponent, reload);\n\n return () => window.removeEventListener(LATTICE_EVENT.reloadComponent, reload);\n }, [load, node.id]);\n\n return (\n <div data-lattice-fragment={node.id}>\n {processing && components.length === 0 ? (\n <div className=\"h-16 animate-pulse rounded-lt-sm bg-lt-muted\" />\n ) : (\n <Renderer\n fallback={fallback}\n missingComponent={missingComponent}\n nodes={components}\n registry={registry}\n />\n )}\n </div>\n );\n};\n\nexport default FragmentComponent;\n"],"mappings":";;;;;;;AAqBA,SAAS,cAAc,OAAwB;CAC7C,IAAI,CAAC,MAAM,QAAQ,KAAK,GACtB,OAAO,CAAC;CAGV,OAAO,MAAM,QACV,SACC,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,QAAQ,OAAO,KAAK,SAAS,QACxF;AACF;AAEA,IAAM,qBAAoD,EAAE,WAAW;CACrE,MAAM,WAAW,cAAc,KAAK,OAAO,UAAU;CACrD,MAAM,SAAS,KAAK,OAAO,SAAS;CACpC,MAAM,eAAe,cAAc,KAAK,OAAO,KAAK;CACpD,MAAM,CAAC,YAAY,iBAAiB,eAAe,KAAK,YAAY,CAAC,CAAC;CACtE,MAAM,CAAC,WAAW,gBAAgB,SAAS,CAAC,MAAM;CAClD,MAAM,CAAC,YAAY,iBAAiB,SAAS,UAAU,aAAa,EAAE;CACtE,MAAM,EAAE,UAAU,kBAAkB,aAAa,mBAAmB;CAEpE,MAAM,OAAO,YAAY,YAA2B;EAClD,IAAI,CAAC,UACH;EAGF,cAAc,IAAI;EAElB,IAAI;GASF,cAAc,eAAc,OAFN,MANC,MAAM,UAAU,EACrC,SAAS;IACP,QAAQ;IACR,GAAG,cAAc,YAAY;GAC/B,EACF,CAAC,GAC8B,KAAK,GAED,UAAU,CAAC;GAC9C,aAAa,IAAI;EACnB,UAAU;GACR,cAAc,KAAK;EACrB;CACF,GAAG,CAAC,UAAU,YAAY,CAAC;CAE3B,gBAAgB;EACd,IAAI,CAAC,UAAU,WACb;EAGF,KAAU;CACZ,GAAG;EAAC;EAAW;EAAQ;CAAI,CAAC;CAE5B,gBAAgB;EACd,SAAS,OAAO,OAAoB;GAGlC,IAFgB,MAA+B,QAEnC,cAAc,KAAK,IAC7B;GAGF,KAAU;EACZ;EAEA,OAAO,iBAAiB,cAAc,iBAAiB,MAAM;EAE7D,aAAa,OAAO,oBAAoB,cAAc,iBAAiB,MAAM;CAC/E,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;CAElB,OACE,oBAAC,OAAD;EAAK,yBAAuB,KAAK;YAC9B,cAAc,WAAW,WAAW,IACnC,oBAAC,OAAD,EAAK,WAAU,+CAAgD,CAAA,IAE/D,oBAAC,UAAD;GACY;GACQ;GAClB,OAAO;GACG;EACX,CAAA;CAEA,CAAA;AAET"}
@@ -0,0 +1,10 @@
1
+ import { RendererComponent } from '../../../../core/types';
2
+ declare module '../../../../core/types' {
3
+ interface ComponentProps {
4
+ grid: {
5
+ columns?: number;
6
+ };
7
+ }
8
+ }
9
+ declare const GridComponent: RendererComponent<"grid">;
10
+ export default GridComponent;
@@ -0,0 +1,16 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { getNumberProp } from "../props.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region resources/js/core/components/grid.tsx
5
+ var GridComponent = ({ children, node }) => {
6
+ const columns = Math.min(Math.max(getNumberProp(node.props, "columns", 1), 1), 4);
7
+ return /* @__PURE__ */ jsx("div", {
8
+ "data-lattice-component": node.id,
9
+ className: cn("grid gap-x-4 gap-y-6", columns >= 2 && "md:grid-cols-2", columns >= 3 && "lg:grid-cols-3", columns >= 4 && "xl:grid-cols-4"),
10
+ children
11
+ });
12
+ };
13
+ //#endregion
14
+ export { GridComponent as default };
15
+
16
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","names":[],"sources":["../../../resources/js/core/components/grid.tsx"],"sourcesContent":["import { getNumberProp } from \"@lattice/lattice/core/props\";\nimport type { RendererComponent } from \"@lattice/lattice/core/types\";\nimport { cn } from \"@lattice/lattice/lib/utils\";\n\ndeclare module \"@lattice/lattice/core/types\" {\n interface ComponentProps {\n grid: {\n columns?: number;\n };\n }\n}\n\nconst GridComponent: RendererComponent<\"grid\"> = ({ children, node }) => {\n const columns = Math.min(Math.max(getNumberProp(node.props, \"columns\", 1), 1), 4);\n\n return (\n <div\n data-lattice-component={node.id}\n className={cn(\n \"grid gap-x-4 gap-y-6\",\n columns >= 2 && \"md:grid-cols-2\",\n columns >= 3 && \"lg:grid-cols-3\",\n columns >= 4 && \"xl:grid-cols-4\",\n )}\n >\n {children}\n </div>\n );\n};\n\nexport default GridComponent;\n"],"mappings":";;;;AAYA,IAAM,iBAA4C,EAAE,UAAU,WAAW;CACvE,MAAM,UAAU,KAAK,IAAI,KAAK,IAAI,cAAc,KAAK,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;CAEhF,OACE,oBAAC,OAAD;EACE,0BAAwB,KAAK;EAC7B,WAAW,GACT,wBACA,WAAW,KAAK,kBAChB,WAAW,KAAK,kBAChB,WAAW,KAAK,gBAClB;EAEC;CACE,CAAA;AAET"}
@@ -0,0 +1,11 @@
1
+ import { RendererComponent } from '../../../../core/types';
2
+ declare module '../../../../core/types' {
3
+ interface ComponentProps {
4
+ heading: {
5
+ level?: number;
6
+ text?: string;
7
+ };
8
+ }
9
+ }
10
+ declare const HeadingComponent: RendererComponent<"heading">;
11
+ export default HeadingComponent;
@@ -0,0 +1,39 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { getNumberProp, getStringProp } from "../props.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region resources/js/core/components/heading.tsx
5
+ var HeadingComponent = ({ node }) => {
6
+ const text = getStringProp(node.props, "text");
7
+ const level = Math.min(Math.max(getNumberProp(node.props, "level", 1), 1), 6);
8
+ const className = cn("max-w-3xl font-semibold tracking-normal text-balance text-lt-fg", level === 1 && "text-4xl leading-tight sm:text-5xl", level === 2 && "text-2xl", level > 2 && "text-lg");
9
+ switch (level) {
10
+ case 1: return /* @__PURE__ */ jsx("h1", {
11
+ className,
12
+ children: text
13
+ });
14
+ case 2: return /* @__PURE__ */ jsx("h2", {
15
+ className,
16
+ children: text
17
+ });
18
+ case 3: return /* @__PURE__ */ jsx("h3", {
19
+ className,
20
+ children: text
21
+ });
22
+ case 4: return /* @__PURE__ */ jsx("h4", {
23
+ className,
24
+ children: text
25
+ });
26
+ case 5: return /* @__PURE__ */ jsx("h5", {
27
+ className,
28
+ children: text
29
+ });
30
+ default: return /* @__PURE__ */ jsx("h6", {
31
+ className,
32
+ children: text
33
+ });
34
+ }
35
+ };
36
+ //#endregion
37
+ export { HeadingComponent as default };
38
+
39
+ //# sourceMappingURL=heading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.js","names":[],"sources":["../../../resources/js/core/components/heading.tsx"],"sourcesContent":["import { getNumberProp, getStringProp } from \"@lattice/lattice/core/props\";\nimport type { RendererComponent } from \"@lattice/lattice/core/types\";\nimport { cn } from \"@lattice/lattice/lib/utils\";\n\ndeclare module \"@lattice/lattice/core/types\" {\n interface ComponentProps {\n heading: {\n level?: number;\n text?: string;\n };\n }\n}\n\nconst HeadingComponent: RendererComponent<\"heading\"> = ({ node }) => {\n const text = getStringProp(node.props, \"text\");\n const level = Math.min(Math.max(getNumberProp(node.props, \"level\", 1), 1), 6);\n const className = cn(\n \"max-w-3xl font-semibold tracking-normal text-balance text-lt-fg\",\n level === 1 && \"text-4xl leading-tight sm:text-5xl\",\n level === 2 && \"text-2xl\",\n level > 2 && \"text-lg\",\n );\n\n switch (level) {\n case 1:\n return <h1 className={className}>{text}</h1>;\n case 2:\n return <h2 className={className}>{text}</h2>;\n case 3:\n return <h3 className={className}>{text}</h3>;\n case 4:\n return <h4 className={className}>{text}</h4>;\n case 5:\n return <h5 className={className}>{text}</h5>;\n default:\n return <h6 className={className}>{text}</h6>;\n }\n};\n\nexport default HeadingComponent;\n"],"mappings":";;;;AAaA,IAAM,oBAAkD,EAAE,WAAW;CACnE,MAAM,OAAO,cAAc,KAAK,OAAO,MAAM;CAC7C,MAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,cAAc,KAAK,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;CAC5E,MAAM,YAAY,GAChB,mEACA,UAAU,KAAK,sCACf,UAAU,KAAK,YACf,QAAQ,KAAK,SACf;CAEA,QAAQ,OAAR;EACE,KAAK,GACH,OAAO,oBAAC,MAAD;GAAe;aAAY;EAAS,CAAA;EAC7C,KAAK,GACH,OAAO,oBAAC,MAAD;GAAe;aAAY;EAAS,CAAA;EAC7C,KAAK,GACH,OAAO,oBAAC,MAAD;GAAe;aAAY;EAAS,CAAA;EAC7C,KAAK,GACH,OAAO,oBAAC,MAAD;GAAe;aAAY;EAAS,CAAA;EAC7C,KAAK,GACH,OAAO,oBAAC,MAAD;GAAe;aAAY;EAAS,CAAA;EAC7C,SACE,OAAO,oBAAC,MAAD;GAAe;aAAY;EAAS,CAAA;CAC/C;AACF"}
@@ -0,0 +1 @@
1
+ export declare const coreComponents: import('../../../../core/registry').Plugin;
@@ -0,0 +1,36 @@
1
+ import { createPlugin, eagerComponent } from "../registry.js";
2
+ import ButtonComponent from "./button.js";
3
+ import BadgeComponent from "./badge.js";
4
+ import CardComponent from "./card.js";
5
+ import FragmentComponent from "./fragment.js";
6
+ import GridComponent from "./grid.js";
7
+ import HeadingComponent from "./heading.js";
8
+ import LinkComponent from "./link.js";
9
+ import ModalComponent from "./modal.js";
10
+ import SegmentedControlComponent from "./segmented-control.js";
11
+ import StackComponent from "./stack.js";
12
+ import TabComponent, { TabsComponent } from "./tabs.js";
13
+ import TextComponent from "./text.js";
14
+ //#region resources/js/core/components/index.ts
15
+ var coreComponents = createPlugin({
16
+ components: {
17
+ badge: eagerComponent(BadgeComponent),
18
+ button: eagerComponent(ButtonComponent),
19
+ card: eagerComponent(CardComponent),
20
+ fragment: eagerComponent(FragmentComponent),
21
+ grid: eagerComponent(GridComponent),
22
+ heading: eagerComponent(HeadingComponent),
23
+ link: eagerComponent(LinkComponent),
24
+ modal: eagerComponent(ModalComponent),
25
+ "segmented-control": eagerComponent(SegmentedControlComponent),
26
+ stack: eagerComponent(StackComponent),
27
+ tab: eagerComponent(TabComponent),
28
+ tabs: eagerComponent(TabsComponent),
29
+ text: eagerComponent(TextComponent)
30
+ },
31
+ name: "lattice/core"
32
+ });
33
+ //#endregion
34
+ export { coreComponents };
35
+
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../resources/js/core/components/index.ts"],"sourcesContent":["import { createPlugin, eagerComponent } from \"@lattice/lattice/core/registry\";\nimport BadgeComponent from \"./badge\";\nimport ButtonComponent from \"./button\";\nimport CardComponent from \"./card\";\nimport FragmentComponent from \"./fragment\";\nimport GridComponent from \"./grid\";\nimport HeadingComponent from \"./heading\";\nimport LinkComponent from \"./link\";\nimport ModalComponent from \"./modal\";\nimport SegmentedControlComponent from \"./segmented-control\";\nimport StackComponent from \"./stack\";\nimport TabComponent, { TabsComponent } from \"./tabs\";\nimport TextComponent from \"./text\";\n\nexport const coreComponents = createPlugin({\n components: {\n badge: eagerComponent(BadgeComponent),\n button: eagerComponent(ButtonComponent),\n card: eagerComponent(CardComponent),\n fragment: eagerComponent(FragmentComponent),\n grid: eagerComponent(GridComponent),\n heading: eagerComponent(HeadingComponent),\n link: eagerComponent(LinkComponent),\n modal: eagerComponent(ModalComponent),\n \"segmented-control\": eagerComponent(SegmentedControlComponent),\n stack: eagerComponent(StackComponent),\n tab: eagerComponent(TabComponent),\n tabs: eagerComponent(TabsComponent),\n text: eagerComponent(TextComponent),\n },\n name: \"lattice/core\",\n});\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAa,iBAAiB,aAAa;CACzC,YAAY;EACV,OAAO,eAAe,cAAc;EACpC,QAAQ,eAAe,eAAe;EACtC,MAAM,eAAe,aAAa;EAClC,UAAU,eAAe,iBAAiB;EAC1C,MAAM,eAAe,aAAa;EAClC,SAAS,eAAe,gBAAgB;EACxC,MAAM,eAAe,aAAa;EAClC,OAAO,eAAe,cAAc;EACpC,qBAAqB,eAAe,yBAAyB;EAC7D,OAAO,eAAe,cAAc;EACpC,KAAK,eAAe,YAAY;EAChC,MAAM,eAAe,aAAa;EAClC,MAAM,eAAe,aAAa;CACpC;CACA,MAAM;AACR,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Method } from '@inertiajs/core';
2
+ import { Link } from '@inertiajs/react';
3
+ import { ComponentProps } from 'react';
4
+ import { RendererComponent } from '../../../../core/types';
5
+ declare module '../../../../core/types' {
6
+ interface ComponentProps {
7
+ link: {
8
+ href?: string;
9
+ label?: string;
10
+ method?: Method;
11
+ tabIndex?: number;
12
+ };
13
+ }
14
+ }
15
+ declare function TextLink({ className, children, ...props }: ComponentProps<typeof Link>): import("react").JSX.Element;
16
+ declare const LinkComponent: RendererComponent<"link">;
17
+ export default LinkComponent;
18
+ export { TextLink };
@@ -0,0 +1,26 @@
1
+ import { cn } from "../../lib/utils.js";
2
+ import { getOptionalNumberProp, getStringProp } from "../props.js";
3
+ import { Link } from "@inertiajs/react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region resources/js/core/components/link.tsx
6
+ function TextLink({ className = "", children, ...props }) {
7
+ return /* @__PURE__ */ jsx(Link, {
8
+ className: cn("text-lt-fg underline decoration-lt-border underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-lt-border", className),
9
+ ...props,
10
+ children
11
+ });
12
+ }
13
+ function getLinkMethod(method) {
14
+ if (method === "delete" || method === "patch" || method === "post" || method === "put") return method;
15
+ return "get";
16
+ }
17
+ var LinkComponent = ({ node }) => /* @__PURE__ */ jsx(TextLink, {
18
+ href: getStringProp(node.props, "href", "#"),
19
+ method: getLinkMethod(getStringProp(node.props, "method", "get")),
20
+ tabIndex: getOptionalNumberProp(node.props, "tabIndex"),
21
+ children: getStringProp(node.props, "label", "Link")
22
+ });
23
+ //#endregion
24
+ export { TextLink, LinkComponent as default };
25
+
26
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","names":[],"sources":["../../../resources/js/core/components/link.tsx"],"sourcesContent":["import type { Method } from \"@inertiajs/core\";\nimport { Link } from \"@inertiajs/react\";\nimport type { ComponentProps } from \"react\";\nimport { cn } from \"@lattice/lattice/lib/utils\";\nimport { getOptionalNumberProp, getStringProp } from \"@lattice/lattice/core/props\";\nimport type { RendererComponent } from \"@lattice/lattice/core/types\";\n\ndeclare module \"@lattice/lattice/core/types\" {\n interface ComponentProps {\n link: {\n href?: string;\n label?: string;\n method?: Method;\n tabIndex?: number;\n };\n }\n}\n\nfunction TextLink({ className = \"\", children, ...props }: ComponentProps<typeof Link>) {\n return (\n <Link\n className={cn(\n \"text-lt-fg underline decoration-lt-border underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-lt-border\",\n className,\n )}\n {...props}\n >\n {children}\n </Link>\n );\n}\n\nfunction getLinkMethod(method: string): Method {\n if (method === \"delete\" || method === \"patch\" || method === \"post\" || method === \"put\") {\n return method;\n }\n\n return \"get\";\n}\n\nconst LinkComponent: RendererComponent<\"link\"> = ({ node }) => (\n <TextLink\n href={getStringProp(node.props, \"href\", \"#\")}\n method={getLinkMethod(getStringProp(node.props, \"method\", \"get\"))}\n tabIndex={getOptionalNumberProp(node.props, \"tabIndex\")}\n >\n {getStringProp(node.props, \"label\", \"Link\")}\n </TextLink>\n);\n\nexport default LinkComponent;\nexport { TextLink };\n"],"mappings":";;;;;AAkBA,SAAS,SAAS,EAAE,YAAY,IAAI,UAAU,GAAG,SAAsC;CACrF,OACE,oBAAC,MAAD;EACE,WAAW,GACT,4JACA,SACF;EACA,GAAI;EAEH;CACG,CAAA;AAEV;AAEA,SAAS,cAAc,QAAwB;CAC7C,IAAI,WAAW,YAAY,WAAW,WAAW,WAAW,UAAU,WAAW,OAC/E,OAAO;CAGT,OAAO;AACT;AAEA,IAAM,iBAA4C,EAAE,WAClD,oBAAC,UAAD;CACE,MAAM,cAAc,KAAK,OAAO,QAAQ,GAAG;CAC3C,QAAQ,cAAc,cAAc,KAAK,OAAO,UAAU,KAAK,CAAC;CAChE,UAAU,sBAAsB,KAAK,OAAO,UAAU;WAErD,cAAc,KAAK,OAAO,SAAS,MAAM;AAClC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { RendererComponent } from '../../../../core/types';
2
+ declare module '../../../../core/types' {
3
+ interface ComponentProps {
4
+ modal: {
5
+ closeLabel?: string;
6
+ description?: string;
7
+ open?: boolean;
8
+ title?: string;
9
+ };
10
+ }
11
+ }
12
+ declare const ModalComponent: RendererComponent<"modal">;
13
+ export default ModalComponent;