@flexkit/studio 0.0.27 → 0.0.29

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.
Files changed (94) hide show
  1. package/dist/asset-TS7J5GA5.js +2 -0
  2. package/dist/{asset-REAMGMQL.js.map → asset-TS7J5GA5.js.map} +1 -1
  3. package/dist/chunk-73RMWG53.js +2 -0
  4. package/dist/{chunk-X3S7TRCM.js.map → chunk-73RMWG53.js.map} +1 -1
  5. package/dist/chunk-7MSX5T2Z.js +2 -0
  6. package/dist/chunk-7MSX5T2Z.js.map +1 -0
  7. package/dist/chunk-CPUC4QXH.js +2 -0
  8. package/dist/chunk-CPUC4QXH.js.map +1 -0
  9. package/dist/chunk-DWK4NNLB.js +2 -0
  10. package/dist/chunk-DWK4NNLB.js.map +1 -0
  11. package/dist/chunk-EOCJR5EY.js +2 -0
  12. package/dist/chunk-EOCJR5EY.js.map +1 -0
  13. package/dist/chunk-FVFRTCEB.js +2 -0
  14. package/dist/chunk-FVFRTCEB.js.map +1 -0
  15. package/dist/chunk-HAQICAOQ.js +2 -0
  16. package/dist/chunk-HAQICAOQ.js.map +1 -0
  17. package/dist/chunk-IXO2LU47.js +2 -0
  18. package/dist/{chunk-TBCSVE5L.js.map → chunk-IXO2LU47.js.map} +1 -1
  19. package/dist/{chunk-NNRD7YZU.js → chunk-LL2Z4TD3.js} +2 -2
  20. package/dist/{chunk-NNRD7YZU.js.map → chunk-LL2Z4TD3.js.map} +1 -1
  21. package/dist/chunk-N52AF6GE.js +2 -0
  22. package/dist/chunk-N52AF6GE.js.map +1 -0
  23. package/dist/chunk-R7N3MDOP.js +2 -0
  24. package/dist/chunk-R7N3MDOP.js.map +1 -0
  25. package/dist/chunk-V6R4AWQS.js +2 -0
  26. package/dist/chunk-V6R4AWQS.js.map +1 -0
  27. package/dist/chunk-W3TUEJJL.js +2 -0
  28. package/dist/chunk-W3TUEJJL.js.map +1 -0
  29. package/dist/chunk-WXMCINGZ.js +2 -0
  30. package/dist/{chunk-27Y2SQ67.js.map → chunk-WXMCINGZ.js.map} +1 -1
  31. package/dist/{chunk-2PEDKE5Z.js → chunk-WZ533Y4O.js} +2 -2
  32. package/dist/{chunk-2PEDKE5Z.js.map → chunk-WZ533Y4O.js.map} +1 -1
  33. package/dist/chunk-YA4ACPM5.js +2 -0
  34. package/dist/{chunk-KR7CLPY2.js.map → chunk-YA4ACPM5.js.map} +1 -1
  35. package/dist/chunk-ZEZ6TRCO.js +2 -0
  36. package/dist/chunk-ZEZ6TRCO.js.map +1 -0
  37. package/dist/datetime-NQTYGZIC.js +2 -0
  38. package/dist/{datetime-TWONUNXS.js.map → datetime-NQTYGZIC.js.map} +1 -1
  39. package/dist/editor-YIRZQR3D.js +2 -0
  40. package/dist/{editor-NFRMIYVJ.js.map → editor-YIRZQR3D.js.map} +1 -1
  41. package/dist/index.css +222 -44
  42. package/dist/index.d.ts +75 -9
  43. package/dist/index.js +221 -209
  44. package/dist/index.js.map +1 -1
  45. package/dist/{search-6ASIDGYA.js → search-UFFZBRQV.js} +2 -2
  46. package/dist/{search-6ASIDGYA.js.map → search-UFFZBRQV.js.map} +1 -1
  47. package/dist/select-A6I27JQU.js +2 -0
  48. package/dist/select-A6I27JQU.js.map +1 -0
  49. package/dist/switch-AFZGXSR3.js +2 -0
  50. package/dist/{switch-KVO3JRNX.js.map → switch-AFZGXSR3.js.map} +1 -1
  51. package/dist/text-2RL2L5FT.js +2 -0
  52. package/dist/{text-FIBUDNGR.js.map → text-2RL2L5FT.js.map} +1 -1
  53. package/dist/text-6F4QTCNT.js +2 -0
  54. package/dist/{text-ODG7ABSW.js.map → text-6F4QTCNT.js.map} +1 -1
  55. package/dist/textarea-2A4TLWZS.js +2 -0
  56. package/dist/{textarea-M4YPSJEC.js.map → textarea-2A4TLWZS.js.map} +1 -1
  57. package/dist/{types.d-DiA0h3ut.d.ts → types.d-6y0oZ2Hh.d.ts} +36 -4
  58. package/dist/ui.d.ts +16 -4
  59. package/dist/ui.js +1 -1
  60. package/dist/ui.js.map +1 -1
  61. package/dist/user-nav-4JKIFZLB.js +2 -0
  62. package/dist/user-nav-4JKIFZLB.js.map +1 -0
  63. package/package.json +5 -3
  64. package/dist/asset-REAMGMQL.js +0 -2
  65. package/dist/chunk-27Y2SQ67.js +0 -2
  66. package/dist/chunk-4KGH7PU7.js +0 -2
  67. package/dist/chunk-4KGH7PU7.js.map +0 -1
  68. package/dist/chunk-553TQFSU.js +0 -2
  69. package/dist/chunk-553TQFSU.js.map +0 -1
  70. package/dist/chunk-7NQ6QCJD.js +0 -2
  71. package/dist/chunk-7NQ6QCJD.js.map +0 -1
  72. package/dist/chunk-AALMEPYG.js +0 -2
  73. package/dist/chunk-AALMEPYG.js.map +0 -1
  74. package/dist/chunk-CWHDJ7Q4.js +0 -2
  75. package/dist/chunk-CWHDJ7Q4.js.map +0 -1
  76. package/dist/chunk-KR7CLPY2.js +0 -2
  77. package/dist/chunk-QXCD5JR4.js +0 -2
  78. package/dist/chunk-QXCD5JR4.js.map +0 -1
  79. package/dist/chunk-TBCSVE5L.js +0 -2
  80. package/dist/chunk-UUGIVWK4.js +0 -2
  81. package/dist/chunk-UUGIVWK4.js.map +0 -1
  82. package/dist/chunk-X3S7TRCM.js +0 -2
  83. package/dist/chunk-ZSJAPCIZ.js +0 -2
  84. package/dist/chunk-ZSJAPCIZ.js.map +0 -1
  85. package/dist/chunk-ZSSNAIMU.js +0 -2
  86. package/dist/chunk-ZSSNAIMU.js.map +0 -1
  87. package/dist/datetime-TWONUNXS.js +0 -2
  88. package/dist/editor-NFRMIYVJ.js +0 -2
  89. package/dist/switch-KVO3JRNX.js +0 -2
  90. package/dist/text-FIBUDNGR.js +0 -2
  91. package/dist/text-ODG7ABSW.js +0 -2
  92. package/dist/textarea-M4YPSJEC.js +0 -2
  93. package/dist/user-nav-O5G4M2VA.js +0 -2
  94. package/dist/user-nav-O5G4M2VA.js.map +0 -1
package/dist/index.css CHANGED
@@ -44,10 +44,12 @@
44
44
  --fk-font-weight-bold: 700;
45
45
  --fk-tracking-tight: -0.025em;
46
46
  --fk-tracking-widest: 0.1em;
47
+ --fk-leading-snug: 1.375;
47
48
  --fk-leading-normal: 1.5;
48
49
  --fk-leading-relaxed: 1.625;
49
50
  --fk-radius-xs: 0.125rem;
50
51
  --fk-drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);
52
+ --fk-ease-out: cubic-bezier(0, 0, 0.2, 1);
51
53
  --fk-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
52
54
  --fk-animate-spin: spin 1s linear infinite;
53
55
  --fk-animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
@@ -278,6 +280,9 @@
278
280
  .fk\:right-0 {
279
281
  right: calc(var(--fk-spacing) * 0);
280
282
  }
283
+ .fk\:right-0\.5 {
284
+ right: calc(var(--fk-spacing) * 0.5);
285
+ }
281
286
  .fk\:right-0\.75 {
282
287
  right: calc(var(--fk-spacing) * 0.75);
283
288
  }
@@ -360,6 +365,9 @@
360
365
  max-width: 1400px;
361
366
  }
362
367
  }
368
+ .fk\:-mx-0\.5 {
369
+ margin-inline: calc(var(--fk-spacing) * -0.5);
370
+ }
363
371
  .fk\:-mx-1 {
364
372
  margin-inline: calc(var(--fk-spacing) * -1);
365
373
  }
@@ -1370,6 +1378,9 @@
1370
1378
  .fk\:w-48\! {
1371
1379
  width: calc(var(--fk-spacing) * 48) !important;
1372
1380
  }
1381
+ .fk\:w-50 {
1382
+ width: calc(var(--fk-spacing) * 50);
1383
+ }
1373
1384
  .fk\:w-52 {
1374
1385
  width: calc(var(--fk-spacing) * 52);
1375
1386
  }
@@ -1400,9 +1411,6 @@
1400
1411
  .fk\:w-\[150px\] {
1401
1412
  width: 150px;
1402
1413
  }
1403
- .fk\:w-\[200px\] {
1404
- width: 200px;
1405
- }
1406
1414
  .fk\:w-\[350px\] {
1407
1415
  width: 350px;
1408
1416
  }
@@ -1421,6 +1429,9 @@
1421
1429
  .fk\:max-w-\(--skeleton-width\) {
1422
1430
  max-width: var(--skeleton-width);
1423
1431
  }
1432
+ .fk\:max-w-64 {
1433
+ max-width: calc(var(--fk-spacing) * 64);
1434
+ }
1424
1435
  .fk\:max-w-\[90vw\] {
1425
1436
  max-width: 90vw;
1426
1437
  }
@@ -1436,6 +1447,9 @@
1436
1447
  .fk\:max-w-screen-lg {
1437
1448
  max-width: var(--fk-breakpoint-lg);
1438
1449
  }
1450
+ .fk\:max-w-xs {
1451
+ max-width: var(--fk-container-xs);
1452
+ }
1439
1453
  .fk\:min-w-\(--cell-size\) {
1440
1454
  min-width: var(--cell-size);
1441
1455
  }
@@ -1572,9 +1586,6 @@
1572
1586
  .fk\:grid-cols-1 {
1573
1587
  grid-template-columns: repeat(1, minmax(0, 1fr));
1574
1588
  }
1575
- .fk\:grid-cols-\[0_1fr\] {
1576
- grid-template-columns: 0 1fr;
1577
- }
1578
1589
  .fk\:grid-cols-\[repeat\(auto-fill\,minmax\(8rem\,1fr\)\)\] {
1579
1590
  grid-template-columns: repeat(auto-fill,minmax(8rem,1fr));
1580
1591
  }
@@ -1614,9 +1625,6 @@
1614
1625
  .fk\:justify-start {
1615
1626
  justify-content: flex-start;
1616
1627
  }
1617
- .fk\:justify-items-start {
1618
- justify-items: start;
1619
- }
1620
1628
  .fk\:gap-0 {
1621
1629
  gap: calc(var(--fk-spacing) * 0);
1622
1630
  }
@@ -1703,9 +1711,6 @@
1703
1711
  margin-inline-end: calc(calc(var(--fk-spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));
1704
1712
  }
1705
1713
  }
1706
- .fk\:gap-y-0\.5 {
1707
- row-gap: calc(var(--fk-spacing) * 0.5);
1708
- }
1709
1714
  .fk\:gap-y-5 {
1710
1715
  row-gap: calc(var(--fk-spacing) * 5);
1711
1716
  }
@@ -1878,6 +1883,9 @@
1878
1883
  .fk\:bg-destructive {
1879
1884
  background-color: hsl(var(--destructive));
1880
1885
  }
1886
+ .fk\:bg-destructive-foreground {
1887
+ background-color: hsl(var(--destructive-foreground));
1888
+ }
1881
1889
  .fk\:bg-foreground {
1882
1890
  background-color: hsl(var(--foreground));
1883
1891
  }
@@ -1914,6 +1922,12 @@
1914
1922
  background-color: color-mix(in oklab, hsl(var(--muted)) 50%, transparent);
1915
1923
  }
1916
1924
  }
1925
+ .fk\:bg-muted\/80 {
1926
+ background-color: hsl(var(--muted));
1927
+ @supports (color: color-mix(in lab, red, red)) {
1928
+ background-color: color-mix(in oklab, hsl(var(--muted)) 80%, transparent);
1929
+ }
1930
+ }
1917
1931
  .fk\:bg-overlay\/75 {
1918
1932
  background-color: hsl(var(--overlay));
1919
1933
  @supports (color: color-mix(in lab, red, red)) {
@@ -2001,6 +2015,9 @@
2001
2015
  .fk\:px-\(--cell-size\) {
2002
2016
  padding-inline: var(--cell-size);
2003
2017
  }
2018
+ .fk\:px-0\.5 {
2019
+ padding-inline: calc(var(--fk-spacing) * 0.5);
2020
+ }
2004
2021
  .fk\:px-1 {
2005
2022
  padding-inline: calc(var(--fk-spacing) * 1);
2006
2023
  }
@@ -2076,6 +2093,9 @@
2076
2093
  .fk\:pr-3 {
2077
2094
  padding-right: calc(var(--fk-spacing) * 3);
2078
2095
  }
2096
+ .fk\:pr-4 {
2097
+ padding-right: calc(var(--fk-spacing) * 4);
2098
+ }
2079
2099
  .fk\:pr-6 {
2080
2100
  padding-right: calc(var(--fk-spacing) * 6);
2081
2101
  }
@@ -2180,6 +2200,10 @@
2180
2200
  --tw-leading: var(--fk-leading-normal);
2181
2201
  line-height: var(--fk-leading-normal);
2182
2202
  }
2203
+ .fk\:leading-snug {
2204
+ --tw-leading: var(--fk-leading-snug);
2205
+ line-height: var(--fk-leading-snug);
2206
+ }
2183
2207
  .fk\:font-bold {
2184
2208
  --tw-font-weight: var(--fk-font-weight-bold);
2185
2209
  font-weight: var(--fk-font-weight-bold);
@@ -2211,6 +2235,9 @@
2211
2235
  .fk\:text-balance {
2212
2236
  text-wrap: balance;
2213
2237
  }
2238
+ .fk\:wrap-break-word {
2239
+ overflow-wrap: break-word;
2240
+ }
2214
2241
  .fk\:whitespace-nowrap {
2215
2242
  white-space: nowrap;
2216
2243
  }
@@ -2253,6 +2280,9 @@
2253
2280
  color: color-mix(in oklab, hsl(var(--foreground)) 60%, transparent);
2254
2281
  }
2255
2282
  }
2283
+ .fk\:text-inherit {
2284
+ color: inherit;
2285
+ }
2256
2286
  .fk\:text-link {
2257
2287
  color: hsl(var(--link));
2258
2288
  }
@@ -2332,6 +2362,9 @@
2332
2362
  .fk\:opacity-70 {
2333
2363
  opacity: 70%;
2334
2364
  }
2365
+ .fk\:opacity-100 {
2366
+ opacity: 100%;
2367
+ }
2335
2368
  .fk\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\] {
2336
2369
  --tw-shadow: 0 0 0 1px var(--tw-shadow-color, hsl(var(--sidebar-border)));
2337
2370
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2348,6 +2381,10 @@
2348
2381
  --tw-shadow: 0 0 #0000;
2349
2382
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2350
2383
  }
2384
+ .fk\:shadow-sm {
2385
+ --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2386
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2387
+ }
2351
2388
  .fk\:shadow-xl {
2352
2389
  --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
2353
2390
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2360,6 +2397,10 @@
2360
2397
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2361
2398
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2362
2399
  }
2400
+ .fk\:ring-1 {
2401
+ --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2402
+ box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
2403
+ }
2363
2404
  .fk\:ring-2 {
2364
2405
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
2365
2406
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -2367,6 +2408,12 @@
2367
2408
  .fk\:ring-background {
2368
2409
  --tw-ring-color: hsl(var(--background));
2369
2410
  }
2411
+ .fk\:ring-border\/60 {
2412
+ --tw-ring-color: hsl(var(--border));
2413
+ @supports (color: color-mix(in lab, red, red)) {
2414
+ --tw-ring-color: color-mix(in oklab, hsl(var(--border)) 60%, transparent);
2415
+ }
2416
+ }
2370
2417
  .fk\:ring-ring {
2371
2418
  --tw-ring-color: hsl(var(--ring));
2372
2419
  }
@@ -2418,6 +2465,11 @@
2418
2465
  transition-timing-function: var(--tw-ease, var(--fk-default-transition-timing-function));
2419
2466
  transition-duration: var(--tw-duration, var(--fk-default-transition-duration));
2420
2467
  }
2468
+ .fk\:transition-\[transform\,background-color\] {
2469
+ transition-property: transform,background-color;
2470
+ transition-timing-function: var(--tw-ease, var(--fk-default-transition-timing-function));
2471
+ transition-duration: var(--tw-duration, var(--fk-default-transition-duration));
2472
+ }
2421
2473
  .fk\:transition-\[width\,height\,padding\] {
2422
2474
  transition-property: width,height,padding;
2423
2475
  transition-timing-function: var(--tw-ease, var(--fk-default-transition-timing-function));
@@ -2456,6 +2508,14 @@
2456
2508
  .fk\:transition-none {
2457
2509
  transition-property: none;
2458
2510
  }
2511
+ .fk\:duration-75 {
2512
+ --tw-duration: 75ms;
2513
+ transition-duration: 75ms;
2514
+ }
2515
+ .fk\:duration-100 {
2516
+ --tw-duration: 100ms;
2517
+ transition-duration: 100ms;
2518
+ }
2459
2519
  .fk\:duration-200 {
2460
2520
  --tw-duration: 200ms;
2461
2521
  transition-duration: 200ms;
@@ -2468,6 +2528,10 @@
2468
2528
  --tw-ease: linear;
2469
2529
  transition-timing-function: linear;
2470
2530
  }
2531
+ .fk\:ease-out {
2532
+ --tw-ease: var(--fk-ease-out);
2533
+ transition-timing-function: var(--fk-ease-out);
2534
+ }
2471
2535
  .fk\:animate-in {
2472
2536
  animation-name: enter;
2473
2537
  animation-duration: 150ms;
@@ -2488,6 +2552,12 @@
2488
2552
  .fk\:\[--cell-size\:--spacing\(8\)\] {
2489
2553
  --cell-size: calc(var(--fk-spacing) * 8);
2490
2554
  }
2555
+ .fk\:duration-75 {
2556
+ animation-duration: 75ms;
2557
+ }
2558
+ .fk\:duration-100 {
2559
+ animation-duration: 100ms;
2560
+ }
2491
2561
  .fk\:duration-200 {
2492
2562
  animation-duration: 200ms;
2493
2563
  }
@@ -2497,6 +2567,9 @@
2497
2567
  .fk\:ease-linear {
2498
2568
  animation-timing-function: linear;
2499
2569
  }
2570
+ .fk\:ease-out {
2571
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
2572
+ }
2500
2573
  .fk\:fade-in-0 {
2501
2574
  --tw-enter-opacity: 0;
2502
2575
  }
@@ -2508,6 +2581,13 @@
2508
2581
  opacity: 100%;
2509
2582
  }
2510
2583
  }
2584
+ .fk\:group-hover\/copyable\:opacity-100 {
2585
+ &:is(:where(.fk\:group\/copyable):hover *) {
2586
+ @media (hover: hover) {
2587
+ opacity: 100%;
2588
+ }
2589
+ }
2590
+ }
2511
2591
  .fk\:group-hover\/menu-item\:opacity-100 {
2512
2592
  &:is(:where(.fk\:group\/menu-item):hover *) {
2513
2593
  @media (hover: hover) {
@@ -2515,6 +2595,11 @@
2515
2595
  }
2516
2596
  }
2517
2597
  }
2598
+ .fk\:group-focus-visible\/copyable\:opacity-100 {
2599
+ &:is(:where(.fk\:group\/copyable):focus-visible *) {
2600
+ opacity: 100%;
2601
+ }
2602
+ }
2518
2603
  .fk\:group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8 {
2519
2604
  &:is(:where(.fk\:group\/menu-item):has(*[data-sidebar="menu-action"]) *) {
2520
2605
  padding-right: calc(var(--fk-spacing) * 8);
@@ -3518,6 +3603,25 @@
3518
3603
  outline-color: hsl(var(--ring));
3519
3604
  }
3520
3605
  }
3606
+ .fk\:active\:translate-y-px {
3607
+ &:active {
3608
+ --tw-translate-y: 1px;
3609
+ translate: var(--tw-translate-x) var(--tw-translate-y);
3610
+ }
3611
+ }
3612
+ .fk\:active\:scale-\[0\.98\] {
3613
+ &:active {
3614
+ scale: 0.98;
3615
+ }
3616
+ }
3617
+ .fk\:active\:bg-muted\/70 {
3618
+ &:active {
3619
+ background-color: hsl(var(--muted));
3620
+ @supports (color: color-mix(in lab, red, red)) {
3621
+ background-color: color-mix(in oklab, hsl(var(--muted)) 70%, transparent);
3622
+ }
3623
+ }
3624
+ }
3521
3625
  .fk\:active\:bg-sidebar-accent {
3522
3626
  &:active {
3523
3627
  background-color: hsl(var(--sidebar-accent));
@@ -3605,16 +3709,6 @@
3605
3709
  background-color: hsl(var(--sidebar-background));
3606
3710
  }
3607
3711
  }
3608
- .fk\:has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\] {
3609
- &:has(>svg) {
3610
- grid-template-columns: calc(var(--spacing) * 4) 1fr;
3611
- }
3612
- }
3613
- .fk\:has-\[\>svg\]\:gap-x-3 {
3614
- &:has(>svg) {
3615
- column-gap: calc(var(--fk-spacing) * 3);
3616
- }
3617
- }
3618
3712
  .fk\:has-\[\>svg\]\:px-1\.5 {
3619
3713
  &:has(>svg) {
3620
3714
  padding-inline: calc(var(--fk-spacing) * 1.5);
@@ -3740,6 +3834,11 @@
3740
3834
  flex-direction: column;
3741
3835
  }
3742
3836
  }
3837
+ .fk\:data-inset\:pl-8 {
3838
+ &[data-inset] {
3839
+ padding-left: calc(var(--fk-spacing) * 8);
3840
+ }
3841
+ }
3743
3842
  .fk\:data-placeholder\:text-muted-foreground {
3744
3843
  &[data-placeholder] {
3745
3844
  color: hsl(var(--muted-foreground));
@@ -3786,11 +3885,6 @@
3786
3885
  color: hsl(var(--destructive));
3787
3886
  }
3788
3887
  }
3789
- .fk\:data-\[inset\]\:pl-8 {
3790
- &[data-inset] {
3791
- padding-left: calc(var(--fk-spacing) * 8);
3792
- }
3793
- }
3794
3888
  .fk\:data-\[orientation\=horizontal\]\:h-px {
3795
3889
  &[data-orientation="horizontal"] {
3796
3890
  height: 1px;
@@ -3989,16 +4083,6 @@
3989
4083
  max-width: var(--fk-container-xs);
3990
4084
  }
3991
4085
  }
3992
- .fk\:\*\:data-\[slot\=alert-description\]\:text-destructive\/90 {
3993
- :is(& > *) {
3994
- &[data-slot="alert-description"] {
3995
- color: hsl(var(--destructive));
3996
- @supports (color: color-mix(in lab, red, red)) {
3997
- color: color-mix(in oklab, hsl(var(--destructive)) 90%, transparent);
3998
- }
3999
- }
4000
- }
4001
- }
4002
4086
  .fk\:\*\:data-\[slot\=avatar\]\:ring-2 {
4003
4087
  :is(& > *) {
4004
4088
  &[data-slot="avatar"] {
@@ -4675,6 +4759,11 @@
4675
4759
  }
4676
4760
  }
4677
4761
  }
4762
+ .fk\:dark\:bg-foreground {
4763
+ &:is([style="color-scheme: dark;"] *) {
4764
+ background-color: hsl(var(--foreground));
4765
+ }
4766
+ }
4678
4767
  .fk\:dark\:bg-input\/30 {
4679
4768
  &:is([style="color-scheme: dark;"] *) {
4680
4769
  background-color: hsl(var(--input));
@@ -4888,6 +4977,16 @@
4888
4977
  }
4889
4978
  }
4890
4979
  }
4980
+ .fk\:data-disabled\:pointer-events-none {
4981
+ &:where([data-disabled="true"]), &:where([data-disabled]:not([data-disabled="false"])) {
4982
+ pointer-events: none;
4983
+ }
4984
+ }
4985
+ .fk\:data-disabled\:opacity-50 {
4986
+ &:where([data-disabled="true"]), &:where([data-disabled]:not([data-disabled="false"])) {
4987
+ opacity: 50%;
4988
+ }
4989
+ }
4891
4990
  .fk\:\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 {
4892
4991
  & [cmdk-group]:not([hidden]) ~[cmdk-group] {
4893
4992
  padding-top: calc(var(--fk-spacing) * 0);
@@ -5104,6 +5203,21 @@
5104
5203
  pointer-events: none;
5105
5204
  }
5106
5205
  }
5206
+ .fk\:\[\&\>svg\]\:absolute {
5207
+ &>svg {
5208
+ position: absolute;
5209
+ }
5210
+ }
5211
+ .fk\:\[\&\>svg\]\:top-4 {
5212
+ &>svg {
5213
+ top: calc(var(--fk-spacing) * 4);
5214
+ }
5215
+ }
5216
+ .fk\:\[\&\>svg\]\:left-4 {
5217
+ &>svg {
5218
+ left: calc(var(--fk-spacing) * 4);
5219
+ }
5220
+ }
5107
5221
  .fk\:\[\&\>svg\]\:size-3 {
5108
5222
  &>svg {
5109
5223
  width: calc(var(--fk-spacing) * 3);
@@ -5137,15 +5251,14 @@
5137
5251
  flex-shrink: 0;
5138
5252
  }
5139
5253
  }
5140
- .fk\:\[\&\>svg\]\:translate-y-0\.5 {
5254
+ .fk\:\[\&\>svg\]\:text-destructive {
5141
5255
  &>svg {
5142
- --tw-translate-y: calc(var(--fk-spacing) * 0.5);
5143
- translate: var(--tw-translate-x) var(--tw-translate-y);
5256
+ color: hsl(var(--destructive));
5144
5257
  }
5145
5258
  }
5146
- .fk\:\[\&\>svg\]\:text-current {
5259
+ .fk\:\[\&\>svg\]\:text-foreground {
5147
5260
  &>svg {
5148
- color: currentcolor;
5261
+ color: hsl(var(--foreground));
5149
5262
  }
5150
5263
  }
5151
5264
  .fk\:\[\&\>svg\]\:text-muted-foreground {
@@ -5197,6 +5310,17 @@
5197
5310
  }
5198
5311
  }
5199
5312
  }
5313
+ .fk\:\[\&\>svg\+div\]\:translate-y-\[-3px\] {
5314
+ &>svg+div {
5315
+ --tw-translate-y: -3px;
5316
+ translate: var(--tw-translate-x) var(--tw-translate-y);
5317
+ }
5318
+ }
5319
+ .fk\:\[\&\>svg\~\*\]\:pl-7 {
5320
+ &>svg~* {
5321
+ padding-left: calc(var(--fk-spacing) * 7);
5322
+ }
5323
+ }
5200
5324
  .fk\:\[\&\>tr\]\:last\:border-b-0 {
5201
5325
  &>tr {
5202
5326
  &:last-child {
@@ -5294,6 +5418,50 @@
5294
5418
  }
5295
5419
  }
5296
5420
  }
5421
+ @property --scroll-fade-t {
5422
+ syntax: "<length-percentage>";
5423
+ inherits: false;
5424
+ initial-value: 0px;
5425
+ }
5426
+ @property --scroll-fade-b {
5427
+ syntax: "<length-percentage>";
5428
+ inherits: false;
5429
+ initial-value: 0px;
5430
+ }
5431
+ @property --scroll-fade-s {
5432
+ syntax: "<length-percentage>";
5433
+ inherits: false;
5434
+ initial-value: 0px;
5435
+ }
5436
+ @property --scroll-fade-e {
5437
+ syntax: "<length-percentage>";
5438
+ inherits: false;
5439
+ initial-value: 0px;
5440
+ }
5441
+ @property --scroll-fade-mask {
5442
+ syntax: "*";
5443
+ inherits: false;
5444
+ }
5445
+ @property --shimmer-angle {
5446
+ syntax: "<angle>";
5447
+ inherits: true;
5448
+ initial-value: 20deg;
5449
+ }
5450
+ @property --shimmer-image {
5451
+ syntax: "*";
5452
+ inherits: false;
5453
+ }
5454
+ @property --shimmer-text-fill {
5455
+ syntax: "*";
5456
+ inherits: false;
5457
+ }
5458
+ @media (prefers-reduced-motion: reduce) {
5459
+ .shimmer {
5460
+ animation: none;
5461
+ background-image: none;
5462
+ -webkit-text-fill-color: currentColor;
5463
+ }
5464
+ }
5297
5465
  html, body {
5298
5466
  height: 100%;
5299
5467
  }
@@ -5367,8 +5535,8 @@ html, body {
5367
5535
  --accent: 240 2% 18%;
5368
5536
  --accent-foreground: 0 0% 98%;
5369
5537
  --link: 212 100% 48%;
5370
- --destructive: 357 100% 69%;
5371
- --destructive-foreground: 0 0% 100%;
5538
+ --destructive: 354 82% 49%;
5539
+ --destructive-foreground: 350 90% 10%;
5372
5540
  --warning: 36 100% 50%;
5373
5541
  --warning-foreground: 357 100% 96%;
5374
5542
  --success: 149 89% 43%;
@@ -5920,6 +6088,9 @@ pre {
5920
6088
  }
5921
6089
  @layer properties {
5922
6090
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
6091
+ :root, :host {
6092
+ --shimmer-angle: 20deg;
6093
+ }
5923
6094
  *, ::before, ::after, ::backdrop {
5924
6095
  --tw-translate-x: 0;
5925
6096
  --tw-translate-y: 0;
@@ -5975,6 +6146,13 @@ pre {
5975
6146
  --tw-ease: initial;
5976
6147
  --tw-content: "";
5977
6148
  --tw-outline-style: solid;
6149
+ --scroll-fade-t: 0px;
6150
+ --scroll-fade-b: 0px;
6151
+ --scroll-fade-s: 0px;
6152
+ --scroll-fade-e: 0px;
6153
+ --scroll-fade-mask: initial;
6154
+ --shimmer-image: initial;
6155
+ --shimmer-text-fill: initial;
5978
6156
  }
5979
6157
  }
5980
6158
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { Dispatch, JSX, SetStateAction, UIEvent, ReactElement } from 'react';
3
- import { A as AppContextType, a as ActionSetRelationship, b as ActionSetScope, C as Config, c as AppOptions, E as Entity, P as PluginOptions, d as ProjectOptions, O as OrderedAssetValue, e as SearchRequestProps, f as SearchResultItem, U as UseEntityQueryParams, M as MappedEntityItem, F as FormEntityItem, I as ImageValue, g as Schema, h as EntityData, i as AttributeValue, j as Attribute, k as MultipleRelationshipConnection, l as SingleRelationshipConnection } from './types.d-DiA0h3ut.js';
4
- export { D as DataType, m as DefaultValue, n as DefaultValueByDataType, o as FormFieldParams, p as FormFieldProps, q as FormFieldValue, L as LogoProps, r as ScopeType, S as SingleProject } from './types.d-DiA0h3ut.js';
3
+ import { A as AppContextType, a as ActionSetRelationship, b as ActionSetScope, C as Config, c as AppOptions, E as Entity, P as PluginOptions, d as ProjectOptions, O as OrderedAssetValue, e as SearchRequestProps, f as SearchResultItem, g as Attribute, U as UseEntityQueryParams, M as MappedEntityItem, F as FormEntityItem, I as ImageValue, h as Schema, i as AttributeValue, j as MultipleRelationshipConnection, k as SingleRelationshipConnection } from './types.d-6y0oZ2Hh.js';
4
+ export { D as DataType, l as DefaultValue, m as DefaultValueByDataType, n as EntityData, o as FormFieldParams, p as FormFieldProps, q as FormFieldValue, L as LogoProps, r as ScopeType, S as SingleProject } from './types.d-6y0oZ2Hh.js';
5
5
  export { Outlet, useLocation, useParams } from 'react-router-dom';
6
6
  import { OperationVariables, DocumentNode, ErrorLike } from '@apollo/client';
7
7
  export { gql } from '@apollo/client';
@@ -92,12 +92,39 @@ declare function defineConfig<T extends Config>(config: T): T;
92
92
 
93
93
  declare function defineEntity<T extends Entity>(entity: T): Entity;
94
94
 
95
+ /**
96
+ * Space bindings use OR semantics: a resource bound to ['finance', 'mkt'] is
97
+ * accessible to members of either space. Unbound resources are accessible to
98
+ * everyone. This is a UI convenience only — the server enforces the same
99
+ * rules through generated @authorization directives.
100
+ *
101
+ * `userSpaces === undefined` means membership is not known yet (auth still
102
+ * loading). Treat that as allowed so space-bound entities/attributes do not
103
+ * flicker out of the Desk sidebar, grids, and forms. Once auth resolves,
104
+ * `spaces` is always an array — possibly empty for users with no memberships.
105
+ */
106
+ declare function canAccessSpaces(userSpaces: string[] | undefined, resourceSpaces: string[] | undefined): boolean;
107
+ declare function filterAttributesForSpaces(attributes: Attribute[], userSpaces: string[] | undefined): Attribute[];
108
+ declare function filterEntitiesForSpaces(schema: Entity[], userSpaces: string[] | undefined): Entity[];
109
+
110
+ /**
111
+ * Viewers are read-only: the GraphQL route and the automations API reject
112
+ * their mutations server-side. This helper only mirrors that rule in the UI
113
+ * so restricted actions render as disabled instead of failing on submit.
114
+ * While the role is still unknown (auth loading) actions stay enabled and
115
+ * the server remains the source of truth.
116
+ */
117
+ declare function canMutateData(role: string | null | undefined): boolean;
118
+ declare function useCanMutate(): boolean;
119
+
95
120
  type User = {
96
121
  id: string;
97
122
  email: string;
98
123
  display_name: string;
99
124
  avatar_url: string;
100
125
  role: string;
126
+ /** Space codes the user belongs to (owners receive every project space). */
127
+ spaces: string[];
101
128
  };
102
129
 
103
130
  type Auth = {
@@ -130,7 +157,9 @@ declare function useEntityQuery({ entityNamePlural, schema, scope, variables, is
130
157
  isLoadingMore: boolean;
131
158
  isProjectDisabled: boolean;
132
159
  isProjectReadOnly: boolean;
133
- reload: () => void;
160
+ reload: (options?: {
161
+ preserve?: boolean;
162
+ }) => Promise<void>;
134
163
  schemaErrorMessage: string | null;
135
164
  };
136
165
 
@@ -148,22 +177,58 @@ type EntityMutationResponse = [
148
177
  ];
149
178
  declare function useEntityMutation(): EntityMutationResponse;
150
179
 
180
+ /**
181
+ * Soft-refetch active list queries for an entity without clearing the current rows first.
182
+ * Prefer this after mutations; use `useEntityQuery().reload` when an explicit loading state is desired.
183
+ */
184
+ declare function useRefreshEntityList(entityNameOrPlural: string): () => Promise<void>;
185
+
186
+ type EntityListRowPatch = {
187
+ _id: string;
188
+ attributes: {
189
+ [key: string]: string;
190
+ };
191
+ };
192
+
193
+ /**
194
+ * Patch active list rows for an entity without a soft-refetch.
195
+ * Prefer this after mutations that only change row fields (e.g. tag connect/disconnect).
196
+ */
197
+ declare function usePatchEntityList(entityNameOrPlural: string): (patches: EntityListRowPatch[]) => void;
198
+
151
199
  type EntityQuery = {
152
200
  queryEntityName: string;
153
201
  query: string;
154
202
  };
155
203
  declare function getEntityQuery(entityNamePlural: string, scope: string, schema: Schema, options?: {
156
204
  selection?: 'list' | 'full';
205
+ /**
206
+ * The top-level aggregate count is a filtered label scan on the server.
207
+ * Pagination pages (fetchMore) skip it — the total from the first page
208
+ * still stands.
209
+ */
210
+ includeCount?: boolean;
157
211
  }): EntityQuery;
158
212
  /**
159
213
  * Returns a string with the GraphQl query needed to mutate the dataToMutate object for the given entity and scope.
160
214
  */
161
- declare function getEntityUpdateMutation(entityNamePlural: string, entityId: string, scope: string, schema: Schema, originalData: FormEntityItem, dataToMutate: EntityData): string;
215
+ declare function getEntityUpdateMutation(entityNamePlural: string, entityId: string, scope: string, schema: Schema, originalData: FormEntityItem, dataToMutate: FormEntityItem, options?: {
216
+ responseFields?: string;
217
+ }): string;
162
218
  /**
163
- * Returns a string with the GraphQl mutation needed to delete an entity.
219
+ * Returns a string with the GraphQl mutation needed to delete one or more entities.
164
220
  */
165
- declare function getEntityDeleteMutation(entityName: string, schema: Schema, _id: string): string;
166
- declare function getEntityCreateMutation(entityNamePlural: string, schema: Schema, entityData: EntityData, _id: string): string;
221
+ declare function getEntityDeleteMutation(entityName: string, schema: Schema, ids: string | readonly string[]): string;
222
+ declare function getEntityDeleteWhere(ids: string | readonly string[]): {
223
+ _id: {
224
+ eq: string;
225
+ };
226
+ } | {
227
+ _id: {
228
+ in: string[];
229
+ };
230
+ };
231
+ declare function getEntityCreateMutation(entityNamePlural: string, schema: Schema, entityData: FormEntityItem, _id: string): string;
167
232
  declare function getEntitySchema(schema: Schema, entityNamePlural: string): Entity | undefined;
168
233
 
169
234
  interface DataTableFacetedFilterProps<TData, TValue> {
@@ -289,7 +354,8 @@ type ActionDeleteEntity = {
289
354
  _id?: string;
290
355
  type: 'DeleteEntity';
291
356
  payload: {
292
- entityId: string;
357
+ /** One id, or many ids for a single batch delete mutation. */
358
+ entityId: string | string[];
293
359
  entityName: string;
294
360
  silent?: boolean;
295
361
  };
@@ -323,4 +389,4 @@ declare const assetSchema: Entity;
323
389
 
324
390
  declare const tagSchema: Entity;
325
391
 
326
- export { AppOptions, Attribute, AttributeValue, type ConfigContext, DataTable, DataTableColumnHeader, DataTableFacetedFilter, DataTableRowActions, DataTableSortedBy, DataTableToolbar, DataTableViewOptions, DefaultValueSwitch, Entity, EntityData, FlexkitStudio, FormEntityItem, IMAGES_BASE_URL, MappedEntityItem, PluginOptions, ProjectDisabled, Schema, SchemaError, SearchRequestProps, SearchResultItem, type UploadedFileResult, assetSchema, defineConfig, defineEntity, getEntityCreateMutation, getEntityDeleteMutation, getEntityQuery, getEntitySchema, getEntityUpdateMutation, tagSchema, useAppContext, useAppDispatch, useAuth, useConfig, useDispatch, useEntityMutation, useEntityQuery, useGraphQLError, useGridColumnsDefinition, useSearch, useUploadAssets };
392
+ export { AppOptions, Attribute, AttributeValue, type ConfigContext, DataTable, DataTableColumnHeader, DataTableFacetedFilter, DataTableRowActions, DataTableSortedBy, DataTableToolbar, DataTableViewOptions, DefaultValueSwitch, Entity, type EntityListRowPatch, FlexkitStudio, FormEntityItem, IMAGES_BASE_URL, MappedEntityItem, PluginOptions, ProjectDisabled, Schema, SchemaError, SearchRequestProps, SearchResultItem, type UploadedFileResult, assetSchema, canAccessSpaces, canMutateData, defineConfig, defineEntity, filterAttributesForSpaces, filterEntitiesForSpaces, getEntityCreateMutation, getEntityDeleteMutation, getEntityDeleteWhere, getEntityQuery, getEntitySchema, getEntityUpdateMutation, tagSchema, useAppContext, useAppDispatch, useAuth, useCanMutate, useConfig, useDispatch, useEntityMutation, useEntityQuery, useGraphQLError, useGridColumnsDefinition, usePatchEntityList, useRefreshEntityList, useSearch, useUploadAssets };