diff --git a/.eslintrc b/.eslintrc index af28b64d..bd861e3b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -23,6 +23,7 @@ "import/no-unresolved": "off", "import/named": "off", "import/namespace": "off", - "import/no-named-as-default-member": "off" + "import/no-named-as-default-member": "off", + "import/extensions": ["error", "ignorePackages"] } } diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index cad49e1a..1bb2f4a2 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -69,3 +69,11 @@ jobs: working-directory: ./packages/icons/lucide run: pnpm publish --access public --no-git-checks --tag ${{ steps.gitversion.outputs.preReleaseLabel == '' && 'latest' || steps.gitversion.outputs.preReleaseLabel }} + - name: Deploy Uikit-Default Package + working-directory: ./packages/kits/default + run: pnpm publish --access public --no-git-checks --tag ${{ steps.gitversion.outputs.preReleaseLabel == '' && 'latest' || steps.gitversion.outputs.preReleaseLabel }} + + - name: Deploy Uikit-Apfel Package + working-directory: ./packages/kits/apfel + run: pnpm publish --access public --no-git-checks --tag ${{ steps.gitversion.outputs.preReleaseLabel == '' && 'latest' || steps.gitversion.outputs.preReleaseLabel }} + diff --git a/packages/kits/apfel/.eslintrc b/packages/kits/apfel/.eslintrc new file mode 100644 index 00000000..f45d4412 --- /dev/null +++ b/packages/kits/apfel/.eslintrc @@ -0,0 +1,6 @@ +{ + "extends": "../../../.eslintrc", + "rules": { + "import/extensions": "off" + } +} diff --git a/packages/kits/apfel/index.tsx b/packages/kits/apfel/index.tsx new file mode 100644 index 00000000..fe9069ea --- /dev/null +++ b/packages/kits/apfel/index.tsx @@ -0,0 +1,11 @@ +export * from './button' +export * from './card' +export * from './checkbox' +export * from './input' +export * from './list' +export * from './loading' +export * from './progress' +export * from './slider' +export * from './tab-bar' +export * from './tabs' +export * from './theme' diff --git a/packages/kits/apfel/package.json b/packages/kits/apfel/package.json index 487bdc32..4a260822 100644 --- a/packages/kits/apfel/package.json +++ b/packages/kits/apfel/package.json @@ -1,5 +1,31 @@ { + "name": "@react-three/uikit-apfel", + "description": "Apfel kit for @react-three/uikit", + "version": "0.0.0", + "license": "SEE LICENSE IN LICENSE", + "homepage": "https://github.com/pmndrs/uikit", + "author": "Bela Bohlender", + "keywords": [ + "r3f", + "uikit", + "three.js", + "userinterface", + "react", + "flexbox", + "yoga", + "typescript", + "apfel" + ], + "repository": { + "type": "git", + "url": "git@github.com:pmndrs/uikit.git" + }, + "files": [ + "dist" + ], + "main": "dist/index.js", "scripts": { + "build": "tsc", "check:prettier": "prettier --check .", "check:eslint": "eslint '**/*.{tsx,ts}'", "fix:prettier": "prettier --write .", @@ -8,11 +34,13 @@ "devDependencies": { "@preact/signals-core": "^1.5.1", "@react-three/fiber": "^8.15.13", - "@react-three/uikit": "workspace:^", - "@react-three/uikit-lucide": "workspace:^", "@types/react": "^18.2.47", "@types/three": "^0.161.0", "three": "^0.161.0" }, - "type": "module" + "type": "module", + "dependencies": { + "@react-three/uikit": "workspace:^", + "@react-three/uikit-lucide": "workspace:^" + } } diff --git a/packages/kits/apfel/text-input.tsx b/packages/kits/apfel/text-input.tsx deleted file mode 100644 index afb1a1e2..00000000 --- a/packages/kits/apfel/text-input.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/*import { Input } from "@coconut-xr/input"; -import { Container, DefaultStyleProvider, Text } from "@coconut-xr/koestlich"; -import { makeBorderMaterial } from "@coconut-xr/xmaterials"; -import { ComponentPropsWithoutRef, ReactNode, useState } from "react"; -import { MeshPhongMaterial } from "three"; - -type Style = "pill" | "rect"; - -type TextInputProps = ComponentPropsWithoutRef & { - style?: Style; - disabled?: boolean; - placeholder?: string; - value: string; - onValueChange: (value: string) => void; - prefix?: ReactNode; -}; - -const material = makeBorderMaterial(MeshPhongMaterial, { - specular: "#888", - shininess: 50, -}); - -export function TextInput({ - style = "rect", - disabled, - placeholder, - prefix, - value, - onValueChange, - ...props -}: TextInputProps) { - const [hoverCount, setHoverCount] = useState(0); - - const opacity = disabled ? 0.3 : hoverCount > 0 ? 0.2 : 0.4; - - return ( - { - setHoverCount((current) => current + 1); - props.onPointerEnter?.(e); - }} - onPointerLeave={(e) => { - setHoverCount((current) => current - 1); - props.onPointerLeave?.(e); - }} - > - - {prefix && ( - - - {prefix} - - - )} - - 0 ? 0 : undefined} - > - {placeholder} - - - - - - ); -} -*/ diff --git a/packages/kits/apfel/tsconfig.json b/packages/kits/apfel/tsconfig.json index 014cc675..80b6be4a 100644 --- a/packages/kits/apfel/tsconfig.json +++ b/packages/kits/apfel/tsconfig.json @@ -1,6 +1,9 @@ { "extends": "../../../tsconfig.json", "compilerOptions": { + "outDir": "dist", + "declaration": true, + "skipLibCheck": true, "jsx": "react" } } diff --git a/packages/kits/default/.eslintrc b/packages/kits/default/.eslintrc new file mode 100644 index 00000000..f45d4412 --- /dev/null +++ b/packages/kits/default/.eslintrc @@ -0,0 +1,6 @@ +{ + "extends": "../../../.eslintrc", + "rules": { + "import/extensions": "off" + } +} diff --git a/packages/kits/default/index.tsx b/packages/kits/default/index.tsx new file mode 100644 index 00000000..80a46dfe --- /dev/null +++ b/packages/kits/default/index.tsx @@ -0,0 +1,23 @@ +export * from './accordion.js' +export * from './alert.js' +export * from './alert-dialog.js' +export * from './avatar.js' +export * from './badge.js' +export * from './button.js' +export * from './card.js' +export * from './checkbox.js' +export * from './dialog.js' +export * from './label.js' +export * from './pagination.js' +export * from './progress.js' +export * from './radio-group.js' +export * from './separator.js' +export * from './skeleton.js' +export * from './slider.js' +export * from './switch.js' +export * from './tabs.js' +export * from './toggle.js' +export * from './toggle-group.js' +export * from './tooltip.js' +export * from './input.js' +export * from './theme.js' diff --git a/packages/kits/default/package.json b/packages/kits/default/package.json index 1c440f43..668de4a6 100644 --- a/packages/kits/default/package.json +++ b/packages/kits/default/package.json @@ -1,5 +1,31 @@ { + "name": "@react-three/uikit-default", + "description": "Default (shadcn) kit for @react-three/uikit", + "version": "0.0.0", + "license": "SEE LICENSE IN LICENSE", + "homepage": "https://github.com/pmndrs/uikit", + "author": "Bela Bohlender", + "keywords": [ + "r3f", + "uikit", + "three.js", + "userinterface", + "react", + "flexbox", + "yoga", + "typescript", + "shadcn" + ], + "repository": { + "type": "git", + "url": "git@github.com:pmndrs/uikit.git" + }, + "files": [ + "dist" + ], + "main": "dist/index.js", "scripts": { + "build": "tsc", "check:prettier": "prettier --check .", "check:eslint": "eslint '**/*.{tsx,ts}'", "fix:prettier": "prettier --write .", @@ -8,14 +34,14 @@ "devDependencies": { "@preact/signals-core": "^1.5.1", "@react-three/fiber": "^8.15.13", - "@react-three/uikit": "workspace:^", - "@react-three/uikit-lucide": "workspace:^", "@types/react": "^18.2.47", "@types/three": "^0.161.0", "three": "^0.161.0" }, "type": "module", "dependencies": { + "@react-three/uikit": "workspace:^", + "@react-three/uikit-lucide": "workspace:^", "tunnel-rat": "^0.1.2" } } diff --git a/packages/kits/default/tsconfig.json b/packages/kits/default/tsconfig.json index 014cc675..80b6be4a 100644 --- a/packages/kits/default/tsconfig.json +++ b/packages/kits/default/tsconfig.json @@ -1,6 +1,9 @@ { "extends": "../../../tsconfig.json", "compilerOptions": { + "outDir": "dist", + "declaration": true, + "skipLibCheck": true, "jsx": "react" } } diff --git a/packages/uikit/src/caret.ts b/packages/uikit/src/caret.ts index 73740296..0f78af12 100644 --- a/packages/uikit/src/caret.ts +++ b/packages/uikit/src/caret.ts @@ -1,14 +1,14 @@ import { Signal, computed, effect, signal } from '@preact/signals-core' import { Matrix4, Vector3Tuple } from 'three' -import { ClippingRect } from './clipping' -import { ElementType, OrderInfo, useOrderInfo } from './order' -import { GetInstancedPanelGroup, useGetInstancedPanelGroup, usePanelGroupDependencies } from './panel/react' +import { ClippingRect } from './clipping.js' +import { ElementType, OrderInfo, useOrderInfo } from './order.js' +import { GetInstancedPanelGroup, useGetInstancedPanelGroup, usePanelGroupDependencies } from './panel/react.js' import { useEffect, useMemo } from 'react' -import { InstancedPanel } from './panel/instanced-panel' -import { Inset } from './flex' -import { ManagerCollection, PropertyTransformation } from './properties/utils' -import { useImmediateProperties } from './properties/immediate' -import { useBatchedProperties } from './properties/batched' +import { InstancedPanel } from './panel/instanced-panel.js' +import { Inset } from './flex/index.js' +import { ManagerCollection, PropertyTransformation } from './properties/utils.js' +import { useImmediateProperties } from './properties/immediate.js' +import { useBatchedProperties } from './properties/batched.js' const noBorder = signal([0, 0, 0, 0]) diff --git a/packages/uikit/src/focus.ts b/packages/uikit/src/focus.ts index b14a84da..bc34e310 100644 --- a/packages/uikit/src/focus.ts +++ b/packages/uikit/src/focus.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react' -import { WithClasses, useTraverseProperties } from './properties/default' -import { ManagerCollection, Properties } from './properties/utils' -import { createConditionalPropertyTranslator } from './utils' +import { WithClasses, useTraverseProperties } from './properties/default.js' +import { ManagerCollection, Properties } from './properties/utils.js' +import { createConditionalPropertyTranslator } from './utils.js' import { Signal } from '@preact/signals-core' export type WithFocus = T & { diff --git a/packages/uikit/src/selection.ts b/packages/uikit/src/selection.ts index 461b2bae..b811b297 100644 --- a/packages/uikit/src/selection.ts +++ b/packages/uikit/src/selection.ts @@ -1,11 +1,11 @@ import { Signal, effect, signal } from '@preact/signals-core' -import { GetInstancedPanelGroup, useGetInstancedPanelGroup, usePanelGroupDependencies } from './panel/react' +import { GetInstancedPanelGroup, useGetInstancedPanelGroup, usePanelGroupDependencies } from './panel/react.js' import { useEffect, useMemo } from 'react' -import { InstancedPanel } from './panel/instanced-panel' +import { InstancedPanel } from './panel/instanced-panel.js' import { Matrix4, Vector2Tuple } from 'three' -import { ClippingRect } from './clipping' -import { ElementType, OrderInfo, useOrderInfo } from './order' -import { Inset } from './flex' +import { ClippingRect } from './clipping.js' +import { ElementType, OrderInfo, useOrderInfo } from './order.js' +import { Inset } from './flex/index.js' const noBorder = signal([0, 0, 0, 0]) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea8306b6..a7fbadc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -399,6 +399,13 @@ importers: version: 3.0.0 packages/kits/apfel: + dependencies: + '@react-three/uikit': + specifier: workspace:^ + version: link:../../uikit + '@react-three/uikit-lucide': + specifier: workspace:^ + version: link:../../icons/lucide devDependencies: '@preact/signals-core': specifier: ^1.5.1 @@ -406,12 +413,6 @@ importers: '@react-three/fiber': specifier: ^8.15.13 version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) - '@react-three/uikit': - specifier: workspace:^ - version: link:../../uikit - '@react-three/uikit-lucide': - specifier: workspace:^ - version: link:../../icons/lucide '@types/react': specifier: ^18.2.47 version: 18.2.47 @@ -424,6 +425,12 @@ importers: packages/kits/default: dependencies: + '@react-three/uikit': + specifier: workspace:^ + version: link:../../uikit + '@react-three/uikit-lucide': + specifier: workspace:^ + version: link:../../icons/lucide tunnel-rat: specifier: ^0.1.2 version: 0.1.2(@types/react@18.2.47)(react@18.2.0) @@ -434,12 +441,6 @@ importers: '@react-three/fiber': specifier: ^8.15.13 version: 8.15.13(react-dom@18.2.0)(react@18.2.0)(three@0.161.0) - '@react-three/uikit': - specifier: workspace:^ - version: link:../../uikit - '@react-three/uikit-lucide': - specifier: workspace:^ - version: link:../../icons/lucide '@types/react': specifier: ^18.2.47 version: 18.2.47