@growthub/cli 0.9.9 → 0.9.11

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 (30) hide show
  1. package/README.md +1 -1
  2. package/assets/worker-kits/creative-strategist-v1/kit.json +5 -2
  3. package/assets/worker-kits/growthub-agency-portal-starter-v1/kit.json +4 -1
  4. package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +6 -3
  5. package/assets/worker-kits/growthub-creative-video-pipeline-v1/kit.json +4 -1
  6. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/README.md +4 -4
  7. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/integration-entities/route.js +50 -0
  8. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +980 -1
  9. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/page.jsx +5 -2
  10. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/settings/integrations/page.jsx +4 -5
  11. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/workspace-builder.jsx +1686 -68
  12. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/growthub-connection-normalizer.js +12 -16
  13. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/adapters/integrations/index.js +61 -11
  14. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/domain/integrations.js +31 -1
  15. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-schema.js +236 -9
  16. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package-lock.json +10 -64
  17. package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/package.json +1 -0
  18. package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +5 -2
  19. package/assets/worker-kits/growthub-email-marketing-v1/kit.json +5 -2
  20. package/assets/worker-kits/growthub-geo-seo-v1/kit.json +5 -2
  21. package/assets/worker-kits/growthub-hyperframes-studio-v1/kit.json +5 -2
  22. package/assets/worker-kits/growthub-marketing-skills-v1/kit.json +6 -3
  23. package/assets/worker-kits/growthub-open-higgsfield-studio-v1/kit.json +5 -2
  24. package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +6 -3
  25. package/assets/worker-kits/growthub-postiz-social-v1/kit.json +5 -2
  26. package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +6 -3
  27. package/assets/worker-kits/growthub-video-use-studio-v1/kit.json +5 -2
  28. package/assets/worker-kits/growthub-zernio-social-v1/kit.json +5 -2
  29. package/dist/index.js +1750 -433
  30. package/package.json +1 -1
@@ -991,6 +991,22 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
991
991
  text-overflow: ellipsis;
992
992
  white-space: nowrap;
993
993
  }
994
+ .workspace-widget-source-chip {
995
+ max-width: 150px;
996
+ min-width: 0;
997
+ flex: 0 1 auto;
998
+ overflow: hidden;
999
+ border: 1px solid #d1d5db;
1000
+ border-radius: 999px;
1001
+ background: #fff;
1002
+ color: #374151;
1003
+ padding: 2px 8px;
1004
+ font-size: 11px;
1005
+ font-weight: 600;
1006
+ line-height: 16px;
1007
+ text-overflow: ellipsis;
1008
+ white-space: nowrap;
1009
+ }
994
1010
  .workspace-widget-preview-title button {
995
1011
  width: 22px;
996
1012
  height: 22px;
@@ -1057,11 +1073,14 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
1057
1073
  .workspace-chart-preview span {
1058
1074
  flex: 1;
1059
1075
  border-radius: 5px 5px 0 0;
1060
- background: #d9e4ff;
1076
+ background: var(--chart-accent, #d9e4ff);
1061
1077
  }
1062
1078
  .workspace-widget-panel {
1063
1079
  border-left: 1px solid #e8e8e8;
1064
1080
  padding: 0 12px 16px;
1081
+ max-height: 100vh;
1082
+ overflow-y: auto;
1083
+ overscroll-behavior: contain;
1065
1084
  }
1066
1085
  .workspace-panel-title {
1067
1086
  height: 48px;
@@ -1726,3 +1745,963 @@ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0
1726
1745
  grid-template-columns: 1fr;
1727
1746
  }
1728
1747
  }
1748
+
1749
+ /* === V1.1 builder extensions: sub-panel navigation, source/fields/sort/filter, chart, command palette === */
1750
+
1751
+ .workspace-widget-subpanel {
1752
+ display: grid;
1753
+ gap: 12px;
1754
+ padding-top: 8px;
1755
+ }
1756
+ .workspace-widget-subpanel-header {
1757
+ display: flex;
1758
+ align-items: center;
1759
+ gap: 10px;
1760
+ padding: 6px 0 8px;
1761
+ border-bottom: 1px solid #ececec;
1762
+ }
1763
+ .workspace-widget-subpanel-header div {
1764
+ display: flex;
1765
+ flex-direction: column;
1766
+ min-width: 0;
1767
+ }
1768
+ .workspace-widget-subpanel-header p {
1769
+ margin: 0;
1770
+ font-size: 11px;
1771
+ color: #999;
1772
+ text-transform: uppercase;
1773
+ letter-spacing: 0.04em;
1774
+ }
1775
+ .workspace-widget-subpanel-header strong {
1776
+ font-size: 14px;
1777
+ color: #444;
1778
+ white-space: nowrap;
1779
+ overflow: hidden;
1780
+ text-overflow: ellipsis;
1781
+ }
1782
+ .workspace-widget-subpanel-back {
1783
+ width: 26px;
1784
+ height: 26px;
1785
+ display: grid;
1786
+ place-items: center;
1787
+ border: 1px solid #e8e8e8;
1788
+ border-radius: 6px;
1789
+ background: #fff;
1790
+ color: #666;
1791
+ cursor: pointer;
1792
+ font-size: 16px;
1793
+ line-height: 1;
1794
+ }
1795
+ .workspace-widget-subpanel-back:hover {
1796
+ background: #f3f3f3;
1797
+ }
1798
+
1799
+ .workspace-panel-hint {
1800
+ margin: 2px 0 0;
1801
+ color: #999;
1802
+ font-size: 11px;
1803
+ line-height: 1.5;
1804
+ }
1805
+
1806
+ /* Settings row buttons (replace bare div on the root inspector list) */
1807
+ .workspace-settings-row,
1808
+ .workspace-settings-list .workspace-settings-row {
1809
+ width: 100%;
1810
+ display: flex;
1811
+ align-items: center;
1812
+ justify-content: space-between;
1813
+ gap: 10px;
1814
+ min-height: 38px;
1815
+ border: 1px solid #e8eef8;
1816
+ border-radius: 7px;
1817
+ background: #fff;
1818
+ color: #666;
1819
+ font: inherit;
1820
+ font-size: 13px;
1821
+ padding: 8px 10px;
1822
+ text-align: left;
1823
+ cursor: pointer;
1824
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
1825
+ }
1826
+ .workspace-settings-row:hover:not([disabled]),
1827
+ .workspace-settings-list .workspace-settings-row:hover:not([disabled]) {
1828
+ border-color: #d6e4ff;
1829
+ background: #fff;
1830
+ }
1831
+ .workspace-settings-row[disabled],
1832
+ .workspace-settings-list .workspace-settings-row[disabled] {
1833
+ cursor: default;
1834
+ color: #888;
1835
+ }
1836
+ .workspace-settings-row code,
1837
+ .workspace-settings-list .workspace-settings-row code {
1838
+ color: #888;
1839
+ background: transparent;
1840
+ text-align: right;
1841
+ white-space: normal;
1842
+ }
1843
+
1844
+ /* Source picker */
1845
+ .workspace-source-list {
1846
+ display: grid;
1847
+ gap: 4px;
1848
+ }
1849
+ .workspace-source-object-list {
1850
+ display: grid;
1851
+ gap: 8px;
1852
+ }
1853
+ .workspace-source-object-row {
1854
+ width: 100%;
1855
+ display: grid;
1856
+ grid-template-columns: 30px minmax(0, 1fr) auto;
1857
+ align-items: center;
1858
+ gap: 10px;
1859
+ border: 1px solid #e8e8e8;
1860
+ border-radius: 7px;
1861
+ background: #fff;
1862
+ color: #444;
1863
+ padding: 9px 10px;
1864
+ text-align: left;
1865
+ cursor: pointer;
1866
+ font: inherit;
1867
+ box-shadow: 0 3px 10px rgba(15, 23, 42, 0.06);
1868
+ }
1869
+ .workspace-source-object-row[disabled] {
1870
+ cursor: default;
1871
+ }
1872
+ .workspace-source-object-row.active {
1873
+ border-color: #111827;
1874
+ box-shadow: 0 0 0 1px #111827, 0 3px 10px rgba(15, 23, 42, 0.06);
1875
+ }
1876
+ .workspace-source-object-icon {
1877
+ width: 28px;
1878
+ height: 28px;
1879
+ display: grid;
1880
+ place-items: center;
1881
+ border: 1px solid #e5e7eb;
1882
+ border-radius: 6px;
1883
+ background: #f9fafb;
1884
+ color: #374151;
1885
+ }
1886
+ .workspace-source-controls {
1887
+ display: grid;
1888
+ gap: 8px;
1889
+ margin-top: 8px;
1890
+ }
1891
+ .workspace-source-controls label {
1892
+ min-width: 0;
1893
+ min-height: 34px;
1894
+ display: grid;
1895
+ grid-template-columns: 18px minmax(0, 1fr) auto;
1896
+ align-items: center;
1897
+ gap: 8px;
1898
+ border: 1px solid #e5e5e5;
1899
+ border-radius: 7px;
1900
+ background: #ffffff;
1901
+ color: #777;
1902
+ padding: 0 9px;
1903
+ box-shadow: 0 1px 2px rgba(15, 15, 15, 0.04);
1904
+ }
1905
+ .workspace-source-controls input,
1906
+ .workspace-source-controls select {
1907
+ width: 100%;
1908
+ min-width: 0;
1909
+ height: 32px;
1910
+ border: 0;
1911
+ outline: 0;
1912
+ background: transparent;
1913
+ color: #333;
1914
+ font: inherit;
1915
+ font-size: 13px;
1916
+ padding: 0;
1917
+ }
1918
+ .workspace-source-controls select {
1919
+ appearance: none;
1920
+ cursor: pointer;
1921
+ }
1922
+ .workspace-source-controls label:focus-within {
1923
+ border-color: #8fb4ff;
1924
+ box-shadow: 0 0 0 2px rgba(63, 104, 255, 0.12);
1925
+ }
1926
+ .workspace-source-row {
1927
+ width: 100%;
1928
+ display: grid;
1929
+ grid-template-columns: 28px 1fr auto;
1930
+ align-items: center;
1931
+ gap: 10px;
1932
+ padding: 8px 10px;
1933
+ border: 1px solid #ececec;
1934
+ border-radius: 6px;
1935
+ background: #fff;
1936
+ color: #555;
1937
+ text-align: left;
1938
+ cursor: pointer;
1939
+ font: inherit;
1940
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
1941
+ }
1942
+ .workspace-source-row:hover {
1943
+ border-color: #d0d0d0;
1944
+ background: #fafafa;
1945
+ }
1946
+ .workspace-source-row.active {
1947
+ border-color: #111827;
1948
+ background: #f9fafb;
1949
+ box-shadow: 0 0 0 1px #111827, 0 2px 8px rgba(15, 23, 42, 0.05);
1950
+ }
1951
+ .workspace-source-info-card {
1952
+ margin: 0 0 14px;
1953
+ padding: 10px 12px;
1954
+ border: 1px solid #e5e7eb;
1955
+ border-radius: 8px;
1956
+ background: #fff;
1957
+ color: #6b7280;
1958
+ font-size: 12px;
1959
+ line-height: 1.4;
1960
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
1961
+ }
1962
+ .workspace-custom-source-config,
1963
+ .workspace-active-source-state,
1964
+ .workspace-filter-source-state {
1965
+ display: grid;
1966
+ gap: 7px;
1967
+ border: 1px solid #e8eef8;
1968
+ border-radius: 8px;
1969
+ background: #fff;
1970
+ box-shadow: 0 2px 8px rgba(15, 23, 42, 0.05);
1971
+ padding: 10px;
1972
+ }
1973
+ .workspace-active-source-state,
1974
+ .workspace-filter-source-state {
1975
+ margin-top: 10px;
1976
+ }
1977
+ .workspace-active-source-state span,
1978
+ .workspace-filter-source-state span {
1979
+ color: #8a97a8;
1980
+ font-size: 10px;
1981
+ font-weight: 700;
1982
+ text-transform: uppercase;
1983
+ }
1984
+ .workspace-active-source-state strong,
1985
+ .workspace-filter-source-state strong {
1986
+ color: #1f2937;
1987
+ font-size: 13px;
1988
+ }
1989
+ .workspace-active-source-state code,
1990
+ .workspace-filter-source-state code {
1991
+ color: #64748b;
1992
+ background: transparent;
1993
+ font-size: 11px;
1994
+ overflow-wrap: anywhere;
1995
+ }
1996
+ .workspace-custom-source-config label {
1997
+ display: grid;
1998
+ gap: 5px;
1999
+ }
2000
+ .workspace-custom-source-config span {
2001
+ color: #8a97a8;
2002
+ font-size: 10px;
2003
+ font-weight: 700;
2004
+ text-transform: uppercase;
2005
+ }
2006
+ .workspace-custom-source-config input {
2007
+ border: 1px solid #e5e7eb;
2008
+ border-radius: 6px;
2009
+ background: #fff;
2010
+ color: #333;
2011
+ font: inherit;
2012
+ font-size: 12px;
2013
+ padding: 7px 8px;
2014
+ }
2015
+ .workspace-source-icon {
2016
+ width: 26px;
2017
+ height: 26px;
2018
+ display: grid;
2019
+ place-items: center;
2020
+ border: 1px solid #e0e0e0;
2021
+ border-radius: 5px;
2022
+ background: #fafafa;
2023
+ color: #666;
2024
+ font-size: 13px;
2025
+ font-weight: 600;
2026
+ }
2027
+ .workspace-source-meta {
2028
+ display: flex;
2029
+ flex-direction: column;
2030
+ min-width: 0;
2031
+ }
2032
+ .workspace-source-meta strong {
2033
+ color: #333;
2034
+ font-size: 13px;
2035
+ font-weight: 600;
2036
+ white-space: nowrap;
2037
+ overflow: hidden;
2038
+ text-overflow: ellipsis;
2039
+ }
2040
+ .workspace-source-meta em {
2041
+ color: #999;
2042
+ font-size: 11px;
2043
+ font-style: normal;
2044
+ }
2045
+ .workspace-source-tick {
2046
+ color: #111827;
2047
+ font-weight: 700;
2048
+ display: inline-grid;
2049
+ place-items: center;
2050
+ }
2051
+
2052
+ /* Governed integration reference binding — entity selector + badge */
2053
+ .workspace-entity-selector {
2054
+ display: grid;
2055
+ gap: 6px;
2056
+ margin-top: 4px;
2057
+ padding-top: 10px;
2058
+ border-top: 1px solid #ececec;
2059
+ }
2060
+ .workspace-entity-dropdown {
2061
+ display: grid;
2062
+ gap: 5px;
2063
+ min-width: 0;
2064
+ }
2065
+ .workspace-entity-dropdown span {
2066
+ color: #8a8a8a;
2067
+ font-size: 11px;
2068
+ font-weight: 700;
2069
+ }
2070
+ .workspace-entity-dropdown select {
2071
+ width: 100%;
2072
+ min-width: 0;
2073
+ min-height: 38px;
2074
+ border: 1px solid #d1d5db;
2075
+ border-radius: 7px;
2076
+ background: #fff;
2077
+ color: #111827;
2078
+ font: inherit;
2079
+ font-size: 13px;
2080
+ padding: 0 10px;
2081
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
2082
+ }
2083
+ .workspace-entity-dropdown select:focus {
2084
+ border-color: #111827;
2085
+ outline: 0;
2086
+ box-shadow: 0 0 0 1px #111827;
2087
+ }
2088
+ .workspace-entity-badge {
2089
+ display: grid;
2090
+ grid-template-columns: 26px 1fr auto;
2091
+ align-items: center;
2092
+ gap: 8px;
2093
+ padding: 7px 10px;
2094
+ border: 1px solid #d1d5db;
2095
+ border-radius: 7px;
2096
+ background: #fff;
2097
+ min-width: 0;
2098
+ }
2099
+ .workspace-entity-badge-icon {
2100
+ width: 24px;
2101
+ height: 24px;
2102
+ display: grid;
2103
+ place-items: center;
2104
+ border: 1px solid #e5e7eb;
2105
+ border-radius: 5px;
2106
+ background: #f9fafb;
2107
+ color: #374151;
2108
+ font-size: 11px;
2109
+ font-weight: 700;
2110
+ flex-shrink: 0;
2111
+ }
2112
+ .workspace-entity-badge-meta {
2113
+ display: flex;
2114
+ flex-direction: column;
2115
+ min-width: 0;
2116
+ }
2117
+ .workspace-entity-badge-meta strong {
2118
+ color: #111827;
2119
+ font-size: 12px;
2120
+ font-weight: 600;
2121
+ white-space: nowrap;
2122
+ overflow: hidden;
2123
+ text-overflow: ellipsis;
2124
+ }
2125
+ .workspace-entity-badge-meta em {
2126
+ color: #6b7280;
2127
+ font-size: 10px;
2128
+ font-style: normal;
2129
+ white-space: nowrap;
2130
+ overflow: hidden;
2131
+ text-overflow: ellipsis;
2132
+ }
2133
+ .workspace-entity-badge-clear {
2134
+ width: 20px;
2135
+ height: 20px;
2136
+ display: grid;
2137
+ place-items: center;
2138
+ border: 0;
2139
+ border-radius: 4px;
2140
+ background: transparent;
2141
+ color: #6b7280;
2142
+ cursor: pointer;
2143
+ flex-shrink: 0;
2144
+ }
2145
+ .workspace-entity-badge-clear:hover {
2146
+ background: #f3f4f6;
2147
+ color: #111827;
2148
+ }
2149
+ .workspace-entity-empty {
2150
+ color: #bbb;
2151
+ font-size: 12px;
2152
+ padding: 6px 2px;
2153
+ margin: 0;
2154
+ }
2155
+ .workspace-entity-sample-hint {
2156
+ color: #f59e0b;
2157
+ font-size: 11px;
2158
+ }
2159
+
2160
+ /* Fields manager */
2161
+ .workspace-field-rows {
2162
+ display: grid;
2163
+ gap: 3px;
2164
+ }
2165
+ .workspace-field-row {
2166
+ display: grid;
2167
+ grid-template-columns: 18px 22px 1fr auto;
2168
+ align-items: center;
2169
+ gap: 8px;
2170
+ padding: 4px 6px;
2171
+ border-radius: 5px;
2172
+ font-size: 13px;
2173
+ color: #444;
2174
+ }
2175
+ .workspace-field-row:hover {
2176
+ background: #f6f6f6;
2177
+ }
2178
+ .workspace-field-row-hidden {
2179
+ grid-template-columns: 22px 1fr auto;
2180
+ color: #999;
2181
+ }
2182
+ .workspace-field-row-handle {
2183
+ cursor: grab;
2184
+ color: #bbb;
2185
+ font-weight: 700;
2186
+ user-select: none;
2187
+ }
2188
+ .workspace-field-row-icon {
2189
+ display: grid;
2190
+ place-items: center;
2191
+ font-size: 12px;
2192
+ color: #777;
2193
+ }
2194
+ .workspace-field-row-name {
2195
+ white-space: nowrap;
2196
+ overflow: hidden;
2197
+ text-overflow: ellipsis;
2198
+ }
2199
+ .workspace-field-row-actions {
2200
+ display: inline-flex;
2201
+ gap: 2px;
2202
+ }
2203
+ .workspace-field-row-actions button {
2204
+ width: 24px;
2205
+ height: 24px;
2206
+ display: grid;
2207
+ place-items: center;
2208
+ border: 0;
2209
+ border-radius: 5px;
2210
+ background: transparent;
2211
+ color: #999;
2212
+ cursor: pointer;
2213
+ font-size: 12px;
2214
+ }
2215
+ .workspace-field-row-actions button:hover:not([disabled]) {
2216
+ background: #ececec;
2217
+ color: #444;
2218
+ }
2219
+ .workspace-field-row-actions button[disabled] {
2220
+ opacity: 0.4;
2221
+ cursor: not-allowed;
2222
+ }
2223
+ .workspace-hidden-fields-toggle {
2224
+ display: flex;
2225
+ align-items: center;
2226
+ justify-content: space-between;
2227
+ width: 100%;
2228
+ padding: 8px 6px;
2229
+ border: 0;
2230
+ border-top: 1px solid #ececec;
2231
+ background: transparent;
2232
+ color: #666;
2233
+ font: inherit;
2234
+ font-size: 12px;
2235
+ cursor: pointer;
2236
+ margin-top: 4px;
2237
+ }
2238
+ .workspace-hidden-fields-toggle:hover {
2239
+ background: #f6f6f6;
2240
+ }
2241
+ .workspace-hidden-fields {
2242
+ border-top: 0;
2243
+ }
2244
+ .workspace-field-add {
2245
+ display: grid;
2246
+ grid-template-columns: 1fr auto;
2247
+ gap: 6px;
2248
+ padding-top: 6px;
2249
+ border-top: 1px solid #ececec;
2250
+ }
2251
+ .workspace-field-add input {
2252
+ border: 1px solid #e5e5e5;
2253
+ border-radius: 6px;
2254
+ background: #fafafa;
2255
+ font: inherit;
2256
+ padding: 7px 9px;
2257
+ }
2258
+ .workspace-field-add button {
2259
+ border: 1px solid #d8d8d8;
2260
+ background: #fff;
2261
+ border-radius: 6px;
2262
+ padding: 0 12px;
2263
+ cursor: pointer;
2264
+ color: #444;
2265
+ font-size: 13px;
2266
+ }
2267
+ .workspace-field-add button:disabled {
2268
+ opacity: 0.5;
2269
+ cursor: not-allowed;
2270
+ }
2271
+
2272
+ /* Sort + Filter */
2273
+ .workspace-sort-list,
2274
+ .workspace-filter-list {
2275
+ display: grid;
2276
+ gap: 6px;
2277
+ }
2278
+ .workspace-sort-row {
2279
+ display: grid;
2280
+ grid-template-columns: 1fr 1fr auto;
2281
+ gap: 6px;
2282
+ align-items: center;
2283
+ }
2284
+ .workspace-filter-clause {
2285
+ display: grid;
2286
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) auto;
2287
+ gap: 6px;
2288
+ align-items: center;
2289
+ }
2290
+ .workspace-filter-clause-empty {
2291
+ color: #bbb;
2292
+ text-align: center;
2293
+ }
2294
+ .workspace-sort-row select,
2295
+ .workspace-filter-clause select,
2296
+ .workspace-filter-clause input {
2297
+ border: 1px solid #e5e5e5;
2298
+ border-radius: 6px;
2299
+ background: #fff;
2300
+ color: #444;
2301
+ font: inherit;
2302
+ padding: 6px 8px;
2303
+ box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04);
2304
+ }
2305
+ .workspace-sort-row button,
2306
+ .workspace-filter-clause button {
2307
+ width: 26px;
2308
+ height: 26px;
2309
+ border: 0;
2310
+ border-radius: 5px;
2311
+ background: transparent;
2312
+ color: #999;
2313
+ cursor: pointer;
2314
+ }
2315
+ .workspace-sort-row button:hover,
2316
+ .workspace-filter-clause button:hover {
2317
+ background: #ececec;
2318
+ color: #444;
2319
+ }
2320
+ .workspace-add-clause {
2321
+ display: inline-flex;
2322
+ align-items: center;
2323
+ gap: 4px;
2324
+ border: 1px dashed #d8d8d8;
2325
+ background: #fff;
2326
+ color: #555;
2327
+ border-radius: 6px;
2328
+ padding: 6px 10px;
2329
+ cursor: pointer;
2330
+ font: inherit;
2331
+ font-size: 12px;
2332
+ box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04);
2333
+ }
2334
+ .workspace-add-clause:hover:not(:disabled) {
2335
+ border-color: #38bdf8;
2336
+ color: #075985;
2337
+ background: rgba(56, 189, 248, 0.06);
2338
+ }
2339
+ .workspace-add-clause:disabled {
2340
+ opacity: 0.5;
2341
+ cursor: not-allowed;
2342
+ }
2343
+ .workspace-filter-op-toggle {
2344
+ display: inline-flex;
2345
+ border: 1px solid #e5e5e5;
2346
+ border-radius: 6px;
2347
+ overflow: hidden;
2348
+ width: fit-content;
2349
+ background: #fafafa;
2350
+ }
2351
+ .workspace-color-preview-row {
2352
+ display: grid;
2353
+ grid-template-columns: auto 22px minmax(0, 1fr);
2354
+ align-items: center;
2355
+ gap: 8px;
2356
+ border: 1px solid #e8eef8;
2357
+ border-radius: 7px;
2358
+ background: #fff;
2359
+ padding: 8px 10px;
2360
+ box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04);
2361
+ }
2362
+ .workspace-color-preview-row span {
2363
+ color: #777;
2364
+ font-size: 12px;
2365
+ }
2366
+ .workspace-color-preview-row em {
2367
+ width: 22px;
2368
+ height: 22px;
2369
+ border-radius: 5px;
2370
+ border: 1px solid rgba(15, 23, 42, 0.12);
2371
+ }
2372
+ .workspace-color-preview-row code {
2373
+ color: #64748b;
2374
+ background: transparent;
2375
+ font-size: 11px;
2376
+ }
2377
+ .workspace-filter-op-toggle button {
2378
+ border: 0;
2379
+ background: transparent;
2380
+ color: #666;
2381
+ padding: 5px 12px;
2382
+ cursor: pointer;
2383
+ font: inherit;
2384
+ font-size: 12px;
2385
+ font-weight: 600;
2386
+ letter-spacing: 0.04em;
2387
+ }
2388
+ .workspace-filter-op-toggle button.active {
2389
+ background: #fff;
2390
+ color: #075985;
2391
+ box-shadow: inset 0 0 0 1px #38bdf8;
2392
+ }
2393
+
2394
+ /* Chart config */
2395
+ .workspace-chart-config {
2396
+ display: grid;
2397
+ gap: 12px;
2398
+ }
2399
+ .workspace-chart-type-tabs {
2400
+ display: grid;
2401
+ grid-template-columns: repeat(6, 1fr);
2402
+ gap: 2px;
2403
+ border: 1px solid #ececec;
2404
+ border-radius: 8px;
2405
+ padding: 3px;
2406
+ background: #fafafa;
2407
+ }
2408
+ .workspace-chart-type-tabs button {
2409
+ display: grid;
2410
+ place-items: center;
2411
+ gap: 2px;
2412
+ padding: 6px 4px;
2413
+ border: 0;
2414
+ border-radius: 5px;
2415
+ background: transparent;
2416
+ color: #888;
2417
+ font: inherit;
2418
+ cursor: pointer;
2419
+ }
2420
+ .workspace-chart-type-tabs button em {
2421
+ font-style: normal;
2422
+ font-size: 9px;
2423
+ font-weight: 600;
2424
+ text-transform: uppercase;
2425
+ letter-spacing: 0.04em;
2426
+ color: #999;
2427
+ }
2428
+ .workspace-chart-type-tabs button:hover {
2429
+ background: #fff;
2430
+ }
2431
+ .workspace-chart-type-tabs button.active {
2432
+ background: #fff;
2433
+ color: #075985;
2434
+ box-shadow: 0 0 0 1px #38bdf8;
2435
+ }
2436
+ .workspace-chart-type-tabs button.active em {
2437
+ color: #075985;
2438
+ }
2439
+ .workspace-axis-range {
2440
+ display: grid;
2441
+ grid-template-columns: 1fr 1fr;
2442
+ gap: 8px;
2443
+ }
2444
+ .workspace-toggle-row {
2445
+ display: flex !important;
2446
+ align-items: center;
2447
+ justify-content: space-between;
2448
+ flex-direction: row !important;
2449
+ padding: 4px 0;
2450
+ }
2451
+ .workspace-toggle-row span {
2452
+ color: #666 !important;
2453
+ font-size: 13px !important;
2454
+ font-weight: 500 !important;
2455
+ text-transform: none !important;
2456
+ }
2457
+ .workspace-toggle-row input[type="checkbox"] {
2458
+ width: 36px;
2459
+ height: 20px;
2460
+ appearance: none;
2461
+ border-radius: 999px;
2462
+ background: #d8d8d8;
2463
+ position: relative;
2464
+ cursor: pointer;
2465
+ transition: background 0.15s ease;
2466
+ }
2467
+ .workspace-toggle-row input[type="checkbox"]::after {
2468
+ content: "";
2469
+ position: absolute;
2470
+ top: 2px;
2471
+ left: 2px;
2472
+ width: 16px;
2473
+ height: 16px;
2474
+ border-radius: 50%;
2475
+ background: #fff;
2476
+ box-shadow: 0 1px 2px rgba(0,0,0,0.18);
2477
+ transition: left 0.15s ease;
2478
+ }
2479
+ .workspace-toggle-row input[type="checkbox"]:checked {
2480
+ background: #38bdf8;
2481
+ }
2482
+ .workspace-toggle-row input[type="checkbox"]:checked::after {
2483
+ left: 18px;
2484
+ }
2485
+
2486
+ /* Chart preview kind variants */
2487
+ .workspace-chart-preview.kind-bar-horizontal {
2488
+ flex-direction: column;
2489
+ align-items: stretch;
2490
+ justify-content: center;
2491
+ gap: 4px;
2492
+ padding: 8px;
2493
+ }
2494
+ .workspace-chart-preview .workspace-chart-bar-h {
2495
+ height: 12px;
2496
+ background: var(--chart-accent, #38bdf8);
2497
+ border-radius: 3px;
2498
+ position: relative;
2499
+ }
2500
+ .workspace-chart-preview .workspace-chart-bar-h em {
2501
+ position: absolute;
2502
+ right: 4px;
2503
+ top: -2px;
2504
+ font-size: 10px;
2505
+ font-style: normal;
2506
+ color: #075985;
2507
+ }
2508
+ .workspace-chart-preview.kind-pie {
2509
+ display: grid;
2510
+ place-items: center;
2511
+ }
2512
+ .workspace-chart-preview .workspace-chart-pie {
2513
+ width: 60%;
2514
+ aspect-ratio: 1;
2515
+ border-radius: 50%;
2516
+ background: conic-gradient(var(--chart-accent, #38bdf8) 0 60%, #93c5fd 60% 85%, #cffafe 85% 100%);
2517
+ }
2518
+ .workspace-chart-preview.kind-line {
2519
+ display: grid;
2520
+ place-items: center;
2521
+ padding: 8px;
2522
+ }
2523
+ .workspace-chart-preview .workspace-chart-line {
2524
+ width: 90%;
2525
+ height: 60%;
2526
+ background: linear-gradient(180deg, transparent 0, transparent 100%);
2527
+ border-bottom: 2px solid #38bdf8;
2528
+ position: relative;
2529
+ }
2530
+ .workspace-chart-preview .workspace-chart-line::after {
2531
+ content: "";
2532
+ position: absolute;
2533
+ inset: 0;
2534
+ background: linear-gradient(135deg, transparent 30%, rgba(56,189,248,0.18) 60%, transparent 90%);
2535
+ }
2536
+ .workspace-chart-preview.kind-sum {
2537
+ display: grid;
2538
+ place-items: center;
2539
+ }
2540
+ .workspace-chart-preview .workspace-chart-sum {
2541
+ font-size: 28px;
2542
+ font-weight: 700;
2543
+ color: #075985;
2544
+ letter-spacing: -0.02em;
2545
+ }
2546
+ .workspace-chart-preview.kind-gauge {
2547
+ display: grid;
2548
+ place-items: center;
2549
+ }
2550
+ .workspace-chart-preview .workspace-chart-gauge {
2551
+ width: 72%;
2552
+ height: 36%;
2553
+ border-radius: 999px 999px 0 0;
2554
+ background:
2555
+ radial-gradient(circle at 50% 100%, transparent 56%, var(--chart-accent, #38bdf8) 56%, var(--chart-accent, #38bdf8) var(--gauge-fill, 70%), #e5e5e5 var(--gauge-fill, 70%));
2556
+ position: relative;
2557
+ }
2558
+ .workspace-chart-preview span em {
2559
+ display: block;
2560
+ font-style: normal;
2561
+ text-align: center;
2562
+ font-size: 10px;
2563
+ color: #075985;
2564
+ }
2565
+
2566
+ /* Command palette */
2567
+ .workspace-command-palette {
2568
+ position: fixed;
2569
+ inset: 0;
2570
+ z-index: 60;
2571
+ display: grid;
2572
+ place-items: start center;
2573
+ padding-top: 12vh;
2574
+ }
2575
+ .workspace-command-palette .workspace-overlay-backdrop {
2576
+ position: absolute;
2577
+ inset: 0;
2578
+ background: rgba(8, 11, 18, 0.32);
2579
+ backdrop-filter: blur(2px);
2580
+ }
2581
+ .workspace-command-palette-panel {
2582
+ position: relative;
2583
+ width: min(540px, 92vw);
2584
+ background: #fff;
2585
+ border: 1px solid #e8e8e8;
2586
+ border-radius: 12px;
2587
+ box-shadow: 0 24px 48px rgba(8, 11, 18, 0.18);
2588
+ overflow: hidden;
2589
+ display: flex;
2590
+ flex-direction: column;
2591
+ }
2592
+ .workspace-command-palette-input {
2593
+ display: grid;
2594
+ grid-template-columns: 24px 1fr auto;
2595
+ align-items: center;
2596
+ gap: 10px;
2597
+ padding: 10px 14px;
2598
+ border-bottom: 1px solid #ececec;
2599
+ }
2600
+ .workspace-command-palette-input span {
2601
+ color: #888;
2602
+ font-size: 14px;
2603
+ }
2604
+ .workspace-command-palette-input input {
2605
+ border: 0;
2606
+ outline: 0;
2607
+ font: inherit;
2608
+ font-size: 14px;
2609
+ color: #333;
2610
+ background: transparent;
2611
+ width: 100%;
2612
+ }
2613
+ .workspace-command-palette-input kbd {
2614
+ font-size: 10px;
2615
+ font-family: inherit;
2616
+ background: #f3f3f3;
2617
+ border: 1px solid #e5e5e5;
2618
+ color: #888;
2619
+ padding: 1px 6px;
2620
+ border-radius: 4px;
2621
+ }
2622
+ .workspace-command-palette-list {
2623
+ max-height: min(60vh, 480px);
2624
+ overflow-y: auto;
2625
+ padding: 6px;
2626
+ }
2627
+ .workspace-command-palette-group {
2628
+ padding: 4px 0;
2629
+ }
2630
+ .workspace-command-palette-group .workspace-panel-label {
2631
+ margin: 6px 8px;
2632
+ color: #aaa;
2633
+ font-size: 10px;
2634
+ }
2635
+ .workspace-command-palette-item {
2636
+ display: grid;
2637
+ grid-template-columns: 22px 1fr auto;
2638
+ align-items: center;
2639
+ gap: 10px;
2640
+ width: 100%;
2641
+ border: 0;
2642
+ background: transparent;
2643
+ color: #444;
2644
+ font: inherit;
2645
+ font-size: 13px;
2646
+ padding: 7px 8px;
2647
+ border-radius: 6px;
2648
+ cursor: pointer;
2649
+ text-align: left;
2650
+ }
2651
+ .workspace-command-palette-item span:first-child {
2652
+ font-size: 14px;
2653
+ color: #888;
2654
+ }
2655
+ .workspace-command-palette-item.active {
2656
+ background: rgba(56, 189, 248, 0.1);
2657
+ color: #075985;
2658
+ }
2659
+ .workspace-command-palette-item.disabled {
2660
+ opacity: 0.45;
2661
+ cursor: not-allowed;
2662
+ }
2663
+ .workspace-command-palette-item kbd {
2664
+ font-size: 10px;
2665
+ font-family: inherit;
2666
+ background: #f3f3f3;
2667
+ border: 1px solid #e5e5e5;
2668
+ color: #888;
2669
+ padding: 1px 6px;
2670
+ border-radius: 4px;
2671
+ }
2672
+ .workspace-command-palette-footer {
2673
+ display: flex;
2674
+ gap: 12px;
2675
+ padding: 6px 12px;
2676
+ border-top: 1px solid #ececec;
2677
+ color: #aaa;
2678
+ font-size: 11px;
2679
+ }
2680
+
2681
+ /* Template gallery filters */
2682
+ .template-gallery-filters {
2683
+ display: grid;
2684
+ grid-template-columns: 1fr auto auto;
2685
+ gap: 8px;
2686
+ padding: 0 16px 12px;
2687
+ border-bottom: 1px solid #ececec;
2688
+ }
2689
+ .template-gallery-filters input,
2690
+ .template-gallery-filters select {
2691
+ border: 1px solid #e5e5e5;
2692
+ border-radius: 6px;
2693
+ background: #fafafa;
2694
+ font: inherit;
2695
+ font-size: 13px;
2696
+ padding: 7px 9px;
2697
+ color: #444;
2698
+ }
2699
+
2700
+ @media (max-width: 720px) {
2701
+ .workspace-chart-type-tabs {
2702
+ grid-template-columns: repeat(3, 1fr);
2703
+ }
2704
+ .template-gallery-filters {
2705
+ grid-template-columns: 1fr;
2706
+ }
2707
+ }