@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-system164.js
CHANGED
|
@@ -1,72 +1,61 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import t from "./design-
|
|
3
|
-
import n from "
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { useComponentId as e } from "./design-system10.js";
|
|
2
|
+
import { B_RADIO_GROUP_KEY as t } from "./design-system163.js";
|
|
3
|
+
import { computed as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, defineComponent as o, inject as s, mergeModels as c, normalizeClass as l, openBlock as u, renderSlot as d, useModel as f } from "vue";
|
|
4
|
+
//#region src/components/BRadio/BRadio.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var p = ["for"], m = [
|
|
6
|
+
"id",
|
|
7
|
+
"checked",
|
|
8
|
+
"disabled",
|
|
9
|
+
"name",
|
|
10
|
+
"value"
|
|
11
|
+
], h = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "b-radio__label"
|
|
14
|
+
}, g = /* @__PURE__ */ o({
|
|
15
|
+
__name: "BRadio",
|
|
16
|
+
props: /* @__PURE__ */ c({
|
|
17
|
+
id: { default: "" },
|
|
9
18
|
disabled: {
|
|
10
19
|
type: Boolean,
|
|
11
20
|
default: !1
|
|
12
21
|
},
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
buttonStyle: { default: "outline" },
|
|
18
|
-
block: {
|
|
22
|
+
value: { default: "" },
|
|
23
|
+
name: { default: "" }
|
|
24
|
+
}, {
|
|
25
|
+
modelValue: {
|
|
19
26
|
type: Boolean,
|
|
20
27
|
default: !1
|
|
21
|
-
}
|
|
22
|
-
}, {
|
|
23
|
-
modelValue: {},
|
|
28
|
+
},
|
|
24
29
|
modelModifiers: {}
|
|
25
30
|
}),
|
|
26
|
-
emits: /* @__PURE__ */
|
|
27
|
-
setup(
|
|
28
|
-
let
|
|
29
|
-
label: String(e),
|
|
30
|
-
value: e
|
|
31
|
-
} : e) : []);
|
|
31
|
+
emits: /* @__PURE__ */ c(["change"], ["update:modelValue"]),
|
|
32
|
+
setup(o, { emit: c }) {
|
|
33
|
+
let g = f(o, "modelValue"), _ = c, v = s(t, null), y = n(() => o.disabled || v?.disabled.value || !1), b = n(() => o.name || v?.name.value || ""), x = n(() => v ? v.modelValue.value === o.value : g.value), { componentUID: S } = e(), C = n(() => o.id || `b-radio-${S.value}`);
|
|
32
34
|
function w(e) {
|
|
33
|
-
|
|
35
|
+
y.value || (v ? v.setValue(o.value) : g.value = !0, _("change", !0, e));
|
|
34
36
|
}
|
|
35
|
-
|
|
36
|
-
disabled:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"b-radio-group--block b:flex b:w-full": c.block,
|
|
55
|
-
"b:gap-2": c.optionType !== "button",
|
|
56
|
-
"b:gap-0": c.optionType === "button"
|
|
57
|
-
}]),
|
|
58
|
-
role: "radiogroup"
|
|
59
|
-
}, [C.value.length > 0 ? (d(!0), o(r, { key: 0 }, m(C.value, (e) => (d(), a(g(A.value), {
|
|
60
|
-
key: e.value,
|
|
61
|
-
value: e.value,
|
|
62
|
-
disabled: e.disabled
|
|
63
|
-
}, {
|
|
64
|
-
default: b(() => [s(_(e.label), 1)]),
|
|
65
|
-
_: 2
|
|
66
|
-
}, 1032, ["value", "disabled"]))), 128)) : h(e.$slots, "default", { key: 1 }, void 0, !0)], 2));
|
|
37
|
+
return (e, t) => (u(), i("label", {
|
|
38
|
+
class: l(["b-radio b:inline-flex b:cursor-pointer b:items-center b:gap-2 b:leading-none b:select-none", { "b-radio--disabled b:cursor-not-allowed b:opacity-50": y.value }]),
|
|
39
|
+
for: C.value
|
|
40
|
+
}, [a("span", { class: l(["b-radio__indicator b:relative b:inline-flex b:shrink-0 b:items-center b:justify-center", {
|
|
41
|
+
"b-radio__indicator--checked": x.value,
|
|
42
|
+
"b-radio__indicator--disabled": y.value
|
|
43
|
+
}]) }, [a("input", {
|
|
44
|
+
id: C.value,
|
|
45
|
+
type: "radio",
|
|
46
|
+
class: "b-radio__input",
|
|
47
|
+
checked: x.value,
|
|
48
|
+
disabled: y.value,
|
|
49
|
+
name: b.value,
|
|
50
|
+
value: o.value,
|
|
51
|
+
onChange: w
|
|
52
|
+
}, null, 40, m), t[0] ||= a("span", {
|
|
53
|
+
class: "b-radio__inner",
|
|
54
|
+
"aria-hidden": "true"
|
|
55
|
+
}, null, -1)], 2), e.$slots.default ? (u(), i("span", h, [d(e.$slots, "default", {}, void 0, !0)])) : r("", !0)], 10, p));
|
|
67
56
|
}
|
|
68
57
|
});
|
|
69
58
|
//#endregion
|
|
70
|
-
export {
|
|
59
|
+
export { g as default };
|
|
71
60
|
|
|
72
61
|
//# sourceMappingURL=design-system164.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system164.js","names":[],"sources":["../src/components/BRadio/
|
|
1
|
+
{"version":3,"file":"design-system164.js","names":["$slots"],"sources":["../src/components/BRadio/BRadio.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio input. */\n id?: string;\n /** Whether the radio is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio b:inline-flex b:cursor-pointer b:items-center b:gap-2 b:leading-none b:select-none\"\n :class=\"{ 'b-radio--disabled b:cursor-not-allowed b:opacity-50': isDisabled }\"\n :for=\"inputId\"\n >\n <span\n class=\"b-radio__indicator b:relative b:inline-flex b:shrink-0 b:items-center b:justify-center\"\n :class=\"{\n 'b-radio__indicator--checked': isChecked,\n 'b-radio__indicator--disabled': isDisabled,\n }\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio__inner\" aria-hidden=\"true\" />\n </span>\n <span v-if=\"$slots.default\" class=\"b-radio__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio {\n --b-radio-size: 16px;\n --b-radio-dot-size: 8px;\n --b-radio-color-primary: #1677ff;\n --b-radio-color-primary-hover: #4096ff;\n --b-radio-color-border: #d9d9d9;\n --b-radio-color-bg-container: #ffffff;\n --b-radio-color-bg-container-disabled: rgba(0, 0, 0, 0.04);\n --b-radio-color-text-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-color-border-disabled: #d9d9d9;\n --b-radio-dot-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-border-width: 1px;\n --b-radio-font-size: 14px;\n --b-radio-line-height: 1.5714;\n --b-radio-wrapper-margin-inline-end: 8px;\n --b-radio-transition-duration: 0.2s;\n}\n\n[data-prefers-color='dark'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n }\n}\n\n.b-radio__label {\n font-size: var(--b-radio-font-size);\n line-height: var(--b-radio-line-height);\n color: inherit;\n}\n\n.b-radio--disabled .b-radio__label {\n color: var(--b-radio-color-text-disabled);\n}\n\n.b-radio__indicator {\n width: var(--b-radio-size);\n height: var(--b-radio-size);\n}\n\n.b-radio__inner {\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: var(--b-radio-border-width) solid var(--b-radio-color-border);\n background-color: var(--b-radio-color-bg-container);\n transition:\n background-color var(--b-radio-transition-duration) ease-in-out,\n border-color var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Hover state */\n.b-radio:not(.b-radio--disabled):hover .b-radio__inner {\n border-color: var(--b-radio-color-primary-hover);\n}\n\n/* Checked state */\n.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-primary);\n}\n\n.b-radio__indicator--checked .b-radio__inner::after {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n width: var(--b-radio-dot-size);\n height: var(--b-radio-dot-size);\n background-color: var(--b-radio-color-primary);\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n transition:\n transform var(--b-radio-transition-duration) ease-in-out,\n opacity var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Disabled state */\n.b-radio__indicator--disabled .b-radio__inner {\n background-color: var(--b-radio-color-bg-container-disabled);\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner::after {\n background-color: var(--b-radio-dot-color-disabled);\n}\n\n.b-radio__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio--disabled .b-radio__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio__input:focus-visible + .b-radio__inner {\n outline: 2px solid var(--b-radio-color-primary);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio__inner,\n .b-radio__inner::after {\n transition: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,IAAM,IAAQ,EAAoB,GAAA,aAAoB,EAEhD,IAAO,GAMP,IAAQ,EAAkC,GAAmB,KAAK,EAElE,IAAa,QAAe,EAAA,YAAY,GAAO,SAAS,SAAS,GAAM,EACvE,IAAY,QAAe,EAAA,QAAQ,GAAO,KAAK,SAAS,GAAG,EAE3D,IAAY,QACZ,IACK,EAAM,WAAW,UAAU,EAAA,QAE7B,EAAM,MACb,EAII,EAAE,oBAAiB,GAAgB,EACnC,IAAU,QAAe,EAAA,MAAM,WAAW,EAAa,QAAQ;EAIrE,SAAS,EAAa,GAAc;AAC9B,KAAW,UAEX,IACF,EAAM,SAAS,EAAA,MAAM,GAErB,EAAM,QAAQ,IAEhB,EAAK,UAAU,IAAM,EAAM;;yBAM3B,EA2BQ,SAAA;GA1BN,OAAK,EAAA,CAAC,8FAA4F,EAAA,uDACjC,EAAA,OAAU,CAAA,CAAA;GAC1E,KAAK,EAAA;MAEN,EAkBO,QAAA,EAjBL,OAAK,EAAA,CAAC,0FAAwF;kCAC7C,EAAA;mCAAmD,EAAA;UAKpG,EASE,SAAA;GARC,IAAI,EAAA;GACL,MAAK;GACL,OAAM;GACL,SAAS,EAAA;GACT,UAAU,EAAA;GACV,MAAM,EAAA;GACN,OAAO,EAAA;GACP,UAAQ;4BAEX,EAAkD,QAAA;GAA5C,OAAM;GAAiB,eAAY;qBAE/BA,EAAAA,OAAO,WAAA,GAAA,EAAnB,EAEO,QAFP,GAEO,CADL,EAAQ,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA"}
|
package/dist/design-system166.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import e from "./design-system14.js";
|
|
2
2
|
import t from "./design-system164.js";
|
|
3
3
|
/* empty css */
|
|
4
|
-
//#region src/components/BRadio/
|
|
5
|
-
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-
|
|
4
|
+
//#region src/components/BRadio/BRadio.vue
|
|
5
|
+
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-58cd3e1a"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { n as default };
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system166.js","names":[],"sources":["../src/components/BRadio/
|
|
1
|
+
{"version":3,"file":"design-system166.js","names":[],"sources":["../src/components/BRadio/BRadio.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio input. */\n id?: string;\n /** Whether the radio is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio b:inline-flex b:cursor-pointer b:items-center b:gap-2 b:leading-none b:select-none\"\n :class=\"{ 'b-radio--disabled b:cursor-not-allowed b:opacity-50': isDisabled }\"\n :for=\"inputId\"\n >\n <span\n class=\"b-radio__indicator b:relative b:inline-flex b:shrink-0 b:items-center b:justify-center\"\n :class=\"{\n 'b-radio__indicator--checked': isChecked,\n 'b-radio__indicator--disabled': isDisabled,\n }\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio__inner\" aria-hidden=\"true\" />\n </span>\n <span v-if=\"$slots.default\" class=\"b-radio__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio {\n --b-radio-size: 16px;\n --b-radio-dot-size: 8px;\n --b-radio-color-primary: #1677ff;\n --b-radio-color-primary-hover: #4096ff;\n --b-radio-color-border: #d9d9d9;\n --b-radio-color-bg-container: #ffffff;\n --b-radio-color-bg-container-disabled: rgba(0, 0, 0, 0.04);\n --b-radio-color-text-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-color-border-disabled: #d9d9d9;\n --b-radio-dot-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-border-width: 1px;\n --b-radio-font-size: 14px;\n --b-radio-line-height: 1.5714;\n --b-radio-wrapper-margin-inline-end: 8px;\n --b-radio-transition-duration: 0.2s;\n}\n\n[data-prefers-color='dark'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio {\n --b-radio-color-primary: #3c89e8;\n --b-radio-color-primary-hover: #65a9f3;\n --b-radio-color-border: #424242;\n --b-radio-color-bg-container: #141414;\n --b-radio-color-bg-container-disabled: rgba(255, 255, 255, 0.08);\n --b-radio-color-text-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-color-border-disabled: #424242;\n --b-radio-dot-color-disabled: rgba(255, 255, 255, 0.25);\n }\n}\n\n.b-radio__label {\n font-size: var(--b-radio-font-size);\n line-height: var(--b-radio-line-height);\n color: inherit;\n}\n\n.b-radio--disabled .b-radio__label {\n color: var(--b-radio-color-text-disabled);\n}\n\n.b-radio__indicator {\n width: var(--b-radio-size);\n height: var(--b-radio-size);\n}\n\n.b-radio__inner {\n position: absolute;\n inset: 0;\n border-radius: 50%;\n border: var(--b-radio-border-width) solid var(--b-radio-color-border);\n background-color: var(--b-radio-color-bg-container);\n transition:\n background-color var(--b-radio-transition-duration) ease-in-out,\n border-color var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Hover state */\n.b-radio:not(.b-radio--disabled):hover .b-radio__inner {\n border-color: var(--b-radio-color-primary-hover);\n}\n\n/* Checked state */\n.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-primary);\n}\n\n.b-radio__indicator--checked .b-radio__inner::after {\n content: '';\n position: absolute;\n display: block;\n top: 50%;\n left: 50%;\n width: var(--b-radio-dot-size);\n height: var(--b-radio-dot-size);\n background-color: var(--b-radio-color-primary);\n border-radius: 50%;\n transform: translate(-50%, -50%) scale(1);\n opacity: 1;\n transition:\n transform var(--b-radio-transition-duration) ease-in-out,\n opacity var(--b-radio-transition-duration) ease-in-out;\n}\n\n/* Disabled state */\n.b-radio__indicator--disabled .b-radio__inner {\n background-color: var(--b-radio-color-bg-container-disabled);\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner {\n border-color: var(--b-radio-color-border-disabled);\n}\n\n.b-radio__indicator--disabled.b-radio__indicator--checked .b-radio__inner::after {\n background-color: var(--b-radio-dot-color-disabled);\n}\n\n.b-radio__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio--disabled .b-radio__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio__input:focus-visible + .b-radio__inner {\n outline: 2px solid var(--b-radio-color-primary);\n outline-offset: 2px;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio__inner,\n .b-radio__inner::after {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
|
package/dist/design-system167.js
CHANGED
|
@@ -1,185 +1,59 @@
|
|
|
1
1
|
import { useComponentId as e } from "./design-system10.js";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
],
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
], _ = {
|
|
16
|
-
class: "b-rate__star-first",
|
|
17
|
-
"aria-hidden": "true"
|
|
18
|
-
}, v = ["data-character"], y = {
|
|
19
|
-
key: 1,
|
|
20
|
-
class: "b-rate__icon",
|
|
21
|
-
viewBox: "0 0 24 24",
|
|
22
|
-
fill: "currentColor",
|
|
23
|
-
"aria-hidden": "true"
|
|
24
|
-
}, b = {
|
|
25
|
-
class: "b-rate__star-second",
|
|
26
|
-
"aria-hidden": "true"
|
|
27
|
-
}, x = ["data-character"], S = {
|
|
28
|
-
key: 1,
|
|
29
|
-
class: "b-rate__icon",
|
|
30
|
-
viewBox: "0 0 24 24",
|
|
31
|
-
fill: "currentColor",
|
|
32
|
-
"aria-hidden": "true"
|
|
33
|
-
}, C = ["name", "value"], w = /* @__PURE__ */ a({
|
|
34
|
-
__name: "BRate",
|
|
35
|
-
props: /* @__PURE__ */ o({
|
|
36
|
-
allowClear: {
|
|
37
|
-
type: Boolean,
|
|
38
|
-
default: !0
|
|
39
|
-
},
|
|
40
|
-
allowHalf: {
|
|
41
|
-
type: Boolean,
|
|
42
|
-
default: !1
|
|
43
|
-
},
|
|
44
|
-
count: { default: 5 },
|
|
2
|
+
import { B_RADIO_GROUP_KEY as t } from "./design-system163.js";
|
|
3
|
+
import { computed as n, createElementBlock as r, createElementVNode as i, defineComponent as a, inject as o, mergeModels as s, normalizeClass as c, openBlock as l, renderSlot as u, useModel as d } from "vue";
|
|
4
|
+
//#region src/components/BRadio/BRadioButton.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var f = ["for"], p = [
|
|
6
|
+
"id",
|
|
7
|
+
"checked",
|
|
8
|
+
"disabled",
|
|
9
|
+
"name",
|
|
10
|
+
"value"
|
|
11
|
+
], m = { class: "b-radio-button__label" }, h = /* @__PURE__ */ a({
|
|
12
|
+
__name: "BRadioButton",
|
|
13
|
+
props: /* @__PURE__ */ s({
|
|
14
|
+
id: { default: "" },
|
|
45
15
|
disabled: {
|
|
46
16
|
type: Boolean,
|
|
47
17
|
default: !1
|
|
48
18
|
},
|
|
49
|
-
|
|
19
|
+
value: { default: "" },
|
|
20
|
+
name: { default: "" }
|
|
21
|
+
}, {
|
|
22
|
+
modelValue: {
|
|
50
23
|
type: Boolean,
|
|
51
|
-
default: !
|
|
24
|
+
default: !1
|
|
52
25
|
},
|
|
53
|
-
size: { default: "default" },
|
|
54
|
-
tooltips: { default: () => [] },
|
|
55
|
-
character: {}
|
|
56
|
-
}, {
|
|
57
|
-
modelValue: { default: 0 },
|
|
58
26
|
modelModifiers: {}
|
|
59
27
|
}),
|
|
60
|
-
emits: /* @__PURE__ */
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
});
|
|
74
|
-
return e;
|
|
75
|
-
});
|
|
76
|
-
function N(e) {
|
|
77
|
-
let t = j.value;
|
|
78
|
-
return e <= Math.floor(t) ? "full" : a.allowHalf && e - .5 <= t && e > t ? "half" : "zero";
|
|
79
|
-
}
|
|
80
|
-
function P(e, t) {
|
|
81
|
-
if (a.disabled) return;
|
|
82
|
-
let n = t && a.allowHalf ? e - .5 : e;
|
|
83
|
-
a.allowClear && n === T.value ? (T.value = 0, E("change", 0)) : (T.value = n, E("change", n));
|
|
84
|
-
}
|
|
85
|
-
function F(e, t) {
|
|
86
|
-
if (a.disabled) return;
|
|
87
|
-
let n = t.currentTarget.getBoundingClientRect(), r = t.clientX - n.left < n.width / 2, i;
|
|
88
|
-
i = a.allowHalf && r ? e - .5 : e, i !== O.value && (O.value = i, E("hover-change", i));
|
|
89
|
-
}
|
|
90
|
-
function I() {
|
|
91
|
-
a.disabled || (O.value = 0, E("hover-change", 0));
|
|
92
|
-
}
|
|
93
|
-
function L() {
|
|
94
|
-
k.value = !0, A.value = Math.ceil(T.value) || 1, E("focus");
|
|
95
|
-
}
|
|
96
|
-
function R() {
|
|
97
|
-
k.value = !1, A.value = 0, E("blur");
|
|
98
|
-
}
|
|
99
|
-
function z(e) {
|
|
100
|
-
if (a.disabled || !a.keyboard) return;
|
|
101
|
-
E("keydown", e);
|
|
102
|
-
let t = a.allowHalf ? .5 : 1;
|
|
103
|
-
switch (e.key) {
|
|
104
|
-
case "ArrowRight":
|
|
105
|
-
case "ArrowUp": {
|
|
106
|
-
e.preventDefault();
|
|
107
|
-
let n = Math.min(T.value + t, a.count);
|
|
108
|
-
T.value = n, A.value = Math.ceil(n), E("change", n);
|
|
109
|
-
break;
|
|
28
|
+
emits: /* @__PURE__ */ s(["change"], ["update:modelValue"]),
|
|
29
|
+
setup(a, { emit: s }) {
|
|
30
|
+
let h = d(a, "modelValue"), g = s, _ = o(t, null), v = n(() => a.disabled || _?.disabled.value || !1), y = n(() => a.name || _?.name.value || ""), b = n(() => _?.size.value || "middle"), x = n(() => _?.buttonStyle.value || "outline"), S = n(() => _ ? _.modelValue.value === a.value : h.value), { componentUID: C } = e(), w = n(() => a.id || `b-radio-button-${C.value}`);
|
|
31
|
+
function T(e) {
|
|
32
|
+
v.value || (_ ? _.setValue(a.value) : h.value = !0, g("change", !0, e));
|
|
33
|
+
}
|
|
34
|
+
return (e, t) => (l(), r("label", {
|
|
35
|
+
class: c(["b-radio-button b:relative b:inline-flex b:cursor-pointer b:items-center b:justify-center b:leading-none b:select-none", [
|
|
36
|
+
`b-radio-button--${b.value}`,
|
|
37
|
+
`b-radio-button--${x.value}`,
|
|
38
|
+
{
|
|
39
|
+
"b-radio-button--checked": S.value,
|
|
40
|
+
"b-radio-button--disabled b:cursor-not-allowed": v.value
|
|
110
41
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
let B = l(null);
|
|
125
|
-
function V() {
|
|
126
|
-
B.value?.focus();
|
|
127
|
-
}
|
|
128
|
-
function H() {
|
|
129
|
-
B.value?.blur();
|
|
130
|
-
}
|
|
131
|
-
return o({
|
|
132
|
-
focus: V,
|
|
133
|
-
blur: H
|
|
134
|
-
}), m(O, (e) => {
|
|
135
|
-
e === 0 && (A.value = Math.ceil(T.value) || 0);
|
|
136
|
-
}), (e, n) => (c(), r("div", {
|
|
137
|
-
ref_key: "rootRef",
|
|
138
|
-
ref: B,
|
|
139
|
-
class: s(["b-rate", [`b-rate--${a.size}`, {
|
|
140
|
-
"b-rate--disabled": a.disabled,
|
|
141
|
-
"b-rate--focused": k.value
|
|
142
|
-
}]]),
|
|
143
|
-
role: "slider",
|
|
144
|
-
"aria-label": e.$attrs["aria-label"] || "Rating",
|
|
145
|
-
"aria-disabled": a.disabled || void 0,
|
|
146
|
-
"aria-valuenow": T.value,
|
|
147
|
-
"aria-valuemin": 0,
|
|
148
|
-
"aria-valuemax": a.count,
|
|
149
|
-
"aria-valuetext": `${T.value} out of ${a.count} stars`,
|
|
150
|
-
tabindex: a.disabled ? -1 : 0,
|
|
151
|
-
onMouseleave: I,
|
|
152
|
-
onFocus: L,
|
|
153
|
-
onBlur: R,
|
|
154
|
-
onKeydown: z
|
|
155
|
-
}, [(c(!0), r(t, null, u(M.value, (t) => (c(), r("div", {
|
|
156
|
-
key: t.index,
|
|
157
|
-
class: s(["b-rate__star", {
|
|
158
|
-
"b-rate__star--full": N(t.index) === "full",
|
|
159
|
-
"b-rate__star--half": N(t.index) === "half",
|
|
160
|
-
"b-rate__star--zero": N(t.index) === "zero",
|
|
161
|
-
"b-rate__star--active": O.value > 0,
|
|
162
|
-
"b-rate__star--focused": k.value && A.value === t.index
|
|
163
|
-
}]),
|
|
164
|
-
title: a.tooltips[t.index - 1] || void 0,
|
|
165
|
-
onMousemove: (e) => F(t.index, e),
|
|
166
|
-
onClick: (e) => P(t.index, a.allowHalf && e.offsetX < e.currentTarget.offsetWidth / 2)
|
|
167
|
-
}, [i("div", _, [d(e.$slots, "character", { index: t.index }, () => [a.character ? (c(), r("span", {
|
|
168
|
-
key: 0,
|
|
169
|
-
class: "b-rate__character",
|
|
170
|
-
"data-character": a.character
|
|
171
|
-
}, null, 8, v)) : (c(), r("svg", y, [...n[0] ||= [i("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" }, null, -1)]]))], !0)]), i("div", b, [d(e.$slots, "character", { index: t.index }, () => [a.character ? (c(), r("span", {
|
|
172
|
-
key: 0,
|
|
173
|
-
class: "b-rate__character",
|
|
174
|
-
"data-character": a.character
|
|
175
|
-
}, null, 8, x)) : (c(), r("svg", S, [...n[1] ||= [i("path", { d: "M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z" }, null, -1)]]))], !0)])], 42, g))), 128)), i("input", {
|
|
176
|
-
type: "hidden",
|
|
177
|
-
name: `b-rate-${f(D)}`,
|
|
178
|
-
value: T.value
|
|
179
|
-
}, null, 8, C)], 42, h));
|
|
42
|
+
]]),
|
|
43
|
+
for: w.value
|
|
44
|
+
}, [i("input", {
|
|
45
|
+
id: w.value,
|
|
46
|
+
type: "radio",
|
|
47
|
+
class: "b-radio-button__input",
|
|
48
|
+
checked: S.value,
|
|
49
|
+
disabled: v.value,
|
|
50
|
+
name: y.value,
|
|
51
|
+
value: a.value,
|
|
52
|
+
onChange: T
|
|
53
|
+
}, null, 40, p), i("span", m, [u(e.$slots, "default", {}, void 0, !0)])], 10, f));
|
|
180
54
|
}
|
|
181
55
|
});
|
|
182
56
|
//#endregion
|
|
183
|
-
export {
|
|
57
|
+
export { h as default };
|
|
184
58
|
|
|
185
59
|
//# sourceMappingURL=design-system167.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system167.js","names":[],"sources":["../src/components/BRate/BRate.vue?vue&type=script&setup=true&lang.ts"],"sourcesContent":["import { useModel as _useModel, mergeModels as _mergeModels, defineComponent as _defineComponent } from 'vue'\nimport { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, unref as _unref } from \"vue\"\n\nconst _hoisted_1 = [\"aria-label\", \"aria-disabled\", \"aria-valuenow\", \"aria-valuemax\", \"aria-valuetext\", \"tabindex\"]\nconst _hoisted_2 = [\"title\", \"onMousemove\", \"onClick\"]\nconst _hoisted_3 = {\n class: \"b-rate__star-first\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_4 = [\"data-character\"]\nconst _hoisted_5 = {\n key: 1,\n class: \"b-rate__icon\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_6 = {\n class: \"b-rate__star-second\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_7 = [\"data-character\"]\nconst _hoisted_8 = {\n key: 1,\n class: \"b-rate__icon\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_9 = [\"name\", \"value\"]\n\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, ref, watch } from 'vue';\n\n//#region Props\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BRate',\n props: /*@__PURE__*/_mergeModels({\n allowClear: { type: Boolean, default: true },\n allowHalf: { type: Boolean, default: false },\n count: { default: 5 },\n disabled: { type: Boolean, default: false },\n keyboard: { type: Boolean, default: true },\n size: { default: 'default' },\n tooltips: { default: () => ([]) },\n character: {}\n }, {\n \"modelValue\": { default: 0 },\n \"modelModifiers\": {},\n }),\n emits: /*@__PURE__*/_mergeModels([\"hover-change\", \"change\", \"focus\", \"blur\", \"keydown\"], [\"update:modelValue\"]),\n setup(__props: any, { expose: __expose, emit: __emit }) {\n\n\n\n/**\n * The current rating value.\n * Supports v-model for controlled usage.\n */\nconst model = _useModel<number>(__props, \"modelValue\");\n\nconst emit = __emit;\n//#endregion\n\n//#region Internal state\nconst { componentUID } = useComponentId();\nconst hoverValue = ref(0);\nconst isFocused = ref(false);\nconst focusedIndex = ref(0);\n\nconst currentValue = computed(() =>\n hoverValue.value > 0 ? hoverValue.value : model.value,\n);\n\nconst stars = computed(() => {\n const items: { index: number; value: number }[] = [];\n for (let i = 1; i <= __props.count; i++) {\n items.push({ index: i, value: i });\n }\n return items;\n});\n//#endregion\n\n//#region Star state\nfunction getStarState(index: number): 'full' | 'half' | 'zero' {\n const val = currentValue.value;\n if (index <= Math.floor(val)) return 'full';\n if (__props.allowHalf && index - 0.5 <= val && index > val) return 'half';\n return 'zero';\n}\n//#endregion\n\n//#region Handlers\nfunction handleClick(index: number, isHalf: boolean) {\n if (__props.disabled) return;\n\n const newValue = isHalf && __props.allowHalf ? index - 0.5 : index;\n\n if (__props.allowClear && newValue === model.value) {\n model.value = 0;\n emit('change', 0);\n } else {\n model.value = newValue;\n emit('change', newValue);\n }\n}\n\nfunction handleMouseMove(index: number, event: MouseEvent) {\n if (__props.disabled) return;\n\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const isLeftHalf = event.clientX - rect.left < rect.width / 2;\n\n let newHoverValue: number;\n if (__props.allowHalf && isLeftHalf) {\n newHoverValue = index - 0.5;\n } else {\n newHoverValue = index;\n }\n\n if (newHoverValue !== hoverValue.value) {\n hoverValue.value = newHoverValue;\n emit('hover-change', newHoverValue);\n }\n}\n\nfunction handleMouseLeave() {\n if (__props.disabled) return;\n hoverValue.value = 0;\n emit('hover-change', 0);\n}\n\nfunction handleFocus() {\n isFocused.value = true;\n focusedIndex.value = Math.ceil(model.value) || 1;\n emit('focus');\n}\n\nfunction handleBlur() {\n isFocused.value = false;\n focusedIndex.value = 0;\n emit('blur');\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (__props.disabled || !__props.keyboard) return;\n emit('keydown', event);\n\n const step = __props.allowHalf ? 0.5 : 1;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault();\n const next = Math.min(model.value + step, __props.count);\n model.value = next;\n focusedIndex.value = Math.ceil(next);\n emit('change', next);\n break;\n }\n case 'ArrowLeft':\n case 'ArrowDown': {\n event.preventDefault();\n const prev = Math.max(model.value - step, 0);\n model.value = prev;\n focusedIndex.value = Math.ceil(prev) || 1;\n emit('change', prev);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (__props.allowClear && focusedIndex.value === Math.ceil(model.value)) {\n model.value = 0;\n emit('change', 0);\n }\n break;\n }\n }\n}\n//#endregion\n\n//#region Expose\nconst rootRef = ref<HTMLElement | null>(null);\n\nfunction focus() {\n rootRef.value?.focus();\n}\n\nfunction blur() {\n rootRef.value?.blur();\n}\n\n__expose({ focus, blur });\n//#endregion\n\n//#region Watch hover for tooltip\nwatch(hoverValue, (val) => {\n if (val === 0) {\n focusedIndex.value = Math.ceil(model.value) || 0;\n }\n});\n//#endregion\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n ref_key: \"rootRef\",\n ref: rootRef,\n class: _normalizeClass([\"b-rate\", [\n `b-rate--${__props.size}`,\n {\n 'b-rate--disabled': __props.disabled,\n 'b-rate--focused': isFocused.value,\n },\n ]]),\n role: \"slider\",\n \"aria-label\": _ctx.$attrs['aria-label'] as string || 'Rating',\n \"aria-disabled\": __props.disabled || undefined,\n \"aria-valuenow\": model.value,\n \"aria-valuemin\": 0,\n \"aria-valuemax\": __props.count,\n \"aria-valuetext\": `${model.value} out of ${__props.count} stars`,\n tabindex: __props.disabled ? -1 : 0,\n onMouseleave: handleMouseLeave,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeydown: handleKeyDown\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(stars.value, (star) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n key: star.index,\n class: _normalizeClass([\"b-rate__star\", {\n 'b-rate__star--full': getStarState(star.index) === 'full',\n 'b-rate__star--half': getStarState(star.index) === 'half',\n 'b-rate__star--zero': getStarState(star.index) === 'zero',\n 'b-rate__star--active': hoverValue.value > 0,\n 'b-rate__star--focused': isFocused.value && focusedIndex.value === star.index,\n }]),\n title: __props.tooltips[star.index - 1] || undefined,\n onMousemove: (e) => handleMouseMove(star.index, e),\n onClick: (e) => handleClick(star.index, __props.allowHalf && (e.offsetX < (e.currentTarget as HTMLElement).offsetWidth / 2))\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"character\", {\n index: star.index\n }, () => [\n (__props.character)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"b-rate__character\",\n \"data-character\": __props.character\n }, null, 8, _hoisted_4))\n : (_openBlock(), _createElementBlock(\"svg\", _hoisted_5, [...(_cache[0] || (_cache[0] = [\n _createElementVNode(\"path\", { d: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" }, null, -1)\n ]))]))\n ], true)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _renderSlot(_ctx.$slots, \"character\", {\n index: star.index\n }, () => [\n (__props.character)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"b-rate__character\",\n \"data-character\": __props.character\n }, null, 8, _hoisted_7))\n : (_openBlock(), _createElementBlock(\"svg\", _hoisted_8, [...(_cache[1] || (_cache[1] = [\n _createElementVNode(\"path\", { d: \"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\" }, null, -1)\n ]))]))\n ], true)\n ])\n ], 42, _hoisted_2))\n }), 128)),\n _createElementVNode(\"input\", {\n type: \"hidden\",\n name: `b-rate-${_unref(componentUID)}`,\n value: model.value\n }, null, 8, _hoisted_9)\n ], 42, _hoisted_1))\n}\n}\n\n})"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design-system167.js","names":[],"sources":["../src/components/BRadio/BRadioButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio button input. */\n id?: string;\n /** Whether the radio button is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio button.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\nconst groupSize = computed(() => group?.size.value || 'middle');\nconst groupButtonStyle = computed(() => group?.buttonStyle.value || 'outline');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-button-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio-button b:relative b:inline-flex b:cursor-pointer b:items-center b:justify-center b:leading-none b:select-none\"\n :class=\"[\n `b-radio-button--${groupSize}`,\n `b-radio-button--${groupButtonStyle}`,\n {\n 'b-radio-button--checked': isChecked,\n 'b-radio-button--disabled b:cursor-not-allowed': isDisabled,\n },\n ]\"\n :for=\"inputId\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio-button__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio-button {\n --b-radio-button-bg: #ffffff;\n --b-radio-button-checked-bg: #ffffff;\n --b-radio-button-color: rgba(0, 0, 0, 0.88);\n --b-radio-button-color-primary: #0958d9;\n --b-radio-button-color-primary-hover: #0958d9;\n --b-radio-button-color-primary-active: #003eb3;\n --b-radio-button-color-border: #d9d9d9;\n --b-radio-button-color-disabled-bg: rgba(0, 0, 0, 0.04);\n --b-radio-button-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-button-solid-checked-bg: #0958d9;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #003eb3;\n --b-radio-button-solid-checked-active-bg: #002b80;\n --b-radio-button-padding-inline: 15px;\n --b-radio-button-border-width: 1px;\n --b-radio-button-transition-duration: 0.2s;\n\n border: var(--b-radio-button-border-width) solid var(--b-radio-button-color-border);\n background-color: var(--b-radio-button-bg);\n color: var(--b-radio-button-color);\n padding-inline: var(--b-radio-button-padding-inline);\n transition:\n color var(--b-radio-button-transition-duration) ease-in-out,\n background-color var(--b-radio-button-transition-duration) ease-in-out,\n border-color var(--b-radio-button-transition-duration) ease-in-out;\n margin-inline-start: calc(-1 * var(--b-radio-button-border-width));\n}\n\n.b-radio-button:first-child {\n margin-inline-start: 0;\n border-start-start-radius: 6px;\n border-end-start-radius: 6px;\n}\n\n.b-radio-button:last-child {\n border-start-end-radius: 6px;\n border-end-end-radius: 6px;\n}\n\n/* Sizes */\n.b-radio-button--large {\n padding-block: 8px;\n font-size: 16px;\n line-height: 1.5;\n}\n\n.b-radio-button--middle {\n padding-block: 5px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n.b-radio-button--small {\n padding-block: 1px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n/* Outline style — checked */\n.b-radio-button--outline.b-radio-button--checked {\n color: var(--b-radio-button-color-primary);\n border-color: var(--b-radio-button-color-primary);\n background-color: var(--b-radio-button-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--outline:not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Solid style — checked */\n.b-radio-button--solid.b-radio-button--checked {\n color: var(--b-radio-button-solid-checked-color);\n background-color: var(--b-radio-button-solid-checked-bg);\n border-color: var(--b-radio-button-solid-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--solid.b-radio-button--checked:hover {\n background-color: var(--b-radio-button-solid-checked-hover-bg);\n border-color: var(--b-radio-button-solid-checked-hover-bg);\n}\n\n.b-radio-button--solid:not(.b-radio-button--checked):not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Disabled */\n.b-radio-button--disabled {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n opacity: 1;\n}\n\n.b-radio-button--disabled.b-radio-button--checked {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n}\n\n/* Hidden input */\n.b-radio-button__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio-button--disabled .b-radio-button__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio-button__input:focus-visible ~ .b-radio-button__label {\n outline: 2px solid var(--b-radio-button-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio-button {\n transition: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA,IAAM,IAAQ,EAAoB,GAAA,aAAoB,EAEhD,IAAO,GAMP,IAAQ,EAAkC,GAAmB,KAAK,EAElE,IAAa,QAAe,EAAA,YAAY,GAAO,SAAS,SAAS,GAAM,EACvE,IAAY,QAAe,EAAA,QAAQ,GAAO,KAAK,SAAS,GAAG,EAC3D,IAAY,QAAe,GAAO,KAAK,SAAS,SAAS,EACzD,IAAmB,QAAe,GAAO,YAAY,SAAS,UAAU,EAExE,IAAY,QACZ,IACK,EAAM,WAAW,UAAU,EAAA,QAE7B,EAAM,MACb,EAII,EAAE,oBAAiB,GAAgB,EACnC,IAAU,QAAe,EAAA,MAAM,kBAAkB,EAAa,QAAQ;EAI5E,SAAS,EAAa,GAAc;AAC9B,KAAW,UAEX,IACF,EAAM,SAAS,EAAA,MAAM,GAErB,EAAM,QAAQ,IAEhB,EAAK,UAAU,IAAM,EAAM;;yBAM3B,EAyBQ,SAAA;GAxBN,OAAK,EAAA,CAAC,yHAAuH;uBAC1F,EAAA;uBAAsC,EAAA;;gCAA+D,EAAA;sDAAoE,EAAA;;;GAQ3M,KAAK,EAAA;MAEN,EASE,SAAA;GARC,IAAI,EAAA;GACL,MAAK;GACL,OAAM;GACL,SAAS,EAAA;GACT,UAAU,EAAA;GACV,MAAM,EAAA;GACN,OAAO,EAAA;GACP,UAAQ;mBAEX,EAEO,QAFP,GAEO,CADL,EAAQ,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA"}
|
package/dist/design-system169.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import e from "./design-system14.js";
|
|
2
2
|
import t from "./design-system167.js";
|
|
3
3
|
/* empty css */
|
|
4
|
-
//#region src/components/
|
|
5
|
-
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-
|
|
4
|
+
//#region src/components/BRadio/BRadioButton.vue
|
|
5
|
+
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-401aa983"]]);
|
|
6
6
|
//#endregion
|
|
7
7
|
export { n as default };
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system169.js","names":[],"sources":["../src/components/BRate/BRate.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, ref, watch } from 'vue';\n\n//#region Props\nconst {\n allowClear = true,\n allowHalf = false,\n count = 5,\n disabled = false,\n keyboard = true,\n size = 'default',\n tooltips = [],\n character,\n} = defineProps<{\n /** Whether to allow clearing the value when clicking the same star again. */\n allowClear?: boolean;\n /** Whether to allow half-star selection. */\n allowHalf?: boolean;\n /** Total number of stars. */\n count?: number;\n /** If true, the component is read-only and cannot be interacted with. */\n disabled?: boolean;\n /** Whether keyboard navigation is enabled. */\n keyboard?: boolean;\n /** Size of the stars. */\n size?: 'small' | 'default' | 'large';\n /** Array of tooltip strings displayed on hover for each star. */\n tooltips?: string[];\n /** Custom character/icon rendered as each star. Receives `{ index }`. */\n character?: string;\n}>();\n\n/**\n * The current rating value.\n * Supports v-model for controlled usage.\n */\nconst model = defineModel<number>({ default: 0 });\n\nconst emit = defineEmits<{\n 'hover-change': [value: number];\n change: [value: number];\n focus: [];\n blur: [];\n keydown: [event: KeyboardEvent];\n}>();\n//#endregion\n\n//#region Internal state\nconst { componentUID } = useComponentId();\nconst hoverValue = ref(0);\nconst isFocused = ref(false);\nconst focusedIndex = ref(0);\n\nconst currentValue = computed(() =>\n hoverValue.value > 0 ? hoverValue.value : model.value,\n);\n\nconst stars = computed(() => {\n const items: { index: number; value: number }[] = [];\n for (let i = 1; i <= count; i++) {\n items.push({ index: i, value: i });\n }\n return items;\n});\n//#endregion\n\n//#region Star state\nfunction getStarState(index: number): 'full' | 'half' | 'zero' {\n const val = currentValue.value;\n if (index <= Math.floor(val)) return 'full';\n if (allowHalf && index - 0.5 <= val && index > val) return 'half';\n return 'zero';\n}\n//#endregion\n\n//#region Handlers\nfunction handleClick(index: number, isHalf: boolean) {\n if (disabled) return;\n\n const newValue = isHalf && allowHalf ? index - 0.5 : index;\n\n if (allowClear && newValue === model.value) {\n model.value = 0;\n emit('change', 0);\n } else {\n model.value = newValue;\n emit('change', newValue);\n }\n}\n\nfunction handleMouseMove(index: number, event: MouseEvent) {\n if (disabled) return;\n\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const isLeftHalf = event.clientX - rect.left < rect.width / 2;\n\n let newHoverValue: number;\n if (allowHalf && isLeftHalf) {\n newHoverValue = index - 0.5;\n } else {\n newHoverValue = index;\n }\n\n if (newHoverValue !== hoverValue.value) {\n hoverValue.value = newHoverValue;\n emit('hover-change', newHoverValue);\n }\n}\n\nfunction handleMouseLeave() {\n if (disabled) return;\n hoverValue.value = 0;\n emit('hover-change', 0);\n}\n\nfunction handleFocus() {\n isFocused.value = true;\n focusedIndex.value = Math.ceil(model.value) || 1;\n emit('focus');\n}\n\nfunction handleBlur() {\n isFocused.value = false;\n focusedIndex.value = 0;\n emit('blur');\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (disabled || !keyboard) return;\n emit('keydown', event);\n\n const step = allowHalf ? 0.5 : 1;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp': {\n event.preventDefault();\n const next = Math.min(model.value + step, count);\n model.value = next;\n focusedIndex.value = Math.ceil(next);\n emit('change', next);\n break;\n }\n case 'ArrowLeft':\n case 'ArrowDown': {\n event.preventDefault();\n const prev = Math.max(model.value - step, 0);\n model.value = prev;\n focusedIndex.value = Math.ceil(prev) || 1;\n emit('change', prev);\n break;\n }\n case 'Enter':\n case ' ': {\n event.preventDefault();\n if (allowClear && focusedIndex.value === Math.ceil(model.value)) {\n model.value = 0;\n emit('change', 0);\n }\n break;\n }\n }\n}\n//#endregion\n\n//#region Expose\nconst rootRef = ref<HTMLElement | null>(null);\n\nfunction focus() {\n rootRef.value?.focus();\n}\n\nfunction blur() {\n rootRef.value?.blur();\n}\n\ndefineExpose({ focus, blur });\n//#endregion\n\n//#region Watch hover for tooltip\nwatch(hoverValue, (val) => {\n if (val === 0) {\n focusedIndex.value = Math.ceil(model.value) || 0;\n }\n});\n//#endregion\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n class=\"b-rate\"\n :class=\"[\n `b-rate--${size}`,\n {\n 'b-rate--disabled': disabled,\n 'b-rate--focused': isFocused,\n },\n ]\"\n role=\"slider\"\n :aria-label=\"$attrs['aria-label'] as string || 'Rating'\"\n :aria-disabled=\"disabled || undefined\"\n :aria-valuenow=\"model\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"count\"\n :aria-valuetext=\"`${model} out of ${count} stars`\"\n :tabindex=\"disabled ? -1 : 0\"\n @mouseleave=\"handleMouseLeave\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @keydown=\"handleKeyDown\"\n >\n <div\n v-for=\"star in stars\"\n :key=\"star.index\"\n class=\"b-rate__star\"\n :class=\"{\n 'b-rate__star--full': getStarState(star.index) === 'full',\n 'b-rate__star--half': getStarState(star.index) === 'half',\n 'b-rate__star--zero': getStarState(star.index) === 'zero',\n 'b-rate__star--active': hoverValue > 0,\n 'b-rate__star--focused': isFocused && focusedIndex === star.index,\n }\"\n :title=\"tooltips[star.index - 1] || undefined\"\n @mousemove=\"(e) => handleMouseMove(star.index, e)\"\n @click=\"(e) => handleClick(star.index, allowHalf && (e.offsetX < (e.currentTarget as HTMLElement).offsetWidth / 2))\"\n >\n <div class=\"b-rate__star-first\" aria-hidden=\"true\">\n <slot name=\"character\" :index=\"star.index\">\n <span v-if=\"character\" class=\"b-rate__character\" :data-character=\"character\" />\n <svg\n v-else\n class=\"b-rate__icon\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\n />\n </svg>\n </slot>\n </div>\n <div class=\"b-rate__star-second\" aria-hidden=\"true\">\n <slot name=\"character\" :index=\"star.index\">\n <span v-if=\"character\" class=\"b-rate__character\" :data-character=\"character\" />\n <svg\n v-else\n class=\"b-rate__icon\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z\"\n />\n </svg>\n </slot>\n </div>\n </div>\n\n <input\n type=\"hidden\"\n :name=\"`b-rate-${componentUID}`\"\n :value=\"model\"\n />\n </div>\n</template>\n\n<style scoped>\n.b-rate {\n --b-rate-star-bg: rgba(0, 0, 0, 0.06);\n --b-rate-star-color: #fadb14;\n --b-rate-star-hover-scale: scale(1.1);\n --b-rate-star-size: 20px;\n\n display: inline-flex;\n gap: 8px;\n align-items: center;\n outline: none;\n cursor: pointer;\n line-height: 1;\n}\n\n.b-rate--small {\n --b-rate-star-size: 15px;\n gap: 6px;\n}\n\n.b-rate--large {\n --b-rate-star-size: 25px;\n gap: 10px;\n}\n\n.b-rate--disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.b-rate:focus-visible {\n outline: 2px solid var(--b-rate-star-color);\n outline-offset: 4px;\n border-radius: 2px;\n}\n\n.b-rate__star {\n position: relative;\n display: inline-flex;\n width: var(--b-rate-star-size);\n height: var(--b-rate-star-size);\n cursor: pointer;\n transition: transform 0.15s ease;\n}\n\n.b-rate--disabled .b-rate__star {\n cursor: not-allowed;\n}\n\n.b-rate__star:not(.b-rate--disabled .b-rate__star):hover {\n transform: var(--b-rate-star-hover-scale);\n}\n\n.b-rate__star--focused {\n outline: 2px solid var(--b-rate-star-color);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n.b-rate__star-first,\n.b-rate__star-second {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n user-select: none;\n}\n\n.b-rate__star-first {\n width: 50%;\n overflow: hidden;\n z-index: 1;\n}\n\n.b-rate__star-second {\n z-index: 0;\n}\n\n/* Zero state: both halves use background color */\n.b-rate__star--zero .b-rate__star-first,\n.b-rate__star--zero .b-rate__star-second {\n color: var(--b-rate-star-bg);\n}\n\n/* Full state: both halves use active color */\n.b-rate__star--full .b-rate__star-first,\n.b-rate__star--full .b-rate__star-second {\n color: var(--b-rate-star-color);\n}\n\n/* Half state: first half active, second half background */\n.b-rate__star--half .b-rate__star-first {\n color: var(--b-rate-star-color);\n}\n\n.b-rate__star--half .b-rate__star-second {\n color: var(--b-rate-star-bg);\n}\n\n.b-rate__icon {\n width: var(--b-rate-star-size);\n height: var(--b-rate-star-size);\n flex-shrink: 0;\n display: block;\n}\n\n.b-rate__character {\n font-size: var(--b-rate-star-size);\n line-height: 1;\n white-space: nowrap;\n}\n\n.b-rate__character::before {\n content: attr(data-character);\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-rate {\n --b-rate-star-bg: rgba(255, 255, 255, 0.12);\n --b-rate-star-color: #fadb14;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-rate {\n --b-rate-star-bg: rgba(255, 255, 255, 0.12);\n --b-rate-star-color: #fadb14;\n }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .b-rate__star {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"design-system169.js","names":[],"sources":["../src/components/BRadio/BRadioButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useComponentId } from '@/composables/useComponentId.ts';\nimport { computed, inject } from 'vue';\nimport { B_RADIO_GROUP_KEY, type BRadioGroupContext } from './types';\n\n//#region Props\nconst {\n id = '',\n disabled = false,\n value = '',\n name = '',\n} = defineProps<{\n /** Custom id attribute for the radio button input. */\n id?: string;\n /** Whether the radio button is disabled. */\n disabled?: boolean;\n /** Value when used inside BRadioGroup. */\n value?: string | number;\n /** The name attribute for the input element. */\n name?: string;\n}>();\n\n/**\n * The checked state of the radio button.\n */\nconst model = defineModel<boolean>({ default: false });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n}>();\n//#endregion\n\n//#region Group integration\nconst group = inject<BRadioGroupContext | null>(B_RADIO_GROUP_KEY, null);\n\nconst isDisabled = computed(() => disabled || group?.disabled.value || false);\nconst inputName = computed(() => name || group?.name.value || '');\nconst groupSize = computed(() => group?.size.value || 'middle');\nconst groupButtonStyle = computed(() => group?.buttonStyle.value || 'outline');\n\nconst isChecked = computed(() => {\n if (group) {\n return group.modelValue.value === value;\n }\n return model.value;\n});\n//#endregion\n\n//#region ID generation\nconst { componentUID } = useComponentId();\nconst inputId = computed(() => id || `b-radio-button-${componentUID.value}`);\n//#endregion\n\n//#region Handlers\nfunction handleChange(event: Event) {\n if (isDisabled.value) return;\n\n if (group) {\n group.setValue(value);\n } else {\n model.value = true;\n }\n emit('change', true, event);\n}\n//#endregion\n</script>\n\n<template>\n <label\n class=\"b-radio-button b:relative b:inline-flex b:cursor-pointer b:items-center b:justify-center b:leading-none b:select-none\"\n :class=\"[\n `b-radio-button--${groupSize}`,\n `b-radio-button--${groupButtonStyle}`,\n {\n 'b-radio-button--checked': isChecked,\n 'b-radio-button--disabled b:cursor-not-allowed': isDisabled,\n },\n ]\"\n :for=\"inputId\"\n >\n <input\n :id=\"inputId\"\n type=\"radio\"\n class=\"b-radio-button__input\"\n :checked=\"isChecked\"\n :disabled=\"isDisabled\"\n :name=\"inputName\"\n :value=\"value\"\n @change=\"handleChange\"\n />\n <span class=\"b-radio-button__label\">\n <slot />\n </span>\n </label>\n</template>\n\n<style scoped>\n.b-radio-button {\n --b-radio-button-bg: #ffffff;\n --b-radio-button-checked-bg: #ffffff;\n --b-radio-button-color: rgba(0, 0, 0, 0.88);\n --b-radio-button-color-primary: #0958d9;\n --b-radio-button-color-primary-hover: #0958d9;\n --b-radio-button-color-primary-active: #003eb3;\n --b-radio-button-color-border: #d9d9d9;\n --b-radio-button-color-disabled-bg: rgba(0, 0, 0, 0.04);\n --b-radio-button-color-disabled: rgba(0, 0, 0, 0.25);\n --b-radio-button-solid-checked-bg: #0958d9;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #003eb3;\n --b-radio-button-solid-checked-active-bg: #002b80;\n --b-radio-button-padding-inline: 15px;\n --b-radio-button-border-width: 1px;\n --b-radio-button-transition-duration: 0.2s;\n\n border: var(--b-radio-button-border-width) solid var(--b-radio-button-color-border);\n background-color: var(--b-radio-button-bg);\n color: var(--b-radio-button-color);\n padding-inline: var(--b-radio-button-padding-inline);\n transition:\n color var(--b-radio-button-transition-duration) ease-in-out,\n background-color var(--b-radio-button-transition-duration) ease-in-out,\n border-color var(--b-radio-button-transition-duration) ease-in-out;\n margin-inline-start: calc(-1 * var(--b-radio-button-border-width));\n}\n\n.b-radio-button:first-child {\n margin-inline-start: 0;\n border-start-start-radius: 6px;\n border-end-start-radius: 6px;\n}\n\n.b-radio-button:last-child {\n border-start-end-radius: 6px;\n border-end-end-radius: 6px;\n}\n\n/* Sizes */\n.b-radio-button--large {\n padding-block: 8px;\n font-size: 16px;\n line-height: 1.5;\n}\n\n.b-radio-button--middle {\n padding-block: 5px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n.b-radio-button--small {\n padding-block: 1px;\n font-size: 14px;\n line-height: 1.5714;\n}\n\n/* Outline style — checked */\n.b-radio-button--outline.b-radio-button--checked {\n color: var(--b-radio-button-color-primary);\n border-color: var(--b-radio-button-color-primary);\n background-color: var(--b-radio-button-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--outline:not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Solid style — checked */\n.b-radio-button--solid.b-radio-button--checked {\n color: var(--b-radio-button-solid-checked-color);\n background-color: var(--b-radio-button-solid-checked-bg);\n border-color: var(--b-radio-button-solid-checked-bg);\n z-index: 1;\n}\n\n.b-radio-button--solid.b-radio-button--checked:hover {\n background-color: var(--b-radio-button-solid-checked-hover-bg);\n border-color: var(--b-radio-button-solid-checked-hover-bg);\n}\n\n.b-radio-button--solid:not(.b-radio-button--checked):not(.b-radio-button--disabled):hover {\n color: var(--b-radio-button-color-primary-hover);\n border-color: var(--b-radio-button-color-primary-hover);\n z-index: 1;\n}\n\n/* Disabled */\n.b-radio-button--disabled {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n opacity: 1;\n}\n\n.b-radio-button--disabled.b-radio-button--checked {\n background-color: var(--b-radio-button-color-disabled-bg);\n color: var(--b-radio-button-color-disabled);\n border-color: var(--b-radio-button-color-border);\n}\n\n/* Hidden input */\n.b-radio-button__input {\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n margin: 0;\n padding: 0;\n cursor: pointer;\n z-index: 1;\n}\n\n.b-radio-button--disabled .b-radio-button__input {\n cursor: not-allowed;\n}\n\n/* Focus-visible ring */\n.b-radio-button__input:focus-visible ~ .b-radio-button__label {\n outline: 2px solid var(--b-radio-button-color-primary);\n outline-offset: 2px;\n border-radius: 2px;\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-radio-button {\n --b-radio-button-bg: #141414;\n --b-radio-button-checked-bg: #141414;\n --b-radio-button-color: rgba(255, 255, 255, 0.85);\n --b-radio-button-color-primary: #4d94e8;\n --b-radio-button-color-primary-hover: #4d94e8;\n --b-radio-button-color-primary-active: #3c89e8;\n --b-radio-button-color-border: #424242;\n --b-radio-button-color-disabled-bg: rgba(255, 255, 255, 0.08);\n --b-radio-button-color-disabled: rgba(255, 255, 255, 0.25);\n --b-radio-button-solid-checked-bg: #1668dc;\n --b-radio-button-solid-checked-color: #fff;\n --b-radio-button-solid-checked-hover-bg: #0958d9;\n --b-radio-button-solid-checked-active-bg: #003eb3;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .b-radio-button {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
|