@alpaca-editor/core 1.0.4015 → 1.0.4017
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/components/ui/calendar.js +2 -6
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.d.ts +2 -1
- package/dist/components/ui/card.js +2 -2
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/copy-button.js +31 -3
- package/dist/components/ui/copy-button.js.map +1 -1
- package/dist/config/config.js +20 -13
- package/dist/config/config.js.map +1 -1
- package/dist/editor/FieldList.js +1 -1
- package/dist/editor/FieldList.js.map +1 -1
- package/dist/editor/FieldListField.js +1 -1
- package/dist/editor/FieldListField.js.map +1 -1
- package/dist/editor/ScrollingContentTree.d.ts +2 -1
- package/dist/editor/ScrollingContentTree.js +2 -2
- package/dist/editor/ScrollingContentTree.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +1 -0
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/itemsRepository.d.ts +2 -2
- package/dist/editor/client/itemsRepository.js +15 -5
- package/dist/editor/client/itemsRepository.js.map +1 -1
- package/dist/editor/client/operations.js +18 -6
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.js +2 -1
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/context-menu/InsertMenu.js +45 -12
- package/dist/editor/context-menu/InsertMenu.js.map +1 -1
- package/dist/editor/field-types/DateFieldEditor.js +1 -1
- package/dist/editor/field-types/DateFieldEditor.js.map +1 -1
- package/dist/editor/field-types/DateTimeFieldEditor.d.ts +5 -0
- package/dist/editor/field-types/DateTimeFieldEditor.js +151 -0
- package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -0
- package/dist/editor/field-types/InternalLinkFieldEditor.js +1 -1
- package/dist/editor/field-types/InternalLinkFieldEditor.js.map +1 -1
- package/dist/editor/field-types/TreeListEditor.js +17 -6
- package/dist/editor/field-types/TreeListEditor.js.map +1 -1
- package/dist/editor/fieldTypes.d.ts +6 -0
- package/dist/editor/menubar/ToolbarFactory.js +1 -1
- package/dist/editor/menubar/ToolbarFactory.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.d.ts +7 -1
- package/dist/editor/menubar/toolbar-sections/EditControls.js +2 -2
- package/dist/editor/menubar/toolbar-sections/EditControls.js.map +1 -1
- package/dist/editor/page-viewer/EditorForm.js +3 -1
- package/dist/editor/page-viewer/EditorForm.js.map +1 -1
- package/dist/editor/page-viewer/PageViewer.d.ts +2 -1
- package/dist/editor/page-viewer/PageViewer.js +7 -5
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.d.ts +2 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +3 -2
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/sidebar/ComponentPalette.js +28 -1
- package/dist/editor/sidebar/ComponentPalette.js.map +1 -1
- package/dist/editor/sidebar/Debug.js +13 -3
- package/dist/editor/sidebar/Debug.js.map +1 -1
- package/dist/editor/ui/ItemSearch.d.ts +1 -0
- package/dist/editor/ui/ItemSearch.js +5 -5
- package/dist/editor/ui/ItemSearch.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.d.ts +2 -1
- package/dist/editor/ui/SimpleTabs.js +8 -7
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Spinner.d.ts +1 -1
- package/dist/page-wizard/WizardSteps.js +5 -4
- package/dist/page-wizard/WizardSteps.js.map +1 -1
- package/dist/page-wizard/steps/CollectStep.js +1 -1
- package/dist/page-wizard/steps/CollectStep.js.map +1 -1
- package/dist/page-wizard/steps/ContentStep.js +4 -3
- package/dist/page-wizard/steps/ContentStep.js.map +1 -1
- package/dist/page-wizard/steps/FindItemsStep.js +2 -13
- package/dist/page-wizard/steps/FindItemsStep.js.map +1 -1
- package/dist/page-wizard/steps/usePageCreator.js +2 -4
- package/dist/page-wizard/steps/usePageCreator.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/styles.css +357 -60
- package/package.json +1 -1
- package/src/components/ui/calendar.tsx +2 -18
- package/src/components/ui/card.tsx +5 -0
- package/src/components/ui/copy-button.tsx +32 -3
- package/src/config/config.tsx +21 -14
- package/src/editor/FieldList.tsx +1 -1
- package/src/editor/FieldListField.tsx +1 -1
- package/src/editor/ScrollingContentTree.tsx +3 -0
- package/src/editor/client/editContext.ts +1 -0
- package/src/editor/client/itemsRepository.ts +25 -7
- package/src/editor/client/operations.ts +19 -5
- package/src/editor/client/pageModelBuilder.ts +1 -1
- package/src/editor/context-menu/InsertMenu.tsx +77 -30
- package/src/editor/field-types/DateFieldEditor.tsx +8 -2
- package/src/editor/field-types/DateTimeFieldEditor.tsx +281 -0
- package/src/editor/field-types/InternalLinkFieldEditor.tsx +1 -1
- package/src/editor/field-types/TreeListEditor.tsx +41 -8
- package/src/editor/fieldTypes.ts +8 -0
- package/src/editor/menubar/ToolbarFactory.tsx +2 -1
- package/src/editor/menubar/toolbar-sections/EditControls.tsx +37 -23
- package/src/editor/page-editor-chrome/PlaceholderDropZone.tsx +1 -1
- package/src/editor/page-viewer/EditorForm.tsx +3 -1
- package/src/editor/page-viewer/PageViewer.tsx +18 -15
- package/src/editor/page-viewer/PageViewerFrame.tsx +11 -2
- package/src/editor/sidebar/ComponentPalette.tsx +36 -1
- package/src/editor/sidebar/Debug.tsx +14 -6
- package/src/editor/ui/ItemSearch.tsx +6 -3
- package/src/editor/ui/SimpleTabs.tsx +10 -1
- package/src/editor/ui/Spinner.tsx +1 -1
- package/src/page-wizard/WizardSteps.tsx +2 -3
- package/src/page-wizard/steps/CollectStep.tsx +1 -1
- package/src/page-wizard/steps/ContentStep.tsx +18 -12
- package/src/page-wizard/steps/FindItemsStep.tsx +1 -50
- package/src/page-wizard/steps/usePageCreator.ts +2 -3
- package/src/revision.ts +2 -2
- package/styles.css +1 -0
package/dist/styles.css
CHANGED
|
@@ -24,14 +24,12 @@
|
|
|
24
24
|
--color-yellow-500: oklch(79.5% 0.184 86.047);
|
|
25
25
|
--color-yellow-600: oklch(68.1% 0.162 75.834);
|
|
26
26
|
--color-yellow-800: oklch(47.6% 0.114 61.907);
|
|
27
|
-
--color-green-50: oklch(98.2% 0.018 155.826);
|
|
28
27
|
--color-green-100: oklch(96.2% 0.044 156.743);
|
|
29
28
|
--color-green-400: oklch(79.2% 0.209 151.711);
|
|
30
29
|
--color-green-500: oklch(72.3% 0.219 149.579);
|
|
31
30
|
--color-green-600: oklch(62.7% 0.194 149.214);
|
|
32
31
|
--color-green-700: oklch(52.7% 0.154 150.069);
|
|
33
32
|
--color-green-800: oklch(44.8% 0.119 151.328);
|
|
34
|
-
--color-green-900: oklch(39.3% 0.095 152.535);
|
|
35
33
|
--color-emerald-400: oklch(76.5% 0.177 163.223);
|
|
36
34
|
--color-teal-100: oklch(95.3% 0.051 180.801);
|
|
37
35
|
--color-teal-400: oklch(77.7% 0.152 181.912);
|
|
@@ -420,9 +418,6 @@
|
|
|
420
418
|
.mt-\[-20px\] {
|
|
421
419
|
margin-top: -20px;
|
|
422
420
|
}
|
|
423
|
-
.mt-\[9px\] {
|
|
424
|
-
margin-top: 9px;
|
|
425
|
-
}
|
|
426
421
|
.mt-\[30px\] {
|
|
427
422
|
margin-top: 30px;
|
|
428
423
|
}
|
|
@@ -492,9 +487,6 @@
|
|
|
492
487
|
.ml-\[-3px\] {
|
|
493
488
|
margin-left: -3px;
|
|
494
489
|
}
|
|
495
|
-
.ml-\[1px\] {
|
|
496
|
-
margin-left: 1px;
|
|
497
|
-
}
|
|
498
490
|
.ml-auto {
|
|
499
491
|
margin-left: auto;
|
|
500
492
|
}
|
|
@@ -700,6 +692,9 @@
|
|
|
700
692
|
.max-h-40 {
|
|
701
693
|
max-height: calc(var(--spacing) * 40);
|
|
702
694
|
}
|
|
695
|
+
.max-h-48 {
|
|
696
|
+
max-height: calc(var(--spacing) * 48);
|
|
697
|
+
}
|
|
703
698
|
.max-h-60 {
|
|
704
699
|
max-height: calc(var(--spacing) * 60);
|
|
705
700
|
}
|
|
@@ -1115,6 +1110,9 @@
|
|
|
1115
1110
|
.grid-cols-1 {
|
|
1116
1111
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
1117
1112
|
}
|
|
1113
|
+
.grid-cols-4 {
|
|
1114
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
1115
|
+
}
|
|
1118
1116
|
.grid-cols-6 {
|
|
1119
1117
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
1120
1118
|
}
|
|
@@ -1642,9 +1640,6 @@
|
|
|
1642
1640
|
.bg-gray-800 {
|
|
1643
1641
|
background-color: var(--color-gray-800);
|
|
1644
1642
|
}
|
|
1645
|
-
.bg-green-50 {
|
|
1646
|
-
background-color: var(--color-green-50);
|
|
1647
|
-
}
|
|
1648
1643
|
.bg-green-100 {
|
|
1649
1644
|
background-color: var(--color-green-100);
|
|
1650
1645
|
}
|
|
@@ -1924,6 +1919,9 @@
|
|
|
1924
1919
|
.pt-5 {
|
|
1925
1920
|
padding-top: calc(var(--spacing) * 5);
|
|
1926
1921
|
}
|
|
1922
|
+
.pr-0 {
|
|
1923
|
+
padding-right: calc(var(--spacing) * 0);
|
|
1924
|
+
}
|
|
1927
1925
|
.pr-1 {
|
|
1928
1926
|
padding-right: calc(var(--spacing) * 1);
|
|
1929
1927
|
}
|
|
@@ -2148,15 +2146,9 @@
|
|
|
2148
2146
|
.text-green-600 {
|
|
2149
2147
|
color: var(--color-green-600);
|
|
2150
2148
|
}
|
|
2151
|
-
.text-green-700 {
|
|
2152
|
-
color: var(--color-green-700);
|
|
2153
|
-
}
|
|
2154
2149
|
.text-green-800 {
|
|
2155
2150
|
color: var(--color-green-800);
|
|
2156
2151
|
}
|
|
2157
|
-
.text-green-900 {
|
|
2158
|
-
color: var(--color-green-900);
|
|
2159
|
-
}
|
|
2160
2152
|
.text-indigo-800 {
|
|
2161
2153
|
color: var(--color-indigo-800);
|
|
2162
2154
|
}
|
|
@@ -2427,9 +2419,6 @@
|
|
|
2427
2419
|
-webkit-user-select: text;
|
|
2428
2420
|
user-select: text;
|
|
2429
2421
|
}
|
|
2430
|
-
.\[--cell-size\:--spacing\(8\)\] {
|
|
2431
|
-
--cell-size: calc(var(--spacing) * 8);
|
|
2432
|
-
}
|
|
2433
2422
|
.\[animation-delay\:-0\.3s\] {
|
|
2434
2423
|
animation-delay: -0.3s;
|
|
2435
2424
|
}
|
|
@@ -3756,30 +3745,6 @@
|
|
|
3756
3745
|
padding-left: calc(var(--spacing) * 5);
|
|
3757
3746
|
}
|
|
3758
3747
|
}
|
|
3759
|
-
.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md {
|
|
3760
|
-
&:first-child[data-selected=true] button {
|
|
3761
|
-
border-top-left-radius: calc(var(--radius) - 2px);
|
|
3762
|
-
border-bottom-left-radius: calc(var(--radius) - 2px);
|
|
3763
|
-
}
|
|
3764
|
-
}
|
|
3765
|
-
.rtl\:\*\*\:\[\.rdp-button\\_next\>svg\]\:rotate-180 {
|
|
3766
|
-
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
|
3767
|
-
:is(& *) {
|
|
3768
|
-
&:is(.rdp-button_next>svg) {
|
|
3769
|
-
rotate: 180deg;
|
|
3770
|
-
}
|
|
3771
|
-
}
|
|
3772
|
-
}
|
|
3773
|
-
}
|
|
3774
|
-
.rtl\:\*\*\:\[\.rdp-button\\_previous\>svg\]\:rotate-180 {
|
|
3775
|
-
&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
|
|
3776
|
-
:is(& *) {
|
|
3777
|
-
&:is(.rdp-button_previous>svg) {
|
|
3778
|
-
rotate: 180deg;
|
|
3779
|
-
}
|
|
3780
|
-
}
|
|
3781
|
-
}
|
|
3782
|
-
}
|
|
3783
3748
|
.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive {
|
|
3784
3749
|
&[data-variant="destructive"] {
|
|
3785
3750
|
:is(& > *) {
|
|
@@ -3789,12 +3754,6 @@
|
|
|
3789
3754
|
}
|
|
3790
3755
|
}
|
|
3791
3756
|
}
|
|
3792
|
-
.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md {
|
|
3793
|
-
&:last-child[data-selected=true] button {
|
|
3794
|
-
border-top-right-radius: calc(var(--radius) - 2px);
|
|
3795
|
-
border-bottom-right-radius: calc(var(--radius) - 2px);
|
|
3796
|
-
}
|
|
3797
|
-
}
|
|
3798
3757
|
.\[\&\:not\(\:first-child\)\]\:mt-4 {
|
|
3799
3758
|
&:not(:first-child) {
|
|
3800
3759
|
margin-top: calc(var(--spacing) * 4);
|
|
@@ -3822,16 +3781,6 @@
|
|
|
3822
3781
|
color: var(--muted-foreground);
|
|
3823
3782
|
}
|
|
3824
3783
|
}
|
|
3825
|
-
.\[\[data-slot\=card-content\]_\&\]\:bg-transparent {
|
|
3826
|
-
[data-slot=card-content] & {
|
|
3827
|
-
background-color: transparent;
|
|
3828
|
-
}
|
|
3829
|
-
}
|
|
3830
|
-
.\[\[data-slot\=popover-content\]_\&\]\:bg-transparent {
|
|
3831
|
-
[data-slot=popover-content] & {
|
|
3832
|
-
background-color: transparent;
|
|
3833
|
-
}
|
|
3834
|
-
}
|
|
3835
3784
|
.\[a\&\]\:hover\:bg-accent {
|
|
3836
3785
|
a& {
|
|
3837
3786
|
&:hover {
|
|
@@ -3887,6 +3836,354 @@
|
|
|
3887
3836
|
}
|
|
3888
3837
|
}
|
|
3889
3838
|
}
|
|
3839
|
+
.rdp-root {
|
|
3840
|
+
--rdp-accent-color: blue;
|
|
3841
|
+
--rdp-accent-background-color: #f0f0ff;
|
|
3842
|
+
--rdp-day-height: 44px;
|
|
3843
|
+
--rdp-day-width: 44px;
|
|
3844
|
+
--rdp-day_button-border-radius: 100%;
|
|
3845
|
+
--rdp-day_button-border: 2px solid transparent;
|
|
3846
|
+
--rdp-day_button-height: 42px;
|
|
3847
|
+
--rdp-day_button-width: 42px;
|
|
3848
|
+
--rdp-selected-border: 2px solid var(--rdp-accent-color);
|
|
3849
|
+
--rdp-disabled-opacity: 0.5;
|
|
3850
|
+
--rdp-outside-opacity: 0.75;
|
|
3851
|
+
--rdp-today-color: var(--rdp-accent-color);
|
|
3852
|
+
--rdp-dropdown-gap: 0.5rem;
|
|
3853
|
+
--rdp-months-gap: 2rem;
|
|
3854
|
+
--rdp-nav_button-disabled-opacity: 0.5;
|
|
3855
|
+
--rdp-nav_button-height: 2.25rem;
|
|
3856
|
+
--rdp-nav_button-width: 2.25rem;
|
|
3857
|
+
--rdp-nav-height: 2.75rem;
|
|
3858
|
+
--rdp-range_middle-background-color: var(--rdp-accent-background-color);
|
|
3859
|
+
--rdp-range_middle-color: inherit;
|
|
3860
|
+
--rdp-range_start-color: white;
|
|
3861
|
+
--rdp-range_start-background: linear-gradient(var(--rdp-gradient-direction), transparent 50%, var(--rdp-range_middle-background-color) 50%);
|
|
3862
|
+
--rdp-range_start-date-background-color: var(--rdp-accent-color);
|
|
3863
|
+
--rdp-range_end-background: linear-gradient(var(--rdp-gradient-direction), var(--rdp-range_middle-background-color) 50%, transparent 50%);
|
|
3864
|
+
--rdp-range_end-color: white;
|
|
3865
|
+
--rdp-range_end-date-background-color: var(--rdp-accent-color);
|
|
3866
|
+
--rdp-week_number-border-radius: 100%;
|
|
3867
|
+
--rdp-week_number-border: 2px solid transparent;
|
|
3868
|
+
--rdp-week_number-height: var(--rdp-day-height);
|
|
3869
|
+
--rdp-week_number-opacity: 0.75;
|
|
3870
|
+
--rdp-week_number-width: var(--rdp-day-width);
|
|
3871
|
+
--rdp-weeknumber-text-align: center;
|
|
3872
|
+
--rdp-weekday-opacity: 0.75;
|
|
3873
|
+
--rdp-weekday-padding: 0.5rem 0rem;
|
|
3874
|
+
--rdp-weekday-text-align: center;
|
|
3875
|
+
--rdp-gradient-direction: 90deg;
|
|
3876
|
+
--rdp-animation_duration: 0.3s;
|
|
3877
|
+
--rdp-animation_timing: cubic-bezier(0.4, 0, 0.2, 1);
|
|
3878
|
+
}
|
|
3879
|
+
.rdp-root[dir="rtl"] {
|
|
3880
|
+
--rdp-gradient-direction: -90deg;
|
|
3881
|
+
}
|
|
3882
|
+
.rdp-root[data-broadcast-calendar="true"] {
|
|
3883
|
+
--rdp-outside-opacity: unset;
|
|
3884
|
+
}
|
|
3885
|
+
.rdp-root {
|
|
3886
|
+
position: relative;
|
|
3887
|
+
box-sizing: border-box;
|
|
3888
|
+
}
|
|
3889
|
+
.rdp-root * {
|
|
3890
|
+
box-sizing: border-box;
|
|
3891
|
+
}
|
|
3892
|
+
.rdp-day {
|
|
3893
|
+
width: var(--rdp-day-width);
|
|
3894
|
+
height: var(--rdp-day-height);
|
|
3895
|
+
text-align: center;
|
|
3896
|
+
}
|
|
3897
|
+
.rdp-day_button {
|
|
3898
|
+
background: none;
|
|
3899
|
+
padding: 0;
|
|
3900
|
+
margin: 0;
|
|
3901
|
+
cursor: pointer;
|
|
3902
|
+
font: inherit;
|
|
3903
|
+
color: inherit;
|
|
3904
|
+
justify-content: center;
|
|
3905
|
+
align-items: center;
|
|
3906
|
+
display: flex;
|
|
3907
|
+
width: var(--rdp-day_button-width);
|
|
3908
|
+
height: var(--rdp-day_button-height);
|
|
3909
|
+
border: var(--rdp-day_button-border);
|
|
3910
|
+
border-radius: var(--rdp-day_button-border-radius);
|
|
3911
|
+
}
|
|
3912
|
+
.rdp-day_button:disabled {
|
|
3913
|
+
cursor: revert;
|
|
3914
|
+
}
|
|
3915
|
+
.rdp-caption_label {
|
|
3916
|
+
z-index: 1;
|
|
3917
|
+
position: relative;
|
|
3918
|
+
display: inline-flex;
|
|
3919
|
+
align-items: center;
|
|
3920
|
+
white-space: nowrap;
|
|
3921
|
+
border: 0;
|
|
3922
|
+
}
|
|
3923
|
+
.rdp-dropdown:focus-visible ~ .rdp-caption_label {
|
|
3924
|
+
outline: 5px auto Highlight;
|
|
3925
|
+
outline: 5px auto -webkit-focus-ring-color;
|
|
3926
|
+
}
|
|
3927
|
+
.rdp-button_next, .rdp-button_previous {
|
|
3928
|
+
border: none;
|
|
3929
|
+
background: none;
|
|
3930
|
+
padding: 0;
|
|
3931
|
+
margin: 0;
|
|
3932
|
+
cursor: pointer;
|
|
3933
|
+
font: inherit;
|
|
3934
|
+
color: inherit;
|
|
3935
|
+
-moz-appearance: none;
|
|
3936
|
+
-webkit-appearance: none;
|
|
3937
|
+
display: inline-flex;
|
|
3938
|
+
align-items: center;
|
|
3939
|
+
justify-content: center;
|
|
3940
|
+
position: relative;
|
|
3941
|
+
appearance: none;
|
|
3942
|
+
width: var(--rdp-nav_button-width);
|
|
3943
|
+
height: var(--rdp-nav_button-height);
|
|
3944
|
+
}
|
|
3945
|
+
.rdp-button_next:disabled, .rdp-button_next[aria-disabled="true"], .rdp-button_previous:disabled, .rdp-button_previous[aria-disabled="true"] {
|
|
3946
|
+
cursor: revert;
|
|
3947
|
+
opacity: var(--rdp-nav_button-disabled-opacity);
|
|
3948
|
+
}
|
|
3949
|
+
.rdp-chevron {
|
|
3950
|
+
display: inline-block;
|
|
3951
|
+
fill: var(--rdp-accent-color);
|
|
3952
|
+
}
|
|
3953
|
+
.rdp-root[dir="rtl"] .rdp-nav .rdp-chevron {
|
|
3954
|
+
transform: rotate(180deg);
|
|
3955
|
+
transform-origin: 50%;
|
|
3956
|
+
}
|
|
3957
|
+
.rdp-dropdowns {
|
|
3958
|
+
position: relative;
|
|
3959
|
+
display: inline-flex;
|
|
3960
|
+
align-items: center;
|
|
3961
|
+
gap: var(--rdp-dropdown-gap);
|
|
3962
|
+
}
|
|
3963
|
+
.rdp-dropdown {
|
|
3964
|
+
z-index: 2;
|
|
3965
|
+
opacity: 0;
|
|
3966
|
+
appearance: none;
|
|
3967
|
+
position: absolute;
|
|
3968
|
+
inset-block-start: 0;
|
|
3969
|
+
inset-block-end: 0;
|
|
3970
|
+
inset-inline-start: 0;
|
|
3971
|
+
width: 100%;
|
|
3972
|
+
margin: 0;
|
|
3973
|
+
padding: 0;
|
|
3974
|
+
cursor: inherit;
|
|
3975
|
+
border: none;
|
|
3976
|
+
line-height: inherit;
|
|
3977
|
+
}
|
|
3978
|
+
.rdp-dropdown_root {
|
|
3979
|
+
position: relative;
|
|
3980
|
+
display: inline-flex;
|
|
3981
|
+
align-items: center;
|
|
3982
|
+
}
|
|
3983
|
+
.rdp-dropdown_root[data-disabled="true"] .rdp-chevron {
|
|
3984
|
+
opacity: var(--rdp-disabled-opacity);
|
|
3985
|
+
}
|
|
3986
|
+
.rdp-month_caption {
|
|
3987
|
+
display: flex;
|
|
3988
|
+
align-content: center;
|
|
3989
|
+
height: var(--rdp-nav-height);
|
|
3990
|
+
font-weight: bold;
|
|
3991
|
+
font-size: large;
|
|
3992
|
+
}
|
|
3993
|
+
.rdp-root[data-nav-layout="around"] .rdp-month, .rdp-root[data-nav-layout="after"] .rdp-month {
|
|
3994
|
+
position: relative;
|
|
3995
|
+
}
|
|
3996
|
+
.rdp-root[data-nav-layout="around"] .rdp-month_caption {
|
|
3997
|
+
justify-content: center;
|
|
3998
|
+
margin-inline-start: var(--rdp-nav_button-width);
|
|
3999
|
+
margin-inline-end: var(--rdp-nav_button-width);
|
|
4000
|
+
position: relative;
|
|
4001
|
+
}
|
|
4002
|
+
.rdp-root[data-nav-layout="around"] .rdp-button_previous {
|
|
4003
|
+
position: absolute;
|
|
4004
|
+
inset-inline-start: 0;
|
|
4005
|
+
top: 0;
|
|
4006
|
+
height: var(--rdp-nav-height);
|
|
4007
|
+
display: inline-flex;
|
|
4008
|
+
}
|
|
4009
|
+
.rdp-root[data-nav-layout="around"] .rdp-button_next {
|
|
4010
|
+
position: absolute;
|
|
4011
|
+
inset-inline-end: 0;
|
|
4012
|
+
top: 0;
|
|
4013
|
+
height: var(--rdp-nav-height);
|
|
4014
|
+
display: inline-flex;
|
|
4015
|
+
justify-content: center;
|
|
4016
|
+
}
|
|
4017
|
+
.rdp-months {
|
|
4018
|
+
position: relative;
|
|
4019
|
+
display: flex;
|
|
4020
|
+
flex-wrap: wrap;
|
|
4021
|
+
gap: var(--rdp-months-gap);
|
|
4022
|
+
max-width: fit-content;
|
|
4023
|
+
}
|
|
4024
|
+
.rdp-month_grid {
|
|
4025
|
+
border-collapse: collapse;
|
|
4026
|
+
}
|
|
4027
|
+
.rdp-nav {
|
|
4028
|
+
position: absolute;
|
|
4029
|
+
inset-block-start: 0;
|
|
4030
|
+
inset-inline-end: 0;
|
|
4031
|
+
display: flex;
|
|
4032
|
+
align-items: center;
|
|
4033
|
+
height: var(--rdp-nav-height);
|
|
4034
|
+
}
|
|
4035
|
+
.rdp-weekday {
|
|
4036
|
+
opacity: var(--rdp-weekday-opacity);
|
|
4037
|
+
padding: var(--rdp-weekday-padding);
|
|
4038
|
+
font-weight: 500;
|
|
4039
|
+
font-size: smaller;
|
|
4040
|
+
text-align: var(--rdp-weekday-text-align);
|
|
4041
|
+
text-transform: var(--rdp-weekday-text-transform);
|
|
4042
|
+
}
|
|
4043
|
+
.rdp-week_number {
|
|
4044
|
+
opacity: var(--rdp-week_number-opacity);
|
|
4045
|
+
font-weight: 400;
|
|
4046
|
+
font-size: small;
|
|
4047
|
+
height: var(--rdp-week_number-height);
|
|
4048
|
+
width: var(--rdp-week_number-width);
|
|
4049
|
+
border: var(--rdp-week_number-border);
|
|
4050
|
+
border-radius: var(--rdp-week_number-border-radius);
|
|
4051
|
+
text-align: var(--rdp-weeknumber-text-align);
|
|
4052
|
+
}
|
|
4053
|
+
.rdp-today:not(.rdp-outside) {
|
|
4054
|
+
color: var(--rdp-today-color);
|
|
4055
|
+
}
|
|
4056
|
+
.rdp-selected {
|
|
4057
|
+
font-weight: bold;
|
|
4058
|
+
font-size: large;
|
|
4059
|
+
}
|
|
4060
|
+
.rdp-selected .rdp-day_button {
|
|
4061
|
+
border: var(--rdp-selected-border);
|
|
4062
|
+
}
|
|
4063
|
+
.rdp-outside {
|
|
4064
|
+
opacity: var(--rdp-outside-opacity);
|
|
4065
|
+
}
|
|
4066
|
+
.rdp-disabled {
|
|
4067
|
+
opacity: var(--rdp-disabled-opacity);
|
|
4068
|
+
}
|
|
4069
|
+
.rdp-hidden {
|
|
4070
|
+
visibility: hidden;
|
|
4071
|
+
color: var(--rdp-range_start-color);
|
|
4072
|
+
}
|
|
4073
|
+
.rdp-range_start {
|
|
4074
|
+
background: var(--rdp-range_start-background);
|
|
4075
|
+
}
|
|
4076
|
+
.rdp-range_start .rdp-day_button {
|
|
4077
|
+
background-color: var(--rdp-range_start-date-background-color);
|
|
4078
|
+
color: var(--rdp-range_start-color);
|
|
4079
|
+
}
|
|
4080
|
+
.rdp-range_middle {
|
|
4081
|
+
background-color: var(--rdp-range_middle-background-color);
|
|
4082
|
+
}
|
|
4083
|
+
.rdp-range_middle .rdp-day_button {
|
|
4084
|
+
border-color: transparent;
|
|
4085
|
+
border: unset;
|
|
4086
|
+
border-radius: unset;
|
|
4087
|
+
color: var(--rdp-range_middle-color);
|
|
4088
|
+
}
|
|
4089
|
+
.rdp-range_end {
|
|
4090
|
+
background: var(--rdp-range_end-background);
|
|
4091
|
+
color: var(--rdp-range_end-color);
|
|
4092
|
+
}
|
|
4093
|
+
.rdp-range_end .rdp-day_button {
|
|
4094
|
+
color: var(--rdp-range_start-color);
|
|
4095
|
+
background-color: var(--rdp-range_end-date-background-color);
|
|
4096
|
+
}
|
|
4097
|
+
.rdp-range_start.rdp-range_end {
|
|
4098
|
+
background: revert;
|
|
4099
|
+
}
|
|
4100
|
+
.rdp-focusable {
|
|
4101
|
+
cursor: pointer;
|
|
4102
|
+
}
|
|
4103
|
+
@keyframes rdp-slide_in_left {
|
|
4104
|
+
0% {
|
|
4105
|
+
transform: translateX(-100%);
|
|
4106
|
+
}
|
|
4107
|
+
100% {
|
|
4108
|
+
transform: translateX(0);
|
|
4109
|
+
}
|
|
4110
|
+
}
|
|
4111
|
+
@keyframes rdp-slide_in_right {
|
|
4112
|
+
0% {
|
|
4113
|
+
transform: translateX(100%);
|
|
4114
|
+
}
|
|
4115
|
+
100% {
|
|
4116
|
+
transform: translateX(0);
|
|
4117
|
+
}
|
|
4118
|
+
}
|
|
4119
|
+
@keyframes rdp-slide_out_left {
|
|
4120
|
+
0% {
|
|
4121
|
+
transform: translateX(0);
|
|
4122
|
+
}
|
|
4123
|
+
100% {
|
|
4124
|
+
transform: translateX(-100%);
|
|
4125
|
+
}
|
|
4126
|
+
}
|
|
4127
|
+
@keyframes rdp-slide_out_right {
|
|
4128
|
+
0% {
|
|
4129
|
+
transform: translateX(0);
|
|
4130
|
+
}
|
|
4131
|
+
100% {
|
|
4132
|
+
transform: translateX(100%);
|
|
4133
|
+
}
|
|
4134
|
+
}
|
|
4135
|
+
.rdp-weeks_before_enter {
|
|
4136
|
+
animation: rdp-slide_in_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4137
|
+
}
|
|
4138
|
+
.rdp-weeks_before_exit {
|
|
4139
|
+
animation: rdp-slide_out_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4140
|
+
}
|
|
4141
|
+
.rdp-weeks_after_enter {
|
|
4142
|
+
animation: rdp-slide_in_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4143
|
+
}
|
|
4144
|
+
.rdp-weeks_after_exit {
|
|
4145
|
+
animation: rdp-slide_out_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4146
|
+
}
|
|
4147
|
+
.rdp-root[dir="rtl"] .rdp-weeks_after_enter {
|
|
4148
|
+
animation: rdp-slide_in_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4149
|
+
}
|
|
4150
|
+
.rdp-root[dir="rtl"] .rdp-weeks_before_exit {
|
|
4151
|
+
animation: rdp-slide_out_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4152
|
+
}
|
|
4153
|
+
.rdp-root[dir="rtl"] .rdp-weeks_before_enter {
|
|
4154
|
+
animation: rdp-slide_in_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4155
|
+
}
|
|
4156
|
+
.rdp-root[dir="rtl"] .rdp-weeks_after_exit {
|
|
4157
|
+
animation: rdp-slide_out_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4158
|
+
}
|
|
4159
|
+
@keyframes rdp-fade_in {
|
|
4160
|
+
from {
|
|
4161
|
+
opacity: 0;
|
|
4162
|
+
}
|
|
4163
|
+
to {
|
|
4164
|
+
opacity: 1;
|
|
4165
|
+
}
|
|
4166
|
+
}
|
|
4167
|
+
@keyframes rdp-fade_out {
|
|
4168
|
+
from {
|
|
4169
|
+
opacity: 1;
|
|
4170
|
+
}
|
|
4171
|
+
to {
|
|
4172
|
+
opacity: 0;
|
|
4173
|
+
}
|
|
4174
|
+
}
|
|
4175
|
+
.rdp-caption_after_enter {
|
|
4176
|
+
animation: rdp-fade_in var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4177
|
+
}
|
|
4178
|
+
.rdp-caption_after_exit {
|
|
4179
|
+
animation: rdp-fade_out var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4180
|
+
}
|
|
4181
|
+
.rdp-caption_before_enter {
|
|
4182
|
+
animation: rdp-fade_in var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4183
|
+
}
|
|
4184
|
+
.rdp-caption_before_exit {
|
|
4185
|
+
animation: rdp-fade_out var(--rdp-animation_duration) var(--rdp-animation_timing) forwards;
|
|
4186
|
+
}
|
|
3890
4187
|
* {
|
|
3891
4188
|
font-family: var(--font-inter), Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
|
|
3892
4189
|
}
|
package/package.json
CHANGED
|
@@ -28,12 +28,7 @@ function Calendar({
|
|
|
28
28
|
return (
|
|
29
29
|
<DayPicker
|
|
30
30
|
showOutsideDays={showOutsideDays}
|
|
31
|
-
className={cn(
|
|
32
|
-
"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
|
|
33
|
-
String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
|
|
34
|
-
String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
|
|
35
|
-
className,
|
|
36
|
-
)}
|
|
31
|
+
className={cn("bg-background group/calendar p-3", className)}
|
|
37
32
|
captionLayout={captionLayout}
|
|
38
33
|
formatters={{
|
|
39
34
|
formatMonthDropdown: (date) =>
|
|
@@ -100,7 +95,7 @@ function Calendar({
|
|
|
100
95
|
defaultClassNames.week_number,
|
|
101
96
|
),
|
|
102
97
|
day: cn(
|
|
103
|
-
"relative w-full h-full p-0 text-center
|
|
98
|
+
"relative w-full h-full p-0 text-center aspect-square",
|
|
104
99
|
defaultClassNames.day,
|
|
105
100
|
),
|
|
106
101
|
range_start: cn(
|
|
@@ -125,16 +120,6 @@ function Calendar({
|
|
|
125
120
|
...classNames,
|
|
126
121
|
}}
|
|
127
122
|
components={{
|
|
128
|
-
Root: ({ className, rootRef, ...props }) => {
|
|
129
|
-
return (
|
|
130
|
-
<div
|
|
131
|
-
data-slot="calendar"
|
|
132
|
-
ref={rootRef}
|
|
133
|
-
className={cn(className)}
|
|
134
|
-
{...props}
|
|
135
|
-
/>
|
|
136
|
-
);
|
|
137
|
-
},
|
|
138
123
|
Chevron: ({ className, orientation, ...props }) => {
|
|
139
124
|
if (orientation === "left") {
|
|
140
125
|
return (
|
|
@@ -155,7 +140,6 @@ function Calendar({
|
|
|
155
140
|
<ChevronDownIcon className={cn("size-4", className)} {...props} />
|
|
156
141
|
);
|
|
157
142
|
},
|
|
158
|
-
// DayButton: CalendarDayButton,
|
|
159
143
|
WeekNumber: ({ children, ...props }) => {
|
|
160
144
|
return (
|
|
161
145
|
<td {...props}>
|
|
@@ -19,6 +19,7 @@ export function Card({
|
|
|
19
19
|
footer,
|
|
20
20
|
showFullscreenButton = false,
|
|
21
21
|
onFullscreen,
|
|
22
|
+
headerActions,
|
|
22
23
|
}: {
|
|
23
24
|
children: React.ReactNode;
|
|
24
25
|
icon: React.ReactNode;
|
|
@@ -32,6 +33,7 @@ export function Card({
|
|
|
32
33
|
footer?: React.ReactNode;
|
|
33
34
|
showFullscreenButton?: boolean;
|
|
34
35
|
onFullscreen?: () => void;
|
|
36
|
+
headerActions?: React.ReactNode;
|
|
35
37
|
}) {
|
|
36
38
|
const [isExpanded, setIsExpanded] = useState(() => {
|
|
37
39
|
if (defaultCollapsed === "yes") return false; // Starts collapsed
|
|
@@ -133,6 +135,9 @@ export function Card({
|
|
|
133
135
|
</div>
|
|
134
136
|
</div>
|
|
135
137
|
<div className="flex items-center gap-2">
|
|
138
|
+
{/* Custom header actions */}
|
|
139
|
+
{headerActions}
|
|
140
|
+
|
|
136
141
|
{/* Fullscreen button - only on mobile */}
|
|
137
142
|
{showFullscreenButton && (
|
|
138
143
|
<button
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRef, useState } from "react";
|
|
1
|
+
import { useRef, useState, useEffect } from "react";
|
|
2
2
|
import { createPortal } from "react-dom";
|
|
3
3
|
import { Copy } from "lucide-react";
|
|
4
4
|
|
|
@@ -21,6 +21,35 @@ export function CopyButton({
|
|
|
21
21
|
const [showCopiedHint, setShowCopiedHint] = useState(false);
|
|
22
22
|
const buttonRef = useRef<HTMLElement>(null);
|
|
23
23
|
|
|
24
|
+
// Add keyframes to document head once
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
const styleId = "copy-button-animations";
|
|
27
|
+
if (document.getElementById(styleId)) return;
|
|
28
|
+
|
|
29
|
+
const style = document.createElement("style");
|
|
30
|
+
style.id = styleId;
|
|
31
|
+
style.textContent = `
|
|
32
|
+
@keyframes shake {
|
|
33
|
+
0%, 100% { transform: translateX(-50%) rotate(0deg); }
|
|
34
|
+
10% { transform: translateX(-50%) rotate(-2deg) scale(1.05); }
|
|
35
|
+
20% { transform: translateX(-50%) rotate(2deg) scale(1.1); }
|
|
36
|
+
30% { transform: translateX(-50%) rotate(-2deg) scale(1.05); }
|
|
37
|
+
40% { transform: translateX(-50%) rotate(2deg) scale(1.1); }
|
|
38
|
+
50% { transform: translateX(-50%) rotate(-1deg) scale(1.02); }
|
|
39
|
+
60% { transform: translateX(-50%) rotate(1deg) scale(1.02); }
|
|
40
|
+
70% { transform: translateX(-50%) rotate(-1deg); }
|
|
41
|
+
80% { transform: translateX(-50%) rotate(1deg); }
|
|
42
|
+
90% { transform: translateX(-50%) rotate(0deg); }
|
|
43
|
+
}
|
|
44
|
+
@keyframes fadeOut {
|
|
45
|
+
0% { opacity: 1; }
|
|
46
|
+
70% { opacity: 1; }
|
|
47
|
+
100% { opacity: 0; }
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
document.head.appendChild(style);
|
|
51
|
+
}, []);
|
|
52
|
+
|
|
24
53
|
const handleCopy = async () => {
|
|
25
54
|
try {
|
|
26
55
|
await navigator.clipboard.writeText(textToCopy);
|
|
@@ -56,9 +85,9 @@ export function CopyButton({
|
|
|
56
85
|
buttonRef.current &&
|
|
57
86
|
createPortal(
|
|
58
87
|
<div
|
|
59
|
-
className="pointer-events-none fixed z-[9999]
|
|
88
|
+
className="pointer-events-none fixed z-[9999] rounded bg-gray-800 px-2 py-1 text-xs whitespace-nowrap text-white shadow-lg"
|
|
60
89
|
style={{
|
|
61
|
-
animation: "fadeOut 2s ease-out forwards",
|
|
90
|
+
animation: "shake 0.5s ease-in-out, fadeOut 2s ease-out forwards",
|
|
62
91
|
left:
|
|
63
92
|
buttonRef.current.getBoundingClientRect().left +
|
|
64
93
|
buttonRef.current.offsetWidth / 2,
|