@sanity/ui 4.0.0-static.9 → 5.0.0-alpha.1
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/README.md +201 -17
- package/bin/sanity-ui.js +14 -0
- package/dist/_chunks-es/LazyRefractor.js +20 -0
- package/dist/_chunks-es/LazyRefractor.js.map +1 -0
- package/dist/cli/checks.js +148 -0
- package/dist/cli/config.js +23 -0
- package/dist/cli/detect.js +181 -0
- package/dist/cli/doctor.js +49 -0
- package/dist/cli/index.js +69 -0
- package/dist/cli/init.js +189 -0
- package/dist/cli/install.js +78 -0
- package/dist/cli/log.js +66 -0
- package/dist/cli/selfPackage.js +11 -0
- package/dist/cli/styles.js +185 -0
- package/dist/cli/test-utils.js +8 -0
- package/dist/cli/tsconfig.js +236 -0
- package/dist/cli/types.js +1 -0
- package/dist/cli/versions.js +45 -0
- package/dist/index.d.ts +744 -2272
- package/dist/index.js +1743 -4395
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -0
- package/package.json +66 -206
- package/src/cli/checks.test.ts +38 -0
- package/src/cli/checks.ts +200 -0
- package/src/cli/config.ts +44 -0
- package/src/cli/detect.test.ts +191 -0
- package/src/cli/detect.ts +205 -0
- package/src/cli/doctor.test.ts +52 -0
- package/src/cli/doctor.ts +65 -0
- package/src/cli/index.ts +77 -0
- package/src/cli/init.ts +225 -0
- package/src/cli/install.test.ts +52 -0
- package/src/cli/install.ts +107 -0
- package/src/cli/log.ts +79 -0
- package/src/cli/selfPackage.ts +14 -0
- package/src/cli/styles.test.ts +130 -0
- package/src/cli/styles.ts +205 -0
- package/src/cli/test-utils.ts +10 -0
- package/src/cli/tsconfig.test.ts +174 -0
- package/src/cli/tsconfig.ts +282 -0
- package/src/cli/types.ts +77 -0
- package/src/cli/versions.test.ts +35 -0
- package/src/cli/versions.ts +41 -0
- package/src/components/box/Box.tsx +25 -0
- package/src/components/box/box.css +4 -0
- package/src/components/box/box.props.ts +24 -0
- package/src/components/button/Button.tsx +78 -0
- package/src/components/button/button.css +72 -0
- package/src/components/button/button.props.ts +104 -0
- package/src/components/card/Card.tsx +31 -0
- package/src/components/card/card.css +4 -0
- package/src/components/card/card.props.ts +54 -0
- package/src/components/checkbox/Checkbox.tsx +63 -0
- package/src/components/checkbox/checkbox.css +100 -0
- package/src/components/checkbox/checkbox.props.ts +25 -0
- package/src/components/code/Code.tsx +38 -0
- package/src/components/code/LazyRefractor.tsx +9 -0
- package/src/components/code/code.css +40 -0
- package/src/components/code/code.props.ts +37 -0
- package/src/components/container/Container.tsx +30 -0
- package/src/components/container/container.css +4 -0
- package/src/components/container/container.props.ts +24 -0
- package/src/components/divider/Divider.tsx +23 -0
- package/src/components/divider/divider.props.ts +9 -0
- package/src/components/eyebrow/Eyebrow.tsx +54 -0
- package/src/components/eyebrow/eyebrow.css +11 -0
- package/src/components/eyebrow/eyebrow.props.ts +24 -0
- package/src/components/flex/Flex.tsx +25 -0
- package/src/components/flex/flex.css +4 -0
- package/src/components/flex/flex.props.ts +29 -0
- package/src/components/grid/Grid.tsx +25 -0
- package/src/components/grid/grid.css +4 -0
- package/src/components/grid/grid.props.ts +29 -0
- package/src/components/h-stack/HStack.tsx +34 -0
- package/src/components/h-stack/hStack.props.ts +15 -0
- package/src/components/heading/Heading.tsx +54 -0
- package/src/components/heading/heading.css +9 -0
- package/src/components/heading/heading.props.ts +25 -0
- package/src/components/icon/Icon.tsx +24 -0
- package/src/components/icon/icon.css +17 -0
- package/src/components/icon/icon.props.ts +31 -0
- package/src/components/icon-button/IconButton.tsx +32 -0
- package/src/components/icon-button/iconButton.props.ts +26 -0
- package/src/components/index.css +25 -0
- package/src/components/indicator/Indicator.tsx +42 -0
- package/src/components/indicator/indicator.css +4 -0
- package/src/components/indicator/indicator.props.ts +20 -0
- package/src/components/indicator-stack/IndicatorStack.tsx +31 -0
- package/src/components/indicator-stack/indicator-stack.css +7 -0
- package/src/components/indicator-stack/indicatorStack.props.ts +13 -0
- package/src/components/inline/Inline.tsx +38 -0
- package/src/components/inline/inline.css +4 -0
- package/src/components/inline/inline.props.ts +96 -0
- package/src/components/label/Label.tsx +34 -0
- package/src/components/label/label.css +3 -0
- package/src/components/label/label.props.ts +19 -0
- package/src/components/link/Link.tsx +29 -0
- package/src/components/link/link.css +12 -0
- package/src/components/link/link.props.ts +23 -0
- package/src/components/list/List.tsx +167 -0
- package/src/components/list/list.css +25 -0
- package/src/components/list/list.props.ts +112 -0
- package/src/components/press-area/PressArea.tsx +29 -0
- package/src/components/press-area/press-area.css +22 -0
- package/src/components/press-area/pressArea.props.ts +14 -0
- package/src/components/radio/Radio.tsx +48 -0
- package/src/components/radio/radio.css +97 -0
- package/src/components/radio/radio.props.ts +20 -0
- package/src/components/skip-to-content/SkipToContent.tsx +35 -0
- package/src/components/skip-to-content/skip-to-content.css +9 -0
- package/src/components/skip-to-content/skipToContent.props.ts +19 -0
- package/src/components/spinner/Spinner.tsx +28 -0
- package/src/components/spinner/spinner.css +10 -0
- package/src/components/spinner/spinner.props.ts +16 -0
- package/src/components/switch/Switch.tsx +48 -0
- package/src/components/switch/switch.css +119 -0
- package/src/components/switch/switch.props.ts +20 -0
- package/src/components/text/Text.tsx +53 -0
- package/src/components/text/text.css +9 -0
- package/src/components/text/text.props.ts +24 -0
- package/src/components/tooltip/Tooltip.tsx +93 -0
- package/src/components/tooltip/tooltip.css +52 -0
- package/src/components/tooltip/tooltip.props.ts +20 -0
- package/src/components/tooltip-group/TooltipGroup.tsx +67 -0
- package/src/components/tooltip-group/tooltipGroup.props.ts +13 -0
- package/src/components/v-stack/VStack.tsx +32 -0
- package/src/components/v-stack/vStack.props.ts +15 -0
- package/src/components/visually-hidden/VisuallyHidden.tsx +29 -0
- package/src/components/visually-hidden/visually-hidden.css +9 -0
- package/src/components/visually-hidden/visuallyHidden.props.ts +19 -0
- package/src/css/classes/dynamic/flex-child.css +5 -0
- package/src/css/classes/dynamic/grid-child.css +8 -0
- package/src/css/classes/dynamic/grid-parent.css +6 -0
- package/src/css/classes/dynamic/height.css +5 -0
- package/src/css/classes/dynamic/index.css +7 -0
- package/src/css/classes/dynamic/line-clamp.css +5 -0
- package/src/css/classes/dynamic/readme.md +3 -0
- package/src/css/classes/dynamic/width.css +7 -0
- package/src/css/classes/dynamic/z-index.css +3 -0
- package/src/css/classes/generic/display.css +10 -0
- package/src/css/classes/generic/flex.css +24 -0
- package/src/css/classes/generic/grid.css +7 -0
- package/src/css/classes/generic/index.css +7 -0
- package/src/css/classes/generic/overflow.css +19 -0
- package/src/css/classes/generic/placement.css +171 -0
- package/src/css/classes/generic/position.css +7 -0
- package/src/css/classes/generic/readme.md +3 -0
- package/src/css/classes/generic/text-align.css +5 -0
- package/src/css/classes/index.css +4 -0
- package/src/css/classes/local/border.css +20 -0
- package/src/css/classes/local/index.css +4 -0
- package/src/css/classes/local/readme.md +3 -0
- package/src/css/classes/local/text-overflow.css +5 -0
- package/src/css/classes/local/text-trim.css +45 -0
- package/src/css/classes/local/tone.css +75 -0
- package/src/css/classes/system/color.css +223 -0
- package/src/css/classes/system/container.css +8 -0
- package/src/css/classes/system/font-family.css +2 -0
- package/src/css/classes/system/font-weight.css +4 -0
- package/src/css/classes/system/gap.css +37 -0
- package/src/css/classes/system/index.css +10 -0
- package/src/css/classes/system/inset.css +56 -0
- package/src/css/classes/system/margin.css +148 -0
- package/src/css/classes/system/padding.css +78 -0
- package/src/css/classes/system/radius.css +10 -0
- package/src/css/classes/system/readme.md +3 -0
- package/src/css/classes/system/shadow.css +6 -0
- package/src/css/classes/system/typography.css +31 -0
- package/src/css/global/font-face.css +20 -0
- package/src/css/global/index.css +2 -0
- package/src/css/global/reset.css +74 -0
- package/src/css/tokens/index.css +3 -0
- package/src/css/tokens/opacity.css +6 -0
- package/src/css/tokens/semantic.css +21 -0
- package/src/css/tokens/surface.css +27 -0
- package/src/index.css +18 -0
- package/src/index.ts +60 -0
- package/src/props/border.ts +51 -0
- package/src/props/flexChild.ts +29 -0
- package/src/props/flexParent.ts +47 -0
- package/src/props/gap.ts +31 -0
- package/src/props/gridChild.ts +50 -0
- package/src/props/gridParent.ts +45 -0
- package/src/props/height.ts +29 -0
- package/src/props/layout.ts +44 -0
- package/src/props/margin.ts +59 -0
- package/src/props/overflow.ts +30 -0
- package/src/props/padding.ts +59 -0
- package/src/props/placement.ts +16 -0
- package/src/props/position.ts +52 -0
- package/src/props/shadow.ts +15 -0
- package/src/props/tone.ts +15 -0
- package/src/props/typography.ts +62 -0
- package/src/props/width.ts +29 -0
- package/src/props/zIndex.ts +15 -0
- package/src/styles.css.d.ts +1 -0
- package/src/styles.css.node.js +2 -0
- package/src/styles.css.test.ts +24 -0
- package/src/types/Button.ts +8 -0
- package/src/types/Code.ts +6 -0
- package/src/types/Container.ts +3 -0
- package/src/types/Density.ts +3 -0
- package/src/types/Display.ts +11 -0
- package/src/types/Eyebrow.ts +3 -0
- package/src/types/Flex.ts +22 -0
- package/src/types/FontWeight.ts +3 -0
- package/src/types/Grid.ts +3 -0
- package/src/types/Heading.ts +6 -0
- package/src/types/Icon.ts +3 -0
- package/src/types/Interactive.ts +8 -0
- package/src/types/List.ts +2 -0
- package/src/types/Overflow.ts +3 -0
- package/src/types/Placement.ts +16 -0
- package/src/types/Position.ts +3 -0
- package/src/types/PropDef.ts +73 -0
- package/src/types/Radius.ts +3 -0
- package/src/types/Responsive.ts +10 -0
- package/src/types/Shadow.ts +3 -0
- package/src/types/Space.ts +15 -0
- package/src/types/Text.ts +3 -0
- package/src/types/TextAlign.ts +3 -0
- package/src/types/Tone.ts +3 -0
- package/src/utils/getProps.test.ts +156 -0
- package/src/utils/getProps.ts +156 -0
- package/src/utils/suffixClassName.ts +5 -0
- package/src/version.ts +3 -0
- package/LICENSE +0 -21
- package/dist/_chunks-cjs/refractor.cjs +0 -22
- package/dist/_chunks-cjs/refractor.cjs.map +0 -1
- package/dist/_chunks-es/refractor.js +0 -25
- package/dist/_chunks-es/refractor.js.map +0 -1
- package/dist/css/index.cjs +0 -966
- package/dist/css/index.cjs.map +0 -1
- package/dist/css/index.css +0 -23387
- package/dist/css/index.css.map +0 -1
- package/dist/css/index.d.cts +0 -1394
- package/dist/css/index.d.ts +0 -1394
- package/dist/css/index.js +0 -967
- package/dist/css/index.js.map +0 -1
- package/dist/index.cjs +0 -4515
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -2521
- package/dist/theme.cjs +0 -870
- package/dist/theme.cjs.map +0 -1
- package/dist/theme.d.cts +0 -499
- package/dist/theme.d.ts +0 -499
- package/dist/theme.js +0 -870
- package/dist/theme.js.map +0 -1
- package/exports/css.ts +0 -1
- package/exports/index.ts +0 -1
- package/exports/theme.ts +0 -1
- package/src/core/Root.tsx +0 -88
- package/src/core/RootProvider.tsx +0 -40
- package/src/core/__workshop__/boundary.tsx +0 -28
- package/src/core/__workshop__/index.ts +0 -16
- package/src/core/components/autocomplete/__workshop__/async.tsx +0 -156
- package/src/core/components/autocomplete/__workshop__/constrainedHeight.tsx +0 -131
- package/src/core/components/autocomplete/__workshop__/custom.tsx +0 -91
- package/src/core/components/autocomplete/__workshop__/example.tsx +0 -80
- package/src/core/components/autocomplete/__workshop__/focusAndBlur.tsx +0 -36
- package/src/core/components/autocomplete/__workshop__/fullscreen.tsx +0 -292
- package/src/core/components/autocomplete/__workshop__/index.ts +0 -41
- package/src/core/components/autocomplete/__workshop__/mock/apiStore.ts +0 -49
- package/src/core/components/autocomplete/__workshop__/mock/countries.ts +0 -245
- package/src/core/components/autocomplete/__workshop__/types.ts +0 -4
- package/src/core/components/autocomplete/autocomplete.tsx +0 -690
- 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/types.ts +0 -103
- package/src/core/components/breadcrumbs/__workshop__/example.tsx +0 -61
- package/src/core/components/breadcrumbs/__workshop__/index.ts +0 -16
- package/src/core/components/breadcrumbs/breadcrumbs.tsx +0 -131
- package/src/core/components/dialog/__workshop__/activate.tsx +0 -141
- package/src/core/components/dialog/__workshop__/autoFocus.tsx +0 -29
- package/src/core/components/dialog/__workshop__/index.ts +0 -21
- package/src/core/components/dialog/__workshop__/layering.tsx +0 -41
- package/src/core/components/dialog/__workshop__/nested.tsx +0 -71
- package/src/core/components/dialog/__workshop__/onScroll.tsx +0 -51
- package/src/core/components/dialog/__workshop__/panes.tsx +0 -89
- package/src/core/components/dialog/__workshop__/position.tsx +0 -30
- package/src/core/components/dialog/__workshop__/props.tsx +0 -77
- 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 -232
- package/src/core/components/dialog/dialogCard.tsx +0 -233
- package/src/core/components/dialog/dialogContext.ts +0 -21
- package/src/core/components/dialog/dialogProvider.tsx +0 -34
- package/src/core/components/dialog/isTargetWithinScope.ts +0 -14
- package/src/core/components/dialog/types.ts +0 -2
- package/src/core/components/dialog/useDialog.ts +0 -11
- package/src/core/components/hotkeys/__workshop__/index.ts +0 -16
- package/src/core/components/hotkeys/__workshop__/plain.tsx +0 -9
- package/src/core/components/hotkeys/hotkeys.tsx +0 -60
- package/src/core/components/menu/__workshop__/asComponent.tsx +0 -45
- package/src/core/components/menu/__workshop__/avatarMenu.tsx +0 -57
- package/src/core/components/menu/__workshop__/closableMenuButton.tsx +0 -47
- package/src/core/components/menu/__workshop__/constrainedInBoundary.tsx +0 -133
- package/src/core/components/menu/__workshop__/customMenuItem.tsx +0 -45
- package/src/core/components/menu/__workshop__/customSelectedState.tsx +0 -35
- 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 -91
- package/src/core/components/menu/__workshop__/menuButton.tsx +0 -80
- package/src/core/components/menu/__workshop__/menuGroupRight.tsx +0 -65
- package/src/core/components/menu/__workshop__/nestedMenu.tsx +0 -22
- package/src/core/components/menu/__workshop__/onCloseMenuButton.tsx +0 -50
- package/src/core/components/menu/__workshop__/selectedItem.tsx +0 -69
- package/src/core/components/menu/__workshop__/shouldFocus.tsx +0 -42
- 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/menu.test.tsx +0 -129
- package/src/core/components/menu/menu.tsx +0 -179
- package/src/core/components/menu/menuButton.tsx +0 -225
- package/src/core/components/menu/menuContext.ts +0 -19
- package/src/core/components/menu/menuDivider.tsx +0 -32
- package/src/core/components/menu/menuGroup.tsx +0 -233
- package/src/core/components/menu/menuItem.tsx +0 -184
- package/src/core/components/menu/useMenu.ts +0 -21
- package/src/core/components/menu/useMenuController.ts +0 -241
- package/src/core/components/tab/__workshop__/example.tsx +0 -79
- package/src/core/components/tab/__workshop__/index.ts +0 -16
- package/src/core/components/tab/tab.tsx +0 -109
- package/src/core/components/tab/tabList.tsx +0 -90
- package/src/core/components/tab/tabPanel.tsx +0 -47
- package/src/core/components/toast/__workshop__/hook.tsx +0 -71
- package/src/core/components/toast/__workshop__/index.ts +0 -21
- package/src/core/components/toast/__workshop__/toast.tsx +0 -26
- package/src/core/components/toast/toast.test.tsx +0 -103
- package/src/core/components/toast/toast.tsx +0 -191
- package/src/core/components/toast/toastContext.ts +0 -7
- package/src/core/components/toast/toastLayer.tsx +0 -54
- package/src/core/components/toast/toastProvider.tsx +0 -112
- package/src/core/components/toast/toastState.ts +0 -6
- package/src/core/components/toast/types.ts +0 -24
- package/src/core/components/toast/useToast.ts +0 -23
- 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 -23
- package/src/core/components/tree/__workshop__/tabFromElement.tsx +0 -84
- package/src/core/components/tree/helpers.ts +0 -105
- package/src/core/components/tree/tree.tsx +0 -248
- package/src/core/components/tree/treeContext.ts +0 -10
- package/src/core/components/tree/treeGroup.tsx +0 -46
- package/src/core/components/tree/treeItem.tsx +0 -237
- package/src/core/components/tree/types.ts +0 -24
- package/src/core/components/tree/useTree.ts +0 -17
- package/src/core/components/virtualList/__workshop__/changingProps.tsx +0 -36
- package/src/core/components/virtualList/__workshop__/elementScroll.tsx +0 -24
- package/src/core/components/virtualList/__workshop__/index.ts +0 -31
- package/src/core/components/virtualList/__workshop__/infiniteList.tsx +0 -48
- package/src/core/components/virtualList/__workshop__/windowScrolll.tsx +0 -22
- package/src/core/components/virtualList/virtualList.tsx +0 -209
- package/src/core/constants.ts +0 -67
- package/src/core/helpers/animation.ts +0 -27
- package/src/core/helpers/element.ts +0 -55
- package/src/core/helpers/focus.ts +0 -92
- package/src/core/helpers/props.ts +0 -28
- package/src/core/helpers/scroll.ts +0 -15
- package/src/core/hooks/useClickOutsideEvent.test.tsx +0 -114
- package/src/core/hooks/useClickOutsideEvent.ts +0 -67
- package/src/core/hooks/useCustomValidity.ts +0 -13
- package/src/core/hooks/useDelayed.test.ts +0 -67
- package/src/core/hooks/useDelayedState.ts +0 -28
- package/src/core/hooks/useElementSize.ts +0 -19
- package/src/core/hooks/useGlobalKeyDown.ts +0 -17
- package/src/core/hooks/useMatchMedia.ts +0 -28
- package/src/core/hooks/useMediaIndex/__workshop__/index.ts +0 -16
- package/src/core/hooks/useMediaIndex/__workshop__/test.tsx +0 -14
- package/src/core/hooks/useMediaIndex/useMediaIndex.test.tsx +0 -21
- package/src/core/hooks/useMediaIndex/useMediaIndex.ts +0 -107
- 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 -20
- 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 -20
- package/src/core/hooks/usePrefersReducedMotion.ts +0 -16
- package/src/core/hooks/useResponsiveProp.ts +0 -28
- package/src/core/index.ts +0 -115
- package/src/core/lib/createGlobalScopedContext.ts +0 -37
- package/src/core/lib/globalScope.ts +0 -19
- package/src/core/lib/isArray.ts +0 -3
- package/src/core/lib/isRecord.ts +0 -3
- package/src/core/middleware/origin.ts +0 -47
- package/src/core/observers/elementSize.ts +0 -116
- package/src/core/observers/resize.ts +0 -9
- package/src/core/primitives/arrow/arrow.tsx +0 -74
- package/src/core/primitives/arrow/cmds.ts +0 -91
- package/src/core/primitives/avatar/__workshop__/asButton.tsx +0 -14
- package/src/core/primitives/avatar/__workshop__/index.ts +0 -31
- package/src/core/primitives/avatar/__workshop__/stack.tsx +0 -25
- package/src/core/primitives/avatar/__workshop__/withinButton.tsx +0 -55
- package/src/core/primitives/avatar/__workshop__/withinMenuItem.tsx +0 -72
- package/src/core/primitives/avatar/avatar.tsx +0 -147
- package/src/core/primitives/avatar/avatarCounter.tsx +0 -69
- package/src/core/primitives/avatar/avatarStack.tsx +0 -79
- package/src/core/primitives/avatar/types.ts +0 -2
- package/src/core/primitives/badge/__workshop__/index.ts +0 -21
- package/src/core/primitives/badge/__workshop__/props.tsx +0 -19
- package/src/core/primitives/badge/__workshop__/tones.tsx +0 -16
- package/src/core/primitives/badge/badge.test.tsx +0 -16
- package/src/core/primitives/badge/badge.tsx +0 -61
- package/src/core/primitives/box/__workshop__/index.ts +0 -21
- 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.tsx +0 -222
- package/src/core/primitives/button/__workshop__/custom.tsx +0 -27
- package/src/core/primitives/button/__workshop__/customIcons.tsx +0 -30
- package/src/core/primitives/button/__workshop__/disabled.tsx +0 -54
- package/src/core/primitives/button/__workshop__/index.ts +0 -66
- 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__/sanityUploadButton.tsx +0 -36
- 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__/textOverflow.tsx +0 -13
- package/src/core/primitives/button/__workshop__/uploadButton.tsx +0 -29
- package/src/core/primitives/button/button.test.tsx +0 -30
- package/src/core/primitives/button/button.tsx +0 -193
- package/src/core/primitives/button/types.ts +0 -2
- 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 -20
- package/src/core/primitives/card/__workshop__/interactive.tsx +0 -29
- package/src/core/primitives/card/__workshop__/listNavigation.tsx +0 -78
- package/src/core/primitives/card/__workshop__/props.tsx +0 -52
- package/src/core/primitives/card/__workshop__/selected.tsx +0 -62
- package/src/core/primitives/card/__workshop__/styled.tsx +0 -14
- package/src/core/primitives/card/__workshop__/tones.tsx +0 -27
- package/src/core/primitives/card/card.tsx +0 -109
- package/src/core/primitives/card/cardContext.ts +0 -10
- package/src/core/primitives/card/cardProvider.tsx +0 -27
- package/src/core/primitives/card/types.ts +0 -17
- package/src/core/primitives/card/useCard.ts +0 -15
- package/src/core/primitives/checkbox/__workshop__/example.tsx +0 -25
- package/src/core/primitives/checkbox/__workshop__/index.ts +0 -15
- package/src/core/primitives/checkbox/__workshop__/props.tsx +0 -35
- package/src/core/primitives/checkbox/__workshop__/readOnly.tsx +0 -16
- package/src/core/primitives/checkbox/__workshop__/tones.tsx +0 -27
- package/src/core/primitives/checkbox/checkbox.tsx +0 -80
- package/src/core/primitives/code/__workshop__/index.ts +0 -21
- package/src/core/primitives/code/__workshop__/opticalAlignment.tsx +0 -23
- package/src/core/primitives/code/__workshop__/props.tsx +0 -18
- package/src/core/primitives/code/code.tsx +0 -48
- package/src/core/primitives/code/refractor.tsx +0 -18
- package/src/core/primitives/container/__workshop__/example.tsx +0 -20
- package/src/core/primitives/container/__workshop__/index.ts +0 -10
- package/src/core/primitives/container/container.tsx +0 -37
- 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 -13
- package/src/core/primitives/flex/flex.tsx +0 -58
- package/src/core/primitives/grid/__workshop__/index.ts +0 -12
- package/src/core/primitives/grid/__workshop__/responsive.tsx +0 -54
- package/src/core/primitives/grid/grid.tsx +0 -35
- package/src/core/primitives/heading/__workshop__/index.ts +0 -21
- package/src/core/primitives/heading/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/heading/__workshop__/plain.tsx +0 -29
- package/src/core/primitives/heading/heading.tsx +0 -78
- package/src/core/primitives/inline/__workshop__/index.ts +0 -10
- package/src/core/primitives/inline/__workshop__/plain.tsx +0 -24
- package/src/core/primitives/inline/inline.tsx +0 -62
- package/src/core/primitives/kbd/__workshop__/index.ts +0 -10
- package/src/core/primitives/kbd/__workshop__/plain.tsx +0 -9
- package/src/core/primitives/kbd/kbd.tsx +0 -57
- package/src/core/primitives/label/__workshop__/index.ts +0 -21
- package/src/core/primitives/label/__workshop__/opticalAlignment.tsx +0 -54
- package/src/core/primitives/label/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/label/label.tsx +0 -75
- package/src/core/primitives/layer/__workshop__/_debug.tsx +0 -17
- package/src/core/primitives/layer/__workshop__/index.ts +0 -26
- package/src/core/primitives/layer/__workshop__/multipleRoots.tsx +0 -49
- package/src/core/primitives/layer/__workshop__/nested.tsx +0 -98
- package/src/core/primitives/layer/__workshop__/responsiveZOffset.tsx +0 -17
- package/src/core/primitives/layer/getLayerContext.test.ts +0 -32
- package/src/core/primitives/layer/getLayerContext.ts +0 -21
- package/src/core/primitives/layer/layer.test.tsx +0 -110
- package/src/core/primitives/layer/layer.tsx +0 -42
- package/src/core/primitives/layer/layerCard.tsx +0 -90
- package/src/core/primitives/layer/layerContext.ts +0 -7
- package/src/core/primitives/layer/layerProvider.tsx +0 -106
- package/src/core/primitives/layer/types.ts +0 -9
- package/src/core/primitives/layer/useLayer.ts +0 -24
- 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 -69
- package/src/core/primitives/popover/__workshop__/SidePanelStory.tsx +0 -96
- package/src/core/primitives/popover/__workshop__/TestStory.tsx +0 -100
- package/src/core/primitives/popover/__workshop__/index.ts +0 -51
- package/src/core/primitives/popover/constants.ts +0 -22
- package/src/core/primitives/popover/floating-ui/size.ts +0 -83
- package/src/core/primitives/popover/helpers.ts +0 -32
- package/src/core/primitives/popover/popover.tsx +0 -443
- package/src/core/primitives/popover/popoverLayer.tsx +0 -149
- package/src/core/primitives/popover/types.ts +0 -12
- package/src/core/primitives/radio/__workshop__/example.tsx +0 -63
- package/src/core/primitives/radio/__workshop__/index.ts +0 -13
- package/src/core/primitives/radio/__workshop__/plain.tsx +0 -28
- package/src/core/primitives/radio/radio.tsx +0 -64
- package/src/core/primitives/select/__workshop__/index.ts +0 -13
- package/src/core/primitives/select/__workshop__/plain.tsx +0 -39
- package/src/core/primitives/select/__workshop__/readOnly.tsx +0 -23
- package/src/core/primitives/select/select.tsx +0 -75
- package/src/core/primitives/selectable/selectable.tsx +0 -50
- package/src/core/primitives/skeleton/__workshop__/delay.tsx +0 -70
- package/src/core/primitives/skeleton/__workshop__/index.ts +0 -13
- package/src/core/primitives/skeleton/__workshop__/skeleton.tsx +0 -64
- package/src/core/primitives/skeleton/codeSkeleton.tsx +0 -49
- package/src/core/primitives/skeleton/headingSkeleton.tsx +0 -48
- package/src/core/primitives/skeleton/labelSkeleton.tsx +0 -47
- package/src/core/primitives/skeleton/skeleton.tsx +0 -70
- package/src/core/primitives/skeleton/textSkeleton.tsx +0 -49
- package/src/core/primitives/spinner/__workshop__/Props.tsx +0 -15
- package/src/core/primitives/spinner/__workshop__/index.ts +0 -16
- package/src/core/primitives/spinner/animatedSpinnerIcon.tsx +0 -14
- package/src/core/primitives/spinner/spinner.tsx +0 -45
- package/src/core/primitives/srOnly/srOnly.tsx +0 -33
- package/src/core/primitives/stack/__workshop__/index.ts +0 -16
- package/src/core/primitives/stack/__workshop__/plain.tsx +0 -32
- package/src/core/primitives/stack/stack.tsx +0 -60
- package/src/core/primitives/switch/__workshop__/example.tsx +0 -23
- package/src/core/primitives/switch/__workshop__/index.ts +0 -13
- package/src/core/primitives/switch/__workshop__/props.tsx +0 -21
- package/src/core/primitives/switch/switch.tsx +0 -84
- package/src/core/primitives/text/__workshop__/colored.tsx +0 -23
- package/src/core/primitives/text/__workshop__/example.tsx +0 -28
- package/src/core/primitives/text/__workshop__/index.ts +0 -26
- package/src/core/primitives/text/__workshop__/opticalAlignment.tsx +0 -23
- package/src/core/primitives/text/text.tsx +0 -76
- package/src/core/primitives/textArea/__workshop__/index.ts +0 -16
- package/src/core/primitives/textArea/__workshop__/plain.tsx +0 -61
- package/src/core/primitives/textArea/textArea.tsx +0 -84
- 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 -46
- package/src/core/primitives/textInput/__workshop__/plain.tsx +0 -110
- 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/textInput.tsx +0 -258
- package/src/core/primitives/tooltip/__workshop__/customPortal.tsx +0 -102
- package/src/core/primitives/tooltip/__workshop__/index.ts +0 -31
- package/src/core/primitives/tooltip/__workshop__/overflowingBoundary.tsx +0 -74
- package/src/core/primitives/tooltip/__workshop__/props.tsx +0 -112
- package/src/core/primitives/tooltip/__workshop__/resizableBoundary.tsx +0 -86
- package/src/core/primitives/tooltip/constants.ts +0 -23
- package/src/core/primitives/tooltip/tooltip.test.tsx +0 -452
- package/src/core/primitives/tooltip/tooltip.tsx +0 -482
- package/src/core/primitives/tooltip/tooltipDelayGroup/index.ts +0 -4
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupContext.tsx +0 -13
- package/src/core/primitives/tooltip/tooltipDelayGroup/tooltipDelayGroupProvider.tsx +0 -55
- package/src/core/primitives/tooltip/tooltipDelayGroup/types.ts +0 -10
- package/src/core/primitives/tooltip/tooltipDelayGroup/useTooltipDelayGroup.ts +0 -13
- package/src/core/primitives/tooltip/tooltipLayer.tsx +0 -106
- package/src/core/types.ts +0 -56
- package/src/core/utils/boundaryElement/__workshop__/index.ts +0 -16
- package/src/core/utils/boundaryElement/__workshop__/plain.tsx +0 -19
- package/src/core/utils/boundaryElement/boundaryElement.test.tsx +0 -102
- package/src/core/utils/boundaryElement/boundaryElementContext.ts +0 -10
- package/src/core/utils/boundaryElement/boundaryElementProvider.tsx +0 -18
- package/src/core/utils/boundaryElement/types.ts +0 -5
- package/src/core/utils/boundaryElement/useBoundaryElement.ts +0 -24
- package/src/core/utils/elementQuery/__workshop__/customMedia.tsx +0 -41
- package/src/core/utils/elementQuery/__workshop__/index.ts +0 -16
- package/src/core/utils/elementQuery/elementQuery.tsx +0 -75
- package/src/core/utils/elementQuery/helpers.ts +0 -27
- package/src/core/utils/errorBoundary.tsx +0 -50
- package/src/core/utils/getElementRef.ts +0 -29
- package/src/core/utils/portal/__workshop__/index.ts +0 -16
- package/src/core/utils/portal/__workshop__/named.tsx +0 -63
- package/src/core/utils/portal/portal.test.tsx +0 -105
- package/src/core/utils/portal/portal.tsx +0 -36
- package/src/core/utils/portal/portalContext.ts +0 -37
- package/src/core/utils/portal/portalProvider.tsx +0 -70
- package/src/core/utils/portal/types.ts +0 -7
- package/src/core/utils/portal/usePortal.ts +0 -23
- package/src/css/_assign.ts +0 -3
- package/src/css/_composeClassNames.ts +0 -12
- package/src/css/_fromEntries.ts +0 -3
- package/src/css/_getClassNames.ts +0 -9
- package/src/css/_responsiveClassName.ts +0 -45
- package/src/css/_responsiveStyle.css.ts +0 -34
- package/src/css/_style.css.ts +0 -9
- package/src/css/components/breadcrumbs/breadcrumbs.css.ts +0 -6
- package/src/css/components/breadcrumbs/breadcrumbs.ts +0 -7
- package/src/css/components/dialog/dialog.css.ts +0 -98
- package/src/css/components/dialog/dialog.ts +0 -58
- package/src/css/components/menu/menu.css.ts +0 -14
- package/src/css/components/menu/menu.ts +0 -12
- package/src/css/components/skeleton/skeleton.css.ts +0 -128
- package/src/css/components/skeleton/skeleton.ts +0 -38
- package/src/css/components/skeleton/types.ts +0 -36
- package/src/css/components/toast/toast.css.ts +0 -17
- package/src/css/components/toast/toast.ts +0 -11
- package/src/css/components/tree/tree.css.ts +0 -65
- package/src/css/components/tree/tree.ts +0 -7
- package/src/css/constants.ts +0 -10
- package/src/css/getVarName.ts +0 -27
- package/src/css/index.ts +0 -146
- package/src/css/layers.css.ts +0 -12
- package/src/css/primitives/_arrow/_arrow.css.ts +0 -68
- package/src/css/primitives/_arrow/_arrow.ts +0 -26
- package/src/css/primitives/_input/_input.css.ts +0 -261
- package/src/css/primitives/_input/input.ts +0 -29
- package/src/css/primitives/_input/types.ts +0 -13
- package/src/css/primitives/avatar/avatar.css.ts +0 -201
- package/src/css/primitives/avatar/avatar.ts +0 -68
- package/src/css/primitives/avatar/types.ts +0 -10
- package/src/css/primitives/badge/badge.css.ts +0 -27
- package/src/css/primitives/badge/badge.ts +0 -8
- package/src/css/primitives/badge/types.ts +0 -13
- package/src/css/primitives/box/box.css.ts +0 -19
- package/src/css/primitives/box/box.ts +0 -82
- package/src/css/primitives/box/types.ts +0 -75
- package/src/css/primitives/button/button.css.ts +0 -287
- package/src/css/primitives/button/button.ts +0 -26
- package/src/css/primitives/button/types.ts +0 -12
- package/src/css/primitives/card/__workshop__/color.tsx +0 -75
- package/src/css/primitives/card/__workshop__/index.ts +0 -16
- package/src/css/primitives/card/card.css.ts +0 -387
- package/src/css/primitives/card/card.ts +0 -13
- package/src/css/primitives/card/types.ts +0 -9
- package/src/css/primitives/checkbox/checkbox.css.ts +0 -193
- package/src/css/primitives/checkbox/checkbox.ts +0 -17
- package/src/css/primitives/code/code.css.ts +0 -272
- package/src/css/primitives/code/code.ts +0 -19
- package/src/css/primitives/code/types.ts +0 -11
- package/src/css/primitives/container/container.css.ts +0 -4
- package/src/css/primitives/container/container.ts +0 -17
- package/src/css/primitives/container/types.ts +0 -9
- package/src/css/primitives/heading/heading.css.ts +0 -86
- package/src/css/primitives/heading/heading.ts +0 -22
- package/src/css/primitives/heading/types.ts +0 -14
- package/src/css/primitives/kbd/kbd.css.ts +0 -16
- package/src/css/primitives/kbd/kbd.ts +0 -9
- package/src/css/primitives/kbd/types.ts +0 -6
- package/src/css/primitives/label/label.css.ts +0 -87
- package/src/css/primitives/label/label.ts +0 -22
- package/src/css/primitives/label/types.ts +0 -14
- package/src/css/primitives/popover/popover.css.ts +0 -6
- package/src/css/primitives/popover/popover.ts +0 -12
- package/src/css/primitives/radio/radio.css.ts +0 -78
- package/src/css/primitives/radio/radio.ts +0 -17
- package/src/css/primitives/root/root.css.ts +0 -19
- package/src/css/primitives/root/root.ts +0 -17
- package/src/css/primitives/root/types.ts +0 -10
- package/src/css/primitives/select/select.css.ts +0 -24
- package/src/css/primitives/select/select.ts +0 -14
- package/src/css/primitives/select/types.ts +0 -5
- package/src/css/primitives/selectable/selectable.css.ts +0 -131
- package/src/css/primitives/selectable/selectable.ts +0 -9
- package/src/css/primitives/selectable/types.ts +0 -9
- package/src/css/primitives/spinner/spinner.css.ts +0 -19
- package/src/css/primitives/spinner/spinner.ts +0 -13
- package/src/css/primitives/spinner/types.ts +0 -4
- package/src/css/primitives/srOnly/srOnly.css.ts +0 -10
- package/src/css/primitives/srOnly/srOnly.ts +0 -7
- package/src/css/primitives/stack/stack.css.ts +0 -6
- package/src/css/primitives/stack/stack.ts +0 -7
- package/src/css/primitives/switch/switch.css.ts +0 -98
- package/src/css/primitives/switch/switch.ts +0 -27
- package/src/css/primitives/text/text.css.ts +0 -86
- package/src/css/primitives/text/text.ts +0 -24
- package/src/css/primitives/text/types.ts +0 -18
- package/src/css/primitives/textArea/textArea.css.ts +0 -4
- package/src/css/primitives/textArea/textArea.ts +0 -9
- package/src/css/primitives/textArea/types.ts +0 -7
- package/src/css/primitives/textInput/textInput.css.ts +0 -43
- package/src/css/primitives/textInput/textInput.ts +0 -24
- package/src/css/primitives/textInput/types.ts +0 -7
- package/src/css/primitives/tooltip/tooltip.css.ts +0 -4
- package/src/css/primitives/tooltip/tooltip.ts +0 -8
- package/src/css/primitives/tooltip/types.ts +0 -4
- package/src/css/props/alignItems/alignItems.css.ts +0 -22
- package/src/css/props/alignItems/alignItems.ts +0 -8
- package/src/css/props/alignItems/types.ts +0 -9
- package/src/css/props/border/border.css.ts +0 -65
- package/src/css/props/border/border.ts +0 -21
- package/src/css/props/border/types.ts +0 -13
- package/src/css/props/boxSizing/boxSizing.css.ts +0 -12
- package/src/css/props/boxSizing/boxSizing.ts +0 -7
- package/src/css/props/boxSizing/types.ts +0 -7
- package/src/css/props/display/display.css.ts +0 -56
- package/src/css/props/display/display.ts +0 -8
- package/src/css/props/display/types.ts +0 -16
- package/src/css/props/flex/flex.css.ts +0 -52
- package/src/css/props/flex/flex.ts +0 -8
- package/src/css/props/flex/types.ts +0 -9
- package/src/css/props/flexDirection/flexDirection.css.ts +0 -19
- package/src/css/props/flexDirection/flexDirection.ts +0 -8
- package/src/css/props/flexDirection/types.ts +0 -9
- package/src/css/props/flexWrap/flexWrap.css.ts +0 -16
- package/src/css/props/flexWrap/flexWrap.ts +0 -8
- package/src/css/props/flexWrap/types.ts +0 -9
- package/src/css/props/font/font.css.ts +0 -94
- package/src/css/props/font/font.ts +0 -8
- package/src/css/props/font/types.ts +0 -6
- package/src/css/props/gap/gap.css.ts +0 -40
- package/src/css/props/gap/gap.ts +0 -13
- package/src/css/props/gap/types.ts +0 -10
- package/src/css/props/gridAutoColumns/gridAutoColumns.css.ts +0 -19
- package/src/css/props/gridAutoColumns/gridAutoColumns.ts +0 -8
- package/src/css/props/gridAutoColumns/types.ts +0 -9
- package/src/css/props/gridAutoFlow/gridAutoFlow.css.ts +0 -19
- package/src/css/props/gridAutoFlow/gridAutoFlow.ts +0 -8
- package/src/css/props/gridAutoFlow/types.ts +0 -9
- package/src/css/props/gridAutoRows/gridAutoRows.css.ts +0 -19
- package/src/css/props/gridAutoRows/gridAutoRows.ts +0 -8
- package/src/css/props/gridAutoRows/types.ts +0 -9
- package/src/css/props/gridColumn/gridColumn.css.ts +0 -49
- package/src/css/props/gridColumn/gridColumn.ts +0 -8
- package/src/css/props/gridColumn/types.ts +0 -9
- package/src/css/props/gridColumnEnd/gridColumnEnd.css.ts +0 -46
- package/src/css/props/gridColumnEnd/gridColumnEnd.ts +0 -8
- package/src/css/props/gridColumnEnd/types.ts +0 -9
- package/src/css/props/gridColumnStart/gridColumnStart.css.ts +0 -46
- package/src/css/props/gridColumnStart/gridColumnStart.ts +0 -8
- package/src/css/props/gridColumnStart/types.ts +0 -9
- package/src/css/props/gridRow/gridRow.css.ts +0 -49
- package/src/css/props/gridRow/gridRow.ts +0 -8
- package/src/css/props/gridRow/types.ts +0 -9
- package/src/css/props/gridRowEnd/gridRowEnd.css.ts +0 -46
- package/src/css/props/gridRowEnd/gridRowEnd.ts +0 -8
- package/src/css/props/gridRowEnd/types.ts +0 -9
- package/src/css/props/gridRowStart/gridRowStart.css.ts +0 -46
- package/src/css/props/gridRowStart/gridRowStart.ts +0 -8
- package/src/css/props/gridRowStart/types.ts +0 -9
- package/src/css/props/gridTemplateColumns/gridTemplateColumns.css.ts +0 -43
- package/src/css/props/gridTemplateColumns/gridTemplateColumns.ts +0 -8
- package/src/css/props/gridTemplateColumns/types.ts +0 -9
- package/src/css/props/gridTemplateRows/gridTemplateRows.css.ts +0 -43
- package/src/css/props/gridTemplateRows/gridTemplateRows.ts +0 -8
- package/src/css/props/gridTemplateRows/types.ts +0 -9
- package/src/css/props/height/height.css.ts +0 -25
- package/src/css/props/height/height.ts +0 -8
- package/src/css/props/height/types.ts +0 -9
- package/src/css/props/inset/inset.css.ts +0 -37
- package/src/css/props/inset/inset.ts +0 -21
- package/src/css/props/inset/types.ts +0 -13
- package/src/css/props/justifyContent/justifyContent.css.ts +0 -25
- package/src/css/props/justifyContent/justifyContent.ts +0 -8
- package/src/css/props/justifyContent/types.ts +0 -15
- package/src/css/props/margin/margin.css.ts +0 -117
- package/src/css/props/margin/margin.ts +0 -25
- package/src/css/props/margin/types.ts +0 -17
- package/src/css/props/maxWidth/maxWidth.css.ts +0 -32
- package/src/css/props/maxWidth/maxWidth.ts +0 -8
- package/src/css/props/maxWidth/types.ts +0 -11
- package/src/css/props/minHeight/minHeight.css.ts +0 -13
- package/src/css/props/minHeight/minHeight.ts +0 -8
- package/src/css/props/minHeight/types.ts +0 -9
- package/src/css/props/minWidth/minWidth.css.ts +0 -25
- package/src/css/props/minWidth/minWidth.ts +0 -8
- package/src/css/props/minWidth/types.ts +0 -9
- package/src/css/props/outline/outline.css.ts +0 -10
- package/src/css/props/outline/outline.ts +0 -8
- package/src/css/props/outline/types.ts +0 -7
- package/src/css/props/overflow/overflow.css.ts +0 -16
- package/src/css/props/overflow/overflow.ts +0 -8
- package/src/css/props/overflow/types.ts +0 -11
- package/src/css/props/padding/padding.css.ts +0 -87
- package/src/css/props/padding/padding.ts +0 -25
- package/src/css/props/padding/types.ts +0 -17
- package/src/css/props/pointerEvents/pointerEvents.css.ts +0 -13
- package/src/css/props/pointerEvents/pointerEvents.ts +0 -8
- package/src/css/props/pointerEvents/types.ts +0 -7
- package/src/css/props/position/position.css.ts +0 -22
- package/src/css/props/position/position.ts +0 -8
- package/src/css/props/position/types.ts +0 -9
- package/src/css/props/radius/radius.css.ts +0 -21
- package/src/css/props/radius/radius.ts +0 -8
- package/src/css/props/radius/types.ts +0 -8
- package/src/css/props/shadow/shadow.css.ts +0 -23
- package/src/css/props/shadow/shadow.ts +0 -8
- package/src/css/props/shadow/types.ts +0 -8
- package/src/css/props/textAlign/textAlign.css.ts +0 -22
- package/src/css/props/textAlign/textAlign.ts +0 -8
- package/src/css/props/textAlign/types.ts +0 -7
- package/src/css/props/textOverflow/textOverflow.css.ts +0 -19
- package/src/css/props/textOverflow/textOverflow.ts +0 -8
- package/src/css/props/textOverflow/types.ts +0 -12
- package/src/css/props/width/types.ts +0 -11
- package/src/css/props/width/width.css.ts +0 -31
- package/src/css/props/width/width.ts +0 -8
- package/src/css/theme/buildCSSTheme.ts +0 -488
- package/src/css/theme/defaultTheme.css.ts +0 -64
- package/src/css/types.ts +0 -427
- package/src/css/vars.css.ts +0 -676
- package/src/theme/_parseColorToken.ts +0 -180
- package/src/theme/buildTheme.ts +0 -32
- package/src/theme/constants.ts +0 -90
- package/src/theme/defaults/color.ts +0 -197
- package/src/theme/defaults/common.ts +0 -71
- package/src/theme/defaults/fonts.ts +0 -250
- package/src/theme/index.ts +0 -5
- package/src/theme/merge.ts +0 -24
- package/src/theme/resolveTokens.ts +0 -204
- package/src/theme/types.ts +0 -366
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { resolve } from 'node:path';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { parseArgs } from 'node:util';
|
|
4
|
+
import { runDoctor } from './doctor.js';
|
|
5
|
+
import { runInit } from './init.js';
|
|
6
|
+
import { color, fail, info } from './log.js';
|
|
7
|
+
import { readSelfPackage } from './selfPackage.js';
|
|
8
|
+
const HELP = `${color.bold('@sanity/ui')} setup CLI
|
|
9
|
+
|
|
10
|
+
${color.bold('Usage')}
|
|
11
|
+
npx @sanity/ui@alpha <command> [options]
|
|
12
|
+
|
|
13
|
+
${color.bold('Commands')}
|
|
14
|
+
init Scaffold a correct Sanity UI install (deps, stylesheet, tsconfig)
|
|
15
|
+
doctor Check an existing setup and report fixes
|
|
16
|
+
|
|
17
|
+
${color.bold('Options')}
|
|
18
|
+
--dry Print the plan and exit without changing anything (init)
|
|
19
|
+
--yes, -y Accept every prompt with its default (non-interactive)
|
|
20
|
+
--cwd <dir> Run against another directory (default: current directory)
|
|
21
|
+
--version Print the CLI version
|
|
22
|
+
--help, -h Show this help
|
|
23
|
+
`;
|
|
24
|
+
/**
|
|
25
|
+
* Parses arguments and dispatches to a command. `parseArgs` runs in strict mode,
|
|
26
|
+
* so an unknown flag throws from here and is caught by the bin wrapper. Exit
|
|
27
|
+
* codes: 0 on success or an explicit `--help`, 1 on misuse (no or unknown command).
|
|
28
|
+
*/
|
|
29
|
+
export async function main(argv) {
|
|
30
|
+
const { values, positionals } = parseArgs({
|
|
31
|
+
args: argv,
|
|
32
|
+
allowPositionals: true,
|
|
33
|
+
options: {
|
|
34
|
+
dry: { type: 'boolean', default: false },
|
|
35
|
+
yes: { type: 'boolean', short: 'y', default: false },
|
|
36
|
+
cwd: { type: 'string' },
|
|
37
|
+
version: { type: 'boolean', default: false },
|
|
38
|
+
help: { type: 'boolean', short: 'h', default: false },
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
if (values.version) {
|
|
42
|
+
info(readSelfPackage().version ?? 'unknown');
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
const command = positionals[0];
|
|
46
|
+
if (values.help) {
|
|
47
|
+
info(HELP);
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
if (!command) {
|
|
51
|
+
info(HELP);
|
|
52
|
+
return 1;
|
|
53
|
+
}
|
|
54
|
+
const options = {
|
|
55
|
+
dry: values.dry ?? false,
|
|
56
|
+
yes: values.yes ?? false,
|
|
57
|
+
cwd: values.cwd ? resolve(process.cwd(), values.cwd) : process.cwd(),
|
|
58
|
+
};
|
|
59
|
+
switch (command) {
|
|
60
|
+
case 'init':
|
|
61
|
+
return runInit(options);
|
|
62
|
+
case 'doctor':
|
|
63
|
+
return runDoctor(options);
|
|
64
|
+
default:
|
|
65
|
+
fail(`Unknown command: ${command}`);
|
|
66
|
+
info(HELP);
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { basename } from 'node:path';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { verifyAfterInit } from './checks.js';
|
|
4
|
+
import { buildConfig, CONFIG_FILE, configExists, writeConfig } from './config.js';
|
|
5
|
+
import { detect, LEGACY_COEXISTENCE_HINT, PACKAGE_NAME } from './detect.js';
|
|
6
|
+
import { printChecks } from './doctor.js';
|
|
7
|
+
import { installCommand, resolveInstallSpecs, resolveTypeSpecs, runInstall } from './install.js';
|
|
8
|
+
import { color, confirm, fail, heading, info, step, success, warn } from './log.js';
|
|
9
|
+
import { inspectStylesheet, STYLES_SPECIFIER, wireStylesheet } from './styles.js';
|
|
10
|
+
import { inspectTsconfig, reconcileTsconfig } from './tsconfig.js';
|
|
11
|
+
import { meetsNode, meetsReact, NODE_REQUIREMENT, REACT_MIN } from './versions.js';
|
|
12
|
+
/**
|
|
13
|
+
* Prints the React and Node checks. Missing React only warns, since the user may
|
|
14
|
+
* be scaffolding before installing it; an out-of-range React or Node sets
|
|
15
|
+
* `blocking`. `blocking` never hard-stops init. It only triggers a louder warning
|
|
16
|
+
* before the apply confirmation, so the user stays in control either way.
|
|
17
|
+
*/
|
|
18
|
+
function reportPrereqs({ react }) {
|
|
19
|
+
let blocking = false;
|
|
20
|
+
const reactVersion = react.version;
|
|
21
|
+
if (!reactVersion) {
|
|
22
|
+
warn(`React not detected. This package needs React >= ${REACT_MIN}.`);
|
|
23
|
+
}
|
|
24
|
+
else if (meetsReact(reactVersion)) {
|
|
25
|
+
success(`React ${reactVersion} meets the >= ${REACT_MIN} requirement.`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
warn(`React ${reactVersion} is below ${REACT_MIN}. Components may not render correctly.`);
|
|
29
|
+
info(` ${color.dim('fix:')} Upgrade React to >= ${REACT_MIN}`);
|
|
30
|
+
blocking = true;
|
|
31
|
+
}
|
|
32
|
+
const nodeVersion = process.versions.node;
|
|
33
|
+
if (meetsNode(nodeVersion)) {
|
|
34
|
+
success(`Node ${nodeVersion} meets the ${NODE_REQUIREMENT} requirement.`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
warn(`Node ${nodeVersion} is outside ${NODE_REQUIREMENT}. Install may behave unexpectedly.`);
|
|
38
|
+
info(` ${color.dim('fix:')} Use Node ${NODE_REQUIREMENT}`);
|
|
39
|
+
blocking = true;
|
|
40
|
+
}
|
|
41
|
+
return { blocking };
|
|
42
|
+
}
|
|
43
|
+
function parseReactMajor(version) {
|
|
44
|
+
const match = typeof version === 'string' ? version.match(/\d+/) : null;
|
|
45
|
+
return match ? Number(match[0]) : 19;
|
|
46
|
+
}
|
|
47
|
+
function buildPlan(cwd, detected) {
|
|
48
|
+
const specs = resolveInstallSpecs();
|
|
49
|
+
const { command, args } = installCommand(detected.packageManager, specs);
|
|
50
|
+
const reactMajor = parseReactMajor(detected.react.version);
|
|
51
|
+
const typeSpecs = detected.typescript ? resolveTypeSpecs(cwd, { reactMajor }) : [];
|
|
52
|
+
const stylesheet = inspectStylesheet(cwd, detected.entry);
|
|
53
|
+
const tsconfig = detected.typescript ? inspectTsconfig(cwd) : null;
|
|
54
|
+
return { specs, typeSpecs, install: `${command} ${args.join(' ')}`, stylesheet, tsconfig };
|
|
55
|
+
}
|
|
56
|
+
function printPlan(cwd, detected, plan) {
|
|
57
|
+
heading('Plan');
|
|
58
|
+
step(`Install: ${color.bold(plan.install)}`);
|
|
59
|
+
if (plan.typeSpecs.length > 0) {
|
|
60
|
+
step(`Dev types: ${color.bold(plan.typeSpecs.join(' '))}`);
|
|
61
|
+
}
|
|
62
|
+
if (plan.stylesheet.imported) {
|
|
63
|
+
step(`Stylesheet: already imported in ${plan.stylesheet.importedIn ?? detected.entry}`);
|
|
64
|
+
}
|
|
65
|
+
else if (plan.stylesheet.exists) {
|
|
66
|
+
step(`Stylesheet: add ${color.bold(`import '${STYLES_SPECIFIER}'`)} to ${detected.entry}`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
step(`Stylesheet: entry ${detected.entry} not found, will skip (add the import manually)`);
|
|
70
|
+
}
|
|
71
|
+
if (!detected.typescript || !plan.tsconfig) {
|
|
72
|
+
step('tsconfig: no TypeScript detected, skipping');
|
|
73
|
+
}
|
|
74
|
+
else if (!plan.tsconfig.exists) {
|
|
75
|
+
step('tsconfig: create tsconfig.json with required options');
|
|
76
|
+
}
|
|
77
|
+
else if (plan.tsconfig.changes.length === 0) {
|
|
78
|
+
step('tsconfig: already has required options');
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const summary = plan.tsconfig.changes.map((c) => c.key).join(', ');
|
|
82
|
+
step(`tsconfig: update ${basename(plan.tsconfig.file)} (${summary})`);
|
|
83
|
+
}
|
|
84
|
+
step(configExists(cwd) ? `${CONFIG_FILE}: overwrite` : `${CONFIG_FILE}: create`);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The init lifecycle: detect the project, report prerequisites, build and print
|
|
88
|
+
* the plan, confirm, apply each step, then verify. `--dry` stops after the plan;
|
|
89
|
+
* `--yes` accepts the confirmation without prompting.
|
|
90
|
+
*/
|
|
91
|
+
export async function runInit(options) {
|
|
92
|
+
const { cwd, dry, yes } = options;
|
|
93
|
+
const detected = detect(cwd);
|
|
94
|
+
heading('Sanity UI init');
|
|
95
|
+
info(color.dim(`framework: ${detected.framework} · package manager: ${detected.packageManager} · entry: ${detected.entry} · typescript: ${detected.typescript}`));
|
|
96
|
+
if (detected.aliasedInstall) {
|
|
97
|
+
fail(`This project installs v5 under the alias "${detected.aliasedInstall}". init is for new apps only.`);
|
|
98
|
+
info(` ${color.dim('fix:')} ${LEGACY_COEXISTENCE_HINT}`);
|
|
99
|
+
return 1;
|
|
100
|
+
}
|
|
101
|
+
if (detected.legacyInstall) {
|
|
102
|
+
fail(`This project already has ${PACKAGE_NAME}@${detected.legacyInstall} (pre-v5). init is for new apps only.`);
|
|
103
|
+
info(` ${color.dim('fix:')} ${LEGACY_COEXISTENCE_HINT}`);
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
heading('Requirements');
|
|
107
|
+
const { blocking } = reportPrereqs(detected);
|
|
108
|
+
const plan = buildPlan(cwd, detected);
|
|
109
|
+
printPlan(cwd, detected, plan);
|
|
110
|
+
if (dry) {
|
|
111
|
+
info('');
|
|
112
|
+
info(color.dim('Dry run: no changes made.'));
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
if (blocking) {
|
|
116
|
+
info('');
|
|
117
|
+
warn('Some requirements are unmet (see above). Continuing may not work.');
|
|
118
|
+
}
|
|
119
|
+
// Without a TTY there's no one to answer the prompt, so confirm() falls back to
|
|
120
|
+
// the default (apply). Say so explicitly rather than appearing to act silently;
|
|
121
|
+
// --dry is the preview-only path for anyone who doesn't want writes.
|
|
122
|
+
if (!yes && !process.stdin.isTTY) {
|
|
123
|
+
info('');
|
|
124
|
+
info(color.dim('Non-interactive (no TTY): applying automatically. Use --dry to preview.'));
|
|
125
|
+
}
|
|
126
|
+
const proceed = await confirm('\nApply these changes?', { defaultValue: true, assumeYes: yes });
|
|
127
|
+
if (!proceed) {
|
|
128
|
+
info('Aborted. No changes made.');
|
|
129
|
+
return 0;
|
|
130
|
+
}
|
|
131
|
+
heading('Applying');
|
|
132
|
+
step(`Installing with ${detected.packageManager}…`);
|
|
133
|
+
const install = runInstall(cwd, detected.packageManager, plan.specs);
|
|
134
|
+
if (install.ok) {
|
|
135
|
+
success('Dependencies installed.');
|
|
136
|
+
}
|
|
137
|
+
else if (install.reason === 'spawn') {
|
|
138
|
+
warn(`Could not run ${detected.packageManager}: ${install.message ?? 'unknown error'}`);
|
|
139
|
+
info(` ${color.dim('fix:')} Install manually: ${install.command} ${install.args.join(' ')}`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
warn(`Install exited with code ${install.status ?? 'unknown'}.`);
|
|
143
|
+
info(` ${color.dim('hint:')} This is usually a peer-dependency conflict. Re-run the install and read the conflict, or retry with your package manager's legacy peer-deps flag.`);
|
|
144
|
+
}
|
|
145
|
+
if (plan.typeSpecs.length > 0) {
|
|
146
|
+
step('Installing React type definitions…');
|
|
147
|
+
const typeInstall = runInstall(cwd, detected.packageManager, plan.typeSpecs, { dev: true });
|
|
148
|
+
if (typeInstall.ok)
|
|
149
|
+
success('Type definitions installed.');
|
|
150
|
+
else
|
|
151
|
+
warn(`Could not install ${plan.typeSpecs.join(' ')}. Add them manually.`);
|
|
152
|
+
}
|
|
153
|
+
if (plan.stylesheet.exists && !plan.stylesheet.imported) {
|
|
154
|
+
const wired = wireStylesheet(cwd, detected.entry, { dryRun: false });
|
|
155
|
+
if (wired.wrote)
|
|
156
|
+
success(`Imported the stylesheet in ${detected.entry}.`);
|
|
157
|
+
}
|
|
158
|
+
else if (plan.stylesheet.imported) {
|
|
159
|
+
success('Stylesheet already imported.');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
warn(`Could not find ${detected.entry}. Add \`import '${STYLES_SPECIFIER}'\` manually.`);
|
|
163
|
+
}
|
|
164
|
+
if (detected.typescript) {
|
|
165
|
+
const result = reconcileTsconfig(cwd, { dryRun: false });
|
|
166
|
+
if (result.created)
|
|
167
|
+
success('Created tsconfig.json with required options.');
|
|
168
|
+
else if (result.unreadable)
|
|
169
|
+
warn('tsconfig.json could not be parsed; left untouched.');
|
|
170
|
+
else if (result.changes.length === 0)
|
|
171
|
+
success('tsconfig already has the required options.');
|
|
172
|
+
else
|
|
173
|
+
success(`Updated tsconfig: ${result.changes.map((c) => c.key).join(', ')}.`);
|
|
174
|
+
}
|
|
175
|
+
const config = buildConfig({ framework: detected.framework, entry: detected.entry });
|
|
176
|
+
writeConfig(cwd, config);
|
|
177
|
+
success(`Wrote ${CONFIG_FILE}.`);
|
|
178
|
+
heading('Verifying');
|
|
179
|
+
const results = verifyAfterInit(cwd);
|
|
180
|
+
printChecks(results);
|
|
181
|
+
const failed = results.filter((c) => c.status === 'fail');
|
|
182
|
+
info('');
|
|
183
|
+
if (failed.length === 0) {
|
|
184
|
+
success('Setup verified. Import components from @sanity/ui and start building.');
|
|
185
|
+
return 0;
|
|
186
|
+
}
|
|
187
|
+
fail(`${failed.length} check${failed.length === 1 ? '' : 's'} failed. Run \`npx ${PACKAGE_NAME}@alpha doctor\` for details.`);
|
|
188
|
+
return 1;
|
|
189
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import process from 'node:process';
|
|
3
|
+
import { isPackageInstalled, PACKAGE_NAME } from './detect.js';
|
|
4
|
+
import { readSelfPackage } from './selfPackage.js';
|
|
5
|
+
const ICONS = '@sanity/icons';
|
|
6
|
+
const DEV_FLAG = {
|
|
7
|
+
npm: '--save-dev',
|
|
8
|
+
pnpm: '-D',
|
|
9
|
+
yarn: '-D',
|
|
10
|
+
bun: '-d',
|
|
11
|
+
};
|
|
12
|
+
/** Strips range operators to the exact floor version, e.g. "^3.7.4" -> "3.7.4". */
|
|
13
|
+
function exactFromRange(range) {
|
|
14
|
+
if (typeof range !== 'string')
|
|
15
|
+
return null;
|
|
16
|
+
const match = range.match(/\d+\.\d+\.\d+(?:-[\w.]+)?/);
|
|
17
|
+
return match ? match[0] : null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Builds the exact specs to install from this package's own manifest: the
|
|
21
|
+
* package at its shipped version, and icons at the version it declares in
|
|
22
|
+
* dependencies. Nothing here is invented.
|
|
23
|
+
*
|
|
24
|
+
* Icons is already a dependency, so the package manager installs it either way.
|
|
25
|
+
* It is listed explicitly because apps import icons directly to pass to
|
|
26
|
+
* components (`<Button iconStart={AddIcon} />`), and under pnpm an import that
|
|
27
|
+
* isn't in the app's own package.json doesn't resolve. Dependencies the app
|
|
28
|
+
* never imports itself (react-refractor, clsx) are left to the package manager.
|
|
29
|
+
* React/react-dom are peers that belong to the host app, so they are left out
|
|
30
|
+
* too (the prereq check verifies them).
|
|
31
|
+
*/
|
|
32
|
+
export function resolveInstallSpecs() {
|
|
33
|
+
const self = readSelfPackage();
|
|
34
|
+
const deps = self.dependencies ?? {};
|
|
35
|
+
const specs = [`${PACKAGE_NAME}@${self.version ?? 'latest'}`];
|
|
36
|
+
const iconsVersion = exactFromRange(deps[ICONS]);
|
|
37
|
+
specs.push(iconsVersion ? `${ICONS}@${iconsVersion}` : ICONS);
|
|
38
|
+
return specs;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The React type packages a TypeScript project needs to type-check JSX and the
|
|
42
|
+
* component props. Only the ones not already installed are returned, pinned to
|
|
43
|
+
* the project's React major (defaulting to the supported React 19).
|
|
44
|
+
*/
|
|
45
|
+
export function resolveTypeSpecs(cwd, { reactMajor = 19 } = {}) {
|
|
46
|
+
const major = Number.isInteger(reactMajor) ? reactMajor : 19;
|
|
47
|
+
return ['@types/react', '@types/react-dom']
|
|
48
|
+
.filter((name) => !isPackageInstalled(cwd, name))
|
|
49
|
+
.map((name) => `${name}@^${major}`);
|
|
50
|
+
}
|
|
51
|
+
export function installCommand(packageManager, specs, { dev = false } = {}) {
|
|
52
|
+
const verb = packageManager === 'npm' ? 'install' : 'add';
|
|
53
|
+
const flags = dev ? [DEV_FLAG[packageManager]] : [];
|
|
54
|
+
return { command: packageManager, args: [verb, ...flags, ...specs] };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Runs the install with inherited stdio. Returns a structured result so the
|
|
58
|
+
* caller can explain a peer-dependency conflict in plain language instead of
|
|
59
|
+
* failing silently.
|
|
60
|
+
*/
|
|
61
|
+
export function runInstall(cwd, packageManager, specs, { dev = false } = {}) {
|
|
62
|
+
const { command, args } = installCommand(packageManager, specs, { dev });
|
|
63
|
+
// On Windows the package managers are .cmd shims, and spawning them without a
|
|
64
|
+
// shell throws (ENOENT, or EINVAL since the Node .cmd security fix). The args
|
|
65
|
+
// are package specs we build ourselves, so there is nothing to escape.
|
|
66
|
+
const result = spawnSync(command, args, {
|
|
67
|
+
cwd,
|
|
68
|
+
stdio: 'inherit',
|
|
69
|
+
shell: process.platform === 'win32',
|
|
70
|
+
});
|
|
71
|
+
if (result.error) {
|
|
72
|
+
return { ok: false, reason: 'spawn', message: result.error.message, command, args };
|
|
73
|
+
}
|
|
74
|
+
if (result.status !== 0) {
|
|
75
|
+
return { ok: false, reason: 'exit', status: result.status, command, args };
|
|
76
|
+
}
|
|
77
|
+
return { ok: true, command, args };
|
|
78
|
+
}
|
package/dist/cli/log.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import process from 'node:process';
|
|
2
|
+
import readline from 'node:readline/promises';
|
|
3
|
+
// Colorize only a real terminal, and honor the NO_COLOR convention (https://no-color.org).
|
|
4
|
+
const noColor = process.env['NO_COLOR'] !== undefined;
|
|
5
|
+
const supportsColor = process.stdout.isTTY && !noColor;
|
|
6
|
+
function paint(code, text) {
|
|
7
|
+
if (!supportsColor)
|
|
8
|
+
return text;
|
|
9
|
+
return `\u001b[${code}m${text}\u001b[0m`;
|
|
10
|
+
}
|
|
11
|
+
export const color = {
|
|
12
|
+
bold: (t) => paint('1', t),
|
|
13
|
+
dim: (t) => paint('2', t),
|
|
14
|
+
red: (t) => paint('31', t),
|
|
15
|
+
green: (t) => paint('32', t),
|
|
16
|
+
yellow: (t) => paint('33', t),
|
|
17
|
+
blue: (t) => paint('34', t),
|
|
18
|
+
cyan: (t) => paint('36', t),
|
|
19
|
+
};
|
|
20
|
+
export function info(message) {
|
|
21
|
+
process.stdout.write(`${message}\n`);
|
|
22
|
+
}
|
|
23
|
+
export function step(message) {
|
|
24
|
+
process.stdout.write(`${color.cyan('›')} ${message}\n`);
|
|
25
|
+
}
|
|
26
|
+
export function success(message) {
|
|
27
|
+
process.stdout.write(`${color.green('✓')} ${message}\n`);
|
|
28
|
+
}
|
|
29
|
+
export function warn(message) {
|
|
30
|
+
process.stdout.write(`${color.yellow('!')} ${message}\n`);
|
|
31
|
+
}
|
|
32
|
+
export function fail(message) {
|
|
33
|
+
process.stdout.write(`${color.red('✗')} ${message}\n`);
|
|
34
|
+
}
|
|
35
|
+
/** Real errors (unexpected exceptions) go to stderr; report output uses fail(). */
|
|
36
|
+
export function errorLine(message) {
|
|
37
|
+
// Gate color on stderr (where this writes), not stdout, so a redirected stderr
|
|
38
|
+
// doesn't receive ANSI codes while stdout is still a TTY.
|
|
39
|
+
const mark = process.stderr.isTTY && !noColor ? '\u001b[31m✗\u001b[0m' : '✗';
|
|
40
|
+
process.stderr.write(`${mark} ${message}\n`);
|
|
41
|
+
}
|
|
42
|
+
export function heading(message) {
|
|
43
|
+
process.stdout.write(`\n${color.bold(message)}\n`);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Ask a yes/no question. In non-interactive contexts (no TTY) it resolves to
|
|
47
|
+
* the provided default so CI and agents never block.
|
|
48
|
+
*/
|
|
49
|
+
export async function confirm(question, options = {}) {
|
|
50
|
+
const { defaultValue = true, assumeYes = false } = options;
|
|
51
|
+
if (assumeYes || !process.stdin.isTTY)
|
|
52
|
+
return defaultValue;
|
|
53
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
54
|
+
try {
|
|
55
|
+
const hint = defaultValue ? 'Y/n' : 'y/N';
|
|
56
|
+
const answer = (await rl.question(`${question} ${color.dim(`(${hint})`)} `))
|
|
57
|
+
.trim()
|
|
58
|
+
.toLowerCase();
|
|
59
|
+
if (answer === '')
|
|
60
|
+
return defaultValue;
|
|
61
|
+
return answer === 'y' || answer === 'yes';
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
rl.close();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* Reads this package's own package.json so the CLI installs the exact version
|
|
4
|
+
* it ships with and the real declared ranges, never invented ones. The path is
|
|
5
|
+
* two levels up from both src/cli (dev) and dist/cli (published), which both
|
|
6
|
+
* resolve to the package root.
|
|
7
|
+
*/
|
|
8
|
+
export function readSelfPackage() {
|
|
9
|
+
const url = new URL('../../package.json', import.meta.url);
|
|
10
|
+
return JSON.parse(readFileSync(url, 'utf8'));
|
|
11
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join, relative } from 'node:path';
|
|
3
|
+
export const STYLES_SPECIFIER = '@sanity/ui/styles.css';
|
|
4
|
+
const IMPORT_LINE = `import '${STYLES_SPECIFIER}'`;
|
|
5
|
+
// Match a real import/require of the stylesheet, not a bare mention. A
|
|
6
|
+
// commented-out or string occurrence of the path must not count as "wired",
|
|
7
|
+
// or doctor/init would report success when the import isn't active.
|
|
8
|
+
const SPEC = String.raw `@sanity/ui/styles\.css`;
|
|
9
|
+
const PRESENT = new RegExp(String.raw `(?:^|\n)\s*import\s+(?:[^\n'"]*\bfrom\s+)?['"]${SPEC}['"]` +
|
|
10
|
+
String.raw `|\brequire\(\s*['"]${SPEC}['"]\s*\)`);
|
|
11
|
+
const SOURCE_EXT = /\.[jt]sx?$|\.astro$/;
|
|
12
|
+
const SKIP_DIRS = new Set([
|
|
13
|
+
'node_modules',
|
|
14
|
+
'dist',
|
|
15
|
+
'build',
|
|
16
|
+
'.next',
|
|
17
|
+
'.react-router',
|
|
18
|
+
'.git',
|
|
19
|
+
'out',
|
|
20
|
+
]);
|
|
21
|
+
const SOURCE_ROOTS = ['src', 'app', 'pages', 'components'];
|
|
22
|
+
const MAX_FILES = 800;
|
|
23
|
+
export function hasStylesImport(content) {
|
|
24
|
+
return PRESENT.test(content);
|
|
25
|
+
}
|
|
26
|
+
function fileImports(file) {
|
|
27
|
+
try {
|
|
28
|
+
return hasStylesImport(readFileSync(file, 'utf8'));
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Bounded recursive walk that returns the first source file importing the stylesheet. */
|
|
35
|
+
function findImportInDir(root, budget) {
|
|
36
|
+
const stack = [root];
|
|
37
|
+
while (stack.length > 0 && budget.count < MAX_FILES) {
|
|
38
|
+
const dir = stack.pop();
|
|
39
|
+
if (dir === undefined)
|
|
40
|
+
break;
|
|
41
|
+
let entries;
|
|
42
|
+
try {
|
|
43
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
for (const entry of entries) {
|
|
49
|
+
const full = join(dir, entry.name);
|
|
50
|
+
if (entry.isDirectory()) {
|
|
51
|
+
if (!SKIP_DIRS.has(entry.name))
|
|
52
|
+
stack.push(full);
|
|
53
|
+
}
|
|
54
|
+
else if (SOURCE_EXT.test(entry.name)) {
|
|
55
|
+
budget.count++;
|
|
56
|
+
if (budget.count > MAX_FILES)
|
|
57
|
+
break;
|
|
58
|
+
if (fileImports(full))
|
|
59
|
+
return full;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Reports whether the stylesheet is imported. The import only needs to exist
|
|
67
|
+
* once in the module graph, so beyond the prescribed entry we scan the project
|
|
68
|
+
* source roots (bounded) before reporting it missing. That catches imports
|
|
69
|
+
* placed in App.tsx, a route file, or a layout component.
|
|
70
|
+
*/
|
|
71
|
+
export function inspectStylesheet(cwd, entry) {
|
|
72
|
+
const file = join(cwd, entry);
|
|
73
|
+
const exists = existsSync(file);
|
|
74
|
+
if (exists && fileImports(file))
|
|
75
|
+
return { entry, file, exists, imported: true };
|
|
76
|
+
const budget = { count: 0 };
|
|
77
|
+
const roots = new Set([dirname(entry), ...SOURCE_ROOTS].map((r) => join(cwd, r)));
|
|
78
|
+
for (const root of Array.from(roots)) {
|
|
79
|
+
if (!existsSync(root))
|
|
80
|
+
continue;
|
|
81
|
+
try {
|
|
82
|
+
if (!statSync(root).isDirectory())
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const found = findImportInDir(root, budget);
|
|
89
|
+
if (found)
|
|
90
|
+
return {
|
|
91
|
+
entry,
|
|
92
|
+
file,
|
|
93
|
+
exists,
|
|
94
|
+
imported: true,
|
|
95
|
+
importedIn: relative(cwd, found),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return { entry, file, exists, imported: false };
|
|
99
|
+
}
|
|
100
|
+
function isDirective(line) {
|
|
101
|
+
const trimmed = line.trim();
|
|
102
|
+
return /^['"]use (client|server|strict)['"];?$/.test(trimmed);
|
|
103
|
+
}
|
|
104
|
+
function isImportLine(line) {
|
|
105
|
+
return /^\s*import\b/.test(line);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* True when an import statement finishes on this line: either it ends with a
|
|
109
|
+
* `from '...'` clause or it is a bare side-effect `import '...'`. Used to find
|
|
110
|
+
* the real end of an import block so we never split a multiline import.
|
|
111
|
+
*/
|
|
112
|
+
function importStatementEnds(line) {
|
|
113
|
+
const t = line.trim();
|
|
114
|
+
return /\bfrom\s*['"][^'"]+['"];?\s*$/.test(t) || /^import\s+['"][^'"]+['"];?\s*$/.test(t);
|
|
115
|
+
}
|
|
116
|
+
/** Inserts the import into a JS/TS module after any leading directive + import block. */
|
|
117
|
+
function injectIntoModule(content) {
|
|
118
|
+
const lines = content.split('\n');
|
|
119
|
+
let insertAt = 0;
|
|
120
|
+
while (insertAt < lines.length) {
|
|
121
|
+
const line = lines[insertAt] ?? '';
|
|
122
|
+
if (isDirective(line) || line.trim() === '')
|
|
123
|
+
insertAt++;
|
|
124
|
+
else
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
// Track the last line that closes an import statement so a multiline import
|
|
128
|
+
// (`import {\n a,\n} from 'x'`) is treated as a single unit and we insert
|
|
129
|
+
// after its closing line, never between its lines.
|
|
130
|
+
let lastImport = -1;
|
|
131
|
+
let inMultilineImport = false;
|
|
132
|
+
for (let i = insertAt; i < lines.length; i++) {
|
|
133
|
+
const line = lines[i] ?? '';
|
|
134
|
+
if (inMultilineImport) {
|
|
135
|
+
if (importStatementEnds(line)) {
|
|
136
|
+
inMultilineImport = false;
|
|
137
|
+
lastImport = i;
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (isImportLine(line)) {
|
|
142
|
+
lastImport = i;
|
|
143
|
+
if (!importStatementEnds(line))
|
|
144
|
+
inMultilineImport = true;
|
|
145
|
+
}
|
|
146
|
+
else if (line.trim() !== '' && lastImport !== -1) {
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const at = lastImport === -1 ? insertAt : lastImport + 1;
|
|
151
|
+
lines.splice(at, 0, IMPORT_LINE);
|
|
152
|
+
return lines.join('\n');
|
|
153
|
+
}
|
|
154
|
+
/** Inserts the import inside an Astro frontmatter fence, creating one if absent. */
|
|
155
|
+
function injectIntoAstro(content) {
|
|
156
|
+
if (content.startsWith('---')) {
|
|
157
|
+
const end = content.indexOf('\n---', 3);
|
|
158
|
+
if (end !== -1) {
|
|
159
|
+
const head = content.slice(0, end);
|
|
160
|
+
const tail = content.slice(end);
|
|
161
|
+
return `${head}\n${IMPORT_LINE}${tail}`;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return `---\n${IMPORT_LINE}\n---\n${content}`;
|
|
165
|
+
}
|
|
166
|
+
export function wireStylesheet(cwd, entry, { dryRun = false } = {}) {
|
|
167
|
+
const file = join(cwd, entry);
|
|
168
|
+
if (!existsSync(file))
|
|
169
|
+
return { entry, file, missing: true, imported: false, wrote: false };
|
|
170
|
+
const content = readFileSync(file, 'utf8');
|
|
171
|
+
if (hasStylesImport(content)) {
|
|
172
|
+
return {
|
|
173
|
+
entry,
|
|
174
|
+
file,
|
|
175
|
+
missing: false,
|
|
176
|
+
imported: true,
|
|
177
|
+
wrote: false,
|
|
178
|
+
already: true,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const next = entry.endsWith('.astro') ? injectIntoAstro(content) : injectIntoModule(content);
|
|
182
|
+
if (!dryRun)
|
|
183
|
+
writeFileSync(file, next);
|
|
184
|
+
return { entry, file, missing: false, imported: true, wrote: !dryRun };
|
|
185
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { PACKAGE_NAME } from './detect.js';
|
|
4
|
+
export function writeInstalledUiVersion(dir, version) {
|
|
5
|
+
const root = join(dir, 'node_modules', PACKAGE_NAME);
|
|
6
|
+
mkdirSync(root, { recursive: true });
|
|
7
|
+
writeFileSync(join(root, 'package.json'), JSON.stringify({ name: PACKAGE_NAME, version }));
|
|
8
|
+
}
|