@bettercms-ai/kit 0.1.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_virtual/_rolldown/runtime.js +13 -0
- package/adapters/icons.d.ts +15 -0
- package/adapters/icons.js +27 -0
- package/adapters/icons.js.map +1 -0
- package/adapters/lossy.d.ts +267 -0
- package/adapters/lossy.js +233 -0
- package/adapters/lossy.js.map +1 -0
- package/adapters/prod-types.d.ts +468 -0
- package/adapters/prod-types.js +646 -0
- package/adapters/prod-types.js.map +1 -0
- package/adapters/schema.d.ts +115 -0
- package/adapters/schema.js +2203 -0
- package/adapters/schema.js.map +1 -0
- package/adapters/values.d.ts +200 -0
- package/adapters/values.js +553 -0
- package/adapters/values.js.map +1 -0
- package/brand/logo.d.ts +17 -0
- package/brand/logo.js +9 -0
- package/brand/logo.js.map +1 -0
- package/context.d.ts +269 -0
- package/context.js +214 -0
- package/context.js.map +1 -0
- package/controls/button.d.ts +58 -0
- package/controls/button.js +507 -0
- package/controls/button.js.map +1 -0
- package/controls/c1.d.ts +11 -0
- package/controls/c1.js +24 -0
- package/controls/c1.js.map +1 -0
- package/controls/c2.d.ts +10 -0
- package/controls/c2.js +19 -0
- package/controls/c2.js.map +1 -0
- package/controls/choice.d.ts +39 -0
- package/controls/choice.js +410 -0
- package/controls/choice.js.map +1 -0
- package/controls/code-register.d.ts +1 -0
- package/controls/code-register.js +8 -0
- package/controls/code-register.js.map +1 -0
- package/controls/code.d.ts +42 -0
- package/controls/code.js +396 -0
- package/controls/code.js.map +1 -0
- package/controls/color.d.ts +5 -0
- package/controls/color.js +130 -0
- package/controls/color.js.map +1 -0
- package/controls/component-services.d.ts +114 -0
- package/controls/date-register.d.ts +1 -0
- package/controls/date-register.js +9 -0
- package/controls/date-register.js.map +1 -0
- package/controls/date-zone.d.ts +104 -0
- package/controls/date-zone.js +272 -0
- package/controls/date-zone.js.map +1 -0
- package/controls/date.d.ts +7 -0
- package/controls/date.js +458 -0
- package/controls/date.js.map +1 -0
- package/controls/form-picker-register.d.ts +1 -0
- package/controls/form-picker-register.js +19 -0
- package/controls/form-picker-register.js.map +1 -0
- package/controls/form-picker.d.ts +43 -0
- package/controls/form-picker.js +83 -0
- package/controls/form-picker.js.map +1 -0
- package/controls/icon-register.d.ts +1 -0
- package/controls/icon-register.js +8 -0
- package/controls/icon-register.js.map +1 -0
- package/controls/icon.d.ts +38 -0
- package/controls/icon.js +355 -0
- package/controls/icon.js.map +1 -0
- package/controls/index.d.ts +5 -0
- package/controls/index.js +37 -0
- package/controls/index.js.map +1 -0
- package/controls/json-register.d.ts +1 -0
- package/controls/json-register.js +8 -0
- package/controls/json-register.js.map +1 -0
- package/controls/json.d.ts +2 -0
- package/controls/json.js +72 -0
- package/controls/json.js.map +1 -0
- package/controls/link.d.ts +260 -0
- package/controls/link.js +1186 -0
- package/controls/link.js.map +1 -0
- package/controls/location-register.d.ts +1 -0
- package/controls/location-register.js +8 -0
- package/controls/location-register.js.map +1 -0
- package/controls/location.d.ts +16 -0
- package/controls/location.js +197 -0
- package/controls/location.js.map +1 -0
- package/controls/media-register.d.ts +1 -0
- package/controls/media-register.js +12 -0
- package/controls/media-register.js.map +1 -0
- package/controls/media-services.d.ts +40 -0
- package/controls/media.d.ts +73 -0
- package/controls/media.js +1076 -0
- package/controls/media.js.map +1 -0
- package/controls/number.d.ts +22 -0
- package/controls/number.js +195 -0
- package/controls/number.js.map +1 -0
- package/controls/reference-register.d.ts +1 -0
- package/controls/reference-register.js +10 -0
- package/controls/reference-register.js.map +1 -0
- package/controls/reference-services.d.ts +54 -0
- package/controls/reference.d.ts +23 -0
- package/controls/reference.js +761 -0
- package/controls/reference.js.map +1 -0
- package/controls/rich-text/blocks.d.ts +28 -0
- package/controls/rich-text/blocks.js +1532 -0
- package/controls/rich-text/blocks.js.map +1 -0
- package/controls/rich-text/catalog.d.ts +98 -0
- package/controls/rich-text/catalog.js +613 -0
- package/controls/rich-text/catalog.js.map +1 -0
- package/controls/rich-text/codec.d.ts +56 -0
- package/controls/rich-text/codec.js +32 -0
- package/controls/rich-text/codec.js.map +1 -0
- package/controls/rich-text/component-card.d.ts +14 -0
- package/controls/rich-text/component-card.js +706 -0
- package/controls/rich-text/component-card.js.map +1 -0
- package/controls/rich-text/control.d.ts +21 -0
- package/controls/rich-text/control.js +254 -0
- package/controls/rich-text/control.js.map +1 -0
- package/controls/rich-text/dom.d.ts +190 -0
- package/controls/rich-text/dom.js +690 -0
- package/controls/rich-text/dom.js.map +1 -0
- package/controls/rich-text/editor.d.ts +50 -0
- package/controls/rich-text/editor.js +1530 -0
- package/controls/rich-text/editor.js.map +1 -0
- package/controls/rich-text/floating.d.ts +23 -0
- package/controls/rich-text/floating.js +137 -0
- package/controls/rich-text/floating.js.map +1 -0
- package/controls/rich-text/index.d.ts +1 -0
- package/controls/rich-text/index.js +12 -0
- package/controls/rich-text/index.js.map +1 -0
- package/controls/rich-text/link-form.d.ts +13 -0
- package/controls/rich-text/link-form.js +111 -0
- package/controls/rich-text/link-form.js.map +1 -0
- package/controls/rich-text/markdown.d.ts +6 -0
- package/controls/rich-text/markdown.js +179 -0
- package/controls/rich-text/markdown.js.map +1 -0
- package/controls/rich-text/ops.d.ts +35 -0
- package/controls/rich-text/ops.js +314 -0
- package/controls/rich-text/ops.js.map +1 -0
- package/controls/rich-text/toolbar.d.ts +85 -0
- package/controls/rich-text/toolbar.js +338 -0
- package/controls/rich-text/toolbar.js.map +1 -0
- package/controls/scale.d.ts +56 -0
- package/controls/scale.js +563 -0
- package/controls/scale.js.map +1 -0
- package/controls/slot-register.d.ts +1 -0
- package/controls/slot-register.js +16 -0
- package/controls/slot-register.js.map +1 -0
- package/controls/slot-services.d.ts +97 -0
- package/controls/slot-services.js +38 -0
- package/controls/slot-services.js.map +1 -0
- package/controls/slot.d.ts +33 -0
- package/controls/slot.js +348 -0
- package/controls/slot.js.map +1 -0
- package/controls/table/index.d.ts +1 -0
- package/controls/table/index.js +12 -0
- package/controls/table/index.js.map +1 -0
- package/controls/table/prod.d.ts +21 -0
- package/controls/table/prod.js +79 -0
- package/controls/table/prod.js.map +1 -0
- package/controls/table/refs.d.ts +50 -0
- package/controls/table/refs.js +68 -0
- package/controls/table/refs.js.map +1 -0
- package/controls/table/stored.d.ts +15 -0
- package/controls/table/stored.js +44 -0
- package/controls/table/stored.js.map +1 -0
- package/controls/table/table-editor.d.ts +103 -0
- package/controls/table/table-editor.js +2722 -0
- package/controls/table/table-editor.js.map +1 -0
- package/controls/table/table-link.d.ts +24 -0
- package/controls/table/table-link.js +180 -0
- package/controls/table/table-link.js.map +1 -0
- package/controls/table/table.d.ts +9 -0
- package/controls/table/table.js +103 -0
- package/controls/table/table.js.map +1 -0
- package/controls/text.d.ts +17 -0
- package/controls/text.js +287 -0
- package/controls/text.js.map +1 -0
- package/engine/array.d.ts +101 -0
- package/engine/array.js +893 -0
- package/engine/array.js.map +1 -0
- package/engine/bits.d.ts +24 -0
- package/engine/bits.js +60 -0
- package/engine/bits.js.map +1 -0
- package/engine/breadcrumb.d.ts +45 -0
- package/engine/breadcrumb.js +87 -0
- package/engine/breadcrumb.js.map +1 -0
- package/engine/expand.d.ts +68 -0
- package/engine/expand.js +170 -0
- package/engine/expand.js.map +1 -0
- package/engine/field-list.d.ts +20 -0
- package/engine/field-list.js +19 -0
- package/engine/field-list.js.map +1 -0
- package/engine/field-shell.d.ts +49 -0
- package/engine/field-shell.js +860 -0
- package/engine/field-shell.js.map +1 -0
- package/engine/frame.d.ts +120 -0
- package/engine/frame.js +599 -0
- package/engine/frame.js.map +1 -0
- package/engine/group-summary.d.ts +4 -0
- package/engine/group-summary.js +66 -0
- package/engine/group-summary.js.map +1 -0
- package/engine/grouping.d.ts +224 -0
- package/engine/grouping.js +824 -0
- package/engine/grouping.js.map +1 -0
- package/engine/item-list.d.ts +89 -0
- package/engine/item-list.js +703 -0
- package/engine/item-list.js.map +1 -0
- package/engine/kit-field.d.ts +72 -0
- package/engine/kit-field.js +523 -0
- package/engine/kit-field.js.map +1 -0
- package/engine/schema-form.d.ts +91 -0
- package/engine/schema-form.js +320 -0
- package/engine/schema-form.js.map +1 -0
- package/engine/slot.d.ts +13 -0
- package/engine/slot.js +226 -0
- package/engine/slot.js.map +1 -0
- package/index.d.ts +46 -0
- package/index.js +55 -0
- package/index.js.map +1 -0
- package/kit.css +56 -0
- package/lib/cn.d.ts +4 -0
- package/lib/cn.js +53 -0
- package/lib/cn.js.map +1 -0
- package/lib/columns.d.ts +14 -0
- package/lib/columns.js +27 -0
- package/lib/columns.js.map +1 -0
- package/lib/frames.d.ts +36 -0
- package/lib/frames.js +214 -0
- package/lib/frames.js.map +1 -0
- package/lib/icons.d.ts +16 -0
- package/lib/icons.js +172 -0
- package/lib/icons.js.map +1 -0
- package/lib/path.d.ts +29 -0
- package/lib/path.js +64 -0
- package/lib/path.js.map +1 -0
- package/lib/schema.d.ts +49 -0
- package/lib/schema.js +287 -0
- package/lib/schema.js.map +1 -0
- package/lib/utils.d.ts +7 -0
- package/lib/utils.js +37 -0
- package/lib/utils.js.map +1 -0
- package/lib/validate.d.ts +20 -0
- package/lib/validate.js +150 -0
- package/lib/validate.js.map +1 -0
- package/package.json +31 -59
- package/schema/adapters.d.ts +28 -0
- package/schema/adapters.js +493 -0
- package/schema/adapters.js.map +1 -0
- package/schema/help.d.ts +25 -0
- package/schema/help.js +54 -0
- package/schema/help.js.map +1 -0
- package/schema/scale.d.ts +69 -0
- package/schema/scale.js +250 -0
- package/schema/scale.js.map +1 -0
- package/schema/sources.d.ts +103 -0
- package/schema/sources.js +65 -0
- package/schema/sources.js.map +1 -0
- package/schema/table.d.ts +319 -0
- package/schema/table.js +1198 -0
- package/schema/table.js.map +1 -0
- package/schema/types.d.ts +269 -0
- package/schema/types.js +14 -0
- package/schema/types.js.map +1 -0
- package/types.d.ts +17 -0
- package/ui/action-tray.d.ts +54 -0
- package/ui/action-tray.js +153 -0
- package/ui/action-tray.js.map +1 -0
- package/ui/button.d.ts +57 -0
- package/ui/button.js +202 -0
- package/ui/button.js.map +1 -0
- package/ui/choice-switch.d.ts +36 -0
- package/ui/choice-switch.js +57 -0
- package/ui/choice-switch.js.map +1 -0
- package/ui/controls.d.ts +83 -0
- package/ui/controls.js +319 -0
- package/ui/controls.js.map +1 -0
- package/ui/display.d.ts +156 -0
- package/ui/display.js +444 -0
- package/ui/display.js.map +1 -0
- package/ui/expanded-editor-modal.d.ts +26 -0
- package/ui/expanded-editor-modal.js +140 -0
- package/ui/expanded-editor-modal.js.map +1 -0
- package/ui/field-context.d.ts +12 -0
- package/ui/field-context.js +23 -0
- package/ui/field-context.js.map +1 -0
- package/ui/floating-panel.d.ts +152 -0
- package/ui/floating-panel.js +912 -0
- package/ui/floating-panel.js.map +1 -0
- package/ui/index.d.ts +12 -0
- package/ui/index.js +13 -0
- package/ui/input.d.ts +78 -0
- package/ui/input.js +250 -0
- package/ui/input.js.map +1 -0
- package/ui/mode-bar.d.ts +31 -0
- package/ui/mode-bar.js +65 -0
- package/ui/mode-bar.js.map +1 -0
- package/ui/overlay.d.ts +123 -0
- package/ui/overlay.js +378 -0
- package/ui/overlay.js.map +1 -0
- package/ui/path-crumbs.d.ts +90 -0
- package/ui/path-crumbs.js +532 -0
- package/ui/path-crumbs.js.map +1 -0
- package/ui/presence.d.ts +16 -0
- package/ui/presence.js +65 -0
- package/ui/presence.js.map +1 -0
- package/ui/select.d.ts +66 -0
- package/ui/select.js +405 -0
- package/ui/select.js.map +1 -0
- package/ui/shortcut-hint.d.ts +14 -0
- package/ui/shortcut-hint.js +35 -0
- package/ui/shortcut-hint.js.map +1 -0
- package/ui/surfaces.d.ts +23 -0
- package/ui/surfaces.js +26 -0
- package/ui/surfaces.js.map +1 -0
- package/ui/tooltip-root.d.ts +12 -0
- package/ui/tooltip-root.js +76 -0
- package/ui/tooltip-root.js.map +1 -0
- package/ui/variants.d.ts +15 -0
- package/ui/variants.js +14 -0
- package/ui/variants.js.map +1 -0
- package/LICENSE +0 -21
- package/README.md +0 -27
- package/dist/_chunks-cjs/_visual-editing.js +0 -5898
- package/dist/_chunks-cjs/refractor.js +0 -22
- package/dist/_chunks-es/_visual-editing.mjs +0 -5904
- package/dist/_chunks-es/refractor.mjs +0 -25
- package/dist/_color.d.mts +0 -119
- package/dist/_color.d.ts +0 -119
- package/dist/_color.js +0 -1412
- package/dist/_color.mjs +0 -1411
- package/dist/_visual-editing.d.mts +0 -1126
- package/dist/_visual-editing.d.ts +0 -1126
- package/dist/_visual-editing.js +0 -30
- package/dist/_visual-editing.mjs +0 -30
- package/dist/index.d.mts +0 -3140
- package/dist/index.d.ts +0 -3140
- package/dist/index.js +0 -2036
- package/dist/index.mjs +0 -2044
- package/dist/theme.d.mts +0 -1506
- package/dist/theme.d.ts +0 -1506
- package/dist/theme.js +0 -4126
- package/dist/theme.mjs +0 -4126
- package/exports/_visual-editing.ts +0 -31
- package/exports/index.ts +0 -1
- package/exports/theme.ts +0 -1
- package/src/color/index.d.mts +0 -119
- package/src/color/index.mjs +0 -1411
- package/src/core/__workshop__/constants.ts +0 -293
- package/src/core/_compat.ts +0 -264
- package/src/core/components/autocomplete/__mocks__/apiStore.ts +0 -49
- package/src/core/components/autocomplete/__mocks__/countries.ts +0 -245
- package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -137
- package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -89
- package/src/core/components/autocomplete/__workshop__/example.tsx +0 -79
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -294
- package/src/core/components/autocomplete/__workshop__/index.ts +0 -39
- package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/core/components/autocomplete/autocomplete.styles.tsx +0 -39
- package/src/core/components/autocomplete/autocomplete.tsx +0 -767
- package/src/core/components/autocomplete/autocompleteOption.tsx +0 -45
- package/src/core/components/autocomplete/autocompleteReducer.ts +0 -47
- package/src/core/components/autocomplete/constants.ts +0 -28
- package/src/core/components/autocomplete/index.ts +0 -2
- package/src/core/components/autocomplete/types.ts +0 -108
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -62
- package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -14
- package/src/core/components/breadcrumbs/breadcrumbs.styles.ts +0 -18
- package/src/core/components/breadcrumbs/breadcrumbs.test.tsx +0 -51
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -133
- package/src/core/components/breadcrumbs/index.ts +0 -1
- package/src/core/components/dialog/__workshop__/activate.tsx +0 -134
- package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
- package/src/core/components/dialog/__workshop__/index.ts +0 -19
- package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
- package/src/core/components/dialog/__workshop__/nested.tsx +0 -72
- package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -39
- package/src/core/components/dialog/__workshop__/panes.tsx +0 -82
- package/src/core/components/dialog/__workshop__/position.tsx +0 -30
- package/src/core/components/dialog/__workshop__/props.tsx +0 -75
- package/src/core/components/dialog/__workshop__/provider.tsx +0 -11
- package/src/core/components/dialog/__workshop__/wrapped.tsx +0 -76
- package/src/core/components/dialog/dialog.tsx +0 -430
- package/src/core/components/dialog/dialogContext.ts +0 -20
- package/src/core/components/dialog/dialogProvider.tsx +0 -35
- package/src/core/components/dialog/index.ts +0 -4
- package/src/core/components/dialog/styles.ts +0 -77
- package/src/core/components/dialog/useDialog.ts +0 -11
- package/src/core/components/hotkeys/__workshop__/index.ts +0 -14
- package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
- package/src/core/components/hotkeys/hotkeys.test.tsx +0 -42
- package/src/core/components/hotkeys/hotkeys.tsx +0 -66
- package/src/core/components/hotkeys/index.ts +0 -1
- package/src/core/components/index.ts +0 -9
- package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
- package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -51
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -46
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -134
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
- package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -39
- package/src/core/components/menu/__workshop__/disableFocusOnClose.tsx +0 -40
- package/src/core/components/menu/__workshop__/groups.tsx +0 -156
- package/src/core/components/menu/__workshop__/index.ts +0 -89
- package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -58
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -41
- package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
- package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -47
- package/src/core/components/menu/__workshop__/tones.tsx +0 -25
- package/src/core/components/menu/__workshop__/withoutArrow.tsx +0 -32
- package/src/core/components/menu/helpers.ts +0 -82
- package/src/core/components/menu/index.ts +0 -5
- package/src/core/components/menu/menu.spacing.test.tsx +0 -63
- package/src/core/components/menu/menu.test.tsx +0 -125
- package/src/core/components/menu/menu.tsx +0 -178
- package/src/core/components/menu/menuButton.tsx +0 -268
- package/src/core/components/menu/menuContext.ts +0 -18
- package/src/core/components/menu/menuDivider.ts +0 -23
- package/src/core/components/menu/menuGroup.spacing.test.tsx +0 -63
- package/src/core/components/menu/menuGroup.tsx +0 -233
- package/src/core/components/menu/menuItem.spacing.test.tsx +0 -59
- package/src/core/components/menu/menuItem.tsx +0 -197
- package/src/core/components/menu/useMenu.ts +0 -21
- package/src/core/components/menu/useMenuController.ts +0 -231
- package/src/core/components/skeleton/__workshop__/delay.tsx +0 -70
- package/src/core/components/skeleton/__workshop__/index.ts +0 -11
- package/src/core/components/skeleton/__workshop__/skeleton.tsx +0 -64
- package/src/core/components/skeleton/index.ts +0 -2
- package/src/core/components/skeleton/skeleton.tsx +0 -57
- package/src/core/components/skeleton/styles.ts +0 -50
- package/src/core/components/skeleton/textSkeleton.tsx +0 -122
- package/src/core/components/tab/__workshop__/example.tsx +0 -79
- package/src/core/components/tab/__workshop__/index.ts +0 -14
- package/src/core/components/tab/index.ts +0 -3
- package/src/core/components/tab/tab.tsx +0 -101
- package/src/core/components/tab/tabList.test.tsx +0 -48
- package/src/core/components/tab/tabList.tsx +0 -70
- package/src/core/components/tab/tabPanel.tsx +0 -39
- package/src/core/components/toast/__workshop__/hook.tsx +0 -71
- package/src/core/components/toast/__workshop__/index.ts +0 -19
- package/src/core/components/toast/__workshop__/toast.tsx +0 -26
- package/src/core/components/toast/index.ts +0 -4
- package/src/core/components/toast/styles.ts +0 -77
- package/src/core/components/toast/toast.test.tsx +0 -101
- package/src/core/components/toast/toast.tsx +0 -198
- package/src/core/components/toast/toastContext.ts +0 -7
- package/src/core/components/toast/toastLayer.tsx +0 -51
- package/src/core/components/toast/toastProvider.tsx +0 -113
- package/src/core/components/toast/toastState.ts +0 -6
- package/src/core/components/toast/types.ts +0 -26
- package/src/core/components/toast/useToast.ts +0 -25
- package/src/core/components/tree/__workshop__/basic.perf.ts +0 -19
- package/src/core/components/tree/__workshop__/basic.tsx +0 -105
- package/src/core/components/tree/__workshop__/index.ts +0 -21
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
- package/src/core/components/tree/helpers.ts +0 -105
- package/src/core/components/tree/index.ts +0 -4
- package/src/core/components/tree/style.ts +0 -105
- package/src/core/components/tree/tree.test.tsx +0 -55
- package/src/core/components/tree/tree.tsx +0 -240
- package/src/core/components/tree/treeContext.ts +0 -10
- package/src/core/components/tree/treeGroup.tsx +0 -28
- package/src/core/components/tree/treeItem.test.tsx +0 -65
- package/src/core/components/tree/treeItem.tsx +0 -224
- package/src/core/components/tree/types.ts +0 -25
- package/src/core/components/tree/useTree.ts +0 -17
- package/src/core/constants.ts +0 -79
- package/src/core/helpers/animation.ts +0 -27
- package/src/core/helpers/element.ts +0 -55
- package/src/core/helpers/focus.ts +0 -100
- package/src/core/helpers/index.ts +0 -4
- package/src/core/helpers/scroll.ts +0 -15
- package/src/core/hooks/index.ts +0 -12
- package/src/core/hooks/useArrayProp.ts +0 -17
- package/src/core/hooks/useClickOutside.test.tsx +0 -482
- package/src/core/hooks/useClickOutside.ts +0 -118
- package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -115
- package/src/core/hooks/useClickOutsideEvent.ts +0 -73
- package/src/core/hooks/useCustomValidity.ts +0 -13
- package/src/core/hooks/useDelayed.test.ts +0 -88
- package/src/core/hooks/useDelayedState.ts +0 -36
- package/src/core/hooks/useElementRect/__workshop__/example.tsx +0 -32
- package/src/core/hooks/useElementRect/__workshop__/index.ts +0 -14
- package/src/core/hooks/useElementRect/index.ts +0 -1
- package/src/core/hooks/useElementRect/useElementRect.ts +0 -13
- package/src/core/hooks/useElementSize.ts +0 -19
- package/src/core/hooks/useForwardedRef.ts +0 -19
- package/src/core/hooks/useGlobalKeyDown.ts +0 -24
- package/src/core/hooks/useIsomorphicEffect.ts +0 -7
- package/src/core/hooks/useMatchMedia.ts +0 -28
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -14
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
- package/src/core/hooks/useMediaIndex/index.ts +0 -1
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -36
- package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -102
- package/src/core/hooks/useMounted.ts +0 -15
- package/src/core/hooks/usePrefersDark.hydration.test.tsx +0 -56
- package/src/core/hooks/usePrefersDark.test.tsx +0 -19
- package/src/core/hooks/usePrefersDark.ts +0 -16
- package/src/core/hooks/usePrefersReducedMotion.hydration.test.tsx +0 -56
- package/src/core/hooks/usePrefersReducedMotion.test.tsx +0 -19
- package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
- package/src/core/index.ts +0 -10
- package/src/core/lib/createGlobalScopedContext.ts +0 -36
- package/src/core/lib/globalScope.ts +0 -19
- package/src/core/lib/isRecord.ts +0 -3
- package/src/core/middleware/origin.ts +0 -47
- package/src/core/observers/elementSizeObserver.ts +0 -116
- package/src/core/observers/index.ts +0 -2
- package/src/core/observers/resizeObserver.ts +0 -9
- package/src/core/primitives/_selectable/index.ts +0 -1
- package/src/core/primitives/_selectable/selectable.tsx +0 -15
- package/src/core/primitives/_selectable/style.ts +0 -115
- package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/index.ts +0 -29
- package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -63
- package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -70
- package/src/core/primitives/avatar/avatar.tsx +0 -200
- package/src/core/primitives/avatar/avatarCounter.tsx +0 -91
- package/src/core/primitives/avatar/avatarStack.tsx +0 -100
- package/src/core/primitives/avatar/index.ts +0 -4
- package/src/core/primitives/avatar/styles.ts +0 -167
- package/src/core/primitives/avatar/types.ts +0 -17
- package/src/core/primitives/badge/__workshop__/index.ts +0 -19
- package/src/core/primitives/badge/__workshop__/props.tsx +0 -30
- package/src/core/primitives/badge/__workshop__/tones.tsx +0 -21
- package/src/core/primitives/badge/badge.test.tsx +0 -16
- package/src/core/primitives/badge/badge.tsx +0 -70
- package/src/core/primitives/badge/index.ts +0 -1
- package/src/core/primitives/badge/styles.ts +0 -20
- package/src/core/primitives/badge/types.ts +0 -8
- package/src/core/primitives/box/__workshop__/asComponent.tsx +0 -31
- package/src/core/primitives/box/__workshop__/index.ts +0 -24
- package/src/core/primitives/box/__workshop__/props.tsx +0 -20
- package/src/core/primitives/box/__workshop__/responsive.tsx +0 -20
- package/src/core/primitives/box/box.test.tsx +0 -142
- package/src/core/primitives/box/box.tsx +0 -154
- package/src/core/primitives/box/index.ts +0 -1
- package/src/core/primitives/button/__workshop__/custom.tsx +0 -51
- package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
- package/src/core/primitives/button/__workshop__/disabled.tsx +0 -74
- package/src/core/primitives/button/__workshop__/index.ts +0 -59
- package/src/core/primitives/button/__workshop__/labelUploadButton.tsx +0 -36
- package/src/core/primitives/button/__workshop__/mixedChildren.tsx +0 -12
- package/src/core/primitives/button/__workshop__/props.tsx +0 -55
- package/src/core/primitives/button/__workshop__/stacked.tsx +0 -58
- package/src/core/primitives/button/__workshop__/styled1.tsx +0 -17
- package/src/core/primitives/button/__workshop__/styled2.tsx +0 -19
- package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -28
- package/src/core/primitives/button/button.test.tsx +0 -82
- package/src/core/primitives/button/button.tsx +0 -210
- package/src/core/primitives/button/index.ts +0 -1
- package/src/core/primitives/button/styles.ts +0 -117
- package/src/core/primitives/card/__workshop__/allTones.tsx +0 -25
- package/src/core/primitives/card/__workshop__/asButton.tsx +0 -107
- package/src/core/primitives/card/__workshop__/asComponent.tsx +0 -27
- package/src/core/primitives/card/__workshop__/checkered.tsx +0 -26
- package/src/core/primitives/card/__workshop__/index.ts +0 -18
- package/src/core/primitives/card/__workshop__/interactive.tsx +0 -30
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -80
- package/src/core/primitives/card/__workshop__/props.tsx +0 -53
- package/src/core/primitives/card/__workshop__/selected.tsx +0 -94
- package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
- package/src/core/primitives/card/card.tsx +0 -128
- package/src/core/primitives/card/index.ts +0 -2
- package/src/core/primitives/card/styles.ts +0 -147
- package/src/core/primitives/card/types.ts +0 -11
- package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
- package/src/core/primitives/checkbox/__workshop__/index.ts +0 -13
- package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -33
- package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -28
- package/src/core/primitives/checkbox/checkbox.tsx +0 -73
- package/src/core/primitives/checkbox/index.ts +0 -1
- package/src/core/primitives/checkbox/styles.ts +0 -128
- package/src/core/primitives/code/__workshop__/index.ts +0 -19
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/code/__workshop__/props.tsx +0 -21
- package/src/core/primitives/code/code.tsx +0 -55
- package/src/core/primitives/code/index.ts +0 -1
- package/src/core/primitives/code/refractor.tsx +0 -20
- package/src/core/primitives/code/styles.ts +0 -77
- package/src/core/primitives/container/__workshop__/example.tsx +0 -20
- package/src/core/primitives/container/__workshop__/index.ts +0 -8
- package/src/core/primitives/container/container.tsx +0 -54
- package/src/core/primitives/container/index.ts +0 -2
- package/src/core/primitives/container/styles.ts +0 -23
- package/src/core/primitives/container/types.ts +0 -6
- package/src/core/primitives/flex/__workshop__/example.tsx +0 -34
- package/src/core/primitives/flex/__workshop__/gap.tsx +0 -25
- package/src/core/primitives/flex/__workshop__/index.ts +0 -11
- package/src/core/primitives/flex/flex.tsx +0 -64
- package/src/core/primitives/flex/index.ts +0 -1
- package/src/core/primitives/grid/__workshop__/index.ts +0 -10
- package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
- package/src/core/primitives/grid/grid.test.tsx +0 -80
- package/src/core/primitives/grid/grid.tsx +0 -74
- package/src/core/primitives/grid/index.ts +0 -1
- package/src/core/primitives/heading/__workshop__/index.ts +0 -19
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/heading/heading.tsx +0 -88
- package/src/core/primitives/heading/index.ts +0 -1
- package/src/core/primitives/heading/styles.ts +0 -64
- package/src/core/primitives/heading/types.ts +0 -7
- package/src/core/primitives/index.ts +0 -27
- package/src/core/primitives/inline/__workshop__/index.ts +0 -8
- package/src/core/primitives/inline/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/inline/index.ts +0 -1
- package/src/core/primitives/inline/inline.test.tsx +0 -51
- package/src/core/primitives/inline/inline.tsx +0 -63
- package/src/core/primitives/inline/styles.ts +0 -32
- package/src/core/primitives/inline/types.ts +0 -6
- package/src/core/primitives/kbd/__workshop__/index.ts +0 -8
- package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
- package/src/core/primitives/kbd/index.ts +0 -1
- package/src/core/primitives/kbd/kbd.tsx +0 -69
- package/src/core/primitives/label/__workshop__/index.ts +0 -19
- package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/label/__workshop__/plain.tsx +0 -24
- package/src/core/primitives/label/index.ts +0 -1
- package/src/core/primitives/label/label.tsx +0 -87
- package/src/core/primitives/label/styles.ts +0 -45
- package/src/core/primitives/popover/__workshop__/AlignedStory.tsx +0 -77
- package/src/core/primitives/popover/__workshop__/MarginsStory.tsx +0 -31
- package/src/core/primitives/popover/__workshop__/MatchReferenceWidthStory.tsx +0 -32
- package/src/core/primitives/popover/__workshop__/OpenOnMountStory.tsx +0 -11
- package/src/core/primitives/popover/__workshop__/PlainStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/RecursiveStory.tsx +0 -71
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -89
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -97
- package/src/core/primitives/popover/__workshop__/index.ts +0 -49
- package/src/core/primitives/popover/constants.ts +0 -22
- package/src/core/primitives/popover/floating-ui/size.ts +0 -99
- package/src/core/primitives/popover/helpers.ts +0 -31
- package/src/core/primitives/popover/index.ts +0 -2
- package/src/core/primitives/popover/popover.tsx +0 -511
- package/src/core/primitives/popover/popoverCard.tsx +0 -166
- package/src/core/primitives/popover/types.ts +0 -7
- package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
- package/src/core/primitives/radio/__workshop__/index.ts +0 -11
- package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/radio/index.ts +0 -1
- package/src/core/primitives/radio/radio.tsx +0 -51
- package/src/core/primitives/radio/styles.ts +0 -117
- package/src/core/primitives/select/__workshop__/index.ts +0 -11
- package/src/core/primitives/select/__workshop__/plain.tsx +0 -27
- package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
- package/src/core/primitives/select/index.ts +0 -1
- package/src/core/primitives/select/select.test.tsx +0 -52
- package/src/core/primitives/select/select.tsx +0 -94
- package/src/core/primitives/select/styles.ts +0 -166
- package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
- package/src/core/primitives/spinner/__workshop__/index.ts +0 -14
- package/src/core/primitives/spinner/index.ts +0 -1
- package/src/core/primitives/spinner/spinner.tsx +0 -46
- package/src/core/primitives/stack/__workshop__/index.ts +0 -14
- package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/stack/index.ts +0 -1
- package/src/core/primitives/stack/stack.test.tsx +0 -57
- package/src/core/primitives/stack/stack.tsx +0 -57
- package/src/core/primitives/stack/styles.ts +0 -32
- package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
- package/src/core/primitives/switch/__workshop__/index.ts +0 -11
- package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
- package/src/core/primitives/switch/index.ts +0 -1
- package/src/core/primitives/switch/styles.ts +0 -173
- package/src/core/primitives/switch/switch.tsx +0 -68
- package/src/core/primitives/text/__workshop__/colored.tsx +0 -30
- package/src/core/primitives/text/__workshop__/example.tsx +0 -39
- package/src/core/primitives/text/__workshop__/index.ts +0 -24
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -48
- package/src/core/primitives/text/index.ts +0 -1
- package/src/core/primitives/text/styles.ts +0 -74
- package/src/core/primitives/text/text.tsx +0 -89
- package/src/core/primitives/textArea/__workshop__/index.ts +0 -14
- package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -50
- package/src/core/primitives/textArea/index.ts +0 -1
- package/src/core/primitives/textArea/textArea.tsx +0 -120
- package/src/core/primitives/textInput/__workshop__/clearButton.tsx +0 -30
- package/src/core/primitives/textInput/__workshop__/customValidity.tsx +0 -17
- package/src/core/primitives/textInput/__workshop__/index.ts +0 -44
- package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -98
- package/src/core/primitives/textInput/__workshop__/readOnly.tsx +0 -9
- package/src/core/primitives/textInput/__workshop__/states.tsx +0 -53
- package/src/core/primitives/textInput/__workshop__/tones.tsx +0 -277
- package/src/core/primitives/textInput/__workshop__/typed.tsx +0 -23
- package/src/core/primitives/textInput/index.ts +0 -1
- package/src/core/primitives/textInput/textInput.test.tsx +0 -48
- package/src/core/primitives/textInput/textInput.tsx +0 -395
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
- package/src/core/primitives/tooltip/__workshop__/index.ts +0 -29
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
- package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -107
- package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
- package/src/core/primitives/tooltip/constants.ts +0 -23
- package/src/core/primitives/tooltip/index.ts +0 -2
- package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
- package/src/core/primitives/tooltip/tooltip.tsx +0 -495
- package/src/core/primitives/tooltip/tooltipCard.tsx +0 -109
- package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -11
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -57
- package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
- package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
- package/src/core/primitives/types.ts +0 -179
- package/src/core/styles/border/borderStyle.ts +0 -56
- package/src/core/styles/border/index.ts +0 -2
- package/src/core/styles/border/types.ts +0 -10
- package/src/core/styles/box/boxStyle.ts +0 -69
- package/src/core/styles/box/index.ts +0 -2
- package/src/core/styles/box/types.ts +0 -11
- package/src/core/styles/card/_cardColorStyle.ts +0 -108
- package/src/core/styles/card/index.ts +0 -1
- package/src/core/styles/flex/flexItemStyle.ts +0 -27
- package/src/core/styles/flex/flexStyle.ts +0 -70
- package/src/core/styles/flex/index.ts +0 -3
- package/src/core/styles/flex/types.ts +0 -25
- package/src/core/styles/focusRing/index.ts +0 -25
- package/src/core/styles/font/codeFontStyle.ts +0 -13
- package/src/core/styles/font/headingFontStyle.ts +0 -13
- package/src/core/styles/font/index.ts +0 -6
- package/src/core/styles/font/labelFontStyle.ts +0 -13
- package/src/core/styles/font/responsiveFont.ts +0 -103
- package/src/core/styles/font/textAlignStyle.ts +0 -19
- package/src/core/styles/font/textFontStyle.ts +0 -13
- package/src/core/styles/font/types.ts +0 -35
- package/src/core/styles/grid/gridItemStyle.ts +0 -82
- package/src/core/styles/grid/gridStyle.ts +0 -108
- package/src/core/styles/grid/index.ts +0 -3
- package/src/core/styles/grid/types.ts +0 -37
- package/src/core/styles/helpers.ts +0 -72
- package/src/core/styles/index.ts +0 -5
- package/src/core/styles/input/index.ts +0 -2
- package/src/core/styles/input/responsiveInputPaddingStyle.ts +0 -78
- package/src/core/styles/input/textInputStyle.ts +0 -263
- package/src/core/styles/internal.ts +0 -12
- package/src/core/styles/margin/index.ts +0 -2
- package/src/core/styles/margin/marginStyle.ts +0 -21
- package/src/core/styles/margin/marginsStyle.test.ts +0 -33
- package/src/core/styles/margin/types.ts +0 -9
- package/src/core/styles/padding/index.ts +0 -2
- package/src/core/styles/padding/paddingStyle.test.ts +0 -33
- package/src/core/styles/padding/paddingStyle.ts +0 -21
- package/src/core/styles/padding/types.ts +0 -12
- package/src/core/styles/radius/index.ts +0 -2
- package/src/core/styles/radius/radiusStyle.ts +0 -23
- package/src/core/styles/radius/types.ts +0 -8
- package/src/core/styles/shadow/index.ts +0 -2
- package/src/core/styles/shadow/shadowStyle.ts +0 -29
- package/src/core/styles/shadow/types.ts +0 -6
- package/src/core/styles/types.ts +0 -8
- package/src/core/theme/__workshop__/build/Root.tsx +0 -367
- package/src/core/theme/__workshop__/build/helpers.ts +0 -46
- package/src/core/theme/__workshop__/build/story.tsx +0 -465
- package/src/core/theme/__workshop__/canvas.tsx +0 -352
- package/src/core/theme/__workshop__/color.tsx +0 -62
- package/src/core/theme/__workshop__/debug/story.tsx +0 -408
- package/src/core/theme/__workshop__/index.ts +0 -39
- package/src/core/theme/__workshop__/layer.tsx +0 -78
- package/src/core/theme/__workshop__/nestedProvider.tsx +0 -15
- package/src/core/theme/index.ts +0 -5
- package/src/core/theme/theme.test.tsx +0 -73
- package/src/core/theme/themeColorProvider.tsx +0 -29
- package/src/core/theme/themeContext.ts +0 -10
- package/src/core/theme/themeProvider.tsx +0 -62
- package/src/core/theme/types.ts +0 -12
- package/src/core/theme/useRootTheme.ts +0 -17
- package/src/core/theme/useTheme.ts +0 -16
- package/src/core/types/avatar.ts +0 -14
- package/src/core/types/badge.ts +0 -12
- package/src/core/types/box.ts +0 -19
- package/src/core/types/button.ts +0 -21
- package/src/core/types/card.ts +0 -6
- package/src/core/types/component.ts +0 -32
- package/src/core/types/dialog.ts +0 -4
- package/src/core/types/flex.ts +0 -30
- package/src/core/types/grid.ts +0 -14
- package/src/core/types/gridItem.ts +0 -29
- package/src/core/types/index.ts +0 -15
- package/src/core/types/placement.ts +0 -18
- package/src/core/types/popover.ts +0 -4
- package/src/core/types/radius.ts +0 -4
- package/src/core/types/selectable.ts +0 -6
- package/src/core/types/text.ts +0 -4
- package/src/core/utils/arrow/arrow.tsx +0 -123
- package/src/core/utils/arrow/cmds.ts +0 -91
- package/src/core/utils/arrow/index.ts +0 -1
- package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -14
- package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -100
- package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -7
- package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -24
- package/src/core/utils/boundaryElement/index.ts +0 -3
- package/src/core/utils/boundaryElement/types.ts +0 -7
- package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -26
- package/src/core/utils/conditionalWrapper/conditionalWrapper.tsx +0 -21
- package/src/core/utils/conditionalWrapper/index.ts +0 -1
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -30
- package/src/core/utils/elementQuery/__workshop__/index.ts +0 -14
- package/src/core/utils/elementQuery/elementQuery.tsx +0 -53
- package/src/core/utils/elementQuery/helpers.ts +0 -27
- package/src/core/utils/elementQuery/index.ts +0 -1
- package/src/core/utils/errorBoundary.tsx +0 -48
- package/src/core/utils/getElementRef.ts +0 -26
- package/src/core/utils/index.ts +0 -9
- package/src/core/utils/layer/__workshop__/_debug.tsx +0 -17
- package/src/core/utils/layer/__workshop__/index.ts +0 -24
- package/src/core/utils/layer/__workshop__/multipleRoots.tsx +0 -49
- package/src/core/utils/layer/__workshop__/nested.tsx +0 -98
- package/src/core/utils/layer/__workshop__/responsiveZOffset.tsx +0 -13
- package/src/core/utils/layer/getLayerContext.test.ts +0 -30
- package/src/core/utils/layer/getLayerContext.ts +0 -21
- package/src/core/utils/layer/index.ts +0 -4
- package/src/core/utils/layer/layer.test.tsx +0 -108
- package/src/core/utils/layer/layer.tsx +0 -98
- package/src/core/utils/layer/layerContext.ts +0 -7
- package/src/core/utils/layer/layerProvider.tsx +0 -111
- package/src/core/utils/layer/types.ts +0 -9
- package/src/core/utils/layer/useLayer.ts +0 -26
- package/src/core/utils/portal/__workshop__/index.ts +0 -14
- package/src/core/utils/portal/__workshop__/named.tsx +0 -63
- package/src/core/utils/portal/index.ts +0 -4
- package/src/core/utils/portal/portal.test.tsx +0 -103
- package/src/core/utils/portal/portal.ts +0 -32
- package/src/core/utils/portal/portalContext.ts +0 -31
- package/src/core/utils/portal/portalProvider.tsx +0 -47
- package/src/core/utils/portal/types.ts +0 -9
- package/src/core/utils/portal/usePortal.ts +0 -25
- package/src/core/utils/spanWithTextOverflow.tsx +0 -10
- package/src/core/utils/srOnly/index.ts +0 -1
- package/src/core/utils/srOnly/srOnly.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/changingProps.tsx +0 -36
- package/src/core/utils/virtualList/__workshop__/elementScroll.tsx +0 -24
- package/src/core/utils/virtualList/__workshop__/index.ts +0 -29
- package/src/core/utils/virtualList/__workshop__/infiniteList.tsx +0 -48
- package/src/core/utils/virtualList/__workshop__/windowScrolll.tsx +0 -22
- package/src/core/utils/virtualList/index.ts +0 -1
- package/src/core/utils/virtualList/virtualList.tsx +0 -200
- package/src/theme/build/_deprecated/color/_selectable/createSelectableTones.ts +0 -76
- package/src/theme/build/_deprecated/color/_solid/createSolidTones.ts +0 -54
- package/src/theme/build/_deprecated/color/button/createButtonModes.ts +0 -22
- package/src/theme/build/_deprecated/color/button/createButtonTones.ts +0 -55
- package/src/theme/build/_deprecated/color/card/createCardStates.ts +0 -60
- package/src/theme/build/_deprecated/color/color.test.ts +0 -63
- package/src/theme/build/_deprecated/color/defaults.ts +0 -390
- package/src/theme/build/_deprecated/color/factory.ts +0 -142
- package/src/theme/build/_deprecated/color/index.ts +0 -1
- package/src/theme/build/_deprecated/color/input/createInputModes.ts +0 -81
- package/src/theme/build/_deprecated/color/muted/createMuted.ts +0 -54
- package/src/theme/build/_deprecated/color/spot/createSpot.ts +0 -20
- package/src/theme/build/buildColorTheme.test.ts +0 -183
- package/src/theme/build/buildColorTheme.ts +0 -499
- package/src/theme/build/buildTheme.test.ts +0 -87
- package/src/theme/build/buildTheme.ts +0 -36
- package/src/theme/build/colorToken/colorToken.ts +0 -19
- package/src/theme/build/colorToken/compileColorToken.ts +0 -21
- package/src/theme/build/colorToken/index.ts +0 -2
- package/src/theme/build/colorToken/types.ts +0 -6
- package/src/theme/build/index.ts +0 -3
- package/src/theme/build/lib/color-fns/blend/index.ts +0 -3
- package/src/theme/build/lib/color-fns/blend/mix.ts +0 -21
- package/src/theme/build/lib/color-fns/blend/multiply.ts +0 -18
- package/src/theme/build/lib/color-fns/blend/screen.ts +0 -18
- package/src/theme/build/lib/color-fns/color-fns.test.ts +0 -68
- package/src/theme/build/lib/color-fns/contrastRatio.ts +0 -31
- package/src/theme/build/lib/color-fns/convert.ts +0 -150
- package/src/theme/build/lib/color-fns/index.ts +0 -6
- package/src/theme/build/lib/color-fns/parse.ts +0 -60
- package/src/theme/build/lib/color-fns/rgba.ts +0 -10
- package/src/theme/build/lib/color-fns/types.ts +0 -28
- package/src/theme/build/lib/isRecord.ts +0 -3
- package/src/theme/build/lib/lazy.ts +0 -30
- package/src/theme/build/lib/utils.ts +0 -19
- package/src/theme/build/merge.ts +0 -26
- package/src/theme/build/mixThemeColor.test.ts +0 -21
- package/src/theme/build/mixThemeColor.ts +0 -53
- package/src/theme/build/renderColorTheme.ts +0 -532
- package/src/theme/build/renderColorValue.ts +0 -85
- package/src/theme/build/resolveColorTokens.ts +0 -268
- package/src/theme/build/theme.test.ts +0 -27
- package/src/theme/config/helpers.ts +0 -55
- package/src/theme/config/index.ts +0 -4
- package/src/theme/config/system.ts +0 -115
- package/src/theme/config/tokens/color/index.ts +0 -1
- package/src/theme/config/tokens/color/types.ts +0 -133
- package/src/theme/config/tokens/index.ts +0 -4
- package/src/theme/config/tokens/parseTokenKey.test.ts +0 -64
- package/src/theme/config/tokens/parseTokenKey.ts +0 -67
- package/src/theme/config/tokens/parseTokenValue.test.ts +0 -42
- package/src/theme/config/tokens/parseTokenValue.ts +0 -133
- package/src/theme/config/tokens/types.ts +0 -53
- package/src/theme/config/types.ts +0 -46
- package/src/theme/defaults/colorPalette.ts +0 -5
- package/src/theme/defaults/colorTokens.ts +0 -648
- package/src/theme/defaults/config.ts +0 -84
- package/src/theme/defaults/fonts.ts +0 -227
- package/src/theme/getScopedTheme.ts +0 -98
- package/src/theme/index.ts +0 -5
- package/src/theme/system/avatar.ts +0 -14
- package/src/theme/system/color/_constants.ts +0 -45
- package/src/theme/system/color/_helpers.ts +0 -24
- package/src/theme/system/color/_system.ts +0 -40
- package/src/theme/system/color/avatar.ts +0 -15
- package/src/theme/system/color/badge.ts +0 -16
- package/src/theme/system/color/button.ts +0 -17
- package/src/theme/system/color/color.ts +0 -34
- package/src/theme/system/color/index.ts +0 -13
- package/src/theme/system/color/input.ts +0 -25
- package/src/theme/system/color/kbd.ts +0 -8
- package/src/theme/system/color/selectable.ts +0 -12
- package/src/theme/system/color/shadow.ts +0 -7
- package/src/theme/system/color/state.ts +0 -43
- package/src/theme/system/color/syntax.ts +0 -41
- package/src/theme/system/css.ts +0 -14
- package/src/theme/system/focusRing.ts +0 -7
- package/src/theme/system/font.ts +0 -52
- package/src/theme/system/index.ts +0 -11
- package/src/theme/system/input.ts +0 -33
- package/src/theme/system/layer.ts +0 -8
- package/src/theme/system/shadow.ts +0 -19
- package/src/theme/system/styles.ts +0 -13
- package/src/theme/system/theme.ts +0 -138
- package/src/theme/system/v0/avatar.ts +0 -10
- package/src/theme/system/v0/color/_generic.ts +0 -35
- package/src/theme/system/v0/color/_system.ts +0 -17
- package/src/theme/system/v0/color/base.ts +0 -21
- package/src/theme/system/v0/color/button.ts +0 -42
- package/src/theme/system/v0/color/card.ts +0 -19
- package/src/theme/system/v0/color/color.ts +0 -40
- package/src/theme/system/v0/color/index.ts +0 -11
- package/src/theme/system/v0/color/input.ts +0 -34
- package/src/theme/system/v0/color/muted.ts +0 -26
- package/src/theme/system/v0/color/selectable.ts +0 -31
- package/src/theme/system/v0/color/solid.ts +0 -26
- package/src/theme/system/v0/color/spot.ts +0 -13
- package/src/theme/system/v0/index.ts +0 -3
- package/src/theme/system/v0/input.ts +0 -23
- package/src/theme/versioning/getTheme_v2.ts +0 -57
- package/src/theme/versioning/index.ts +0 -5
- package/src/theme/versioning/is_v0.ts +0 -6
- package/src/theme/versioning/is_v2.ts +0 -6
- package/src/theme/versioning/themeColor_v0_v2.ts +0 -243
- package/src/theme/versioning/themeColor_v2_v2_9.ts +0 -49
- package/src/theme/versioning/v0_v2.ts +0 -94
- package/src/theme/versioning/v2_v0.ts +0 -135
package/ui/select.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","names":[],"sources":["../../src/kit/ui/select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\";\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\";\nimport type { BaseUIEvent } from \"@base-ui/react/types\";\nimport { IconCheck, IconChevronDown, IconSearch } from \"@tabler/icons-react\";\nimport { cn } from \"../lib/cn\";\nimport { useFieldId, useFieldLabelledBy, useLabelFor } from \"./field-context\";\nimport { Avatar } from \"./display\";\nimport { GLASS, KIT_SCOPE } from \"./surfaces\";\n\n/* ── Select ─────────────────────────────────────────────────────────────────\n D34 — one Select for every dropdown. Up to SEARCH_THRESHOLD options it is a plain Base UI Select; past that (or\n with `searchable`) the same trigger opens a Base UI Combobox: sticky search at the top, type-to-filter with\n fuzzy-ish matching and highlighted matches, ↑↓ / Enter / Esc, typing on the closed trigger starts a search,\n groups, avatars / icons, secondary text, \"No matches\". Call sites don't change — long lists just get search. */\n\nexport const SEARCH_THRESHOLD = 7;\n\nexport type SelectOption = {\n value: string;\n label: React.ReactNode;\n /** leading visual (16px icon); ignored when `avatar` is set */\n icon?: React.ReactNode;\n /** a person: renders a 20px avatar before the label */\n avatar?: { name: string; src?: string };\n /** secondary line under the label (e.g. an email) — searchable */\n description?: string;\n /** muted right-aligned text (e.g. \"UTC+1\", a count) — searchable */\n meta?: string;\n /** extra words that should match (aliases, ids) */\n keywords?: string[];\n /** group heading; options with the same group render together, in first-seen order */\n group?: string;\n disabled?: boolean;\n};\n\n/* ── Matching (exported so custom pickers can share it) ─────────────────── */\n\n/** Plain text of a React node — lets `label` stay a ReactNode while still being searchable. */\nexport function nodeText(node: React.ReactNode): string {\n if (node == null || typeof node === \"boolean\") return \"\";\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(nodeText).join(\"\");\n if (React.isValidElement<{ children?: React.ReactNode }>(node)) return nodeText(node.props.children);\n return \"\";\n}\n\nconst SEP = /[\\s\\-_/.(@+]/;\nconst norm = (s: string) => s.normalize(\"NFD\").replace(/[̀-ͯ]/g, \"\").toLowerCase();\n\n/**\n * Score how well `query` matches `text` (0 = no match). Every whitespace-separated term must match.\n * Prefix > word start > substring > in-order characters (\"nyk\" → \"New York\").\n */\nexport function matchScore(text: string, query: string, { fuzzy = true }: { fuzzy?: boolean } = {}): number {\n const t = norm(text);\n const terms = norm(query).trim().split(/\\s+/).filter(Boolean);\n if (!terms.length) return 1;\n let score = 0;\n for (const term of terms) {\n const at = t.indexOf(term);\n if (at === 0) score += 4;\n else if (at > 0) score += SEP.test(t[at - 1]) ? 3 : 2;\n else if (fuzzy && fuzzyPositions(t, term)) score += 1;\n else return 0;\n }\n return score;\n}\n\n/** In-order characters of `term` in `t`, tight enough to be intended (\"nyk\" → New York, not across a paragraph). */\nfunction fuzzyPositions(t: string, term: string): number[] | null {\n if (term.length < 2) return null;\n // start at a word boundary (\"nyk\" → New York, not \"krasnoyarsk\"); try each so a tighter run wins\n for (let start = t.indexOf(term[0]); start >= 0; start = t.indexOf(term[0], start + 1)) {\n if (start > 0 && !SEP.test(t[start - 1])) continue;\n const out = [start];\n let i = start + 1;\n for (const ch of term.slice(1)) {\n i = t.indexOf(ch, i);\n if (i < 0) break;\n out.push(i++);\n }\n if (out.length === term.length && out[out.length - 1] - start + 1 <= term.length * 3) return out;\n }\n return null;\n}\n\n/** Character indexes of `text` to emphasise for `query` (substring per term, else in-order characters). */\nexport function matchPositions(text: string, query: string): Set<number> {\n const t = norm(text);\n const hits = new Set<number>();\n for (const term of norm(query).trim().split(/\\s+/).filter(Boolean)) {\n const at = t.indexOf(term);\n if (at >= 0) for (let k = 0; k < term.length; k++) hits.add(at + k);\n else fuzzyPositions(t, term)?.forEach((k) => hits.add(k));\n }\n return hits;\n}\n\n/** Renders `text` with the characters that match `query` emphasised. */\nexport function Highlight({ text, query }: { text: string; query: string }) {\n if (!query.trim()) return <>{text}</>;\n // NFD normalisation can change length for accented text; only highlight when indexes line up.\n if (norm(text).length !== text.length) return <>{text}</>;\n const hits = matchPositions(text, query);\n if (!hits.size) return <>{text}</>;\n const parts: React.ReactNode[] = [];\n let run = \"\";\n let on = false;\n const flush = (k: number) => {\n if (!run) return;\n parts.push(on ? <mark key={k} className=\"rounded-[2px] bg-transparent font-semibold text-kit-fg\">{run}</mark> : run);\n run = \"\";\n };\n for (let k = 0; k < text.length; k++) {\n const h = hits.has(k);\n if (h !== on) {\n flush(k);\n on = h;\n }\n run += text[k];\n }\n flush(text.length);\n return <>{parts}</>;\n}\n\n/** Filter + rank options for `query` (stable within equal scores). */\nexport function filterOptions<T extends SelectOption>(options: T[], query: string): T[] {\n if (!query.trim()) return options;\n return options\n .map((o, i) => {\n const label = nodeText(o.label);\n const main = matchScore(label, query);\n // secondary text (email, region, aliases) matches on whole substrings only — fuzzy there is noise\n const rest = matchScore([label, o.description, o.meta, ...(o.keywords ?? [])].filter(Boolean).join(\" \"), query, { fuzzy: false });\n // a hit in the label outranks a hit only in secondary text\n // an alias typed exactly (\"IST\", \"PT\", a tag) is as good as a label prefix\n const exact = o.keywords?.some((k) => norm(k) === norm(query.trim())) ? 9 : 0;\n return { o, i, s: Math.max(main ? main * 2 + 1 : rest, exact), len: label.length };\n })\n .filter((x) => x.s > 0)\n .sort((a, b) => b.s - a.s || a.len - b.len || a.i - b.i)\n .map((x) => x.o);\n}\n\nfunction grouped<T extends SelectOption>(options: T[]): { group?: string; items: T[] }[] {\n if (!options.some((o) => o.group)) return [{ items: options }];\n const out: { group?: string; items: T[] }[] = [];\n for (const o of options) {\n const g = out.find((x) => x.group === o.group);\n if (g) g.items.push(o);\n else out.push({ group: o.group, items: [o] });\n }\n return out;\n}\n\n/* ── Shared look ────────────────────────────────────────────────────────── */\n\nfunction triggerClass(variant: \"filled\" | \"outline\" | \"ghost\", size: \"sm\" | \"md\" | \"lg\") {\n const h = size === \"sm\" ? \"h-7 text-kit-sm\" : size === \"lg\" ? \"h-9 text-kit-base\" : \"h-8 text-kit-sm\";\n return cn(\n \"group inline-flex w-full min-w-0 items-center justify-between gap-2 rounded-kit-md border px-2.5 text-left text-kit-fg transition-colors data-[placeholder]:text-kit-fg-3 disabled:cursor-not-allowed disabled:opacity-60 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60\",\n variant === \"filled\" && \"border-kit-field-border bg-kit-field-bg shadow-kit-field hover:border-kit-field-border-hover\",\n variant === \"outline\" && \"border-kit-line bg-kit-field-bg shadow-kit-xs hover:border-kit-line-strong\",\n variant === \"ghost\" && \"w-auto border-transparent bg-transparent px-2 text-kit-fg-2 hover:bg-kit-hover hover:text-kit-fg\",\n h,\n );\n}\n\n/** The Select trigger look, for controls that open their own picker but must read as a Select (D57: one look per job). */\nexport const selectTriggerClass = triggerClass;\n\n/* V2's .glass floating surface; the portalled positioner carries its own kit scope so the --kit-* values resolve. */\nconst floatingClass = cn(\"rounded-kit-lg border text-kit-fg outline-none data-[open]:animate-kit-pop-in\", GLASS);\n\nconst itemClass =\n \"relative flex cursor-pointer select-none items-center gap-2 rounded-kit-md py-1.5 pl-2 pr-8 text-kit-sm text-kit-fg outline-none data-[disabled]:pointer-events-none data-[disabled]:opacity-40 data-[highlighted]:bg-kit-hover [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-kit-fg-2\";\n\nconst groupHeading = \"px-2 pb-1 pt-2 text-kit-xs font-medium text-kit-fg-3\";\n\nfunction Lead({ o }: { o: SelectOption }) {\n if (o.avatar) return <Avatar name={o.avatar.name} src={o.avatar.src} size={20} decorative />;\n return o.icon ? <>{o.icon}</> : null;\n}\n\n/* ── Select ─────────────────────────────────────────────────────────────── */\n\nexport interface SelectProps {\n id?: string;\n \"aria-label\"?: string;\n value?: string;\n /** uncontrolled starting value (leave `value` undefined) */\n defaultValue?: string;\n onValueChange?: (v: string) => void;\n options: SelectOption[];\n placeholder?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n triggerClassName?: string;\n variant?: \"filled\" | \"outline\" | \"ghost\";\n align?: \"start\" | \"center\" | \"end\";\n disabled?: boolean;\n /** \"auto\" (default): search appears when there are more than 7 options. */\n searchable?: boolean | \"auto\";\n searchPlaceholder?: string;\n /** popover width for the searchable menu (defaults to the trigger, at least 240px) */\n menuClassName?: string;\n}\n\nexport function Select(props: SelectProps) {\n const { searchable = \"auto\", options } = props;\n const search = searchable === true || (searchable === \"auto\" && options.length > SEARCH_THRESHOLD);\n return search ? <SearchSelect {...props} /> : <PlainSelect {...props} />;\n}\n\nfunction useTriggerA11y(id: string | undefined, ariaLabel: string | undefined, placeholder: React.ReactNode) {\n const fieldId = useFieldId();\n const labelledBy = useFieldLabelledBy();\n const labelFor = useLabelFor(id ?? fieldId);\n return {\n id: id ?? fieldId,\n \"aria-label\": ariaLabel ?? (fieldId || labelledBy || labelFor ? undefined : typeof placeholder === \"string\" && placeholder !== \"Select…\" ? placeholder : undefined),\n \"aria-labelledby\": ariaLabel ? undefined : (labelFor ?? (id || fieldId ? undefined : labelledBy)),\n };\n}\n\n/** Value that is controlled when `value` is passed and internal otherwise. */\nfunction useSelectValue(value: string | undefined, defaultValue: string | undefined, onValueChange?: (v: string) => void) {\n const [inner, setInner] = React.useState(defaultValue);\n const controlled = value !== undefined;\n const current = controlled ? value : inner;\n const set = (v: string) => {\n if (!controlled) setInner(v);\n onValueChange?.(v);\n };\n return [current, set] as const;\n}\n\nfunction PlainSelect({\n value,\n defaultValue,\n onValueChange,\n options,\n placeholder = \"Select…\",\n size = \"md\",\n className,\n triggerClassName,\n variant = \"filled\",\n align = \"start\",\n disabled,\n id,\n \"aria-label\": ariaLabel,\n}: SelectProps) {\n const a11y = useTriggerA11y(id, ariaLabel, placeholder);\n const [current, setCurrent] = useSelectValue(value, defaultValue, onValueChange);\n const [open, setOpen] = React.useState(false);\n const items = React.useMemo(() => options.map((o) => ({ value: o.value, label: o.label })), [options]);\n const renderItem = (o: SelectOption) => (\n <SelectPrimitive.Item key={o.value} value={o.value} disabled={o.disabled} className={itemClass}>\n <Lead o={o} />\n <div className=\"min-w-0 flex-1\">\n <SelectPrimitive.ItemText>{o.label}</SelectPrimitive.ItemText>\n {o.description ? <div className=\"text-kit-xs text-kit-fg-3\">{o.description}</div> : null}\n </div>\n {o.meta ? <span className=\"shrink-0 text-kit-xs tabular-nums text-kit-fg-3\">{o.meta}</span> : null}\n <SelectPrimitive.ItemIndicator className=\"absolute right-2\">\n <IconCheck className=\"size-4 !text-kit-fg\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n return (\n <SelectPrimitive.Root<string>\n items={items}\n value={current ?? null}\n onValueChange={(v) => v != null && setCurrent(v)}\n onOpenChange={setOpen}\n disabled={disabled}\n >\n <SelectPrimitive.Trigger\n {...a11y}\n data-state={open ? \"open\" : \"closed\"}\n className={cn(triggerClass(variant, size), triggerClassName, className)}\n >\n <span className=\"flex min-w-0 items-center gap-2 truncate [&_svg]:size-4 [&_svg]:text-kit-fg-3\">\n <SelectPrimitive.Value placeholder={placeholder} />\n </span>\n <SelectPrimitive.Icon>\n <IconChevronDown className=\"size-3.5 text-kit-fg-3 transition-transform group-data-[popup-open]:rotate-180\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner align={align} sideOffset={6} alignItemWithTrigger={false} className=\"z-[80]\" data-floating-layer=\"\" {...KIT_SCOPE}>\n <SelectPrimitive.Popup\n className={cn(floatingClass, \"max-h-[min(360px,var(--available-height))] min-w-[var(--anchor-width)] overflow-y-auto p-1\")}\n >\n <SelectPrimitive.List>\n {grouped(options).map((g, gi) =>\n g.group ? (\n <SelectPrimitive.Group key={g.group + gi}>\n <SelectPrimitive.GroupLabel className={groupHeading}>{g.group}</SelectPrimitive.GroupLabel>\n {g.items.map(renderItem)}\n </SelectPrimitive.Group>\n ) : (\n g.items.map(renderItem)\n ),\n )}\n </SelectPrimitive.List>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n );\n}\n\n/** V2 scrollIntoContainer (block \"nearest\", 4px margin): scroll `el` into view inside `list` ONLY, never the shell behind it.\n * Rects are transformed while the menu pops in (scaled), so measure in layout pixels. */\nfunction revealInList(list: HTMLElement, el: HTMLElement | null, margin = 4) {\n if (!el) return;\n const br = list.getBoundingClientRect();\n const er = el.getBoundingClientRect();\n const k = list.offsetHeight ? br.height / list.offsetHeight || 1 : 1;\n const top = (er.top - br.top) / k + list.scrollTop;\n const h = er.height / k;\n let next = list.scrollTop;\n if (top < list.scrollTop) next = top - margin;\n else if (top + h > list.scrollTop + list.clientHeight) next = top + h - list.clientHeight + margin;\n next = Math.max(0, Math.min(next, list.scrollHeight - list.clientHeight));\n if (Math.abs(next - list.scrollTop) > 0.5) list.scrollTop = next;\n}\n\nfunction SearchSelect({\n value,\n defaultValue,\n onValueChange,\n options,\n placeholder = \"Select…\",\n size = \"md\",\n className,\n triggerClassName,\n variant = \"filled\",\n align = \"start\",\n disabled,\n id,\n \"aria-label\": ariaLabel,\n searchPlaceholder = \"Search…\",\n menuClassName,\n}: SelectProps) {\n const a11y = useTriggerA11y(id, ariaLabel, placeholder);\n const [current, setCurrent] = useSelectValue(value, defaultValue, onValueChange);\n const [open, setOpen] = React.useState(false);\n const [query, setQuery] = React.useState(\"\");\n const selected = options.find((o) => o.value === current);\n const shown = React.useMemo(() => filterOptions(options, query), [options, query]);\n const shownValues = React.useMemo(() => shown.map((o) => o.value), [shown]);\n const listRef = React.useRef<HTMLDivElement>(null);\n\n /* Reveal the current option on open, inside the list only: scrollIntoView would also scroll the app shell behind the\n menu (V2 S1). The popup sizes itself a frame or two after it opens, so wait until the list is constrained (it\n scrolls) before revealing (the list portals in, so it may not exist on the first frame either). */\n React.useEffect(() => {\n if (!open) return;\n let raf = 0;\n const reveal = (tries: number) => {\n const list = listRef.current;\n const settled = list && list.scrollHeight > list.clientHeight;\n if (!settled && tries > 0) return void (raf = requestAnimationFrame(() => reveal(tries - 1)));\n if (list) revealInList(list, list.querySelector<HTMLElement>('[data-checked=\"true\"]'));\n };\n reveal(6);\n return () => cancelAnimationFrame(raf);\n }, [open]);\n\n const openWith = (q: string) => {\n setQuery(q);\n setOpen(true);\n };\n\n return (\n <ComboboxPrimitive.Root<string>\n value={current ?? null}\n onValueChange={(v) => {\n if (v == null) return;\n setCurrent(v);\n setOpen(false);\n }}\n open={open}\n onOpenChange={(o) => (o ? openWith(\"\") : setOpen(false))}\n inputValue={query}\n onInputValueChange={(q, details) => {\n // only typing filters; Base UI also writes the picked option's value into the input on selection\n if (details.reason === \"input-change\" || details.reason === \"input-clear\") setQuery(q);\n }}\n items={shownValues}\n filter={null}\n autoHighlight\n loopFocus\n disabled={disabled}\n >\n <ComboboxPrimitive.Trigger\n {...a11y}\n data-state={open ? \"open\" : \"closed\"}\n data-placeholder={selected ? undefined : \"\"}\n className={cn(triggerClass(variant, size), triggerClassName, className)}\n onKeyDown={(e: BaseUIEvent<React.KeyboardEvent<HTMLButtonElement>>) => {\n if (e.metaKey || e.ctrlKey || e.altKey) return;\n if (e.key.length === 1 && e.key !== \" \") {\n e.preventDefault();\n e.preventBaseUIHandler();\n openWith(e.key); // typing on the closed trigger starts a search\n } else if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\") {\n e.preventDefault();\n e.preventBaseUIHandler();\n openWith(\"\");\n }\n }}\n >\n <span className=\"flex min-w-0 items-center gap-2 truncate [&_svg]:size-4 [&_svg]:text-kit-fg-3\">\n {selected ? (\n <>\n {selected.avatar ? <Avatar name={selected.avatar.name} src={selected.avatar.src} size={16} decorative /> : null}\n <span className=\"truncate\">{selected.label}</span>\n </>\n ) : (\n <span className=\"truncate\">{placeholder}</span>\n )}\n </span>\n <IconChevronDown aria-hidden className=\"size-3.5 shrink-0 text-kit-fg-3 transition-transform group-data-[popup-open]:rotate-180\" />\n </ComboboxPrimitive.Trigger>\n <ComboboxPrimitive.Portal>\n <ComboboxPrimitive.Positioner align={align} sideOffset={6} collisionPadding={12} className=\"z-[80]\" data-floating-layer=\"\" {...KIT_SCOPE}>\n <ComboboxPrimitive.Popup\n className={cn(\n floatingClass,\n \"flex max-h-[min(400px,var(--available-height))] w-[max(var(--anchor-width),240px)] max-w-[min(400px,calc(100vw-24px))] flex-col overflow-hidden\",\n menuClassName,\n )}\n >\n <div className=\"flex h-9 shrink-0 items-center gap-2 border-b border-kit-line-subtle px-2.5 text-kit-fg-3\">\n <IconSearch aria-hidden className=\"size-4 shrink-0\" />\n <ComboboxPrimitive.Input\n aria-label={typeof a11y[\"aria-label\"] === \"string\" ? a11y[\"aria-label\"] : \"Options\"}\n placeholder={searchPlaceholder}\n className=\"h-full min-w-0 flex-1 bg-transparent text-kit-sm text-kit-fg outline-none placeholder:text-kit-fg-4\"\n />\n </div>\n {shown.length === 0 ? <div className=\"px-2 py-6 text-center text-kit-sm text-kit-fg-3\">No matches</div> : null}\n <ComboboxPrimitive.List ref={listRef} className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain p-1 empty:hidden\">\n {grouped(shown).map((g, gi) => {\n const items = g.items.map((o) => {\n const text = nodeText(o.label);\n const checked = o.value === current;\n return (\n <ComboboxPrimitive.Item key={o.value} value={o.value} disabled={o.disabled} data-checked={checked} className={itemClass}>\n <Lead o={o} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"truncate\">{typeof o.label === \"string\" ? <Highlight text={text} query={query} /> : o.label}</div>\n {o.description ? (\n <div className=\"truncate text-kit-xs text-kit-fg-3\">\n <Highlight text={o.description} query={query} />\n </div>\n ) : null}\n </div>\n {o.meta ? <span className=\"shrink-0 text-kit-xs tabular-nums text-kit-fg-3\">{o.meta}</span> : null}\n {checked ? <IconCheck aria-hidden className=\"absolute right-2 size-4 !text-kit-fg\" /> : null}\n </ComboboxPrimitive.Item>\n );\n });\n return g.group ? (\n <ComboboxPrimitive.Group key={g.group + gi}>\n <ComboboxPrimitive.GroupLabel className={groupHeading}>{g.group}</ComboboxPrimitive.GroupLabel>\n {items}\n </ComboboxPrimitive.Group>\n ) : (\n <React.Fragment key={\"g\" + gi}>{items}</React.Fragment>\n );\n })}\n </ComboboxPrimitive.List>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export declare function ShortcutHintsProvider({ on, children }: {
|
|
3
|
+
on?: boolean;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare function useShortcutHints(): boolean;
|
|
7
|
+
/** Non-hook read for toasts and other imperative call sites. */
|
|
8
|
+
export declare function shortcutHintsOn(): boolean;
|
|
9
|
+
type Props = React.HTMLAttributes<HTMLElement> & {
|
|
10
|
+
as?: "span" | "div" | "p" | "li" | "fragment";
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
};
|
|
13
|
+
export declare function ShortcutHint({ as, children, ...rest }: Props): import("react/jsx-runtime").JSX.Element | null;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Fragment, jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/kit/ui/shortcut-hint.tsx
|
|
4
|
+
var ShortcutHintsContext = React.createContext(false);
|
|
5
|
+
var current = false;
|
|
6
|
+
function ShortcutHintsProvider({ on = false, children }) {
|
|
7
|
+
React.useLayoutEffect(() => {
|
|
8
|
+
current = on;
|
|
9
|
+
if (typeof document !== "undefined") document.documentElement.dataset.shortcutHints = on ? "on" : "off";
|
|
10
|
+
}, [on]);
|
|
11
|
+
return /* @__PURE__ */ jsx(ShortcutHintsContext.Provider, {
|
|
12
|
+
value: on,
|
|
13
|
+
children
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function useShortcutHints() {
|
|
17
|
+
return React.useContext(ShortcutHintsContext);
|
|
18
|
+
}
|
|
19
|
+
/** Non-hook read for toasts and other imperative call sites. */
|
|
20
|
+
function shortcutHintsOn() {
|
|
21
|
+
return current;
|
|
22
|
+
}
|
|
23
|
+
function ShortcutHint({ as = "span", children, ...rest }) {
|
|
24
|
+
if (!useShortcutHints()) return null;
|
|
25
|
+
if (as === "fragment") return /* @__PURE__ */ jsx(Fragment, { children });
|
|
26
|
+
return /* @__PURE__ */ jsx(as, {
|
|
27
|
+
"data-hint": "shortcuts",
|
|
28
|
+
...rest,
|
|
29
|
+
children
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { ShortcutHint, ShortcutHintsProvider, shortcutHintsOn, useShortcutHints };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=shortcut-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shortcut-hint.js","names":[],"sources":["../../src/kit/ui/shortcut-hint.tsx"],"sourcesContent":["import * as React from \"react\";\n\n/* D44: keyboard-shortcut hints are OFF by default (founder: \"genuinely irritating\").\n Account > Preferences > \"Show keyboard hints\" turns them back on; the host passes that preference to\n <ShortcutHintsProvider on={...}>.\n - <ShortcutHint>…</ShortcutHint> renders nothing while off (use it for every new inline hint strip).\n - `as` keeps the wrapper element when the hint needs one (span by default; `fragment` for none).\n - For markup you cannot wrap, add data-hint=\"shortcuts\": the provider mirrors the switch on\n <html data-shortcut-hints=\"on|off\"> and the stylesheet hides it while off.\n - For strings (toasts, placeholders) use useShortcutHints() / shortcutHintsOn().\n NOT hints (always shown): menu shortcut columns, the command palette's key labels, the help sheet. */\n\nconst ShortcutHintsContext = React.createContext(false);\nlet current = false;\n\nexport function ShortcutHintsProvider({ on = false, children }: { on?: boolean; children: React.ReactNode }) {\n React.useLayoutEffect(() => {\n current = on;\n if (typeof document !== \"undefined\") document.documentElement.dataset.shortcutHints = on ? \"on\" : \"off\";\n }, [on]);\n return <ShortcutHintsContext.Provider value={on}>{children}</ShortcutHintsContext.Provider>;\n}\n\nexport function useShortcutHints() {\n return React.useContext(ShortcutHintsContext);\n}\n\n/** Non-hook read for toasts and other imperative call sites. */\nexport function shortcutHintsOn() {\n return current;\n}\n\ntype Props = React.HTMLAttributes<HTMLElement> & { as?: \"span\" | \"div\" | \"p\" | \"li\" | \"fragment\"; children: React.ReactNode };\n\nexport function ShortcutHint({ as = \"span\", children, ...rest }: Props) {\n const on = useShortcutHints();\n if (!on) return null;\n if (as === \"fragment\") return <>{children}</>;\n const Tag = as as \"span\";\n return (\n <Tag data-hint=\"shortcuts\" {...rest}>\n {children}\n </Tag>\n );\n}\n"],"mappings":";;;AAYA,IAAM,uBAAuB,MAAM,cAAc,MAAM;AACvD,IAAI,UAAU;AAEd,SAAgB,sBAAsB,EAAE,KAAK,OAAO,YAAyD;AAC3G,OAAM,sBAAsB;AAC1B,YAAU;AACV,MAAI,OAAO,aAAa,YAAa,UAAS,gBAAgB,QAAQ,gBAAgB,KAAK,OAAO;IACjG,CAAC,GAAG,CAAC;AACR,QAAO,oBAAC,qBAAqB,UAAtB;EAA+B,OAAO;EAAK;EAAyC,CAAA;;AAG7F,SAAgB,mBAAmB;AACjC,QAAO,MAAM,WAAW,qBAAqB;;;AAI/C,SAAgB,kBAAkB;AAChC,QAAO;;AAKT,SAAgB,aAAa,EAAE,KAAK,QAAQ,UAAU,GAAG,QAAe;AAEtE,KAAI,CADO,kBAAkB,CACpB,QAAO;AAChB,KAAI,OAAO,WAAY,QAAO,oBAAA,UAAA,EAAG,UAAY,CAAA;AAE7C,QACE,oBAFU,IAEV;EAAK,aAAU;EAAY,GAAI;EAC5B;EACG,CAAA"}
|
package/ui/surfaces.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2's floating-surface recipes (src/styles/index.css .glass, .glass-ink, .bg-tray, --surface-raised, --floating-line),
|
|
3
|
+
* as class strings. kit.css has no tokens for these yet, so the V2 values are written out here, light and dark
|
|
4
|
+
* (`[.dark_&]` = the app is dark). Each one is a single constant so the integrator can swap it for a kit token later.
|
|
5
|
+
*
|
|
6
|
+
* Portalled layers render outside [data-kit-scope], where every --kit-* value is undefined. Every layer root here
|
|
7
|
+
* therefore carries KIT_SCOPE (data-kit-scope) itself.
|
|
8
|
+
*/
|
|
9
|
+
export declare const KIT_SCOPE: {
|
|
10
|
+
readonly "data-kit-scope": "";
|
|
11
|
+
};
|
|
12
|
+
/** .glass: popovers, menus, hover cards. */
|
|
13
|
+
export declare const GLASS = "bg-kit-surface border-kit-line shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:bg-[#252528] [.dark_&]:border-kit-line-strong [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.04),0_12px_32px_-8px_oklch(0.12_0.01_286/0.5)]";
|
|
14
|
+
/** .glass-ink: tooltips (ink is dark in both themes). */
|
|
15
|
+
export declare const INK = "bg-[#1c1c1e] text-[#f5f5f5] shadow-[0_10px_28px_-8px_rgb(0_0_0/0.35)] [.dark_&]:bg-[#3d3d40] [.dark_&]:text-[#ececef] [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.06),0_0_0_1px_rgb(255_255_255/0.12),0_14px_36px_-8px_oklch(0.12_0.01_286/0.55)]";
|
|
16
|
+
/** --ink-active: the kbd chip on ink. */
|
|
17
|
+
export declare const INK_ACTIVE = "bg-[rgb(255_255_255/0.15)] [.dark_&]:bg-[rgb(255_255_255/0.13)]";
|
|
18
|
+
/** --surface-raised: dialogs, sheets, expanded editors. */
|
|
19
|
+
export declare const SURFACE_RAISED = "bg-[var(--kit-surface-raised)]";
|
|
20
|
+
/** --floating-line: the edge of modals, sheets, expanded editors (= line; dark = line-strong). */
|
|
21
|
+
export declare const FLOATING_LINE = "border-kit-line [.dark_&]:border-kit-line-strong";
|
|
22
|
+
/** .bg-tray + --tray-line: the action tray under a dialog. */
|
|
23
|
+
export declare const TRAY = "bg-kit-surface bg-[linear-gradient(180deg,rgb(216_216_216/0)_16.105%,rgb(216_216_216/0.6)_123.57%)] border-[#ededed] [.dark_&]:bg-[linear-gradient(180deg,oklch(0.32_0.005_286/0)_16.105%,oklch(0.32_0.005_286/0.6)_123.57%)] [.dark_&]:border-[#3a3a3d]";
|
package/ui/surfaces.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/kit/ui/surfaces.ts
|
|
2
|
+
/**
|
|
3
|
+
* V2's floating-surface recipes (src/styles/index.css .glass, .glass-ink, .bg-tray, --surface-raised, --floating-line),
|
|
4
|
+
* as class strings. kit.css has no tokens for these yet, so the V2 values are written out here, light and dark
|
|
5
|
+
* (`[.dark_&]` = the app is dark). Each one is a single constant so the integrator can swap it for a kit token later.
|
|
6
|
+
*
|
|
7
|
+
* Portalled layers render outside [data-kit-scope], where every --kit-* value is undefined. Every layer root here
|
|
8
|
+
* therefore carries KIT_SCOPE (data-kit-scope) itself.
|
|
9
|
+
*/
|
|
10
|
+
var KIT_SCOPE = { "data-kit-scope": "" };
|
|
11
|
+
/** .glass: popovers, menus, hover cards. */
|
|
12
|
+
var GLASS = "bg-kit-surface border-kit-line shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:bg-[#252528] [.dark_&]:border-kit-line-strong [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.04),0_12px_32px_-8px_oklch(0.12_0.01_286/0.5)]";
|
|
13
|
+
/** .glass-ink: tooltips (ink is dark in both themes). */
|
|
14
|
+
var INK = "bg-[#1c1c1e] text-[#f5f5f5] shadow-[0_10px_28px_-8px_rgb(0_0_0/0.35)] [.dark_&]:bg-[#3d3d40] [.dark_&]:text-[#ececef] [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.06),0_0_0_1px_rgb(255_255_255/0.12),0_14px_36px_-8px_oklch(0.12_0.01_286/0.55)]";
|
|
15
|
+
/** --ink-active: the kbd chip on ink. */
|
|
16
|
+
var INK_ACTIVE = "bg-[rgb(255_255_255/0.15)] [.dark_&]:bg-[rgb(255_255_255/0.13)]";
|
|
17
|
+
/** --surface-raised: dialogs, sheets, expanded editors. */
|
|
18
|
+
var SURFACE_RAISED = "bg-[var(--kit-surface-raised)]";
|
|
19
|
+
/** --floating-line: the edge of modals, sheets, expanded editors (= line; dark = line-strong). */
|
|
20
|
+
var FLOATING_LINE = "border-kit-line [.dark_&]:border-kit-line-strong";
|
|
21
|
+
/** .bg-tray + --tray-line: the action tray under a dialog. */
|
|
22
|
+
var TRAY = "bg-kit-surface bg-[linear-gradient(180deg,rgb(216_216_216/0)_16.105%,rgb(216_216_216/0.6)_123.57%)] border-[#ededed] [.dark_&]:bg-[linear-gradient(180deg,oklch(0.32_0.005_286/0)_16.105%,oklch(0.32_0.005_286/0.6)_123.57%)] [.dark_&]:border-[#3a3a3d]";
|
|
23
|
+
//#endregion
|
|
24
|
+
export { FLOATING_LINE, GLASS, INK, INK_ACTIVE, KIT_SCOPE, SURFACE_RAISED, TRAY };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=surfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surfaces.js","names":[],"sources":["../../src/kit/ui/surfaces.ts"],"sourcesContent":["/**\n * V2's floating-surface recipes (src/styles/index.css .glass, .glass-ink, .bg-tray, --surface-raised, --floating-line),\n * as class strings. kit.css has no tokens for these yet, so the V2 values are written out here, light and dark\n * (`[.dark_&]` = the app is dark). Each one is a single constant so the integrator can swap it for a kit token later.\n *\n * Portalled layers render outside [data-kit-scope], where every --kit-* value is undefined. Every layer root here\n * therefore carries KIT_SCOPE (data-kit-scope) itself.\n */\nexport const KIT_SCOPE = { \"data-kit-scope\": \"\" } as const;\n\n/** .glass: popovers, menus, hover cards. */\nexport const GLASS =\n \"bg-kit-surface border-kit-line shadow-[0_1px_2px_rgb(16_16_16/0.04),0_8px_24px_-6px_rgb(16_16_16/0.12)] [.dark_&]:bg-[#252528] [.dark_&]:border-kit-line-strong [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.04),0_12px_32px_-8px_oklch(0.12_0.01_286/0.5)]\";\n\n/** .glass-ink: tooltips (ink is dark in both themes). */\nexport const INK =\n \"bg-[#1c1c1e] text-[#f5f5f5] shadow-[0_10px_28px_-8px_rgb(0_0_0/0.35)] [.dark_&]:bg-[#3d3d40] [.dark_&]:text-[#ececef] [.dark_&]:shadow-[inset_0_1px_0_oklch(1_0_0/0.06),0_0_0_1px_rgb(255_255_255/0.12),0_14px_36px_-8px_oklch(0.12_0.01_286/0.55)]\";\n\n/** --ink-active: the kbd chip on ink. */\nexport const INK_ACTIVE = \"bg-[rgb(255_255_255/0.15)] [.dark_&]:bg-[rgb(255_255_255/0.13)]\";\n\n/** --surface-raised: dialogs, sheets, expanded editors. */\nexport const SURFACE_RAISED = \"bg-[var(--kit-surface-raised)]\";\n\n/** --floating-line: the edge of modals, sheets, expanded editors (= line; dark = line-strong). */\nexport const FLOATING_LINE = \"border-kit-line [.dark_&]:border-kit-line-strong\";\n\n/** .bg-tray + --tray-line: the action tray under a dialog. */\nexport const TRAY =\n \"bg-kit-surface bg-[linear-gradient(180deg,rgb(216_216_216/0)_16.105%,rgb(216_216_216/0.6)_123.57%)] border-[#ededed] [.dark_&]:bg-[linear-gradient(180deg,oklch(0.32_0.005_286/0)_16.105%,oklch(0.32_0.005_286/0.6)_123.57%)] [.dark_&]:border-[#3a3a3d]\";\n"],"mappings":";;;;;;;;;AAQA,IAAa,YAAY,EAAE,kBAAkB,IAAI;;AAGjD,IAAa,QACX;;AAGF,IAAa,MACX;;AAGF,IAAa,aAAa;;AAG1B,IAAa,iBAAiB;;AAG9B,IAAa,gBAAgB;;AAG7B,IAAa,OACX"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
|
|
3
|
+
export declare const MODAL_LAYER = "data-kit-modal-layer";
|
|
4
|
+
/** Drop-in for Tooltip.Root (controlled or not) that closes itself when a modal layer opens. */
|
|
5
|
+
export declare function TooltipRoot({ open: openProp, defaultOpen, onOpenChange, ...props }: TooltipPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
/** The ink tooltip surface (V2 .glass-ink, radius 6, 8×4 padding, 12/500, 1.45 leading, wraps, fades in 160ms). */
|
|
7
|
+
export declare const TOOLTIP_POPUP_CLASS: string;
|
|
8
|
+
/** Portal → positioner (6px offset, 8px collision padding, z-90, its own kit scope) → ink popup. */
|
|
9
|
+
export declare function TooltipLayer({ side, children, }: {
|
|
10
|
+
side?: "top" | "bottom" | "left" | "right";
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
import { INK, KIT_SCOPE } from "./surfaces.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Tooltip } from "@base-ui/react/tooltip";
|
|
6
|
+
//#region src/kit/ui/tooltip-root.tsx
|
|
7
|
+
var MODAL_LAYER = "data-kit-modal-layer";
|
|
8
|
+
var LAYER_SELECTOR = `[${MODAL_LAYER}]`;
|
|
9
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
10
|
+
var observer = null;
|
|
11
|
+
var layers = 0;
|
|
12
|
+
var EXPANDED_SELECTOR = "[aria-expanded=\"true\"]";
|
|
13
|
+
var count = () => (Number(document.body.getAttribute("data-scroll-locked")) || 0) + document.querySelectorAll(LAYER_SELECTOR).length + document.querySelectorAll(EXPANDED_SELECTOR).length;
|
|
14
|
+
function onModalLayerOpen(fn) {
|
|
15
|
+
if (typeof document === "undefined" || typeof MutationObserver === "undefined") return () => {};
|
|
16
|
+
if (!observer) {
|
|
17
|
+
layers = count();
|
|
18
|
+
observer = new MutationObserver(() => {
|
|
19
|
+
const n = count();
|
|
20
|
+
if (n > layers) listeners.forEach((l) => l());
|
|
21
|
+
layers = n;
|
|
22
|
+
});
|
|
23
|
+
observer.observe(document.body, {
|
|
24
|
+
attributes: true,
|
|
25
|
+
attributeFilter: ["data-scroll-locked", "aria-expanded"],
|
|
26
|
+
childList: true,
|
|
27
|
+
subtree: true
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
listeners.add(fn);
|
|
31
|
+
return () => {
|
|
32
|
+
listeners.delete(fn);
|
|
33
|
+
if (!listeners.size) {
|
|
34
|
+
observer?.disconnect();
|
|
35
|
+
observer = null;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Drop-in for Tooltip.Root (controlled or not) that closes itself when a modal layer opens. */
|
|
40
|
+
function TooltipRoot({ open: openProp, defaultOpen, onOpenChange, ...props }) {
|
|
41
|
+
const [inner, setInner] = React.useState(!!defaultOpen);
|
|
42
|
+
const open = openProp ?? inner;
|
|
43
|
+
const change = React.useRef(onOpenChange);
|
|
44
|
+
change.current = onOpenChange;
|
|
45
|
+
const set = React.useCallback((o, details) => {
|
|
46
|
+
setInner(o);
|
|
47
|
+
if (details) change.current?.(o, details);
|
|
48
|
+
}, []);
|
|
49
|
+
React.useEffect(() => open ? onModalLayerOpen(() => set(false)) : void 0, [open, set]);
|
|
50
|
+
return /* @__PURE__ */ jsx(Tooltip.Root, {
|
|
51
|
+
...props,
|
|
52
|
+
open,
|
|
53
|
+
onOpenChange: set
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/** The ink tooltip surface (V2 .glass-ink, radius 6, 8×4 padding, 12/500, 1.45 leading, wraps, fades in 160ms). */
|
|
57
|
+
var TOOLTIP_POPUP_CLASS = cn("flex max-w-[min(280px,calc(100vw-16px))] items-start gap-2 rounded-kit-md px-2 py-1 font-kit-sans text-kit-xs font-medium leading-[1.45] data-[open]:not-data-[instant]:animate-kit-fade-in", INK);
|
|
58
|
+
/** Portal → positioner (6px offset, 8px collision padding, z-90, its own kit scope) → ink popup. */
|
|
59
|
+
function TooltipLayer({ side = "top", children }) {
|
|
60
|
+
return /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
|
|
61
|
+
side,
|
|
62
|
+
sideOffset: 6,
|
|
63
|
+
collisionPadding: 8,
|
|
64
|
+
className: "z-[90]",
|
|
65
|
+
...KIT_SCOPE,
|
|
66
|
+
children: /* @__PURE__ */ jsx(Tooltip.Popup, {
|
|
67
|
+
"data-kit-tooltip": "",
|
|
68
|
+
className: TOOLTIP_POPUP_CLASS,
|
|
69
|
+
children
|
|
70
|
+
})
|
|
71
|
+
}) });
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { MODAL_LAYER, TooltipLayer, TooltipRoot };
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=tooltip-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip-root.js","names":[],"sources":["../../src/kit/ui/tooltip-root.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\";\nimport { cn } from \"../lib/cn\";\nimport { INK, KIT_SCOPE } from \"./surfaces\";\n\n/*\n * Tooltips close when a modal layer opens.\n *\n * Tooltips sit at z-90, above dialogs (60/61), the expanded editor (70/71) and menus (80), so a tooltip that is open\n * when a modal opens would stay on top of it: hover \"Site settings\", open a dialog, and the hint floats over it.\n * Every modal layer in the kit marks its popup with data-kit-modal-layer (and Radix layers elsewhere in the app count\n * their scroll locks in body[data-scroll-locked]); a popover or menu marks its trigger aria-expanded. When any count\n * rises, a new layer opened, so every open tooltip closes. Tooltips inside the new layer still open normally afterwards.\n */\nexport const MODAL_LAYER = \"data-kit-modal-layer\";\nconst LAYER_SELECTOR = `[${MODAL_LAYER}]`;\nconst listeners = new Set<() => void>();\nlet observer: MutationObserver | null = null;\nlet layers = 0;\n/*\n * A POPOVER OR MENU counts too, by the trigger it opened from (`aria-expanded=\"true\"`, which Base UI and Radix both\n * set). Tooltips sit at z-90 and the dashboard's popovers at --z-dropdown (450): a hint left open on a neighbouring\n * control when the publish popover opened stayed on screen UNDER it — ghost text behind the popover (closing QA\n * UI/UX #12). Non-modal popups mark nothing on the body, so they were never counted.\n */\nconst EXPANDED_SELECTOR = '[aria-expanded=\"true\"]';\nconst count = () =>\n (Number(document.body.getAttribute(\"data-scroll-locked\")) || 0) +\n document.querySelectorAll(LAYER_SELECTOR).length +\n document.querySelectorAll(EXPANDED_SELECTOR).length;\n\nfunction onModalLayerOpen(fn: () => void) {\n if (typeof document === \"undefined\" || typeof MutationObserver === \"undefined\") return () => {};\n if (!observer) {\n layers = count();\n observer = new MutationObserver(() => {\n const n = count();\n if (n > layers) listeners.forEach((l) => l());\n layers = n;\n });\n observer.observe(document.body, { attributes: true, attributeFilter: [\"data-scroll-locked\", \"aria-expanded\"], childList: true, subtree: true });\n }\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n if (!listeners.size) {\n observer?.disconnect();\n observer = null;\n }\n };\n}\n\n/** Drop-in for Tooltip.Root (controlled or not) that closes itself when a modal layer opens. */\nexport function TooltipRoot({ open: openProp, defaultOpen, onOpenChange, ...props }: TooltipPrimitive.Root.Props) {\n const [inner, setInner] = React.useState(!!defaultOpen);\n const open = openProp ?? inner;\n const change = React.useRef(onOpenChange);\n change.current = onOpenChange;\n const set = React.useCallback((o: boolean, details?: TooltipPrimitive.Root.ChangeEventDetails) => {\n setInner(o);\n if (details) change.current?.(o, details);\n }, []);\n React.useEffect(() => (open ? onModalLayerOpen(() => set(false)) : undefined), [open, set]);\n return <TooltipPrimitive.Root {...props} open={open} onOpenChange={set} />;\n}\n\n/** The ink tooltip surface (V2 .glass-ink, radius 6, 8×4 padding, 12/500, 1.45 leading, wraps, fades in 160ms). */\nexport const TOOLTIP_POPUP_CLASS = cn(\n \"flex max-w-[min(280px,calc(100vw-16px))] items-start gap-2 rounded-kit-md px-2 py-1 font-kit-sans text-kit-xs font-medium leading-[1.45] data-[open]:not-data-[instant]:animate-kit-fade-in\",\n INK,\n);\n\n/** Portal → positioner (6px offset, 8px collision padding, z-90, its own kit scope) → ink popup. */\nexport function TooltipLayer({\n side = \"top\",\n children,\n}: {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n children: React.ReactNode;\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner side={side} sideOffset={6} collisionPadding={8} className=\"z-[90]\" {...KIT_SCOPE}>\n <TooltipPrimitive.Popup data-kit-tooltip=\"\" className={TOOLTIP_POPUP_CLASS}>{children}</TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n"],"mappings":";;;;;;AAcA,IAAa,cAAc;AAC3B,IAAM,iBAAiB,IAAI,YAAY;AACvC,IAAM,4BAAY,IAAI,KAAiB;AACvC,IAAI,WAAoC;AACxC,IAAI,SAAS;AAOb,IAAM,oBAAoB;AAC1B,IAAM,eACH,OAAO,SAAS,KAAK,aAAa,qBAAqB,CAAC,IAAI,KAC7D,SAAS,iBAAiB,eAAe,CAAC,SAC1C,SAAS,iBAAiB,kBAAkB,CAAC;AAE/C,SAAS,iBAAiB,IAAgB;AACxC,KAAI,OAAO,aAAa,eAAe,OAAO,qBAAqB,YAAa,cAAa;AAC7F,KAAI,CAAC,UAAU;AACb,WAAS,OAAO;AAChB,aAAW,IAAI,uBAAuB;GACpC,MAAM,IAAI,OAAO;AACjB,OAAI,IAAI,OAAQ,WAAU,SAAS,MAAM,GAAG,CAAC;AAC7C,YAAS;IACT;AACF,WAAS,QAAQ,SAAS,MAAM;GAAE,YAAY;GAAM,iBAAiB,CAAC,sBAAsB,gBAAgB;GAAE,WAAW;GAAM,SAAS;GAAM,CAAC;;AAEjJ,WAAU,IAAI,GAAG;AACjB,cAAa;AACX,YAAU,OAAO,GAAG;AACpB,MAAI,CAAC,UAAU,MAAM;AACnB,aAAU,YAAY;AACtB,cAAW;;;;;AAMjB,SAAgB,YAAY,EAAE,MAAM,UAAU,aAAa,cAAc,GAAG,SAAsC;CAChH,MAAM,CAAC,OAAO,YAAY,MAAM,SAAS,CAAC,CAAC,YAAY;CACvD,MAAM,OAAO,YAAY;CACzB,MAAM,SAAS,MAAM,OAAO,aAAa;AACzC,QAAO,UAAU;CACjB,MAAM,MAAM,MAAM,aAAa,GAAY,YAAuD;AAChG,WAAS,EAAE;AACX,MAAI,QAAS,QAAO,UAAU,GAAG,QAAQ;IACxC,EAAE,CAAC;AACN,OAAM,gBAAiB,OAAO,uBAAuB,IAAI,MAAM,CAAC,GAAG,KAAA,GAAY,CAAC,MAAM,IAAI,CAAC;AAC3F,QAAO,oBAAC,QAAiB,MAAlB;EAAuB,GAAI;EAAa;EAAM,cAAc;EAAO,CAAA;;;AAI5E,IAAa,sBAAsB,GACjC,+LACA,IACD;;AAGD,SAAgB,aAAa,EAC3B,OAAO,OACP,YAIC;AACD,QACE,oBAAC,QAAiB,QAAlB,EAAA,UACE,oBAAC,QAAiB,YAAlB;EAAmC;EAAM,YAAY;EAAG,kBAAkB;EAAG,WAAU;EAAS,GAAI;YAClG,oBAAC,QAAiB,OAAlB;GAAwB,oBAAiB;GAAG,WAAW;GAAsB;GAAkC,CAAA;EACnF,CAAA,EACN,CAAA"}
|
package/ui/variants.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** The slice of class-variance-authority the kit uses (variants + defaults + compound variants), kept in-package. */
|
|
2
|
+
type Config<V extends Record<string, Record<string, string>>> = {
|
|
3
|
+
variants: V;
|
|
4
|
+
defaultVariants: {
|
|
5
|
+
[K in keyof V]: keyof V[K];
|
|
6
|
+
};
|
|
7
|
+
compoundVariants?: ({
|
|
8
|
+
[K in keyof V]?: keyof V[K];
|
|
9
|
+
} & {
|
|
10
|
+
className: string;
|
|
11
|
+
})[];
|
|
12
|
+
};
|
|
13
|
+
export type VariantProps<F> = F extends (props?: infer P) => string ? NonNullable<P> : never;
|
|
14
|
+
export declare function variants<V extends Record<string, Record<string, string>>>(base: string, config: Config<V>): (props?: { [K in keyof V]?: keyof V[K] | null; }) => string;
|
|
15
|
+
export {};
|
package/ui/variants.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { cn } from "../lib/cn.js";
|
|
2
|
+
//#region src/kit/ui/variants.ts
|
|
3
|
+
function variants(base, config) {
|
|
4
|
+
return (props) => {
|
|
5
|
+
const picked = {};
|
|
6
|
+
for (const key of Object.keys(config.variants)) picked[key] = props?.[key] ?? config.defaultVariants[key];
|
|
7
|
+
const compound = (config.compoundVariants ?? []).filter(({ className: _c, ...when }) => Object.entries(when).every(([k, v]) => picked[k] === v)).map((c) => c.className);
|
|
8
|
+
return cn(base, ...Object.keys(config.variants).map((k) => config.variants[k][picked[k]]), ...compound);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { variants };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.js","names":[],"sources":["../../src/kit/ui/variants.ts"],"sourcesContent":["import { cn } from \"../lib/cn\";\n\n/** The slice of class-variance-authority the kit uses (variants + defaults + compound variants), kept in-package. */\ntype Config<V extends Record<string, Record<string, string>>> = {\n variants: V;\n defaultVariants: { [K in keyof V]: keyof V[K] };\n compoundVariants?: ({ [K in keyof V]?: keyof V[K] } & { className: string })[];\n};\n\nexport type VariantProps<F> = F extends (props?: infer P) => string ? NonNullable<P> : never;\n\nexport function variants<V extends Record<string, Record<string, string>>>(base: string, config: Config<V>) {\n return (props?: { [K in keyof V]?: keyof V[K] | null }) => {\n const picked = {} as { [K in keyof V]: keyof V[K] };\n for (const key of Object.keys(config.variants) as (keyof V)[]) picked[key] = props?.[key] ?? config.defaultVariants[key];\n const compound = (config.compoundVariants ?? [])\n .filter(({ className: _c, ...when }) => Object.entries(when).every(([k, v]) => picked[k as keyof V] === v))\n .map((c) => c.className);\n return cn(base, ...(Object.keys(config.variants) as (keyof V)[]).map((k) => config.variants[k][picked[k] as string]), ...compound);\n };\n}\n"],"mappings":";;AAWA,SAAgB,SAA2D,MAAc,QAAmB;AAC1G,SAAQ,UAAmD;EACzD,MAAM,SAAS,EAAE;AACjB,OAAK,MAAM,OAAO,OAAO,KAAK,OAAO,SAAS,CAAiB,QAAO,OAAO,QAAQ,QAAQ,OAAO,gBAAgB;EACpH,MAAM,YAAY,OAAO,oBAAoB,EAAE,EAC5C,QAAQ,EAAE,WAAW,IAAI,GAAG,WAAW,OAAO,QAAQ,KAAK,CAAC,OAAO,CAAC,GAAG,OAAO,OAAO,OAAkB,EAAE,CAAC,CAC1G,KAAK,MAAM,EAAE,UAAU;AAC1B,SAAO,GAAG,MAAM,GAAI,OAAO,KAAK,OAAO,SAAS,CAAiB,KAAK,MAAM,OAAO,SAAS,GAAG,OAAO,IAAc,EAAE,GAAG,SAAS"}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Sanity.io
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/README.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# @bettercms-ai/kit
|
|
2
|
-
|
|
3
|
-
The BetterCMS component kit for React: layout and text primitives, buttons, inputs, menus,
|
|
4
|
-
dialogs, popovers, toasts, a theme builder (`@bettercms-ai/kit/theme`) and the workshop stories
|
|
5
|
-
the dashboard's style guide renders. Icons come from `@bettercms-ai/icons`.
|
|
6
|
-
|
|
7
|
-
```sh
|
|
8
|
-
npm install @bettercms-ai/kit @bettercms-ai/icons styled-components
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
| Import | What you get |
|
|
12
|
-
| --- | --- |
|
|
13
|
-
| `@bettercms-ai/kit` | Primitives, components, `ThemeProvider`, hooks. |
|
|
14
|
-
| `@bettercms-ai/kit/theme` | `buildTheme`, the theme types and colour helpers. |
|
|
15
|
-
|
|
16
|
-
The theme lives under the `bcms` key of the styled-components theme. React 18 or 19,
|
|
17
|
-
`react-dom`, `react-is` and styled-components 5.2+ or 6 are peer dependencies.
|
|
18
|
-
|
|
19
|
-
## How it is built
|
|
20
|
-
|
|
21
|
-
`scripts/build.mjs` rebuilds `src/`, `exports/` and `dist/` offline from two sha256-pinned
|
|
22
|
-
tarballs in `vendor/` and one rename table with an exact count per entry. `scripts/vendor-gate.mjs`
|
|
23
|
-
is the release gate: `node scripts/vendor-gate.mjs <tgz | dir | lockfile>...` must print 0 hits.
|
|
24
|
-
|
|
25
|
-
## License
|
|
26
|
-
|
|
27
|
-
MIT. The code keeps its original MIT copyright notice; see `LICENSE`.
|