@tecof/theme-editor 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.
package/dist/styles.css CHANGED
@@ -1801,4 +1801,613 @@
1801
1801
  .tecof-field-error-retry:hover {
1802
1802
  background: #fef2f2;
1803
1803
  border-color: #f87171;
1804
+ }
1805
+
1806
+ /* ─── RepeaterField ─── */
1807
+
1808
+ .tecof-repeater-container {
1809
+ width: 100%;
1810
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
1811
+ }
1812
+
1813
+ .tecof-repeater-header {
1814
+ display: flex;
1815
+ align-items: center;
1816
+ justify-content: space-between;
1817
+ margin-bottom: 8px;
1818
+ }
1819
+
1820
+ .tecof-repeater-count {
1821
+ font-size: 11px;
1822
+ font-weight: 500;
1823
+ color: #a1a1aa;
1824
+ letter-spacing: 0.02em;
1825
+ }
1826
+
1827
+ /* ── Empty State ── */
1828
+
1829
+ .tecof-repeater-empty {
1830
+ display: flex;
1831
+ flex-direction: column;
1832
+ align-items: center;
1833
+ gap: 10px;
1834
+ padding: 24px 16px;
1835
+ background: #fafafa;
1836
+ border: 1px dashed #e4e4e7;
1837
+ border-radius: 10px;
1838
+ text-align: center;
1839
+ }
1840
+
1841
+ .tecof-repeater-empty-text {
1842
+ font-size: 12px;
1843
+ color: #a1a1aa;
1844
+ margin: 0;
1845
+ }
1846
+
1847
+ /* ── Rows ── */
1848
+
1849
+ .tecof-repeater-rows {
1850
+ display: flex;
1851
+ flex-direction: column;
1852
+ gap: 4px;
1853
+ }
1854
+
1855
+ .tecof-repeater-row {
1856
+ border: 1px solid #e4e4e7;
1857
+ border-radius: 10px;
1858
+ background: #ffffff;
1859
+ overflow: hidden;
1860
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1861
+ }
1862
+
1863
+ .tecof-repeater-row:hover {
1864
+ border-color: #d4d4d8;
1865
+ }
1866
+
1867
+ .tecof-repeater-row.expanded {
1868
+ border-color: var(--tecof-primary-500, #3b82f6);
1869
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.08);
1870
+ }
1871
+
1872
+ /* ── Row Header ── */
1873
+
1874
+ .tecof-repeater-row-header {
1875
+ display: flex;
1876
+ align-items: center;
1877
+ justify-content: space-between;
1878
+ padding: 8px 12px;
1879
+ cursor: pointer;
1880
+ user-select: none;
1881
+ transition: background-color 0.15s ease;
1882
+ min-height: 40px;
1883
+ }
1884
+
1885
+ .tecof-repeater-row-header:hover {
1886
+ background-color: #fafafa;
1887
+ }
1888
+
1889
+ .tecof-repeater-row-left {
1890
+ display: flex;
1891
+ align-items: center;
1892
+ gap: 8px;
1893
+ min-width: 0;
1894
+ flex: 1;
1895
+ }
1896
+
1897
+ .tecof-repeater-grip {
1898
+ color: #d4d4d8;
1899
+ flex-shrink: 0;
1900
+ cursor: grab;
1901
+ }
1902
+
1903
+ .tecof-repeater-row-index {
1904
+ display: inline-flex;
1905
+ align-items: center;
1906
+ justify-content: center;
1907
+ width: 20px;
1908
+ height: 20px;
1909
+ font-size: 10px;
1910
+ font-weight: 700;
1911
+ color: var(--tecof-primary-600, #2563eb);
1912
+ background: var(--tecof-primary-50, #eff6ff);
1913
+ border-radius: 6px;
1914
+ flex-shrink: 0;
1915
+ }
1916
+
1917
+ .tecof-repeater-row-preview {
1918
+ font-size: 13px;
1919
+ font-weight: 500;
1920
+ color: #3f3f46;
1921
+ white-space: nowrap;
1922
+ overflow: hidden;
1923
+ text-overflow: ellipsis;
1924
+ min-width: 0;
1925
+ }
1926
+
1927
+ /* ── Row Actions ── */
1928
+
1929
+ .tecof-repeater-row-actions {
1930
+ display: flex;
1931
+ align-items: center;
1932
+ gap: 2px;
1933
+ flex-shrink: 0;
1934
+ margin-left: 8px;
1935
+ }
1936
+
1937
+ .tecof-repeater-action-btn {
1938
+ display: inline-flex;
1939
+ align-items: center;
1940
+ justify-content: center;
1941
+ width: 26px;
1942
+ height: 26px;
1943
+ background: none;
1944
+ border: none;
1945
+ border-radius: 6px;
1946
+ cursor: pointer;
1947
+ color: #a1a1aa;
1948
+ font-size: 10px;
1949
+ transition: all 0.15s ease;
1950
+ padding: 0;
1951
+ }
1952
+
1953
+ .tecof-repeater-action-btn:hover {
1954
+ background-color: #f4f4f5;
1955
+ color: #52525b;
1956
+ }
1957
+
1958
+ .tecof-repeater-action-btn-danger:hover {
1959
+ background-color: #fef2f2;
1960
+ color: #ef4444;
1961
+ }
1962
+
1963
+ /* ── Chevron ── */
1964
+
1965
+ .tecof-repeater-chevron {
1966
+ color: #a1a1aa;
1967
+ transition: transform 0.2s ease;
1968
+ flex-shrink: 0;
1969
+ }
1970
+
1971
+ .tecof-repeater-chevron.rotated {
1972
+ transform: rotate(180deg);
1973
+ }
1974
+
1975
+ /* ── Row Content (expanded sub-fields) ── */
1976
+
1977
+ .tecof-repeater-row-content {
1978
+ padding: 12px 14px 16px;
1979
+ border-top: 1px solid #f4f4f5;
1980
+ display: flex;
1981
+ flex-direction: column;
1982
+ gap: 12px;
1983
+ background: #fafbfc;
1984
+ }
1985
+
1986
+ .tecof-repeater-subfield {
1987
+ width: 100%;
1988
+ }
1989
+
1990
+ /* ── Add Buttons ── */
1991
+
1992
+ .tecof-repeater-add-btn {
1993
+ display: inline-flex;
1994
+ align-items: center;
1995
+ gap: 6px;
1996
+ padding: 8px 16px;
1997
+ font-size: 12px;
1998
+ font-weight: 600;
1999
+ color: var(--tecof-primary-600, #2563eb);
2000
+ background: var(--tecof-primary-50, #eff6ff);
2001
+ border: 1px solid var(--tecof-primary-200, #bfdbfe);
2002
+ border-radius: 8px;
2003
+ cursor: pointer;
2004
+ transition: all 0.15s ease;
2005
+ }
2006
+
2007
+ .tecof-repeater-add-btn:hover {
2008
+ background: var(--tecof-primary-100, #dbeafe);
2009
+ border-color: var(--tecof-primary-300, #93c5fd);
2010
+ }
2011
+
2012
+ .tecof-repeater-add-btn-bottom {
2013
+ display: flex;
2014
+ align-items: center;
2015
+ justify-content: center;
2016
+ gap: 6px;
2017
+ width: 100%;
2018
+ padding: 8px;
2019
+ margin-top: 6px;
2020
+ font-size: 12px;
2021
+ font-weight: 500;
2022
+ color: #a1a1aa;
2023
+ background: none;
2024
+ border: 1px dashed #e4e4e7;
2025
+ border-radius: 8px;
2026
+ cursor: pointer;
2027
+ transition: all 0.15s ease;
2028
+ }
2029
+
2030
+ .tecof-repeater-add-btn-bottom:hover {
2031
+ color: var(--tecof-primary-600, #2563eb);
2032
+ border-color: var(--tecof-primary-400, #60a5fa);
2033
+ background: var(--tecof-primary-50, #eff6ff);
2034
+ }
2035
+
2036
+ /* ─── CmsCollectionField ─── */
2037
+
2038
+ .tecof-cms-col-container {
2039
+ width: 100%;
2040
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
2041
+ display: flex;
2042
+ flex-direction: column;
2043
+ gap: 8px;
2044
+ }
2045
+
2046
+ .tecof-cms-col-loading {
2047
+ display: flex;
2048
+ align-items: center;
2049
+ gap: 8px;
2050
+ padding: 10px;
2051
+ font-size: 12px;
2052
+ color: #a1a1aa;
2053
+ }
2054
+
2055
+ .tecof-cms-col-error {
2056
+ display: flex;
2057
+ align-items: center;
2058
+ gap: 8px;
2059
+ padding: 10px;
2060
+ font-size: 12px;
2061
+ color: #ef4444;
2062
+ background: #fef2f2;
2063
+ border-radius: 8px;
2064
+ }
2065
+
2066
+ .tecof-cms-col-retry {
2067
+ display: inline-flex;
2068
+ align-items: center;
2069
+ gap: 4px;
2070
+ padding: 4px 8px;
2071
+ font-size: 11px;
2072
+ background: #fff;
2073
+ border: 1px solid #fca5a5;
2074
+ border-radius: 4px;
2075
+ cursor: pointer;
2076
+ color: #ef4444;
2077
+ margin-left: auto;
2078
+ }
2079
+
2080
+ /* ── Selector Trigger ── */
2081
+
2082
+ .tecof-cms-col-selector {
2083
+ position: relative;
2084
+ }
2085
+
2086
+ .tecof-cms-col-trigger {
2087
+ display: flex;
2088
+ align-items: center;
2089
+ justify-content: space-between;
2090
+ width: 100%;
2091
+ padding: 8px 12px;
2092
+ background: #fff;
2093
+ border: 1px solid #e4e4e7;
2094
+ border-radius: 8px;
2095
+ cursor: pointer;
2096
+ transition: all 0.15s ease;
2097
+ font-size: 13px;
2098
+ color: #3f3f46;
2099
+ }
2100
+
2101
+ .tecof-cms-col-trigger:hover {
2102
+ border-color: #d4d4d8;
2103
+ }
2104
+
2105
+ .tecof-cms-col-trigger.open {
2106
+ border-color: var(--tecof-primary-500, #3b82f6);
2107
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.08);
2108
+ }
2109
+
2110
+ .tecof-cms-col-trigger-left {
2111
+ display: flex;
2112
+ align-items: center;
2113
+ gap: 8px;
2114
+ min-width: 0;
2115
+ flex: 1;
2116
+ color: #71717a;
2117
+ }
2118
+
2119
+ .tecof-cms-col-trigger-left span {
2120
+ white-space: nowrap;
2121
+ overflow: hidden;
2122
+ text-overflow: ellipsis;
2123
+ }
2124
+
2125
+ .tecof-cms-col-trigger-right {
2126
+ display: flex;
2127
+ align-items: center;
2128
+ gap: 4px;
2129
+ flex-shrink: 0;
2130
+ }
2131
+
2132
+ .tecof-cms-col-clear {
2133
+ display: inline-flex;
2134
+ align-items: center;
2135
+ justify-content: center;
2136
+ width: 20px;
2137
+ height: 20px;
2138
+ background: none;
2139
+ border: none;
2140
+ border-radius: 4px;
2141
+ cursor: pointer;
2142
+ color: #a1a1aa;
2143
+ padding: 0;
2144
+ }
2145
+
2146
+ .tecof-cms-col-clear:hover {
2147
+ background: #f4f4f5;
2148
+ color: #ef4444;
2149
+ }
2150
+
2151
+ .tecof-cms-col-chevron {
2152
+ color: #a1a1aa;
2153
+ transition: transform 0.2s ease;
2154
+ }
2155
+
2156
+ .tecof-cms-col-chevron.rotated {
2157
+ transform: rotate(180deg);
2158
+ }
2159
+
2160
+ /* ── Dropdown ── */
2161
+
2162
+ .tecof-cms-col-dropdown {
2163
+ position: absolute;
2164
+ top: calc(100% + 4px);
2165
+ left: 0;
2166
+ right: 0;
2167
+ background: #fff;
2168
+ border: 1px solid #e4e4e7;
2169
+ border-radius: 10px;
2170
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
2171
+ z-index: 100;
2172
+ overflow: hidden;
2173
+ }
2174
+
2175
+ .tecof-cms-col-search {
2176
+ display: flex;
2177
+ align-items: center;
2178
+ gap: 6px;
2179
+ padding: 8px 10px;
2180
+ border-bottom: 1px solid #f4f4f5;
2181
+ color: #a1a1aa;
2182
+ }
2183
+
2184
+ .tecof-cms-col-search-input {
2185
+ flex: 1;
2186
+ border: none;
2187
+ outline: none;
2188
+ font-size: 12px;
2189
+ background: transparent;
2190
+ color: #3f3f46;
2191
+ }
2192
+
2193
+ .tecof-cms-col-options {
2194
+ max-height: 200px;
2195
+ overflow-y: auto;
2196
+ padding: 4px;
2197
+ }
2198
+
2199
+ .tecof-cms-col-empty {
2200
+ padding: 16px;
2201
+ text-align: center;
2202
+ font-size: 12px;
2203
+ color: #a1a1aa;
2204
+ }
2205
+
2206
+ .tecof-cms-col-option {
2207
+ display: flex;
2208
+ align-items: center;
2209
+ gap: 8px;
2210
+ width: 100%;
2211
+ padding: 8px 10px;
2212
+ background: none;
2213
+ border: none;
2214
+ border-radius: 6px;
2215
+ cursor: pointer;
2216
+ transition: background-color 0.12s ease;
2217
+ text-align: left;
2218
+ color: #71717a;
2219
+ }
2220
+
2221
+ .tecof-cms-col-option:hover {
2222
+ background: #f4f4f5;
2223
+ }
2224
+
2225
+ .tecof-cms-col-option.selected {
2226
+ background: var(--tecof-primary-50, #eff6ff);
2227
+ color: var(--tecof-primary-600, #2563eb);
2228
+ }
2229
+
2230
+ .tecof-cms-col-option-info {
2231
+ display: flex;
2232
+ flex-direction: column;
2233
+ gap: 1px;
2234
+ min-width: 0;
2235
+ }
2236
+
2237
+ .tecof-cms-col-option-name {
2238
+ font-size: 13px;
2239
+ font-weight: 500;
2240
+ color: #3f3f46;
2241
+ }
2242
+
2243
+ .tecof-cms-col-option.selected .tecof-cms-col-option-name {
2244
+ color: var(--tecof-primary-700, #1d4ed8);
2245
+ }
2246
+
2247
+ .tecof-cms-col-option-slug {
2248
+ font-size: 10px;
2249
+ color: #a1a1aa;
2250
+ }
2251
+
2252
+ /* ── Settings ── */
2253
+
2254
+ .tecof-cms-col-settings {
2255
+ display: flex;
2256
+ gap: 8px;
2257
+ }
2258
+
2259
+ .tecof-cms-col-setting {
2260
+ flex: 1;
2261
+ display: flex;
2262
+ flex-direction: column;
2263
+ gap: 4px;
2264
+ }
2265
+
2266
+ .tecof-cms-col-setting-label {
2267
+ font-size: 10px;
2268
+ font-weight: 600;
2269
+ color: #a1a1aa;
2270
+ text-transform: uppercase;
2271
+ letter-spacing: 0.04em;
2272
+ }
2273
+
2274
+ .tecof-cms-col-setting-input {
2275
+ padding: 6px 8px;
2276
+ font-size: 12px;
2277
+ border: 1px solid #e4e4e7;
2278
+ border-radius: 6px;
2279
+ outline: none;
2280
+ width: 100%;
2281
+ transition: border-color 0.15s ease;
2282
+ }
2283
+
2284
+ .tecof-cms-col-setting-input:focus {
2285
+ border-color: var(--tecof-primary-500, #3b82f6);
2286
+ }
2287
+
2288
+ .tecof-cms-col-sort-btns {
2289
+ display: flex;
2290
+ gap: 0;
2291
+ border: 1px solid #e4e4e7;
2292
+ border-radius: 6px;
2293
+ overflow: hidden;
2294
+ }
2295
+
2296
+ .tecof-cms-col-sort-btn {
2297
+ flex: 1;
2298
+ padding: 5px 6px;
2299
+ font-size: 11px;
2300
+ font-weight: 500;
2301
+ background: #fff;
2302
+ border: none;
2303
+ cursor: pointer;
2304
+ color: #71717a;
2305
+ transition: all 0.12s ease;
2306
+ }
2307
+
2308
+ .tecof-cms-col-sort-btn:first-child {
2309
+ border-right: 1px solid #e4e4e7;
2310
+ }
2311
+
2312
+ .tecof-cms-col-sort-btn.active {
2313
+ background: var(--tecof-primary-50, #eff6ff);
2314
+ color: var(--tecof-primary-600, #2563eb);
2315
+ font-weight: 600;
2316
+ }
2317
+
2318
+ .tecof-cms-col-sort-btn:hover:not(.active) {
2319
+ background: #f4f4f5;
2320
+ }
2321
+
2322
+ /* ── Badge ── */
2323
+
2324
+ .tecof-cms-col-badge {
2325
+ display: inline-flex;
2326
+ align-items: center;
2327
+ gap: 6px;
2328
+ padding: 4px 10px;
2329
+ font-size: 11px;
2330
+ font-weight: 500;
2331
+ color: var(--tecof-primary-600, #2563eb);
2332
+ background: var(--tecof-primary-50, #eff6ff);
2333
+ border-radius: 6px;
2334
+ align-self: flex-start;
2335
+ }
2336
+
2337
+ .tecof-cms-col-badge-count {
2338
+ font-size: 10px;
2339
+ color: #a1a1aa;
2340
+ font-weight: 400;
2341
+ }
2342
+
2343
+ /* ── Field Mapping ── */
2344
+
2345
+ .tecof-cms-col-mapping {
2346
+ border: 1px solid #e4e4e7;
2347
+ border-radius: 8px;
2348
+ overflow: hidden;
2349
+ }
2350
+
2351
+ .tecof-cms-col-mapping-header {
2352
+ display: flex;
2353
+ align-items: center;
2354
+ gap: 6px;
2355
+ padding: 6px 10px;
2356
+ font-size: 10px;
2357
+ font-weight: 600;
2358
+ color: #71717a;
2359
+ background: #fafafa;
2360
+ border-bottom: 1px solid #f4f4f5;
2361
+ text-transform: uppercase;
2362
+ letter-spacing: 0.04em;
2363
+ }
2364
+
2365
+ .tecof-cms-col-mapping-rows {
2366
+ display: flex;
2367
+ flex-direction: column;
2368
+ gap: 0;
2369
+ }
2370
+
2371
+ .tecof-cms-col-mapping-row {
2372
+ display: flex;
2373
+ align-items: center;
2374
+ gap: 8px;
2375
+ padding: 6px 10px;
2376
+ border-bottom: 1px solid #f4f4f5;
2377
+ }
2378
+
2379
+ .tecof-cms-col-mapping-row:last-child {
2380
+ border-bottom: none;
2381
+ }
2382
+
2383
+ .tecof-cms-col-mapping-label {
2384
+ flex-shrink: 0;
2385
+ width: 80px;
2386
+ font-size: 12px;
2387
+ font-weight: 500;
2388
+ color: #52525b;
2389
+ }
2390
+
2391
+ .tecof-cms-col-mapping-select {
2392
+ flex: 1;
2393
+ padding: 5px 8px;
2394
+ font-size: 12px;
2395
+ border: 1px solid #e4e4e7;
2396
+ border-radius: 6px;
2397
+ background: #fff;
2398
+ color: #3f3f46;
2399
+ outline: none;
2400
+ cursor: pointer;
2401
+ transition: border-color 0.15s ease;
2402
+ appearance: auto;
2403
+ }
2404
+
2405
+ .tecof-cms-col-mapping-select:focus {
2406
+ border-color: var(--tecof-primary-500, #3b82f6);
2407
+ }
2408
+
2409
+ .tecof-cms-col-mapping-select:disabled {
2410
+ opacity: 0.5;
2411
+ cursor: not-allowed;
2412
+ }
1804
2413
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tecof/theme-editor",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "description": "React theme editor library for Tecof projects",
5
5
  "keywords": [
6
6
  "react",