@keepkit/ui 0.25.0 → 0.26.2

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.
@@ -3,6 +3,14 @@
3
3
  --keep-foreground: var(--foreground, #0f172a);
4
4
  --keep-card: var(--card, var(--keep-background));
5
5
  --keep-card-foreground: var(--card-foreground, var(--keep-foreground));
6
+ --keep-card-border: var(--keep-border);
7
+ --keep-card-shadow: var(--keep-shadow);
8
+ --keep-card-shadow-elevated:
9
+ 0 4px 10px color-mix(in srgb, var(--keep-foreground) 10%, transparent),
10
+ 0 16px 36px color-mix(in srgb, var(--keep-foreground) 12%, transparent);
11
+ --keep-surface-border: var(--keep-border);
12
+ --keep-surface-background: var(--keep-card);
13
+ --keep-surface-shadow: var(--keep-shadow);
6
14
  --keep-muted: var(--muted, #f1f5f9);
7
15
  --keep-muted-foreground: var(--muted-foreground, #64748b);
8
16
  --keep-border: var(--border, #d7dee8);
@@ -11,17 +11,71 @@
11
11
  flex-wrap: wrap;
12
12
  gap: var(--keep-card-gap);
13
13
  align-items: center;
14
- border: 1px solid var(--keep-border);
14
+ border: 1px solid var(--keep-surface-border);
15
15
  border-radius: calc(var(--keep-radius) + 0.25rem);
16
16
  padding: var(--keep-card-padding);
17
- background: color-mix(in srgb, var(--keep-muted) 64%, var(--keep-card));
18
- box-shadow: 0 1px 2px color-mix(in srgb, var(--keep-foreground) 4%, transparent);
17
+ background: color-mix(in srgb, var(--keep-muted) 64%, var(--keep-surface-background));
18
+ box-shadow: var(--keep-surface-shadow);
19
19
  }
20
20
 
21
21
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection"] > :first-child > :is(input, select) {
22
22
  flex: 1 1 12rem;
23
23
  }
24
24
 
25
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar"] {
26
+ display: flex;
27
+ flex-wrap: wrap;
28
+ align-items: stretch;
29
+ gap: var(--keep-card-gap);
30
+ min-width: 0;
31
+ }
32
+
33
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar"][data-variant="panel"] {
34
+ border: 1px solid var(--keep-surface-border);
35
+ border-radius: calc(var(--keep-radius) + 0.25rem);
36
+ padding: var(--keep-card-padding);
37
+ background: color-mix(in srgb, var(--keep-muted) 64%, var(--keep-surface-background));
38
+ box-shadow: var(--keep-surface-shadow);
39
+ }
40
+
41
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar-group"] {
42
+ display: grid;
43
+ flex: 1 1 12rem;
44
+ align-content: start;
45
+ gap: 0.375rem;
46
+ min-width: 0;
47
+ margin: 0;
48
+ border: 0;
49
+ padding: 0;
50
+ color: var(--keep-muted-foreground);
51
+ font-size: var(--keep-tag-size);
52
+ font-weight: 600;
53
+ }
54
+
55
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar-group"][data-group="toolbarStart"],
56
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar-group"][data-group="toolbarEnd"] {
57
+ flex-basis: auto;
58
+ }
59
+
60
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar-content"] {
61
+ display: flex;
62
+ flex-wrap: wrap;
63
+ align-items: center;
64
+ gap: var(--keep-control-gap);
65
+ min-width: 0;
66
+ }
67
+
68
+ :where(.keep-theme, [data-keep-theme]) :where([data-keepkit="collection-toolbar-content"] > :is(input, select)) {
69
+ flex: 1 1 10rem;
70
+ min-width: min(100%, 12rem);
71
+ }
72
+
73
+ :where(.keep-theme, [data-keep-theme])
74
+ [data-keepkit="collection-toolbar-content"]
75
+ > :is([data-keepkit="tag-filter"], [data-keepkit="collection-filter"]) {
76
+ flex: 1 1 12rem;
77
+ }
78
+
25
79
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-filter"] {
26
80
  display: grid;
27
81
  flex: 1 1 12rem;
@@ -141,12 +195,12 @@
141
195
  position: relative;
142
196
  gap: var(--keep-card-gap);
143
197
  min-width: 0;
144
- border: 1px solid var(--keep-border);
198
+ border: 1px solid var(--keep-card-border);
145
199
  border-radius: var(--keep-radius);
146
200
  padding: var(--keep-card-padding);
147
201
  background: var(--keep-card);
148
202
  color: var(--keep-card-foreground);
149
- box-shadow: var(--keep-shadow);
203
+ box-shadow: var(--keep-card-shadow);
150
204
  transition:
151
205
  opacity 160ms ease,
152
206
  box-shadow 160ms ease,
@@ -290,13 +344,21 @@
290
344
  }
291
345
 
292
346
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"]:hover {
293
- border-color: color-mix(in srgb, var(--keep-primary) 32%, var(--keep-border));
347
+ border-color: color-mix(in srgb, var(--keep-primary) 32%, var(--keep-card-border));
294
348
  box-shadow:
295
349
  0 2px 4px color-mix(in srgb, var(--keep-foreground) 8%, transparent),
296
350
  0 12px 28px color-mix(in srgb, var(--keep-foreground) 9%, transparent);
297
351
  transform: translateY(-1px);
298
352
  }
299
353
 
354
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"][data-card-variant="elevated"] {
355
+ box-shadow: var(--keep-card-shadow-elevated, var(--keep-card-shadow));
356
+ }
357
+
358
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"][data-card-variant="filled"] {
359
+ background: var(--keep-muted);
360
+ }
361
+
300
362
  :where(.keep-theme, [data-keep-theme]) [data-keepkit="card"]:has(> img) {
301
363
  grid-template-columns: var(--keep-thumbnail-size) minmax(0, 1fr);
302
364
  }
@@ -836,6 +898,25 @@
836
898
  align-items: stretch;
837
899
  flex-direction: column;
838
900
  }
901
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar"] {
902
+ align-items: stretch;
903
+ flex-direction: column;
904
+ }
905
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar-group"] {
906
+ flex: 0 0 auto;
907
+ width: 100%;
908
+ }
909
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="collection-toolbar-content"] {
910
+ align-items: stretch;
911
+ flex-direction: column;
912
+ }
913
+ :where(.keep-theme, [data-keep-theme])
914
+ [data-keepkit="collection-toolbar-content"]
915
+ > :is(input, select, [data-keepkit="tag-filter"], [data-keepkit="collection-filter"]) {
916
+ flex: 0 0 auto;
917
+ width: 100%;
918
+ min-width: 0;
919
+ }
839
920
  :where(.keep-theme, [data-keep-theme])
840
921
  [data-keepkit="collection"]
841
922
  > :first-child
@@ -0,0 +1,49 @@
1
+ :where(.keep-theme, [data-keep-theme])
2
+ [data-keepkit="workspace"]:is(
3
+ [data-surface="panel"],
4
+ [data-surface="compact"],
5
+ [data-surface="custom"],
6
+ [data-section-gap]
7
+ ) {
8
+ display: grid;
9
+ gap: var(--keep-workspace-gap, var(--keep-card-gap));
10
+ min-width: 0;
11
+ }
12
+
13
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace"][data-section-gap="none"] {
14
+ --keep-workspace-gap: 0;
15
+ }
16
+
17
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace"][data-section-gap="compact"] {
18
+ --keep-workspace-gap: var(--keep-control-gap);
19
+ }
20
+
21
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace"][data-section-gap="comfortable"] {
22
+ --keep-workspace-gap: calc(var(--keep-card-gap) * 1.5);
23
+ }
24
+
25
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace-region"] {
26
+ min-width: 0;
27
+ }
28
+
29
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace-region"][data-surface="compact"] {
30
+ border: 1px solid var(--keep-surface-border);
31
+ border-radius: var(--keep-radius);
32
+ padding: calc(var(--keep-card-padding) * 0.75);
33
+ background: var(--keep-surface-background);
34
+ box-shadow: var(--keep-surface-shadow);
35
+ }
36
+
37
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace-region"][data-surface="panel"] {
38
+ border: 1px solid var(--keep-surface-border);
39
+ border-radius: calc(var(--keep-radius) + 0.25rem);
40
+ padding: var(--keep-card-padding);
41
+ background: var(--keep-surface-background);
42
+ box-shadow: var(--keep-surface-shadow);
43
+ }
44
+
45
+ @media (max-width: 32rem) {
46
+ :where(.keep-theme, [data-keep-theme]) [data-keepkit="workspace-region"] {
47
+ max-width: 100%;
48
+ }
49
+ }
package/dist/tailwind.css CHANGED
@@ -15,6 +15,11 @@
15
15
  --keep-foreground: var(--color-foreground, #0f172a);
16
16
  --keep-card: var(--color-card, var(--color-background, #ffffff));
17
17
  --keep-card-foreground: var(--color-card-foreground, var(--color-foreground, #0f172a));
18
+ --keep-card-border: var(--keep-border);
19
+ --keep-card-shadow: var(--keep-shadow);
20
+ --keep-surface-border: var(--keep-border);
21
+ --keep-surface-background: var(--keep-card);
22
+ --keep-surface-shadow: var(--keep-shadow);
18
23
  --keep-muted: var(--color-muted, #f1f5f9);
19
24
  --keep-muted-foreground: var(--color-muted-foreground, #64748b);
20
25
  --keep-border: var(--color-border, #d7dee8);
@@ -8,6 +8,9 @@ declare const keepKitTheme: {
8
8
  readonly foreground: "var(--keep-foreground)";
9
9
  readonly card: "var(--keep-card)";
10
10
  readonly "card-foreground": "var(--keep-card-foreground)";
11
+ readonly "card-border": "var(--keep-card-border)";
12
+ readonly "surface-border": "var(--keep-surface-border)";
13
+ readonly "surface-background": "var(--keep-surface-background)";
11
14
  readonly muted: "var(--keep-muted)";
12
15
  readonly "muted-foreground": "var(--keep-muted-foreground)";
13
16
  readonly border: "var(--keep-border)";
package/dist/tailwind.js CHANGED
@@ -5,6 +5,9 @@ var keepKitTheme = {
5
5
  foreground: "var(--keep-foreground)",
6
6
  card: "var(--keep-card)",
7
7
  "card-foreground": "var(--keep-card-foreground)",
8
+ "card-border": "var(--keep-card-border)",
9
+ "surface-border": "var(--keep-surface-border)",
10
+ "surface-background": "var(--keep-surface-background)",
8
11
  muted: "var(--keep-muted)",
9
12
  "muted-foreground": "var(--keep-muted-foreground)",
10
13
  border: "var(--keep-border)",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tailwind.ts"],"sourcesContent":["/**\n * Tailwind v4 theme aliases. Import `@keepkit/ui/tailwind.css` in the CSS entry\n * point, then use these names when a JavaScript theme map is more convenient.\n */\nexport const keepKitTheme = {\n colors: {\n background: \"var(--keep-background)\",\n foreground: \"var(--keep-foreground)\",\n card: \"var(--keep-card)\",\n \"card-foreground\": \"var(--keep-card-foreground)\",\n muted: \"var(--keep-muted)\",\n \"muted-foreground\": \"var(--keep-muted-foreground)\",\n border: \"var(--keep-border)\",\n input: \"var(--keep-input)\",\n primary: \"var(--keep-primary)\",\n \"primary-foreground\": \"var(--keep-primary-foreground)\",\n destructive: \"var(--keep-destructive)\",\n \"destructive-foreground\": \"var(--keep-destructive-foreground)\",\n success: \"var(--keep-success)\",\n warning: \"var(--keep-warning)\",\n ring: \"var(--keep-ring)\",\n },\n borderRadius: {\n sm: \"calc(var(--keep-radius) - 4px)\",\n md: \"calc(var(--keep-radius) - 2px)\",\n lg: \"var(--keep-radius)\",\n },\n spacing: {\n card: \"var(--keep-card-padding)\",\n gap: \"var(--keep-card-gap)\",\n control: \"var(--keep-control-gap)\",\n icon: \"var(--keep-icon-size)\",\n },\n} as const;\n\nexport type KeepKitTheme = typeof keepKitTheme;\n"],"mappings":";AAIO,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,aAAa;AAAA,IACb,0BAA0B;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/tailwind.ts"],"sourcesContent":["/**\n * Tailwind v4 theme aliases. Import `@keepkit/ui/tailwind.css` in the CSS entry\n * point, then use these names when a JavaScript theme map is more convenient.\n */\nexport const keepKitTheme = {\n colors: {\n background: \"var(--keep-background)\",\n foreground: \"var(--keep-foreground)\",\n card: \"var(--keep-card)\",\n \"card-foreground\": \"var(--keep-card-foreground)\",\n \"card-border\": \"var(--keep-card-border)\",\n \"surface-border\": \"var(--keep-surface-border)\",\n \"surface-background\": \"var(--keep-surface-background)\",\n muted: \"var(--keep-muted)\",\n \"muted-foreground\": \"var(--keep-muted-foreground)\",\n border: \"var(--keep-border)\",\n input: \"var(--keep-input)\",\n primary: \"var(--keep-primary)\",\n \"primary-foreground\": \"var(--keep-primary-foreground)\",\n destructive: \"var(--keep-destructive)\",\n \"destructive-foreground\": \"var(--keep-destructive-foreground)\",\n success: \"var(--keep-success)\",\n warning: \"var(--keep-warning)\",\n ring: \"var(--keep-ring)\",\n },\n borderRadius: {\n sm: \"calc(var(--keep-radius) - 4px)\",\n md: \"calc(var(--keep-radius) - 2px)\",\n lg: \"var(--keep-radius)\",\n },\n spacing: {\n card: \"var(--keep-card-padding)\",\n gap: \"var(--keep-card-gap)\",\n control: \"var(--keep-control-gap)\",\n icon: \"var(--keep-icon-size)\",\n },\n} as const;\n\nexport type KeepKitTheme = typeof keepKitTheme;\n"],"mappings":";AAIO,IAAM,eAAe;AAAA,EAC1B,QAAQ;AAAA,IACN,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,MAAM;AAAA,IACN,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,kBAAkB;AAAA,IAClB,sBAAsB;AAAA,IACtB,OAAO;AAAA,IACP,oBAAoB;AAAA,IACpB,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,aAAa;AAAA,IACb,0BAA0B;AAAA,IAC1B,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA,cAAc;AAAA,IACZ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,EACN;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF;","names":[]}
package/dist/theme.css CHANGED
@@ -1,5 +1,6 @@
1
1
  @import "./styles/base.css";
2
2
  @import "./styles/button.css";
3
3
  @import "./styles/collection.css";
4
+ @import "./styles/workspace.css";
4
5
  @import "./styles/status.css";
5
6
  @import "./styles/sync.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keepkit/ui",
3
- "version": "0.25.0",
3
+ "version": "0.26.2",
4
4
  "description": "Headless, accessible React UI components for KeepKit.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -45,6 +45,9 @@
45
45
  },
46
46
  "./styles/sync.css": {
47
47
  "default": "./dist/styles/sync.css"
48
+ },
49
+ "./styles/workspace.css": {
50
+ "default": "./dist/styles/workspace.css"
48
51
  }
49
52
  },
50
53
  "sideEffects": [
@@ -57,7 +60,7 @@
57
60
  "react": ">=18"
58
61
  },
59
62
  "dependencies": {
60
- "@keepkit/core": "0.25.0"
63
+ "@keepkit/core": "0.26.2"
61
64
  },
62
65
  "devDependencies": {
63
66
  "@testing-library/react": "^16.3.3",