@bettercms-ai/kit 0.1.1 → 1.0.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/_virtual/_rolldown/runtime.js +13 -0
- package/adapters/icons.d.ts +15 -0
- package/adapters/icons.js +27 -0
- package/adapters/icons.js.map +1 -0
- package/adapters/lossy.d.ts +267 -0
- package/adapters/lossy.js +233 -0
- package/adapters/lossy.js.map +1 -0
- package/adapters/prod-types.d.ts +468 -0
- package/adapters/prod-types.js +646 -0
- package/adapters/prod-types.js.map +1 -0
- package/adapters/schema.d.ts +115 -0
- package/adapters/schema.js +2203 -0
- package/adapters/schema.js.map +1 -0
- package/adapters/values.d.ts +200 -0
- package/adapters/values.js +553 -0
- package/adapters/values.js.map +1 -0
- package/brand/logo.d.ts +17 -0
- package/brand/logo.js +9 -0
- package/brand/logo.js.map +1 -0
- package/context.d.ts +269 -0
- package/context.js +214 -0
- package/context.js.map +1 -0
- package/controls/button.d.ts +58 -0
- package/controls/button.js +507 -0
- package/controls/button.js.map +1 -0
- package/controls/c1.d.ts +11 -0
- package/controls/c1.js +24 -0
- package/controls/c1.js.map +1 -0
- package/controls/c2.d.ts +10 -0
- package/controls/c2.js +19 -0
- package/controls/c2.js.map +1 -0
- package/controls/choice.d.ts +39 -0
- package/controls/choice.js +410 -0
- package/controls/choice.js.map +1 -0
- package/controls/code-register.d.ts +1 -0
- package/controls/code-register.js +8 -0
- package/controls/code-register.js.map +1 -0
- package/controls/code.d.ts +42 -0
- package/controls/code.js +396 -0
- package/controls/code.js.map +1 -0
- package/controls/color.d.ts +5 -0
- package/controls/color.js +130 -0
- package/controls/color.js.map +1 -0
- package/controls/component-services.d.ts +114 -0
- package/controls/date-register.d.ts +1 -0
- package/controls/date-register.js +9 -0
- package/controls/date-register.js.map +1 -0
- package/controls/date-zone.d.ts +104 -0
- package/controls/date-zone.js +272 -0
- package/controls/date-zone.js.map +1 -0
- package/controls/date.d.ts +7 -0
- package/controls/date.js +458 -0
- package/controls/date.js.map +1 -0
- package/controls/form-picker-register.d.ts +1 -0
- package/controls/form-picker-register.js +19 -0
- package/controls/form-picker-register.js.map +1 -0
- package/controls/form-picker.d.ts +43 -0
- package/controls/form-picker.js +83 -0
- package/controls/form-picker.js.map +1 -0
- package/controls/icon-register.d.ts +1 -0
- package/controls/icon-register.js +8 -0
- package/controls/icon-register.js.map +1 -0
- package/controls/icon.d.ts +38 -0
- package/controls/icon.js +355 -0
- package/controls/icon.js.map +1 -0
- package/controls/index.d.ts +5 -0
- package/controls/index.js +37 -0
- package/controls/index.js.map +1 -0
- package/controls/json-register.d.ts +1 -0
- package/controls/json-register.js +8 -0
- package/controls/json-register.js.map +1 -0
- package/controls/json.d.ts +2 -0
- package/controls/json.js +72 -0
- package/controls/json.js.map +1 -0
- package/controls/link.d.ts +260 -0
- package/controls/link.js +1186 -0
- package/controls/link.js.map +1 -0
- package/controls/location-register.d.ts +1 -0
- package/controls/location-register.js +8 -0
- package/controls/location-register.js.map +1 -0
- package/controls/location.d.ts +16 -0
- package/controls/location.js +197 -0
- package/controls/location.js.map +1 -0
- package/controls/media-register.d.ts +1 -0
- package/controls/media-register.js +12 -0
- package/controls/media-register.js.map +1 -0
- package/controls/media-services.d.ts +40 -0
- package/controls/media.d.ts +73 -0
- package/controls/media.js +1076 -0
- package/controls/media.js.map +1 -0
- package/controls/number.d.ts +22 -0
- package/controls/number.js +195 -0
- package/controls/number.js.map +1 -0
- package/controls/reference-register.d.ts +1 -0
- package/controls/reference-register.js +10 -0
- package/controls/reference-register.js.map +1 -0
- package/controls/reference-services.d.ts +54 -0
- package/controls/reference.d.ts +23 -0
- package/controls/reference.js +761 -0
- package/controls/reference.js.map +1 -0
- package/controls/rich-text/blocks.d.ts +28 -0
- package/controls/rich-text/blocks.js +1532 -0
- package/controls/rich-text/blocks.js.map +1 -0
- package/controls/rich-text/catalog.d.ts +98 -0
- package/controls/rich-text/catalog.js +613 -0
- package/controls/rich-text/catalog.js.map +1 -0
- package/controls/rich-text/codec.d.ts +56 -0
- package/controls/rich-text/codec.js +32 -0
- package/controls/rich-text/codec.js.map +1 -0
- package/controls/rich-text/component-card.d.ts +14 -0
- package/controls/rich-text/component-card.js +706 -0
- package/controls/rich-text/component-card.js.map +1 -0
- package/controls/rich-text/control.d.ts +21 -0
- package/controls/rich-text/control.js +254 -0
- package/controls/rich-text/control.js.map +1 -0
- package/controls/rich-text/dom.d.ts +190 -0
- package/controls/rich-text/dom.js +690 -0
- package/controls/rich-text/dom.js.map +1 -0
- package/controls/rich-text/editor.d.ts +50 -0
- package/controls/rich-text/editor.js +1530 -0
- package/controls/rich-text/editor.js.map +1 -0
- package/controls/rich-text/floating.d.ts +23 -0
- package/controls/rich-text/floating.js +137 -0
- package/controls/rich-text/floating.js.map +1 -0
- package/controls/rich-text/index.d.ts +1 -0
- package/controls/rich-text/index.js +12 -0
- package/controls/rich-text/index.js.map +1 -0
- package/controls/rich-text/link-form.d.ts +13 -0
- package/controls/rich-text/link-form.js +111 -0
- package/controls/rich-text/link-form.js.map +1 -0
- package/controls/rich-text/markdown.d.ts +6 -0
- package/controls/rich-text/markdown.js +179 -0
- package/controls/rich-text/markdown.js.map +1 -0
- package/controls/rich-text/ops.d.ts +35 -0
- package/controls/rich-text/ops.js +314 -0
- package/controls/rich-text/ops.js.map +1 -0
- package/controls/rich-text/toolbar.d.ts +85 -0
- package/controls/rich-text/toolbar.js +338 -0
- package/controls/rich-text/toolbar.js.map +1 -0
- package/controls/scale.d.ts +56 -0
- package/controls/scale.js +563 -0
- package/controls/scale.js.map +1 -0
- package/controls/slot-register.d.ts +1 -0
- package/controls/slot-register.js +16 -0
- package/controls/slot-register.js.map +1 -0
- package/controls/slot-services.d.ts +97 -0
- package/controls/slot-services.js +38 -0
- package/controls/slot-services.js.map +1 -0
- package/controls/slot.d.ts +33 -0
- package/controls/slot.js +348 -0
- package/controls/slot.js.map +1 -0
- package/controls/table/index.d.ts +1 -0
- package/controls/table/index.js +12 -0
- package/controls/table/index.js.map +1 -0
- package/controls/table/prod.d.ts +21 -0
- package/controls/table/prod.js +79 -0
- package/controls/table/prod.js.map +1 -0
- package/controls/table/refs.d.ts +50 -0
- package/controls/table/refs.js +68 -0
- package/controls/table/refs.js.map +1 -0
- package/controls/table/stored.d.ts +15 -0
- package/controls/table/stored.js +44 -0
- package/controls/table/stored.js.map +1 -0
- package/controls/table/table-editor.d.ts +103 -0
- package/controls/table/table-editor.js +2722 -0
- package/controls/table/table-editor.js.map +1 -0
- package/controls/table/table-link.d.ts +24 -0
- package/controls/table/table-link.js +180 -0
- package/controls/table/table-link.js.map +1 -0
- package/controls/table/table.d.ts +9 -0
- package/controls/table/table.js +103 -0
- package/controls/table/table.js.map +1 -0
- package/controls/text.d.ts +17 -0
- package/controls/text.js +287 -0
- package/controls/text.js.map +1 -0
- package/engine/array.d.ts +101 -0
- package/engine/array.js +893 -0
- package/engine/array.js.map +1 -0
- package/engine/bits.d.ts +24 -0
- package/engine/bits.js +60 -0
- package/engine/bits.js.map +1 -0
- package/engine/breadcrumb.d.ts +45 -0
- package/engine/breadcrumb.js +87 -0
- package/engine/breadcrumb.js.map +1 -0
- package/engine/expand.d.ts +68 -0
- package/engine/expand.js +170 -0
- package/engine/expand.js.map +1 -0
- package/engine/field-list.d.ts +20 -0
- package/engine/field-list.js +19 -0
- package/engine/field-list.js.map +1 -0
- package/engine/field-shell.d.ts +49 -0
- package/engine/field-shell.js +860 -0
- package/engine/field-shell.js.map +1 -0
- package/engine/frame.d.ts +120 -0
- package/engine/frame.js +599 -0
- package/engine/frame.js.map +1 -0
- package/engine/group-summary.d.ts +4 -0
- package/engine/group-summary.js +66 -0
- package/engine/group-summary.js.map +1 -0
- package/engine/grouping.d.ts +224 -0
- package/engine/grouping.js +824 -0
- package/engine/grouping.js.map +1 -0
- package/engine/item-list.d.ts +89 -0
- package/engine/item-list.js +703 -0
- package/engine/item-list.js.map +1 -0
- package/engine/kit-field.d.ts +72 -0
- package/engine/kit-field.js +523 -0
- package/engine/kit-field.js.map +1 -0
- package/engine/schema-form.d.ts +91 -0
- package/engine/schema-form.js +320 -0
- package/engine/schema-form.js.map +1 -0
- package/engine/slot.d.ts +13 -0
- package/engine/slot.js +226 -0
- package/engine/slot.js.map +1 -0
- package/index.d.ts +46 -0
- package/index.js +55 -0
- package/index.js.map +1 -0
- package/kit.css +56 -0
- package/lib/cn.d.ts +4 -0
- package/lib/cn.js +53 -0
- package/lib/cn.js.map +1 -0
- package/lib/columns.d.ts +14 -0
- package/lib/columns.js +27 -0
- package/lib/columns.js.map +1 -0
- package/lib/frames.d.ts +36 -0
- package/lib/frames.js +214 -0
- package/lib/frames.js.map +1 -0
- package/lib/icons.d.ts +16 -0
- package/lib/icons.js +172 -0
- package/lib/icons.js.map +1 -0
- package/lib/path.d.ts +29 -0
- package/lib/path.js +64 -0
- package/lib/path.js.map +1 -0
- package/lib/schema.d.ts +49 -0
- package/lib/schema.js +287 -0
- package/lib/schema.js.map +1 -0
- package/lib/utils.d.ts +7 -0
- package/lib/utils.js +37 -0
- package/lib/utils.js.map +1 -0
- package/lib/validate.d.ts +20 -0
- package/lib/validate.js +150 -0
- package/lib/validate.js.map +1 -0
- package/package.json +31 -59
- package/schema/adapters.d.ts +28 -0
- package/schema/adapters.js +493 -0
- package/schema/adapters.js.map +1 -0
- package/schema/help.d.ts +25 -0
- package/schema/help.js +54 -0
- package/schema/help.js.map +1 -0
- package/schema/scale.d.ts +69 -0
- package/schema/scale.js +250 -0
- package/schema/scale.js.map +1 -0
- package/schema/sources.d.ts +103 -0
- package/schema/sources.js +65 -0
- package/schema/sources.js.map +1 -0
- package/schema/table.d.ts +319 -0
- package/schema/table.js +1198 -0
- package/schema/table.js.map +1 -0
- package/schema/types.d.ts +269 -0
- package/schema/types.js +14 -0
- package/schema/types.js.map +1 -0
- package/types.d.ts +17 -0
- package/ui/action-tray.d.ts +54 -0
- package/ui/action-tray.js +153 -0
- package/ui/action-tray.js.map +1 -0
- package/ui/button.d.ts +57 -0
- package/ui/button.js +202 -0
- package/ui/button.js.map +1 -0
- package/ui/choice-switch.d.ts +36 -0
- package/ui/choice-switch.js +57 -0
- package/ui/choice-switch.js.map +1 -0
- package/ui/controls.d.ts +83 -0
- package/ui/controls.js +319 -0
- package/ui/controls.js.map +1 -0
- package/ui/display.d.ts +156 -0
- package/ui/display.js +444 -0
- package/ui/display.js.map +1 -0
- package/ui/expanded-editor-modal.d.ts +26 -0
- package/ui/expanded-editor-modal.js +140 -0
- package/ui/expanded-editor-modal.js.map +1 -0
- package/ui/field-context.d.ts +12 -0
- package/ui/field-context.js +23 -0
- package/ui/field-context.js.map +1 -0
- package/ui/floating-panel.d.ts +152 -0
- package/ui/floating-panel.js +912 -0
- package/ui/floating-panel.js.map +1 -0
- package/ui/index.d.ts +12 -0
- package/ui/index.js +13 -0
- package/ui/input.d.ts +78 -0
- package/ui/input.js +250 -0
- package/ui/input.js.map +1 -0
- package/ui/mode-bar.d.ts +31 -0
- package/ui/mode-bar.js +65 -0
- package/ui/mode-bar.js.map +1 -0
- package/ui/overlay.d.ts +123 -0
- package/ui/overlay.js +378 -0
- package/ui/overlay.js.map +1 -0
- package/ui/path-crumbs.d.ts +90 -0
- package/ui/path-crumbs.js +532 -0
- package/ui/path-crumbs.js.map +1 -0
- package/ui/presence.d.ts +16 -0
- package/ui/presence.js +65 -0
- package/ui/presence.js.map +1 -0
- package/ui/select.d.ts +66 -0
- package/ui/select.js +405 -0
- package/ui/select.js.map +1 -0
- package/ui/shortcut-hint.d.ts +14 -0
- package/ui/shortcut-hint.js +35 -0
- package/ui/shortcut-hint.js.map +1 -0
- package/ui/surfaces.d.ts +23 -0
- package/ui/surfaces.js +26 -0
- package/ui/surfaces.js.map +1 -0
- package/ui/tooltip-root.d.ts +12 -0
- package/ui/tooltip-root.js +76 -0
- package/ui/tooltip-root.js.map +1 -0
- package/ui/variants.d.ts +15 -0
- package/ui/variants.js +14 -0
- package/ui/variants.js.map +1 -0
- package/LICENSE +0 -21
- package/README.md +0 -27
- package/dist/_chunks-cjs/_visual-editing.js +0 -5898
- package/dist/_chunks-cjs/refractor.js +0 -22
- package/dist/_chunks-es/_visual-editing.mjs +0 -5904
- package/dist/_chunks-es/refractor.mjs +0 -25
- package/dist/_color.d.mts +0 -119
- package/dist/_color.d.ts +0 -119
- package/dist/_color.js +0 -1412
- package/dist/_color.mjs +0 -1411
- package/dist/_visual-editing.d.mts +0 -1126
- package/dist/_visual-editing.d.ts +0 -1126
- package/dist/_visual-editing.js +0 -30
- package/dist/_visual-editing.mjs +0 -30
- package/dist/index.d.mts +0 -3140
- package/dist/index.d.ts +0 -3140
- package/dist/index.js +0 -2036
- package/dist/index.mjs +0 -2044
- package/dist/theme.d.mts +0 -1506
- package/dist/theme.d.ts +0 -1506
- package/dist/theme.js +0 -4126
- package/dist/theme.mjs +0 -4126
- package/exports/_visual-editing.ts +0 -31
- package/exports/index.ts +0 -1
- package/exports/theme.ts +0 -1
- package/src/color/index.d.mts +0 -119
- package/src/color/index.mjs +0 -1411
- package/src/core/__workshop__/constants.ts +0 -293
- package/src/core/_compat.ts +0 -264
- package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
- package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
- package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
- package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
- package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
- package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
- package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
- package/src/core/components/autocomplete/autocomplete.tsx +0 -767
- package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
- package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
- package/src/core/components/autocomplete/constants.ts +0 -28
- package/src/core/components/autocomplete/index.ts +0 -2
- package/src/core/components/autocomplete/types.ts +0 -108
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
- package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
- package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
- package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
- package/src/core/components/breadcrumbs/index.ts +0 -1
- package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
- package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
- package/src/core/components/dialog/__workshop__/index.ts +0 -19
- package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
- package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
- package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
- package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
- package/src/core/components/dialog/__workshop__/position.tsx +0 -30
- package/src/core/components/dialog/__workshop__/props.tsx +0 -75
- package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
- package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
- package/src/core/components/dialog/dialog.tsx +0 -430
- package/src/core/components/dialog/dialogContext.ts +0 -20
- package/src/core/components/dialog/dialogProvider.tsx +0 -35
- package/src/core/components/dialog/index.ts +0 -4
- package/src/core/components/dialog/styles.ts +0 -77
- package/src/core/components/dialog/useDialog.ts +0 -11
- package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
- package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
- package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
- package/src/core/components/hotkeys/hotkeys.tsx +0 -66
- package/src/core/components/hotkeys/index.ts +0 -1
- package/src/core/components/index.ts +0 -9
- package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
- package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
- package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
- package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
- package/src/core/components/menu/__workshop__/groups.tsx +0 -156
- package/src/core/components/menu/__workshop__/index.ts +0 -89
- package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -58
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
- package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
- package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
- package/src/core/components/menu/__workshop__/tones.tsx +0 -25
- package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
- package/src/core/components/menu/helpers.ts +0 -82
- package/src/core/components/menu/index.ts +0 -5
- package/src/core/components/menu/menu.spacing.test.tsx +0 -63
- package/src/core/components/menu/menu.test.tsx +0 -125
- package/src/core/components/menu/menu.tsx +0 -178
- package/src/core/components/menu/menuButton.tsx +0 -268
- package/src/core/components/menu/menuContext.ts +0 -18
- package/src/core/components/menu/menuDivider.ts +0 -23
- package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
- package/src/core/components/menu/menuGroup.tsx +0 -233
- package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
- package/src/core/components/menu/menuItem.tsx +0 -197
- package/src/core/components/menu/useMenu.ts +0 -21
- package/src/core/components/menu/useMenuController.ts +0 -231
- package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
- package/src/core/components/skeleton/__workshop__/index.ts +0 -11
- package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
- package/src/core/components/skeleton/index.ts +0 -2
- package/src/core/components/skeleton/skeleton.tsx +0 -57
- package/src/core/components/skeleton/styles.ts +0 -50
- package/src/core/components/skeleton/textSkeleton.tsx +0 -122
- package/src/core/components/tab/__workshop__/example.tsx +0 -79
- package/src/core/components/tab/__workshop__/index.ts +0 -14
- package/src/core/components/tab/index.ts +0 -3
- package/src/core/components/tab/tab.tsx +0 -101
- package/src/core/components/tab/tabList.test.tsx +0 -48
- package/src/core/components/tab/tabList.tsx +0 -70
- package/src/core/components/tab/tabPanel.tsx +0 -39
- package/src/core/components/toast/__workshop__/hook.tsx +0 -71
- package/src/core/components/toast/__workshop__/index.ts +0 -19
- package/src/core/components/toast/__workshop__/toast.tsx +0 -26
- package/src/core/components/toast/index.ts +0 -4
- package/src/core/components/toast/styles.ts +0 -77
- package/src/core/components/toast/toast.test.tsx +0 -101
- package/src/core/components/toast/toast.tsx +0 -198
- package/src/core/components/toast/toastContext.ts +0 -7
- package/src/core/components/toast/toastLayer.tsx +0 -51
- package/src/core/components/toast/toastProvider.tsx +0 -113
- package/src/core/components/toast/toastState.ts +0 -6
- package/src/core/components/toast/types.ts +0 -26
- package/src/core/components/toast/useToast.ts +0 -25
- package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/core/components/tree/__workshop__/basic.tsx +0 -105
- package/src/core/components/tree/__workshop__/index.ts +0 -21
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
- package/src/core/components/tree/helpers.ts +0 -105
- package/src/core/components/tree/index.ts +0 -4
- package/src/core/components/tree/style.ts +0 -105
- package/src/core/components/tree/tree.test.tsx +0 -55
- package/src/core/components/tree/tree.tsx +0 -240
- package/src/core/components/tree/treeContext.ts +0 -10
- package/src/core/components/tree/treeGroup.tsx +0 -28
- package/src/core/components/tree/treeItem.test.tsx +0 -65
- package/src/core/components/tree/treeItem.tsx +0 -224
- package/src/core/components/tree/types.ts +0 -25
- package/src/core/components/tree/useTree.ts +0 -17
- package/src/core/constants.ts +0 -79
- package/src/core/helpers/animation.ts +0 -27
- package/src/core/helpers/element.ts +0 -55
- package/src/core/helpers/focus.ts +0 -100
- package/src/core/helpers/index.ts +0 -4
- package/src/core/helpers/scroll.ts +0 -15
- package/src/core/hooks/index.ts +0 -12
- package/src/core/hooks/useArrayProp.ts +0 -17
- package/src/core/hooks/useClickOutside.test.tsx +0 -482
- package/src/core/hooks/useClickOutside.ts +0 -118
- package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
- package/src/core/hooks/useClickOutsideEvent.ts +0 -73
- package/src/core/hooks/useCustomValidity.ts +0 -13
- package/src/core/hooks/useDelayed.test.ts +0 -88
- package/src/core/hooks/useDelayedState.ts +0 -36
- package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
- package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
- package/src/core/hooks/useElementRect/index.ts +0 -1
- package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
- package/src/core/hooks/useElementSize.ts +0 -19
- package/src/core/hooks/useForwardedRef.ts +0 -19
- package/src/core/hooks/useGlobalKeyDown.ts +0 -24
- package/src/core/hooks/useIsomorphicEffect.ts +0 -7
- package/src/core/hooks/useMatchMedia.ts +0 -28
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
- package/src/core/hooks/useMediaIndex/index.ts +0 -1
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
- package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
- package/src/core/hooks/useMounted.ts +0 -15
- package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
- package/src/core/hooks/usePrefersDark.test.tsx +0 -19
- package/src/core/hooks/usePrefersDark.ts +0 -16
- package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
- package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
- package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
- package/src/core/index.ts +0 -10
- package/src/core/lib/createGlobalScopedContext.ts +0 -36
- package/src/core/lib/globalScope.ts +0 -19
- package/src/core/lib/isRecord.ts +0 -3
- package/src/core/middleware/origin.ts +0 -47
- package/src/core/observers/elementSizeObserver.ts +0 -116
- package/src/core/observers/index.ts +0 -2
- package/src/core/observers/resizeObserver.ts +0 -9
- package/src/core/primitives/_selectable/index.ts +0 -1
- package/src/core/primitives/_selectable/selectable.tsx +0 -15
- package/src/core/primitives/_selectable/style.ts +0 -115
- package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
- package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
- package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
- package/src/core/primitives/avatar/avatar.tsx +0 -200
- package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
- package/src/core/primitives/avatar/avatarStack.tsx +0 -100
- package/src/core/primitives/avatar/index.ts +0 -4
- package/src/core/primitives/avatar/styles.ts +0 -167
- package/src/core/primitives/avatar/types.ts +0 -17
- package/src/core/primitives/badge/__workshop__/index.ts +0 -19
- package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
- package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
- package/src/core/primitives/badge/badge.test.tsx +0 -16
- package/src/core/primitives/badge/badge.tsx +0 -70
- package/src/core/primitives/badge/index.ts +0 -1
- package/src/core/primitives/badge/styles.ts +0 -20
- package/src/core/primitives/badge/types.ts +0 -8
- package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
- package/src/core/primitives/box/__workshop__/index.ts +0 -24
- package/src/core/primitives/box/__workshop__/props.tsx +0 -20
- package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
- package/src/core/primitives/box/box.test.tsx +0 -142
- package/src/core/primitives/box/box.tsx +0 -154
- package/src/core/primitives/box/index.ts +0 -1
- package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
- package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
- package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
- package/src/core/primitives/button/__workshop__/index.ts +0 -59
- package/src/core/primitives/button/__workshop__/labelUploadButton.tsx +0 -36
- package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
- package/src/core/primitives/button/__workshop__/props.tsx +0 -55
- package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
- package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
- package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
- package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
- package/src/core/primitives/button/button.test.tsx +0 -82
- package/src/core/primitives/button/button.tsx +0 -210
- package/src/core/primitives/button/index.ts +0 -1
- package/src/core/primitives/button/styles.ts +0 -117
- package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
- package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
- package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
- package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
- package/src/core/primitives/card/__workshop__/index.ts +0 -18
- package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
- package/src/core/primitives/card/__workshop__/props.tsx +0 -53
- package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
- package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
- package/src/core/primitives/card/card.tsx +0 -128
- package/src/core/primitives/card/index.ts +0 -2
- package/src/core/primitives/card/styles.ts +0 -147
- package/src/core/primitives/card/types.ts +0 -11
- package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
- package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
- package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
- package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
- package/src/core/primitives/checkbox/checkbox.tsx +0 -73
- package/src/core/primitives/checkbox/index.ts +0 -1
- package/src/core/primitives/checkbox/styles.ts +0 -128
- package/src/core/primitives/code/__workshop__/index.ts +0 -19
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/code/__workshop__/props.tsx +0 -21
- package/src/core/primitives/code/code.tsx +0 -55
- package/src/core/primitives/code/index.ts +0 -1
- package/src/core/primitives/code/refractor.tsx +0 -20
- package/src/core/primitives/code/styles.ts +0 -77
- package/src/core/primitives/container/__workshop__/example.tsx +0 -20
- package/src/core/primitives/container/__workshop__/index.ts +0 -8
- package/src/core/primitives/container/container.tsx +0 -54
- package/src/core/primitives/container/index.ts +0 -2
- package/src/core/primitives/container/styles.ts +0 -23
- package/src/core/primitives/container/types.ts +0 -6
- package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
- package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
- package/src/core/primitives/flex/__workshop__/index.ts +0 -11
- package/src/core/primitives/flex/flex.tsx +0 -64
- package/src/core/primitives/flex/index.ts +0 -1
- package/src/core/primitives/grid/__workshop__/index.ts +0 -10
- package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
- package/src/core/primitives/grid/grid.test.tsx +0 -80
- package/src/core/primitives/grid/grid.tsx +0 -74
- package/src/core/primitives/grid/index.ts +0 -1
- package/src/core/primitives/heading/__workshop__/index.ts +0 -19
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/heading/heading.tsx +0 -88
- package/src/core/primitives/heading/index.ts +0 -1
- package/src/core/primitives/heading/styles.ts +0 -64
- package/src/core/primitives/heading/types.ts +0 -7
- package/src/core/primitives/index.ts +0 -27
- package/src/core/primitives/inline/__workshop__/index.ts +0 -8
- package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/inline/index.ts +0 -1
- package/src/core/primitives/inline/inline.test.tsx +0 -51
- package/src/core/primitives/inline/inline.tsx +0 -63
- package/src/core/primitives/inline/styles.ts +0 -32
- package/src/core/primitives/inline/types.ts +0 -6
- package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
- package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
- package/src/core/primitives/kbd/index.ts +0 -1
- package/src/core/primitives/kbd/kbd.tsx +0 -69
- package/src/core/primitives/label/__workshop__/index.ts +0 -19
- package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
- package/src/core/primitives/label/index.ts +0 -1
- package/src/core/primitives/label/label.tsx +0 -87
- package/src/core/primitives/label/styles.ts +0 -45
- package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
- package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/core/primitives/popover/__workshop__/index.ts +0 -49
- package/src/core/primitives/popover/constants.ts +0 -22
- package/src/core/primitives/popover/floating-ui/size.ts +0 -99
- package/src/core/primitives/popover/helpers.ts +0 -31
- package/src/core/primitives/popover/index.ts +0 -2
- package/src/core/primitives/popover/popover.tsx +0 -511
- package/src/core/primitives/popover/popoverCard.tsx +0 -166
- package/src/core/primitives/popover/types.ts +0 -7
- package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
- package/src/core/primitives/radio/__workshop__/index.ts +0 -11
- package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/radio/index.ts +0 -1
- package/src/core/primitives/radio/radio.tsx +0 -51
- package/src/core/primitives/radio/styles.ts +0 -117
- package/src/core/primitives/select/__workshop__/index.ts +0 -11
- package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
- package/src/core/primitives/select/index.ts +0 -1
- package/src/core/primitives/select/select.test.tsx +0 -52
- package/src/core/primitives/select/select.tsx +0 -94
- package/src/core/primitives/select/styles.ts +0 -166
- package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
- package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
- package/src/core/primitives/spinner/index.ts +0 -1
- package/src/core/primitives/spinner/spinner.tsx +0 -46
- package/src/core/primitives/stack/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/stack/index.ts +0 -1
- package/src/core/primitives/stack/stack.test.tsx +0 -57
- package/src/core/primitives/stack/stack.tsx +0 -57
- package/src/core/primitives/stack/styles.ts +0 -32
- package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
- package/src/core/primitives/switch/__workshop__/index.ts +0 -11
- package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
- package/src/core/primitives/switch/index.ts +0 -1
- package/src/core/primitives/switch/styles.ts +0 -173
- package/src/core/primitives/switch/switch.tsx +0 -68
- package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
- package/src/core/primitives/text/__workshop__/example.tsx +0 -39
- package/src/core/primitives/text/__workshop__/index.ts +0 -24
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/text/index.ts +0 -1
- package/src/core/primitives/text/styles.ts +0 -74
- package/src/core/primitives/text/text.tsx +0 -89
- package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
- package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
- package/src/core/primitives/textArea/index.ts +0 -1
- package/src/core/primitives/textArea/textArea.tsx +0 -120
- package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
- package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
- package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
- package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
- package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
- package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
- package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
- package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
- package/src/core/primitives/textInput/index.ts +0 -1
- package/src/core/primitives/textInput/textInput.test.tsx +0 -48
- package/src/core/primitives/textInput/textInput.tsx +0 -395
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
- package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
- package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
- package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
- package/src/core/primitives/tooltip/constants.ts +0 -23
- package/src/core/primitives/tooltip/index.ts +0 -2
- package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
- package/src/core/primitives/tooltip/tooltip.tsx +0 -495
- package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
- package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
- package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
- package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
- package/src/core/primitives/types.ts +0 -179
- package/src/core/styles/border/borderStyle.ts +0 -56
- package/src/core/styles/border/index.ts +0 -2
- package/src/core/styles/border/types.ts +0 -10
- package/src/core/styles/box/boxStyle.ts +0 -69
- package/src/core/styles/box/index.ts +0 -2
- package/src/core/styles/box/types.ts +0 -11
- package/src/core/styles/card/_cardColorStyle.ts +0 -108
- package/src/core/styles/card/index.ts +0 -1
- package/src/core/styles/flex/flexItemStyle.ts +0 -27
- package/src/core/styles/flex/flexStyle.ts +0 -70
- package/src/core/styles/flex/index.ts +0 -3
- package/src/core/styles/flex/types.ts +0 -25
- package/src/core/styles/focusRing/index.ts +0 -25
- package/src/core/styles/font/codeFontStyle.ts +0 -13
- package/src/core/styles/font/headingFontStyle.ts +0 -13
- package/src/core/styles/font/index.ts +0 -6
- package/src/core/styles/font/labelFontStyle.ts +0 -13
- package/src/core/styles/font/responsiveFont.ts +0 -103
- package/src/core/styles/font/textAlignStyle.ts +0 -19
- package/src/core/styles/font/textFontStyle.ts +0 -13
- package/src/core/styles/font/types.ts +0 -35
- package/src/core/styles/grid/gridItemStyle.ts +0 -82
- package/src/core/styles/grid/gridStyle.ts +0 -108
- package/src/core/styles/grid/index.ts +0 -3
- package/src/core/styles/grid/types.ts +0 -37
- package/src/core/styles/helpers.ts +0 -72
- package/src/core/styles/index.ts +0 -5
- package/src/core/styles/input/index.ts +0 -2
- package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
- package/src/core/styles/input/textInputStyle.ts +0 -263
- package/src/core/styles/internal.ts +0 -12
- package/src/core/styles/margin/index.ts +0 -2
- package/src/core/styles/margin/marginStyle.ts +0 -21
- package/src/core/styles/margin/marginsStyle.test.ts +0 -33
- package/src/core/styles/margin/types.ts +0 -9
- package/src/core/styles/padding/index.ts +0 -2
- package/src/core/styles/padding/paddingStyle.test.ts +0 -33
- package/src/core/styles/padding/paddingStyle.ts +0 -21
- package/src/core/styles/padding/types.ts +0 -12
- package/src/core/styles/radius/index.ts +0 -2
- package/src/core/styles/radius/radiusStyle.ts +0 -23
- package/src/core/styles/radius/types.ts +0 -8
- package/src/core/styles/shadow/index.ts +0 -2
- package/src/core/styles/shadow/shadowStyle.ts +0 -29
- package/src/core/styles/shadow/types.ts +0 -6
- package/src/core/styles/types.ts +0 -8
- package/src/core/theme/__workshop__/build/Root.tsx +0 -367
- package/src/core/theme/__workshop__/build/helpers.ts +0 -46
- package/src/core/theme/__workshop__/build/story.tsx +0 -465
- package/src/core/theme/__workshop__/canvas.tsx +0 -352
- package/src/core/theme/__workshop__/color.tsx +0 -62
- package/src/core/theme/__workshop__/debug/story.tsx +0 -408
- package/src/core/theme/__workshop__/index.ts +0 -39
- package/src/core/theme/__workshop__/layer.tsx +0 -78
- package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
- package/src/core/theme/index.ts +0 -5
- package/src/core/theme/theme.test.tsx +0 -73
- package/src/core/theme/themeColorProvider.tsx +0 -29
- package/src/core/theme/themeContext.ts +0 -10
- package/src/core/theme/themeProvider.tsx +0 -62
- package/src/core/theme/types.ts +0 -12
- package/src/core/theme/useRootTheme.ts +0 -17
- package/src/core/theme/useTheme.ts +0 -16
- package/src/core/types/avatar.ts +0 -14
- package/src/core/types/badge.ts +0 -12
- package/src/core/types/box.ts +0 -19
- package/src/core/types/button.ts +0 -21
- package/src/core/types/card.ts +0 -6
- package/src/core/types/component.ts +0 -32
- package/src/core/types/dialog.ts +0 -4
- package/src/core/types/flex.ts +0 -30
- package/src/core/types/grid.ts +0 -14
- package/src/core/types/gridItem.ts +0 -29
- package/src/core/types/index.ts +0 -15
- package/src/core/types/placement.ts +0 -18
- package/src/core/types/popover.ts +0 -4
- package/src/core/types/radius.ts +0 -4
- package/src/core/types/selectable.ts +0 -6
- package/src/core/types/text.ts +0 -4
- package/src/core/utils/arrow/arrow.tsx +0 -123
- package/src/core/utils/arrow/cmds.ts +0 -91
- package/src/core/utils/arrow/index.ts +0 -1
- package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
- package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
- package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
- package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
- package/src/core/utils/boundaryElement/index.ts +0 -3
- package/src/core/utils/boundaryElement/types.ts +0 -7
- package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
- package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
- package/src/core/utils/conditionalWrapper/index.ts +0 -1
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
- package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
- package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
- package/src/core/utils/elementQuery/helpers.ts +0 -27
- package/src/core/utils/elementQuery/index.ts +0 -1
- package/src/core/utils/errorBoundary.tsx +0 -48
- package/src/core/utils/getElementRef.ts +0 -26
- package/src/core/utils/index.ts +0 -9
- package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
- package/src/core/utils/layer/__workshop__/index.ts +0 -24
- package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
- package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
- package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
- package/src/core/utils/layer/getLayerContext.test.ts +0 -30
- package/src/core/utils/layer/getLayerContext.ts +0 -21
- package/src/core/utils/layer/index.ts +0 -4
- package/src/core/utils/layer/layer.test.tsx +0 -108
- package/src/core/utils/layer/layer.tsx +0 -98
- package/src/core/utils/layer/layerContext.ts +0 -7
- package/src/core/utils/layer/layerProvider.tsx +0 -111
- package/src/core/utils/layer/types.ts +0 -9
- package/src/core/utils/layer/useLayer.ts +0 -26
- package/src/core/utils/portal/__workshop__/index.ts +0 -14
- package/src/core/utils/portal/__workshop__/named.tsx +0 -63
- package/src/core/utils/portal/index.ts +0 -4
- package/src/core/utils/portal/portal.test.tsx +0 -103
- package/src/core/utils/portal/portal.ts +0 -32
- package/src/core/utils/portal/portalContext.ts +0 -31
- package/src/core/utils/portal/portalProvider.tsx +0 -47
- package/src/core/utils/portal/types.ts +0 -9
- package/src/core/utils/portal/usePortal.ts +0 -25
- package/src/core/utils/spanWithTextOverflow.tsx +0 -10
- package/src/core/utils/srOnly/index.ts +0 -1
- package/src/core/utils/srOnly/srOnly.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
- package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
- package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
- package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
- package/src/core/utils/virtualList/index.ts +0 -1
- package/src/core/utils/virtualList/virtualList.tsx +0 -200
- package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
- package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
- package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
- package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
- package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
- package/src/theme/build/_deprecated/color/color.test.ts +0 -63
- package/src/theme/build/_deprecated/color/defaults.ts +0 -390
- package/src/theme/build/_deprecated/color/factory.ts +0 -142
- package/src/theme/build/_deprecated/color/index.ts +0 -1
- package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
- package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
- package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
- package/src/theme/build/buildColorTheme.test.ts +0 -183
- package/src/theme/build/buildColorTheme.ts +0 -499
- package/src/theme/build/buildTheme.test.ts +0 -87
- package/src/theme/build/buildTheme.ts +0 -36
- package/src/theme/build/colorToken/colorToken.ts +0 -19
- package/src/theme/build/colorToken/compileColorToken.ts +0 -21
- package/src/theme/build/colorToken/index.ts +0 -2
- package/src/theme/build/colorToken/types.ts +0 -6
- package/src/theme/build/index.ts +0 -3
- package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
- package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
- package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
- package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
- package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
- package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
- package/src/theme/build/lib/color-fns/convert.ts +0 -150
- package/src/theme/build/lib/color-fns/index.ts +0 -6
- package/src/theme/build/lib/color-fns/parse.ts +0 -60
- package/src/theme/build/lib/color-fns/rgba.ts +0 -10
- package/src/theme/build/lib/color-fns/types.ts +0 -28
- package/src/theme/build/lib/isRecord.ts +0 -3
- package/src/theme/build/lib/lazy.ts +0 -30
- package/src/theme/build/lib/utils.ts +0 -19
- package/src/theme/build/merge.ts +0 -26
- package/src/theme/build/mixThemeColor.test.ts +0 -21
- package/src/theme/build/mixThemeColor.ts +0 -53
- package/src/theme/build/renderColorTheme.ts +0 -532
- package/src/theme/build/renderColorValue.ts +0 -85
- package/src/theme/build/resolveColorTokens.ts +0 -268
- package/src/theme/build/theme.test.ts +0 -27
- package/src/theme/config/helpers.ts +0 -55
- package/src/theme/config/index.ts +0 -4
- package/src/theme/config/system.ts +0 -115
- package/src/theme/config/tokens/color/index.ts +0 -1
- package/src/theme/config/tokens/color/types.ts +0 -133
- package/src/theme/config/tokens/index.ts +0 -4
- package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
- package/src/theme/config/tokens/parseTokenKey.ts +0 -67
- package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
- package/src/theme/config/tokens/parseTokenValue.ts +0 -133
- package/src/theme/config/tokens/types.ts +0 -53
- package/src/theme/config/types.ts +0 -46
- package/src/theme/defaults/colorPalette.ts +0 -5
- package/src/theme/defaults/colorTokens.ts +0 -648
- package/src/theme/defaults/config.ts +0 -84
- package/src/theme/defaults/fonts.ts +0 -227
- package/src/theme/getScopedTheme.ts +0 -98
- package/src/theme/index.ts +0 -5
- package/src/theme/system/avatar.ts +0 -14
- package/src/theme/system/color/_constants.ts +0 -45
- package/src/theme/system/color/_helpers.ts +0 -24
- package/src/theme/system/color/_system.ts +0 -40
- package/src/theme/system/color/avatar.ts +0 -15
- package/src/theme/system/color/badge.ts +0 -16
- package/src/theme/system/color/button.ts +0 -17
- package/src/theme/system/color/color.ts +0 -34
- package/src/theme/system/color/index.ts +0 -13
- package/src/theme/system/color/input.ts +0 -25
- package/src/theme/system/color/kbd.ts +0 -8
- package/src/theme/system/color/selectable.ts +0 -12
- package/src/theme/system/color/shadow.ts +0 -7
- package/src/theme/system/color/state.ts +0 -43
- package/src/theme/system/color/syntax.ts +0 -41
- package/src/theme/system/css.ts +0 -14
- package/src/theme/system/focusRing.ts +0 -7
- package/src/theme/system/font.ts +0 -52
- package/src/theme/system/index.ts +0 -11
- package/src/theme/system/input.ts +0 -33
- package/src/theme/system/layer.ts +0 -8
- package/src/theme/system/shadow.ts +0 -19
- package/src/theme/system/styles.ts +0 -13
- package/src/theme/system/theme.ts +0 -138
- package/src/theme/system/v0/avatar.ts +0 -10
- package/src/theme/system/v0/color/_generic.ts +0 -35
- package/src/theme/system/v0/color/_system.ts +0 -17
- package/src/theme/system/v0/color/base.ts +0 -21
- package/src/theme/system/v0/color/button.ts +0 -42
- package/src/theme/system/v0/color/card.ts +0 -19
- package/src/theme/system/v0/color/color.ts +0 -40
- package/src/theme/system/v0/color/index.ts +0 -11
- package/src/theme/system/v0/color/input.ts +0 -34
- package/src/theme/system/v0/color/muted.ts +0 -26
- package/src/theme/system/v0/color/selectable.ts +0 -31
- package/src/theme/system/v0/color/solid.ts +0 -26
- package/src/theme/system/v0/color/spot.ts +0 -13
- package/src/theme/system/v0/index.ts +0 -3
- package/src/theme/system/v0/input.ts +0 -23
- package/src/theme/versioning/getTheme_v2.ts +0 -57
- package/src/theme/versioning/index.ts +0 -5
- package/src/theme/versioning/is_v0.ts +0 -6
- package/src/theme/versioning/is_v2.ts +0 -6
- package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
- package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
- package/src/theme/versioning/v0_v2.ts +0 -94
- package/src/theme/versioning/v2_v0.ts +0 -135
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { isObj, pathKey } from "../lib/path.js";
|
|
3
|
+
import { KitIcon } from "../lib/icons.js";
|
|
4
|
+
import { resolveFieldAccess, useForm, useKitEnv, useKitServices } from "../context.js";
|
|
5
|
+
import { Button } from "../ui/button.js";
|
|
6
|
+
import { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Popover, PopoverContent, PopoverTrigger } from "../ui/overlay.js";
|
|
7
|
+
import { isHidden, objectOpenMode, plainText, summarize } from "../lib/schema.js";
|
|
8
|
+
import { IssueDot, RowChrome } from "./bits.js";
|
|
9
|
+
import { resolveHelp } from "../schema/help.js";
|
|
10
|
+
import { FieldShell } from "./field-shell.js";
|
|
11
|
+
import { groupSummary } from "./group-summary.js";
|
|
12
|
+
import { FieldInset, FieldRun, useInsetDepth } from "./grouping.js";
|
|
13
|
+
import { FieldList } from "./field-list.js";
|
|
14
|
+
import { ArrayField } from "./array.js";
|
|
15
|
+
import { ExpandAction, ExpandedField, expandKey, expandSpecFor, isExpandShortcut, openExpanded } from "./expand.js";
|
|
16
|
+
import { SchemaForm } from "./schema-form.js";
|
|
17
|
+
import { SlotField } from "./slot.js";
|
|
18
|
+
import { JsonControl } from "../controls/json.js";
|
|
19
|
+
import * as React from "react";
|
|
20
|
+
import { IconChevronRight } from "@tabler/icons-react";
|
|
21
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
22
|
+
//#region src/kit/engine/kit-field.tsx
|
|
23
|
+
/**
|
|
24
|
+
* KitField — renders ONE field of the schema at `path` (must be inside <SchemaForm>): the shell + the control for its
|
|
25
|
+
* type (V2 HEAD 9829bf1 kit/engine/kit-field.tsx).
|
|
26
|
+
*
|
|
27
|
+
* Arrays (array.tsx) and slots (slot.tsx) get their rows; objects open inline (FieldInset), drill (NavRow -> a frame),
|
|
28
|
+
* popover or dialog (NestedForm: its own navigation stack). Primitive types dispatch through the CONTROLS table, which
|
|
29
|
+
* the controls lanes fill. Every SchemaType has a control there; a type that is none of them (a schema newer than this
|
|
30
|
+
* kit) edits its raw value in the JSON control (FallbackControl), never nothing and never a stand-in.
|
|
31
|
+
*/
|
|
32
|
+
/** Type → control. Registered by the controls lane; a type with no entry edits its raw value (FallbackControl). */
|
|
33
|
+
var CONTROLS = {};
|
|
34
|
+
/**
|
|
35
|
+
* Type → label-row action (DESIGN 4.4: slug Generate, rich text expand, table Edit in full screen), registered by the
|
|
36
|
+
* controls lane next to its control. It gets the control's props. V2 draws it only while the field is editable, except
|
|
37
|
+
* the types in ACTION_WHEN_READ_ONLY, whose action takes `readOnly` and decides for itself (slug Generate).
|
|
38
|
+
*/
|
|
39
|
+
var ACTIONS = {};
|
|
40
|
+
var ACTION_WHEN_READ_ONLY = new Set(["slug"]);
|
|
41
|
+
/** D58: the field for the lens: read-only (plain text) when it can't edit it. Hidden fields never reach here
|
|
42
|
+
* (SchemaForm drops them from the schema). */
|
|
43
|
+
function useFieldAccess(field) {
|
|
44
|
+
return { readOnly: resolveFieldAccess(field, useKitEnv()).readOnly };
|
|
45
|
+
}
|
|
46
|
+
/** CPO D39: the field's help line — schema text first, then a line computed from its settings, then the house convention. */
|
|
47
|
+
function withDefaultHelp(field, isPublished, readOnly) {
|
|
48
|
+
let computed;
|
|
49
|
+
if (readOnly && field.lockReason) return {
|
|
50
|
+
...field,
|
|
51
|
+
description: field.lockReason.replace(/\.?$/, ".")
|
|
52
|
+
};
|
|
53
|
+
if (field.type === "slug" && isPublished === false) computed = "Follows the title until you change it or publish.";
|
|
54
|
+
else if (field.type === "number" && !field.scale && field.layout !== "slider" && field.numeric?.unit) {
|
|
55
|
+
const { min, max, unit } = field.numeric;
|
|
56
|
+
computed = unit.startsWith("/") || max != null && unit.includes(String(max)) || min == null && max == null ? "" : min != null && max != null ? `Between ${min} and ${max} ${unit}.` : min != null ? `${min} ${unit} or more.` : `Up to ${max} ${unit}.`;
|
|
57
|
+
} else if (field.type === "number" && !field.scale && field.layout !== "slider" && (field.numeric?.min != null || field.numeric?.max != null)) {
|
|
58
|
+
const { min, max } = field.numeric ?? {};
|
|
59
|
+
computed = min != null && max != null ? `Between ${min} and ${max}.` : min != null ? `${min} or more.` : `Up to ${max}.`;
|
|
60
|
+
}
|
|
61
|
+
const help = resolveHelp(field, computed) ?? "";
|
|
62
|
+
return help === field.description ? field : {
|
|
63
|
+
...field,
|
|
64
|
+
description: help
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function KitField({ field, path, parent }) {
|
|
68
|
+
const form = useForm();
|
|
69
|
+
const env = useKitEnv();
|
|
70
|
+
const id = React.useId();
|
|
71
|
+
const { readOnly } = useFieldAccess(field);
|
|
72
|
+
if (!form) return null;
|
|
73
|
+
if (field.type === "array") return /* @__PURE__ */ jsx(ArrayField, {
|
|
74
|
+
field,
|
|
75
|
+
path,
|
|
76
|
+
parent
|
|
77
|
+
});
|
|
78
|
+
if (field.type === "slot") return /* @__PURE__ */ jsx(SlotField, {
|
|
79
|
+
field,
|
|
80
|
+
path
|
|
81
|
+
});
|
|
82
|
+
if (field.type === "object") return /* @__PURE__ */ jsx(ObjectField, {
|
|
83
|
+
field,
|
|
84
|
+
path
|
|
85
|
+
});
|
|
86
|
+
const key = pathKey(path);
|
|
87
|
+
const value = form.getAt(path);
|
|
88
|
+
const onChange = (v) => form.setAt(path, v);
|
|
89
|
+
const onBlur = () => form.touch(key);
|
|
90
|
+
const issue = form.visibleIssue(key);
|
|
91
|
+
const Control = CONTROLS[field.type] ?? FallbackControl;
|
|
92
|
+
const Action = ACTIONS[field.type];
|
|
93
|
+
const f = withDefaultHelp(field, env.isPublished, readOnly);
|
|
94
|
+
const plain = readOnly && PLAIN_TYPES.has(field.type);
|
|
95
|
+
const card = field.type === "boolean" && field.layout !== "checkbox";
|
|
96
|
+
const expand = plain || Action ? null : expandSpecFor(field, {
|
|
97
|
+
readOnly,
|
|
98
|
+
hasKitControl: !!CONTROLS[field.type],
|
|
99
|
+
variant: env.variant
|
|
100
|
+
});
|
|
101
|
+
const action = Action && (!readOnly || ACTION_WHEN_READ_ONLY.has(field.type)) ? /* @__PURE__ */ jsx(Action, {
|
|
102
|
+
field: f,
|
|
103
|
+
value,
|
|
104
|
+
onChange,
|
|
105
|
+
id,
|
|
106
|
+
readOnly,
|
|
107
|
+
path,
|
|
108
|
+
parent
|
|
109
|
+
}) : expand ? /* @__PURE__ */ jsx(ExpandAction, {
|
|
110
|
+
field: f,
|
|
111
|
+
path,
|
|
112
|
+
spec: expand
|
|
113
|
+
}) : void 0;
|
|
114
|
+
return /* @__PURE__ */ jsxs(FieldShell, {
|
|
115
|
+
field: f,
|
|
116
|
+
path,
|
|
117
|
+
id,
|
|
118
|
+
value,
|
|
119
|
+
onChange,
|
|
120
|
+
readOnly,
|
|
121
|
+
issue,
|
|
122
|
+
layout: card ? "card" : "stack",
|
|
123
|
+
action,
|
|
124
|
+
children: [plain ? card ? null : /* @__PURE__ */ jsx(PlainValue, {
|
|
125
|
+
field: f,
|
|
126
|
+
value,
|
|
127
|
+
id
|
|
128
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
129
|
+
onBlur,
|
|
130
|
+
onKeyDown: expand ? (e) => {
|
|
131
|
+
if (!isExpandShortcut(e)) return;
|
|
132
|
+
e.preventDefault();
|
|
133
|
+
openExpanded(expandKey(env.docId, path));
|
|
134
|
+
} : void 0,
|
|
135
|
+
className: "min-w-0",
|
|
136
|
+
children: /* @__PURE__ */ jsx(Control, {
|
|
137
|
+
field: f,
|
|
138
|
+
value,
|
|
139
|
+
onChange,
|
|
140
|
+
id,
|
|
141
|
+
invalid: issue?.level === "error",
|
|
142
|
+
readOnly,
|
|
143
|
+
path,
|
|
144
|
+
parent,
|
|
145
|
+
onBlur
|
|
146
|
+
})
|
|
147
|
+
}), expand ? /* @__PURE__ */ jsx(ExpandedField, {
|
|
148
|
+
field: f,
|
|
149
|
+
path,
|
|
150
|
+
spec: expand,
|
|
151
|
+
Control,
|
|
152
|
+
value,
|
|
153
|
+
onChange,
|
|
154
|
+
onBlur,
|
|
155
|
+
invalid: issue?.level === "error",
|
|
156
|
+
id,
|
|
157
|
+
parent
|
|
158
|
+
}) : null]
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* A row that opens something (V2 NavRow): type tile, title over a summary line, the field's chrome (from RowChrome),
|
|
163
|
+
* the issue rollup and a chevron.
|
|
164
|
+
* Like V2 it always draws its button and chevron, also with no `onClick` (a popover trigger around it opens on the
|
|
165
|
+
* click). Only `inert` (the form draws no frames, so nothing can open) leaves both out.
|
|
166
|
+
*/
|
|
167
|
+
function NavRow({ icon, title, subtitle, path, onClick, inert, className, trailing }) {
|
|
168
|
+
const form = useForm();
|
|
169
|
+
const roll = path && form ? form.rollup(path) : {
|
|
170
|
+
errors: 0,
|
|
171
|
+
warnings: 0
|
|
172
|
+
};
|
|
173
|
+
const subId = React.useId();
|
|
174
|
+
const chrome = React.useContext(RowChrome);
|
|
175
|
+
const text = /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
176
|
+
className: "block truncate text-kit-sm text-kit-fg",
|
|
177
|
+
children: title
|
|
178
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
179
|
+
id: subId,
|
|
180
|
+
className: "block truncate text-kit-xs text-kit-fg-3",
|
|
181
|
+
children: subtitle || "Nothing set yet"
|
|
182
|
+
})] });
|
|
183
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
184
|
+
className: cn("group/nav relative flex min-h-11 w-full min-w-0 items-center gap-2.5 rounded-kit-lg border border-kit-line bg-kit-control-bg py-1.5 pl-2 pr-2 text-left transition-colors hover:border-kit-line-strong hover:bg-kit-subtle", className),
|
|
185
|
+
children: [
|
|
186
|
+
/* @__PURE__ */ jsx("span", {
|
|
187
|
+
className: "flex size-7 shrink-0 items-center justify-center rounded-kit-md bg-kit-muted text-kit-fg-2",
|
|
188
|
+
children: /* @__PURE__ */ jsx(KitIcon, {
|
|
189
|
+
name: icon,
|
|
190
|
+
fallback: "folder",
|
|
191
|
+
className: "size-4"
|
|
192
|
+
})
|
|
193
|
+
}),
|
|
194
|
+
!inert ? /* @__PURE__ */ jsx("button", {
|
|
195
|
+
type: "button",
|
|
196
|
+
"data-nav-main": true,
|
|
197
|
+
onClick,
|
|
198
|
+
"aria-label": `Open ${title}${roll.errors ? `, ${roll.errors} ${roll.errors === 1 ? "issue" : "issues"}` : ""}`,
|
|
199
|
+
"aria-describedby": subId,
|
|
200
|
+
className: "min-w-0 flex-1 text-left outline-none after:absolute after:inset-0 after:rounded-kit-lg after:content-[''] focus-visible:after:outline-2 focus-visible:after:outline-offset-2 focus-visible:after:outline-kit-focus-ring focus-visible:after:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:after:outline-none",
|
|
201
|
+
children: text
|
|
202
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
203
|
+
"data-nav-main": true,
|
|
204
|
+
className: "min-w-0 flex-1 text-left",
|
|
205
|
+
children: text
|
|
206
|
+
}),
|
|
207
|
+
/* @__PURE__ */ jsx(IssueDot, {
|
|
208
|
+
errors: roll.errors,
|
|
209
|
+
warnings: roll.warnings,
|
|
210
|
+
className: "relative"
|
|
211
|
+
}),
|
|
212
|
+
chrome ? /* @__PURE__ */ jsx("span", {
|
|
213
|
+
className: "relative z-[1] flex shrink-0 items-center gap-0.5 empty:hidden",
|
|
214
|
+
children: chrome
|
|
215
|
+
}) : null,
|
|
216
|
+
trailing,
|
|
217
|
+
!inert ? /* @__PURE__ */ jsx(IconChevronRight, {
|
|
218
|
+
"aria-hidden": true,
|
|
219
|
+
className: "pointer-events-none size-4 shrink-0 text-kit-fg-3 transition-transform group-hover/nav:translate-x-0.5",
|
|
220
|
+
stroke: 1.5
|
|
221
|
+
}) : null
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
function ObjectField({ field, path }) {
|
|
226
|
+
const form = useForm();
|
|
227
|
+
const id = React.useId();
|
|
228
|
+
const { readOnly } = useFieldAccess(field);
|
|
229
|
+
const depth = useInsetDepth();
|
|
230
|
+
const value = form.getAt(path);
|
|
231
|
+
const obj = isObj(value) ? value : {};
|
|
232
|
+
const fields = field.fields ?? [];
|
|
233
|
+
const wanted = objectOpenMode(field);
|
|
234
|
+
const mode = wanted === "inline" && depth > 0 ? "drill" : wanted;
|
|
235
|
+
const [open, setOpen] = React.useState(false);
|
|
236
|
+
const sum = groupSummary(fields, obj) || summarize(fields, obj);
|
|
237
|
+
const nav = React.useRef(null);
|
|
238
|
+
const shell = (control, layout) => /* @__PURE__ */ jsx(FieldShell, {
|
|
239
|
+
field,
|
|
240
|
+
path,
|
|
241
|
+
id,
|
|
242
|
+
value,
|
|
243
|
+
onChange: (v) => form.setAt(path, v),
|
|
244
|
+
readOnly,
|
|
245
|
+
issue: form.visibleIssue(pathKey(path)),
|
|
246
|
+
layout,
|
|
247
|
+
children: control
|
|
248
|
+
});
|
|
249
|
+
if (mode === "inline") {
|
|
250
|
+
const visible = fields.filter((f) => !isHidden(f, obj));
|
|
251
|
+
return shell(/* @__PURE__ */ jsx(FieldInset, {
|
|
252
|
+
label: field.title,
|
|
253
|
+
children: /* @__PURE__ */ jsx(FieldRun, {
|
|
254
|
+
fields: visible,
|
|
255
|
+
render: (f) => /* @__PURE__ */ jsx(KitField, {
|
|
256
|
+
field: f,
|
|
257
|
+
path: [...path, f.name],
|
|
258
|
+
parent: obj
|
|
259
|
+
})
|
|
260
|
+
})
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
const help = resolveHelp(field) ?? "";
|
|
264
|
+
if (mode === "popover") return shell(/* @__PURE__ */ jsxs(Popover, {
|
|
265
|
+
open,
|
|
266
|
+
onOpenChange: setOpen,
|
|
267
|
+
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
268
|
+
nativeButton: false,
|
|
269
|
+
render: /* @__PURE__ */ jsx("div", {}),
|
|
270
|
+
children: /* @__PURE__ */ jsx(NavRow, {
|
|
271
|
+
icon: field.icon,
|
|
272
|
+
title: field.title,
|
|
273
|
+
subtitle: sum || help,
|
|
274
|
+
path
|
|
275
|
+
})
|
|
276
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
277
|
+
className: "w-[340px] p-3",
|
|
278
|
+
align: "start",
|
|
279
|
+
children: /* @__PURE__ */ jsx(FieldList, {
|
|
280
|
+
fields,
|
|
281
|
+
basePath: path,
|
|
282
|
+
memoryKey: `pop:${pathKey(path)}`
|
|
283
|
+
})
|
|
284
|
+
})]
|
|
285
|
+
}), "row");
|
|
286
|
+
if (mode === "dialog") return shell(/* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(NavRow, {
|
|
287
|
+
icon: field.icon,
|
|
288
|
+
title: field.title,
|
|
289
|
+
subtitle: sum || help,
|
|
290
|
+
path,
|
|
291
|
+
onClick: () => setOpen(true)
|
|
292
|
+
}), /* @__PURE__ */ jsx(Modal, {
|
|
293
|
+
open,
|
|
294
|
+
onOpenChange: (o, d) => {
|
|
295
|
+
if (!o && d.reason === "escape-key" && nav.current?.back()) return d.cancel();
|
|
296
|
+
setOpen(o);
|
|
297
|
+
},
|
|
298
|
+
children: /* @__PURE__ */ jsxs(ModalContent, {
|
|
299
|
+
size: "lg",
|
|
300
|
+
children: [
|
|
301
|
+
/* @__PURE__ */ jsx(ModalHeader, {
|
|
302
|
+
title: field.title,
|
|
303
|
+
description: field.description,
|
|
304
|
+
icon: /* @__PURE__ */ jsx(KitIcon, {
|
|
305
|
+
name: field.icon,
|
|
306
|
+
fallback: "folder"
|
|
307
|
+
})
|
|
308
|
+
}),
|
|
309
|
+
/* @__PURE__ */ jsx(ModalBody, {
|
|
310
|
+
className: "flex min-h-[320px] flex-col gap-5",
|
|
311
|
+
children: /* @__PURE__ */ jsx(NestedForm, {
|
|
312
|
+
fields,
|
|
313
|
+
title: field.title,
|
|
314
|
+
icon: field.icon,
|
|
315
|
+
path,
|
|
316
|
+
navRef: nav
|
|
317
|
+
})
|
|
318
|
+
}),
|
|
319
|
+
/* @__PURE__ */ jsxs(ModalFooter, { children: [/* @__PURE__ */ jsx("span", {
|
|
320
|
+
className: "mr-auto text-kit-xs text-kit-fg-3",
|
|
321
|
+
children: "Changes save as you type"
|
|
322
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
323
|
+
variant: "primary",
|
|
324
|
+
onClick: () => setOpen(false),
|
|
325
|
+
children: "Done"
|
|
326
|
+
})] })
|
|
327
|
+
]
|
|
328
|
+
})
|
|
329
|
+
})] }), "row");
|
|
330
|
+
return shell(/* @__PURE__ */ jsx(NavRow, {
|
|
331
|
+
icon: field.icon,
|
|
332
|
+
title: field.title,
|
|
333
|
+
subtitle: sum || help,
|
|
334
|
+
path,
|
|
335
|
+
onClick: () => form.navigate(path),
|
|
336
|
+
inert: !form.canNavigate
|
|
337
|
+
}), "row");
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* A dialog gets its OWN navigation stack: lists inside it drill inside the dialog (breadcrumb, Esc, stepper), never the
|
|
341
|
+
* panel behind. Writes go straight into the parent form at `path`.
|
|
342
|
+
*/
|
|
343
|
+
function NestedForm({ fields, title, icon, path, navRef }) {
|
|
344
|
+
const form = useForm();
|
|
345
|
+
const env = useKitEnv();
|
|
346
|
+
const key = pathKey(path);
|
|
347
|
+
const schema = React.useMemo(() => ({
|
|
348
|
+
name: key || "nested",
|
|
349
|
+
title,
|
|
350
|
+
icon,
|
|
351
|
+
kind: "object",
|
|
352
|
+
fields
|
|
353
|
+
}), [
|
|
354
|
+
key,
|
|
355
|
+
title,
|
|
356
|
+
icon,
|
|
357
|
+
fields
|
|
358
|
+
]);
|
|
359
|
+
const raw = form.getAt(path);
|
|
360
|
+
const pub = form.hasPublished ? form.publishedAt(path) : void 0;
|
|
361
|
+
const presence = React.useMemo(() => {
|
|
362
|
+
const out = {};
|
|
363
|
+
for (const [k, v] of Object.entries(env.presence)) if (k.startsWith(`${key}.`)) out[k.slice(key.length + 1)] = v;
|
|
364
|
+
return out;
|
|
365
|
+
}, [env.presence, key]);
|
|
366
|
+
return /* @__PURE__ */ jsx(SchemaForm, {
|
|
367
|
+
schema,
|
|
368
|
+
value: isObj(raw) ? raw : {},
|
|
369
|
+
onChange: (v) => form.setAt(path, v),
|
|
370
|
+
variant: "document",
|
|
371
|
+
scroll: false,
|
|
372
|
+
navRef,
|
|
373
|
+
resolveSchema: form.resolveSchema,
|
|
374
|
+
blockLibrary: form.blockLibrary,
|
|
375
|
+
published: isObj(pub) ? pub : void 0,
|
|
376
|
+
presence,
|
|
377
|
+
readOnly: env.readOnly,
|
|
378
|
+
showErrors: form.showAllErrors,
|
|
379
|
+
onOpenReference: env.onOpenReference,
|
|
380
|
+
env: {
|
|
381
|
+
docId: `${env.docId}:${key}`,
|
|
382
|
+
docTitle: env.docTitle,
|
|
383
|
+
urlPrefix: env.urlPrefix,
|
|
384
|
+
isPublished: env.isPublished,
|
|
385
|
+
palette: env.palette,
|
|
386
|
+
helpDisplay: env.helpDisplay
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
var PLAIN_TYPES = new Set([
|
|
391
|
+
"string",
|
|
392
|
+
"text",
|
|
393
|
+
"richtext",
|
|
394
|
+
"number",
|
|
395
|
+
"slug",
|
|
396
|
+
"url",
|
|
397
|
+
"email",
|
|
398
|
+
"date",
|
|
399
|
+
"datetime",
|
|
400
|
+
"select",
|
|
401
|
+
"multiselect",
|
|
402
|
+
"tags",
|
|
403
|
+
"boolean",
|
|
404
|
+
"rating"
|
|
405
|
+
]);
|
|
406
|
+
function plainOf(field, value) {
|
|
407
|
+
if (value == null || value === "") return "";
|
|
408
|
+
const label = (v) => field.options?.find((o) => o.value === v)?.label ?? String(v);
|
|
409
|
+
if (field.type === "boolean") return value ? "On" : "Off";
|
|
410
|
+
if (field.type === "select") return label(value);
|
|
411
|
+
if (field.type === "richtext") return plainText(value);
|
|
412
|
+
if (Array.isArray(value)) return value.map(label).join(", ");
|
|
413
|
+
if (field.type === "date" || field.type === "datetime") {
|
|
414
|
+
const d = new Date(String(value).replace(/\[.*\]$/, ""));
|
|
415
|
+
return Number.isNaN(+d) ? String(value) : d.toLocaleString("en-US", field.type === "date" ? {
|
|
416
|
+
month: "short",
|
|
417
|
+
day: "numeric",
|
|
418
|
+
year: "numeric"
|
|
419
|
+
} : {
|
|
420
|
+
month: "short",
|
|
421
|
+
day: "numeric",
|
|
422
|
+
year: "numeric",
|
|
423
|
+
hour: "numeric",
|
|
424
|
+
minute: "2-digit"
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
if (field.type === "number" && isObj(value)) return String(value.value ?? "");
|
|
428
|
+
return typeof value === "object" ? "" : String(value);
|
|
429
|
+
}
|
|
430
|
+
function PlainValue({ field, value, id }) {
|
|
431
|
+
const text = plainOf(field, value);
|
|
432
|
+
return /* @__PURE__ */ jsx("p", {
|
|
433
|
+
id,
|
|
434
|
+
tabIndex: 0,
|
|
435
|
+
"data-slot": "kit-plain",
|
|
436
|
+
className: cn("min-w-0 whitespace-pre-wrap break-words text-kit-sm leading-6 text-kit-fg outline-none", (field.type === "slug" || field.type === "url") && "font-kit-mono text-kit-xs leading-6"),
|
|
437
|
+
children: text || /* @__PURE__ */ jsx("span", {
|
|
438
|
+
className: "text-kit-fg-3",
|
|
439
|
+
children: "Empty"
|
|
440
|
+
})
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Every SchemaType has a kit control (kit-field.test checks CONTROLS against the type list in schema/types.ts). A field
|
|
445
|
+
* whose type is none of them edits its raw stored value in the JSON control, tagged `data-kit-fallback="<type>"`: the
|
|
446
|
+
* value is shown and kept, and an edit is written only once it parses.
|
|
447
|
+
*/
|
|
448
|
+
function FallbackControl(props) {
|
|
449
|
+
return /* @__PURE__ */ jsx("div", {
|
|
450
|
+
"data-kit-fallback": props.field.type,
|
|
451
|
+
className: "min-w-0",
|
|
452
|
+
children: /* @__PURE__ */ jsx(JsonControl, { ...props })
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* A control that cannot carry a stored value unchanged (rich text holding formatting its editor would drop) hands that
|
|
457
|
+
* value to the host's control for the type (KitServices.LegacyControl: the dashboard's FieldRenderer arm), bare inside
|
|
458
|
+
* the kit FieldShell, which owns the label and the help; the control names its reason above it. The box carries
|
|
459
|
+
* `data-kit-legacy="<type>"`, so the parity harness counts it (mismatch class `legacy-control`). A host with no legacy
|
|
460
|
+
* service, or a control that throws while rendering, says why in words; the form around it keeps working.
|
|
461
|
+
*/
|
|
462
|
+
function LegacyFallback(props) {
|
|
463
|
+
const { LegacyControl } = useKitServices();
|
|
464
|
+
const { field, id } = props;
|
|
465
|
+
return /* @__PURE__ */ jsx("div", {
|
|
466
|
+
"data-kit-legacy": field.type,
|
|
467
|
+
className: "min-w-0",
|
|
468
|
+
children: LegacyControl ? /* @__PURE__ */ jsx(LegacyBoundary, {
|
|
469
|
+
field,
|
|
470
|
+
id,
|
|
471
|
+
value: props.value,
|
|
472
|
+
children: /* @__PURE__ */ jsx(LegacyControl, { ...props })
|
|
473
|
+
}, JSON.stringify(field)) : /* @__PURE__ */ jsxs(LegacyRefusal, {
|
|
474
|
+
id,
|
|
475
|
+
children: [
|
|
476
|
+
"This view has no control for ",
|
|
477
|
+
field.type,
|
|
478
|
+
" fields."
|
|
479
|
+
]
|
|
480
|
+
})
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* An `<output>`: a labelable element, so the FieldShell label's `for` lands on it, and focusable, so a keyboard user
|
|
485
|
+
* reaches the reason. The neutral focus ring shows under keyboard modality only.
|
|
486
|
+
*/
|
|
487
|
+
function LegacyRefusal({ id, children }) {
|
|
488
|
+
return /* @__PURE__ */ jsx("output", {
|
|
489
|
+
id,
|
|
490
|
+
role: "note",
|
|
491
|
+
tabIndex: 0,
|
|
492
|
+
"data-slot": "kit-legacy-refusal",
|
|
493
|
+
className: "block rounded-kit-sm text-kit-xs text-kit-fg-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-kit-focus-ring focus-visible:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:outline-0",
|
|
494
|
+
children
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
/** Retries the control once its field or value changes (a schema edit, a save from elsewhere, an undo). */
|
|
498
|
+
var LegacyBoundary = class extends React.Component {
|
|
499
|
+
state = { reason: null };
|
|
500
|
+
static getDerivedStateFromError(error) {
|
|
501
|
+
return { reason: error instanceof Error ? error.message : String(error) };
|
|
502
|
+
}
|
|
503
|
+
componentDidUpdate(prev) {
|
|
504
|
+
if (this.state.reason === null) return;
|
|
505
|
+
if (prev.value !== this.props.value || JSON.stringify(prev.field) !== JSON.stringify(this.props.field)) this.setState({ reason: null });
|
|
506
|
+
}
|
|
507
|
+
render() {
|
|
508
|
+
if (this.state.reason === null) return this.props.children;
|
|
509
|
+
return /* @__PURE__ */ jsxs(LegacyRefusal, {
|
|
510
|
+
id: this.props.id,
|
|
511
|
+
children: [
|
|
512
|
+
"The ",
|
|
513
|
+
this.props.field.title,
|
|
514
|
+
" control could not load: ",
|
|
515
|
+
this.state.reason
|
|
516
|
+
]
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
};
|
|
520
|
+
//#endregion
|
|
521
|
+
export { ACTIONS, ACTION_WHEN_READ_ONLY, CONTROLS, FallbackControl, KitField, LegacyFallback, NavRow, NestedForm, plainOf, useFieldAccess, withDefaultHelp };
|
|
522
|
+
|
|
523
|
+
//# sourceMappingURL=kit-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kit-field.js","names":[],"sources":["../../src/kit/engine/kit-field.tsx"],"sourcesContent":["/**\n * KitField — renders ONE field of the schema at `path` (must be inside <SchemaForm>): the shell + the control for its\n * type (V2 HEAD 9829bf1 kit/engine/kit-field.tsx).\n *\n * Arrays (array.tsx) and slots (slot.tsx) get their rows; objects open inline (FieldInset), drill (NavRow -> a frame),\n * popover or dialog (NestedForm: its own navigation stack). Primitive types dispatch through the CONTROLS table, which\n * the controls lanes fill. Every SchemaType has a control there; a type that is none of them (a schema newer than this\n * kit) edits its raw value in the JSON control (FallbackControl), never nothing and never a stand-in.\n */\nimport * as React from \"react\";\nimport type { ComponentType } from \"react\";\nimport { IconChevronRight } from \"@tabler/icons-react\";\nimport { KitIcon } from \"../lib/icons\";\nimport { cn } from \"../lib/cn\";\nimport type { FieldPath, FieldSchema, PrimitiveType, SchemaType } from \"../schema/types\";\nimport { resolveHelp } from \"../schema/help\";\nimport type { ControlProps } from \"../types\";\nimport { resolveFieldAccess, useForm, useKitEnv, useKitServices, type KitPeer } from \"../context\";\nimport { Button } from \"../ui/button\";\nimport { Modal, ModalBody, ModalContent, ModalFooter, ModalHeader, Popover, PopoverContent, PopoverTrigger } from \"../ui/overlay\";\nimport { isObj, pathKey } from \"../lib/path\";\nimport { isHidden, objectOpenMode, plainText, summarize } from \"../lib/schema\";\nimport { ArrayField, type NestedFormProps } from \"./array\";\nimport { ExpandAction, ExpandedField, expandKey, expandSpecFor, isExpandShortcut, openExpanded } from \"./expand\";\nimport { FieldShell } from \"./field-shell\";\nimport { FieldList } from \"./field-list\";\nimport { IssueDot, RowChrome } from \"./bits\";\nimport { FieldInset, FieldRun, groupSummary, useInsetDepth } from \"./grouping\";\nimport { SchemaForm } from \"./schema-form\";\nimport { SlotField } from \"./slot\";\nimport { JsonControl } from \"../controls/json\";\n\nexport interface KitFieldProps {\n field: FieldSchema;\n path: (string | number)[];\n parent?: Record<string, unknown>;\n}\n\n/** Type → control. Registered by the controls lane; a type with no entry edits its raw value (FallbackControl). */\nexport const CONTROLS: Partial<Record<SchemaType, ComponentType<ControlProps>>> = {};\n\n/**\n * Type → label-row action (DESIGN 4.4: slug Generate, rich text expand, table Edit in full screen), registered by the\n * controls lane next to its control. It gets the control's props. V2 draws it only while the field is editable, except\n * the types in ACTION_WHEN_READ_ONLY, whose action takes `readOnly` and decides for itself (slug Generate).\n */\nexport const ACTIONS: Partial<Record<SchemaType, ComponentType<ControlProps>>> = {};\nexport const ACTION_WHEN_READ_ONLY = new Set<SchemaType>([\"slug\"]);\n\n/** D58: the field for the lens: read-only (plain text) when it can't edit it. Hidden fields never reach here\n * (SchemaForm drops them from the schema). */\nexport function useFieldAccess(field: FieldSchema) {\n const env = useKitEnv();\n return { readOnly: resolveFieldAccess(field, env).readOnly };\n}\n\n/** CPO D39: the field's help line — schema text first, then a line computed from its settings, then the house convention. */\nexport function withDefaultHelp(field: FieldSchema, isPublished?: boolean, readOnly?: boolean): FieldSchema {\n let computed: string | undefined;\n /* a value set elsewhere says where, in one plain line (never a lock or a key) */\n if (readOnly && field.lockReason) return { ...field, description: field.lockReason.replace(/\\.?$/, \".\") };\n if (field.type === \"slug\" && isPublished === false) computed = \"Follows the title until you change it or publish.\";\n else if (field.type === \"number\" && !field.scale && field.layout !== \"slider\" && field.numeric?.unit) {\n /* D63: the unit sits in the input (\"/ 5\", \"min\"), so a line that only restates it or its range is noise. A range\n still earns a line when the unit does not already say it (\"Between 1 and 12 items.\"). */\n const { min, max, unit } = field.numeric;\n const said = unit.startsWith(\"/\") || (max != null && unit.includes(String(max)));\n computed = said || (min == null && max == null) ? \"\" : min != null && max != null ? `Between ${min} and ${max} ${unit}.` : min != null ? `${min} ${unit} or more.` : `Up to ${max} ${unit}.`;\n } else if (field.type === \"number\" && !field.scale && field.layout !== \"slider\" && (field.numeric?.min != null || field.numeric?.max != null)) {\n const { min, max } = field.numeric ?? {};\n computed = min != null && max != null ? `Between ${min} and ${max}.` : min != null ? `${min} or more.` : `Up to ${max}.`;\n }\n /* resolve here so the computed line wins over the house convention; \"\" survives as \"deliberately none\" */\n const help = resolveHelp(field, computed) ?? \"\";\n return help === field.description ? field : { ...field, description: help };\n}\n\nexport function KitField({ field, path, parent }: KitFieldProps) {\n const form = useForm();\n const env = useKitEnv();\n const id = React.useId();\n const { readOnly } = useFieldAccess(field);\n if (!form) return null;\n\n if (field.type === \"array\") return <ArrayField field={field} path={path} parent={parent} />;\n if (field.type === \"slot\") return <SlotField field={field} path={path} />;\n if (field.type === \"object\") return <ObjectField field={field} path={path} />;\n\n const key = pathKey(path);\n const value = form.getAt(path);\n const onChange = (v: unknown) => form.setAt(path, v);\n const onBlur = () => form.touch(key);\n const issue = form.visibleIssue(key);\n const Control = CONTROLS[field.type] ?? FallbackControl;\n const Action = ACTIONS[field.type];\n const f = withDefaultHelp(field, env.isPublished, readOnly);\n const plain = readOnly && PLAIN_TYPES.has(field.type as PrimitiveType);\n const card = field.type === \"boolean\" && field.layout !== \"checkbox\";\n /* D49: rich text, code and tables open the shared expanded editor (expand.tsx). A lane that registers its\n own ACTIONS[type] owns its expansion too (rich text's editor modal, the table's spreadsheet): the engine draws no\n second modal and binds no second ⌘↵ for it. */\n const expand = plain || Action ? null : expandSpecFor(field, { readOnly, hasKitControl: !!CONTROLS[field.type], variant: env.variant });\n const action =\n Action && (!readOnly || ACTION_WHEN_READ_ONLY.has(field.type)) ? (\n <Action field={f} value={value} onChange={onChange} id={id} readOnly={readOnly} path={path} parent={parent} />\n ) : expand ? (\n <ExpandAction field={f} path={path} spec={expand} />\n ) : undefined;\n return (\n <FieldShell field={f} path={path} id={id} value={value} onChange={onChange} readOnly={readOnly} issue={issue} layout={card ? \"card\" : \"stack\"} action={action}>\n {plain ? (\n card ? null /* the switch card already reads On / Off */ : <PlainValue field={f} value={value} id={id} />\n ) : (\n <div\n onBlur={onBlur}\n onKeyDown={\n expand\n ? (e) => {\n if (!isExpandShortcut(e)) return;\n e.preventDefault();\n openExpanded(expandKey(env.docId, path));\n }\n : undefined\n }\n className=\"min-w-0\"\n >\n <Control field={f} value={value} onChange={onChange} id={id} invalid={issue?.level === \"error\"} readOnly={readOnly} path={path} parent={parent} onBlur={onBlur} />\n </div>\n )}\n {expand ? (\n <ExpandedField field={f} path={path} spec={expand} Control={Control} value={value} onChange={onChange} onBlur={onBlur} invalid={issue?.level === \"error\"} id={id} parent={parent} />\n ) : null}\n </FieldShell>\n );\n}\n\n/**\n * A row that opens something (V2 NavRow): type tile, title over a summary line, the field's chrome (from RowChrome),\n * the issue rollup and a chevron.\n * Like V2 it always draws its button and chevron, also with no `onClick` (a popover trigger around it opens on the\n * click). Only `inert` (the form draws no frames, so nothing can open) leaves both out.\n */\nexport function NavRow({\n icon,\n title,\n subtitle,\n path,\n onClick,\n inert,\n className,\n trailing,\n}: {\n icon?: string;\n title: string;\n subtitle?: string;\n path?: FieldPath;\n onClick?: () => void;\n inert?: boolean;\n className?: string;\n trailing?: React.ReactNode;\n}) {\n const form = useForm();\n const roll = path && form ? form.rollup(path) : { errors: 0, warnings: 0 };\n const subId = React.useId();\n const chrome = React.useContext(RowChrome);\n const text = (\n <>\n <span className=\"block truncate text-kit-sm text-kit-fg\">{title}</span>\n <span id={subId} className=\"block truncate text-kit-xs text-kit-fg-3\">\n {subtitle || \"Nothing set yet\"}\n </span>\n </>\n );\n return (\n <div\n className={cn(\n \"group/nav relative flex min-h-11 w-full min-w-0 items-center gap-2.5 rounded-kit-lg border border-kit-line bg-kit-control-bg py-1.5 pl-2 pr-2 text-left transition-colors hover:border-kit-line-strong hover:bg-kit-subtle\",\n className,\n )}\n >\n <span className=\"flex size-7 shrink-0 items-center justify-center rounded-kit-md bg-kit-muted text-kit-fg-2\">\n <KitIcon name={icon} fallback=\"folder\" className=\"size-4\" />\n </span>\n {!inert ? (\n <button\n type=\"button\"\n data-nav-main\n onClick={onClick}\n aria-label={`Open ${title}${roll.errors ? `, ${roll.errors} ${roll.errors === 1 ? \"issue\" : \"issues\"}` : \"\"}`}\n aria-describedby={subId}\n className=\"min-w-0 flex-1 text-left outline-none after:absolute after:inset-0 after:rounded-kit-lg after:content-[''] focus-visible:after:outline-2 focus-visible:after:outline-offset-2 focus-visible:after:outline-kit-focus-ring focus-visible:after:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:after:outline-none\"\n >\n {text}\n </button>\n ) : (\n <div data-nav-main className=\"min-w-0 flex-1 text-left\">\n {text}\n </div>\n )}\n <IssueDot errors={roll.errors} warnings={roll.warnings} className=\"relative\" />\n {chrome ? <span className=\"relative z-[1] flex shrink-0 items-center gap-0.5 empty:hidden\">{chrome}</span> : null}\n {trailing}\n {!inert ? <IconChevronRight aria-hidden className=\"pointer-events-none size-4 shrink-0 text-kit-fg-3 transition-transform group-hover/nav:translate-x-0.5\" stroke={1.5} /> : null}\n </div>\n );\n}\n\n/* ── Object: inline · drill · popover · dialog (V2 ObjectField) ───── */\n\nfunction ObjectField({ field, path }: { field: FieldSchema; path: FieldPath }) {\n const form = useForm()!;\n const id = React.useId();\n const { readOnly } = useFieldAccess(field);\n const depth = useInsetDepth();\n const value = form.getAt(path);\n const obj = isObj(value) ? value : {};\n const fields = field.fields ?? [];\n /* D45 nesting rule: one container per level. Inside an inset (or an expanded row) an \"inline\" object would be a box in a\n box, so it drills instead — level 3+ is always a new frame, never more indentation. */\n const wanted = objectOpenMode(field);\n const mode = wanted === \"inline\" && depth > 0 ? \"drill\" : wanted;\n const [open, setOpen] = React.useState(false);\n const sum = groupSummary(fields, obj) || summarize(fields, obj);\n const nav = React.useRef<{ back: () => boolean }>(null);\n const shell = (control: React.ReactNode, layout?: \"row\") => (\n <FieldShell field={field} path={path} id={id} value={value} onChange={(v) => form.setAt(path, v)} readOnly={readOnly} issue={form.visibleIssue(pathKey(path))} layout={layout}>\n {control}\n </FieldShell>\n );\n if (mode === \"inline\") {\n const visible = fields.filter((f) => !isHidden(f, obj));\n /* D63: label, then the children behind one inset line; short neighbours pair up only on a wide form */\n return shell(\n <FieldInset label={field.title}>\n <FieldRun fields={visible} render={(f) => <KitField field={f} path={[...path, f.name]} parent={obj} />} />\n </FieldInset>,\n );\n }\n const help = resolveHelp(field) ?? \"\";\n if (mode === \"popover\")\n /* V2: Radix <PopoverTrigger asChild><div> — the whole row is the trigger (aria-expanded, aria-haspopup=\"dialog\");\n NavRow gets no onClick but still draws its button (\"Open <title>\") and chevron, whose click opens the popover. */\n return shell(\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger nativeButton={false} render={<div />}>\n <NavRow icon={field.icon} title={field.title} subtitle={sum || help} path={path} />\n </PopoverTrigger>\n <PopoverContent className=\"w-[340px] p-3\" align=\"start\">\n <FieldList fields={fields} basePath={path} memoryKey={`pop:${pathKey(path)}`} />\n </PopoverContent>\n </Popover>,\n \"row\",\n );\n if (mode === \"dialog\")\n return shell(\n <>\n <NavRow icon={field.icon} title={field.title} subtitle={sum || help} path={path} onClick={() => setOpen(true)} />\n <Modal\n open={open}\n onOpenChange={(o, d) => {\n // Escape steps back inside the dialog's own frames first (V2: onEscapeKeyDown + nav.back())\n if (!o && d.reason === \"escape-key\" && nav.current?.back()) return d.cancel();\n setOpen(o);\n }}\n >\n <ModalContent size=\"lg\">\n <ModalHeader title={field.title} description={field.description} icon={<KitIcon name={field.icon} fallback=\"folder\" />} />\n <ModalBody className=\"flex min-h-[320px] flex-col gap-5\">\n <NestedForm fields={fields} title={field.title} icon={field.icon} path={path} navRef={nav} />\n </ModalBody>\n <ModalFooter>\n <span className=\"mr-auto text-kit-xs text-kit-fg-3\">Changes save as you type</span>\n <Button variant=\"primary\" onClick={() => setOpen(false)}>\n Done\n </Button>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>,\n \"row\",\n );\n return shell(<NavRow icon={field.icon} title={field.title} subtitle={sum || help} path={path} onClick={() => form.navigate(path)} inert={!form.canNavigate} />, \"row\");\n}\n\n/**\n * A dialog gets its OWN navigation stack: lists inside it drill inside the dialog (breadcrumb, Esc, stepper), never the\n * panel behind. Writes go straight into the parent form at `path`.\n */\nexport function NestedForm({ fields, title, icon, path, navRef }: NestedFormProps) {\n const form = useForm()!;\n const env = useKitEnv();\n const key = pathKey(path);\n const schema = React.useMemo(() => ({ name: key || \"nested\", title, icon, kind: \"object\" as const, fields }), [key, title, icon, fields]);\n const raw = form.getAt(path);\n const pub = form.hasPublished ? form.publishedAt(path) : undefined;\n const presence = React.useMemo(() => {\n const out: Record<string, KitPeer[]> = {};\n for (const [k, v] of Object.entries(env.presence)) if (k.startsWith(`${key}.`)) out[k.slice(key.length + 1)] = v;\n return out;\n }, [env.presence, key]);\n return (\n <SchemaForm\n schema={schema}\n value={isObj(raw) ? raw : {}}\n onChange={(v) => form.setAt(path, v)}\n variant=\"document\"\n scroll={false}\n navRef={navRef}\n resolveSchema={form.resolveSchema}\n blockLibrary={form.blockLibrary}\n published={isObj(pub) ? pub : undefined}\n presence={presence}\n readOnly={env.readOnly}\n showErrors={form.showAllErrors}\n onOpenReference={env.onOpenReference}\n env={{ docId: `${env.docId}:${key}`, docTitle: env.docTitle, urlPrefix: env.urlPrefix, isPublished: env.isPublished, palette: env.palette, helpDisplay: env.helpDisplay }}\n />\n );\n}\n\n/* ── Read-only as plain text (D58 §0): no greyed input, just the value ── */\nconst PLAIN_TYPES = new Set<PrimitiveType>([\"string\", \"text\", \"richtext\", \"number\", \"slug\", \"url\", \"email\", \"date\", \"datetime\", \"select\", \"multiselect\", \"tags\", \"boolean\", \"rating\"]);\nexport function plainOf(field: FieldSchema, value: unknown): string {\n if (value == null || value === \"\") return \"\";\n const label = (v: unknown) => field.options?.find((o) => o.value === v)?.label ?? String(v);\n if (field.type === \"boolean\") return value ? \"On\" : \"Off\";\n if (field.type === \"select\") return label(value);\n // before the list arm: stored rich text may be a Portable Text block array\n if (field.type === \"richtext\") return plainText(value);\n if (Array.isArray(value)) return value.map(label).join(\", \");\n if (field.type === \"date\" || field.type === \"datetime\") {\n const d = new Date(String(value).replace(/\\[.*\\]$/, \"\"));\n return Number.isNaN(+d) ? String(value) : d.toLocaleString(\"en-US\", field.type === \"date\" ? { month: \"short\", day: \"numeric\", year: \"numeric\" } : { month: \"short\", day: \"numeric\", year: \"numeric\", hour: \"numeric\", minute: \"2-digit\" });\n }\n if (field.type === \"number\" && isObj(value)) return String((value as { value?: unknown }).value ?? \"\");\n return typeof value === \"object\" ? \"\" : String(value);\n}\nfunction PlainValue({ field, value, id }: { field: FieldSchema; value: unknown; id: string }) {\n const text = plainOf(field, value);\n return (\n <p id={id} tabIndex={0} data-slot=\"kit-plain\" className={cn(\"min-w-0 whitespace-pre-wrap break-words text-kit-sm leading-6 text-kit-fg outline-none\", (field.type === \"slug\" || field.type === \"url\") && \"font-kit-mono text-kit-xs leading-6\")}>\n {text || <span className=\"text-kit-fg-3\">Empty</span>}\n </p>\n );\n}\n\n/* ── Unknown type: the raw value, in the JSON control ── */\n/**\n * Every SchemaType has a kit control (kit-field.test checks CONTROLS against the type list in schema/types.ts). A field\n * whose type is none of them edits its raw stored value in the JSON control, tagged `data-kit-fallback=\"<type>\"`: the\n * value is shown and kept, and an edit is written only once it parses.\n */\nexport function FallbackControl(props: ControlProps) {\n return (\n <div data-kit-fallback={props.field.type} className=\"min-w-0\">\n <JsonControl {...props} />\n </div>\n );\n}\n\n/* ── Hand-off: the host's own control for a value the kit refuses ── */\n/**\n * A control that cannot carry a stored value unchanged (rich text holding formatting its editor would drop) hands that\n * value to the host's control for the type (KitServices.LegacyControl: the dashboard's FieldRenderer arm), bare inside\n * the kit FieldShell, which owns the label and the help; the control names its reason above it. The box carries\n * `data-kit-legacy=\"<type>\"`, so the parity harness counts it (mismatch class `legacy-control`). A host with no legacy\n * service, or a control that throws while rendering, says why in words; the form around it keeps working.\n */\nexport function LegacyFallback(props: ControlProps) {\n const { LegacyControl } = useKitServices();\n const { field, id } = props;\n return (\n <div data-kit-legacy={field.type} className=\"min-w-0\">\n {LegacyControl ? (\n // keyed by the schema's content: a schema edit remounts the control (KitField hands over a fresh field object on\n // every render, so identity would remount on every keystroke). A value change retries in place (componentDidUpdate).\n <LegacyBoundary key={JSON.stringify(field)} field={field} id={id} value={props.value}>\n <LegacyControl {...props} />\n </LegacyBoundary>\n ) : (\n <LegacyRefusal id={id}>This view has no control for {field.type} fields.</LegacyRefusal>\n )}\n </div>\n );\n}\n\n/**\n * An `<output>`: a labelable element, so the FieldShell label's `for` lands on it, and focusable, so a keyboard user\n * reaches the reason. The neutral focus ring shows under keyboard modality only.\n */\nfunction LegacyRefusal({ id, children }: { id: string; children: React.ReactNode }) {\n return (\n <output\n id={id}\n role=\"note\"\n tabIndex={0}\n data-slot=\"kit-legacy-refusal\"\n className=\"block rounded-kit-sm text-kit-xs text-kit-fg-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-kit-focus-ring focus-visible:[outline-style:solid] [html[data-input-modality=pointer]_&]:focus-visible:outline-0\"\n >\n {children}\n </output>\n );\n}\n\n/** Retries the control once its field or value changes (a schema edit, a save from elsewhere, an undo). */\nclass LegacyBoundary extends React.Component<{ field: FieldSchema; id: string; value: unknown; children: React.ReactNode }, { reason: string | null }> {\n state = { reason: null as string | null };\n static getDerivedStateFromError(error: unknown) {\n return { reason: error instanceof Error ? error.message : String(error) };\n }\n componentDidUpdate(prev: { field: FieldSchema; value: unknown }) {\n if (this.state.reason === null) return;\n // by content: KitField hands over a fresh field object (withDefaultHelp) on every render\n if (prev.value !== this.props.value || JSON.stringify(prev.field) !== JSON.stringify(this.props.field)) this.setState({ reason: null });\n }\n render() {\n if (this.state.reason === null) return this.props.children;\n return (\n <LegacyRefusal id={this.props.id}>\n The {this.props.field.title} control could not load: {this.state.reason}\n </LegacyRefusal>\n );\n }\n}\n"],"mappings":"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"}
|