@lattice-php/lattice 0.13.0 → 0.15.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 (95) hide show
  1. package/dist/action/components/action-group.js +1 -1
  2. package/dist/action/components/action-group.js.map +1 -1
  3. package/dist/action/components/action-menu-context.d.ts +1 -1
  4. package/dist/action/components/action-menu-context.js +1 -1
  5. package/dist/action/components/action-menu-context.js.map +1 -1
  6. package/dist/core/components/card.js +13 -6
  7. package/dist/core/components/card.js.map +1 -1
  8. package/dist/core/components/collapsible.js +9 -2
  9. package/dist/core/components/collapsible.js.map +1 -1
  10. package/dist/core/components/dialog.d.ts +1 -1
  11. package/dist/core/components/dialog.js +2 -2
  12. package/dist/core/components/dialog.js.map +1 -1
  13. package/dist/core/components/eager.d.ts +1 -0
  14. package/dist/core/components/eager.js +50 -0
  15. package/dist/core/components/eager.js.map +1 -0
  16. package/dist/core/components/floating-panel.js +2 -2
  17. package/dist/core/components/floating-panel.js.map +1 -1
  18. package/dist/core/components/grid.js +1 -0
  19. package/dist/core/components/grid.js.map +1 -1
  20. package/dist/core/components/heading.js +10 -8
  21. package/dist/core/components/heading.js.map +1 -1
  22. package/dist/core/components/index.js +3 -1
  23. package/dist/core/components/index.js.map +1 -1
  24. package/dist/core/components/link.js +61 -3
  25. package/dist/core/components/link.js.map +1 -1
  26. package/dist/core/components/popover.d.ts +1 -1
  27. package/dist/core/components/popover.js +1 -1
  28. package/dist/core/components/popover.js.map +1 -1
  29. package/dist/core/components/section.js +18 -10
  30. package/dist/core/components/section.js.map +1 -1
  31. package/dist/core/components/stack.js +1 -0
  32. package/dist/core/components/stack.js.map +1 -1
  33. package/dist/core/components/tooltip.d.ts +3 -0
  34. package/dist/core/components/tooltip.js +25 -0
  35. package/dist/core/components/tooltip.js.map +1 -0
  36. package/dist/core/renderer.js +1 -1
  37. package/dist/create-app.js +7 -3
  38. package/dist/create-app.js.map +1 -1
  39. package/dist/form/components/base/field.js +1 -1
  40. package/dist/form/components/base/submit-button.js +1 -1
  41. package/dist/form/components/base/submit-button.js.map +1 -1
  42. package/dist/form/components/fields/checkbox.js +2 -2
  43. package/dist/form/components/fields/date-picker-control.js +2 -2
  44. package/dist/form/components/fields/date-picker-control.js.map +1 -1
  45. package/dist/form/components/fields/rich-editor.js +1 -1
  46. package/dist/form/components/fields/rich-editor.js.map +1 -1
  47. package/dist/form/components/fields/select.js +3 -2
  48. package/dist/form/components/fields/select.js.map +1 -1
  49. package/dist/form/components/fields/toggle.js +1 -1
  50. package/dist/form/components/form.js +2 -1
  51. package/dist/form/components/form.js.map +1 -1
  52. package/dist/form/components/index.js +1 -1
  53. package/dist/form/eager.d.ts +1 -0
  54. package/dist/form/eager.js +47 -0
  55. package/dist/form/eager.js.map +1 -0
  56. package/dist/index.d.ts +1 -1
  57. package/dist/index.js +5 -5
  58. package/dist/lattice.css +68 -36
  59. package/dist/layout/menu-item.js +1 -1
  60. package/dist/layout/menu-item.js.map +1 -1
  61. package/dist/layout/sidebar.js +2 -2
  62. package/dist/layout/sidebar.js.map +1 -1
  63. package/dist/layout/topbar.js +1 -1
  64. package/dist/layout/topbar.js.map +1 -1
  65. package/dist/provider-base.d.ts +10 -0
  66. package/dist/provider-base.js +27 -0
  67. package/dist/provider-base.js.map +1 -0
  68. package/dist/provider.d.ts +4 -7
  69. package/dist/provider.js +9 -22
  70. package/dist/provider.js.map +1 -1
  71. package/dist/registry/eager.d.ts +1 -0
  72. package/dist/registry/eager.js +14 -0
  73. package/dist/registry/eager.js.map +1 -0
  74. package/dist/registry/lazy.d.ts +1 -0
  75. package/dist/registry/lazy.js +14 -0
  76. package/dist/registry/lazy.js.map +1 -0
  77. package/dist/registry.d.ts +1 -1
  78. package/dist/registry.js +2 -14
  79. package/dist/table/components/column-filter-control.js +2 -2
  80. package/dist/table/components/column-filter-control.js.map +1 -1
  81. package/dist/table/components/filter-controls.js +3 -3
  82. package/dist/table/components/filter-controls.js.map +1 -1
  83. package/dist/table/components/pagination.js +7 -6
  84. package/dist/table/components/pagination.js.map +1 -1
  85. package/dist/table/components/table.js +11 -5
  86. package/dist/table/components/table.js.map +1 -1
  87. package/dist/table/eager.d.ts +1 -0
  88. package/dist/table/eager.js +11 -0
  89. package/dist/table/eager.js.map +1 -0
  90. package/dist/table/use-table.js +1 -1
  91. package/dist/toast/toaster.js +1 -1
  92. package/dist/toast/toaster.js.map +1 -1
  93. package/dist/types/generated.d.ts +15 -0
  94. package/package.json +9 -1
  95. package/dist/registry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eager.js","names":[],"sources":["../../resources/js/table/eager.ts"],"sourcesContent":["import { createPlugin, eagerComponent } from \"@lattice-php/lattice/core/registry\";\nimport type { RendererComponent } from \"@lattice-php/lattice/core/types\";\nimport TableComponent from \"./components/table\";\n\nexport const eagerTableComponents = createPlugin({\n components: {\n table: eagerComponent(TableComponent as unknown as RendererComponent<\"table\">),\n },\n name: \"lattice/table\",\n});\n"],"mappings":";;;AAIA,IAAa,uBAAuB,aAAa;CAC/C,YAAY,EACV,OAAO,eAAe,cAAuD,EAC/E;CACA,MAAM;AACR,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { LATTICE_EVENT } from "../events/event-names.js";
2
2
  import { apiFetch, apiJson } from "../core/api.js";
3
- import { isEmptyFilterValue } from "./filter-values.js";
4
3
  import { getColumns, getPagination, getRows, getState } from "./payload.js";
4
+ import { isEmptyFilterValue } from "./filter-values.js";
5
5
  import { buildEndpoint, nextSort } from "./query.js";
6
6
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
7
7
  //#region resources/js/table/use-table.ts
@@ -54,7 +54,7 @@ function Toaster({ duration = 4e3 }) {
54
54
  })
55
55
  }) : null
56
56
  ]
57
- }, toast.id)), /* @__PURE__ */ jsx(Toast.Viewport, { className: "fixed inset-x-0 bottom-0 z-[100] mx-auto flex w-full max-w-sm flex-col gap-2 p-4 outline-none" })]
57
+ }, toast.id)), /* @__PURE__ */ jsx(Toast.Viewport, { className: "fixed inset-x-0 bottom-0 z-lt-toast mx-auto flex w-full max-w-sm flex-col gap-2 p-4 outline-none" })]
58
58
  });
59
59
  }
60
60
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"toaster.js","names":[],"sources":["../../resources/js/toast/toaster.tsx"],"sourcesContent":["import { Icon } from \"@lattice-php/lattice/icons\";\nimport * as Toast from \"@radix-ui/react-toast\";\nimport { useEffect, useState } from \"react\";\nimport { RenderNode } from \"@lattice-php/lattice/core/renderer\";\nimport type { ToastMessage } from \"@lattice-php/lattice/types/generated\";\nimport { onToast } from \"@lattice-php/lattice/toast/toast\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport { variantStyles } from \"@lattice-php/lattice/toast/variant-styles\";\nimport { resolveTranslatable } from \"@lattice-php/lattice/i18n/translatable\";\n\ntype ToastItem = ToastMessage & { id: number };\n\nlet nextId = 0;\n\nexport function Toaster({ duration = 4000 }: { duration?: number }) {\n const { t } = useT(\"lattice\");\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n function dismiss(id: number): void {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }\n\n useEffect(\n () =>\n onToast((toast) => {\n setToasts((current) => [...current, { ...toast, id: nextId++ }]);\n }),\n [],\n );\n\n return (\n <Toast.Provider duration={duration} swipeDirection=\"down\">\n {toasts.map((toast) => (\n <Toast.Root\n key={toast.id}\n className={cn(\n \"flex items-start gap-3 rounded-lt border border-l-4 border-lt-border bg-lt-popover p-4 text-lt-popover-fg shadow-lt-lg\",\n variantStyles[toast.variant].accent,\n \"data-[state=open]:animate-lt-toast-in data-[state=closed]:animate-lt-toast-out\",\n \"data-[swipe=move]:translate-y-[var(--radix-toast-swipe-move-y)] data-[swipe=cancel]:translate-y-0 data-[swipe=cancel]:transition-transform\",\n )}\n data-test={`toast-${toast.variant}`}\n duration={toast.persistent ? Infinity : (toast.duration ?? duration)}\n onOpenChange={(open) => {\n if (!open) {\n dismiss(toast.id);\n }\n }}\n >\n {variantStyles[toast.variant].icon}\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <Toast.Title className=\"text-sm text-lt-fg\">\n {typeof toast.message === \"string\"\n ? toast.message\n : resolveTranslatable(toast.message, {}, t)}\n </Toast.Title>\n {toast.action ? (\n <div className=\"flex flex-wrap gap-2\">\n <RenderNode node={toast.action} />\n </div>\n ) : null}\n </div>\n {toast.dismissible ? (\n <Toast.Close\n aria-label={t(\"common.dismiss\", \"Dismiss\")}\n className=\"shrink-0 rounded-lt-sm p-1 text-lt-muted-fg transition-colors hover:bg-lt-muted hover:text-lt-fg\"\n data-test=\"toast-dismiss\"\n >\n <Icon name=\"x\" className=\"size-lt-icon-md\" />\n </Toast.Close>\n ) : null}\n </Toast.Root>\n ))}\n <Toast.Viewport className=\"fixed inset-x-0 bottom-0 z-[100] mx-auto flex w-full max-w-sm flex-col gap-2 p-4 outline-none\" />\n </Toast.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;AAaA,IAAI,SAAS;AAEb,SAAgB,QAAQ,EAAE,WAAW,OAA+B;CAClE,MAAM,EAAE,MAAM,KAAK,SAAS;CAC5B,MAAM,CAAC,QAAQ,aAAa,SAAsB,CAAC,CAAC;CAEpD,SAAS,QAAQ,IAAkB;EACjC,WAAW,YAAY,QAAQ,QAAQ,UAAU,MAAM,OAAO,EAAE,CAAC;CACnE;CAEA,gBAEI,SAAS,UAAU;EACjB,WAAW,YAAY,CAAC,GAAG,SAAS;GAAE,GAAG;GAAO,IAAI;EAAS,CAAC,CAAC;CACjE,CAAC,GACH,CAAC,CACH;CAEA,OACE,qBAAC,MAAM,UAAP;EAA0B;EAAU,gBAAe;YAAnD,CACG,OAAO,KAAK,UACX,qBAAC,MAAM,MAAP;GAEE,WAAW,GACT,0HACA,cAAc,MAAM,SAAS,QAC7B,kFACA,4IACF;GACA,aAAW,SAAS,MAAM;GAC1B,UAAU,MAAM,aAAa,WAAY,MAAM,YAAY;GAC3D,eAAe,SAAS;IACtB,IAAI,CAAC,MACH,QAAQ,MAAM,EAAE;GAEpB;aAdF;IAgBG,cAAc,MAAM,SAAS;IAC9B,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,MAAM,OAAP;MAAa,WAAU;gBACpB,OAAO,MAAM,YAAY,WACtB,MAAM,UACN,oBAAoB,MAAM,SAAS,CAAC,GAAG,CAAC;KACjC,CAAA,GACZ,MAAM,SACL,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,YAAD,EAAY,MAAM,MAAM,OAAS,CAAA;KAC9B,CAAA,IACH,IACD;;IACJ,MAAM,cACL,oBAAC,MAAM,OAAP;KACE,cAAY,EAAE,kBAAkB,SAAS;KACzC,WAAU;KACV,aAAU;eAEV,oBAAC,MAAD;MAAM,MAAK;MAAI,WAAU;KAAmB,CAAA;IACjC,CAAA,IACX;GACM;KArCL,MAAM,EAqCD,CACb,GACD,oBAAC,MAAM,UAAP,EAAgB,WAAU,gGAAiG,CAAA,CAC7G;;AAEpB"}
1
+ {"version":3,"file":"toaster.js","names":[],"sources":["../../resources/js/toast/toaster.tsx"],"sourcesContent":["import { Icon } from \"@lattice-php/lattice/icons\";\nimport * as Toast from \"@radix-ui/react-toast\";\nimport { useEffect, useState } from \"react\";\nimport { RenderNode } from \"@lattice-php/lattice/core/renderer\";\nimport type { ToastMessage } from \"@lattice-php/lattice/types/generated\";\nimport { onToast } from \"@lattice-php/lattice/toast/toast\";\nimport { cn } from \"@lattice-php/lattice/lib/utils\";\nimport { useT } from \"@lattice-php/lattice/i18n\";\nimport { variantStyles } from \"@lattice-php/lattice/toast/variant-styles\";\nimport { resolveTranslatable } from \"@lattice-php/lattice/i18n/translatable\";\n\ntype ToastItem = ToastMessage & { id: number };\n\nlet nextId = 0;\n\nexport function Toaster({ duration = 4000 }: { duration?: number }) {\n const { t } = useT(\"lattice\");\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n\n function dismiss(id: number): void {\n setToasts((current) => current.filter((toast) => toast.id !== id));\n }\n\n useEffect(\n () =>\n onToast((toast) => {\n setToasts((current) => [...current, { ...toast, id: nextId++ }]);\n }),\n [],\n );\n\n return (\n <Toast.Provider duration={duration} swipeDirection=\"down\">\n {toasts.map((toast) => (\n <Toast.Root\n key={toast.id}\n className={cn(\n \"flex items-start gap-3 rounded-lt border border-l-4 border-lt-border bg-lt-popover p-4 text-lt-popover-fg shadow-lt-lg\",\n variantStyles[toast.variant].accent,\n \"data-[state=open]:animate-lt-toast-in data-[state=closed]:animate-lt-toast-out\",\n \"data-[swipe=move]:translate-y-[var(--radix-toast-swipe-move-y)] data-[swipe=cancel]:translate-y-0 data-[swipe=cancel]:transition-transform\",\n )}\n data-test={`toast-${toast.variant}`}\n duration={toast.persistent ? Infinity : (toast.duration ?? duration)}\n onOpenChange={(open) => {\n if (!open) {\n dismiss(toast.id);\n }\n }}\n >\n {variantStyles[toast.variant].icon}\n <div className=\"flex min-w-0 flex-1 flex-col gap-2\">\n <Toast.Title className=\"text-sm text-lt-fg\">\n {typeof toast.message === \"string\"\n ? toast.message\n : resolveTranslatable(toast.message, {}, t)}\n </Toast.Title>\n {toast.action ? (\n <div className=\"flex flex-wrap gap-2\">\n <RenderNode node={toast.action} />\n </div>\n ) : null}\n </div>\n {toast.dismissible ? (\n <Toast.Close\n aria-label={t(\"common.dismiss\", \"Dismiss\")}\n className=\"shrink-0 rounded-lt-sm p-1 text-lt-muted-fg transition-colors hover:bg-lt-muted hover:text-lt-fg\"\n data-test=\"toast-dismiss\"\n >\n <Icon name=\"x\" className=\"size-lt-icon-md\" />\n </Toast.Close>\n ) : null}\n </Toast.Root>\n ))}\n <Toast.Viewport className=\"fixed inset-x-0 bottom-0 z-lt-toast mx-auto flex w-full max-w-sm flex-col gap-2 p-4 outline-none\" />\n </Toast.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;AAaA,IAAI,SAAS;AAEb,SAAgB,QAAQ,EAAE,WAAW,OAA+B;CAClE,MAAM,EAAE,MAAM,KAAK,SAAS;CAC5B,MAAM,CAAC,QAAQ,aAAa,SAAsB,CAAC,CAAC;CAEpD,SAAS,QAAQ,IAAkB;EACjC,WAAW,YAAY,QAAQ,QAAQ,UAAU,MAAM,OAAO,EAAE,CAAC;CACnE;CAEA,gBAEI,SAAS,UAAU;EACjB,WAAW,YAAY,CAAC,GAAG,SAAS;GAAE,GAAG;GAAO,IAAI;EAAS,CAAC,CAAC;CACjE,CAAC,GACH,CAAC,CACH;CAEA,OACE,qBAAC,MAAM,UAAP;EAA0B;EAAU,gBAAe;YAAnD,CACG,OAAO,KAAK,UACX,qBAAC,MAAM,MAAP;GAEE,WAAW,GACT,0HACA,cAAc,MAAM,SAAS,QAC7B,kFACA,4IACF;GACA,aAAW,SAAS,MAAM;GAC1B,UAAU,MAAM,aAAa,WAAY,MAAM,YAAY;GAC3D,eAAe,SAAS;IACtB,IAAI,CAAC,MACH,QAAQ,MAAM,EAAE;GAEpB;aAdF;IAgBG,cAAc,MAAM,SAAS;IAC9B,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,MAAM,OAAP;MAAa,WAAU;gBACpB,OAAO,MAAM,YAAY,WACtB,MAAM,UACN,oBAAoB,MAAM,SAAS,CAAC,GAAG,CAAC;KACjC,CAAA,GACZ,MAAM,SACL,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,YAAD,EAAY,MAAM,MAAM,OAAS,CAAA;KAC9B,CAAA,IACH,IACD;;IACJ,MAAM,cACL,oBAAC,MAAM,OAAP;KACE,cAAY,EAAE,kBAAkB,SAAS;KACzC,WAAU;KACV,aAAU;eAEV,oBAAC,MAAD;MAAM,MAAK;MAAI,WAAU;KAAmB,CAAA;IACjC,CAAA,IACX;GACM;KArCL,MAAM,EAqCD,CACb,GACD,oBAAC,MAAM,UAAP,EAAgB,WAAU,mGAAoG,CAAA,CAChH;;AAEpB"}
@@ -123,6 +123,7 @@ export type Callouts = Record<string, never>;
123
123
  export type Card = {
124
124
  description: string | null;
125
125
  title: string | null;
126
+ tooltip: string | null;
126
127
  };
127
128
  export type ChannelVisibility = "public" | "private" | "presence";
128
129
  export type Chart = {
@@ -231,6 +232,7 @@ export type CloseModalEffect = {
231
232
  export type Collapsible = {
232
233
  collapsed: boolean;
233
234
  rememberState: boolean;
235
+ tooltip: string | null;
234
236
  trigger: Node[];
235
237
  };
236
238
  export type Color = "default" | "muted" | "primary" | "success" | "info" | "warning" | "danger";
@@ -372,6 +374,10 @@ export type CoreNode = {
372
374
  type: "text";
373
375
  key?: string;
374
376
  props: Text;
377
+ } | {
378
+ type: "tooltip";
379
+ key?: string;
380
+ props: Tooltip;
375
381
  };
376
382
  export type DataList = {
377
383
  dataEndpoint: string | null;
@@ -635,6 +641,7 @@ export type Grid = {
635
641
  export type Heading = {
636
642
  level: number;
637
643
  text: string;
644
+ tooltip: string | null;
638
645
  };
639
646
  export type Height = "full" | "screen";
640
647
  export type HiddenInput = {
@@ -725,8 +732,11 @@ export type LayoutNode = {
725
732
  export type Link = {
726
733
  action: Node | null;
727
734
  href: string | null;
735
+ icon: string | null;
728
736
  label: string;
729
737
  method: HttpMethod | null;
738
+ prefix: Affix | null;
739
+ suffix: Affix | null;
730
740
  tabIndex: number | null;
731
741
  };
732
742
  export type ListenerPayload = {
@@ -981,6 +991,7 @@ export type Section = {
981
991
  headerActions: Node[];
982
992
  rememberState: boolean;
983
993
  title: string | null;
994
+ tooltip: string | null;
984
995
  };
985
996
  export type SegmentedControl = {
986
997
  emits: string | null;
@@ -1248,6 +1259,10 @@ export type ToolCallPart = {
1248
1259
  args: Record<string, unknown>;
1249
1260
  name: string;
1250
1261
  };
1262
+ export type Tooltip = {
1263
+ content: string | null;
1264
+ trigger: Node[];
1265
+ };
1251
1266
  export type Topbar = {
1252
1267
  sticky: boolean;
1253
1268
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lattice-php/lattice",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "Server-driven React components for Laravel and Inertia.",
5
5
  "license": "MIT",
6
6
  "author": "Manuel Christlieb <manuel@christlieb.eu>",
@@ -135,6 +135,14 @@
135
135
  "types": "./dist/registry.d.ts",
136
136
  "import": "./dist/registry.js"
137
137
  },
138
+ "./registry/eager": {
139
+ "types": "./dist/registry/eager.d.ts",
140
+ "import": "./dist/registry/eager.js"
141
+ },
142
+ "./registry/lazy": {
143
+ "types": "./dist/registry/lazy.d.ts",
144
+ "import": "./dist/registry/lazy.js"
145
+ },
138
146
  "./remote": {
139
147
  "types": "./dist/remote/index.d.ts",
140
148
  "import": "./dist/remote/index.js"
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../resources/js/registry.ts"],"sourcesContent":["import { createRegistry } from \"@lattice-php/lattice/core/registry\";\nimport { actionComponents } from \"./action\";\nimport { chatPlugin } from \"./chat\";\nimport { coreComponents } from \"./core/components\";\nimport { formComponents } from \"./form\";\nimport { remoteComponents } from \"./remote\";\nimport { layoutComponents } from \"./layout/components\";\nimport { tableComponents } from \"./table\";\n\nexport const registry = createRegistry(\n coreComponents,\n actionComponents,\n formComponents,\n layoutComponents,\n tableComponents,\n chatPlugin,\n remoteComponents,\n);\n"],"mappings":";;;;;;;;;AASA,IAAa,WAAW,eACtB,gBACA,kBACA,gBACA,kBACA,iBACA,YACA,gBACF"}