@dashfoo/react 0.8.2 → 0.9.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.
@@ -0,0 +1,211 @@
1
+ @layer theme, base, dashfoo-structure, components, utilities;
2
+
3
+ @layer dashfoo-structure {
4
+ [data-dashfoo="layout"] {
5
+ display: flex;
6
+ height: 100%;
7
+ position: relative;
8
+ width: 100%;
9
+ }
10
+
11
+ [data-dashfoo="float-titlebar"] {
12
+ align-items: center;
13
+ display: flex;
14
+ flex-shrink: 0;
15
+ gap: 0.375rem;
16
+ touch-action: none;
17
+ }
18
+
19
+ [data-dashfoo="float-title"],
20
+ [data-dashfoo="float-rename"] {
21
+ flex: 1;
22
+ min-width: 0;
23
+ overflow: hidden;
24
+ text-overflow: ellipsis;
25
+ white-space: nowrap;
26
+ }
27
+
28
+ [data-dashfoo="float-minimize"],
29
+ [data-dashfoo="float-dock"] {
30
+ align-items: center;
31
+ cursor: pointer;
32
+ display: inline-flex;
33
+ flex-shrink: 0;
34
+ }
35
+
36
+ [data-dashfoo="float-body"] {
37
+ flex: 1;
38
+ min-height: 0;
39
+ position: relative;
40
+ }
41
+
42
+ [data-dashfoo="float-overlay"] {
43
+ inset: 0;
44
+ pointer-events: none;
45
+ position: fixed;
46
+ z-index: 1;
47
+ }
48
+
49
+ [data-dashfoo="row"] {
50
+ display: flex;
51
+ flex: 1;
52
+ min-height: 0;
53
+ min-width: 0;
54
+ }
55
+
56
+ [data-dashfoo="icon"] {
57
+ pointer-events: none;
58
+ }
59
+
60
+ [data-dashfoo="tab-overflow-menu"] {
61
+ position: absolute;
62
+ right: 0;
63
+ top: 100%;
64
+ z-index: 10;
65
+ }
66
+
67
+ [data-dashfoo="tabset"] {
68
+ display: flex;
69
+ flex-direction: column;
70
+ height: 100%;
71
+ min-height: 0;
72
+ min-width: 0;
73
+ width: 100%;
74
+ }
75
+
76
+ [data-dashfoo="tabstrip"] {
77
+ display: flex;
78
+ flex-shrink: 0;
79
+ }
80
+
81
+ [data-dashfoo="tablist"] {
82
+ display: flex;
83
+ min-width: 0;
84
+ overflow-x: auto;
85
+ }
86
+
87
+ [data-dashfoo="tabset-toolbar"] {
88
+ align-items: center;
89
+ display: flex;
90
+ flex-shrink: 0;
91
+ margin-inline-start: auto;
92
+ }
93
+
94
+ [data-dashfoo="tabcontent"] {
95
+ flex: 1;
96
+ min-height: 0;
97
+ overflow: auto;
98
+ }
99
+
100
+ [data-dashfoo="tab-overflow-root"] {
101
+ position: relative;
102
+ }
103
+ [data-dashfoo="float"],
104
+ [data-dashfoo="float-chip"] {
105
+ pointer-events: auto;
106
+ position: absolute;
107
+ z-index: var(--dashfoo-float-z, 1);
108
+ left: clamp(
109
+ 0px,
110
+ var(--dashfoo-float-left),
111
+ calc(100vw - min(var(--dashfoo-float-width), 100vw))
112
+ );
113
+ top: clamp(
114
+ 0px,
115
+ var(--dashfoo-float-top),
116
+ calc(100dvh - min(var(--dashfoo-float-height), 100dvh))
117
+ );
118
+ }
119
+ [data-dashfoo="float"] {
120
+ height: min(var(--dashfoo-float-height), 100dvh);
121
+ width: min(var(--dashfoo-float-width), 100vw);
122
+ }
123
+ [data-dashfoo="float-chip"] {
124
+ left: clamp(0px, var(--dashfoo-float-left), calc(100vw - min(168px, 100vw)));
125
+ top: clamp(0px, var(--dashfoo-float-top), calc(100dvh - min(34px, 100dvh)));
126
+ }
127
+ [data-dashfoo="float-titlebar"]:not([data-editable]) {
128
+ cursor: default;
129
+ }
130
+ [data-dashfoo="float-resize"] {
131
+ position: absolute;
132
+ touch-action: none;
133
+ z-index: 1;
134
+ }
135
+ [data-dashfoo="float-resize"][data-edge="n"],
136
+ [data-dashfoo="float-resize"][data-edge="s"] {
137
+ cursor: ns-resize;
138
+ height: 12px;
139
+ inset-inline: 12px;
140
+ }
141
+ [data-dashfoo="float-resize"][data-edge="n"] {
142
+ top: -6px;
143
+ }
144
+ [data-dashfoo="float-resize"][data-edge="s"] {
145
+ bottom: -6px;
146
+ }
147
+ [data-dashfoo="float-resize"][data-edge="e"],
148
+ [data-dashfoo="float-resize"][data-edge="w"] {
149
+ cursor: ew-resize;
150
+ width: 12px;
151
+ inset-block: 12px;
152
+ }
153
+ [data-dashfoo="float-resize"][data-edge="e"] {
154
+ right: -6px;
155
+ }
156
+ [data-dashfoo="float-resize"][data-edge="w"] {
157
+ left: -6px;
158
+ }
159
+ [data-dashfoo="float-resize"][data-edge="ne"],
160
+ [data-dashfoo="float-resize"][data-edge="nw"],
161
+ [data-dashfoo="float-resize"][data-edge="se"],
162
+ [data-dashfoo="float-resize"][data-edge="sw"] {
163
+ height: 20px;
164
+ width: 20px;
165
+ }
166
+ [data-dashfoo="float-resize"][data-edge="ne"] {
167
+ cursor: nesw-resize;
168
+ top: -8px;
169
+ right: -8px;
170
+ }
171
+ [data-dashfoo="float-resize"][data-edge="nw"] {
172
+ cursor: nwse-resize;
173
+ top: -8px;
174
+ left: -8px;
175
+ }
176
+ [data-dashfoo="float-resize"][data-edge="se"] {
177
+ cursor: nwse-resize;
178
+ bottom: -8px;
179
+ right: -8px;
180
+ }
181
+ [data-dashfoo="float-resize"][data-edge="sw"] {
182
+ cursor: nesw-resize;
183
+ bottom: -8px;
184
+ left: -8px;
185
+ }
186
+ [data-dashfoo="dock-indicator"] {
187
+ box-sizing: border-box;
188
+ pointer-events: none;
189
+ position: fixed;
190
+ transition: var(--dashfoo-dock-transition, left 60ms, top 60ms, width 60ms, height 60ms);
191
+ z-index: var(--dashfoo-dock-z, 9999);
192
+ background: var(--dashfoo-dock-fill, oklch(0.556 0 0 / 0.18));
193
+ border: var(--dashfoo-dock-border-width, 1px) solid
194
+ var(--dashfoo-dock-border, oklch(0.708 0 0 / 0.75));
195
+ border-radius: var(--dashfoo-dock-radius, 6px);
196
+ height: var(--dashfoo-dock-height);
197
+ left: var(--dashfoo-dock-left);
198
+ top: var(--dashfoo-dock-top);
199
+ width: var(--dashfoo-dock-width);
200
+ }
201
+ [data-dashfoo="dock-indicator"][data-insertion] {
202
+ border-radius: var(--dashfoo-dock-line-radius, 2px);
203
+ }
204
+ [data-dashfoo="drag-preview"] {
205
+ left: 0;
206
+ position: absolute;
207
+ top: 0;
208
+ transform: translate(var(--dashfoo-preview-x), var(--dashfoo-preview-y));
209
+ width: max-content;
210
+ }
211
+ }
@@ -0,0 +1,2 @@
1
+ // oxlint-disable-next-line unicorn/require-module-specifiers -- CSS entry points support side-effect imports without JavaScript exports.
2
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dashfoo/react",
3
- "version": "0.8.2",
3
+ "version": "0.9.0",
4
4
  "description": "Headless React layer for dashfoo: DashfooLayout, hooks, slots, and the react-resizable-panels + dnd-kit adapters.",
5
5
  "license": "MIT",
6
6
  "author": "Pedro Filho <pedro@filho.me>",
@@ -13,12 +13,18 @@
13
13
  "dist"
14
14
  ],
15
15
  "type": "module",
16
- "sideEffects": false,
16
+ "sideEffects": [
17
+ "*.css"
18
+ ],
17
19
  "types": "dist/index.d.ts",
18
20
  "exports": {
19
21
  ".": {
20
22
  "types": "./dist/index.d.ts",
21
23
  "default": "./dist/index.js"
24
+ },
25
+ "./styles.css": {
26
+ "types": "./dist/styles.css.d.ts",
27
+ "default": "./dist/styles.css"
22
28
  }
23
29
  },
24
30
  "publishConfig": {
@@ -28,23 +34,23 @@
28
34
  "@dnd-kit/abstract": "^0.5.0",
29
35
  "@dnd-kit/dom": "^0.5.0",
30
36
  "@xstate/react": "^6.0.0",
31
- "react-resizable-panels": "^4.12.3",
37
+ "react-resizable-panels": "^4.12.4",
32
38
  "xstate": "^5.32.6",
33
39
  "zustand": "^5.0.15",
34
- "@dashfoo/core": "1.1.1"
40
+ "@dashfoo/core": "1.1.3"
35
41
  },
36
42
  "devDependencies": {
37
43
  "@testing-library/jest-dom": "^7.0.1",
38
44
  "@testing-library/react": "^16.3.3",
39
- "@types/react": "^19.2.17",
40
- "@types/react-dom": "^19.2.5",
45
+ "@types/react": "^19.3.0",
46
+ "@types/react-dom": "^19.3.0",
41
47
  "jsdom": "^30.0.1",
42
- "react": "^19.2.7",
43
- "react-dom": "^19.2.7",
48
+ "react": "^19.3.0",
49
+ "react-dom": "^19.3.0",
44
50
  "typescript": "^7.0.2",
45
- "vitest": "^4.1.11",
46
- "@repo/typescript-config": "0.0.0",
47
- "@repo/config-vitest": "0.0.0"
51
+ "vitest": "^5.0.0",
52
+ "@repo/config-vitest": "0.0.0",
53
+ "@repo/typescript-config": "0.0.0"
48
54
  },
49
55
  "peerDependencies": {
50
56
  "react": "^18.3.1 || ^19.0.0",