@lattice-php/lattice 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +8 -0
- package/dist/action/components/action-form.d.ts +24 -0
- package/dist/action/components/action-form.js +270 -0
- package/dist/action/components/action-form.js.map +1 -0
- package/dist/action/components/action-group.d.ts +1 -8
- package/dist/action/components/action-group.js +24 -66
- package/dist/action/components/action-group.js.map +1 -1
- package/dist/action/components/action.d.ts +1 -24
- package/dist/action/components/action.js +61 -46
- package/dist/action/components/action.js.map +1 -1
- package/dist/action/effects.d.ts +6 -25
- package/dist/action/effects.js +2 -2
- package/dist/action/effects.js.map +1 -1
- package/dist/action/index.d.ts +1 -1
- package/dist/core/components/badge.d.ts +1 -8
- package/dist/core/components/badge.js +2 -3
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/button.d.ts +4 -12
- package/dist/core/components/button.js +6 -9
- package/dist/core/components/button.js.map +1 -1
- package/dist/core/components/card.d.ts +1 -9
- package/dist/core/components/card.js +1 -3
- package/dist/core/components/card.js.map +1 -1
- package/dist/core/components/confirm-dialog.d.ts +2 -3
- package/dist/core/components/confirm-dialog.js +19 -13
- package/dist/core/components/confirm-dialog.js.map +1 -1
- package/dist/core/components/fragment.d.ts +1 -10
- package/dist/core/components/fragment.js +5 -6
- package/dist/core/components/fragment.js.map +1 -1
- package/dist/core/components/grid.d.ts +1 -8
- package/dist/core/components/grid.js +1 -2
- package/dist/core/components/grid.js.map +1 -1
- package/dist/core/components/heading.d.ts +1 -9
- package/dist/core/components/heading.js +2 -3
- package/dist/core/components/heading.js.map +1 -1
- package/dist/core/components/icon.d.ts +3 -0
- package/dist/core/components/icon.js +30 -0
- package/dist/core/components/icon.js.map +1 -0
- package/dist/core/components/index.d.ts +1 -1
- package/dist/core/components/index.js +4 -0
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/link.d.ts +1 -12
- package/dist/core/components/link.js +4 -9
- package/dist/core/components/link.js.map +1 -1
- package/dist/core/components/modal.d.ts +1 -11
- package/dist/core/components/modal.js +27 -31
- package/dist/core/components/modal.js.map +1 -1
- package/dist/core/components/section.d.ts +3 -0
- package/dist/core/components/section.js +79 -0
- package/dist/core/components/section.js.map +1 -0
- package/dist/core/components/segmented-control.d.ts +1 -14
- package/dist/core/components/segmented-control.js +4 -7
- package/dist/core/components/segmented-control.js.map +1 -1
- package/dist/core/components/segmented-pills.d.ts +4 -2
- package/dist/core/components/segmented-pills.js +10 -1
- package/dist/core/components/segmented-pills.js.map +1 -1
- package/dist/core/components/spinner.js +8 -4
- package/dist/core/components/spinner.js.map +1 -1
- package/dist/core/components/stack.d.ts +1 -11
- package/dist/core/components/stack.js +5 -5
- package/dist/core/components/stack.js.map +1 -1
- package/dist/core/components/tabs.d.ts +1 -19
- package/dist/core/components/tabs.js +45 -21
- package/dist/core/components/tabs.js.map +1 -1
- package/dist/core/components/text.d.ts +1 -9
- package/dist/core/components/text.js +2 -3
- package/dist/core/components/text.js.map +1 -1
- package/dist/core/registry.d.ts +9 -3
- package/dist/core/registry.js +21 -5
- package/dist/core/registry.js.map +1 -1
- package/dist/core/renderer.js +7 -13
- package/dist/core/renderer.js.map +1 -1
- package/dist/core/types.d.ts +54 -26
- package/dist/form/components/base/checkbox.js +5 -2
- package/dist/form/components/base/checkbox.js.map +1 -1
- package/dist/form/components/base/field.d.ts +2 -1
- package/dist/form/components/base/field.js +5 -1
- package/dist/form/components/base/field.js.map +1 -1
- package/dist/form/components/base/password-input.js +9 -2
- package/dist/form/components/base/password-input.js.map +1 -1
- package/dist/form/components/base/submit-button.d.ts +4 -4
- package/dist/form/components/base/submit-button.js +2 -2
- package/dist/form/components/base/submit-button.js.map +1 -1
- package/dist/form/components/conditions.d.ts +6 -9
- package/dist/form/components/conditions.js +10 -2
- package/dist/form/components/conditions.js.map +1 -1
- package/dist/form/components/context.d.ts +0 -4
- package/dist/form/components/context.js +1 -5
- package/dist/form/components/context.js.map +1 -1
- package/dist/form/components/field-props.d.ts +24 -0
- package/dist/form/components/field-props.js +15 -0
- package/dist/form/components/field-props.js.map +1 -0
- package/dist/form/components/fields/checkbox.d.ts +1 -15
- package/dist/form/components/fields/checkbox.js +16 -21
- package/dist/form/components/fields/checkbox.js.map +1 -1
- package/dist/form/components/fields/choice.d.ts +1 -13
- package/dist/form/components/fields/choice.js +13 -20
- package/dist/form/components/fields/choice.js.map +1 -1
- package/dist/form/components/fields/date-input.d.ts +1 -19
- package/dist/form/components/fields/date-input.js +11 -16
- package/dist/form/components/fields/date-input.js.map +1 -1
- package/dist/form/components/fields/hidden-input.d.ts +1 -9
- package/dist/form/components/fields/hidden-input.js +2 -3
- package/dist/form/components/fields/hidden-input.js.map +1 -1
- package/dist/form/components/fields/number-input.d.ts +1 -22
- package/dist/form/components/fields/number-input.js +38 -41
- package/dist/form/components/fields/number-input.js.map +1 -1
- package/dist/form/components/fields/password-input.d.ts +1 -28
- package/dist/form/components/fields/password-input.js +15 -24
- package/dist/form/components/fields/password-input.js.map +1 -1
- package/dist/form/components/fields/rich-editor.d.ts +1 -16
- package/dist/form/components/fields/rich-editor.js +57 -47
- package/dist/form/components/fields/rich-editor.js.map +1 -1
- package/dist/form/components/fields/select.d.ts +1 -22
- package/dist/form/components/fields/select.js +85 -74
- package/dist/form/components/fields/select.js.map +1 -1
- package/dist/form/components/fields/simple-field.d.ts +9 -0
- package/dist/form/components/fields/simple-field.js +22 -0
- package/dist/form/components/fields/simple-field.js.map +1 -0
- package/dist/form/components/fields/text-input.d.ts +1 -20
- package/dist/form/components/fields/text-input.js +12 -17
- package/dist/form/components/fields/text-input.js.map +1 -1
- package/dist/form/components/fields/textarea.d.ts +1 -19
- package/dist/form/components/fields/textarea.js +11 -16
- package/dist/form/components/fields/textarea.js.map +1 -1
- package/dist/form/components/form.d.ts +1 -20
- package/dist/form/components/form.js +29 -36
- package/dist/form/components/form.js.map +1 -1
- package/dist/form/components/index.d.ts +0 -1
- package/dist/form/components/index.js +1 -2
- package/dist/form/components/resolved-nodes.d.ts +1 -1
- package/dist/form/components/resolved-nodes.js +2 -2
- package/dist/form/components/resolved-nodes.js.map +1 -1
- package/dist/form/components/types.d.ts +1 -0
- package/dist/form/components/use-controlled-field.d.ts +3 -9
- package/dist/form/components/use-controlled-field.js +5 -9
- package/dist/form/components/use-controlled-field.js.map +1 -1
- package/dist/form/components/use-dependent-field.d.ts +1 -1
- package/dist/form/components/use-dependent-field.js +8 -8
- package/dist/form/components/use-dependent-field.js.map +1 -1
- package/dist/form/components/use-form-resolver.d.ts +1 -1
- package/dist/form/components/use-form-resolver.js +8 -13
- package/dist/form/components/use-form-resolver.js.map +1 -1
- package/dist/form/components/use-seed-default.d.ts +5 -0
- package/dist/form/components/use-seed-default.js +23 -0
- package/dist/form/components/use-seed-default.js.map +1 -0
- package/dist/form/index.d.ts +1 -1
- package/dist/form/index.js +0 -1
- package/dist/form/index.js.map +1 -1
- package/dist/form/skeleton.d.ts +1 -1
- package/dist/form/skeleton.js +1 -1
- package/dist/form/skeleton.js.map +1 -1
- package/dist/i18n/backend.d.ts +24 -0
- package/dist/i18n/backend.js +39 -0
- package/dist/i18n/backend.js.map +1 -0
- package/dist/i18n/index.d.ts +3 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/instance.js +48 -0
- package/dist/i18n/instance.js.map +1 -0
- package/dist/icons/icon-renderer.js +30 -5
- package/dist/icons/icon-renderer.js.map +1 -1
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.js +2 -1
- package/dist/icons/sprite.d.ts +30 -0
- package/dist/icons/sprite.js +40 -0
- package/dist/icons/sprite.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.js +7 -3
- package/dist/inertia.d.ts +1 -6
- package/dist/inertia.js +4 -8
- package/dist/inertia.js.map +1 -1
- package/dist/lattice.css +129 -5
- package/dist/layout/components.d.ts +1 -0
- package/dist/layout/components.js +19 -0
- package/dist/layout/components.js.map +1 -0
- package/dist/layout/context.d.ts +12 -0
- package/dist/layout/context.js +19 -0
- package/dist/layout/context.js.map +1 -0
- package/dist/layout/index.d.ts +3 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/menu-item.d.ts +3 -0
- package/dist/layout/menu-item.js +130 -0
- package/dist/layout/menu-item.js.map +1 -0
- package/dist/layout/menu.d.ts +3 -0
- package/dist/layout/menu.js +13 -0
- package/dist/layout/menu.js.map +1 -0
- package/dist/layout/outlet.d.ts +6 -0
- package/dist/layout/outlet.js +14 -0
- package/dist/layout/outlet.js.map +1 -0
- package/dist/layout/schema-layout.d.ts +10 -0
- package/dist/layout/schema-layout.js +30 -0
- package/dist/layout/schema-layout.js.map +1 -0
- package/dist/layout/sidebar.d.ts +3 -0
- package/dist/layout/sidebar.js +48 -0
- package/dist/layout/sidebar.js.map +1 -0
- package/dist/lib/utils.d.ts +0 -2
- package/dist/lib/utils.js +1 -4
- package/dist/lib/utils.js.map +1 -1
- package/dist/node_modules/i18next/dist/esm/i18next.js +1982 -0
- package/dist/node_modules/i18next/dist/esm/i18next.js.map +1 -0
- package/dist/node_modules/i18next-http-backend/esm/index.js +352 -0
- package/dist/node_modules/i18next-http-backend/esm/index.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/context.js +23 -0
- package/dist/node_modules/react-i18next/dist/es/context.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/defaults.js +29 -0
- package/dist/node_modules/react-i18next/dist/es/defaults.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/i18nInstance.js +10 -0
- package/dist/node_modules/react-i18next/dist/es/i18nInstance.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/initReactI18next.js +14 -0
- package/dist/node_modules/react-i18next/dist/es/initReactI18next.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/unescape.js +30 -0
- package/dist/node_modules/react-i18next/dist/es/unescape.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js +157 -0
- package/dist/node_modules/react-i18next/dist/es/useTranslation.js.map +1 -0
- package/dist/node_modules/react-i18next/dist/es/utils.js +58 -0
- package/dist/node_modules/react-i18next/dist/es/utils.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +70 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +61 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js +13 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js.map +1 -0
- package/dist/page.d.ts +1 -1
- package/dist/page.js +2 -2
- package/dist/page.js.map +1 -1
- package/dist/provider.d.ts +8 -3
- package/dist/provider.js +17 -9
- package/dist/provider.js.map +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/registry.js +2 -1
- package/dist/registry.js.map +1 -1
- package/dist/table/bulk.d.ts +6 -10
- package/dist/table/bulk.js +13 -35
- package/dist/table/bulk.js.map +1 -1
- package/dist/table/column-registry.d.ts +9 -0
- package/dist/table/components/bulk-bar.js +34 -3
- package/dist/table/components/bulk-bar.js.map +1 -1
- package/dist/table/components/cells/badge-cell.d.ts +5 -0
- package/dist/table/components/cells/badge-cell.js +16 -0
- package/dist/table/components/cells/badge-cell.js.map +1 -0
- package/dist/table/components/cells/icon-cell.d.ts +5 -0
- package/dist/table/components/cells/icon-cell.js +22 -0
- package/dist/table/components/cells/icon-cell.js.map +1 -0
- package/dist/table/components/cells/image-cell.d.ts +5 -0
- package/dist/table/components/cells/image-cell.js +24 -0
- package/dist/table/components/cells/image-cell.js.map +1 -0
- package/dist/table/components/cells/text-cell.d.ts +6 -0
- package/dist/table/components/cells/text-cell.js +50 -0
- package/dist/table/components/cells/text-cell.js.map +1 -0
- package/dist/table/components/column-filter-control.js +59 -96
- package/dist/table/components/column-filter-control.js.map +1 -1
- package/dist/table/components/column-header.js +22 -11
- package/dist/table/components/column-header.js.map +1 -1
- package/dist/table/components/filter-stack-bar.d.ts +2 -2
- package/dist/table/components/filter-stack-bar.js +10 -8
- package/dist/table/components/filter-stack-bar.js.map +1 -1
- package/dist/table/components/filter-value-input.d.ts +5 -3
- package/dist/table/components/filter-value-input.js +25 -16
- package/dist/table/components/filter-value-input.js.map +1 -1
- package/dist/table/components/pagination.d.ts +1 -1
- package/dist/table/components/pagination.js +20 -8
- package/dist/table/components/pagination.js.map +1 -1
- package/dist/table/components/sort-bar.d.ts +2 -2
- package/dist/table/components/sort-bar.js +12 -10
- package/dist/table/components/sort-bar.js.map +1 -1
- package/dist/table/components/table-action-node.d.ts +1 -1
- package/dist/table/components/table-action-node.js +1 -1
- package/dist/table/components/table-action-node.js.map +1 -1
- package/dist/table/components/table-cell.d.ts +1 -1
- package/dist/table/components/table-cell.js +24 -43
- package/dist/table/components/table-cell.js.map +1 -1
- package/dist/table/components/table.d.ts +6 -2
- package/dist/table/components/table.js +40 -17
- package/dist/table/components/table.js.map +1 -1
- package/dist/table/format.js +5 -3
- package/dist/table/format.js.map +1 -1
- package/dist/table/index.d.ts +1 -1
- package/dist/table/index.js.map +1 -1
- package/dist/table/payload.d.ts +1 -1
- package/dist/table/query.d.ts +0 -1
- package/dist/table/query.js +8 -9
- package/dist/table/query.js.map +1 -1
- package/dist/table/types.d.ts +38 -42
- package/dist/table/use-table.d.ts +3 -4
- package/dist/table/use-table.js +12 -23
- package/dist/table/use-table.js.map +1 -1
- package/dist/test-support.d.ts +14 -0
- package/dist/test-support.js +14 -0
- package/dist/test-support.js.map +1 -0
- package/dist/toast/index.d.ts +1 -0
- package/dist/toast/index.js +2 -0
- package/dist/toast/toaster.d.ts +3 -0
- package/dist/toast/toaster.js +126 -0
- package/dist/toast/toaster.js.map +1 -0
- package/dist/types/generated.d.ts +677 -0
- package/dist/types/generated.js +0 -0
- package/dist/types/index.d.ts +1 -1
- package/package.json +18 -3
- package/resources/icons/align-center.svg +17 -0
- package/resources/icons/align-justify.svg +17 -0
- package/resources/icons/align-left.svg +17 -0
- package/resources/icons/align-right.svg +17 -0
- package/resources/icons/arrow-down.svg +16 -0
- package/resources/icons/arrow-up.svg +16 -0
- package/resources/icons/bold.svg +15 -0
- package/resources/icons/check.svg +15 -0
- package/resources/icons/chevron-down.svg +15 -0
- package/resources/icons/chevron-right.svg +15 -0
- package/resources/icons/chevrons-up-down.svg +16 -0
- package/resources/icons/circle-alert.svg +17 -0
- package/resources/icons/circle-check.svg +16 -0
- package/resources/icons/circle-help.svg +17 -0
- package/resources/icons/circle-x.svg +17 -0
- package/resources/icons/code.svg +16 -0
- package/resources/icons/columns-3.svg +17 -0
- package/resources/icons/copy.svg +16 -0
- package/resources/icons/external-link.svg +17 -0
- package/resources/icons/eye-off.svg +18 -0
- package/resources/icons/eye.svg +16 -0
- package/resources/icons/filter.svg +15 -0
- package/resources/icons/heading-1.svg +18 -0
- package/resources/icons/heading-2.svg +18 -0
- package/resources/icons/heading-3.svg +19 -0
- package/resources/icons/highlighter.svg +16 -0
- package/resources/icons/info.svg +17 -0
- package/resources/icons/italic.svg +17 -0
- package/resources/icons/layout-dashboard.svg +18 -0
- package/resources/icons/link.svg +16 -0
- package/resources/icons/list-ordered.svg +20 -0
- package/resources/icons/list.svg +20 -0
- package/resources/icons/loader-2.svg +15 -0
- package/resources/icons/minus.svg +15 -0
- package/resources/icons/more-horizontal.svg +17 -0
- package/resources/icons/panel-left.svg +16 -0
- package/resources/icons/pencil-line.svg +17 -0
- package/resources/icons/pencil.svg +16 -0
- package/resources/icons/plus.svg +16 -0
- package/resources/icons/quote.svg +16 -0
- package/resources/icons/rows-3.svg +17 -0
- package/resources/icons/search.svg +16 -0
- package/resources/icons/send.svg +16 -0
- package/resources/icons/settings.svg +16 -0
- package/resources/icons/smile.svg +18 -0
- package/resources/icons/strikethrough.svg +17 -0
- package/resources/icons/table.svg +18 -0
- package/resources/icons/trash-2.svg +19 -0
- package/resources/icons/underline.svg +16 -0
- package/resources/icons/x.svg +16 -0
- package/dist/core/props.d.ts +0 -14
- package/dist/core/props.js +0 -30
- package/dist/core/props.js.map +0 -1
- package/dist/form/components/fields/submit-button.d.ts +0 -10
- package/dist/form/components/fields/submit-button.js +0 -14
- package/dist/form/components/fields/submit-button.js.map +0 -1
- package/dist/generated/types.d.ts +0 -17
- package/dist/icons/default-icons.d.ts +0 -3
- package/dist/icons/default-icons.js +0 -44
- package/dist/icons/default-icons.js.map +0 -1
- package/dist/icons/dynamic-lucide-renderer.d.ts +0 -2
- package/dist/icons/dynamic-lucide-renderer.js +0 -18
- package/dist/icons/dynamic-lucide-renderer.js.map +0 -1
- package/dist/menu/index.d.ts +0 -1
- package/dist/menu/index.js +0 -2
- package/dist/menu/use-menu.d.ts +0 -2
- package/dist/menu/use-menu.js +0 -9
- package/dist/menu/use-menu.js.map +0 -1
- /package/dist/{generated/types.js → table/column-registry.js} +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { instance } from "../node_modules/i18next/dist/esm/i18next.js";
|
|
2
|
+
import { initReactI18next } from "../node_modules/react-i18next/dist/es/initReactI18next.js";
|
|
3
|
+
import { useTranslation } from "../node_modules/react-i18next/dist/es/useTranslation.js";
|
|
4
|
+
//#region resources/js/i18n/instance.ts
|
|
5
|
+
var NAMESPACE = "lattice";
|
|
6
|
+
function detectLanguage() {
|
|
7
|
+
if (typeof document !== "undefined" && document.documentElement.lang) return document.documentElement.lang;
|
|
8
|
+
return "en";
|
|
9
|
+
}
|
|
10
|
+
/** Lattice's own i18next instance, isolated from the host app's. */
|
|
11
|
+
var i18n = instance.createInstance().use(initReactI18next);
|
|
12
|
+
var initialization;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the instance exactly once. The first caller wins — a rendered
|
|
15
|
+
* component (inline English, zero config) or `enableBackend()`, which registers
|
|
16
|
+
* its backend first because i18next can only wire a backend during `init`.
|
|
17
|
+
*/
|
|
18
|
+
function ensureI18n(extend) {
|
|
19
|
+
if (!initialization) {
|
|
20
|
+
const base = {
|
|
21
|
+
lng: detectLanguage(),
|
|
22
|
+
fallbackLng: "en",
|
|
23
|
+
ns: [NAMESPACE],
|
|
24
|
+
defaultNS: NAMESPACE,
|
|
25
|
+
interpolation: { escapeValue: false },
|
|
26
|
+
react: { useSuspense: false }
|
|
27
|
+
};
|
|
28
|
+
initialization = i18n.init(extend ? extend(base) : base);
|
|
29
|
+
}
|
|
30
|
+
return initialization;
|
|
31
|
+
}
|
|
32
|
+
/** Translation hook bound to Lattice's instance. The chrome passes `"lattice"`; consumers pass their own namespace. */
|
|
33
|
+
function useT(namespace) {
|
|
34
|
+
ensureI18n();
|
|
35
|
+
return useTranslation(namespace, { i18n });
|
|
36
|
+
}
|
|
37
|
+
/** Translate a key in the given namespace with an inline fallback, outside of a component. */
|
|
38
|
+
function translate(namespace, key, defaultValue, options) {
|
|
39
|
+
ensureI18n();
|
|
40
|
+
return i18n.t(key, defaultValue, {
|
|
41
|
+
ns: namespace,
|
|
42
|
+
...options
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { ensureI18n, i18n, translate, useT };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance.js","names":[],"sources":["../../resources/js/i18n/instance.ts"],"sourcesContent":["import i18next, { type InitOptions } from \"i18next\";\nimport { initReactI18next, useTranslation } from \"react-i18next\";\n\nconst NAMESPACE = \"lattice\";\n\nfunction detectLanguage(): string {\n if (typeof document !== \"undefined\" && document.documentElement.lang) {\n return document.documentElement.lang;\n }\n\n return \"en\";\n}\n\n/** Lattice's own i18next instance, isolated from the host app's. */\nexport const i18n = i18next.createInstance().use(initReactI18next);\n\nlet initialization: Promise<unknown> | undefined;\n\n/**\n * Initialize the instance exactly once. The first caller wins — a rendered\n * component (inline English, zero config) or `enableBackend()`, which registers\n * its backend first because i18next can only wire a backend during `init`.\n */\nexport function ensureI18n(extend?: (base: InitOptions) => InitOptions): Promise<unknown> {\n if (!initialization) {\n const base: InitOptions = {\n lng: detectLanguage(),\n fallbackLng: \"en\",\n ns: [NAMESPACE],\n defaultNS: NAMESPACE,\n interpolation: { escapeValue: false },\n react: { useSuspense: false },\n };\n\n initialization = i18n.init(extend ? extend(base) : base);\n }\n\n return initialization;\n}\n\n/** Translation hook bound to Lattice's instance. The chrome passes `\"lattice\"`; consumers pass their own namespace. */\nexport function useT(namespace: string) {\n ensureI18n();\n\n return useTranslation(namespace, { i18n });\n}\n\n/** Translate a key in the given namespace with an inline fallback, outside of a component. */\nexport function translate(\n namespace: string,\n key: string,\n defaultValue: string,\n options?: Record<string, unknown>,\n): string {\n ensureI18n();\n\n return i18n.t(key, defaultValue, { ns: namespace, ...options });\n}\n"],"mappings":";;;;AAGA,IAAM,YAAY;AAElB,SAAS,iBAAyB;CAChC,IAAI,OAAO,aAAa,eAAe,SAAS,gBAAgB,MAC9D,OAAO,SAAS,gBAAgB;CAGlC,OAAO;AACT;;AAGA,IAAa,OAAO,SAAQ,eAAe,EAAE,IAAI,gBAAgB;AAEjE,IAAI;;;;;;AAOJ,SAAgB,WAAW,QAA+D;CACxF,IAAI,CAAC,gBAAgB;EACnB,MAAM,OAAoB;GACxB,KAAK,eAAe;GACpB,aAAa;GACb,IAAI,CAAC,SAAS;GACd,WAAW;GACX,eAAe,EAAE,aAAa,MAAM;GACpC,OAAO,EAAE,aAAa,MAAM;EAC9B;EAEA,iBAAiB,KAAK,KAAK,SAAS,OAAO,IAAI,IAAI,IAAI;CACzD;CAEA,OAAO;AACT;;AAGA,SAAgB,KAAK,WAAmB;CACtC,WAAW;CAEX,OAAO,eAAe,WAAW,EAAE,KAAK,CAAC;AAC3C;;AAGA,SAAgB,UACd,WACA,KACA,cACA,SACQ;CACR,WAAW;CAEX,OAAO,KAAK,EAAE,KAAK,cAAc;EAAE,IAAI;EAAW,GAAG;CAAQ,CAAC;AAChE"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cn } from "../lib/utils.js";
|
|
2
|
+
import { Icon, useSprite } from "./sprite.js";
|
|
2
3
|
import { createContext, useContext, useMemo } from "react";
|
|
3
|
-
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
5
|
//#region resources/js/icons/icon-renderer.tsx
|
|
5
|
-
var IconRenderersContext = createContext([
|
|
6
|
+
var IconRenderersContext = createContext([]);
|
|
6
7
|
function IconRendererProvider({ children, mode = "stack", renderer }) {
|
|
7
8
|
const parentRenderers = useContext(IconRenderersContext);
|
|
8
9
|
const renderers = useMemo(() => mode === "replace" ? [renderer] : [renderer, ...parentRenderers], [
|
|
@@ -17,6 +18,7 @@ function IconRendererProvider({ children, mode = "stack", renderer }) {
|
|
|
17
18
|
}
|
|
18
19
|
function IconRenderer({ className, icon }) {
|
|
19
20
|
const renderers = useContext(IconRenderersContext);
|
|
21
|
+
const { ids } = useSprite();
|
|
20
22
|
for (const renderer of renderers) {
|
|
21
23
|
const rendered = renderer({
|
|
22
24
|
className,
|
|
@@ -24,9 +26,32 @@ function IconRenderer({ className, icon }) {
|
|
|
24
26
|
});
|
|
25
27
|
if (rendered !== null && rendered !== void 0 && rendered !== false) return rendered;
|
|
26
28
|
}
|
|
27
|
-
return
|
|
29
|
+
if (ids && !ids.includes(icon)) return /* @__PURE__ */ jsx(MissingIcon, { className });
|
|
30
|
+
return /* @__PURE__ */ jsx(Icon, {
|
|
28
31
|
className,
|
|
29
|
-
icon
|
|
32
|
+
name: icon
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function MissingIcon({ className }) {
|
|
36
|
+
return /* @__PURE__ */ jsxs("svg", {
|
|
37
|
+
"aria-hidden": "true",
|
|
38
|
+
className: cn("size-lt-icon-md text-lt-muted-fg", className),
|
|
39
|
+
"data-lattice-missing-icon": "",
|
|
40
|
+
fill: "none",
|
|
41
|
+
stroke: "currentColor",
|
|
42
|
+
strokeLinecap: "round",
|
|
43
|
+
strokeLinejoin: "round",
|
|
44
|
+
strokeWidth: "2",
|
|
45
|
+
viewBox: "0 0 24 24",
|
|
46
|
+
children: [
|
|
47
|
+
/* @__PURE__ */ jsx("circle", {
|
|
48
|
+
cx: "12",
|
|
49
|
+
cy: "12",
|
|
50
|
+
r: "10"
|
|
51
|
+
}),
|
|
52
|
+
/* @__PURE__ */ jsx("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }),
|
|
53
|
+
/* @__PURE__ */ jsx("path", { d: "M12 17h.01" })
|
|
54
|
+
]
|
|
30
55
|
});
|
|
31
56
|
}
|
|
32
57
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon-renderer.js","names":[],"sources":["../../resources/js/icons/icon-renderer.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"icon-renderer.js","names":[],"sources":["../../resources/js/icons/icon-renderer.tsx"],"sourcesContent":["import { createContext, useContext, useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { Icon, useSprite } from \"./sprite\";\n\nexport type IconRendererProps = {\n className?: string;\n icon: string;\n};\n\nexport type IconRendererFunction = (props: IconRendererProps) => ReactNode;\n\ntype IconRendererProviderProps = {\n children: ReactNode;\n mode?: \"replace\" | \"stack\";\n renderer: IconRendererFunction;\n};\n\nconst IconRenderersContext = createContext<IconRendererFunction[]>([]);\nconst loggedMissingIcons = new Set<string>();\n\nexport function IconRendererProvider({\n children,\n mode = \"stack\",\n renderer,\n}: IconRendererProviderProps) {\n const parentRenderers = useContext(IconRenderersContext);\n const renderers = useMemo(\n () => (mode === \"replace\" ? [renderer] : [renderer, ...parentRenderers]),\n [mode, parentRenderers, renderer],\n );\n\n return (\n <IconRenderersContext.Provider value={renderers}>{children}</IconRenderersContext.Provider>\n );\n}\n\nexport function IconRenderer({ className, icon }: IconRendererProps) {\n const renderers = useContext(IconRenderersContext);\n const { ids } = useSprite();\n\n // Custom renderers (the override stack) take precedence over the sprite.\n for (const renderer of renderers) {\n const rendered = renderer({ className, icon });\n\n if (rendered !== null && rendered !== undefined && rendered !== false) {\n return rendered;\n }\n }\n\n // When the sprite is wired and the icon is genuinely absent, show a visible\n // marker. When `ids` is unknown (not yet wired), optimistically emit the\n // sprite reference rather than crying wolf.\n if (ids && !ids.includes(icon)) {\n logMissingIcon(icon);\n return <MissingIcon className={className} />;\n }\n\n return <Icon className={className} name={icon} />;\n}\n\nfunction MissingIcon({ className }: { className?: string }) {\n return (\n <svg\n aria-hidden=\"true\"\n className={cn(\"size-lt-icon-md text-lt-muted-fg\", className)}\n data-lattice-missing-icon=\"\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <path d=\"M12 17h.01\" />\n </svg>\n );\n}\n\nfunction logMissingIcon(icon: string): void {\n if (!import.meta.env.DEV || loggedMissingIcons.has(icon)) {\n return;\n }\n\n loggedMissingIcons.add(icon);\n console.log(`[Lattice] Missing icon renderer for \"${icon}\".`);\n}\n"],"mappings":";;;;;AAkBA,IAAM,uBAAuB,cAAsC,CAAC,CAAC;AAGrE,SAAgB,qBAAqB,EACnC,UACA,OAAO,SACP,YAC4B;CAC5B,MAAM,kBAAkB,WAAW,oBAAoB;CACvD,MAAM,YAAY,cACT,SAAS,YAAY,CAAC,QAAQ,IAAI,CAAC,UAAU,GAAG,eAAe,GACtE;EAAC;EAAM;EAAiB;CAAQ,CAClC;CAEA,OACE,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO;EAAY;CAAwC,CAAA;AAE9F;AAEA,SAAgB,aAAa,EAAE,WAAW,QAA2B;CACnE,MAAM,YAAY,WAAW,oBAAoB;CACjD,MAAM,EAAE,QAAQ,UAAU;CAG1B,KAAK,MAAM,YAAY,WAAW;EAChC,MAAM,WAAW,SAAS;GAAE;GAAW;EAAK,CAAC;EAE7C,IAAI,aAAa,QAAQ,aAAa,KAAA,KAAa,aAAa,OAC9D,OAAO;CAEX;CAKA,IAAI,OAAO,CAAC,IAAI,SAAS,IAAI,GAE3B,OAAO,oBAAC,aAAD,EAAwB,UAAY,CAAA;CAG7C,OAAO,oBAAC,MAAD;EAAiB;EAAW,MAAM;CAAO,CAAA;AAClD;AAEA,SAAS,YAAY,EAAE,aAAqC;CAC1D,OACE,qBAAC,OAAD;EACE,eAAY;EACZ,WAAW,GAAG,oCAAoC,SAAS;EAC3D,6BAA0B;EAC1B,MAAK;EACL,QAAO;EACP,eAAc;EACd,gBAAe;EACf,aAAY;EACZ,SAAQ;YATV;GAWE,oBAAC,UAAD;IAAQ,IAAG;IAAK,IAAG;IAAK,GAAE;GAAM,CAAA;GAChC,oBAAC,QAAD,EAAM,GAAE,uCAAwC,CAAA;GAChD,oBAAC,QAAD,EAAM,GAAE,aAAc,CAAA;EACnB;;AAET"}
|
package/dist/icons/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
+
export { Icon, SpriteProvider, useSprite } from './sprite';
|
|
2
|
+
export type { IconName, KnownIcons, SpriteValue } from './sprite';
|
|
1
3
|
export { IconRenderer, IconRendererProvider } from './icon-renderer';
|
|
2
4
|
export type { IconRendererFunction, IconRendererProps } from './icon-renderer';
|
package/dist/icons/index.js
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export interface KnownIcons {
|
|
3
|
+
}
|
|
4
|
+
export type IconName = keyof KnownIcons | (string & {});
|
|
5
|
+
export type SpriteValue = {
|
|
6
|
+
/** The sprite URL. Empty when the sprite is inlined into the document (dev). */
|
|
7
|
+
href: string;
|
|
8
|
+
/** Every symbol id in the sprite, or undefined when not yet wired/known. */
|
|
9
|
+
ids?: readonly string[];
|
|
10
|
+
/** Inline sprite markup to inject once (dev); empty/omitted in builds. */
|
|
11
|
+
source?: string;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Seeds the icon sprite for everything below it. When `sprite.source` is set
|
|
15
|
+
* (dev), it's injected once so same-document `<use href="#id">` references
|
|
16
|
+
* resolve; in builds `href` points at the emitted sprite asset instead.
|
|
17
|
+
*/
|
|
18
|
+
export declare function SpriteProvider({ children, sprite }: {
|
|
19
|
+
children: ReactNode;
|
|
20
|
+
sprite: SpriteValue;
|
|
21
|
+
}): import("react").JSX.Element;
|
|
22
|
+
export declare function useSprite(): SpriteValue;
|
|
23
|
+
/**
|
|
24
|
+
* Renders a single sprite symbol by name. Used for Lattice's own UI chrome and
|
|
25
|
+
* as the resolved default for server-driven icons. Extra `<svg>` props are
|
|
26
|
+
* forwarded, so callers can override `aria-hidden`, set a `role`, etc.
|
|
27
|
+
*/
|
|
28
|
+
export declare function Icon({ className, name, ...props }: {
|
|
29
|
+
name: IconName;
|
|
30
|
+
} & React.ComponentProps<"svg">): import("react").JSX.Element;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.js";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
//#region resources/js/icons/sprite.tsx
|
|
5
|
+
var SpriteContext = createContext({ href: "" });
|
|
6
|
+
/**
|
|
7
|
+
* Seeds the icon sprite for everything below it. When `sprite.source` is set
|
|
8
|
+
* (dev), it's injected once so same-document `<use href="#id">` references
|
|
9
|
+
* resolve; in builds `href` points at the emitted sprite asset instead.
|
|
10
|
+
*/
|
|
11
|
+
function SpriteProvider({ children, sprite }) {
|
|
12
|
+
return /* @__PURE__ */ jsxs(SpriteContext.Provider, {
|
|
13
|
+
value: sprite,
|
|
14
|
+
children: [sprite.source ? /* @__PURE__ */ jsx("div", {
|
|
15
|
+
hidden: true,
|
|
16
|
+
dangerouslySetInnerHTML: { __html: sprite.source }
|
|
17
|
+
}) : null, children]
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function useSprite() {
|
|
21
|
+
return useContext(SpriteContext);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Renders a single sprite symbol by name. Used for Lattice's own UI chrome and
|
|
25
|
+
* as the resolved default for server-driven icons. Extra `<svg>` props are
|
|
26
|
+
* forwarded, so callers can override `aria-hidden`, set a `role`, etc.
|
|
27
|
+
*/
|
|
28
|
+
function Icon({ className, name, ...props }) {
|
|
29
|
+
const { href, ids } = useSprite();
|
|
30
|
+
return /* @__PURE__ */ jsx("svg", {
|
|
31
|
+
"aria-hidden": "true",
|
|
32
|
+
...props,
|
|
33
|
+
className: cn("size-lt-icon-md", className),
|
|
34
|
+
children: /* @__PURE__ */ jsx("use", { href: `${href}#${name}` })
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { Icon, SpriteProvider, useSprite };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=sprite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.js","names":[],"sources":["../../resources/js/icons/sprite.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../lib/utils\";\n\n// Augmentable registry of icon names. The sprite plugin can generate a\n// `declare module \"@lattice-php/lattice\" { interface KnownIcons { … } }` block\n// from the built sprite, which turns `IconName` into the real set for\n// autocomplete. Unaugmented it falls back to `string`, so any name still works.\nexport interface KnownIcons {}\nexport type IconName = keyof KnownIcons | (string & {});\n\nexport type SpriteValue = {\n /** The sprite URL. Empty when the sprite is inlined into the document (dev). */\n href: string;\n /** Every symbol id in the sprite, or undefined when not yet wired/known. */\n ids?: readonly string[];\n /** Inline sprite markup to inject once (dev); empty/omitted in builds. */\n source?: string;\n};\n\nconst SpriteContext = createContext<SpriteValue>({ href: \"\" });\n\n/**\n * Seeds the icon sprite for everything below it. When `sprite.source` is set\n * (dev), it's injected once so same-document `<use href=\"#id\">` references\n * resolve; in builds `href` points at the emitted sprite asset instead.\n */\nexport function SpriteProvider({ children, sprite }: { children: ReactNode; sprite: SpriteValue }) {\n return (\n <SpriteContext.Provider value={sprite}>\n {sprite.source ? <div hidden dangerouslySetInnerHTML={{ __html: sprite.source }} /> : null}\n {children}\n </SpriteContext.Provider>\n );\n}\n\nexport function useSprite(): SpriteValue {\n return useContext(SpriteContext);\n}\n\nconst warnedIcons = new Set<string>();\n\n/**\n * Renders a single sprite symbol by name. Used for Lattice's own UI chrome and\n * as the resolved default for server-driven icons. Extra `<svg>` props are\n * forwarded, so callers can override `aria-hidden`, set a `role`, etc.\n */\nexport function Icon({\n className,\n name,\n ...props\n}: { name: IconName } & React.ComponentProps<\"svg\">) {\n const { href, ids } = useSprite();\n\n if (import.meta.env.DEV && ids && !ids.includes(name) && !warnedIcons.has(name)) {\n warnedIcons.add(name);\n console.warn(`[Lattice] Icon \"${name}\" is not in the sprite.`);\n }\n\n return (\n <svg aria-hidden=\"true\" {...props} className={cn(\"size-lt-icon-md\", className)}>\n <use href={`${href}#${name}`} />\n </svg>\n );\n}\n"],"mappings":";;;;AAoBA,IAAM,gBAAgB,cAA2B,EAAE,MAAM,GAAG,CAAC;;;;;;AAO7D,SAAgB,eAAe,EAAE,UAAU,UAAwD;CACjG,OACE,qBAAC,cAAc,UAAf;EAAwB,OAAO;YAA/B,CACG,OAAO,SAAS,oBAAC,OAAD;GAAK,QAAA;GAAO,yBAAyB,EAAE,QAAQ,OAAO,OAAO;EAAI,CAAA,IAAI,MACrF,QACqB;;AAE5B;AAEA,SAAgB,YAAyB;CACvC,OAAO,WAAW,aAAa;AACjC;;;;;;AASA,SAAgB,KAAK,EACnB,WACA,MACA,GAAG,SACgD;CACnD,MAAM,EAAE,MAAM,QAAQ,UAAU;CAOhC,OACE,oBAAC,OAAD;EAAK,eAAY;EAAO,GAAI;EAAO,WAAW,GAAG,mBAAmB,SAAS;YAC3E,oBAAC,OAAD,EAAK,MAAM,GAAG,KAAK,GAAG,OAAS,CAAA;CAC5B,CAAA;AAET"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,20 +3,24 @@ export { dispatchActionEffects, dispatchActionError, getActionEffects, isActionE
|
|
|
3
3
|
export { initializeTheme, useAppearance } from './appearance';
|
|
4
4
|
export { copyToClipboard, useClipboard } from './clipboard';
|
|
5
5
|
export { EventBridge } from './events/event-bridge';
|
|
6
|
-
export { IconRenderer, IconRendererProvider } from './icons';
|
|
6
|
+
export { Icon, IconRenderer, IconRendererProvider, SpriteProvider } from './icons';
|
|
7
7
|
export { createLayoutResolver, createPageResolver, pageComponentName } from './inertia';
|
|
8
|
-
export {
|
|
9
|
-
export { Provider, useRegistry } from './provider';
|
|
8
|
+
export { layoutComponents, OutletContext, SchemaLayout } from './layout';
|
|
9
|
+
export { Provider, useColumnRegistry, useRegistry } from './provider';
|
|
10
|
+
export { Toaster } from './toast';
|
|
10
11
|
export { createPlugin, createRegistry, eagerComponent, extendRegistry, lazyComponent, } from './core/registry';
|
|
12
|
+
export type { Plugin, Registry } from './core/registry';
|
|
11
13
|
export { Renderer } from './core/renderer';
|
|
12
14
|
export { LATTICE_REF_HEADER, withRefHeader } from './core/component-ref';
|
|
13
15
|
export { LATTICE_EVENT } from './events/event-names';
|
|
14
16
|
export type { ButtonVariant } from './core/components/button';
|
|
15
17
|
export type { ReloadComponentEvent } from './events/event-names';
|
|
16
|
-
export type { ComponentProps,
|
|
18
|
+
export type { ComponentProps, KnownPageContainer, LayoutPayload, Node, NodeOfType, NodeProps, NodeType, PageContainer, PageBreadcrumb, PagePayload, PropsOf, RendererComponent, RendererComponentModule, RendererComponentProps, Schema, UnknownComponent, WireNode, } from './core/types';
|
|
19
|
+
export type { ColumnCellArgs, ColumnCellComponent, ColumnRegistry } from './table/column-registry';
|
|
20
|
+
export type { ColumnProps, ColumnPropsOf } from './table/types';
|
|
17
21
|
export type { Method } from '@inertiajs/core';
|
|
18
22
|
export type { ActionEffect } from './action/effects';
|
|
19
23
|
export type { ResolvedAppearance, UseAppearanceReturn } from './appearance';
|
|
20
24
|
export type { CopiedValue, CopyFn, UseClipboardReturn } from './clipboard';
|
|
21
25
|
export type { Appearance, ToastMessage, ToastVariant } from './events/event-bridge';
|
|
22
|
-
export type { IconRendererFunction, IconRendererProps } from './icons';
|
|
26
|
+
export type { IconName, IconRendererFunction, IconRendererProps, KnownIcons, SpriteValue, } from './icons';
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { createPlugin, createRegistry, eagerComponent, extendRegistry, lazyComponent } from "./core/registry.js";
|
|
2
2
|
import { LATTICE_REF_HEADER, withRefHeader } from "./core/component-ref.js";
|
|
3
|
+
import { Icon, SpriteProvider } from "./icons/sprite.js";
|
|
3
4
|
import { IconRenderer, IconRendererProvider } from "./icons/icon-renderer.js";
|
|
4
5
|
import { LATTICE_EVENT } from "./events/event-names.js";
|
|
5
6
|
import { dispatchActionEffects, dispatchActionError, getActionEffects, isActionEffect } from "./action/effects.js";
|
|
6
7
|
import { Renderer } from "./core/renderer.js";
|
|
8
|
+
import { OutletContext } from "./layout/context.js";
|
|
9
|
+
import { layoutComponents } from "./layout/components.js";
|
|
7
10
|
import { registry } from "./registry.js";
|
|
8
11
|
import { initializeTheme, useAppearance } from "./appearance/index.js";
|
|
9
12
|
import { copyToClipboard, useClipboard } from "./clipboard/index.js";
|
|
10
13
|
import { EventBridge } from "./events/event-bridge.js";
|
|
11
|
-
import {
|
|
14
|
+
import { Toaster } from "./toast/toaster.js";
|
|
15
|
+
import { Provider, useColumnRegistry, useRegistry } from "./provider.js";
|
|
16
|
+
import SchemaLayout from "./layout/schema-layout.js";
|
|
12
17
|
import { createLayoutResolver, createPageResolver, pageComponentName } from "./inertia.js";
|
|
13
|
-
|
|
14
|
-
export { EventBridge, IconRenderer, IconRendererProvider, LATTICE_EVENT, LATTICE_REF_HEADER, Provider, Renderer, copyToClipboard, createLayoutResolver, createPageResolver, createPlugin, createRegistry, dispatchActionEffects, dispatchActionError, eagerComponent, extendRegistry, getActionEffects, initializeTheme, isActionEffect, lazyComponent, pageComponentName, registry, useAppearance, useClipboard, useMenu, useRegistry, withRefHeader };
|
|
18
|
+
export { EventBridge, Icon, IconRenderer, IconRendererProvider, LATTICE_EVENT, LATTICE_REF_HEADER, OutletContext, Provider, Renderer, SchemaLayout, SpriteProvider, Toaster, copyToClipboard, createLayoutResolver, createPageResolver, createPlugin, createRegistry, dispatchActionEffects, dispatchActionError, eagerComponent, extendRegistry, getActionEffects, initializeTheme, isActionEffect, layoutComponents, lazyComponent, pageComponentName, registry, useAppearance, useClipboard, useColumnRegistry, useRegistry, withRefHeader };
|
package/dist/inertia.d.ts
CHANGED
|
@@ -5,13 +5,8 @@ export type ResolvedPage = ResolvedComponent | Promise<ResolvedComponent> | {
|
|
|
5
5
|
default: ResolvedComponent;
|
|
6
6
|
};
|
|
7
7
|
export type PageModules = Record<string, () => Promise<ResolvedComponent>>;
|
|
8
|
-
export type Layouts = {
|
|
9
|
-
app: unknown;
|
|
10
|
-
auth: unknown;
|
|
11
|
-
};
|
|
12
8
|
export type CreateLayoutResolverOptions = {
|
|
13
9
|
defaultLayout?: (name: string, page: InertiaPage) => unknown;
|
|
14
|
-
layouts: Layouts;
|
|
15
10
|
};
|
|
16
11
|
export declare function createPageResolver(pages: PageModules): (name: string) => ResolvedPage;
|
|
17
|
-
export declare function createLayoutResolver({ defaultLayout
|
|
12
|
+
export declare function createLayoutResolver({ defaultLayout }?: CreateLayoutResolverOptions): (name: string, page: InertiaPage) => unknown;
|
package/dist/inertia.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import SchemaLayout from "./layout/schema-layout.js";
|
|
1
2
|
import Page from "./page.js";
|
|
2
3
|
//#region resources/js/inertia.ts
|
|
3
4
|
var pageComponentName = "lattice/page";
|
|
@@ -9,15 +10,10 @@ function createPageResolver(pages) {
|
|
|
9
10
|
throw new Error(`Page not found: ${name}`);
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
|
-
function createLayoutResolver({ defaultLayout
|
|
13
|
+
function createLayoutResolver({ defaultLayout } = {}) {
|
|
13
14
|
return (name, page) => {
|
|
14
|
-
if (name === "lattice/page")
|
|
15
|
-
|
|
16
|
-
if (lattice?.layout === "app") return [layouts.app, { breadcrumbs: lattice.breadcrumbs }];
|
|
17
|
-
if (lattice?.layout === "auth") return layouts.auth;
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
return defaultLayout?.(name, page) ?? layouts.app;
|
|
15
|
+
if (name === "lattice/page") return page.props.lattice?.layout ? SchemaLayout : null;
|
|
16
|
+
return defaultLayout?.(name, page) ?? null;
|
|
21
17
|
};
|
|
22
18
|
}
|
|
23
19
|
//#endregion
|
package/dist/inertia.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inertia.js","names":[],"sources":["../resources/js/inertia.ts"],"sourcesContent":["import type { Page as InertiaPage } from \"@inertiajs/core\";\nimport type { ResolvedComponent } from \"@inertiajs/react\";\nimport Page from \"./page\";\nimport type { PagePayload } from \"./core/types\";\n\nexport const pageComponentName = \"lattice/page\";\n\nexport type ResolvedPage =\n | ResolvedComponent\n | Promise<ResolvedComponent>\n | { default: ResolvedComponent };\nexport type PageModules = Record<string, () => Promise<ResolvedComponent>>;\n\nexport type
|
|
1
|
+
{"version":3,"file":"inertia.js","names":[],"sources":["../resources/js/inertia.ts"],"sourcesContent":["import type { Page as InertiaPage } from \"@inertiajs/core\";\nimport type { ResolvedComponent } from \"@inertiajs/react\";\nimport { SchemaLayout } from \"./layout\";\nimport Page from \"./page\";\nimport type { PagePayload } from \"./core/types\";\n\nexport const pageComponentName = \"lattice/page\";\n\nexport type ResolvedPage =\n | ResolvedComponent\n | Promise<ResolvedComponent>\n | { default: ResolvedComponent };\nexport type PageModules = Record<string, () => Promise<ResolvedComponent>>;\n\nexport type CreateLayoutResolverOptions = {\n defaultLayout?: (name: string, page: InertiaPage) => unknown;\n};\n\nexport function createPageResolver(pages: PageModules) {\n return (name: string): ResolvedPage => {\n if (name === pageComponentName) {\n return { default: Page };\n }\n\n const resolvedPage = pages[`./pages/${name}.tsx`];\n\n if (resolvedPage) {\n return resolvedPage();\n }\n\n throw new Error(`Page not found: ${name}`);\n };\n}\n\nexport function createLayoutResolver({ defaultLayout }: CreateLayoutResolverOptions = {}) {\n return (name: string, page: InertiaPage): unknown => {\n if (name === pageComponentName) {\n const lattice = page.props.lattice as PagePayload | undefined;\n\n return lattice?.layout ? SchemaLayout : null;\n }\n\n return defaultLayout?.(name, page) ?? null;\n };\n}\n"],"mappings":";;;AAMA,IAAa,oBAAoB;AAYjC,SAAgB,mBAAmB,OAAoB;CACrD,QAAQ,SAA+B;EACrC,IAAI,SAAA,gBACF,OAAO,EAAE,SAAS,KAAK;EAGzB,MAAM,eAAe,MAAM,WAAW,KAAK;EAE3C,IAAI,cACF,OAAO,aAAa;EAGtB,MAAM,IAAI,MAAM,mBAAmB,MAAM;CAC3C;AACF;AAEA,SAAgB,qBAAqB,EAAE,kBAA+C,CAAC,GAAG;CACxF,QAAQ,MAAc,SAA+B;EACnD,IAAI,SAAA,gBAGF,OAFgB,KAAK,MAAM,SAEX,SAAS,eAAe;EAG1C,OAAO,gBAAgB,MAAM,IAAI,KAAK;CACxC;AACF"}
|
package/dist/lattice.css
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Register Lattice's component sources with Tailwind. Consumers import this
|
|
3
|
-
* stylesheet from the Composer-installed package, so the path resolves into
|
|
4
|
-
* vendor and Tailwind generates the utilities the components use.
|
|
5
|
-
*/
|
|
6
1
|
@source "./**/*.js";
|
|
7
2
|
|
|
8
3
|
:root,
|
|
@@ -26,10 +21,21 @@
|
|
|
26
21
|
--lt-border: var(--border, oklch(0.922 0 0));
|
|
27
22
|
--lt-input: var(--input, oklch(0.922 0 0));
|
|
28
23
|
--lt-ring: var(--ring, oklch(0.87 0 0));
|
|
24
|
+
--lt-warning: var(--warning, oklch(0.852 0.156 91));
|
|
25
|
+
--lt-success: var(--success, oklch(0.596 0.145 163));
|
|
26
|
+
--lt-success-fg: var(--success-foreground, oklch(0.985 0 0));
|
|
27
|
+
--lt-info: var(--info, oklch(0.588 0.158 241));
|
|
28
|
+
--lt-info-fg: var(--info-foreground, oklch(0.985 0 0));
|
|
29
29
|
--lt-radius: var(--radius, 0.625rem);
|
|
30
30
|
--lt-radius-sm: calc(var(--lt-radius) - 2px);
|
|
31
31
|
--lt-radius-xs: calc(var(--lt-radius) - 4px);
|
|
32
32
|
|
|
33
|
+
--lt-icon-xs: 0.75rem;
|
|
34
|
+
--lt-icon-sm: 0.875rem;
|
|
35
|
+
--lt-icon-md: 1rem;
|
|
36
|
+
--lt-icon-lg: 1.25rem;
|
|
37
|
+
--lt-icon-xl: 1.5rem;
|
|
38
|
+
|
|
33
39
|
color-scheme: light;
|
|
34
40
|
}
|
|
35
41
|
|
|
@@ -54,6 +60,11 @@
|
|
|
54
60
|
--lt-border: var(--border, oklch(0.269 0 0));
|
|
55
61
|
--lt-input: var(--input, oklch(0.269 0 0));
|
|
56
62
|
--lt-ring: var(--ring, oklch(0.439 0 0));
|
|
63
|
+
--lt-warning: var(--warning, oklch(0.68 0.14 75));
|
|
64
|
+
--lt-success: var(--success, oklch(0.696 0.17 162));
|
|
65
|
+
--lt-success-fg: var(--success-foreground, oklch(0.205 0 0));
|
|
66
|
+
--lt-info: var(--info, oklch(0.685 0.15 238));
|
|
67
|
+
--lt-info-fg: var(--info-foreground, oklch(0.205 0 0));
|
|
57
68
|
|
|
58
69
|
color-scheme: dark;
|
|
59
70
|
}
|
|
@@ -78,9 +89,122 @@
|
|
|
78
89
|
--color-lt-border: var(--lt-border);
|
|
79
90
|
--color-lt-input: var(--lt-input);
|
|
80
91
|
--color-lt-ring: var(--lt-ring);
|
|
92
|
+
--color-lt-warning: var(--lt-warning);
|
|
93
|
+
--color-lt-success: var(--lt-success);
|
|
94
|
+
--color-lt-success-fg: var(--lt-success-fg);
|
|
95
|
+
--color-lt-info: var(--lt-info);
|
|
96
|
+
--color-lt-info-fg: var(--lt-info-fg);
|
|
81
97
|
--radius-lt: var(--lt-radius);
|
|
82
98
|
--radius-lt-sm: var(--lt-radius-sm);
|
|
83
99
|
--radius-lt-xs: var(--lt-radius-xs);
|
|
100
|
+
--spacing-lt-icon-xs: var(--lt-icon-xs);
|
|
101
|
+
--spacing-lt-icon-sm: var(--lt-icon-sm);
|
|
102
|
+
--spacing-lt-icon-md: var(--lt-icon-md);
|
|
103
|
+
--spacing-lt-icon-lg: var(--lt-icon-lg);
|
|
104
|
+
--spacing-lt-icon-xl: var(--lt-icon-xl);
|
|
105
|
+
--animate-lt-toast-in: lt-toast-in 160ms ease-out;
|
|
106
|
+
--animate-lt-toast-out: lt-toast-out 120ms ease-in;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@keyframes lt-toast-in {
|
|
110
|
+
from {
|
|
111
|
+
opacity: 0;
|
|
112
|
+
transform: translateY(0.75rem);
|
|
113
|
+
}
|
|
114
|
+
to {
|
|
115
|
+
opacity: 1;
|
|
116
|
+
transform: translateY(0);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@keyframes lt-toast-out {
|
|
121
|
+
from {
|
|
122
|
+
opacity: 1;
|
|
123
|
+
transform: translateY(0);
|
|
124
|
+
}
|
|
125
|
+
to {
|
|
126
|
+
opacity: 0;
|
|
127
|
+
transform: translateY(0.75rem);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/*
|
|
132
|
+
* Status colours for Badge and Icon table cells. Each tone sets a soft
|
|
133
|
+
* background and a readable foreground in oklch; the `.dark` block swaps them.
|
|
134
|
+
* Defined here (not as utility strings in the renderer) so the palette lives
|
|
135
|
+
* with the theme and can be overridden, and so the cells can pick a tone by
|
|
136
|
+
* name without Tailwind needing to see every class. Gray follows the muted token.
|
|
137
|
+
*/
|
|
138
|
+
.lt-cell-badge {
|
|
139
|
+
display: inline-flex;
|
|
140
|
+
align-items: center;
|
|
141
|
+
gap: 0.25rem;
|
|
142
|
+
border-radius: var(--lt-radius-sm);
|
|
143
|
+
padding: 0.125rem 0.5rem;
|
|
144
|
+
font-size: 0.75rem;
|
|
145
|
+
line-height: 1rem;
|
|
146
|
+
font-weight: 500;
|
|
147
|
+
background-color: var(--lt-cell-bg, var(--lt-muted));
|
|
148
|
+
color: var(--lt-cell-fg, var(--lt-muted-fg));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.lt-cell-icon {
|
|
152
|
+
display: inline-flex;
|
|
153
|
+
color: var(--lt-cell-fg, var(--lt-fg));
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.lt-cell-tone-gray {
|
|
157
|
+
--lt-cell-bg: var(--lt-muted);
|
|
158
|
+
--lt-cell-fg: var(--lt-muted-fg);
|
|
159
|
+
}
|
|
160
|
+
.lt-cell-tone-red {
|
|
161
|
+
--lt-cell-bg: oklch(0.94 0.03 25);
|
|
162
|
+
--lt-cell-fg: oklch(0.51 0.19 27);
|
|
163
|
+
}
|
|
164
|
+
.lt-cell-tone-orange {
|
|
165
|
+
--lt-cell-bg: oklch(0.95 0.04 65);
|
|
166
|
+
--lt-cell-fg: oklch(0.55 0.14 55);
|
|
167
|
+
}
|
|
168
|
+
.lt-cell-tone-yellow {
|
|
169
|
+
--lt-cell-bg: oklch(0.96 0.05 100);
|
|
170
|
+
--lt-cell-fg: oklch(0.52 0.1 85);
|
|
171
|
+
}
|
|
172
|
+
.lt-cell-tone-green {
|
|
173
|
+
--lt-cell-bg: oklch(0.95 0.05 155);
|
|
174
|
+
--lt-cell-fg: oklch(0.52 0.13 152);
|
|
175
|
+
}
|
|
176
|
+
.lt-cell-tone-blue {
|
|
177
|
+
--lt-cell-bg: oklch(0.95 0.03 245);
|
|
178
|
+
--lt-cell-fg: oklch(0.54 0.17 252);
|
|
179
|
+
}
|
|
180
|
+
.lt-cell-tone-purple {
|
|
181
|
+
--lt-cell-bg: oklch(0.95 0.03 305);
|
|
182
|
+
--lt-cell-fg: oklch(0.53 0.19 305);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.dark .lt-cell-tone-red {
|
|
186
|
+
--lt-cell-bg: oklch(0.29 0.08 27);
|
|
187
|
+
--lt-cell-fg: oklch(0.83 0.11 27);
|
|
188
|
+
}
|
|
189
|
+
.dark .lt-cell-tone-orange {
|
|
190
|
+
--lt-cell-bg: oklch(0.3 0.07 65);
|
|
191
|
+
--lt-cell-fg: oklch(0.84 0.1 65);
|
|
192
|
+
}
|
|
193
|
+
.dark .lt-cell-tone-yellow {
|
|
194
|
+
--lt-cell-bg: oklch(0.31 0.06 100);
|
|
195
|
+
--lt-cell-fg: oklch(0.87 0.11 100);
|
|
196
|
+
}
|
|
197
|
+
.dark .lt-cell-tone-green {
|
|
198
|
+
--lt-cell-bg: oklch(0.3 0.07 155);
|
|
199
|
+
--lt-cell-fg: oklch(0.85 0.13 155);
|
|
200
|
+
}
|
|
201
|
+
.dark .lt-cell-tone-blue {
|
|
202
|
+
--lt-cell-bg: oklch(0.3 0.07 245);
|
|
203
|
+
--lt-cell-fg: oklch(0.84 0.11 250);
|
|
204
|
+
}
|
|
205
|
+
.dark .lt-cell-tone-purple {
|
|
206
|
+
--lt-cell-bg: oklch(0.3 0.07 305);
|
|
207
|
+
--lt-cell-fg: oklch(0.85 0.11 305);
|
|
84
208
|
}
|
|
85
209
|
|
|
86
210
|
/*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const layoutComponents: import('../core/registry').Plugin;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createPlugin, eagerComponent } from "../core/registry.js";
|
|
2
|
+
import MenuComponent from "./menu.js";
|
|
3
|
+
import MenuItemComponent from "./menu-item.js";
|
|
4
|
+
import OutletComponent from "./outlet.js";
|
|
5
|
+
import SidebarComponent from "./sidebar.js";
|
|
6
|
+
//#region resources/js/layout/components.ts
|
|
7
|
+
var layoutComponents = createPlugin({
|
|
8
|
+
components: {
|
|
9
|
+
menu: eagerComponent(MenuComponent),
|
|
10
|
+
"menu-item": eagerComponent(MenuItemComponent),
|
|
11
|
+
outlet: eagerComponent(OutletComponent),
|
|
12
|
+
sidebar: eagerComponent(SidebarComponent)
|
|
13
|
+
},
|
|
14
|
+
name: "lattice/layout"
|
|
15
|
+
});
|
|
16
|
+
//#endregion
|
|
17
|
+
export { layoutComponents };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=components.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","names":[],"sources":["../../resources/js/layout/components.ts"],"sourcesContent":["import { createPlugin, eagerComponent } from \"@lattice/lattice/core/registry\";\nimport MenuComponent from \"./menu\";\nimport MenuItemComponent from \"./menu-item\";\nimport OutletComponent from \"./outlet\";\nimport SidebarComponent from \"./sidebar\";\n\nexport const layoutComponents = createPlugin({\n components: {\n menu: eagerComponent(MenuComponent),\n \"menu-item\": eagerComponent(MenuItemComponent),\n outlet: eagerComponent(OutletComponent),\n sidebar: eagerComponent(SidebarComponent),\n },\n name: \"lattice/layout\",\n});\n"],"mappings":";;;;;;AAMA,IAAa,mBAAmB,aAAa;CAC3C,YAAY;EACV,MAAM,eAAe,aAAa;EAClC,aAAa,eAAe,iBAAiB;EAC7C,QAAQ,eAAe,eAAe;EACtC,SAAS,eAAe,gBAAgB;CAC1C;CACA,MAAM;AACR,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Carries the active page element down through a server-composed layout schema
|
|
4
|
+
* so the Outlet component can render it wherever the layout places it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const OutletContext: import('react').Context<ReactNode>;
|
|
7
|
+
/**
|
|
8
|
+
* Whether the enclosing Sidebar is collapsed to its icon rail. Menu items read
|
|
9
|
+
* this to render icon-only and surface their submenu as a flyout instead.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SidebarCollapsedContext: import('react').Context<boolean>;
|
|
12
|
+
export declare function useSidebarCollapsed(): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
//#region resources/js/layout/context.ts
|
|
3
|
+
/**
|
|
4
|
+
* Carries the active page element down through a server-composed layout schema
|
|
5
|
+
* so the Outlet component can render it wherever the layout places it.
|
|
6
|
+
*/
|
|
7
|
+
var OutletContext = createContext(null);
|
|
8
|
+
/**
|
|
9
|
+
* Whether the enclosing Sidebar is collapsed to its icon rail. Menu items read
|
|
10
|
+
* this to render icon-only and surface their submenu as a flyout instead.
|
|
11
|
+
*/
|
|
12
|
+
var SidebarCollapsedContext = createContext(false);
|
|
13
|
+
function useSidebarCollapsed() {
|
|
14
|
+
return useContext(SidebarCollapsedContext);
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { OutletContext, SidebarCollapsedContext, useSidebarCollapsed };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../resources/js/layout/context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { ReactNode } from \"react\";\n\n/**\n * Carries the active page element down through a server-composed layout schema\n * so the Outlet component can render it wherever the layout places it.\n */\nexport const OutletContext = createContext<ReactNode>(null);\n\n/**\n * Whether the enclosing Sidebar is collapsed to its icon rail. Menu items read\n * this to render icon-only and surface their submenu as a flyout instead.\n */\nexport const SidebarCollapsedContext = createContext(false);\n\nexport function useSidebarCollapsed(): boolean {\n return useContext(SidebarCollapsedContext);\n}\n"],"mappings":";;;;;;AAOA,IAAa,gBAAgB,cAAyB,IAAI;;;;;AAM1D,IAAa,0BAA0B,cAAc,KAAK;AAE1D,SAAgB,sBAA+B;CAC7C,OAAO,WAAW,uBAAuB;AAC3C"}
|