@dashboard-designer/ui 0.1.1 → 0.1.27

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
@@ -1,3 +1,195 @@
1
+ /* @dashboard-designer/ui — bundled styles (vendor grid + app) */
2
+
3
+ /* --- css/styles.css --- */
4
+ .react-resizable {
5
+ position: relative;
6
+ }
7
+ .react-resizable-handle {
8
+ position: absolute;
9
+ width: 20px;
10
+ height: 20px;
11
+ background-repeat: no-repeat;
12
+ background-origin: content-box;
13
+ box-sizing: border-box;
14
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+');
15
+ background-position: bottom right;
16
+ padding: 0 3px 3px 0;
17
+ }
18
+ .react-resizable-handle-sw {
19
+ bottom: 0;
20
+ left: 0;
21
+ cursor: sw-resize;
22
+ transform: rotate(90deg);
23
+ }
24
+ .react-resizable-handle-se {
25
+ bottom: 0;
26
+ right: 0;
27
+ cursor: se-resize;
28
+ }
29
+ .react-resizable-handle-nw {
30
+ top: 0;
31
+ left: 0;
32
+ cursor: nw-resize;
33
+ transform: rotate(180deg);
34
+ }
35
+ .react-resizable-handle-ne {
36
+ top: 0;
37
+ right: 0;
38
+ cursor: ne-resize;
39
+ transform: rotate(270deg);
40
+ }
41
+ .react-resizable-handle-w,
42
+ .react-resizable-handle-e {
43
+ top: 50%;
44
+ margin-top: -10px;
45
+ cursor: ew-resize;
46
+ }
47
+ .react-resizable-handle-w {
48
+ left: 0;
49
+ transform: rotate(135deg);
50
+ }
51
+ .react-resizable-handle-e {
52
+ right: 0;
53
+ transform: rotate(315deg);
54
+ }
55
+ .react-resizable-handle-n,
56
+ .react-resizable-handle-s {
57
+ left: 50%;
58
+ margin-left: -10px;
59
+ cursor: ns-resize;
60
+ }
61
+ .react-resizable-handle-n {
62
+ top: 0;
63
+ transform: rotate(225deg);
64
+ }
65
+ .react-resizable-handle-s {
66
+ bottom: 0;
67
+ transform: rotate(45deg);
68
+ }
69
+
70
+ /* --- css/styles.css --- */
71
+ .react-grid-layout {
72
+ position: relative;
73
+ transition: height 200ms ease;
74
+ }
75
+ .react-grid-item {
76
+ transition: all 200ms ease;
77
+ transition-property: left, top, width, height;
78
+ }
79
+ .react-grid-item img {
80
+ pointer-events: none;
81
+ user-select: none;
82
+ }
83
+ .react-grid-item.cssTransforms {
84
+ transition-property: transform, width, height;
85
+ }
86
+ .react-grid-item.resizing {
87
+ transition: none;
88
+ z-index: 1;
89
+ will-change: width, height;
90
+ }
91
+
92
+ .react-grid-item.react-draggable-dragging {
93
+ transition: none;
94
+ z-index: 3;
95
+ will-change: transform;
96
+ }
97
+
98
+ .react-grid-item.dropping {
99
+ visibility: hidden;
100
+ }
101
+
102
+ .react-grid-item.react-grid-placeholder {
103
+ background: red;
104
+ opacity: 0.2;
105
+ transition-duration: 100ms;
106
+ z-index: 2;
107
+ -webkit-user-select: none;
108
+ -moz-user-select: none;
109
+ -ms-user-select: none;
110
+ -o-user-select: none;
111
+ user-select: none;
112
+ }
113
+
114
+ .react-grid-item.react-grid-placeholder.placeholder-resizing {
115
+ transition: none;
116
+ }
117
+
118
+ .react-grid-item > .react-resizable-handle {
119
+ position: absolute;
120
+ width: 20px;
121
+ height: 20px;
122
+ }
123
+
124
+ .react-grid-item > .react-resizable-handle::after {
125
+ content: "";
126
+ position: absolute;
127
+ right: 3px;
128
+ bottom: 3px;
129
+ width: 5px;
130
+ height: 5px;
131
+ border-right: 2px solid rgba(0, 0, 0, 0.4);
132
+ border-bottom: 2px solid rgba(0, 0, 0, 0.4);
133
+ }
134
+
135
+ .react-resizable-hide > .react-resizable-handle {
136
+ display: none;
137
+ }
138
+
139
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-sw {
140
+ bottom: 0;
141
+ left: 0;
142
+ cursor: sw-resize;
143
+ transform: rotate(90deg);
144
+ }
145
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-se {
146
+ bottom: 0;
147
+ right: 0;
148
+ cursor: se-resize;
149
+ }
150
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-nw {
151
+ top: 0;
152
+ left: 0;
153
+ cursor: nw-resize;
154
+ transform: rotate(180deg);
155
+ }
156
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-ne {
157
+ top: 0;
158
+ right: 0;
159
+ cursor: ne-resize;
160
+ transform: rotate(270deg);
161
+ }
162
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-w,
163
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-e {
164
+ top: 50%;
165
+ margin-top: -10px;
166
+ cursor: ew-resize;
167
+ }
168
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-w {
169
+ left: 0;
170
+ transform: rotate(135deg);
171
+ }
172
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-e {
173
+ right: 0;
174
+ transform: rotate(315deg);
175
+ }
176
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-n,
177
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-s {
178
+ left: 50%;
179
+ margin-left: -10px;
180
+ cursor: ns-resize;
181
+ }
182
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-n {
183
+ top: 0;
184
+ transform: rotate(225deg);
185
+ }
186
+ .react-grid-item > .react-resizable-handle.react-resizable-handle-s {
187
+ bottom: 0;
188
+ transform: rotate(45deg);
189
+ }
190
+
191
+
192
+ /* --- app/styles.css --- */
1
193
  :root {
2
194
  --dd-bg: #eef3f0;
3
195
  --dd-surface: #ffffff;
@@ -397,9 +589,90 @@
397
589
  transition: box-shadow 120ms ease;
398
590
  }
399
591
 
592
+ /* Never show resize grips in view / readonly mode */
593
+ .dd-root.dd-readonly .dd-canvas .react-resizable-handle,
594
+ .dd-root.dd-readonly .dd-canvas .dd-grid-resize-handle {
595
+ display: none !important;
596
+ visibility: hidden !important;
597
+ pointer-events: none !important;
598
+ opacity: 0 !important;
599
+ }
600
+
601
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item {
602
+ overflow: visible;
603
+ }
604
+
400
605
  .dd-canvas .react-grid-item > .dd-widget,
401
- .dd-canvas .react-grid-item > div {
606
+ .dd-canvas .react-grid-item > div:not(.react-resizable-handle) {
402
607
  height: 100%;
608
+ position: relative;
609
+ z-index: 1;
610
+ }
611
+
612
+ /* Pass clicks through widget corner to the resize handle */
613
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item > .dd-widget {
614
+ pointer-events: none;
615
+ }
616
+
617
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item > .dd-widget > * {
618
+ pointer-events: auto;
619
+ }
620
+
621
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item > .dd-widget .dd-widget-body {
622
+ clip-path: polygon(
623
+ 0 0,
624
+ 100% 0,
625
+ 100% calc(100% - 28px),
626
+ calc(100% - 28px) calc(100% - 28px),
627
+ calc(100% - 28px) 100%,
628
+ 0 100%
629
+ );
630
+ }
631
+
632
+ /* Bottom-right resize handle (edit mode); left calc keeps physical right in RTL */
633
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item .dd-grid-resize-handle {
634
+ position: absolute !important;
635
+ z-index: 100;
636
+ pointer-events: auto;
637
+ display: flex !important;
638
+ visibility: visible !important;
639
+ opacity: 1 !important;
640
+ align-items: center;
641
+ justify-content: center;
642
+ background-image: none;
643
+ padding: 0;
644
+ box-sizing: border-box;
645
+ touch-action: none;
646
+ margin: 0 !important;
647
+ transform: none !important;
648
+ }
649
+
650
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item .dd-grid-resize-handle.react-resizable-handle-se {
651
+ width: 20px;
652
+ height: 20px;
653
+ top: auto !important;
654
+ right: auto !important;
655
+ left: calc(100% - 30px) !important;
656
+ bottom: 10px !important;
657
+ cursor: se-resize;
658
+ background: var(--dd-surface);
659
+ border: 1px solid var(--dd-border);
660
+ border-radius: 4px;
661
+ color: var(--dd-muted);
662
+ box-shadow: 0 1px 3px color-mix(in srgb, var(--dd-shadow) 65%, transparent);
663
+ }
664
+
665
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item .dd-grid-resize-handle-icon {
666
+ flex-shrink: 0;
667
+ pointer-events: none;
668
+ opacity: 0.85;
669
+ }
670
+
671
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item .dd-grid-resize-handle:hover,
672
+ .dd-root:not(.dd-readonly) .dd-canvas .react-grid-item.resizing .dd-grid-resize-handle {
673
+ color: var(--dd-accent);
674
+ border-color: color-mix(in srgb, var(--dd-accent) 50%, var(--dd-border));
675
+ box-shadow: 0 1px 4px color-mix(in srgb, var(--dd-accent) 25%, transparent);
403
676
  }
404
677
 
405
678
  .dd-canvas .react-resizable-handle::after {
@@ -422,6 +695,34 @@
422
695
  box-shadow: 0 0 0 2px var(--dd-accent-soft), var(--dd-shadow);
423
696
  }
424
697
 
698
+ .dd-widget-headerless {
699
+ position: relative;
700
+ }
701
+
702
+ .dd-widget-headerless .dd-widget-body {
703
+ flex: 1;
704
+ min-height: 0;
705
+ }
706
+
707
+ .dd-widget-floating-actions {
708
+ position: absolute;
709
+ top: 6px;
710
+ right: 6px;
711
+ z-index: 3;
712
+ display: flex;
713
+ gap: 2px;
714
+ pointer-events: auto;
715
+ }
716
+
717
+ .dd-widget-headerless .dd-widget-body.dd-widget-drag {
718
+ cursor: grab;
719
+ user-select: none;
720
+ }
721
+
722
+ .dd-widget-headerless .dd-widget-body.dd-widget-drag:active {
723
+ cursor: grabbing;
724
+ }
725
+
425
726
  .dd-widget-header {
426
727
  display: flex;
427
728
  justify-content: space-between;
@@ -1049,10 +1350,23 @@ select.dd-input[multiple] {
1049
1350
  background: #64748b;
1050
1351
  }
1051
1352
 
1353
+ .dd-filters-popover-arrow {
1354
+ position: fixed;
1355
+ z-index: 41;
1356
+ width: 10px;
1357
+ height: 10px;
1358
+ margin: -5px 0 0 -5px;
1359
+ transform: rotate(45deg);
1360
+ background: var(--dd-surface);
1361
+ border-left: 1px solid var(--dd-border);
1362
+ border-top: 1px solid var(--dd-border);
1363
+ border-top-left-radius: 2px;
1364
+ }
1365
+
1052
1366
  .dd-filters-popover-panel {
1053
- position: absolute;
1054
- top: calc(100% + 8px);
1055
- right: 0;
1367
+ position: fixed;
1368
+ top: 0;
1369
+ left: 0;
1056
1370
  z-index: 40;
1057
1371
  width: min(640px, calc(100vw - 32px));
1058
1372
  max-height: min(420px, 70vh);
@@ -1314,6 +1628,257 @@ select.dd-input[multiple] {
1314
1628
  font-size: 13px;
1315
1629
  }
1316
1630
 
1631
+ .dd-label-widget {
1632
+ width: 100%;
1633
+ height: 100%;
1634
+ display: flex;
1635
+ align-items: center;
1636
+ justify-content: center;
1637
+ padding: 12px 16px;
1638
+ border: none;
1639
+ border-radius: var(--dd-radius-sm);
1640
+ text-align: center;
1641
+ line-height: 1.35;
1642
+ font-weight: 600;
1643
+ font-family: inherit;
1644
+ box-sizing: border-box;
1645
+ appearance: none;
1646
+ -webkit-appearance: none;
1647
+ color: var(--dd-on-accent, #fff);
1648
+ background-color: var(--dd-accent);
1649
+ }
1650
+
1651
+ .dd-label-widget-text {
1652
+ display: block;
1653
+ white-space: pre-wrap;
1654
+ word-break: break-word;
1655
+ }
1656
+
1657
+ .dd-label-widget-link:not(:disabled) {
1658
+ cursor: pointer;
1659
+ }
1660
+
1661
+ .dd-label-widget-link:not(:disabled):hover {
1662
+ filter: brightness(0.95);
1663
+ }
1664
+
1665
+ .dd-label-widget:disabled {
1666
+ cursor: default;
1667
+ opacity: 1;
1668
+ color: var(--dd-on-accent, #fff);
1669
+ background-color: var(--dd-accent);
1670
+ }
1671
+
1672
+ .dd-label-container {
1673
+ width: 100%;
1674
+ height: 100%;
1675
+ min-height: 0;
1676
+ box-sizing: border-box;
1677
+ border-radius: var(--dd-radius-sm);
1678
+ background-color: transparent;
1679
+ }
1680
+
1681
+ .dd-label-container-vertical {
1682
+ display: flex;
1683
+ flex-direction: column;
1684
+ align-items: stretch;
1685
+ }
1686
+
1687
+ .dd-label-container-horizontal {
1688
+ display: flex;
1689
+ flex-direction: row;
1690
+ flex-wrap: wrap;
1691
+ align-items: center;
1692
+ }
1693
+
1694
+ .dd-label-container-empty {
1695
+ display: block;
1696
+ text-align: center;
1697
+ padding: 8px;
1698
+ }
1699
+
1700
+ .dd-container-label {
1701
+ display: block;
1702
+ width: 100%;
1703
+ padding: 8px 12px;
1704
+ border: none;
1705
+ border-radius: var(--dd-radius-sm);
1706
+ text-align: center;
1707
+ line-height: 1.35;
1708
+ font-weight: 600;
1709
+ font-family: inherit;
1710
+ box-sizing: border-box;
1711
+ appearance: none;
1712
+ -webkit-appearance: none;
1713
+ color: var(--dd-on-accent, #fff);
1714
+ background-color: var(--dd-accent);
1715
+ }
1716
+
1717
+ .dd-container-label:disabled {
1718
+ cursor: default;
1719
+ opacity: 1;
1720
+ color: var(--dd-on-accent, #fff);
1721
+ background-color: var(--dd-accent);
1722
+ }
1723
+
1724
+ .dd-label-container-horizontal .dd-container-label {
1725
+ width: auto;
1726
+ flex: 0 1 auto;
1727
+ }
1728
+
1729
+ .dd-container-label-text {
1730
+ display: block;
1731
+ white-space: pre-wrap;
1732
+ word-break: break-word;
1733
+ }
1734
+
1735
+ .dd-container-label-link:not(:disabled) {
1736
+ cursor: pointer;
1737
+ }
1738
+
1739
+ .dd-container-label-link:not(:disabled):hover {
1740
+ filter: brightness(0.95);
1741
+ }
1742
+
1743
+ .dd-label-container-editor {
1744
+ display: flex;
1745
+ flex-direction: column;
1746
+ gap: 12px;
1747
+ }
1748
+
1749
+ .dd-label-container-editor-item {
1750
+ padding: 12px;
1751
+ border: 1px solid var(--dd-border);
1752
+ border-radius: var(--dd-radius);
1753
+ background: color-mix(in srgb, var(--dd-surface) 96%, var(--dd-border));
1754
+ }
1755
+
1756
+ .dd-label-container-editor-head {
1757
+ display: flex;
1758
+ align-items: center;
1759
+ justify-content: space-between;
1760
+ gap: 8px;
1761
+ margin-bottom: 8px;
1762
+ }
1763
+
1764
+ .dd-label-container-editor-actions {
1765
+ display: flex;
1766
+ align-items: center;
1767
+ gap: 2px;
1768
+ flex-shrink: 0;
1769
+ }
1770
+
1771
+ .dd-field-label-row {
1772
+ display: flex;
1773
+ align-items: center;
1774
+ justify-content: space-between;
1775
+ gap: 12px;
1776
+ margin-bottom: 8px;
1777
+ }
1778
+
1779
+ .dd-label-style-row {
1780
+ display: grid;
1781
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1782
+ gap: 10px;
1783
+ }
1784
+
1785
+ .dd-color-input {
1786
+ padding: 4px;
1787
+ height: 38px;
1788
+ min-height: 38px;
1789
+ }
1790
+
1791
+ .dd-field-row {
1792
+ display: flex;
1793
+ gap: 10px;
1794
+ flex-wrap: wrap;
1795
+ }
1796
+
1797
+ .dd-measure-aggregations {
1798
+ display: flex;
1799
+ flex-direction: column;
1800
+ gap: 8px;
1801
+ }
1802
+
1803
+ .dd-measure-agg-row {
1804
+ display: flex;
1805
+ align-items: center;
1806
+ gap: 10px;
1807
+ }
1808
+
1809
+ .dd-measure-agg-field {
1810
+ flex: 1;
1811
+ min-width: 0;
1812
+ font-size: 13px;
1813
+ font-family: var(--dd-mono);
1814
+ color: var(--dd-muted);
1815
+ overflow: hidden;
1816
+ text-overflow: ellipsis;
1817
+ white-space: nowrap;
1818
+ }
1819
+
1820
+ .dd-measure-agg-select {
1821
+ width: 120px;
1822
+ flex-shrink: 0;
1823
+ }
1824
+
1825
+ .dd-label-color-swap-btn {
1826
+ width: 38px;
1827
+ min-width: 38px;
1828
+ height: 38px;
1829
+ padding: 0;
1830
+ }
1831
+
1832
+ .dd-guidelines-editor {
1833
+ margin-top: 4px;
1834
+ }
1835
+
1836
+ .dd-guidelines-group {
1837
+ margin-top: 10px;
1838
+ display: flex;
1839
+ flex-direction: column;
1840
+ gap: 8px;
1841
+ }
1842
+
1843
+ .dd-guidelines-group-head {
1844
+ display: flex;
1845
+ align-items: center;
1846
+ justify-content: space-between;
1847
+ gap: 8px;
1848
+ }
1849
+
1850
+ .dd-guidelines-group-title {
1851
+ font-size: 12px;
1852
+ font-weight: 700;
1853
+ color: var(--dd-muted);
1854
+ text-transform: uppercase;
1855
+ letter-spacing: 0.04em;
1856
+ }
1857
+
1858
+ .dd-guideline-item {
1859
+ padding: 10px 12px;
1860
+ border: 1px solid var(--dd-border-subtle);
1861
+ border-radius: var(--dd-radius-sm);
1862
+ background: var(--dd-surface);
1863
+ }
1864
+
1865
+ .dd-guideline-item-head {
1866
+ display: flex;
1867
+ align-items: center;
1868
+ justify-content: space-between;
1869
+ gap: 8px;
1870
+ margin-bottom: 8px;
1871
+ }
1872
+
1873
+ .dd-guideline-item-title {
1874
+ font-size: 13px;
1875
+ font-weight: 600;
1876
+ }
1877
+
1878
+ .dd-guideline-fields {
1879
+ align-items: flex-end;
1880
+ }
1881
+
1317
1882
  .dd-listbox {
1318
1883
  display: flex;
1319
1884
  flex-direction: column;
@@ -1420,6 +1985,12 @@ select.dd-input[multiple] {
1420
1985
  z-index: 1;
1421
1986
  }
1422
1987
 
1988
+ .dd-table-empty-cell {
1989
+ color: var(--dd-muted);
1990
+ text-align: center;
1991
+ padding: 16px;
1992
+ }
1993
+
1423
1994
  .dd-muted {
1424
1995
  color: var(--dd-muted);
1425
1996
  font-size: 13px;
@@ -2728,6 +3299,7 @@ select.dd-input[multiple] {
2728
3299
  html.dd-print-mode .dd-widget-drag-grip,
2729
3300
  html.dd-print-mode .dd-canvas-empty,
2730
3301
  html.dd-print-mode .dd-badge,
3302
+ html.dd-print-mode .dd-grid-resize-handle,
2731
3303
  html.dd-print-mode .react-resizable-handle {
2732
3304
  display: none !important;
2733
3305
  }
@@ -2824,3 +3396,14 @@ select.dd-input[multiple] {
2824
3396
  }
2825
3397
  }
2826
3398
 
3399
+
3400
+
3401
+ /* --- table-empty-overrides.css --- */
3402
+ /* Overrides .dd-table td { text-align: left } for empty-state rows */
3403
+ .dd-table td.dd-table-empty-cell {
3404
+ text-align: center;
3405
+ }
3406
+
3407
+ .dd-query-data-table td.dd-query-data-empty-cell {
3408
+ text-align: center;
3409
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dashboard-designer/ui",
3
- "version": "0.1.1",
3
+ "version": "0.1.27",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -15,17 +15,11 @@
15
15
  "files": [
16
16
  "dist"
17
17
  ],
18
- "scripts": {
19
- "build": "tsup src/index.ts --format esm --dts --external react --external react-dom --external lucide-react && node ./scripts/copy-css.mjs",
20
- "typecheck": "tsc --noEmit",
21
- "dev": "tsup src/index.ts --format esm --dts --external react --external react-dom --external lucide-react --watch"
22
- },
23
18
  "peerDependencies": {
24
19
  "react": "^18.0.0 || ^19.0.0",
25
20
  "react-dom": "^18.0.0 || ^19.0.0"
26
21
  },
27
22
  "dependencies": {
28
- "@dashboard-designer/core": "^0.1.0",
29
23
  "html2canvas": "^1.4.1",
30
24
  "i18next": "^24.2.2",
31
25
  "jspdf": "^4.2.1",
@@ -33,7 +27,8 @@
33
27
  "react-grid-layout": "^1.5.0",
34
28
  "react-i18next": "^15.4.1",
35
29
  "react-resizable": "^3.0.5",
36
- "recharts": "^2.15.1"
30
+ "recharts": "^2.15.1",
31
+ "@dashboard-designer/core": "0.1.15"
37
32
  },
38
33
  "devDependencies": {
39
34
  "@types/react": "^19.0.10",
@@ -43,5 +38,13 @@
43
38
  "react-dom": "^19.0.0",
44
39
  "tsup": "^8.4.0",
45
40
  "typescript": "^5.8.2"
41
+ },
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build": "tsup src/index.ts --format esm --dts --external react --external react-dom --external lucide-react && node ./scripts/copy-css.mjs",
47
+ "typecheck": "tsc --noEmit",
48
+ "dev": "tsup src/index.ts --format esm --dts --external react --external react-dom --external lucide-react --watch"
46
49
  }
47
- }
50
+ }