@7pmlabs/design-system 1.0.10 → 2.0.0
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/README.md +57 -6
- package/dist/design-system.css +1 -1
- package/dist/design-system.js +66 -60
- package/dist/design-system100.js +4 -5
- package/dist/design-system100.js.map +1 -1
- package/dist/design-system101.js +53 -506
- package/dist/design-system101.js.map +1 -1
- package/dist/{design-system93.js → design-system102.js} +1 -1
- package/dist/design-system102.js.map +1 -0
- package/dist/design-system103.js +13 -5
- package/dist/design-system103.js.map +1 -1
- package/dist/design-system104.js +109 -7
- package/dist/design-system104.js.map +1 -1
- package/dist/design-system106.js +9 -0
- package/dist/design-system106.js.map +1 -0
- package/dist/design-system107.js +206 -6
- package/dist/design-system107.js.map +1 -1
- package/dist/design-system109.js +9 -0
- package/dist/design-system109.js.map +1 -0
- package/dist/design-system110.js +507 -6
- package/dist/design-system110.js.map +1 -1
- package/dist/design-system112.js +8 -0
- package/dist/design-system112.js.map +1 -0
- package/dist/design-system113.js +7 -5
- package/dist/design-system113.js.map +1 -1
- package/dist/design-system114.js +209 -9
- package/dist/design-system114.js.map +1 -1
- package/dist/design-system116.js +9 -0
- package/dist/design-system116.js.map +1 -0
- package/dist/design-system117.js +224 -6
- package/dist/design-system117.js.map +1 -1
- package/dist/design-system119.js +9 -0
- package/dist/design-system119.js.map +1 -0
- package/dist/design-system12.js.map +1 -1
- package/dist/design-system120.js +163 -5
- package/dist/design-system120.js.map +1 -1
- package/dist/design-system122.js +5 -90
- package/dist/design-system122.js.map +1 -1
- package/dist/design-system123.js +12 -0
- package/dist/design-system123.js.map +1 -0
- package/dist/design-system124.js +274 -5
- package/dist/design-system124.js.map +1 -1
- package/dist/design-system126.js +9 -0
- package/dist/design-system126.js.map +1 -0
- package/dist/design-system127.js +16 -5
- package/dist/design-system127.js.map +1 -1
- package/dist/design-system129.js +8 -0
- package/dist/design-system129.js.map +1 -0
- package/dist/design-system130.js +12 -5
- package/dist/design-system130.js.map +1 -1
- package/dist/design-system131.js +76 -137
- package/dist/design-system131.js.map +1 -1
- package/dist/design-system133.js +1 -1
- package/dist/design-system133.js.map +1 -1
- package/dist/design-system134.js +37 -90
- package/dist/design-system134.js.map +1 -1
- package/dist/design-system136.js +1 -1
- package/dist/design-system136.js.map +1 -1
- package/dist/design-system137.js +226 -20
- package/dist/design-system137.js.map +1 -1
- package/dist/design-system139.js +4 -5
- package/dist/design-system139.js.map +1 -1
- package/dist/design-system140.js +151 -9
- package/dist/design-system140.js.map +1 -1
- package/dist/design-system142.js +3 -2
- package/dist/design-system142.js.map +1 -1
- package/dist/design-system143.js +93 -19
- package/dist/design-system143.js.map +1 -1
- package/dist/design-system145.js +5 -158
- package/dist/design-system145.js.map +1 -1
- package/dist/design-system146.js +12 -0
- package/dist/design-system146.js.map +1 -0
- package/dist/design-system147.js +37 -5
- package/dist/design-system147.js.map +1 -1
- package/dist/design-system148.js +4 -307
- package/dist/design-system148.js.map +1 -1
- package/dist/design-system149.js +24 -0
- package/dist/{design-system144.js.map → design-system149.js.map} +1 -1
- package/dist/design-system150.js +2 -3
- package/dist/design-system150.js.map +1 -1
- package/dist/design-system151.js +131 -213
- package/dist/design-system151.js.map +1 -1
- package/dist/design-system153.js +1 -1
- package/dist/design-system153.js.map +1 -1
- package/dist/design-system154.js +278 -160
- package/dist/design-system154.js.map +1 -1
- package/dist/design-system156.js +1 -1
- package/dist/design-system156.js.map +1 -1
- package/dist/design-system157.js +240 -3
- package/dist/design-system157.js.map +1 -1
- package/dist/design-system159.js +8 -0
- package/dist/design-system159.js.map +1 -0
- package/dist/design-system16.js.map +1 -1
- package/dist/design-system160.js +189 -6
- package/dist/design-system160.js.map +1 -1
- package/dist/design-system162.js +8 -0
- package/dist/design-system162.js.map +1 -0
- package/dist/design-system163.js +3 -6
- package/dist/design-system163.js.map +1 -1
- package/dist/design-system164.js +46 -57
- package/dist/design-system164.js.map +1 -1
- package/dist/design-system166.js +2 -2
- package/dist/design-system166.js.map +1 -1
- package/dist/design-system167.js +44 -170
- package/dist/design-system167.js.map +1 -1
- package/dist/design-system169.js +2 -2
- package/dist/design-system169.js.map +1 -1
- package/dist/design-system170.js +55 -101
- package/dist/design-system170.js.map +1 -1
- package/dist/design-system172.js +5 -4
- package/dist/design-system172.js.map +1 -1
- package/dist/design-system173.js +182 -11
- package/dist/design-system173.js.map +1 -1
- package/dist/design-system175.js +9 -0
- package/dist/design-system175.js.map +1 -0
- package/dist/design-system176.js +115 -6
- package/dist/design-system176.js.map +1 -1
- package/dist/design-system178.js +8 -0
- package/dist/design-system178.js.map +1 -0
- package/dist/design-system179.js +11 -5
- package/dist/design-system179.js.map +1 -1
- package/dist/design-system180.js +444 -70
- package/dist/design-system180.js.map +1 -1
- package/dist/design-system182.js +5 -4
- package/dist/design-system182.js.map +1 -1
- package/dist/design-system183.js +21 -21
- package/dist/design-system183.js.map +1 -1
- package/dist/design-system185.js +1 -1
- package/dist/design-system185.js.map +1 -1
- package/dist/design-system186.js +85 -25
- package/dist/design-system186.js.map +1 -1
- package/dist/design-system188.js +1 -1
- package/dist/design-system188.js.map +1 -1
- package/dist/design-system189.js +7 -5
- package/dist/design-system189.js.map +1 -1
- package/dist/design-system19.js.map +1 -1
- package/dist/design-system191.js +1 -1
- package/dist/design-system191.js.map +1 -1
- package/dist/design-system192.js +20 -23
- package/dist/design-system192.js.map +1 -1
- package/dist/design-system194.js +1 -1
- package/dist/design-system194.js.map +1 -1
- package/dist/design-system195.js +24 -323
- package/dist/design-system195.js.map +1 -1
- package/dist/design-system197.js +1 -1
- package/dist/design-system197.js.map +1 -1
- package/dist/design-system198.js +19 -88
- package/dist/design-system198.js.map +1 -1
- package/dist/design-system200.js +1 -1
- package/dist/design-system200.js.map +1 -1
- package/dist/design-system201.js +330 -17
- package/dist/design-system201.js.map +1 -1
- package/dist/design-system203.js +5 -3
- package/dist/design-system203.js.map +1 -1
- package/dist/design-system204.js +88 -407
- package/dist/design-system204.js.map +1 -1
- package/dist/design-system206.js +1 -1
- package/dist/design-system206.js.map +1 -1
- package/dist/design-system207.js +17 -106
- package/dist/design-system207.js.map +1 -1
- package/dist/{design-system202.js → design-system208.js} +2 -2
- package/dist/{design-system202.js.map → design-system208.js.map} +1 -1
- package/dist/design-system209.js +3 -6
- package/dist/design-system209.js.map +1 -1
- package/dist/design-system210.js +403 -90
- package/dist/design-system210.js.map +1 -1
- package/dist/design-system212.js +4 -5
- package/dist/design-system212.js.map +1 -1
- package/dist/design-system213.js +45 -723
- package/dist/design-system213.js.map +1 -1
- package/dist/design-system215.js +1 -1
- package/dist/design-system215.js.map +1 -1
- package/dist/design-system216.js +88 -11
- package/dist/design-system216.js.map +1 -1
- package/dist/design-system217.js +4 -525
- package/dist/design-system217.js.map +1 -1
- package/dist/design-system218.js +111 -0
- package/dist/design-system218.js.map +1 -0
- package/dist/design-system22.js.map +1 -1
- package/dist/design-system220.js +6 -3
- package/dist/design-system220.js.map +1 -1
- package/dist/design-system221.js +103 -43
- package/dist/design-system221.js.map +1 -1
- package/dist/design-system223.js +6 -283
- package/dist/design-system223.js.map +1 -1
- package/dist/design-system224.js +740 -0
- package/dist/design-system224.js.map +1 -0
- package/dist/design-system226.js +5 -119
- package/dist/design-system226.js.map +1 -1
- package/dist/{design-system60.js → design-system227.js} +6 -8
- package/dist/design-system227.js.map +1 -0
- package/dist/design-system228.js +525 -5
- package/dist/design-system228.js.map +1 -1
- package/dist/{design-system219.js → design-system230.js} +2 -2
- package/dist/{design-system219.js.map → design-system230.js.map} +1 -1
- package/dist/design-system231.js +3 -5
- package/dist/design-system231.js.map +1 -1
- package/dist/design-system232.js +42 -50
- package/dist/design-system232.js.map +1 -1
- package/dist/design-system233.js +1 -1
- package/dist/design-system233.js.map +1 -1
- package/dist/design-system234.js +254 -141
- package/dist/design-system234.js.map +1 -1
- package/dist/design-system236.js +1 -1
- package/dist/design-system236.js.map +1 -1
- package/dist/design-system237.js +119 -7
- package/dist/design-system237.js.map +1 -1
- package/dist/design-system239.js +8 -0
- package/dist/design-system239.js.map +1 -0
- package/dist/design-system240.js +112 -5
- package/dist/design-system240.js.map +1 -1
- package/dist/design-system242.js +8 -0
- package/dist/design-system242.js.map +1 -0
- package/dist/design-system243.js +54 -6
- package/dist/design-system243.js.map +1 -1
- package/dist/design-system244.js +4 -7
- package/dist/design-system244.js.map +1 -1
- package/dist/design-system245.js +139 -343
- package/dist/design-system245.js.map +1 -1
- package/dist/design-system247.js +4 -5
- package/dist/design-system247.js.map +1 -1
- package/dist/design-system248.js +10 -0
- package/dist/design-system248.js.map +1 -0
- package/dist/{design-system238.js → design-system249.js} +2 -2
- package/dist/design-system249.js.map +1 -0
- package/dist/design-system25.js.map +1 -1
- package/dist/design-system251.js +8 -0
- package/dist/design-system251.js.map +1 -0
- package/dist/{design-system241.js → design-system252.js} +1 -1
- package/dist/design-system252.js.map +1 -0
- package/dist/design-system254.js +9 -0
- package/dist/design-system254.js.map +1 -0
- package/dist/design-system255.js +12 -0
- package/dist/design-system255.js.map +1 -0
- package/dist/design-system256.js +769 -0
- package/dist/design-system256.js.map +1 -0
- package/dist/design-system258.js +9 -0
- package/dist/design-system258.js.map +1 -0
- package/dist/design-system259.js +10 -0
- package/dist/design-system259.js.map +1 -0
- package/dist/design-system260.js +377 -0
- package/dist/design-system260.js.map +1 -0
- package/dist/design-system262.js +9 -0
- package/dist/design-system262.js.map +1 -0
- package/dist/design-system28.js.map +1 -1
- package/dist/design-system3.js.map +1 -1
- package/dist/design-system30.js +21 -138
- package/dist/design-system30.js.map +1 -1
- package/dist/design-system32.js +5 -4
- package/dist/design-system32.js.map +1 -1
- package/dist/design-system33.js +488 -14
- package/dist/design-system33.js.map +1 -1
- package/dist/design-system35.js +1 -1
- package/dist/design-system35.js.map +1 -1
- package/dist/design-system36.js +135 -17
- package/dist/design-system36.js.map +1 -1
- package/dist/design-system38.js +1 -1
- package/dist/design-system38.js.map +1 -1
- package/dist/design-system39.js +16 -11
- package/dist/design-system39.js.map +1 -1
- package/dist/design-system4.js.map +1 -1
- package/dist/design-system41.js +8 -0
- package/dist/design-system41.js.map +1 -0
- package/dist/design-system42.js +26 -5
- package/dist/design-system42.js.map +1 -1
- package/dist/design-system44.js +5 -71
- package/dist/design-system44.js.map +1 -1
- package/dist/design-system45.js +353 -0
- package/dist/design-system45.js.map +1 -0
- package/dist/design-system47.js +5 -50
- package/dist/design-system47.js.map +1 -1
- package/dist/design-system48.js +11 -4
- package/dist/design-system48.js.map +1 -1
- package/dist/design-system49.js +476 -3
- package/dist/design-system49.js.map +1 -1
- package/dist/design-system51.js +8 -0
- package/dist/design-system51.js.map +1 -0
- package/dist/design-system52.js +3 -5
- package/dist/design-system52.js.map +1 -1
- package/dist/design-system53.js +56 -83
- package/dist/design-system53.js.map +1 -1
- package/dist/design-system55.js +5 -4
- package/dist/design-system55.js.map +1 -1
- package/dist/design-system56.js +50 -11
- package/dist/design-system56.js.map +1 -1
- package/dist/design-system57.js +4 -591
- package/dist/design-system57.js.map +1 -1
- package/dist/design-system58.js +6 -0
- package/dist/design-system58.js.map +1 -0
- package/dist/design-system59.js +64 -5
- package/dist/design-system59.js.map +1 -1
- package/dist/design-system61.js +5 -696
- package/dist/design-system61.js.map +1 -1
- package/dist/design-system62.js +101 -0
- package/dist/design-system62.js.map +1 -0
- package/dist/design-system64.js +5 -158
- package/dist/design-system64.js.map +1 -1
- package/dist/design-system65.js +14 -0
- package/dist/design-system65.js.map +1 -0
- package/dist/design-system66.js +591 -5
- package/dist/design-system66.js.map +1 -1
- package/dist/design-system68.js +3 -2
- package/dist/design-system68.js.map +1 -1
- package/dist/design-system69.js +13 -49
- package/dist/design-system69.js.map +1 -1
- package/dist/design-system7.js.map +1 -1
- package/dist/design-system70.js +699 -0
- package/dist/{design-system63.js.map → design-system70.js.map} +1 -1
- package/dist/design-system72.js +5 -199
- package/dist/design-system72.js.map +1 -1
- package/dist/design-system73.js +161 -0
- package/dist/design-system73.js.map +1 -0
- package/dist/design-system75.js +5 -7
- package/dist/design-system75.js.map +1 -1
- package/dist/design-system76.js +25 -269
- package/dist/design-system76.js.map +1 -1
- package/dist/design-system77.js +7 -0
- package/dist/design-system77.js.map +1 -0
- package/dist/design-system78.js +49 -5
- package/dist/design-system78.js.map +1 -1
- package/dist/{design-system71.js → design-system80.js} +2 -2
- package/dist/{design-system71.js.map → design-system80.js.map} +1 -1
- package/dist/design-system81.js +199 -5
- package/dist/design-system81.js.map +1 -1
- package/dist/design-system83.js +5 -99
- package/dist/design-system83.js.map +1 -1
- package/dist/design-system84.js +10 -0
- package/dist/design-system84.js.map +1 -0
- package/dist/design-system85.js +273 -5
- package/dist/design-system85.js.map +1 -1
- package/dist/design-system87.js +8 -0
- package/dist/design-system87.js.map +1 -0
- package/dist/design-system88.js +57 -5
- package/dist/design-system88.js.map +1 -1
- package/dist/design-system90.js +8 -0
- package/dist/design-system90.js.map +1 -0
- package/dist/design-system91.js +11 -5
- package/dist/design-system91.js.map +1 -1
- package/dist/design-system92.js +98 -53
- package/dist/design-system92.js.map +1 -1
- package/dist/design-system94.js +5 -13
- package/dist/design-system94.js.map +1 -1
- package/dist/design-system95.js +61 -104
- package/dist/design-system95.js.map +1 -1
- package/dist/design-system97.js +4 -5
- package/dist/design-system97.js.map +1 -1
- package/dist/design-system98.js +80 -198
- package/dist/design-system98.js.map +1 -1
- package/dist/types/components/BCalendar/BCalendar.spec.d.ts +1 -0
- package/dist/types/components/BCalendar/BCalendar.vue.d.ts +114 -0
- package/dist/types/components/BCalendar/index.d.ts +2 -0
- package/dist/types/components/BCalendar/types.d.ts +54 -0
- package/dist/types/components/BCarousel/BCarousel.spec.d.ts +1 -0
- package/dist/types/components/BCarousel/BCarousel.vue.d.ts +133 -0
- package/dist/types/components/BCarousel/index.d.ts +2 -0
- package/dist/types/components/BCarousel/types.d.ts +15 -0
- package/dist/types/components/BDivider/types.d.ts +2 -2
- package/dist/types/components/BMasonry/types.d.ts +2 -2
- package/dist/types/components/BPagination/BPagination.vue.d.ts +1 -1
- package/dist/types/components/BStatistic/BStatistic.spec.d.ts +1 -0
- package/dist/types/components/BStatistic/BStatistic.vue.d.ts +44 -0
- package/dist/types/components/BStatistic/BStatisticTimer.vue.d.ts +50 -0
- package/dist/types/components/BStatistic/index.d.ts +3 -0
- package/dist/types/components/BStatistic/types.d.ts +6 -0
- package/dist/types/components/BTreeSelect/BTreeSelect.spec.d.ts +1 -0
- package/dist/types/components/BTreeSelect/BTreeSelect.vue.d.ts +143 -0
- package/dist/types/components/BTreeSelect/index.d.ts +2 -0
- package/dist/types/components/BTreeSelect/types.d.ts +77 -0
- package/dist/types/components/index.d.ts +4 -0
- package/dist/types/types.d.ts +3 -0
- package/package.json +18 -15
- package/dist/design-system105.js +0 -212
- package/dist/design-system105.js.map +0 -1
- package/dist/design-system108.js +0 -227
- package/dist/design-system108.js.map +0 -1
- package/dist/design-system111.js +0 -166
- package/dist/design-system111.js.map +0 -1
- package/dist/design-system115.js +0 -277
- package/dist/design-system115.js.map +0 -1
- package/dist/design-system118.js +0 -19
- package/dist/design-system118.js.map +0 -1
- package/dist/design-system121.js +0 -15
- package/dist/design-system121.js.map +0 -1
- package/dist/design-system125.js +0 -45
- package/dist/design-system125.js.map +0 -1
- package/dist/design-system128.js +0 -236
- package/dist/design-system128.js.map +0 -1
- package/dist/design-system141.js +0 -40
- package/dist/design-system141.js.map +0 -1
- package/dist/design-system144.js +0 -7
- package/dist/design-system158.js +0 -61
- package/dist/design-system158.js.map +0 -1
- package/dist/design-system161.js +0 -59
- package/dist/design-system161.js.map +0 -1
- package/dist/design-system174.js +0 -465
- package/dist/design-system174.js.map +0 -1
- package/dist/design-system177.js +0 -38
- package/dist/design-system177.js.map +0 -1
- package/dist/design-system222.js +0 -7
- package/dist/design-system222.js.map +0 -1
- package/dist/design-system225.js +0 -8
- package/dist/design-system225.js.map +0 -1
- package/dist/design-system229.js +0 -115
- package/dist/design-system229.js.map +0 -1
- package/dist/design-system238.js.map +0 -1
- package/dist/design-system241.js.map +0 -1
- package/dist/design-system40.js +0 -479
- package/dist/design-system40.js.map +0 -1
- package/dist/design-system43.js +0 -6
- package/dist/design-system43.js.map +0 -1
- package/dist/design-system46.js +0 -9
- package/dist/design-system46.js.map +0 -1
- package/dist/design-system50.js +0 -67
- package/dist/design-system50.js.map +0 -1
- package/dist/design-system60.js.map +0 -1
- package/dist/design-system63.js +0 -8
- package/dist/design-system67.js +0 -32
- package/dist/design-system67.js.map +0 -1
- package/dist/design-system74.js +0 -8
- package/dist/design-system74.js.map +0 -1
- package/dist/design-system79.js +0 -60
- package/dist/design-system79.js.map +0 -1
- package/dist/design-system82.js +0 -14
- package/dist/design-system82.js.map +0 -1
- package/dist/design-system86.js +0 -69
- package/dist/design-system86.js.map +0 -1
- package/dist/design-system89.js +0 -91
- package/dist/design-system89.js.map +0 -1
- package/dist/design-system93.js.map +0 -1
package/dist/design-system33.js
CHANGED
|
@@ -1,19 +1,493 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
import { useComponentId as e } from "./design-system10.js";
|
|
2
|
+
import t from "./design-system32.js";
|
|
3
|
+
import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, defineComponent as c, guardReactiveProps as ee, mergeProps as l, normalizeClass as u, normalizeProps as te, openBlock as d, ref as f, renderList as p, renderSlot as m, toDisplayString as h, watch as ne, withCtx as re, withKeys as g, withModifiers as _ } from "vue";
|
|
4
|
+
//#region src/components/BCalendar/BCalendar.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var ie = ["aria-label"], ae = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "b-calendar__header"
|
|
8
|
+
}, oe = {
|
|
9
|
+
key: 1,
|
|
10
|
+
class: "b-calendar__header"
|
|
11
|
+
}, se = { class: "b-calendar__header-controls" }, ce = ["for"], le = { class: "b-calendar__select-wrapper" }, ue = ["id", "value"], de = ["value"], fe = ["for"], pe = { class: "b-calendar__select-wrapper" }, me = ["id", "value"], he = ["value", "disabled"], ge = {
|
|
12
|
+
class: "b-calendar__mode-switch",
|
|
13
|
+
role: "radiogroup",
|
|
14
|
+
"aria-label": "Calendar mode"
|
|
15
|
+
}, _e = ["name", "checked"], ve = ["name", "checked"], ye = { class: "b-calendar__body" }, be = ["aria-label"], xe = { role: "row" }, Se = {
|
|
16
|
+
key: 0,
|
|
17
|
+
class: "b-calendar__weekday b-calendar__weekday--week",
|
|
18
|
+
scope: "col",
|
|
19
|
+
"aria-label": "Week"
|
|
20
|
+
}, Ce = ["aria-label"], we = {
|
|
21
|
+
key: 0,
|
|
22
|
+
class: "b-calendar__week-number",
|
|
23
|
+
role: "rowheader"
|
|
24
|
+
}, Te = [
|
|
25
|
+
"aria-selected",
|
|
26
|
+
"aria-disabled",
|
|
27
|
+
"aria-current",
|
|
28
|
+
"data-b-calendar-date",
|
|
29
|
+
"tabindex",
|
|
30
|
+
"onClick",
|
|
31
|
+
"onKeydown"
|
|
32
|
+
], Ee = {
|
|
33
|
+
key: 1,
|
|
34
|
+
class: "b-calendar__date"
|
|
35
|
+
}, De = { class: "b-calendar__date-value" }, Oe = { class: "b-calendar__date-content" }, ke = { class: "b-calendar__events" }, Ae = ["title"], je = { class: "b-calendar__event-title" }, Me = {
|
|
36
|
+
key: 0,
|
|
37
|
+
class: "b-calendar__events-more"
|
|
38
|
+
}, Ne = ["aria-label"], Pe = [
|
|
39
|
+
"aria-selected",
|
|
40
|
+
"aria-disabled",
|
|
41
|
+
"tabindex",
|
|
42
|
+
"onClick",
|
|
43
|
+
"onKeydown"
|
|
44
|
+
], Fe = {
|
|
45
|
+
key: 1,
|
|
46
|
+
class: "b-calendar__month"
|
|
47
|
+
}, Ie = { class: "b-calendar__month-value" }, Le = { class: "b-calendar__month-content" }, Re = {
|
|
48
|
+
class: "b-calendar__sr-only",
|
|
49
|
+
"aria-live": "polite",
|
|
50
|
+
"aria-atomic": "true"
|
|
51
|
+
}, ze = {
|
|
52
|
+
key: 1,
|
|
53
|
+
class: "b-calendar__modal-body"
|
|
54
|
+
}, Be = { class: "b-calendar__modal-header" }, Ve = { class: "b-calendar__modal-title" }, He = {
|
|
55
|
+
key: 0,
|
|
56
|
+
class: "b-calendar__modal-events"
|
|
57
|
+
}, Ue = { class: "b-calendar__modal-event-text" }, We = { class: "b-calendar__modal-event-title" }, Ge = {
|
|
58
|
+
key: 0,
|
|
59
|
+
class: "b-calendar__modal-event-description"
|
|
60
|
+
}, Ke = {
|
|
61
|
+
key: 1,
|
|
62
|
+
class: "b-calendar__modal-empty"
|
|
63
|
+
}, v = /* @__PURE__ */ c({
|
|
64
|
+
__name: "BCalendar",
|
|
65
|
+
props: {
|
|
66
|
+
modelValue: {},
|
|
67
|
+
defaultValue: {},
|
|
68
|
+
mode: {},
|
|
69
|
+
defaultMode: { default: "month" },
|
|
70
|
+
fullscreen: {
|
|
71
|
+
type: Boolean,
|
|
72
|
+
default: !0
|
|
73
|
+
},
|
|
74
|
+
showWeek: {
|
|
75
|
+
type: Boolean,
|
|
76
|
+
default: !1
|
|
77
|
+
},
|
|
78
|
+
validRange: {},
|
|
79
|
+
locale: {},
|
|
80
|
+
disabledDate: { type: Function },
|
|
81
|
+
ariaLabel: { default: "Calendar" },
|
|
82
|
+
events: { type: Function },
|
|
83
|
+
showEventDetails: {
|
|
84
|
+
type: Boolean,
|
|
85
|
+
default: !0
|
|
86
|
+
},
|
|
87
|
+
maxEventsVisible: { default: 3 }
|
|
88
|
+
},
|
|
89
|
+
emits: [
|
|
90
|
+
"update:modelValue",
|
|
91
|
+
"update:mode",
|
|
92
|
+
"change",
|
|
93
|
+
"select",
|
|
94
|
+
"panelChange"
|
|
95
|
+
],
|
|
96
|
+
setup(c, { expose: v, emit: qe }) {
|
|
97
|
+
let y = qe, { componentUID: Je } = e(), b = `b-calendar-${Je.value}`, x = f(c.defaultValue ?? null), S = f(c.defaultMode), C = f(A(c.defaultValue ?? c.modelValue ?? /* @__PURE__ */ new Date())), w = r(() => c.modelValue !== void 0), T = r(() => c.mode !== void 0), E = r(() => w.value ? c.modelValue ?? null : x.value), D = r(() => T.value ? c.mode : S.value);
|
|
98
|
+
ne(() => c.modelValue, (e) => {
|
|
99
|
+
e && (C.value = A(e));
|
|
100
|
+
});
|
|
101
|
+
let O = r(() => {
|
|
102
|
+
let e = c.locale ?? (typeof navigator < "u" ? navigator.language : void 0) ?? "en-US";
|
|
103
|
+
try {
|
|
104
|
+
return Intl.DateTimeFormat(e), e;
|
|
105
|
+
} catch {
|
|
106
|
+
return "en-US";
|
|
107
|
+
}
|
|
108
|
+
}), Ye = r(() => {
|
|
109
|
+
let e = O.value;
|
|
110
|
+
return Array.from({ length: 7 }, (t, n) => new Date(2024, 0, 7 + n).toLocaleDateString(e, { weekday: "short" }));
|
|
111
|
+
}), k = r(() => {
|
|
112
|
+
let e = O.value;
|
|
113
|
+
return Array.from({ length: 12 }, (t, n) => new Date(2024, n, 1).toLocaleDateString(e, { month: c.fullscreen ? "long" : "short" }));
|
|
114
|
+
}), Xe = r(() => {
|
|
115
|
+
let e = O.value;
|
|
116
|
+
return Array.from({ length: 12 }, (t, n) => new Date(2024, n, 1).toLocaleDateString(e, { month: "short" }));
|
|
117
|
+
}), Ze = r(() => {
|
|
118
|
+
try {
|
|
119
|
+
let e = new Intl.RelativeTimeFormat(O.value, { numeric: "auto" }).formatToParts(0, "day").find((e) => e.type === "literal")?.value;
|
|
120
|
+
if (e && e.trim()) return e.trim().charAt(0).toUpperCase() + e.trim().slice(1);
|
|
121
|
+
} catch {}
|
|
122
|
+
return "Today";
|
|
123
|
+
});
|
|
124
|
+
function A(e) {
|
|
125
|
+
return new Date(e.getFullYear(), e.getMonth(), e.getDate());
|
|
126
|
+
}
|
|
127
|
+
function j(e, t) {
|
|
128
|
+
return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth() && e.getDate() === t.getDate();
|
|
129
|
+
}
|
|
130
|
+
function M(e, t) {
|
|
131
|
+
return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth();
|
|
132
|
+
}
|
|
133
|
+
function Qe(e) {
|
|
134
|
+
let t = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate()));
|
|
135
|
+
t.setUTCDate(t.getUTCDate() + 4 - (t.getUTCDay() || 7));
|
|
136
|
+
let n = new Date(Date.UTC(t.getUTCFullYear(), 0, 1));
|
|
137
|
+
return Math.ceil(((t.getTime() - n.getTime()) / 864e5 + 1) / 7);
|
|
138
|
+
}
|
|
139
|
+
function $e(e) {
|
|
140
|
+
if (!c.validRange) return !1;
|
|
141
|
+
let t = A(c.validRange[0]), n = A(c.validRange[1]), r = A(e);
|
|
142
|
+
return r < t || r > n;
|
|
143
|
+
}
|
|
144
|
+
function N(e) {
|
|
145
|
+
return $e(e) ? !0 : c.disabledDate ? c.disabledDate(e) : !1;
|
|
146
|
+
}
|
|
147
|
+
function P(e, t) {
|
|
148
|
+
if (!c.validRange) return !1;
|
|
149
|
+
let n = new Date(c.validRange[0].getFullYear(), c.validRange[0].getMonth(), 1), r = new Date(c.validRange[1].getFullYear(), c.validRange[1].getMonth(), 1), i = new Date(e, t, 1);
|
|
150
|
+
return i < n || i > r;
|
|
151
|
+
}
|
|
152
|
+
let F = r(() => A(/* @__PURE__ */ new Date())), et = r(() => {
|
|
153
|
+
let e = C.value.getFullYear(), t = C.value.getMonth(), n = new Date(e, t, 1).getDay(), r = [];
|
|
154
|
+
for (let i = n - 1; i >= 0; i--) r.push({
|
|
155
|
+
date: new Date(e, t, -i),
|
|
156
|
+
outside: !0
|
|
157
|
+
});
|
|
158
|
+
let i = new Date(e, t + 1, 0).getDate();
|
|
159
|
+
for (let n = 1; n <= i; n++) r.push({
|
|
160
|
+
date: new Date(e, t, n),
|
|
161
|
+
outside: !1
|
|
162
|
+
});
|
|
163
|
+
let a = 1;
|
|
164
|
+
for (; r.length < 42;) r.push({
|
|
165
|
+
date: new Date(e, t + 1, a++),
|
|
166
|
+
outside: !0
|
|
167
|
+
});
|
|
168
|
+
return r;
|
|
169
|
+
}), tt = r(() => {
|
|
170
|
+
let e = [], t = et.value;
|
|
171
|
+
for (let n = 0; n < 6; n++) e.push(t.slice(n * 7, n * 7 + 7));
|
|
172
|
+
return e;
|
|
173
|
+
}), nt = r(() => {
|
|
174
|
+
let e = C.value.getFullYear();
|
|
175
|
+
return Array.from({ length: 12 }, (t, n) => ({
|
|
176
|
+
date: new Date(e, n, 1),
|
|
177
|
+
month: n,
|
|
178
|
+
year: e
|
|
179
|
+
}));
|
|
180
|
+
}), rt = r(() => {
|
|
181
|
+
let e = C.value.getFullYear(), t = c.validRange ? c.validRange[0].getFullYear() : e - 10, n = c.validRange ? c.validRange[1].getFullYear() : e + 10, r = [];
|
|
182
|
+
for (let e = t; e <= n; e++) r.push(e);
|
|
183
|
+
return r;
|
|
184
|
+
}), it = r(() => k.value.map((e, t) => ({
|
|
185
|
+
label: e,
|
|
186
|
+
value: t,
|
|
187
|
+
disabled: P(C.value.getFullYear(), t)
|
|
188
|
+
}))), I = r(() => C.value.getFullYear()), L = r(() => C.value.getMonth());
|
|
189
|
+
function R(e) {
|
|
190
|
+
if (!c.events) return [];
|
|
191
|
+
try {
|
|
192
|
+
return c.events(e) ?? [];
|
|
193
|
+
} catch {
|
|
194
|
+
return [];
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
let z = f(!1), B = f(null), V = r(() => B.value ? R(B.value) : []);
|
|
198
|
+
function H() {
|
|
199
|
+
z.value = !1;
|
|
200
|
+
}
|
|
201
|
+
let at = r(() => {
|
|
202
|
+
if (!B.value) return "";
|
|
203
|
+
try {
|
|
204
|
+
return B.value.toLocaleDateString(O.value, {
|
|
205
|
+
weekday: "long",
|
|
206
|
+
year: "numeric",
|
|
207
|
+
month: "long",
|
|
208
|
+
day: "numeric"
|
|
209
|
+
});
|
|
210
|
+
} catch {
|
|
211
|
+
return Z(B.value);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
function U(e) {
|
|
215
|
+
w.value || (x.value = e), y("update:modelValue", e), y("change", e);
|
|
216
|
+
}
|
|
217
|
+
function W(e) {
|
|
218
|
+
T.value || (S.value = e), y("update:mode", e), y("panelChange", C.value, e);
|
|
219
|
+
}
|
|
220
|
+
function G(e) {
|
|
221
|
+
C.value = A(e), y("panelChange", C.value, D.value);
|
|
222
|
+
}
|
|
223
|
+
function K(e) {
|
|
224
|
+
N(e) || (C.value = A(e), U(A(e)), y("select", A(e), { source: "date" }), c.showEventDetails && c.events && R(e).length > 0 && (B.value = A(e), z.value = !0));
|
|
225
|
+
}
|
|
226
|
+
function q(e, t) {
|
|
227
|
+
if (P(e, t)) return;
|
|
228
|
+
let n = new Date(e, t, 1);
|
|
229
|
+
C.value = n, D.value === "year" ? (W("month"), y("select", n, { source: "month" })) : (U(n), y("select", n, { source: "month" }));
|
|
230
|
+
}
|
|
231
|
+
function ot(e) {
|
|
232
|
+
let t = Number(e.target.value);
|
|
233
|
+
if (Number.isNaN(t)) return;
|
|
234
|
+
let n = new Date(t, C.value.getMonth(), 1);
|
|
235
|
+
C.value = n, y("select", n, { source: "year" }), y("panelChange", n, D.value);
|
|
236
|
+
}
|
|
237
|
+
function st(e) {
|
|
238
|
+
let t = Number(e.target.value);
|
|
239
|
+
if (Number.isNaN(t)) return;
|
|
240
|
+
let n = new Date(C.value.getFullYear(), t, 1);
|
|
241
|
+
C.value = n, y("panelChange", n, D.value);
|
|
242
|
+
}
|
|
243
|
+
function J(e) {
|
|
244
|
+
W(e.target.value);
|
|
245
|
+
}
|
|
246
|
+
function ct() {
|
|
247
|
+
let e = A(/* @__PURE__ */ new Date());
|
|
248
|
+
C.value = e, U(e), y("select", e, { source: "date" });
|
|
249
|
+
}
|
|
250
|
+
let lt = f(null), Y = f(null);
|
|
251
|
+
function ut(e, t) {
|
|
252
|
+
let n = 0;
|
|
253
|
+
switch (e.key) {
|
|
254
|
+
case "ArrowLeft":
|
|
255
|
+
n = -1;
|
|
256
|
+
break;
|
|
257
|
+
case "ArrowRight":
|
|
258
|
+
n = 1;
|
|
259
|
+
break;
|
|
260
|
+
case "ArrowUp":
|
|
261
|
+
n = -7;
|
|
262
|
+
break;
|
|
263
|
+
case "ArrowDown":
|
|
264
|
+
n = 7;
|
|
265
|
+
break;
|
|
266
|
+
case "PageUp":
|
|
267
|
+
n = e.shiftKey ? -365 : -30;
|
|
268
|
+
break;
|
|
269
|
+
case "PageDown":
|
|
270
|
+
n = e.shiftKey ? 365 : 30;
|
|
271
|
+
break;
|
|
272
|
+
case "Home":
|
|
273
|
+
e.preventDefault(), X(new Date(t.date.getFullYear(), t.date.getMonth(), 1));
|
|
274
|
+
return;
|
|
275
|
+
case "End":
|
|
276
|
+
e.preventDefault(), X(new Date(t.date.getFullYear(), t.date.getMonth() + 1, 0));
|
|
277
|
+
return;
|
|
278
|
+
case "Enter":
|
|
279
|
+
case " ":
|
|
280
|
+
e.preventDefault(), K(t.date);
|
|
281
|
+
return;
|
|
282
|
+
default: return;
|
|
283
|
+
}
|
|
284
|
+
e.preventDefault();
|
|
285
|
+
let r = new Date(t.date);
|
|
286
|
+
r.setDate(r.getDate() + n), X(r);
|
|
287
|
+
}
|
|
288
|
+
function X(e) {
|
|
289
|
+
M(e, C.value) || (C.value = new Date(e.getFullYear(), e.getMonth(), 1), y("panelChange", C.value, D.value)), lt.value = A(e), queueMicrotask(() => {
|
|
290
|
+
let t = `[data-b-calendar-date="${Z(e)}"]`;
|
|
291
|
+
(Y.value?.querySelector(t))?.focus();
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
function Z(e) {
|
|
295
|
+
return `${e.getFullYear()}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`;
|
|
296
|
+
}
|
|
297
|
+
function dt(e) {
|
|
298
|
+
let t = lt.value ?? E.value ?? F.value;
|
|
299
|
+
if (M(t, C.value)) return j(e.date, t) && !e.outside;
|
|
300
|
+
let n = new Date(C.value.getFullYear(), C.value.getMonth(), 1);
|
|
301
|
+
return j(e.date, n) && !e.outside;
|
|
302
|
+
}
|
|
303
|
+
let ft = r(() => ({
|
|
304
|
+
value: C.value,
|
|
305
|
+
mode: D.value,
|
|
306
|
+
onTypeChange: W,
|
|
307
|
+
onChange: G
|
|
308
|
+
}));
|
|
309
|
+
function Q(e) {
|
|
310
|
+
return {
|
|
311
|
+
date: e.date,
|
|
312
|
+
selected: !!E.value && j(e.date, E.value),
|
|
313
|
+
today: j(e.date, F.value),
|
|
314
|
+
outside: e.outside,
|
|
315
|
+
disabled: N(e.date)
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
function $(e, t) {
|
|
319
|
+
return {
|
|
320
|
+
date: new Date(e, t, 1),
|
|
321
|
+
selected: !!E.value && E.value.getFullYear() === e && E.value.getMonth() === t,
|
|
322
|
+
today: F.value.getFullYear() === e && F.value.getMonth() === t,
|
|
323
|
+
outside: !1,
|
|
324
|
+
disabled: P(e, t)
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
return v({
|
|
328
|
+
select: (e) => K(e),
|
|
329
|
+
setMode: W,
|
|
330
|
+
goTo: G
|
|
331
|
+
}), (e, r) => (d(), o("section", {
|
|
332
|
+
id: b,
|
|
333
|
+
class: u(["b-calendar", {
|
|
334
|
+
"b-calendar--fullscreen": c.fullscreen,
|
|
335
|
+
"b-calendar--mini": !c.fullscreen,
|
|
336
|
+
"b-calendar--mode-month": D.value === "month",
|
|
337
|
+
"b-calendar--mode-year": D.value === "year",
|
|
338
|
+
"b-calendar--show-week": c.showWeek
|
|
339
|
+
}]),
|
|
340
|
+
role: "region",
|
|
341
|
+
"aria-label": c.ariaLabel
|
|
342
|
+
}, [
|
|
343
|
+
e.$slots.header ? (d(), o("header", ae, [m(e.$slots, "header", te(ee(ft.value)))])) : (d(), o("header", oe, [s("div", se, [
|
|
344
|
+
s("label", {
|
|
345
|
+
class: "b-calendar__sr-only",
|
|
346
|
+
for: `${b}-year`
|
|
347
|
+
}, "Year", 8, ce),
|
|
348
|
+
s("span", le, [s("select", {
|
|
349
|
+
id: `${b}-year`,
|
|
350
|
+
class: "b-calendar__select b-calendar__select--year",
|
|
351
|
+
value: I.value,
|
|
352
|
+
"aria-label": "Select year",
|
|
353
|
+
onChange: ot
|
|
354
|
+
}, [(d(!0), o(n, null, p(rt.value, (e) => (d(), o("option", {
|
|
355
|
+
key: e,
|
|
356
|
+
value: e
|
|
357
|
+
}, h(e), 9, de))), 128))], 40, ue)]),
|
|
358
|
+
D.value === "month" ? (d(), o(n, { key: 0 }, [s("label", {
|
|
359
|
+
class: "b-calendar__sr-only",
|
|
360
|
+
for: `${b}-month`
|
|
361
|
+
}, "Month", 8, fe), s("span", pe, [s("select", {
|
|
362
|
+
id: `${b}-month`,
|
|
363
|
+
class: "b-calendar__select b-calendar__select--month",
|
|
364
|
+
value: L.value,
|
|
365
|
+
"aria-label": "Select month",
|
|
366
|
+
onChange: st
|
|
367
|
+
}, [(d(!0), o(n, null, p(it.value, (e) => (d(), o("option", {
|
|
368
|
+
key: e.value,
|
|
369
|
+
value: e.value,
|
|
370
|
+
disabled: e.disabled
|
|
371
|
+
}, h(e.label), 9, he))), 128))], 40, me)])], 64)) : a("", !0),
|
|
372
|
+
s("div", ge, [s("label", { class: u(["b-calendar__mode-option", { "b-calendar__mode-option--active": D.value === "month" }]) }, [s("input", {
|
|
373
|
+
type: "radio",
|
|
374
|
+
name: `${b}-mode`,
|
|
375
|
+
value: "month",
|
|
376
|
+
checked: D.value === "month",
|
|
377
|
+
class: "b-calendar__sr-only",
|
|
378
|
+
onChange: J
|
|
379
|
+
}, null, 40, _e), r[1] ||= s("span", null, "Month", -1)], 2), s("label", { class: u(["b-calendar__mode-option", { "b-calendar__mode-option--active": D.value === "year" }]) }, [s("input", {
|
|
380
|
+
type: "radio",
|
|
381
|
+
name: `${b}-mode`,
|
|
382
|
+
value: "year",
|
|
383
|
+
checked: D.value === "year",
|
|
384
|
+
class: "b-calendar__sr-only",
|
|
385
|
+
onChange: J
|
|
386
|
+
}, null, 40, ve), r[2] ||= s("span", null, "Year", -1)], 2)])
|
|
387
|
+
]), s("button", {
|
|
388
|
+
type: "button",
|
|
389
|
+
class: "b-calendar__today-btn",
|
|
390
|
+
onClick: ct
|
|
391
|
+
}, h(Ze.value), 1)])),
|
|
392
|
+
s("div", ye, [D.value === "month" ? (d(), o("table", {
|
|
393
|
+
key: 0,
|
|
394
|
+
ref_key: "gridRef",
|
|
395
|
+
ref: Y,
|
|
396
|
+
class: "b-calendar__table",
|
|
397
|
+
role: "grid",
|
|
398
|
+
"aria-label": `${c.ariaLabel} dates`
|
|
399
|
+
}, [s("thead", null, [s("tr", xe, [c.showWeek ? (d(), o("th", Se, " # ")) : a("", !0), (d(!0), o(n, null, p(Ye.value, (e) => (d(), o("th", {
|
|
400
|
+
key: e,
|
|
401
|
+
class: "b-calendar__weekday",
|
|
402
|
+
scope: "col",
|
|
403
|
+
"aria-label": e
|
|
404
|
+
}, h(e), 9, Ce))), 128))])]), s("tbody", null, [(d(!0), o(n, null, p(tt.value, (t, i) => (d(), o("tr", {
|
|
405
|
+
key: i,
|
|
406
|
+
role: "row"
|
|
407
|
+
}, [c.showWeek ? (d(), o("td", we, h(Qe(t[0].date)), 1)) : a("", !0), (d(!0), o(n, null, p(t, (t) => (d(), o("td", {
|
|
408
|
+
key: Z(t.date),
|
|
409
|
+
class: u(["b-calendar__cell", {
|
|
410
|
+
"b-calendar__cell--outside": t.outside,
|
|
411
|
+
"b-calendar__cell--today": j(t.date, F.value),
|
|
412
|
+
"b-calendar__cell--selected": Q(t).selected,
|
|
413
|
+
"b-calendar__cell--disabled": N(t.date)
|
|
414
|
+
}]),
|
|
415
|
+
role: "gridcell",
|
|
416
|
+
"aria-selected": Q(t).selected || void 0,
|
|
417
|
+
"aria-disabled": N(t.date) || void 0,
|
|
418
|
+
"aria-current": j(t.date, F.value) ? "date" : void 0,
|
|
419
|
+
"data-b-calendar-date": Z(t.date),
|
|
420
|
+
tabindex: dt(t) ? 0 : -1,
|
|
421
|
+
onClick: (e) => !N(t.date) && K(t.date),
|
|
422
|
+
onKeydown: (e) => ut(e, t)
|
|
423
|
+
}, [e.$slots.dateFullCell ? m(e.$slots, "dateFullCell", l({
|
|
424
|
+
key: 0,
|
|
425
|
+
ref_for: !0
|
|
426
|
+
}, Q(t))) : (d(), o("div", Ee, [s("div", De, h(t.date.getDate()), 1), s("div", Oe, [e.$slots.dateCell ? m(e.$slots, "dateCell", l({
|
|
427
|
+
key: 0,
|
|
428
|
+
ref_for: !0
|
|
429
|
+
}, Q(t))) : c.events && R(t.date).length > 0 ? (d(), o(n, { key: 1 }, [s("ul", ke, [(d(!0), o(n, null, p(R(t.date).slice(0, c.maxEventsVisible), (e, t) => (d(), o("li", {
|
|
430
|
+
key: t,
|
|
431
|
+
class: u(["b-calendar__event", `b-calendar__event--${e.type ?? "default"}`]),
|
|
432
|
+
title: e.title
|
|
433
|
+
}, [r[3] ||= s("span", {
|
|
434
|
+
class: "b-calendar__event-dot",
|
|
435
|
+
"aria-hidden": "true"
|
|
436
|
+
}, null, -1), s("span", je, h(e.title), 1)], 10, Ae))), 128))]), R(t.date).length > c.maxEventsVisible ? (d(), o("div", Me, " +" + h(R(t.date).length - c.maxEventsVisible) + " more ", 1)) : a("", !0)], 64)) : a("", !0)])]))], 42, Te))), 128))]))), 128))])], 8, be)) : (d(), o("table", {
|
|
437
|
+
key: 1,
|
|
438
|
+
class: "b-calendar__table b-calendar__table--year",
|
|
439
|
+
role: "grid",
|
|
440
|
+
"aria-label": `${c.ariaLabel} months`
|
|
441
|
+
}, [s("tbody", null, [(d(), o(n, null, p(4, (t) => s("tr", {
|
|
442
|
+
key: t,
|
|
443
|
+
role: "row"
|
|
444
|
+
}, [(d(!0), o(n, null, p(nt.value.slice((t - 1) * 3, t * 3), (t) => (d(), o("td", {
|
|
445
|
+
key: t.month,
|
|
446
|
+
class: u(["b-calendar__cell b-calendar__cell--month", {
|
|
447
|
+
"b-calendar__cell--selected": $(t.year, t.month).selected,
|
|
448
|
+
"b-calendar__cell--today": $(t.year, t.month).today,
|
|
449
|
+
"b-calendar__cell--disabled": P(t.year, t.month)
|
|
450
|
+
}]),
|
|
451
|
+
role: "gridcell",
|
|
452
|
+
"aria-selected": $(t.year, t.month).selected || void 0,
|
|
453
|
+
"aria-disabled": P(t.year, t.month) || void 0,
|
|
454
|
+
tabindex: $(t.year, t.month).selected || !E.value && t.month === F.value.getMonth() && t.year === F.value.getFullYear() ? 0 : -1,
|
|
455
|
+
onClick: (e) => !P(t.year, t.month) && q(t.year, t.month),
|
|
456
|
+
onKeydown: [g(_((e) => q(t.year, t.month), ["prevent"]), ["enter"]), g(_((e) => q(t.year, t.month), ["prevent"]), ["space"])]
|
|
457
|
+
}, [e.$slots.monthFullCell ? m(e.$slots, "monthFullCell", l({
|
|
458
|
+
key: 0,
|
|
459
|
+
ref_for: !0
|
|
460
|
+
}, $(t.year, t.month))) : (d(), o("div", Fe, [s("div", Ie, h(Xe.value[t.month]), 1), s("div", Le, [m(e.$slots, "monthCell", l({ ref_for: !0 }, $(t.year, t.month)))])]))], 42, Pe))), 128))])), 64))])], 8, Ne))]),
|
|
461
|
+
s("div", Re, h(D.value === "month" ? k.value[L.value] : "") + " " + h(I.value), 1),
|
|
462
|
+
c.showEventDetails && c.events ? (d(), i(t, {
|
|
463
|
+
key: 2,
|
|
464
|
+
modelValue: z.value,
|
|
465
|
+
"onUpdate:modelValue": r[0] ||= (e) => z.value = e,
|
|
466
|
+
class: "b-calendar__modal"
|
|
467
|
+
}, {
|
|
468
|
+
default: re(() => [e.$slots.eventDetails && B.value ? m(e.$slots, "eventDetails", {
|
|
469
|
+
key: 0,
|
|
470
|
+
date: B.value,
|
|
471
|
+
events: V.value,
|
|
472
|
+
close: H
|
|
473
|
+
}) : B.value ? (d(), o("div", ze, [s("header", Be, [s("h3", Ve, h(at.value), 1), s("button", {
|
|
474
|
+
type: "button",
|
|
475
|
+
class: "b-calendar__modal-close",
|
|
476
|
+
"aria-label": "Close",
|
|
477
|
+
onClick: H
|
|
478
|
+
}, " × ")]), V.value.length > 0 ? (d(), o("ul", He, [(d(!0), o(n, null, p(V.value, (e, t) => (d(), o("li", {
|
|
479
|
+
key: t,
|
|
480
|
+
class: u(["b-calendar__modal-event", `b-calendar__modal-event--${e.type ?? "default"}`])
|
|
481
|
+
}, [r[4] ||= s("span", {
|
|
482
|
+
class: "b-calendar__event-dot",
|
|
483
|
+
"aria-hidden": "true"
|
|
484
|
+
}, null, -1), s("div", Ue, [s("div", We, h(e.title), 1), e.description ? (d(), o("div", Ge, h(e.description), 1)) : a("", !0)])], 2))), 128))])) : (d(), o("p", Ke, "No events."))])) : a("", !0)]),
|
|
485
|
+
_: 3
|
|
486
|
+
}, 8, ["modelValue"])) : a("", !0)
|
|
487
|
+
], 10, ie));
|
|
14
488
|
}
|
|
15
489
|
});
|
|
16
490
|
//#endregion
|
|
17
|
-
export {
|
|
491
|
+
export { v as default };
|
|
18
492
|
|
|
19
493
|
//# sourceMappingURL=design-system33.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system33.js","names":[],"sources":["../src/components/BCard/BCardGrid.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"role\"]\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BCardGrid',\n props: {\n hoverable: { type: Boolean, default: false }\n },\n setup(__props: any) {\n\n// ─────────────────────────────────────────────\n// Props\n// ─────────────────────────────────────────────\n\n\n// ─────────────────────────────────────────────\n// Slots\n// ─────────────────────────────────────────────\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"b-card-grid\", { 'b-card-grid--hoverable': __props.hoverable }]),\n role: _ctx.$attrs['aria-label'] ? 'region' : undefined\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1))\n}\n}\n\n})"],"mappings":";;AAGA,IAAM,IAAa,CAAC,OAAO,EAG3B,IAA4B,kBAAiB;CAC3C,QAAQ;CACR,OAAO,EACL,WAAW;EAAE,MAAM;EAAS,SAAS;EAAO,EAC7C;CACD,MAAM,GAAc;AAYtB,UAAQ,GAAU,OACR,GAAY,EAAE,EAAoB,OAAO;GAC/C,OAAO,EAAgB,CAAC,eAAe,EAAE,0BAA0B,EAAQ,WAAW,CAAC,CAAC;GACxF,MAAM,EAAK,OAAO,gBAAgB,WAAW,KAAA;GAC9C,EAAE,CACD,EAAY,EAAK,QAAQ,UAAU,CACpC,EAAE,IAAI,EAAW;;CAInB,CAAA"}
|
|
1
|
+
{"version":3,"file":"design-system33.js","names":["$slots"],"sources":["../src/components/BCalendar/BCalendar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue';\n\nimport { useComponentId } from '@/composables/useComponentId';\nimport BModal from '@/components/BModal/BModal.vue';\n\nimport type {\n BCalendarCellSlotScope,\n BCalendarEvent,\n BCalendarEventDetailsSlotScope,\n BCalendarHeaderSlotScope,\n BCalendarMode,\n BCalendarSelectInfo,\n} from './types';\n\n// ─────────────────────────────────────────────\n// Props\n// ─────────────────────────────────────────────\nconst {\n modelValue,\n defaultValue,\n mode,\n defaultMode = 'month',\n fullscreen = true,\n showWeek = false,\n validRange,\n locale,\n disabledDate,\n ariaLabel = 'Calendar',\n events,\n showEventDetails = true,\n maxEventsVisible = 3,\n} = defineProps<{\n /**\n * Controlled selected date. Pair with `v-model` for two-way binding.\n * AntD: `value`.\n */\n modelValue?: Date | null;\n /**\n * Initial selected date when uncontrolled.\n * AntD: `defaultValue`.\n */\n defaultValue?: Date;\n /**\n * Controlled panel mode (month / year). When omitted, the component\n * manages its own mode starting from `defaultMode`.\n * AntD: `mode`.\n */\n mode?: BCalendarMode;\n /**\n * Initial panel mode when uncontrolled.\n * @default 'month'\n */\n defaultMode?: BCalendarMode;\n /**\n * Full-screen layout when `true`, mini layout when `false`.\n * AntD: `fullscreen`.\n * @default true\n */\n fullscreen?: boolean;\n /**\n * Show a week-number column in month mode.\n * AntD: `showWeek`.\n * @default false\n */\n showWeek?: boolean;\n /**\n * Inclusive [start, end] range outside which dates are disabled.\n * AntD: `validRange`.\n */\n validRange?: [Date, Date];\n /**\n * BCP 47 locale tag for weekday / month labels (e.g. `'en-US'`, `'vi-VN'`).\n * AntD: `locale` (object). We accept a locale string and use Intl.\n */\n locale?: string;\n /**\n * Predicate to disable specific dates.\n * AntD: `disabledDate`.\n */\n disabledDate?: (date: Date) => boolean;\n /** Accessible label for the calendar root region. */\n ariaLabel?: string;\n /**\n * Returns events for a given date. When provided, event titles are auto-rendered\n * inside each day cell (unless the `dateCell` slot replaces them).\n */\n events?: (date: Date) => BCalendarEvent[];\n /**\n * Open a details modal when clicking a date that has events.\n * Set `false` to keep clicks selection-only.\n * @default true\n */\n showEventDetails?: boolean;\n /**\n * Maximum number of events shown inline per day cell. Extra events collapse\n * into a \"+N more\" indicator (full list is still available in the modal).\n * @default 3\n */\n maxEventsVisible?: number;\n}>();\n\n// ─────────────────────────────────────────────\n// Emits\n// ─────────────────────────────────────────────\nconst emit = defineEmits<{\n /** Two-way binding for the selected date. */\n 'update:modelValue': [date: Date];\n /** Two-way binding for the panel mode. */\n 'update:mode': [mode: BCalendarMode];\n /** Fires when the selected date changes. AntD: `onChange`. */\n change: [date: Date];\n /** Fires on date / month / year selection. AntD: `onSelect`. */\n select: [date: Date, info: BCalendarSelectInfo];\n /** Fires when panel value or mode changes. AntD: `onPanelChange`. */\n panelChange: [date: Date, mode: BCalendarMode];\n}>();\n\n// ─────────────────────────────────────────────\n// Slots (parity with AntD render props)\n// ─────────────────────────────────────────────\ndefineSlots<{\n /** Custom header. AntD: `headerRender`. */\n header?(scope: BCalendarHeaderSlotScope): unknown;\n /** Inject extra content into a date cell. AntD: `cellRender` (date). */\n dateCell?(scope: BCalendarCellSlotScope): unknown;\n /** Inject extra content into a month cell. AntD: `cellRender` (month). */\n monthCell?(scope: BCalendarCellSlotScope): unknown;\n /** Replace the entire date cell. AntD: `fullCellRender` / `dateFullCellRender`. */\n dateFullCell?(scope: BCalendarCellSlotScope): unknown;\n /** Replace the entire month cell. AntD: `fullCellRender` / `monthFullCellRender`. */\n monthFullCell?(scope: BCalendarCellSlotScope): unknown;\n /** Replace the contents of the event-details modal. */\n eventDetails?(scope: BCalendarEventDetailsSlotScope): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// State\n// ─────────────────────────────────────────────\nconst { componentUID } = useComponentId();\nconst ROOT_ID = `b-calendar-${componentUID.value}`;\n\nconst internalValue = ref<Date | null>(defaultValue ?? null);\nconst internalMode = ref<BCalendarMode>(defaultMode);\n// The currently displayed panel anchor. Always a real Date (today as fallback).\nconst panelDate = ref<Date>(stripTime(defaultValue ?? modelValue ?? new Date()));\n\nconst isControlledValue = computed(() => modelValue !== undefined);\nconst isControlledMode = computed(() => mode !== undefined);\n\nconst selectedDate = computed<Date | null>(() =>\n isControlledValue.value ? (modelValue ?? null) : internalValue.value,\n);\n\nconst activeMode = computed<BCalendarMode>(() =>\n isControlledMode.value ? (mode as BCalendarMode) : internalMode.value,\n);\n\nwatch(\n () => modelValue,\n (val) => {\n if (val) panelDate.value = stripTime(val);\n },\n);\n\n// ─────────────────────────────────────────────\n// Locale helpers\n// ─────────────────────────────────────────────\nconst resolvedLocale = computed(() => {\n const tag =\n locale ??\n (typeof navigator !== 'undefined' ? navigator.language : undefined) ??\n 'en-US';\n try {\n Intl.DateTimeFormat(tag);\n return tag;\n } catch {\n return 'en-US';\n }\n});\n\nconst weekdayLabels = computed(() => {\n const loc = resolvedLocale.value;\n // Sunday-start: 2024-01-07 is a Sunday.\n return Array.from({ length: 7 }, (_, i) =>\n new Date(2024, 0, 7 + i).toLocaleDateString(loc, { weekday: 'short' }),\n );\n});\n\nconst monthLabels = computed(() => {\n const loc = resolvedLocale.value;\n return Array.from({ length: 12 }, (_, i) =>\n new Date(2024, i, 1).toLocaleDateString(loc, { month: fullscreen ? 'long' : 'short' }),\n );\n});\n\nconst monthLabelsShort = computed(() => {\n const loc = resolvedLocale.value;\n return Array.from({ length: 12 }, (_, i) =>\n new Date(2024, i, 1).toLocaleDateString(loc, { month: 'short' }),\n );\n});\n\nconst todayLabel = computed(() => {\n try {\n const rtf = new Intl.RelativeTimeFormat(resolvedLocale.value, { numeric: 'auto' });\n const v = rtf.formatToParts(0, 'day').find((p) => p.type === 'literal')?.value;\n if (v && v.trim()) return v.trim().charAt(0).toUpperCase() + v.trim().slice(1);\n } catch {\n /* no-op */\n }\n return 'Today';\n});\n\n// ─────────────────────────────────────────────\n// Date helpers\n// ─────────────────────────────────────────────\nfunction stripTime(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nfunction getWeekNumber(d: Date): number {\n const c = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n c.setUTCDate(c.getUTCDate() + 4 - (c.getUTCDay() || 7));\n const yearStart = new Date(Date.UTC(c.getUTCFullYear(), 0, 1));\n return Math.ceil(((c.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);\n}\n\nfunction isOutOfValidRange(d: Date): boolean {\n if (!validRange) return false;\n const start = stripTime(validRange[0]);\n const end = stripTime(validRange[1]);\n const t = stripTime(d);\n return t < start || t > end;\n}\n\nfunction isDateDisabled(d: Date): boolean {\n if (isOutOfValidRange(d)) return true;\n if (disabledDate) return disabledDate(d);\n return false;\n}\n\nfunction isMonthDisabled(year: number, month: number): boolean {\n // Month is disabled only when no day in it falls inside the valid range.\n if (!validRange) return false;\n const startMonth = new Date(validRange[0].getFullYear(), validRange[0].getMonth(), 1);\n const endMonth = new Date(validRange[1].getFullYear(), validRange[1].getMonth(), 1);\n const m = new Date(year, month, 1);\n return m < startMonth || m > endMonth;\n}\n\n// ─────────────────────────────────────────────\n// Grid generation\n// ─────────────────────────────────────────────\nconst today = computed(() => stripTime(new Date()));\n\ninterface DateCell {\n date: Date;\n outside: boolean;\n}\n\nconst monthGrid = computed<DateCell[]>(() => {\n const year = panelDate.value.getFullYear();\n const month = panelDate.value.getMonth();\n const firstDay = new Date(year, month, 1);\n const startOffset = firstDay.getDay(); // 0..6 (Sunday-start)\n const cells: DateCell[] = [];\n\n // Leading days from previous month.\n for (let i = startOffset - 1; i >= 0; i--) {\n cells.push({ date: new Date(year, month, -i), outside: true });\n }\n // Current month.\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n for (let i = 1; i <= daysInMonth; i++) {\n cells.push({ date: new Date(year, month, i), outside: false });\n }\n // Trailing days to fill 6 weeks (42 cells).\n let trailing = 1;\n while (cells.length < 42) {\n cells.push({ date: new Date(year, month + 1, trailing++), outside: true });\n }\n return cells;\n});\n\nconst monthRows = computed(() => {\n const rows: DateCell[][] = [];\n const cells = monthGrid.value;\n for (let i = 0; i < 6; i++) rows.push(cells.slice(i * 7, i * 7 + 7));\n return rows;\n});\n\nconst yearGrid = computed(() => {\n const year = panelDate.value.getFullYear();\n return Array.from({ length: 12 }, (_, i) => ({\n date: new Date(year, i, 1),\n month: i,\n year,\n }));\n});\n\nconst headerYearOptions = computed(() => {\n const center = panelDate.value.getFullYear();\n const min = validRange ? validRange[0].getFullYear() : center - 10;\n const max = validRange ? validRange[1].getFullYear() : center + 10;\n const out: number[] = [];\n for (let y = min; y <= max; y++) out.push(y);\n return out;\n});\n\nconst headerMonthOptions = computed(() =>\n monthLabels.value.map((label, idx) => ({\n label,\n value: idx,\n disabled: isMonthDisabled(panelDate.value.getFullYear(), idx),\n })),\n);\n\nconst panelYear = computed(() => panelDate.value.getFullYear());\nconst panelMonth = computed(() => panelDate.value.getMonth());\n\n// ─────────────────────────────────────────────\n// Events feature\n// ─────────────────────────────────────────────\nfunction getEventsForDate(date: Date): BCalendarEvent[] {\n if (!events) return [];\n try {\n return events(date) ?? [];\n } catch {\n return [];\n }\n}\n\nconst eventModalOpen = ref(false);\nconst modalDate = ref<Date | null>(null);\nconst modalEvents = computed<BCalendarEvent[]>(() =>\n modalDate.value ? getEventsForDate(modalDate.value) : [],\n);\n\nfunction closeEventModal() {\n eventModalOpen.value = false;\n}\n\nconst modalDateLabel = computed(() => {\n if (!modalDate.value) return '';\n try {\n return modalDate.value.toLocaleDateString(resolvedLocale.value, {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n });\n } catch {\n return formatISODate(modalDate.value);\n }\n});\n\n// ─────────────────────────────────────────────\n// Behavior\n// ─────────────────────────────────────────────\nfunction setSelected(date: Date) {\n if (!isControlledValue.value) {\n internalValue.value = date;\n }\n emit('update:modelValue', date);\n emit('change', date);\n}\n\nfunction setMode(next: BCalendarMode) {\n if (!isControlledMode.value) {\n internalMode.value = next;\n }\n emit('update:mode', next);\n emit('panelChange', panelDate.value, next);\n}\n\nfunction setPanelDate(date: Date) {\n panelDate.value = stripTime(date);\n emit('panelChange', panelDate.value, activeMode.value);\n}\n\nfunction selectDate(date: Date) {\n if (isDateDisabled(date)) return;\n panelDate.value = stripTime(date);\n setSelected(stripTime(date));\n emit('select', stripTime(date), { source: 'date' });\n if (showEventDetails && events) {\n const list = getEventsForDate(date);\n if (list.length > 0) {\n modalDate.value = stripTime(date);\n eventModalOpen.value = true;\n }\n }\n}\n\nfunction selectMonth(year: number, month: number) {\n if (isMonthDisabled(year, month)) return;\n const date = new Date(year, month, 1);\n panelDate.value = date;\n if (activeMode.value === 'year') {\n // Drill down: go to month view, no actual selection yet.\n setMode('month');\n emit('select', date, { source: 'month' });\n } else {\n setSelected(date);\n emit('select', date, { source: 'month' });\n }\n}\n\nfunction onYearSelectChange(e: Event) {\n const y = Number((e.target as HTMLSelectElement).value);\n if (Number.isNaN(y)) return;\n const next = new Date(y, panelDate.value.getMonth(), 1);\n panelDate.value = next;\n emit('select', next, { source: 'year' });\n emit('panelChange', next, activeMode.value);\n}\n\nfunction onMonthSelectChange(e: Event) {\n const m = Number((e.target as HTMLSelectElement).value);\n if (Number.isNaN(m)) return;\n const next = new Date(panelDate.value.getFullYear(), m, 1);\n panelDate.value = next;\n emit('panelChange', next, activeMode.value);\n}\n\nfunction onModeChange(e: Event) {\n setMode((e.target as HTMLInputElement).value as BCalendarMode);\n}\n\nfunction selectToday() {\n const t = stripTime(new Date());\n panelDate.value = t;\n setSelected(t);\n emit('select', t, { source: 'date' });\n}\n\n// ─────────────────────────────────────────────\n// Keyboard navigation (month grid)\n// ─────────────────────────────────────────────\nconst focusedDate = ref<Date | null>(null);\nconst gridRef = ref<HTMLElement | null>(null);\n\nfunction onCellKeydown(e: KeyboardEvent, cell: DateCell) {\n let delta = 0;\n switch (e.key) {\n case 'ArrowLeft':\n delta = -1;\n break;\n case 'ArrowRight':\n delta = 1;\n break;\n case 'ArrowUp':\n delta = -7;\n break;\n case 'ArrowDown':\n delta = 7;\n break;\n case 'PageUp':\n delta = e.shiftKey ? -365 : -30;\n break;\n case 'PageDown':\n delta = e.shiftKey ? 365 : 30;\n break;\n case 'Home':\n e.preventDefault();\n moveFocusTo(new Date(cell.date.getFullYear(), cell.date.getMonth(), 1));\n return;\n case 'End': {\n e.preventDefault();\n const eom = new Date(cell.date.getFullYear(), cell.date.getMonth() + 1, 0);\n moveFocusTo(eom);\n return;\n }\n case 'Enter':\n case ' ':\n e.preventDefault();\n selectDate(cell.date);\n return;\n default:\n return;\n }\n e.preventDefault();\n const next = new Date(cell.date);\n next.setDate(next.getDate() + delta);\n moveFocusTo(next);\n}\n\nfunction moveFocusTo(date: Date) {\n if (!isSameMonth(date, panelDate.value)) {\n panelDate.value = new Date(date.getFullYear(), date.getMonth(), 1);\n emit('panelChange', panelDate.value, activeMode.value);\n }\n focusedDate.value = stripTime(date);\n // Wait one tick so the rendered cell with new tabindex=0 can be focused.\n queueMicrotask(() => {\n const sel = `[data-b-calendar-date=\"${formatISODate(date)}\"]`;\n const el = gridRef.value?.querySelector<HTMLElement>(sel);\n el?.focus();\n });\n}\n\nfunction formatISODate(d: Date): string {\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;\n}\n\nfunction isCellFocusable(cell: DateCell): boolean {\n // Roving tabindex anchor: focusedDate || selectedDate || today (clamped to current panel).\n const anchor = focusedDate.value ?? selectedDate.value ?? today.value;\n if (isSameMonth(anchor, panelDate.value)) {\n return isSameDay(cell.date, anchor) && !cell.outside;\n }\n // Anchor is in another month: pick first non-outside day of the panel.\n const firstOfMonth = new Date(panelDate.value.getFullYear(), panelDate.value.getMonth(), 1);\n return isSameDay(cell.date, firstOfMonth) && !cell.outside;\n}\n\n// ─────────────────────────────────────────────\n// Header scope (for custom slot)\n// ─────────────────────────────────────────────\nconst headerScope = computed<BCalendarHeaderSlotScope>(() => ({\n value: panelDate.value,\n mode: activeMode.value,\n onTypeChange: setMode,\n onChange: setPanelDate,\n}));\n\n// ─────────────────────────────────────────────\n// Cell scope helper\n// ─────────────────────────────────────────────\nfunction dateCellScope(cell: DateCell): BCalendarCellSlotScope {\n return {\n date: cell.date,\n selected: !!selectedDate.value && isSameDay(cell.date, selectedDate.value),\n today: isSameDay(cell.date, today.value),\n outside: cell.outside,\n disabled: isDateDisabled(cell.date),\n };\n}\n\nfunction monthCellScope(year: number, month: number): BCalendarCellSlotScope {\n const date = new Date(year, month, 1);\n return {\n date,\n selected:\n !!selectedDate.value &&\n selectedDate.value.getFullYear() === year &&\n selectedDate.value.getMonth() === month,\n today: today.value.getFullYear() === year && today.value.getMonth() === month,\n outside: false,\n disabled: isMonthDisabled(year, month),\n };\n}\n\n// ─────────────────────────────────────────────\n// Expose\n// ─────────────────────────────────────────────\ndefineExpose({\n /** Programmatically select a date. */\n select: (d: Date) => selectDate(d),\n /** Programmatically change the panel mode. */\n setMode,\n /** Move the panel to a specific date without selecting. */\n goTo: setPanelDate,\n});\n</script>\n\n<template>\n <section\n :id=\"ROOT_ID\"\n class=\"b-calendar\"\n :class=\"{\n 'b-calendar--fullscreen': fullscreen,\n 'b-calendar--mini': !fullscreen,\n 'b-calendar--mode-month': activeMode === 'month',\n 'b-calendar--mode-year': activeMode === 'year',\n 'b-calendar--show-week': showWeek,\n }\"\n role=\"region\"\n :aria-label=\"ariaLabel\"\n >\n <!-- ── Header ── -->\n <header v-if=\"$slots.header\" class=\"b-calendar__header\">\n <slot name=\"header\" v-bind=\"headerScope\" />\n </header>\n <header v-else class=\"b-calendar__header\">\n <div class=\"b-calendar__header-controls\">\n <label class=\"b-calendar__sr-only\" :for=\"`${ROOT_ID}-year`\">Year</label>\n <span class=\"b-calendar__select-wrapper\">\n <select\n :id=\"`${ROOT_ID}-year`\"\n class=\"b-calendar__select b-calendar__select--year\"\n :value=\"panelYear\"\n aria-label=\"Select year\"\n @change=\"onYearSelectChange\"\n >\n <option v-for=\"y in headerYearOptions\" :key=\"y\" :value=\"y\">\n {{ y }}\n </option>\n </select>\n </span>\n\n <template v-if=\"activeMode === 'month'\">\n <label class=\"b-calendar__sr-only\" :for=\"`${ROOT_ID}-month`\">Month</label>\n <span class=\"b-calendar__select-wrapper\">\n <select\n :id=\"`${ROOT_ID}-month`\"\n class=\"b-calendar__select b-calendar__select--month\"\n :value=\"panelMonth\"\n aria-label=\"Select month\"\n @change=\"onMonthSelectChange\"\n >\n <option\n v-for=\"opt in headerMonthOptions\"\n :key=\"opt.value\"\n :value=\"opt.value\"\n :disabled=\"opt.disabled\"\n >\n {{ opt.label }}\n </option>\n </select>\n </span>\n </template>\n\n <div\n class=\"b-calendar__mode-switch\"\n role=\"radiogroup\"\n aria-label=\"Calendar mode\"\n >\n <label\n class=\"b-calendar__mode-option\"\n :class=\"{ 'b-calendar__mode-option--active': activeMode === 'month' }\"\n >\n <input\n type=\"radio\"\n :name=\"`${ROOT_ID}-mode`\"\n value=\"month\"\n :checked=\"activeMode === 'month'\"\n class=\"b-calendar__sr-only\"\n @change=\"onModeChange\"\n />\n <span>Month</span>\n </label>\n <label\n class=\"b-calendar__mode-option\"\n :class=\"{ 'b-calendar__mode-option--active': activeMode === 'year' }\"\n >\n <input\n type=\"radio\"\n :name=\"`${ROOT_ID}-mode`\"\n value=\"year\"\n :checked=\"activeMode === 'year'\"\n class=\"b-calendar__sr-only\"\n @change=\"onModeChange\"\n />\n <span>Year</span>\n </label>\n </div>\n </div>\n <button\n type=\"button\"\n class=\"b-calendar__today-btn\"\n @click=\"selectToday\"\n >\n {{ todayLabel }}\n </button>\n </header>\n\n <!-- ── Body ── -->\n <div class=\"b-calendar__body\">\n <!-- Month grid -->\n <table\n v-if=\"activeMode === 'month'\"\n ref=\"gridRef\"\n class=\"b-calendar__table\"\n role=\"grid\"\n :aria-label=\"`${ariaLabel} dates`\"\n >\n <thead>\n <tr role=\"row\">\n <th\n v-if=\"showWeek\"\n class=\"b-calendar__weekday b-calendar__weekday--week\"\n scope=\"col\"\n aria-label=\"Week\"\n >\n #\n </th>\n <th\n v-for=\"day in weekdayLabels\"\n :key=\"day\"\n class=\"b-calendar__weekday\"\n scope=\"col\"\n :aria-label=\"day\"\n >\n {{ day }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(row, ri) in monthRows\" :key=\"ri\" role=\"row\">\n <td\n v-if=\"showWeek\"\n class=\"b-calendar__week-number\"\n role=\"rowheader\"\n >\n {{ getWeekNumber(row[0].date) }}\n </td>\n <td\n v-for=\"cell in row\"\n :key=\"formatISODate(cell.date)\"\n class=\"b-calendar__cell\"\n :class=\"{\n 'b-calendar__cell--outside': cell.outside,\n 'b-calendar__cell--today': isSameDay(cell.date, today),\n 'b-calendar__cell--selected': dateCellScope(cell).selected,\n 'b-calendar__cell--disabled': isDateDisabled(cell.date),\n }\"\n role=\"gridcell\"\n :aria-selected=\"dateCellScope(cell).selected || undefined\"\n :aria-disabled=\"isDateDisabled(cell.date) || undefined\"\n :aria-current=\"isSameDay(cell.date, today) ? 'date' : undefined\"\n :data-b-calendar-date=\"formatISODate(cell.date)\"\n :tabindex=\"isCellFocusable(cell) ? 0 : -1\"\n @click=\"!isDateDisabled(cell.date) && selectDate(cell.date)\"\n @keydown=\"onCellKeydown($event, cell)\"\n >\n <slot\n v-if=\"$slots.dateFullCell\"\n name=\"dateFullCell\"\n v-bind=\"dateCellScope(cell)\"\n />\n <div v-else class=\"b-calendar__date\">\n <div class=\"b-calendar__date-value\">{{ cell.date.getDate() }}</div>\n <div class=\"b-calendar__date-content\">\n <slot\n v-if=\"$slots.dateCell\"\n name=\"dateCell\"\n v-bind=\"dateCellScope(cell)\"\n />\n <template v-else-if=\"events && getEventsForDate(cell.date).length > 0\">\n <ul class=\"b-calendar__events\">\n <li\n v-for=\"(ev, idx) in getEventsForDate(cell.date).slice(0, maxEventsVisible)\"\n :key=\"idx\"\n class=\"b-calendar__event\"\n :class=\"`b-calendar__event--${ev.type ?? 'default'}`\"\n :title=\"ev.title\"\n >\n <span class=\"b-calendar__event-dot\" aria-hidden=\"true\" />\n <span class=\"b-calendar__event-title\">{{ ev.title }}</span>\n </li>\n </ul>\n <div\n v-if=\"getEventsForDate(cell.date).length > maxEventsVisible\"\n class=\"b-calendar__events-more\"\n >\n +{{ getEventsForDate(cell.date).length - maxEventsVisible }} more\n </div>\n </template>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n\n <!-- Year grid -->\n <table\n v-else\n class=\"b-calendar__table b-calendar__table--year\"\n role=\"grid\"\n :aria-label=\"`${ariaLabel} months`\"\n >\n <tbody>\n <tr v-for=\"rowIdx in 4\" :key=\"rowIdx\" role=\"row\">\n <td\n v-for=\"m in yearGrid.slice((rowIdx - 1) * 3, rowIdx * 3)\"\n :key=\"m.month\"\n class=\"b-calendar__cell b-calendar__cell--month\"\n :class=\"{\n 'b-calendar__cell--selected': monthCellScope(m.year, m.month).selected,\n 'b-calendar__cell--today': monthCellScope(m.year, m.month).today,\n 'b-calendar__cell--disabled': isMonthDisabled(m.year, m.month),\n }\"\n role=\"gridcell\"\n :aria-selected=\"monthCellScope(m.year, m.month).selected || undefined\"\n :aria-disabled=\"isMonthDisabled(m.year, m.month) || undefined\"\n :tabindex=\"\n monthCellScope(m.year, m.month).selected ||\n (!selectedDate && m.month === today.getMonth() && m.year === today.getFullYear())\n ? 0\n : -1\n \"\n @click=\"!isMonthDisabled(m.year, m.month) && selectMonth(m.year, m.month)\"\n @keydown.enter.prevent=\"selectMonth(m.year, m.month)\"\n @keydown.space.prevent=\"selectMonth(m.year, m.month)\"\n >\n <slot\n v-if=\"$slots.monthFullCell\"\n name=\"monthFullCell\"\n v-bind=\"monthCellScope(m.year, m.month)\"\n />\n <div v-else class=\"b-calendar__month\">\n <div class=\"b-calendar__month-value\">{{ monthLabelsShort[m.month] }}</div>\n <div class=\"b-calendar__month-content\">\n <slot name=\"monthCell\" v-bind=\"monthCellScope(m.year, m.month)\" />\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- ── Live region for screen readers ── -->\n <div class=\"b-calendar__sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {{ activeMode === 'month' ? monthLabels[panelMonth] : '' }} {{ panelYear }}\n </div>\n\n <!-- ── Event details modal ── -->\n <BModal\n v-if=\"showEventDetails && events\"\n v-model=\"eventModalOpen\"\n class=\"b-calendar__modal\"\n >\n <slot\n v-if=\"$slots.eventDetails && modalDate\"\n name=\"eventDetails\"\n :date=\"modalDate\"\n :events=\"modalEvents\"\n :close=\"closeEventModal\"\n />\n <div v-else-if=\"modalDate\" class=\"b-calendar__modal-body\">\n <header class=\"b-calendar__modal-header\">\n <h3 class=\"b-calendar__modal-title\">{{ modalDateLabel }}</h3>\n <button\n type=\"button\"\n class=\"b-calendar__modal-close\"\n aria-label=\"Close\"\n @click=\"closeEventModal\"\n >\n ×\n </button>\n </header>\n <ul v-if=\"modalEvents.length > 0\" class=\"b-calendar__modal-events\">\n <li\n v-for=\"(ev, idx) in modalEvents\"\n :key=\"idx\"\n class=\"b-calendar__modal-event\"\n :class=\"`b-calendar__modal-event--${ev.type ?? 'default'}`\"\n >\n <span class=\"b-calendar__event-dot\" aria-hidden=\"true\" />\n <div class=\"b-calendar__modal-event-text\">\n <div class=\"b-calendar__modal-event-title\">{{ ev.title }}</div>\n <div\n v-if=\"ev.description\"\n class=\"b-calendar__modal-event-description\"\n >\n {{ ev.description }}\n </div>\n </div>\n </li>\n </ul>\n <p v-else class=\"b-calendar__modal-empty\">No events.</p>\n </div>\n </BModal>\n </section>\n</template>\n\n<style>\n/* ─────────────────────────────────────────────\n BCalendar - tokens scoped to .b-calendar\n ───────────────────────────────────────────── */\n.b-calendar {\n /* ── AntD-aligned tokens ── */\n --b-calendar-full-bg: oklch(100% 0 0);\n --b-calendar-full-panel-bg: oklch(100% 0 0);\n --b-calendar-item-active-bg: oklch(95% 0.04 250);\n --b-calendar-mini-content-height: 256px;\n --b-calendar-month-control-width: 70px;\n --b-calendar-year-control-width: 80px;\n\n /* ── Local extras ── */\n --b-calendar-text-color: oklch(20% 0.005 260 / 88%);\n --b-calendar-text-color-secondary: oklch(45% 0.005 260);\n --b-calendar-text-color-disabled: oklch(50% 0.005 260);\n --b-calendar-border-color: oklch(85% 0.005 260);\n --b-calendar-border-radius: 8px;\n --b-calendar-cell-radius: 4px;\n --b-calendar-primary-color: oklch(54.6% 0.245 262.881);\n --b-calendar-primary-color-text: oklch(100% 0 0);\n --b-calendar-cell-hover-bg: oklch(95% 0.005 260);\n --b-calendar-cell-disabled-bg: oklch(96% 0.002 260);\n --b-calendar-padding: 16px;\n --b-calendar-font-size: 14px;\n --b-calendar-motion-duration: 200ms;\n --b-calendar-focus-ring: 0 0 0 2px oklch(54.6% 0.245 262.881 / 35%);\n\n /* ── Event tokens (WCAG-friendly defaults) ── */\n --b-calendar-event-color-default: oklch(45% 0.005 260);\n --b-calendar-event-color-success: oklch(48% 0.16 145);\n --b-calendar-event-color-info: oklch(50% 0.18 250);\n --b-calendar-event-color-warning: oklch(58% 0.16 75);\n --b-calendar-event-color-error: oklch(48% 0.21 25);\n\n position: relative;\n display: block;\n box-sizing: border-box;\n width: 100%;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n font-size: var(--b-calendar-font-size);\n color: var(--b-calendar-text-color);\n background: var(--b-calendar-full-bg);\n border-radius: var(--b-calendar-border-radius);\n}\n\n.b-calendar--fullscreen {\n padding: var(--b-calendar-padding);\n}\n\n.b-calendar--mini {\n padding: 8px;\n border: 1px solid var(--b-calendar-border-color);\n}\n\n/* ── Header ── */\n.b-calendar__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 0 0 12px;\n flex-wrap: wrap;\n}\n\n.b-calendar__header-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.b-calendar__select-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n}\n\n.b-calendar__select-wrapper::after {\n content: '';\n position: absolute;\n right: 8px;\n top: 50%;\n width: 8px;\n height: 8px;\n border: solid var(--b-calendar-text-color-secondary);\n border-width: 0 1.5px 1.5px 0;\n transform: translateY(-75%) rotate(45deg);\n pointer-events: none;\n}\n\n.b-calendar__select {\n appearance: none;\n -webkit-appearance: none;\n height: 28px;\n padding: 0 24px 0 11px;\n border: 1px solid var(--b-calendar-border-color);\n border-radius: var(--b-calendar-cell-radius);\n background-color: var(--b-calendar-full-bg);\n color: inherit;\n font: inherit;\n cursor: pointer;\n transition:\n border-color var(--b-calendar-motion-duration),\n background-color var(--b-calendar-motion-duration);\n}\n\n.b-calendar__select--year {\n min-width: var(--b-calendar-year-control-width);\n}\n\n.b-calendar__select--month {\n min-width: var(--b-calendar-month-control-width);\n}\n\n.b-calendar__select:hover {\n border-color: var(--b-calendar-primary-color);\n}\n\n.b-calendar__select:focus-visible {\n outline: none;\n border-color: var(--b-calendar-primary-color);\n box-shadow: var(--b-calendar-focus-ring);\n}\n\n.b-calendar__mode-switch {\n display: inline-flex;\n gap: 4px;\n}\n\n.b-calendar__mode-option {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 28px;\n padding: 0 14px;\n border: 1px solid var(--b-calendar-border-color);\n border-radius: var(--b-calendar-cell-radius);\n background: transparent;\n cursor: pointer;\n transition:\n border-color var(--b-calendar-motion-duration),\n color var(--b-calendar-motion-duration);\n}\n\n.b-calendar__mode-option:hover {\n color: var(--b-calendar-primary-color);\n border-color: var(--b-calendar-primary-color);\n}\n\n.b-calendar__mode-option--active {\n border-color: var(--b-calendar-primary-color);\n color: var(--b-calendar-primary-color);\n}\n\n.b-calendar__mode-option:has(input:focus-visible) {\n box-shadow: var(--b-calendar-focus-ring);\n}\n\n.b-calendar__today-btn {\n height: 28px;\n padding: 0 12px;\n border: 1px solid var(--b-calendar-border-color);\n border-radius: var(--b-calendar-cell-radius);\n background: transparent;\n color: inherit;\n font: inherit;\n cursor: pointer;\n transition:\n background var(--b-calendar-motion-duration),\n color var(--b-calendar-motion-duration);\n}\n\n.b-calendar__today-btn:hover {\n color: var(--b-calendar-primary-color);\n border-color: var(--b-calendar-primary-color);\n}\n\n.b-calendar__today-btn:focus-visible {\n outline: none;\n border-color: var(--b-calendar-primary-color);\n box-shadow: var(--b-calendar-focus-ring);\n}\n\n/* ── Body / table ── */\n.b-calendar__body {\n background: var(--b-calendar-full-panel-bg);\n}\n\n.b-calendar--mini .b-calendar__body {\n min-height: var(--b-calendar-mini-content-height);\n}\n\n.b-calendar__table {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n table-layout: fixed;\n}\n\n.b-calendar__weekday {\n padding: 8px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--b-calendar-text-color-secondary);\n text-align: right;\n}\n\n.b-calendar--mini .b-calendar__weekday {\n text-align: center;\n padding: 8px 0;\n}\n\n.b-calendar__weekday--week {\n width: 32px;\n text-align: center;\n}\n\n.b-calendar__week-number {\n width: 32px;\n text-align: center;\n font-size: 12px;\n color: var(--b-calendar-text-color-disabled);\n vertical-align: top;\n padding-top: 8px;\n}\n\n.b-calendar__cell {\n padding: 0;\n vertical-align: top;\n cursor: pointer;\n}\n\n.b-calendar--mini .b-calendar__cell {\n text-align: center;\n padding: 0;\n}\n\n.b-calendar__cell:focus-visible {\n outline: none;\n}\n\n.b-calendar__cell:focus-visible .b-calendar__date,\n.b-calendar__cell:focus-visible .b-calendar__month {\n box-shadow: var(--b-calendar-focus-ring);\n border-radius: var(--b-calendar-cell-radius);\n}\n\n.b-calendar__cell--outside .b-calendar__date-value {\n color: var(--b-calendar-text-color-disabled);\n}\n\n.b-calendar__cell--today .b-calendar__date,\n.b-calendar__cell--today .b-calendar__month {\n border-top-color: var(--b-calendar-primary-color);\n}\n\n.b-calendar__cell--selected .b-calendar__date,\n.b-calendar__cell--selected .b-calendar__month {\n border-top-color: var(--b-calendar-primary-color);\n background: var(--b-calendar-item-active-bg);\n}\n\n.b-calendar__cell--selected .b-calendar__date-value,\n.b-calendar__cell--selected .b-calendar__month-value {\n color: var(--b-calendar-primary-color);\n font-weight: 600;\n}\n\n.b-calendar__cell--disabled {\n cursor: not-allowed;\n}\n\n.b-calendar__cell--disabled .b-calendar__date,\n.b-calendar__cell--disabled .b-calendar__month {\n background: var(--b-calendar-cell-disabled-bg);\n}\n\n.b-calendar__cell--disabled .b-calendar__date-value,\n.b-calendar__cell--disabled .b-calendar__month-value {\n color: var(--b-calendar-text-color-disabled);\n}\n\n.b-calendar__date {\n height: 116px;\n margin: 0 4px;\n padding: 4px 8px 0;\n display: flex;\n flex-direction: column;\n border-top: 2px solid var(--b-calendar-border-color);\n overflow: hidden;\n transition:\n border-color var(--b-calendar-motion-duration),\n background var(--b-calendar-motion-duration);\n}\n\n.b-calendar__cell:hover:not(.b-calendar__cell--disabled) .b-calendar__date,\n.b-calendar__cell:hover:not(.b-calendar__cell--disabled) .b-calendar__month {\n background: var(--b-calendar-cell-hover-bg);\n}\n\n.b-calendar--mini .b-calendar__date {\n min-height: 24px;\n height: auto;\n margin: 0;\n padding: 4px 0;\n border-top: none;\n align-items: center;\n overflow: visible;\n}\n\n.b-calendar__date-value {\n text-align: right;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.5;\n margin-bottom: 2px;\n}\n\n.b-calendar--mini .b-calendar__date-value {\n text-align: center;\n}\n\n.b-calendar__date-content {\n flex: 1;\n font-size: 12px;\n color: var(--b-calendar-text-color-secondary);\n overflow: hidden;\n min-height: 0;\n}\n\n.b-calendar--mini .b-calendar__date-content {\n display: none;\n}\n\n/* ── Year (month-grid) view ── */\n.b-calendar__table--year .b-calendar__cell--month {\n padding: 0;\n text-align: left;\n}\n\n.b-calendar__month {\n min-height: 116px;\n margin: 0 4px;\n padding: 4px 8px 0;\n display: flex;\n flex-direction: column;\n border-top: 2px solid var(--b-calendar-border-color);\n transition:\n border-color var(--b-calendar-motion-duration),\n background var(--b-calendar-motion-duration);\n}\n\n.b-calendar--mini .b-calendar__month {\n min-height: 36px;\n margin: 0;\n padding: 8px 0;\n border-top: none;\n align-items: center;\n}\n\n.b-calendar__month-value {\n text-align: right;\n font-size: 14px;\n font-weight: 500;\n}\n\n.b-calendar--mini .b-calendar__month-value {\n text-align: center;\n}\n\n.b-calendar__month-content {\n flex: 1;\n font-size: 12px;\n color: var(--b-calendar-text-color-secondary);\n}\n\n.b-calendar--mini .b-calendar__month-content {\n display: none;\n}\n\n/* ── Visually hidden helper ── */\n.b-calendar__sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* ── Events inside day cells ── */\n.b-calendar__events {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.b-calendar__event {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 1px 4px;\n font-size: 12px;\n line-height: 1.4;\n border-radius: 3px;\n color: var(--b-calendar-text-color);\n background: oklch(95% 0.005 260);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.b-calendar__event-dot {\n flex: 0 0 auto;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--b-event-color, var(--b-calendar-event-color-default));\n}\n\n.b-calendar__event--default {\n --b-event-color: var(--b-calendar-event-color-default);\n}\n\n.b-calendar__event--success {\n --b-event-color: var(--b-calendar-event-color-success);\n}\n\n.b-calendar__event--info {\n --b-event-color: var(--b-calendar-event-color-info);\n}\n\n.b-calendar__event--warning {\n --b-event-color: var(--b-calendar-event-color-warning);\n}\n\n.b-calendar__event--error {\n --b-event-color: var(--b-calendar-event-color-error);\n}\n\n.b-calendar__event-title {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.b-calendar__events-more {\n margin-top: 2px;\n padding: 0 4px;\n font-size: 12px;\n font-weight: 500;\n color: var(--b-calendar-text-color-secondary);\n}\n\n/* ── Event details modal ── */\n.b-calendar__modal-body {\n min-width: 320px;\n max-width: 480px;\n color: var(--b-calendar-text-color);\n}\n\n.b-calendar__modal-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.b-calendar__modal-title {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.b-calendar__modal-close {\n width: 28px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: var(--b-calendar-cell-radius);\n font-size: 20px;\n line-height: 1;\n cursor: pointer;\n color: inherit;\n transition: background var(--b-calendar-motion-duration);\n}\n\n.b-calendar__modal-close:hover {\n background: var(--b-calendar-cell-hover-bg);\n}\n\n.b-calendar__modal-close:focus-visible {\n outline: none;\n box-shadow: var(--b-calendar-focus-ring);\n}\n\n.b-calendar__modal-events {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.b-calendar__modal-event {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 8px 10px;\n border-radius: var(--b-calendar-cell-radius);\n background: oklch(97% 0.003 260);\n}\n\n.b-calendar__modal-event--default {\n --b-event-color: var(--b-calendar-event-color-default);\n}\n\n.b-calendar__modal-event--success {\n --b-event-color: var(--b-calendar-event-color-success);\n}\n\n.b-calendar__modal-event--info {\n --b-event-color: var(--b-calendar-event-color-info);\n}\n\n.b-calendar__modal-event--warning {\n --b-event-color: var(--b-calendar-event-color-warning);\n}\n\n.b-calendar__modal-event--error {\n --b-event-color: var(--b-calendar-event-color-error);\n}\n\n.b-calendar__modal-event .b-calendar__event-dot {\n width: 10px;\n height: 10px;\n margin-top: 6px;\n}\n\n.b-calendar__modal-event-text {\n flex: 1;\n min-width: 0;\n}\n\n.b-calendar__modal-event-title {\n font-weight: 600;\n color: var(--b-event-color, inherit);\n}\n\n.b-calendar__modal-event-description {\n margin-top: 2px;\n color: var(--b-calendar-text-color-secondary);\n font-size: 13px;\n line-height: 1.5;\n}\n\n.b-calendar__modal-empty {\n margin: 0;\n color: var(--b-calendar-text-color-secondary);\n}\n\n/* ── Dark mode ── */\n[data-prefers-color='dark'] .b-calendar {\n --b-calendar-full-bg: oklch(20% 0.005 260);\n --b-calendar-full-panel-bg: oklch(20% 0.005 260);\n --b-calendar-item-active-bg: oklch(35% 0.06 262);\n --b-calendar-text-color: oklch(95% 0 0 / 88%);\n --b-calendar-text-color-secondary: oklch(95% 0 0 / 65%);\n --b-calendar-text-color-disabled: oklch(95% 0 0 / 50%);\n --b-calendar-border-color: oklch(35% 0.005 260);\n --b-calendar-cell-hover-bg: oklch(28% 0.005 260);\n --b-calendar-cell-disabled-bg: oklch(24% 0.005 260);\n --b-calendar-primary-color: oklch(58% 0.22 262);\n --b-calendar-event-color-default: oklch(75% 0.005 260);\n --b-calendar-event-color-success: oklch(72% 0.18 145);\n --b-calendar-event-color-info: oklch(72% 0.18 250);\n --b-calendar-event-color-warning: oklch(80% 0.16 75);\n --b-calendar-event-color-error: oklch(70% 0.21 25);\n}\n\n[data-prefers-color='dark'] .b-calendar__event {\n background: oklch(28% 0.005 260);\n}\n\n[data-prefers-color='dark'] .b-calendar__modal-event {\n background: oklch(25% 0.005 260);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-calendar {\n --b-calendar-full-bg: oklch(20% 0.005 260);\n --b-calendar-full-panel-bg: oklch(20% 0.005 260);\n --b-calendar-item-active-bg: oklch(35% 0.06 262);\n --b-calendar-text-color: oklch(95% 0 0 / 88%);\n --b-calendar-text-color-secondary: oklch(95% 0 0 / 45%);\n --b-calendar-text-color-disabled: oklch(95% 0 0 / 25%);\n --b-calendar-border-color: oklch(35% 0.005 260);\n --b-calendar-cell-hover-bg: oklch(28% 0.005 260);\n --b-calendar-cell-disabled-bg: oklch(24% 0.005 260);\n --b-calendar-primary-color: oklch(58% 0.22 262);\n }\n}\n\n/* ── Reduced motion ── */\n@media (prefers-reduced-motion: reduce) {\n .b-calendar,\n .b-calendar__select,\n .b-calendar__cell,\n .b-calendar__mode-option,\n .b-calendar__today-btn {\n transition: none !important;\n }\n}\n</style>\n"],"mappings":"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"}
|