@attebyte/react-tree-select 1.0.0 → 2.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/dist/style.css CHANGED
@@ -1 +1,3 @@
1
- *,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.static{position:static}.absolute{position:absolute}.relative{position:relative}.right-0{right:0}.top-0{top:0}.m-2{margin:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mb-2{margin-bottom:.5rem}.mb-32{margin-bottom:8rem}.mb-6{margin-bottom:1.5rem}.me-2{margin-inline-end:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.mr-3{margin-right:.75rem}.ms-3{margin-inline-start:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-5{height:1.25rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-\[1em\]{height:1em}.h-full{height:100%}.min-h-14{min-height:3.5rem}.w-10{width:2.5rem}.w-5{width:1.25rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-\[1em\]{width:1em}.w-full{width:100%}.max-w-full{max-width:100%}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.flex-grow-0{flex-grow:0}.basis-10{flex-basis:2.5rem}.basis-20{flex-basis:5rem}.basis-24{flex-basis:6rem}.basis-32{flex-basis:8rem}.basis-64{flex-basis:16rem}.basis-80{flex-basis:20rem}.basis-auto{flex-basis:auto}.basis-full{flex-basis:100%}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-scroll{overflow-y:scroll}.whitespace-normal{white-space:normal}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-sm{border-radius:.125rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-current{border-color:currentColor}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity))}.border-neutral-500{--tw-border-opacity: 1;border-color:rgb(115 115 115 / var(--tw-border-opacity))}.border-slate-400{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.bg-neutral-600{--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity))}.bg-neutral-800{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-slate-600{--tw-gradient-from: #475569 var(--tw-gradient-from-position);--tw-gradient-to: rgb(71 85 105 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-slate-700{--tw-gradient-to: rgb(51 65 85 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #334155 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.bg-size-200{background-size:200% 200%}.bg-pos-0{background-position:0% 0%}.bg-pos-100{background-position:100% 100%}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.pl-3{padding-left:.75rem}.ps-3{padding-inline-start:.75rem}.text-center{text-align:center}.align-middle{vertical-align:middle}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[\.8em\]{font-size:.8em}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-current{color:currentColor}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-neutral-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-60{opacity:.6}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.after\:-m-\[\.2rem\]:after{content:var(--tw-content);margin:-.2rem}.after\:flex:after{content:var(--tw-content);display:flex}.after\:justify-center:after{content:var(--tw-content);justify-content:center}.after\:align-middle:after{content:var(--tw-content);vertical-align:middle}.after\:text-2xl:after{content:var(--tw-content);font-size:1.5rem;line-height:2rem}.after\:text-sm:after{content:var(--tw-content);font-size:.875rem;line-height:1.25rem}.after\:font-bold:after{content:var(--tw-content);font-weight:700}.after\:content-\[\'■\'\]:after{--tw-content: "■";content:var(--tw-content)}.checked\:text-blue-500:checked{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.checked\:after\:content-\[\"✓\"\]:checked:after{--tw-content: "✓";content:var(--tw-content)}.hover\:cursor-default:hover{cursor:default}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-gray-100:hover{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.hover\:border-slate-400:hover{--tw-border-opacity: 1;border-color:rgb(148 163 184 / var(--tw-border-opacity))}.hover\:bg-neutral-700:hover{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity))}.hover\:bg-gradient-to-r:hover{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.hover\:bg-pos-100:hover{background-position:100% 100%}.hover\:font-bold:hover{font-weight:700}.hover\:text-gray-100:hover{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.hover\:text-neutral-300:hover{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-60:hover{opacity:.6}.hover\:opacity-75:hover{opacity:.75}.disabled\:cursor-default:disabled{cursor:default}.disabled\:border-gray-300:disabled{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.disabled\:bg-gray-300:disabled{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}@media (min-width: 1024px){.lg\:inline-block{display:inline-block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-auto{height:auto}.lg\:basis-72{flex-basis:18rem}.lg\:flex-row{flex-direction:row}.lg\:overflow-visible{overflow:visible}.lg\:p-2{padding:.5rem}.lg\:shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}}@media (min-width: 1280px){.xl\:ml-0{margin-left:0}.xl\:mt-0{margin-top:0}.xl\:flex{display:flex}.xl\:hidden{display:none}.xl\:basis-20{flex-basis:5rem}.xl\:basis-24{flex-basis:6rem}.xl\:basis-32{flex-basis:8rem}.xl\:basis-64{flex-basis:16rem}.xl\:basis-80{flex-basis:20rem}.xl\:basis-auto{flex-basis:auto}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:font-normal{font-weight:400}.xl\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}}
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-duration:initial;--tw-content:"";--tw-font-weight:initial;--tw-outline-style:solid}}}.relative{position:relative}.m-0{margin:0}.ms-3{margin-inline-start:.75rem}.box-border{box-sizing:border-box}.inline-block{display:inline-block}.h-\[1em\]{height:1em}.w-\[1em\]{width:1em}.basis-full{flex-basis:100%}.rotate-180{rotate:180deg}.cursor-pointer{cursor:pointer}.appearance-none{appearance:none}.rounded-xs{border-radius:.125rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-solid{--tw-border-style:solid;border-style:solid}.border-current{border-color:currentColor}.ps-3{padding-inline-start:.75rem}.align-text-bottom{vertical-align:text-bottom}.text-\[\.8em\]{font-size:.8em}.text-current{color:currentColor}.opacity-60{opacity:.6}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.duration-200{--tw-duration:.2s;transition-duration:.2s}.\[font\:inherit\]{font:inherit}.after\:-m-\[\.2rem\]:after{content:var(--tw-content);margin:-.2rem}.after\:flex:after{content:var(--tw-content);display:flex}.after\:justify-center:after{content:var(--tw-content);justify-content:center}.after\:align-middle:after{content:var(--tw-content);vertical-align:middle}.after\:text-sm:after{content:var(--tw-content);font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.after\:font-bold:after{content:var(--tw-content);--tw-font-weight:700;font-weight:700}.after\:content-\[\'■\'\]:after{--tw-content:"■";content:var(--tw-content)}.checked\:after\:content-\[\"✓\"\]:checked:after{--tw-content:"✓";content:var(--tw-content)}@media (hover:hover){.hover\:cursor-default:hover{cursor:default}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:opacity-60:hover{opacity:.6}.hover\:opacity-75:hover{opacity:.75}.hover\:opacity-100:hover{opacity:1}}.disabled\:cursor-default:disabled{cursor:default}.disabled\:border-gray-300:disabled{border-color:oklch(87.2% .01 258.338)}.disabled\:bg-gray-300:disabled{background-color:oklch(87.2% .01 258.338)}.disabled\:text-gray-500:disabled{color:oklch(55.1% .027 264.364)}:focus-visible>.\[\:focus-visible\>\&\]\:outline{outline-style:var(--tw-outline-style);outline-width:1px}:focus-visible>.\[\:focus-visible\>\&\]\:outline-2{outline-style:var(--tw-outline-style);outline-width:2px}:focus-visible>.\[\:focus-visible\>\&\]\:outline-offset-2{outline-offset:2px}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
3
+ /*$vite$:1*/
package/package.json CHANGED
@@ -1,63 +1,130 @@
1
1
  {
2
2
  "name": "@attebyte/react-tree-select",
3
- "version": "1.0.0",
4
- "description": "A tree select component for React",
5
- "type": "module",
6
- "main": "dist/main.js",
7
- "types": "dist/main.d.ts",
8
- "files": [
9
- "dist"
10
- ],
3
+ "version": "2.0.0",
4
+ "description": "Accessible React tree select and checkbox tree component with tri-state (indeterminate) selection, keyboard navigation, TypeScript generics and customizable, Tailwind-friendly styling.",
11
5
  "keywords": [
12
6
  "react",
7
+ "react-component",
13
8
  "tree",
14
- "select",
15
- "component"
9
+ "tree-select",
10
+ "treeselect",
11
+ "tree-view",
12
+ "treeview",
13
+ "checkbox-tree",
14
+ "checkbox",
15
+ "tree-checkbox",
16
+ "multi-select",
17
+ "indeterminate",
18
+ "tri-state",
19
+ "hierarchy",
20
+ "nested",
21
+ "accessible",
22
+ "a11y",
23
+ "aria",
24
+ "wai-aria",
25
+ "keyboard-navigation",
26
+ "typescript",
27
+ "tailwind",
28
+ "tailwindcss",
29
+ "file-tree",
30
+ "folder-tree"
16
31
  ],
17
- "author": "Tristan Attebery",
18
- "license": "GPL-3.0-only",
32
+ "homepage": "https://rts.attebyte.io",
33
+ "bugs": {
34
+ "url": "https://github.com/Attebyte/react-tree-select/issues"
35
+ },
19
36
  "repository": {
20
37
  "type": "git",
21
- "url": "https://github.com/Attebyte/react-tree-select"
38
+ "url": "git+https://github.com/Attebyte/react-tree-select.git"
39
+ },
40
+ "license": "MIT",
41
+ "author": "Tristan Attebery (https://attebyte.io)",
42
+ "type": "module",
43
+ "main": "dist/main.js",
44
+ "types": "dist/main.d.ts",
45
+ "exports": {
46
+ ".": {
47
+ "types": "./dist/main.d.ts",
48
+ "import": "./dist/main.js",
49
+ "default": "./dist/main.js"
50
+ },
51
+ "./style.css": {
52
+ "types": "./dist/style.css.d.ts",
53
+ "default": "./dist/style.css"
54
+ },
55
+ "./dist/style.css": {
56
+ "types": "./dist/style.css.d.ts",
57
+ "default": "./dist/style.css"
58
+ },
59
+ "./package.json": "./package.json"
60
+ },
61
+ "sideEffects": [
62
+ "**/*.css"
63
+ ],
64
+ "files": [
65
+ "dist"
66
+ ],
67
+ "publishConfig": {
68
+ "registry": "https://registry.npmjs.org/",
69
+ "@attebyte:registry": "https://registry.npmjs.org/",
70
+ "access": "public"
71
+ },
72
+ "engines": {
73
+ "node": ">=20"
22
74
  },
23
75
  "scripts": {
24
- "dev": "vite",
76
+ "dev": "storybook dev -p 6006",
25
77
  "build": "tsc --p ./tsconfig.build.json && vite build",
26
- "build-site": "tsc && vite build -c vite.site.config.ts",
27
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
28
- "preview": "vite preview",
29
- "prepublishOnly": "npm run build && npm run build-site",
30
- "test": "vitest"
78
+ "build-site": "npm run build && npm run build-storybook && npm ci --prefix website && npm run build --prefix website",
79
+ "lint": "eslint . --report-unused-disable-directives --max-warnings 0",
80
+ "typecheck": "tsc",
81
+ "prepublishOnly": "npm run lint && npm run typecheck && npm run test:run && npm run build",
82
+ "test": "vitest --project unit",
83
+ "test:run": "vitest run --project unit",
84
+ "test:storybook": "vitest run --project storybook",
85
+ "storybook": "storybook dev -p 6006",
86
+ "build-storybook": "storybook build -o storybook-static"
31
87
  },
32
88
  "peerDependencies": {
33
- "react": "^18.2.0",
34
- "react-dom": "^18.2.0"
35
- },
36
- "devDependencies": {
37
- "@types/node": "^20.11.17",
38
- "@types/react": "^18.2.55",
39
- "@types/react-dom": "^18.2.19",
40
- "@typescript-eslint/eslint-plugin": "^6.21.0",
41
- "@typescript-eslint/parser": "^6.21.0",
42
- "@vitejs/plugin-react": "^4.2.1",
43
- "autoprefixer": "^10.4.17",
44
- "eslint": "^8.56.0",
45
- "eslint-plugin-react-hooks": "^4.6.0",
46
- "eslint-plugin-react-refresh": "^0.4.5",
47
- "postcss": "^8.4.35",
48
- "react": "^18.2.0",
49
- "react-dom": "^18.2.0",
50
- "react-icons": "^5.0.1",
51
- "react-router-dom": "^6.22.1",
52
- "tailwindcss": "^3.4.1",
53
- "typescript": "^5.2.2",
54
- "vite": "^5.1.0",
55
- "vite-plugin-dts": "^3.7.2",
56
- "vitest": "^1.3.0"
89
+ "react": "^18.0.0 || ^19.0.0",
90
+ "react-dom": "^18.0.0 || ^19.0.0"
57
91
  },
58
92
  "dependencies": {
59
- "class-variance-authority": "^0.7.0",
60
- "clsx": "^2.1.0",
61
- "tailwind-merge": "^2.2.1"
93
+ "class-variance-authority": "^0.7.1",
94
+ "clsx": "^2.1.1",
95
+ "tailwind-merge": "^3.7.0"
96
+ },
97
+ "devDependencies": {
98
+ "@eslint/js": "^10.0.1",
99
+ "@microsoft/api-extractor": "^7.59.4",
100
+ "@storybook/addon-a11y": "^10.6.3",
101
+ "@storybook/addon-docs": "^10.6.3",
102
+ "@storybook/addon-vitest": "^10.6.3",
103
+ "@storybook/react-vite": "^10.6.3",
104
+ "@tailwindcss/vite": "^4.3.3",
105
+ "@testing-library/dom": "^10.4.2",
106
+ "@testing-library/react": "^16.3.3",
107
+ "@testing-library/user-event": "^14.6.8",
108
+ "@types/node": "^24.19.2",
109
+ "@types/react": "^19.2.0",
110
+ "@types/react-dom": "^19.2.0",
111
+ "@vitejs/plugin-react": "^6.1.2",
112
+ "@vitest/browser-playwright": "^5.0.5",
113
+ "eslint": "^10.13.0",
114
+ "eslint-plugin-react-hooks": "^7.1.1",
115
+ "eslint-plugin-react-refresh": "^0.5.7",
116
+ "globals": "^17.13.0",
117
+ "jsdom": "^30.1.3",
118
+ "playwright": "^1.64.1",
119
+ "react": "^19.2.0",
120
+ "react-dom": "^19.2.0",
121
+ "react-icons": "^5.7.0",
122
+ "storybook": "^10.6.3",
123
+ "tailwindcss": "^4.3.3",
124
+ "typescript": "~6.0.3",
125
+ "typescript-eslint": "^8.72.0",
126
+ "vite": "^8.3.4",
127
+ "vite-plugin-dts": "^5.1.2",
128
+ "vitest": "^5.0.5"
62
129
  }
63
130
  }
@@ -1,15 +0,0 @@
1
- import { VariantProps } from 'class-variance-authority';
2
- import React from 'react';
3
- import { StandardComponentProps } from './TreeSelect';
4
- interface Props<T> {
5
- standardComponentProps: StandardComponentProps<T>;
6
- expanded: boolean;
7
- show: boolean;
8
- }
9
- declare const iconVariants: (props?: ({
10
- rotated?: boolean | null | undefined;
11
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
12
- export interface ExpandIconProps<T> extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof iconVariants>, Props<T> {
13
- }
14
- declare const _default: <T>(props: ExpandIconProps<T>) => import("react/jsx-runtime").JSX.Element | null;
15
- export default _default;
@@ -1,17 +0,0 @@
1
- import { VariantProps } from 'class-variance-authority';
2
- import React from 'react';
3
- import { StandardComponentProps } from './TreeSelect';
4
- interface Props<T> {
5
- myRef?: React.RefObject<HTMLInputElement>;
6
- standardComponentProps: StandardComponentProps<T>;
7
- checked?: boolean | null;
8
- expanded?: boolean;
9
- disabled?: boolean;
10
- }
11
- declare const checkVariants: (props?: ({
12
- mixed?: boolean | null | undefined;
13
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
- export interface NodeCheckProps<T> extends React.HTMLAttributes<HTMLInputElement>, VariantProps<typeof checkVariants>, Props<T> {
15
- }
16
- declare const _default: <T>(props: NodeCheckProps<T>) => import("react/jsx-runtime").JSX.Element;
17
- export default _default;
@@ -1,22 +0,0 @@
1
- import { VariantProps } from 'class-variance-authority';
2
- import React from 'react';
3
- import { ExpandIconProps } from './ExpandIcon';
4
- import { StandardComponentProps } from './TreeSelect';
5
- interface Props<T> {
6
- standardComponentProps: StandardComponentProps<T>;
7
- label: string;
8
- hasChildren: boolean;
9
- expanded?: boolean;
10
- expandDisabledNodes?: boolean;
11
- iconClassName?: string;
12
- iconStyle?: React.CSSProperties;
13
- ExpandIconComponent: React.ComponentType<ExpandIconProps<T>>;
14
- }
15
- declare const labelVariants: (props?: ({
16
- disabled?: boolean | null | undefined;
17
- expandEnabled?: boolean | null | undefined;
18
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
19
- export interface NodeLabelProps<T> extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof labelVariants>, Props<T> {
20
- }
21
- declare const _default: <T>(props: NodeLabelProps<T>) => import("react/jsx-runtime").JSX.Element;
22
- export default _default;
@@ -1,31 +0,0 @@
1
- import React from 'react';
2
- import { NodeCheckProps } from './NodeCheck';
3
- import { NodeLabelProps } from './NodeLabel';
4
- import { ExpandIconProps } from './ExpandIcon';
5
- import { VariantProps } from 'class-variance-authority';
6
- import { StandardComponentProps } from './TreeSelect';
7
- interface Props<T> {
8
- standardComponentProps: StandardComponentProps<T>;
9
- disabled?: boolean;
10
- level?: number;
11
- defaultExpanded?: boolean;
12
- expandDisabledNodes?: boolean;
13
- chainedSelect?: boolean;
14
- labelClassName?: string;
15
- labelStyle?: React.CSSProperties;
16
- iconClassName?: string;
17
- iconStyle?: React.CSSProperties;
18
- inputClassName?: string;
19
- inputStyle?: React.CSSProperties;
20
- CheckComponent: React.ComponentType<NodeCheckProps<T>>;
21
- LabelComponent: React.ComponentType<NodeLabelProps<T>>;
22
- ExpandIconComponent: React.ComponentType<ExpandIconProps<T>>;
23
- onChange: (node: T, value: boolean | null) => void;
24
- }
25
- declare const nodeVariants: (props?: ({
26
- nested?: boolean | null | undefined;
27
- } & import("class-variance-authority/types").ClassProp) | undefined) => string;
28
- export interface TreeNodeProps<T> extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'>, VariantProps<typeof nodeVariants>, Props<T> {
29
- }
30
- declare const _default: <T>(props: TreeNodeProps<T>) => import("react/jsx-runtime").JSX.Element;
31
- export default _default;
@@ -1,36 +0,0 @@
1
- import React from 'react';
2
- import { TreeNodeProps } from './TreeNode';
3
- import { NodeCheckProps } from './NodeCheck';
4
- import { NodeLabelProps } from './NodeLabel';
5
- import { ExpandIconProps } from './ExpandIcon';
6
- export interface StandardComponentProps<T> {
7
- node: T;
8
- expanded?: boolean;
9
- uniqueIDProperty: keyof T;
10
- labelProperty: keyof T;
11
- valueProperty?: keyof T;
12
- childrenProperty: keyof T;
13
- disabledProperty?: keyof T;
14
- }
15
- export interface TreeSelectProps<T> extends Omit<React.HTMLProps<HTMLDivElement>, "data" | "onChange">, Omit<StandardComponentProps<T>, "node" | "expanded"> {
16
- data?: T[];
17
- defaultData?: T[];
18
- disabled?: boolean;
19
- expandDisabledNodes?: boolean;
20
- defaultExpanded?: boolean;
21
- chainedSelect?: boolean;
22
- nodeClassName?: string;
23
- nodeStyle?: React.CSSProperties;
24
- labelClassName?: string;
25
- labelStyle?: React.CSSProperties;
26
- iconClassName?: string;
27
- iconStyle?: React.CSSProperties;
28
- inputClassName?: string;
29
- inputStyle?: React.CSSProperties;
30
- CustomNodeComponent?: React.ComponentType<TreeNodeProps<T>>;
31
- CustomCheckComponent?: React.ComponentType<NodeCheckProps<T>>;
32
- CustomLabelComponent?: React.ComponentType<NodeLabelProps<T>>;
33
- CustomExpandIconComponent?: React.ComponentType<ExpandIconProps<T>>;
34
- onChange?: (data: T[]) => void;
35
- }
36
- export declare const TreeSelect: <T>(props: TreeSelectProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { type ClassValue } from "clsx";
2
- export declare function cn(...inputs: ClassValue[]): string;
@@ -1,9 +0,0 @@
1
- export declare class TreeUtility {
2
- static initializeTree<T>(tree: T[], parentIDProperty: keyof T, childrenProperty: keyof T, uniqueIDProperty: keyof T): void;
3
- private static setParentID;
4
- static omitParentID<T extends {
5
- _parentID?: any;
6
- }>(tree: T[], childrenProperty: keyof Omit<T, '_parentID'>): Omit<T, '_parentID'>[];
7
- static getNode<T>(tree: T[], childrenProperty: keyof T, uniqueIDProperty: keyof T, uniqueValue: any): T | undefined;
8
- static chainUpdate<T>(tree: T[], startingNode: T, parentIDProperty: keyof T, childrenProperty: keyof T, valueProperty: keyof T, uniqueIDProperty: keyof T, newValue: boolean | null, disabledProperty?: keyof T): void;
9
- }