@bettercms-ai/kit 0.1.0 → 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,553 @@
|
|
|
1
|
+
import { BUTTON_SIZES, BUTTON_VARIANTS, DOCK_ICON_NAME_SET, LINK_RELS, LINK_VALUE_TYPES, VIDEO_VALUE_KEYS } from "./prod-types.js";
|
|
2
|
+
//#region src/kit/adapters/values.ts
|
|
3
|
+
var isObj = (v) => !!v && typeof v === "object" && !Array.isArray(v);
|
|
4
|
+
/** The keys only a button carries; a link field never stores them. */
|
|
5
|
+
var BUTTON_ONLY = [
|
|
6
|
+
"style",
|
|
7
|
+
"variant",
|
|
8
|
+
"size",
|
|
9
|
+
"arrow",
|
|
10
|
+
"icon",
|
|
11
|
+
"fullWidth"
|
|
12
|
+
];
|
|
13
|
+
var isScriptHref = (href) => /^(javascript|data|vbscript):/i.test(href.replace(/[\u0000- \u007F]/g, ""));
|
|
14
|
+
/**
|
|
15
|
+
* F1 stores the V2 link object as sent (link-value.ts: the kit's pageId, entryId, anchor, email, phone, label… are
|
|
16
|
+
* kept), plus `ref` for a page / entry link so delivery resolves it. A bare href string stays a string.
|
|
17
|
+
*/
|
|
18
|
+
function linkToProd(v) {
|
|
19
|
+
if (v == null) return {
|
|
20
|
+
value: null,
|
|
21
|
+
lost: []
|
|
22
|
+
};
|
|
23
|
+
if (typeof v === "string") return isScriptHref(v) ? {
|
|
24
|
+
value: null,
|
|
25
|
+
lost: [""]
|
|
26
|
+
} : {
|
|
27
|
+
value: v,
|
|
28
|
+
lost: []
|
|
29
|
+
};
|
|
30
|
+
if (isScriptHref(v.href)) return {
|
|
31
|
+
value: null,
|
|
32
|
+
lost: [""]
|
|
33
|
+
};
|
|
34
|
+
const lost = [];
|
|
35
|
+
const out = {};
|
|
36
|
+
for (const [k, x] of Object.entries(v)) if (BUTTON_ONLY.includes(k)) lost.push(k);
|
|
37
|
+
else out[k] = x;
|
|
38
|
+
if (v.type !== void 0 && !LINK_VALUE_TYPES.includes(v.type)) {
|
|
39
|
+
lost.push("type");
|
|
40
|
+
delete out.type;
|
|
41
|
+
}
|
|
42
|
+
if (typeof v.newTab === "boolean" && v.target !== void 0 && v.newTab !== (v.target === "_blank")) {
|
|
43
|
+
lost.push("target");
|
|
44
|
+
delete out.target;
|
|
45
|
+
}
|
|
46
|
+
const ref = v.type === "page" ? v.pageId : v.type === "entry" ? v.entryId : void 0;
|
|
47
|
+
if (ref) out.ref = ref;
|
|
48
|
+
return {
|
|
49
|
+
value: out,
|
|
50
|
+
lost
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function linkFromProd(v) {
|
|
54
|
+
if (typeof v === "string") return v;
|
|
55
|
+
if (!isObj(v) || typeof v.href !== "string") return null;
|
|
56
|
+
const { ref, ...rest } = v;
|
|
57
|
+
const out = rest;
|
|
58
|
+
if (typeof ref === "string") {
|
|
59
|
+
if (out.type === "page" && out.pageId === void 0) out.pageId = ref;
|
|
60
|
+
if (out.type === "entry" && out.entryId === void 0) out.entryId = ref;
|
|
61
|
+
}
|
|
62
|
+
return out;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A V2 button is a link with a label and a look, flattened. Prod's ButtonValue reads `label`, `href` (string or link
|
|
66
|
+
* object), `variant`, `size`, `arrow`, `icon` (a dock icon name), `newTab`, `rel`; other keys are kept and ignored,
|
|
67
|
+
* so the link half (type, pageId, anchor…) rides along as sent. The look is written as `variant` (what renderers read).
|
|
68
|
+
*/
|
|
69
|
+
function buttonToProd(v) {
|
|
70
|
+
if (v == null) return {
|
|
71
|
+
value: null,
|
|
72
|
+
lost: []
|
|
73
|
+
};
|
|
74
|
+
if (typeof v.href === "string" && isScriptHref(v.href)) return {
|
|
75
|
+
value: null,
|
|
76
|
+
lost: [""]
|
|
77
|
+
};
|
|
78
|
+
const lost = [];
|
|
79
|
+
const out = { ...v };
|
|
80
|
+
const valid = (x) => typeof x === "string" && BUTTON_VARIANTS.includes(x);
|
|
81
|
+
const look = [v.variant, v.style].find(valid);
|
|
82
|
+
if (look !== void 0) out.variant = look;
|
|
83
|
+
else delete out.variant;
|
|
84
|
+
if (v.variant !== void 0 && !valid(v.variant)) lost.push("variant");
|
|
85
|
+
if (v.style !== void 0 && v.variant !== void 0 && v.style === v.variant) lost.push("variant");
|
|
86
|
+
if (v.size !== void 0 && !BUTTON_SIZES.includes(v.size)) {
|
|
87
|
+
lost.push("size");
|
|
88
|
+
delete out.size;
|
|
89
|
+
}
|
|
90
|
+
if (v.icon !== void 0 && !DOCK_ICON_NAME_SET.has(v.icon)) {
|
|
91
|
+
lost.push("icon");
|
|
92
|
+
delete out.icon;
|
|
93
|
+
}
|
|
94
|
+
if (v.rel !== void 0 && !LINK_RELS.includes(v.rel)) {
|
|
95
|
+
lost.push("rel");
|
|
96
|
+
delete out.rel;
|
|
97
|
+
}
|
|
98
|
+
if (typeof v.newTab === "boolean" && v.target !== void 0 && v.newTab !== (v.target === "_blank")) {
|
|
99
|
+
lost.push("target");
|
|
100
|
+
delete out.target;
|
|
101
|
+
}
|
|
102
|
+
if (v.fullWidth !== void 0 && typeof v.fullWidth !== "boolean") {
|
|
103
|
+
lost.push("fullWidth");
|
|
104
|
+
delete out.fullWidth;
|
|
105
|
+
}
|
|
106
|
+
if (typeof out.label !== "string") {
|
|
107
|
+
out.label = "";
|
|
108
|
+
lost.push("label");
|
|
109
|
+
}
|
|
110
|
+
if (typeof out.href !== "string") {
|
|
111
|
+
out.href = "";
|
|
112
|
+
lost.push("href");
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
value: out,
|
|
116
|
+
lost: [...new Set(lost)]
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
function buttonFromProd(v) {
|
|
120
|
+
if (!isObj(v)) return null;
|
|
121
|
+
const out = { ...v };
|
|
122
|
+
if (isObj(v.href)) {
|
|
123
|
+
const link = linkFromProd(v.href);
|
|
124
|
+
if (isObj(link)) Object.assign(out, link);
|
|
125
|
+
}
|
|
126
|
+
if (out.style !== void 0 && out.variant === out.style) delete out.variant;
|
|
127
|
+
if (out.icon === null) delete out.icon;
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
var ZONED = /^(.*)\[([^\]]+)\]$/;
|
|
131
|
+
var NO_SECONDS = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2})(Z|[+-]\d{2}:?\d{2})?$/;
|
|
132
|
+
var OFFSET = /(?:Z|[+-]\d{2}:?\d{2})$/;
|
|
133
|
+
/** A date is the same "YYYY-MM-DD" string on both sides. */
|
|
134
|
+
var dateToProd = (v) => ({
|
|
135
|
+
value: v ?? null,
|
|
136
|
+
lost: []
|
|
137
|
+
});
|
|
138
|
+
var dateFromProd = (v) => typeof v === "string" ? v : null;
|
|
139
|
+
/**
|
|
140
|
+
* V2 stores RFC 9557 (`2026-10-14T09:00:00+05:30[Asia/Kolkata]`). Prod keeps the ISO instant with seconds and its
|
|
141
|
+
* offset; a `[Zone]` suffix is checked and dropped on write. So the zone survives only as the field's own
|
|
142
|
+
* `config.timezone` when that names it (pass it as `zone`); otherwise it is lost.
|
|
143
|
+
*/
|
|
144
|
+
function datetimeToProd(v, opts = {}) {
|
|
145
|
+
if (v == null || v === "") return {
|
|
146
|
+
value: v ?? null,
|
|
147
|
+
lost: []
|
|
148
|
+
};
|
|
149
|
+
const lost = [];
|
|
150
|
+
const m = ZONED.exec(v);
|
|
151
|
+
let bare = m ? m[1] : v;
|
|
152
|
+
if (m && (m[2] !== opts.zone || !OFFSET.test(bare))) lost.push("zone");
|
|
153
|
+
const short = NO_SECONDS.exec(bare);
|
|
154
|
+
if (short) {
|
|
155
|
+
bare = `${short[1]}:00${short[2] ?? ""}`;
|
|
156
|
+
lost.push("format");
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
value: bare,
|
|
160
|
+
lost
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function datetimeFromProd(v, opts = {}) {
|
|
164
|
+
if (typeof v !== "string") return null;
|
|
165
|
+
const zone = opts.zone && opts.zone !== "site" ? opts.zone : void 0;
|
|
166
|
+
return zone && OFFSET.test(v) && !ZONED.test(v) ? `${v}[${zone}]` : v;
|
|
167
|
+
}
|
|
168
|
+
var CROPS = {
|
|
169
|
+
"16:9": 16 / 9,
|
|
170
|
+
"4:3": 4 / 3,
|
|
171
|
+
"1:1": 1,
|
|
172
|
+
"4:5": 4 / 5
|
|
173
|
+
};
|
|
174
|
+
var round = (n) => Math.round(n * 1e6) / 1e6;
|
|
175
|
+
var clamp01 = (n) => Math.min(1, Math.max(0, n));
|
|
176
|
+
/** A crop preset → the centred-on-focal rect prod stores. Needs the image's pixel size. */
|
|
177
|
+
function cropRect(crop, width, height, focal = {
|
|
178
|
+
x: 50,
|
|
179
|
+
y: 50
|
|
180
|
+
}) {
|
|
181
|
+
if (crop === "original" || !(width > 0 && height > 0)) return void 0;
|
|
182
|
+
const want = CROPS[crop];
|
|
183
|
+
const have = width / height;
|
|
184
|
+
const w = want < have ? want / have : 1;
|
|
185
|
+
const h = want < have ? 1 : have / want;
|
|
186
|
+
const left = clamp01(Math.min(1 - w, Math.max(0, focal.x / 100 - w / 2)));
|
|
187
|
+
const top = clamp01(Math.min(1 - h, Math.max(0, focal.y / 100 - h / 2)));
|
|
188
|
+
return {
|
|
189
|
+
top: round(top),
|
|
190
|
+
right: round(1 - left - w),
|
|
191
|
+
bottom: round(1 - top - h),
|
|
192
|
+
left: round(left)
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/** A stored rect → the preset whose aspect it cuts (within 1%), when the image's pixel size is known. */
|
|
196
|
+
function cropPreset(rect, width, height) {
|
|
197
|
+
const w = (1 - rect.left - rect.right) * width;
|
|
198
|
+
const h = (1 - rect.top - rect.bottom) * height;
|
|
199
|
+
if (!(w > 0 && h > 0)) return void 0;
|
|
200
|
+
const ratio = w / h;
|
|
201
|
+
return Object.entries(CROPS).find(([, r]) => Math.abs(ratio - r) / r < .01)?.[0];
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* The contract holds against `imageFromProd(value)` with no asset (how stored defaults are read): a crop rect needs the
|
|
205
|
+
* image's pixel size to read back as its preset, and width / height / size live on the asset, so all four are named in
|
|
206
|
+
* `lost`. Passing the asset to imageFromProd restores them.
|
|
207
|
+
*/
|
|
208
|
+
function imageToProd(v) {
|
|
209
|
+
if (v == null) return {
|
|
210
|
+
value: null,
|
|
211
|
+
lost: []
|
|
212
|
+
};
|
|
213
|
+
if (typeof v === "string") return {
|
|
214
|
+
value: v,
|
|
215
|
+
lost: []
|
|
216
|
+
};
|
|
217
|
+
const lost = [];
|
|
218
|
+
const out = { url: v.url };
|
|
219
|
+
if (v.id !== void 0) out.id = v.id;
|
|
220
|
+
if (v.name !== void 0) out.name = v.name;
|
|
221
|
+
if (v.alt !== void 0) out.altText = v.alt;
|
|
222
|
+
if (v.focal) out.focal = {
|
|
223
|
+
x: round(v.focal.x / 100),
|
|
224
|
+
y: round(v.focal.y / 100)
|
|
225
|
+
};
|
|
226
|
+
if (v.crop !== void 0 && v.crop !== "original") {
|
|
227
|
+
const rect = v.width && v.height ? cropRect(v.crop, v.width, v.height, v.focal) : void 0;
|
|
228
|
+
if (rect) out.crop = rect;
|
|
229
|
+
lost.push("crop");
|
|
230
|
+
} else if (v.crop === "original") lost.push("crop");
|
|
231
|
+
for (const k of [
|
|
232
|
+
"caption",
|
|
233
|
+
"width",
|
|
234
|
+
"height",
|
|
235
|
+
"size"
|
|
236
|
+
]) if (v[k] !== void 0) lost.push(k);
|
|
237
|
+
for (const k of Object.keys(v)) if (![
|
|
238
|
+
"url",
|
|
239
|
+
"id",
|
|
240
|
+
"name",
|
|
241
|
+
"alt",
|
|
242
|
+
"focal",
|
|
243
|
+
"crop",
|
|
244
|
+
"caption",
|
|
245
|
+
"width",
|
|
246
|
+
"height",
|
|
247
|
+
"size"
|
|
248
|
+
].includes(k)) lost.push(k);
|
|
249
|
+
return {
|
|
250
|
+
value: out,
|
|
251
|
+
lost
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
/** Pass the asset's pixel size to read a stored crop rect back as its preset and to restore width / height / size. */
|
|
255
|
+
function imageFromProd(v, asset = {}) {
|
|
256
|
+
if (typeof v === "string") return v;
|
|
257
|
+
if (!isObj(v) || typeof v.url !== "string") return null;
|
|
258
|
+
const p = v;
|
|
259
|
+
const out = { url: p.url };
|
|
260
|
+
if (p.id !== void 0) out.id = p.id;
|
|
261
|
+
if (p.name !== void 0) out.name = p.name;
|
|
262
|
+
if (p.altText !== void 0) out.alt = p.altText;
|
|
263
|
+
if (p.focal) out.focal = {
|
|
264
|
+
x: round(p.focal.x * 100),
|
|
265
|
+
y: round(p.focal.y * 100)
|
|
266
|
+
};
|
|
267
|
+
if (p.crop && asset.width && asset.height) {
|
|
268
|
+
const preset = cropPreset(p.crop, asset.width, asset.height);
|
|
269
|
+
if (preset) out.crop = preset;
|
|
270
|
+
}
|
|
271
|
+
if (asset.width !== void 0) out.width = asset.width;
|
|
272
|
+
if (asset.height !== void 0) out.height = asset.height;
|
|
273
|
+
if (asset.size !== void 0) out.size = asset.size;
|
|
274
|
+
return out;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* V2 stores the target id (`"en_12"`; a list for many). Prod stores the same id, or `{ entryId, modelSlug }` on a
|
|
278
|
+
* polymorphic field (pass `modelSlug`), or `{ formId }` on a component `form` prop (`to: "form"`).
|
|
279
|
+
*/
|
|
280
|
+
function referenceToProd(v, opts = {}) {
|
|
281
|
+
if (v == null || v === "") return {
|
|
282
|
+
value: null,
|
|
283
|
+
lost: []
|
|
284
|
+
};
|
|
285
|
+
if (Array.isArray(v)) return {
|
|
286
|
+
value: [...v],
|
|
287
|
+
lost: []
|
|
288
|
+
};
|
|
289
|
+
if (opts.to === "form") return {
|
|
290
|
+
value: { formId: v },
|
|
291
|
+
lost: []
|
|
292
|
+
};
|
|
293
|
+
if (opts.modelSlug) return {
|
|
294
|
+
value: {
|
|
295
|
+
entryId: v,
|
|
296
|
+
modelSlug: opts.modelSlug
|
|
297
|
+
},
|
|
298
|
+
lost: []
|
|
299
|
+
};
|
|
300
|
+
return {
|
|
301
|
+
value: v,
|
|
302
|
+
lost: []
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
var refId = (v) => typeof v === "string" ? v || null : isObj(v) ? typeof v.entryId === "string" && v.entryId || typeof v.formId === "string" && v.formId || null : null;
|
|
306
|
+
function referenceFromProd(v) {
|
|
307
|
+
if (Array.isArray(v)) return v.map(refId).filter((x) => !!x);
|
|
308
|
+
return refId(v);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Prod has no table type: the schema adapter stores a V2 table as a `json` field (named in the lossy ledger), and
|
|
312
|
+
* `json` keeps any JSON value, so the TableValue itself is stored verbatim (typed columns, groups, footer,
|
|
313
|
+
* footnotes, caption, design, jsonLd).
|
|
314
|
+
*/
|
|
315
|
+
function tableToProd(v) {
|
|
316
|
+
return {
|
|
317
|
+
value: v == null ? null : JSON.parse(JSON.stringify(v)),
|
|
318
|
+
lost: []
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
var tableFromProd = (v) => isObj(v) ? v : null;
|
|
322
|
+
var SCALE_UNITS = [
|
|
323
|
+
"px",
|
|
324
|
+
"%",
|
|
325
|
+
"rem",
|
|
326
|
+
"em",
|
|
327
|
+
"vw",
|
|
328
|
+
"vh"
|
|
329
|
+
];
|
|
330
|
+
/**
|
|
331
|
+
* Prod stores the three V2 scale shapes as they are (CPO D41, reference-validation.ts scaleValueProblem): a bare number,
|
|
332
|
+
* a token step's string, a custom `{ value, unit }`. Pass the field's scale: a token it does not list, or a custom value
|
|
333
|
+
* it does not allow (allowCustom off, a unit outside its units, past its bounds), is refused by the backend, so it is
|
|
334
|
+
* not written (`lost: [""]`). With no scale only a number is known to fit.
|
|
335
|
+
*/
|
|
336
|
+
function scaleToProd(v, scale) {
|
|
337
|
+
if (v == null) return {
|
|
338
|
+
value: null,
|
|
339
|
+
lost: []
|
|
340
|
+
};
|
|
341
|
+
if (typeof v === "number") return Number.isFinite(v) ? {
|
|
342
|
+
value: v,
|
|
343
|
+
lost: []
|
|
344
|
+
} : {
|
|
345
|
+
value: null,
|
|
346
|
+
lost: [""]
|
|
347
|
+
};
|
|
348
|
+
const refused = {
|
|
349
|
+
value: null,
|
|
350
|
+
lost: [""]
|
|
351
|
+
};
|
|
352
|
+
if (!scale) return refused;
|
|
353
|
+
if (typeof v === "string") return Array.isArray(scale.steps) && scale.steps.some((x) => x.value === v) ? {
|
|
354
|
+
value: v,
|
|
355
|
+
lost: []
|
|
356
|
+
} : refused;
|
|
357
|
+
if (!isObj(v) || !scale.allowCustom || typeof v.value !== "number" || !Number.isFinite(v.value) || Object.keys(v).some((k) => k !== "value" && k !== "unit")) return refused;
|
|
358
|
+
const custom = typeof scale.allowCustom === "object" ? scale.allowCustom : {};
|
|
359
|
+
if (!(custom.units ?? scale.units ?? SCALE_UNITS).includes(v.unit)) return refused;
|
|
360
|
+
const bound = (b) => typeof b === "number" ? b : b?.[v.unit];
|
|
361
|
+
const min = bound(custom.min);
|
|
362
|
+
const max = bound(custom.max);
|
|
363
|
+
if (min !== void 0 && v.value < min || max !== void 0 && v.value > max) return refused;
|
|
364
|
+
return {
|
|
365
|
+
value: {
|
|
366
|
+
value: v.value,
|
|
367
|
+
unit: v.unit
|
|
368
|
+
},
|
|
369
|
+
lost: []
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
function scaleFromProd(v) {
|
|
373
|
+
if (typeof v === "number") return Number.isFinite(v) ? v : null;
|
|
374
|
+
if (typeof v === "string") return v;
|
|
375
|
+
if (isObj(v) && typeof v.value === "number" && typeof v.unit === "string" && SCALE_UNITS.includes(v.unit)) return {
|
|
376
|
+
value: v.value,
|
|
377
|
+
unit: v.unit
|
|
378
|
+
};
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
381
|
+
/** An http(s) URL or a site path; "" is an unset one (video-value.ts isVideoUrl). */
|
|
382
|
+
var isVideoUrl = (s) => s === "" || /^https?:\/\/[^\s]+$/i.test(s.trim()) || /^\/(?!\/)\S*$/.test(s.trim());
|
|
383
|
+
/**
|
|
384
|
+
* The V2 video value and prod's are the same shape: a URL string, or `{ url, poster?, autoplay?, loop?, transcript? }`
|
|
385
|
+
* (the video block's props). The backend refuses any other key, and a url or poster that is not an http(s) URL or a
|
|
386
|
+
* site path (video_value_invalid): another key is left out and named, a bad url refuses the value whole.
|
|
387
|
+
*/
|
|
388
|
+
function videoToProd(v) {
|
|
389
|
+
if (v == null) return {
|
|
390
|
+
value: null,
|
|
391
|
+
lost: []
|
|
392
|
+
};
|
|
393
|
+
if (typeof v === "string") return isVideoUrl(v) ? {
|
|
394
|
+
value: v,
|
|
395
|
+
lost: []
|
|
396
|
+
} : {
|
|
397
|
+
value: null,
|
|
398
|
+
lost: [""]
|
|
399
|
+
};
|
|
400
|
+
if (!isObj(v) || typeof v.url !== "string" || !isVideoUrl(v.url)) return {
|
|
401
|
+
value: null,
|
|
402
|
+
lost: [""]
|
|
403
|
+
};
|
|
404
|
+
const lost = [];
|
|
405
|
+
const out = {};
|
|
406
|
+
for (const [k, x] of Object.entries(v)) if (!VIDEO_VALUE_KEYS.includes(k) ? false : k === "url" ? true : k === "poster" ? typeof x === "string" && isVideoUrl(x) : k === "transcript" ? typeof x === "string" && x.length <= 1e5 : typeof x === "boolean") out[k] = x;
|
|
407
|
+
else if (x !== void 0) lost.push(k);
|
|
408
|
+
return {
|
|
409
|
+
value: out,
|
|
410
|
+
lost
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
function videoFromProd(v) {
|
|
414
|
+
if (typeof v === "string") return v;
|
|
415
|
+
if (!isObj(v) || typeof v.url !== "string") return null;
|
|
416
|
+
return { ...v };
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* A V2 list of one primitive (`of: [{ type }]`) is a prod `array` with `config.itemType`, each item judged and normalized
|
|
420
|
+
* as a field of its type: an image item stores prod's image keys (altText, 0–1 focal), a link item its stored link. Scalar
|
|
421
|
+
* and rich text items pass as they are. `lost` names `<index>/<key>` (or `<index>` for a whole item) per item.
|
|
422
|
+
*/
|
|
423
|
+
function listToProd(v, itemType) {
|
|
424
|
+
if (v == null) return {
|
|
425
|
+
value: null,
|
|
426
|
+
lost: []
|
|
427
|
+
};
|
|
428
|
+
if (!Array.isArray(v)) return {
|
|
429
|
+
value: null,
|
|
430
|
+
lost: [""]
|
|
431
|
+
};
|
|
432
|
+
const lost = [];
|
|
433
|
+
const out = [];
|
|
434
|
+
v.forEach((x, i) => {
|
|
435
|
+
const r = itemType === "image" ? imageToProd(x) : itemType === "link" ? linkToProd(x) : {
|
|
436
|
+
value: x,
|
|
437
|
+
lost: []
|
|
438
|
+
};
|
|
439
|
+
for (const l of r.lost) lost.push(l ? `${i}/${l}` : String(i));
|
|
440
|
+
out.push(r.value);
|
|
441
|
+
});
|
|
442
|
+
return {
|
|
443
|
+
value: out,
|
|
444
|
+
lost
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
function listFromProd(v, itemType) {
|
|
448
|
+
if (!Array.isArray(v)) return [];
|
|
449
|
+
return itemType === "image" ? v.map((x) => imageFromProd(x)) : itemType === "link" ? v.map((x) => linkFromProd(x)) : [...v];
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* The backend judges tags trimmed and case-insensitively (reference-validation.ts tagsValueProblem): a field write
|
|
453
|
+
* trims and de-dupes, a prop value is refused (tags_value_invalid). So the value is written clean for both: trimmed,
|
|
454
|
+
* first spelling of a case-repeat kept, and an empty, over-long, off-list (`allowCustom: false`) or over-`max` tag left
|
|
455
|
+
* out. `lost` names each changed or dropped tag by its index in `v`.
|
|
456
|
+
*/
|
|
457
|
+
function tagsToProd(v, opts = {}) {
|
|
458
|
+
if (v == null) return {
|
|
459
|
+
value: null,
|
|
460
|
+
lost: []
|
|
461
|
+
};
|
|
462
|
+
const allowed = opts.allowCustom === false ? new Set((opts.options ?? []).map((o) => (typeof o === "string" ? o : o.value).trim().toLowerCase())) : void 0;
|
|
463
|
+
const out = [];
|
|
464
|
+
const seen = /* @__PURE__ */ new Set();
|
|
465
|
+
const lost = [];
|
|
466
|
+
v.forEach((x, i) => {
|
|
467
|
+
const t = typeof x === "string" ? x.trim() : "";
|
|
468
|
+
const folded = t.toLowerCase();
|
|
469
|
+
const keep = t !== "" && Array.from(t).length <= 64 && !seen.has(folded) && (!allowed || allowed.has(folded)) && (opts.max === void 0 || out.length < opts.max);
|
|
470
|
+
if (keep) {
|
|
471
|
+
seen.add(folded);
|
|
472
|
+
out.push(t);
|
|
473
|
+
}
|
|
474
|
+
if (!keep || t !== x) lost.push(String(i));
|
|
475
|
+
});
|
|
476
|
+
return {
|
|
477
|
+
value: out,
|
|
478
|
+
lost
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
var tagsFromProd = (v) => Array.isArray(v) ? v.filter((x) => typeof x === "string") : [];
|
|
482
|
+
/**
|
|
483
|
+
* A prod rating runs from config.min (0 unset) to config.max (5 unset) in steps of config.step (1 unset), and 0 is "not
|
|
484
|
+
* rated" on every scale (validation-parity.ts ratingScale / onRatingScale). V2's empty rating is null: it is written as
|
|
485
|
+
* null, and any other number off the scale is refused by the backend (rating_value_invalid), so it is not written either.
|
|
486
|
+
*/
|
|
487
|
+
function ratingToProd(v, opts = {}) {
|
|
488
|
+
if (v == null) return {
|
|
489
|
+
value: null,
|
|
490
|
+
lost: []
|
|
491
|
+
};
|
|
492
|
+
const min = opts.min ?? 0;
|
|
493
|
+
const max = opts.max ?? 5;
|
|
494
|
+
const step = opts.step ?? 1;
|
|
495
|
+
const steps = (v - min) / step;
|
|
496
|
+
return Number.isFinite(v) && v >= min && v <= max && Math.abs(steps - Math.round(steps)) < 1e-9 ? {
|
|
497
|
+
value: v,
|
|
498
|
+
lost: []
|
|
499
|
+
} : {
|
|
500
|
+
value: null,
|
|
501
|
+
lost: [""]
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
/** A stored number back; 0 on a scale that starts above it is prod's "not rated", which V2 holds as null. */
|
|
505
|
+
function ratingFromProd(v, opts = {}) {
|
|
506
|
+
if (typeof v !== "number" || !Number.isFinite(v)) return null;
|
|
507
|
+
return v === 0 && (opts.min ?? 0) > 0 ? null : v;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Prod stores a code value as a string, or `{ language?, code }` (no other key). A language outside the field's
|
|
511
|
+
* `config.languages` is refused by the backend (code_value_invalid), so it is left out and named; a value over
|
|
512
|
+
* CODE_MAX_LENGTH characters is refused whole.
|
|
513
|
+
*/
|
|
514
|
+
function codeToProd(v, opts = {}) {
|
|
515
|
+
if (v == null) return {
|
|
516
|
+
value: null,
|
|
517
|
+
lost: []
|
|
518
|
+
};
|
|
519
|
+
const code = typeof v === "string" ? v : v.code;
|
|
520
|
+
if (typeof code !== "string" || code.length > 1e5) return {
|
|
521
|
+
value: null,
|
|
522
|
+
lost: [""]
|
|
523
|
+
};
|
|
524
|
+
if (typeof v === "string") return {
|
|
525
|
+
value: v,
|
|
526
|
+
lost: []
|
|
527
|
+
};
|
|
528
|
+
const lost = Object.keys(v).filter((k) => k !== "code" && k !== "language");
|
|
529
|
+
const out = { code };
|
|
530
|
+
if (v.language !== void 0) if (typeof v.language === "string" && (!opts.languages || opts.languages.includes(v.language))) out.language = v.language;
|
|
531
|
+
else lost.push("language");
|
|
532
|
+
return {
|
|
533
|
+
value: out,
|
|
534
|
+
lost
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
function codeFromProd(v) {
|
|
538
|
+
if (typeof v === "string") return v;
|
|
539
|
+
if (!isObj(v) || typeof v.code !== "string") return null;
|
|
540
|
+
return typeof v.language === "string" ? {
|
|
541
|
+
language: v.language,
|
|
542
|
+
code: v.code
|
|
543
|
+
} : { code: v.code };
|
|
544
|
+
}
|
|
545
|
+
/** A V2 list of object items is stored by prod as the repeatable zone of its array: `{ repeatable: [...] }`. */
|
|
546
|
+
var zoneListToProd = (v) => ({ repeatable: v ? [...v] : [] });
|
|
547
|
+
var zoneListFromProd = (v) => isObj(v) && Array.isArray(v.repeatable) ? [...v.repeatable] : Array.isArray(v) ? [...v] : [];
|
|
548
|
+
/** A dock icon name passes through; anything else is not a prod icon. */
|
|
549
|
+
var isDockIcon = (v) => typeof v === "string" && DOCK_ICON_NAME_SET.has(v);
|
|
550
|
+
//#endregion
|
|
551
|
+
export { buttonFromProd, buttonToProd, codeFromProd, codeToProd, cropPreset, cropRect, dateFromProd, dateToProd, datetimeFromProd, datetimeToProd, imageFromProd, imageToProd, isDockIcon, linkFromProd, linkToProd, listFromProd, listToProd, ratingFromProd, ratingToProd, referenceFromProd, referenceToProd, scaleFromProd, scaleToProd, tableFromProd, tableToProd, tagsFromProd, tagsToProd, videoFromProd, videoToProd, zoneListFromProd, zoneListToProd };
|
|
552
|
+
|
|
553
|
+
//# sourceMappingURL=values.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"values.js","names":[],"sources":["../../src/kit/adapters/values.ts"],"sourcesContent":["/**\n * VALUE ADAPTERS — a V2 stored value ↔ the value production stores for the same field (Lane C map,\n * docs/design-system/v2-map/C-controls.md §2, updated for F1). Storage stays prod's: `*ToProd` returns what the\n * backend accepts, `*FromProd` the V2 shape the kit controls edit.\n *\n * Every `*ToProd` returns `{ value, lost }`. `lost` names the V2 keys prod cannot keep (relative to the value), so\n * `*FromProd(*ToProd(v).value)` equals `v` minus exactly those keys. Nothing is dropped without being named.\n */\nimport type { ScaleSchema, ScaleValue } from \"../schema/types\";\nimport type { TableValue } from \"../schema/table\";\nimport {\n BUTTON_SIZES,\n BUTTON_VARIANTS,\n CODE_MAX_LENGTH,\n DOCK_ICON_NAME_SET,\n LINK_RELS,\n LINK_VALUE_TYPES,\n RATING_DEFAULT_MAX,\n TAG_VALUE_MAX_LENGTH,\n VIDEO_TRANSCRIPT_MAX,\n VIDEO_VALUE_KEYS,\n type DockIconName,\n type ProdButtonValue,\n type ProdFormRef,\n type ProdImageCrop,\n type ProdImageValue,\n type ProdLinkValue,\n type ProdPolymorphicRef,\n type ProdVideoValue,\n type ScaleUnit,\n} from \"./prod-types\";\n\nexport interface ValueResult<T> {\n value: T;\n /** V2 keys (dotted, relative to the value) production cannot keep. */\n lost: string[];\n}\n\ntype Obj = Record<string, unknown>;\nconst isObj = (v: unknown): v is Obj => !!v && typeof v === \"object\" && !Array.isArray(v);\n\n/* ── V2 value shapes (DESIGN §6.7, §6.9; V2 HEAD controls/link.tsx, controls/media.tsx) ── */\nexport type V2LinkType = \"page\" | \"entry\" | \"url\" | \"section\" | \"email\" | \"phone\" | \"file\";\nexport type V2ButtonStyle = \"primary\" | \"secondary\" | \"outline\" | \"link\";\nexport interface V2LinkValue {\n type?: V2LinkType;\n href: string;\n label?: string;\n title?: string;\n pageId?: string;\n entryId?: string;\n anchor?: string;\n assetId?: string;\n email?: string;\n subject?: string;\n phone?: string;\n target?: \"_self\" | \"_blank\";\n newTab?: boolean;\n rel?: \"follow\" | \"nofollow\" | \"ugc\" | \"sponsored\";\n}\nexport interface V2ButtonValue extends V2LinkValue {\n style?: V2ButtonStyle;\n variant?: V2ButtonStyle;\n size?: \"sm\" | \"md\" | \"lg\";\n arrow?: boolean;\n icon?: string;\n fullWidth?: boolean;\n}\nexport type V2ImageCrop = \"original\" | \"16:9\" | \"4:3\" | \"1:1\" | \"4:5\";\nexport interface V2ImageValue {\n url: string;\n alt?: string;\n /** percent */\n focal?: { x: number; y: number };\n crop?: V2ImageCrop;\n caption?: string;\n name?: string;\n width?: number;\n height?: number;\n size?: number;\n id?: string;\n}\n\n/** The keys only a button carries; a link field never stores them. */\nconst BUTTON_ONLY = [\"style\", \"variant\", \"size\", \"arrow\", \"icon\", \"fullWidth\"] as const;\nconst isScriptHref = (href: string) => /^(javascript|data|vbscript):/i.test(href.replace(/[\\u0000- \\u007F]/g, \"\"));\n\n/* ── link ─────────────────────────────────────────────────────────────── */\n/**\n * F1 stores the V2 link object as sent (link-value.ts: the kit's pageId, entryId, anchor, email, phone, label… are\n * kept), plus `ref` for a page / entry link so delivery resolves it. A bare href string stays a string.\n */\nexport function linkToProd(v: V2LinkValue | string | null | undefined): ValueResult<ProdLinkValue | string | null> {\n if (v == null) return { value: null, lost: [] };\n if (typeof v === \"string\") return isScriptHref(v) ? { value: null, lost: [\"\"] } : { value: v, lost: [] };\n if (isScriptHref(v.href)) return { value: null, lost: [\"\"] };\n const lost: string[] = [];\n const out: Obj = {};\n for (const [k, x] of Object.entries(v)) {\n if ((BUTTON_ONLY as readonly string[]).includes(k)) lost.push(k);\n else out[k] = x;\n }\n if (v.type !== undefined && !(LINK_VALUE_TYPES as readonly string[]).includes(v.type)) {\n lost.push(\"type\");\n delete out.type;\n }\n // The backend refuses a target that disagrees with newTab; newTab is the one the kit reads.\n if (typeof v.newTab === \"boolean\" && v.target !== undefined && v.newTab !== (v.target === \"_blank\")) {\n lost.push(\"target\");\n delete out.target;\n }\n const ref = v.type === \"page\" ? v.pageId : v.type === \"entry\" ? v.entryId : undefined;\n if (ref) out.ref = ref;\n return { value: out as unknown as ProdLinkValue, lost };\n}\n\nexport function linkFromProd(v: unknown): V2LinkValue | string | null {\n if (typeof v === \"string\") return v;\n if (!isObj(v) || typeof v.href !== \"string\") return null;\n const { ref, ...rest } = v;\n const out = rest as unknown as V2LinkValue;\n // `ref` mirrors the kit's own id key; a ref with no twin (written by another client) becomes that key.\n if (typeof ref === \"string\") {\n if (out.type === \"page\" && out.pageId === undefined) out.pageId = ref;\n if (out.type === \"entry\" && out.entryId === undefined) out.entryId = ref;\n }\n return out;\n}\n\n/* ── button ───────────────────────────────────────────────────────────── */\n/**\n * A V2 button is a link with a label and a look, flattened. Prod's ButtonValue reads `label`, `href` (string or link\n * object), `variant`, `size`, `arrow`, `icon` (a dock icon name), `newTab`, `rel`; other keys are kept and ignored,\n * so the link half (type, pageId, anchor…) rides along as sent. The look is written as `variant` (what renderers read).\n */\nexport function buttonToProd(v: V2ButtonValue | null | undefined): ValueResult<ProdButtonValue | null> {\n if (v == null) return { value: null, lost: [] };\n if (typeof v.href === \"string\" && isScriptHref(v.href)) return { value: null, lost: [\"\"] };\n const lost: string[] = [];\n const out: Obj = { ...v };\n const valid = (x: unknown) => typeof x === \"string\" && (BUTTON_VARIANTS as readonly string[]).includes(x);\n // the first valid of variant, style is the look prod renders; an invalid variant never shadows a valid style\n const look = [v.variant, v.style].find(valid);\n if (look !== undefined) out.variant = look;\n else delete out.variant;\n if (v.variant !== undefined && !valid(v.variant)) lost.push(\"variant\");\n // Both set: the kit writes them in sync, prod keeps one look.\n if (v.style !== undefined && v.variant !== undefined && v.style === v.variant) lost.push(\"variant\");\n if (v.size !== undefined && !(BUTTON_SIZES as readonly string[]).includes(v.size)) {\n lost.push(\"size\");\n delete out.size;\n }\n if (v.icon !== undefined && !DOCK_ICON_NAME_SET.has(v.icon)) {\n lost.push(\"icon\");\n delete out.icon;\n }\n // A button's rel is one of nofollow / sponsored / ugc; \"follow\" is no rel at all.\n if (v.rel !== undefined && !(LINK_RELS as readonly string[]).includes(v.rel)) {\n lost.push(\"rel\");\n delete out.rel;\n }\n if (typeof v.newTab === \"boolean\" && v.target !== undefined && v.newTab !== (v.target === \"_blank\")) {\n lost.push(\"target\");\n delete out.target;\n }\n // fullWidth is true or false (the backend refuses anything else a write brings: button_full_width_invalid)\n if (v.fullWidth !== undefined && typeof v.fullWidth !== \"boolean\") {\n lost.push(\"fullWidth\");\n delete out.fullWidth;\n }\n // prod's ButtonValue requires both; a filled-in \"\" reads back where the kit had nothing, so it is named\n if (typeof out.label !== \"string\") {\n out.label = \"\";\n lost.push(\"label\");\n }\n if (typeof out.href !== \"string\") {\n out.href = \"\";\n lost.push(\"href\");\n }\n return { value: out as unknown as ProdButtonValue, lost: [...new Set(lost)] };\n}\n\nexport function buttonFromProd(v: unknown): V2ButtonValue | null {\n if (!isObj(v)) return null;\n const out: Obj = { ...v };\n if (isObj(v.href)) {\n // A link object in `href` (written by another client): flatten it the way the kit stores a button.\n const link = linkFromProd(v.href);\n if (isObj(link)) Object.assign(out, link);\n }\n if (out.style !== undefined && out.variant === out.style) delete out.variant;\n if (out.icon === null) delete out.icon;\n return out as unknown as V2ButtonValue;\n}\n\n/* ── date / datetime ──────────────────────────────────────────────────── */\nconst ZONED = /^(.*)\\[([^\\]]+)\\]$/;\nconst NO_SECONDS = /^(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2})(Z|[+-]\\d{2}:?\\d{2})?$/;\nconst OFFSET = /(?:Z|[+-]\\d{2}:?\\d{2})$/;\n\n/** A date is the same \"YYYY-MM-DD\" string on both sides. */\nexport const dateToProd = (v: string | null | undefined): ValueResult<string | null> => ({ value: v ?? null, lost: [] });\nexport const dateFromProd = (v: unknown): string | null => (typeof v === \"string\" ? v : null);\n\n/**\n * V2 stores RFC 9557 (`2026-10-14T09:00:00+05:30[Asia/Kolkata]`). Prod keeps the ISO instant with seconds and its\n * offset; a `[Zone]` suffix is checked and dropped on write. So the zone survives only as the field's own\n * `config.timezone` when that names it (pass it as `zone`); otherwise it is lost.\n */\nexport function datetimeToProd(v: string | null | undefined, opts: { zone?: string } = {}): ValueResult<string | null> {\n if (v == null || v === \"\") return { value: v ?? null, lost: [] };\n const lost: string[] = [];\n const m = ZONED.exec(v);\n let bare = m ? m[1] : v;\n // the zone reads back only from config.timezone, and only onto a value with an offset\n if (m && (m[2] !== opts.zone || !OFFSET.test(bare))) lost.push(\"zone\");\n const short = NO_SECONDS.exec(bare);\n if (short) {\n bare = `${short[1]}:00${short[2] ?? \"\"}`;\n lost.push(\"format\");\n }\n return { value: bare, lost };\n}\n\nexport function datetimeFromProd(v: unknown, opts: { zone?: string } = {}): string | null {\n if (typeof v !== \"string\") return null;\n const zone = opts.zone && opts.zone !== \"site\" ? opts.zone : undefined;\n return zone && OFFSET.test(v) && !ZONED.test(v) ? `${v}[${zone}]` : v;\n}\n\n/* ── image ────────────────────────────────────────────────────────────── */\nconst CROPS: Record<Exclude<V2ImageCrop, \"original\">, number> = { \"16:9\": 16 / 9, \"4:3\": 4 / 3, \"1:1\": 1, \"4:5\": 4 / 5 };\nconst round = (n: number) => Math.round(n * 1e6) / 1e6;\nconst clamp01 = (n: number) => Math.min(1, Math.max(0, n));\n\n/** A crop preset → the centred-on-focal rect prod stores. Needs the image's pixel size. */\nexport function cropRect(crop: V2ImageCrop, width: number, height: number, focal = { x: 50, y: 50 }): ProdImageCrop | undefined {\n if (crop === \"original\" || !(width > 0 && height > 0)) return undefined;\n const want = CROPS[crop];\n const have = width / height;\n const w = want < have ? want / have : 1;\n const h = want < have ? 1 : have / want;\n const left = clamp01(Math.min(1 - w, Math.max(0, focal.x / 100 - w / 2)));\n const top = clamp01(Math.min(1 - h, Math.max(0, focal.y / 100 - h / 2)));\n return { top: round(top), right: round(1 - left - w), bottom: round(1 - top - h), left: round(left) };\n}\n\n/** A stored rect → the preset whose aspect it cuts (within 1%), when the image's pixel size is known. */\nexport function cropPreset(rect: ProdImageCrop, width: number, height: number): V2ImageCrop | undefined {\n const w = (1 - rect.left - rect.right) * width;\n const h = (1 - rect.top - rect.bottom) * height;\n if (!(w > 0 && h > 0)) return undefined;\n const ratio = w / h;\n const hit = (Object.entries(CROPS) as [V2ImageCrop, number][]).find(([, r]) => Math.abs(ratio - r) / r < 0.01);\n return hit?.[0];\n}\n\n/** The asset facts an image value refers to but prod does not store in the value (width, height, size). */\nexport interface ImageAsset {\n width?: number;\n height?: number;\n size?: number;\n}\n\n/**\n * The contract holds against `imageFromProd(value)` with no asset (how stored defaults are read): a crop rect needs the\n * image's pixel size to read back as its preset, and width / height / size live on the asset, so all four are named in\n * `lost`. Passing the asset to imageFromProd restores them.\n */\nexport function imageToProd(v: V2ImageValue | string | null | undefined): ValueResult<ProdImageValue | string | null> {\n if (v == null) return { value: null, lost: [] };\n if (typeof v === \"string\") return { value: v, lost: [] };\n const lost: string[] = [];\n const out: ProdImageValue = { url: v.url };\n if (v.id !== undefined) out.id = v.id;\n if (v.name !== undefined) out.name = v.name;\n if (v.alt !== undefined) out.altText = v.alt;\n if (v.focal) out.focal = { x: round(v.focal.x / 100), y: round(v.focal.y / 100) };\n if (v.crop !== undefined && v.crop !== \"original\") {\n const rect = v.width && v.height ? cropRect(v.crop, v.width, v.height, v.focal) : undefined;\n if (rect) out.crop = rect;\n lost.push(\"crop\"); // written as a rect, it reads back as the preset only with the asset's size\n } else if (v.crop === \"original\") lost.push(\"crop\");\n // The normaliser rebuilds the value from these keys; the rest is the asset's (width, height, size) or has no home.\n for (const k of [\"caption\", \"width\", \"height\", \"size\"] as const) if (v[k] !== undefined) lost.push(k);\n for (const k of Object.keys(v)) if (![\"url\", \"id\", \"name\", \"alt\", \"focal\", \"crop\", \"caption\", \"width\", \"height\", \"size\"].includes(k)) lost.push(k);\n return { value: out, lost };\n}\n\n/** Pass the asset's pixel size to read a stored crop rect back as its preset and to restore width / height / size. */\nexport function imageFromProd(v: unknown, asset: ImageAsset = {}): V2ImageValue | string | null {\n if (typeof v === \"string\") return v;\n if (!isObj(v) || typeof v.url !== \"string\") return null;\n const p = v as unknown as ProdImageValue;\n const out: V2ImageValue = { url: p.url };\n if (p.id !== undefined) out.id = p.id;\n if (p.name !== undefined) out.name = p.name;\n if (p.altText !== undefined) out.alt = p.altText;\n if (p.focal) out.focal = { x: round(p.focal.x * 100), y: round(p.focal.y * 100) };\n if (p.crop && asset.width && asset.height) {\n const preset = cropPreset(p.crop, asset.width, asset.height);\n if (preset) out.crop = preset;\n }\n if (asset.width !== undefined) out.width = asset.width;\n if (asset.height !== undefined) out.height = asset.height;\n if (asset.size !== undefined) out.size = asset.size;\n return out;\n}\n\n/* ── reference ────────────────────────────────────────────────────────── */\n/**\n * V2 stores the target id (`\"en_12\"`; a list for many). Prod stores the same id, or `{ entryId, modelSlug }` on a\n * polymorphic field (pass `modelSlug`), or `{ formId }` on a component `form` prop (`to: \"form\"`).\n */\nexport function referenceToProd(\n v: string | string[] | null | undefined,\n opts: { to?: \"form\"; modelSlug?: string } = {},\n): ValueResult<string | string[] | ProdPolymorphicRef | ProdFormRef | null> {\n if (v == null || v === \"\") return { value: null, lost: [] };\n if (Array.isArray(v)) return { value: [...v], lost: [] };\n if (opts.to === \"form\") return { value: { formId: v }, lost: [] };\n if (opts.modelSlug) return { value: { entryId: v, modelSlug: opts.modelSlug }, lost: [] };\n return { value: v, lost: [] };\n}\n\nconst refId = (v: unknown): string | null =>\n typeof v === \"string\" ? v || null : isObj(v) ? ((typeof v.entryId === \"string\" && v.entryId) || (typeof v.formId === \"string\" && v.formId) || null) : null;\n\nexport function referenceFromProd(v: unknown): string | string[] | null {\n if (Array.isArray(v)) return v.map(refId).filter((x): x is string => !!x);\n return refId(v);\n}\n\n/* ── table ────────────────────────────────────────────────────────────── */\n/**\n * Prod has no table type: the schema adapter stores a V2 table as a `json` field (named in the lossy ledger), and\n * `json` keeps any JSON value, so the TableValue itself is stored verbatim (typed columns, groups, footer,\n * footnotes, caption, design, jsonLd).\n */\nexport function tableToProd(v: TableValue | null | undefined): ValueResult<TableValue | null> {\n return { value: v == null ? null : (JSON.parse(JSON.stringify(v)) as TableValue), lost: [] };\n}\nexport const tableFromProd = (v: unknown): TableValue | null => (isObj(v) ? (v as unknown as TableValue) : null);\n\n/* ── scale ────────────────────────────────────────────────────────────── */\nconst SCALE_UNITS: readonly ScaleUnit[] = [\"px\", \"%\", \"rem\", \"em\", \"vw\", \"vh\"];\n/**\n * Prod stores the three V2 scale shapes as they are (CPO D41, reference-validation.ts scaleValueProblem): a bare number,\n * a token step's string, a custom `{ value, unit }`. Pass the field's scale: a token it does not list, or a custom value\n * it does not allow (allowCustom off, a unit outside its units, past its bounds), is refused by the backend, so it is\n * not written (`lost: [\"\"]`). With no scale only a number is known to fit.\n */\nexport function scaleToProd(v: ScaleValue | null | undefined, scale?: ScaleSchema): ValueResult<ScaleValue | null> {\n if (v == null) return { value: null, lost: [] };\n if (typeof v === \"number\") return Number.isFinite(v) ? { value: v, lost: [] } : { value: null, lost: [\"\"] };\n const refused = { value: null, lost: [\"\"] };\n if (!scale) return refused;\n if (typeof v === \"string\") return Array.isArray(scale.steps) && scale.steps.some((x) => x.value === v) ? { value: v, lost: [] } : refused;\n if (!isObj(v) || !scale.allowCustom || typeof v.value !== \"number\" || !Number.isFinite(v.value) || Object.keys(v).some((k) => k !== \"value\" && k !== \"unit\")) return refused;\n const custom = typeof scale.allowCustom === \"object\" ? scale.allowCustom : {};\n const units = custom.units ?? scale.units ?? SCALE_UNITS;\n if (!units.includes(v.unit)) return refused;\n const bound = (b: number | Partial<Record<ScaleUnit, number>> | undefined) => (typeof b === \"number\" ? b : b?.[v.unit]);\n const min = bound(custom.min);\n const max = bound(custom.max);\n if ((min !== undefined && v.value < min) || (max !== undefined && v.value > max)) return refused;\n return { value: { value: v.value, unit: v.unit }, lost: [] };\n}\nexport function scaleFromProd(v: unknown): ScaleValue | null {\n if (typeof v === \"number\") return Number.isFinite(v) ? v : null;\n if (typeof v === \"string\") return v;\n if (isObj(v) && typeof v.value === \"number\" && typeof v.unit === \"string\" && (SCALE_UNITS as readonly string[]).includes(v.unit)) return { value: v.value, unit: v.unit as ScaleUnit };\n return null;\n}\n\n/* ── video ────────────────────────────────────────────────────────────── */\nexport type V2VideoValue = string | { url: string; poster?: string; autoplay?: boolean; loop?: boolean; transcript?: string };\n/** An http(s) URL or a site path; \"\" is an unset one (video-value.ts isVideoUrl). */\nconst isVideoUrl = (s: string) => s === \"\" || /^https?:\\/\\/[^\\s]+$/i.test(s.trim()) || /^\\/(?!\\/)\\S*$/.test(s.trim());\n/**\n * The V2 video value and prod's are the same shape: a URL string, or `{ url, poster?, autoplay?, loop?, transcript? }`\n * (the video block's props). The backend refuses any other key, and a url or poster that is not an http(s) URL or a\n * site path (video_value_invalid): another key is left out and named, a bad url refuses the value whole.\n */\nexport function videoToProd(v: V2VideoValue | null | undefined): ValueResult<ProdVideoValue | string | null> {\n if (v == null) return { value: null, lost: [] };\n if (typeof v === \"string\") return isVideoUrl(v) ? { value: v, lost: [] } : { value: null, lost: [\"\"] };\n if (!isObj(v) || typeof v.url !== \"string\" || !isVideoUrl(v.url)) return { value: null, lost: [\"\"] };\n const lost: string[] = [];\n const out: Obj = {};\n for (const [k, x] of Object.entries(v)) {\n const ok =\n !(VIDEO_VALUE_KEYS as readonly string[]).includes(k) ? false\n : k === \"url\" ? true\n : k === \"poster\" ? typeof x === \"string\" && isVideoUrl(x)\n : k === \"transcript\" ? typeof x === \"string\" && x.length <= VIDEO_TRANSCRIPT_MAX\n : typeof x === \"boolean\";\n if (ok) out[k] = x;\n else if (x !== undefined) lost.push(k);\n }\n return { value: out as unknown as ProdVideoValue, lost };\n}\nexport function videoFromProd(v: unknown): V2VideoValue | null {\n if (typeof v === \"string\") return v;\n if (!isObj(v) || typeof v.url !== \"string\") return null;\n return { ...v } as V2VideoValue;\n}\n\n/* ── primitive lists ──────────────────────────────────────────────────── */\nexport type ListItemType = \"text\" | \"number\" | \"date\" | \"image\" | \"link\" | \"richtext\";\n/**\n * A V2 list of one primitive (`of: [{ type }]`) is a prod `array` with `config.itemType`, each item judged and normalized\n * as a field of its type: an image item stores prod's image keys (altText, 0–1 focal), a link item its stored link. Scalar\n * and rich text items pass as they are. `lost` names `<index>/<key>` (or `<index>` for a whole item) per item.\n */\nexport function listToProd(v: unknown, itemType: ListItemType): ValueResult<unknown[] | null> {\n if (v == null) return { value: null, lost: [] };\n if (!Array.isArray(v)) return { value: null, lost: [\"\"] };\n const lost: string[] = [];\n const out: unknown[] = [];\n v.forEach((x, i) => {\n const r = itemType === \"image\" ? imageToProd(x as V2ImageValue) : itemType === \"link\" ? linkToProd(x as V2LinkValue) : { value: x, lost: [] };\n for (const l of r.lost) lost.push(l ? `${i}/${l}` : String(i));\n out.push(r.value);\n });\n return { value: out, lost };\n}\nexport function listFromProd(v: unknown, itemType: ListItemType): unknown[] {\n if (!Array.isArray(v)) return [];\n return itemType === \"image\" ? v.map((x) => imageFromProd(x)) : itemType === \"link\" ? v.map((x) => linkFromProd(x)) : [...v];\n}\n\n/* ── tags ─────────────────────────────────────────────────────────────── */\n/**\n * The backend judges tags trimmed and case-insensitively (reference-validation.ts tagsValueProblem): a field write\n * trims and de-dupes, a prop value is refused (tags_value_invalid). So the value is written clean for both: trimmed,\n * first spelling of a case-repeat kept, and an empty, over-long, off-list (`allowCustom: false`) or over-`max` tag left\n * out. `lost` names each changed or dropped tag by its index in `v`.\n */\nexport function tagsToProd(\n v: string[] | null | undefined,\n opts: { max?: number; allowCustom?: boolean; options?: (string | { value: string })[] } = {},\n): ValueResult<string[] | null> {\n if (v == null) return { value: null, lost: [] };\n const allowed = opts.allowCustom === false ? new Set((opts.options ?? []).map((o) => (typeof o === \"string\" ? o : o.value).trim().toLowerCase())) : undefined;\n const out: string[] = [];\n const seen = new Set<string>();\n const lost: string[] = [];\n v.forEach((x, i) => {\n const t = typeof x === \"string\" ? x.trim() : \"\";\n const folded = t.toLowerCase();\n const keep =\n t !== \"\" && Array.from(t).length <= TAG_VALUE_MAX_LENGTH && !seen.has(folded) && (!allowed || allowed.has(folded)) && (opts.max === undefined || out.length < opts.max);\n if (keep) {\n seen.add(folded);\n out.push(t);\n }\n if (!keep || t !== x) lost.push(String(i));\n });\n return { value: out, lost };\n}\nexport const tagsFromProd = (v: unknown): string[] => (Array.isArray(v) ? v.filter((x): x is string => typeof x === \"string\") : []);\n\n/* ── rating ───────────────────────────────────────────────────────────── */\nexport interface RatingScale {\n min?: number;\n max?: number;\n step?: number;\n}\n/**\n * A prod rating runs from config.min (0 unset) to config.max (5 unset) in steps of config.step (1 unset), and 0 is \"not\n * rated\" on every scale (validation-parity.ts ratingScale / onRatingScale). V2's empty rating is null: it is written as\n * null, and any other number off the scale is refused by the backend (rating_value_invalid), so it is not written either.\n */\nexport function ratingToProd(v: number | null | undefined, opts: RatingScale = {}): ValueResult<number | null> {\n if (v == null) return { value: null, lost: [] };\n const min = opts.min ?? 0;\n const max = opts.max ?? RATING_DEFAULT_MAX;\n const step = opts.step ?? 1;\n const steps = (v - min) / step;\n const ok = Number.isFinite(v) && v >= min && v <= max && Math.abs(steps - Math.round(steps)) < 1e-9;\n return ok ? { value: v, lost: [] } : { value: null, lost: [\"\"] };\n}\n/** A stored number back; 0 on a scale that starts above it is prod's \"not rated\", which V2 holds as null. */\nexport function ratingFromProd(v: unknown, opts: RatingScale = {}): number | null {\n if (typeof v !== \"number\" || !Number.isFinite(v)) return null;\n return v === 0 && (opts.min ?? 0) > 0 ? null : v;\n}\n\n/* ── code ─────────────────────────────────────────────────────────────── */\nexport type V2CodeValue = string | { language?: string; code: string };\n/**\n * Prod stores a code value as a string, or `{ language?, code }` (no other key). A language outside the field's\n * `config.languages` is refused by the backend (code_value_invalid), so it is left out and named; a value over\n * CODE_MAX_LENGTH characters is refused whole.\n */\nexport function codeToProd(v: V2CodeValue | null | undefined, opts: { languages?: string[] } = {}): ValueResult<V2CodeValue | null> {\n if (v == null) return { value: null, lost: [] };\n const code = typeof v === \"string\" ? v : v.code;\n if (typeof code !== \"string\" || code.length > CODE_MAX_LENGTH) return { value: null, lost: [\"\"] };\n if (typeof v === \"string\") return { value: v, lost: [] };\n const lost = Object.keys(v).filter((k) => k !== \"code\" && k !== \"language\");\n const out: { language?: string; code: string } = { code };\n if (v.language !== undefined) {\n if (typeof v.language === \"string\" && (!opts.languages || opts.languages.includes(v.language))) out.language = v.language;\n else lost.push(\"language\");\n }\n return { value: out, lost };\n}\nexport function codeFromProd(v: unknown): V2CodeValue | null {\n if (typeof v === \"string\") return v;\n if (!isObj(v) || typeof v.code !== \"string\") return null;\n return typeof v.language === \"string\" ? { language: v.language, code: v.code } : { code: v.code };\n}\n\n/* ── zoned arrays ─────────────────────────────────────────────────────── */\n/** A V2 list of object items is stored by prod as the repeatable zone of its array: `{ repeatable: [...] }`. */\nexport const zoneListToProd = (v: unknown[] | null | undefined): { repeatable: unknown[] } => ({ repeatable: v ? [...v] : [] });\nexport const zoneListFromProd = (v: unknown): unknown[] => (isObj(v) && Array.isArray(v.repeatable) ? [...v.repeatable] : Array.isArray(v) ? [...v] : []);\n\n/** A dock icon name passes through; anything else is not a prod icon. */\nexport const isDockIcon = (v: unknown): v is DockIconName => typeof v === \"string\" && DOCK_ICON_NAME_SET.has(v);\n"],"mappings":"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"}
|
package/brand/logo.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** boxicons:sparkle-circle-filled — path from public/brand/ai-sparkle-glyph.svg (viewBox 2 2 16 16). */
|
|
2
|
+
export declare const SPARKLE_PATH = "M9.4668 2.37243C9.64848 1.87586 10.351 1.87586 10.5326 2.37243L11.0754 3.85459C11.501 5.01732 12.1751 6.07325 13.0506 6.94879C13.9262 7.82432 14.9821 8.4984 16.1448 8.92405L17.627 9.4668C18.1243 9.64848 18.1243 10.351 17.627 10.5326L16.1448 11.0754C14.9821 11.501 13.9262 12.1751 13.0506 13.0506C12.1751 13.9262 11.501 14.9821 11.0754 16.1448L10.5326 17.627C10.351 18.1243 9.64848 18.1243 9.4668 17.627L8.92405 16.1448C8.4984 14.9821 7.82432 13.9262 6.94879 13.0506C6.07325 12.1751 5.01732 11.501 3.85459 11.0754L2.37243 10.5326C1.87586 10.351 1.87586 9.64848 2.37243 9.4668L3.85459 8.92405C5.01732 8.4984 6.07325 7.82432 6.94879 6.94879C7.82432 6.07325 8.4984 5.01732 8.92405 3.85459L9.4668 2.37243Z";
|
|
3
|
+
export declare const BRAND_STOPS: {
|
|
4
|
+
offset: number;
|
|
5
|
+
color: string;
|
|
6
|
+
}[];
|
|
7
|
+
/** The mark alone (square). */
|
|
8
|
+
export declare function LogoMark({ size, className }: {
|
|
9
|
+
size?: number;
|
|
10
|
+
className?: string;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
/** Full lockup: mark + "BetterCMS" wordmark. Height-driven (default 24px → 106px wide). */
|
|
13
|
+
export declare function Logo({ className, compact, height }: {
|
|
14
|
+
className?: string;
|
|
15
|
+
compact?: boolean;
|
|
16
|
+
height?: number;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
package/brand/logo.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "react";
|
|
2
|
+
import "react/jsx-runtime";
|
|
3
|
+
//#region src/kit/brand/logo.tsx
|
|
4
|
+
/** boxicons:sparkle-circle-filled — path from public/brand/ai-sparkle-glyph.svg (viewBox 2 2 16 16). */
|
|
5
|
+
var SPARKLE_PATH = "M9.4668 2.37243C9.64848 1.87586 10.351 1.87586 10.5326 2.37243L11.0754 3.85459C11.501 5.01732 12.1751 6.07325 13.0506 6.94879C13.9262 7.82432 14.9821 8.4984 16.1448 8.92405L17.627 9.4668C18.1243 9.64848 18.1243 10.351 17.627 10.5326L16.1448 11.0754C14.9821 11.501 13.9262 12.1751 13.0506 13.0506C12.1751 13.9262 11.501 14.9821 11.0754 16.1448L10.5326 17.627C10.351 18.1243 9.64848 18.1243 9.4668 17.627L8.92405 16.1448C8.4984 14.9821 7.82432 13.9262 6.94879 13.0506C6.07325 12.1751 5.01732 11.501 3.85459 11.0754L2.37243 10.5326C1.87586 10.351 1.87586 9.64848 2.37243 9.4668L3.85459 8.92405C5.01732 8.4984 6.07325 7.82432 6.94879 6.94879C7.82432 6.07325 8.4984 5.01732 8.92405 3.85459L9.4668 2.37243Z";
|
|
6
|
+
//#endregion
|
|
7
|
+
export { SPARKLE_PATH };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=logo.js.map
|