@7pmlabs/design-system 2.0.9 → 2.1.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 +4 -4
- package/dist/design-system.css +1 -1
- package/dist/design-system.js +65 -59
- package/dist/design-system100.js +1 -1
- package/dist/design-system100.js.map +1 -1
- package/dist/design-system101.js +87 -53
- package/dist/design-system101.js.map +1 -1
- package/dist/design-system103.js +5 -13
- package/dist/design-system103.js.map +1 -1
- package/dist/design-system104.js +53 -108
- package/dist/design-system104.js.map +1 -1
- package/dist/{design-system102.js → design-system105.js} +1 -1
- package/dist/{design-system102.js.map → design-system105.js.map} +1 -1
- package/dist/design-system106.js +13 -6
- package/dist/design-system106.js.map +1 -1
- package/dist/design-system107.js +93 -190
- package/dist/design-system107.js.map +1 -1
- package/dist/design-system109.js +2 -2
- package/dist/design-system109.js.map +1 -1
- package/dist/design-system110.js +183 -484
- package/dist/design-system110.js.map +1 -1
- package/dist/design-system112.js +5 -4
- package/dist/design-system112.js.map +1 -1
- package/dist/design-system113.js +507 -7
- package/dist/design-system113.js.map +1 -1
- package/dist/design-system115.js +8 -0
- package/dist/design-system115.js.map +1 -0
- package/dist/design-system116.js +7 -6
- package/dist/design-system116.js.map +1 -1
- package/dist/design-system117.js +154 -169
- package/dist/design-system117.js.map +1 -1
- package/dist/design-system119.js +2 -2
- package/dist/design-system119.js.map +1 -1
- package/dist/design-system120.js +210 -149
- package/dist/design-system120.js.map +1 -1
- package/dist/design-system122.js +5 -4
- package/dist/design-system122.js.map +1 -1
- package/dist/design-system123.js +160 -9
- package/dist/design-system123.js.map +1 -1
- package/dist/design-system125.js +8 -0
- package/dist/design-system125.js.map +1 -0
- package/dist/design-system126.js +176 -6
- package/dist/design-system126.js.map +1 -1
- package/dist/design-system128.js +8 -0
- package/dist/design-system128.js.map +1 -0
- package/dist/design-system129.js +213 -5
- package/dist/design-system129.js.map +1 -1
- package/dist/design-system131.js +5 -90
- package/dist/design-system131.js.map +1 -1
- package/dist/design-system132.js +166 -0
- package/dist/design-system132.js.map +1 -0
- package/dist/design-system134.js +5 -42
- package/dist/design-system134.js.map +1 -1
- package/dist/design-system135.js +12 -0
- package/dist/design-system135.js.map +1 -0
- package/dist/design-system136.js +274 -5
- package/dist/design-system136.js.map +1 -1
- package/dist/design-system138.js +9 -0
- package/dist/{design-system124.js.map → design-system138.js.map} +1 -1
- package/dist/design-system139.js +16 -5
- package/dist/design-system139.js.map +1 -1
- package/dist/design-system141.js +8 -0
- package/dist/{design-system127.js.map → design-system141.js.map} +1 -1
- package/dist/design-system142.js +12 -5
- package/dist/design-system142.js.map +1 -1
- package/dist/design-system143.js +78 -83
- package/dist/design-system143.js.map +1 -1
- package/dist/design-system145.js +1 -1
- package/dist/design-system145.js.map +1 -1
- package/dist/design-system146.js +42 -9
- package/dist/design-system146.js.map +1 -1
- package/dist/design-system148.js +3 -2
- package/dist/design-system148.js.map +1 -1
- package/dist/design-system149.js +230 -18
- package/dist/design-system149.js.map +1 -1
- package/dist/design-system151.js +5 -158
- package/dist/design-system151.js.map +1 -1
- package/dist/{design-system140.js → design-system152.js} +6 -6
- package/dist/{design-system140.js.map → design-system152.js.map} +1 -1
- package/dist/design-system154.js +5 -307
- package/dist/design-system154.js.map +1 -1
- package/dist/design-system155.js +98 -0
- package/dist/design-system155.js.map +1 -0
- package/dist/design-system157.js +5 -240
- package/dist/design-system157.js.map +1 -1
- package/dist/design-system158.js +12 -0
- package/dist/design-system158.js.map +1 -0
- package/dist/design-system159.js +37 -5
- package/dist/design-system159.js.map +1 -1
- package/dist/design-system160.js +4 -189
- package/dist/design-system160.js.map +1 -1
- package/dist/design-system161.js +24 -0
- package/dist/{design-system150.js.map → design-system161.js.map} +1 -1
- package/dist/design-system162.js +2 -3
- package/dist/design-system162.js.map +1 -1
- package/dist/design-system163.js +158 -3
- package/dist/design-system163.js.map +1 -1
- package/dist/{design-system153.js → design-system165.js} +2 -2
- package/dist/{design-system153.js.map → design-system165.js.map} +1 -1
- package/dist/design-system166.js +307 -6
- package/dist/design-system166.js.map +1 -1
- package/dist/{design-system156.js → design-system168.js} +2 -2
- package/dist/{design-system156.js.map → design-system168.js.map} +1 -1
- package/dist/design-system169.js +167 -6
- package/dist/design-system169.js.map +1 -1
- package/dist/design-system171.js +8 -0
- package/dist/design-system171.js.map +1 -0
- package/dist/design-system172.js +240 -6
- package/dist/design-system172.js.map +1 -1
- package/dist/design-system174.js +8 -0
- package/dist/design-system174.js.map +1 -0
- package/dist/design-system175.js +189 -6
- package/dist/design-system175.js.map +1 -1
- package/dist/design-system177.js +8 -0
- package/dist/design-system177.js.map +1 -0
- package/dist/design-system178.js +3 -5
- package/dist/design-system178.js.map +1 -1
- package/dist/design-system179.js +58 -11
- package/dist/design-system179.js.map +1 -1
- package/dist/design-system181.js +9 -0
- package/dist/design-system181.js.map +1 -0
- package/dist/design-system182.js +56 -6
- package/dist/design-system182.js.map +1 -1
- package/dist/design-system184.js +9 -0
- package/dist/{design-system167.js.map → design-system184.js.map} +1 -1
- package/dist/design-system185.js +69 -5
- package/dist/design-system185.js.map +1 -1
- package/dist/design-system187.js +9 -0
- package/dist/{design-system170.js.map → design-system187.js.map} +1 -1
- package/dist/design-system188.js +182 -5
- package/dist/design-system188.js.map +1 -1
- package/dist/design-system190.js +9 -0
- package/dist/design-system190.js.map +1 -0
- package/dist/design-system191.js +115 -5
- package/dist/design-system191.js.map +1 -1
- package/dist/design-system193.js +8 -0
- package/dist/{design-system176.js.map → design-system193.js.map} +1 -1
- package/dist/design-system194.js +11 -5
- package/dist/design-system194.js.map +1 -1
- package/dist/design-system195.js +453 -24
- package/dist/design-system195.js.map +1 -1
- package/dist/design-system197.js +5 -4
- package/dist/design-system197.js.map +1 -1
- package/dist/design-system198.js +20 -16
- 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 +70 -314
- package/dist/design-system201.js.map +1 -1
- package/dist/design-system203.js +1 -1
- package/dist/design-system203.js.map +1 -1
- package/dist/design-system204.js +24 -89
- 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 +26 -17
- package/dist/design-system207.js.map +1 -1
- package/dist/design-system209.js +5 -3
- package/dist/design-system209.js.map +1 -1
- package/dist/design-system210.js +22 -408
- package/dist/design-system210.js.map +1 -1
- package/dist/design-system212.js +1 -1
- package/dist/design-system212.js.map +1 -1
- package/dist/design-system213.js +24 -52
- 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 +329 -85
- package/dist/design-system216.js.map +1 -1
- package/dist/design-system218.js +5 -108
- package/dist/design-system218.js.map +1 -1
- package/dist/design-system219.js +103 -0
- package/dist/design-system219.js.map +1 -0
- package/dist/design-system221.js +5 -106
- package/dist/design-system221.js.map +1 -1
- package/dist/design-system222.js +22 -0
- package/dist/{design-system208.js.map → design-system222.js.map} +1 -1
- package/dist/design-system223.js +4 -6
- package/dist/design-system223.js.map +1 -1
- package/dist/design-system224.js +3 -737
- package/dist/design-system224.js.map +1 -1
- package/dist/design-system225.js +422 -0
- package/dist/design-system225.js.map +1 -0
- package/dist/design-system227.js +5 -11
- package/dist/design-system227.js.map +1 -1
- package/dist/design-system228.js +51 -517
- package/dist/design-system228.js.map +1 -1
- package/dist/design-system230.js +1 -1
- package/dist/design-system230.js.map +1 -1
- package/dist/design-system231.js +88 -3
- package/dist/design-system231.js.map +1 -1
- package/dist/design-system232.js +4 -46
- package/dist/design-system232.js.map +1 -1
- package/dist/design-system233.js +108 -4
- package/dist/design-system233.js.map +1 -1
- package/dist/{design-system220.js → design-system235.js} +2 -2
- package/dist/{design-system220.js.map → design-system235.js.map} +1 -1
- package/dist/design-system236.js +106 -5
- package/dist/design-system236.js.map +1 -1
- package/dist/design-system238.js +9 -0
- package/dist/design-system238.js.map +1 -0
- package/dist/design-system239.js +737 -5
- package/dist/design-system239.js.map +1 -1
- package/dist/{design-system226.js → design-system241.js} +2 -2
- package/dist/{design-system226.js.map → design-system241.js.map} +1 -1
- package/dist/design-system242.js +3 -5
- package/dist/design-system242.js.map +1 -1
- package/dist/design-system243.js +42 -50
- package/dist/design-system243.js.map +1 -1
- package/dist/design-system244.js +1 -1
- package/dist/design-system244.js.map +1 -1
- package/dist/design-system245.js +254 -141
- package/dist/design-system245.js.map +1 -1
- package/dist/design-system247.js +1 -1
- package/dist/design-system247.js.map +1 -1
- package/dist/design-system248.js +119 -7
- package/dist/design-system248.js.map +1 -1
- package/dist/design-system250.js +8 -0
- package/dist/design-system250.js.map +1 -0
- package/dist/design-system251.js +172 -5
- package/dist/design-system251.js.map +1 -1
- package/dist/design-system253.js +8 -0
- package/dist/design-system253.js.map +1 -0
- package/dist/design-system254.js +11 -6
- package/dist/design-system254.js.map +1 -1
- package/dist/design-system255.js +525 -9
- package/dist/design-system255.js.map +1 -1
- package/dist/design-system257.js +8 -0
- package/dist/design-system257.js.map +1 -0
- package/dist/design-system258.js +112 -6
- package/dist/design-system258.js.map +1 -1
- package/dist/design-system260.js +5 -374
- package/dist/design-system260.js.map +1 -1
- package/dist/design-system261.js +57 -0
- package/dist/design-system261.js.map +1 -0
- package/dist/design-system262.js +4 -6
- package/dist/design-system262.js.map +1 -1
- package/dist/design-system263.js +173 -0
- package/dist/design-system263.js.map +1 -0
- package/dist/design-system265.js +8 -0
- package/dist/design-system265.js.map +1 -0
- package/dist/design-system266.js +10 -0
- package/dist/design-system266.js.map +1 -0
- package/dist/{design-system249.js → design-system267.js} +2 -2
- package/dist/{design-system249.js.map → design-system267.js.map} +1 -1
- package/dist/design-system269.js +8 -0
- package/dist/design-system269.js.map +1 -0
- package/dist/{design-system252.js → design-system270.js} +1 -1
- package/dist/{design-system252.js.map → design-system270.js.map} +1 -1
- package/dist/design-system272.js +9 -0
- package/dist/design-system272.js.map +1 -0
- package/dist/design-system273.js +12 -0
- package/dist/design-system273.js.map +1 -0
- package/dist/{design-system256.js → design-system274.js} +2 -2
- package/dist/{design-system256.js.map → design-system274.js.map} +1 -1
- package/dist/design-system276.js +9 -0
- package/dist/design-system276.js.map +1 -0
- package/dist/{design-system259.js → design-system277.js} +1 -1
- package/dist/{design-system259.js.map → design-system277.js.map} +1 -1
- package/dist/design-system278.js +377 -0
- package/dist/design-system278.js.map +1 -0
- package/dist/design-system280.js +9 -0
- package/dist/design-system280.js.map +1 -0
- package/dist/design-system69.js +182 -13
- package/dist/design-system69.js.map +1 -1
- package/dist/design-system71.js +8 -0
- package/dist/design-system71.js.map +1 -0
- package/dist/design-system72.js +13 -5
- package/dist/design-system72.js.map +1 -1
- package/dist/design-system73.js +677 -139
- package/dist/design-system73.js.map +1 -1
- package/dist/design-system75.js +1 -1
- package/dist/design-system75.js.map +1 -1
- package/dist/design-system76.js +152 -23
- package/dist/design-system76.js.map +1 -1
- package/dist/design-system78.js +5 -49
- package/dist/design-system78.js.map +1 -1
- package/dist/design-system79.js +32 -0
- package/dist/design-system79.js.map +1 -0
- package/dist/design-system80.js +2 -3
- package/dist/design-system80.js.map +1 -1
- package/dist/design-system81.js +38 -188
- package/dist/design-system81.js.map +1 -1
- package/dist/design-system83.js +1 -1
- package/dist/design-system83.js.map +1 -1
- package/dist/design-system84.js +199 -7
- package/dist/design-system84.js.map +1 -1
- package/dist/design-system86.js +8 -0
- package/dist/design-system86.js.map +1 -0
- package/dist/design-system87.js +7 -5
- package/dist/design-system87.js.map +1 -1
- package/dist/design-system88.js +264 -48
- package/dist/design-system88.js.map +1 -1
- package/dist/design-system90.js +1 -1
- package/dist/design-system90.js.map +1 -1
- package/dist/design-system91.js +57 -11
- package/dist/design-system91.js.map +1 -1
- package/dist/design-system93.js +8 -0
- package/dist/design-system93.js.map +1 -0
- package/dist/design-system94.js +11 -5
- package/dist/design-system94.js.map +1 -1
- package/dist/design-system95.js +92 -59
- package/dist/design-system95.js.map +1 -1
- package/dist/design-system97.js +1 -1
- package/dist/design-system97.js.map +1 -1
- package/dist/design-system98.js +56 -78
- package/dist/design-system98.js.map +1 -1
- package/dist/types/components/BContextMenu/BContextMenu.spec.d.ts +1 -0
- package/dist/types/components/BContextMenu/BContextMenu.vue.d.ts +42 -0
- package/dist/types/components/BContextMenu/index.d.ts +2 -0
- package/dist/types/components/BContextMenu/types.d.ts +23 -0
- package/dist/types/components/BInputTags/BInputTags.spec.d.ts +1 -0
- package/dist/types/components/BInputTags/BInputTags.vue.d.ts +54 -0
- package/dist/types/components/BInputTags/index.d.ts +1 -0
- package/dist/types/components/BLink/BLink.spec.d.ts +1 -0
- package/dist/types/components/BLink/BLink.vue.d.ts +100 -0
- package/dist/types/components/BLink/index.d.ts +1 -0
- package/dist/types/components/BListbox/BListbox.spec.d.ts +1 -0
- package/dist/types/components/BListbox/BListbox.vue.d.ts +52 -0
- package/dist/types/components/BListbox/index.d.ts +1 -0
- package/dist/types/components/BModal/BModal.spec.d.ts +1 -0
- package/dist/types/components/BPinInput/BPinInput.spec.d.ts +1 -0
- package/dist/types/components/BPinInput/BPinInput.vue.d.ts +43 -0
- package/dist/types/components/BPinInput/index.d.ts +1 -0
- package/dist/types/components/BProgress/BProgress.vue.d.ts +47 -2
- package/dist/types/components/BTextarea/BTextarea.spec.d.ts +1 -0
- package/dist/types/components/BTextarea/BTextarea.vue.d.ts +77 -0
- package/dist/types/components/BTextarea/index.d.ts +1 -0
- package/dist/types/components/index.d.ts +7 -1
- package/package.json +1 -1
- package/dist/design-system114.js +0 -212
- package/dist/design-system114.js.map +0 -1
- package/dist/design-system124.js +0 -277
- package/dist/design-system127.js +0 -19
- package/dist/design-system130.js +0 -15
- package/dist/design-system130.js.map +0 -1
- package/dist/design-system133.js +0 -8
- package/dist/design-system133.js.map +0 -1
- package/dist/design-system137.js +0 -236
- package/dist/design-system137.js.map +0 -1
- package/dist/design-system147.js +0 -40
- package/dist/design-system147.js.map +0 -1
- package/dist/design-system150.js +0 -7
- package/dist/design-system164.js +0 -61
- package/dist/design-system164.js.map +0 -1
- package/dist/design-system167.js +0 -59
- package/dist/design-system170.js +0 -72
- package/dist/design-system173.js +0 -185
- package/dist/design-system173.js.map +0 -1
- package/dist/design-system176.js +0 -118
- package/dist/design-system180.js +0 -465
- package/dist/design-system180.js.map +0 -1
- package/dist/design-system183.js +0 -38
- package/dist/design-system183.js.map +0 -1
- package/dist/design-system186.js +0 -91
- package/dist/design-system186.js.map +0 -1
- package/dist/design-system189.js +0 -38
- package/dist/design-system189.js.map +0 -1
- package/dist/design-system192.js +0 -31
- package/dist/design-system192.js.map +0 -1
- package/dist/design-system208.js +0 -7
- package/dist/design-system217.js +0 -7
- package/dist/design-system217.js.map +0 -1
- package/dist/design-system234.js +0 -286
- package/dist/design-system234.js.map +0 -1
- package/dist/design-system237.js +0 -122
- package/dist/design-system237.js.map +0 -1
- package/dist/design-system240.js +0 -115
- package/dist/design-system240.js.map +0 -1
- package/dist/design-system70.js +0 -699
- package/dist/design-system70.js.map +0 -1
- package/dist/design-system77.js +0 -7
- package/dist/design-system77.js.map +0 -1
- package/dist/design-system85.js +0 -276
- package/dist/design-system85.js.map +0 -1
- package/dist/design-system92.js +0 -102
- package/dist/design-system92.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system218.js","names":[],"sources":["../src/components/BSteps/BSteps.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport BIcon from '@/components/BIcon/BIcon.vue';\nimport {\n BCommonSize,\n BIconSize,\n BStepsDirection,\n BStepsLabelPlacement,\n BStepsStatus,\n BStepsType,\n type BStepItem,\n} from '@/types.ts';\nimport { computed, toRefs } from 'vue';\n\nexport interface BStepsProps {\n /**\n * The step items to render.\n */\n items?: BStepItem[];\n /**\n * Status applied to the current step if not overridden by the item.\n */\n status?: `${BStepsStatus}`;\n /**\n * Layout direction.\n */\n direction?: `${BStepsDirection}`;\n /**\n * Size of the step icons and text.\n */\n size?: `${BCommonSize}`;\n /**\n * Placement of labels for horizontal steps.\n */\n labelPlacement?: `${BStepsLabelPlacement}`;\n /**\n * Step type styling.\n */\n type?: `${BStepsType}`;\n}\n\nconst props = withDefaults(defineProps<BStepsProps>(), {\n items: () => [],\n status: BStepsStatus.Process,\n direction: BStepsDirection.Horizontal,\n size: BCommonSize.Medium,\n labelPlacement: BStepsLabelPlacement.Horizontal,\n type: BStepsType.Default,\n});\nconst { items, status, direction, size, labelPlacement, type } = toRefs(props);\nconst model = defineModel<number>({ default: 0 });\n\nconst emit = defineEmits<{\n /**\n * Emitted when the current step changes via user interaction.\n */\n change: [value: number];\n}>();\n\nconst normalizedSize = computed(() =>\n size.value === BCommonSize.Small ? BCommonSize.Small : BCommonSize.Medium,\n);\nconst iconSize = computed(() =>\n normalizedSize.value === BCommonSize.Small ? BIconSize.Small : BIconSize.Medium,\n);\n\nconst rootStyle = computed(() => ({\n '--b-steps-icon-size': normalizedSize.value === BCommonSize.Small ? '1.5rem' : '2rem',\n '--b-steps-gap': normalizedSize.value === BCommonSize.Small ? '0.5rem' : '0.75rem',\n}));\n\nconst titleSizeClass = computed(() =>\n normalizedSize.value === BCommonSize.Small ? 'b:text-sm' : 'b:text-base',\n);\nconst descriptionSizeClass = computed(() =>\n normalizedSize.value === BCommonSize.Small ? 'b:text-xs' : 'b:text-sm',\n);\n\nconst isClickable = computed(() => type.value === BStepsType.Navigation);\n\nconst getStepStatus = (item: BStepItem, index: number) => {\n if (item.status) {\n return item.status;\n }\n if (index === model.value) {\n return status.value || BStepsStatus.Process;\n }\n if (index < model.value) {\n return BStepsStatus.Finish;\n }\n return BStepsStatus.Wait;\n};\n\nconst getTailColor = (status: `${BStepsStatus}`) => {\n switch (status) {\n case BStepsStatus.Finish:\n case BStepsStatus.Process:\n return 'var(--b-color-primary)';\n case BStepsStatus.Error:\n return 'var(--b-color-failure)';\n case BStepsStatus.Wait:\n default:\n return 'var(--b-color-zinc-200)';\n }\n};\n\nconst onStepClick = (item: BStepItem, index: number) => {\n if (!isClickable.value || item.disabled) {\n return;\n }\n model.value = index;\n emit('change', index);\n};\n\nconst onStepKeydown = (event: KeyboardEvent, item: BStepItem, index: number) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onStepClick(item, index);\n }\n};\n\nconst iconClass = (status: `${BStepsStatus}`) => ({\n 'b:border-secondary b:bg-white b:text-secondary': status === BStepsStatus.Wait,\n 'b:border-primary b:bg-primary b:text-white': status === BStepsStatus.Process,\n 'b:border-primary b:bg-white b:text-primary': status === BStepsStatus.Finish,\n 'b:border-failure b:bg-white b:text-failure': status === BStepsStatus.Error,\n});\nconst titleClass = (status: `${BStepsStatus}`) => ({\n 'b:text-black-base': status === BStepsStatus.Process || status === BStepsStatus.Finish,\n 'b:text-failure': status === BStepsStatus.Error,\n 'b:text-black/65': status === BStepsStatus.Wait,\n});\nconst descriptionClass = (status: `${BStepsStatus}`) => ({\n 'b:text-black/65': status !== BStepsStatus.Error,\n 'b:text-failure': status === BStepsStatus.Error,\n});\n</script>\n\n<template>\n <ol\n class=\"b-steps\"\n :class=\"[\n {\n 'b-steps--horizontal': direction === BStepsDirection.Horizontal,\n 'b-steps--vertical': direction === BStepsDirection.Vertical,\n 'b-steps--label-vertical':\n direction === BStepsDirection.Horizontal &&\n labelPlacement === BStepsLabelPlacement.Vertical,\n 'b-steps--navigation': type === BStepsType.Navigation,\n 'b-steps--inline': type === BStepsType.Inline,\n },\n ]\"\n :style=\"rootStyle\"\n >\n <li\n v-for=\"(item, index) in items\"\n :key=\"`${item.title}-${index}`\"\n class=\"b-steps__item\"\n :class=\"[\n { 'b:opacity-50': item.disabled },\n { 'b-steps__item--clickable': isClickable && !item.disabled },\n ]\"\n :data-status=\"getStepStatus(item, index)\"\n :style=\"{ '--b-steps-tail-color': getTailColor(getStepStatus(item, index)) }\"\n >\n <div\n class=\"b-steps__item-inner\"\n :role=\"isClickable && !item.disabled ? 'button' : undefined\"\n :tabindex=\"isClickable && !item.disabled ? 0 : undefined\"\n :aria-disabled=\"item.disabled ? 'true' : undefined\"\n :aria-current=\"index === model ? 'step' : undefined\"\n @click=\"onStepClick(item, index)\"\n @keydown=\"onStepKeydown($event, item, index)\"\n >\n <div\n class=\"b-steps__icon b:flex b:items-center b:justify-center b:rounded-full b:border\"\n :class=\"[\n iconClass(getStepStatus(item, index)),\n {\n 'b:h-6 b:w-6': normalizedSize === BCommonSize.Small,\n 'b:h-8 b:w-8': normalizedSize === BCommonSize.Medium,\n },\n ]\"\n >\n <template v-if=\"item.icon\">\n <BIcon :icon=\"item.icon\" :size=\"iconSize\" />\n </template>\n <template v-else-if=\"getStepStatus(item, index) === BStepsStatus.Finish\">\n <BIcon icon=\"check\" :size=\"iconSize\" />\n </template>\n <template v-else-if=\"getStepStatus(item, index) === BStepsStatus.Error\">\n <BIcon icon=\"xmark\" :size=\"iconSize\" />\n </template>\n <template v-else>\n <span :class=\"titleSizeClass\">{{ index + 1 }}</span>\n </template>\n </div>\n\n <div\n class=\"b-steps__content b:flex b:flex-col b:gap-y-1\"\n :class=\"[\n {\n 'b:items-center b:text-center':\n direction === BStepsDirection.Horizontal &&\n labelPlacement === BStepsLabelPlacement.Vertical,\n },\n ]\"\n >\n <div class=\"b:flex b:items-center b:gap-x-2\">\n <span\n class=\"b:font-medium\"\n :class=\"[titleSizeClass, titleClass(getStepStatus(item, index))]\"\n >\n {{ item.title }}\n </span>\n <span\n v-if=\"item.subTitle\"\n class=\"b:text-xs b:text-black/65\"\n :class=\"titleClass(getStepStatus(item, index))\"\n >\n {{ item.subTitle }}\n </span>\n </div>\n <p\n v-if=\"item.description\"\n class=\"b:leading-snug\"\n :class=\"[descriptionSizeClass, descriptionClass(getStepStatus(item, index))]\"\n >\n {{ item.description }}\n </p>\n </div>\n </div>\n <span\n v-if=\"direction === BStepsDirection.Horizontal && index < items.length - 1\"\n aria-hidden=\"true\"\n class=\"b-steps__tail\"\n />\n </li>\n </ol>\n</template>\n\n<style scoped>\n.b-steps {\n display: flex;\n gap: var(--b-steps-gap);\n}\n\n.b-steps--vertical {\n flex-direction: column;\n}\n\n.b-steps__item {\n position: relative;\n flex: 1;\n min-width: 0;\n}\n\n.b-steps__item-inner {\n display: flex;\n align-items: flex-start;\n gap: var(--b-steps-gap);\n flex: 0 1 auto;\n min-width: 0;\n}\n\n.b-steps__icon {\n flex-shrink: 0;\n}\n\n.b-steps__content {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.b-steps--label-vertical .b-steps__item-inner {\n flex-direction: column;\n align-items: center;\n}\n\n.b-steps--inline .b-steps__item-inner {\n align-items: center;\n}\n\n.b-steps--inline .b-steps__content {\n flex-direction: row;\n align-items: center;\n gap: var(--b-steps-gap);\n}\n\n.b-steps--inline .b-steps__content p {\n display: none;\n}\n\n.b-steps__item--clickable .b-steps__item-inner {\n cursor: pointer;\n}\n\n.b-steps--horizontal .b-steps__item {\n display: flex;\n align-items: flex-start;\n gap: var(--b-steps-gap);\n}\n\n.b-steps--vertical .b-steps__item {\n padding-bottom: var(--b-steps-gap);\n}\n\n.b-steps--vertical .b-steps__item::after {\n content: '';\n position: absolute;\n top: calc(var(--b-steps-icon-size) + var(--b-steps-gap));\n left: calc(var(--b-steps-icon-size) / 2);\n bottom: 0;\n width: 1px;\n background-color: var(--b-steps-tail-color);\n}\n\n.b-steps--vertical .b-steps__item:last-child::after {\n display: none;\n}\n\n.b-steps__tail {\n flex: 1 1 0;\n min-width: 1.5rem;\n height: 1px;\n margin-top: calc(var(--b-steps-icon-size) / 2);\n background-color: var(--b-steps-tail-color);\n}\n\n.b-steps--navigation .b-steps__item--clickable .b-steps__content {\n transition: color 0.2s ease;\n}\n\n.b-steps--navigation .b-steps__item--clickable:hover .b-steps__content {\n color: var(--b-color-primary);\n}\n</style>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"design-system218.js","names":[],"sources":["../src/components/BSlider/BSlider.vue"],"sourcesContent":["<script lang=\"ts\" setup>\ndefineOptions({ inheritAttrs: false });\n\nimport { computed, onBeforeUnmount, ref, useAttrs } from 'vue';\nimport type { BSliderMarks, BSliderRange, BSliderTooltip } from './types.ts';\n\nconst attrs = useAttrs();\n\n//#region Props\nconst {\n disabled = false,\n dots = false,\n included = true,\n keyboard = true,\n max = 100,\n min = 0,\n range = false,\n reverse = false,\n step = 1,\n vertical = false,\n tooltip = {},\n marks,\n} = defineProps<{\n /** Whether the slider is disabled. */\n disabled?: boolean;\n /** Whether only dots can be selected (step snap). */\n dots?: boolean;\n /** Whether the track between handles is filled. */\n included?: boolean;\n /** Whether keyboard navigation is enabled. */\n keyboard?: boolean;\n /** Maximum value. */\n max?: number;\n /** Minimum value. */\n min?: number;\n /** Whether range mode is enabled (dual handles). Can also be an object with draggableTrack. */\n range?: boolean | BSliderRange;\n /** Whether the slider is reversed. */\n reverse?: boolean;\n /** Step granularity. null means only marks are selectable. */\n step?: number | null;\n /** Whether the slider is vertical. */\n vertical?: boolean;\n /** Tooltip configuration. */\n tooltip?: BSliderTooltip;\n /** Tick marks on the slider. Keys are percentages (0–100 mapped to min–max). */\n marks?: BSliderMarks;\n}>();\n\nconst model = defineModel<number | [number, number]>({ default: 0 });\n\nconst emit = defineEmits<{\n change: [value: number | [number, number]];\n changeComplete: [value: number | [number, number]];\n}>();\n//#endregion\n\n//#region Internal state\nconst railRef = ref<HTMLElement | null>(null);\nconst rootRef = ref<HTMLElement | null>(null);\n\nconst dragging = ref<null | 'lower' | 'upper' | 'track'>(null);\nconst hovered = ref(false);\nconst focusedHandle = ref<'lower' | 'upper' | null>(null);\nconst tooltipVisible = ref<{ lower: boolean; upper: boolean }>({ lower: false, upper: false });\n\nconst trackDragStartValue = ref<[number, number] | null>(null);\nconst trackDragStartPos = ref(0);\n//#endregion\n\n//#region Computed values\nconst isRange = computed(() => range !== false);\nconst draggableTrack = computed(() => typeof range === 'object' && range.draggableTrack);\n\nconst lowerValue = computed(() => {\n if (isRange.value) {\n const v = model.value as [number, number];\n return v[0];\n }\n return min;\n});\n\nconst upperValue = computed(() => {\n if (isRange.value) {\n const v = model.value as [number, number];\n return v[1];\n }\n return model.value as number;\n});\n\nfunction valueToPercent(value: number): number {\n if (max === min) return 0;\n return ((value - min) / (max - min)) * 100;\n}\n\nfunction percentToValue(percent: number): number {\n const raw = min + (percent / 100) * (max - min);\n return snapToStep(raw);\n}\n\nfunction snapToStep(value: number): number {\n if (step === null) {\n if (!marks) return clamp(value);\n const markValues = Object.keys(marks).map(Number);\n let closest = markValues[0] ?? min;\n let closestDist = Math.abs(value - closest);\n for (const mv of markValues) {\n const dist = Math.abs(value - mv);\n if (dist < closestDist) {\n closest = mv;\n closestDist = dist;\n }\n }\n return clamp(closest);\n }\n const stepped = Math.round((value - min) / step) * step + min;\n return clamp(stepped);\n}\n\nfunction clamp(value: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\nconst lowerPercent = computed(() => valueToPercent(lowerValue.value));\nconst upperPercent = computed(() => valueToPercent(upperValue.value));\n\nconst trackStyle = computed(() => {\n const start = isRange.value ? lowerPercent.value : 0;\n const length = isRange.value\n ? upperPercent.value - lowerPercent.value\n : upperPercent.value;\n\n if (vertical) {\n return reverse\n ? { top: `${100 - start - length}%`, height: `${length}%` }\n : { bottom: `${100 - start - length}%`, height: `${length}%` };\n }\n return reverse\n ? { right: `${start}%`, width: `${length}%` }\n : { left: `${start}%`, width: `${length}%` };\n});\n\nconst lowerHandleStyle = computed(() => {\n const pct = lowerPercent.value;\n if (vertical) {\n return reverse ? { top: `${100 - pct}%` } : { bottom: `${100 - pct}%` };\n }\n return reverse ? { right: `${pct}%` } : { left: `${pct}%` };\n});\n\nconst upperHandleStyle = computed(() => {\n const pct = upperPercent.value;\n if (vertical) {\n return reverse ? { top: `${100 - pct}%` } : { bottom: `${100 - pct}%` };\n }\n return reverse ? { right: `${pct}%` } : { left: `${pct}%` };\n});\n\nconst markList = computed(() => {\n if (!marks) return [];\n return Object.entries(marks).map(([key, val]) => {\n const numKey = Number(key);\n const percent = valueToPercent(numKey);\n const isActive =\n included &&\n (isRange.value\n ? numKey >= lowerValue.value && numKey <= upperValue.value\n : numKey <= upperValue.value);\n const label = typeof val === 'string' ? val : val.label;\n const style = typeof val === 'object' ? val.style : undefined;\n return { value: numKey, percent, isActive, label, style };\n });\n});\n\nconst dotList = computed(() => {\n if (!dots || step === null) return [];\n const result: { value: number; percent: number; isActive: boolean }[] = [];\n for (let v = min; v <= max; v += step) {\n const percent = valueToPercent(v);\n const isActive =\n included &&\n (isRange.value\n ? v >= lowerValue.value && v <= upperValue.value\n : v <= upperValue.value);\n result.push({ value: v, percent, isActive });\n }\n return result;\n});\n\nfunction formatTooltip(value: number): string | null {\n if (tooltip.formatter === null) return null;\n if (tooltip.formatter) return tooltip.formatter(value);\n return String(value);\n}\n\nconst lowerTooltipText = computed(() => formatTooltip(lowerValue.value));\nconst upperTooltipText = computed(() => formatTooltip(upperValue.value));\n\nconst showLowerTooltip = computed(() => {\n if (tooltip.formatter === null) return false;\n if (tooltip.open !== undefined) return tooltip.open;\n return tooltipVisible.value.lower || dragging.value === 'lower' || dragging.value === 'track';\n});\n\nconst showUpperTooltip = computed(() => {\n if (tooltip.formatter === null) return false;\n if (tooltip.open !== undefined) return tooltip.open;\n return tooltipVisible.value.upper || dragging.value === 'upper' || dragging.value === 'track';\n});\n//#endregion\n\n//#region Event handlers\nfunction getPercentFromEvent(event: MouseEvent | TouchEvent): number {\n if (!railRef.value) return 0;\n const rect = railRef.value.getBoundingClientRect();\n let clientPos: number;\n let size: number;\n\n if ('touches' in event) {\n clientPos = vertical ? event.touches[0].clientY : event.touches[0].clientX;\n } else {\n clientPos = vertical ? event.clientY : event.clientX;\n }\n\n if (vertical) {\n size = rect.height;\n const offset = clientPos - rect.top;\n return reverse ? (offset / size) * 100 : ((size - offset) / size) * 100;\n } else {\n size = rect.width;\n const offset = clientPos - rect.left;\n return reverse ? ((size - offset) / size) * 100 : (offset / size) * 100;\n }\n}\n\nfunction getCloserHandle(percent: number): 'lower' | 'upper' {\n if (!isRange.value) return 'upper';\n const distToLower = Math.abs(percent - lowerPercent.value);\n const distToUpper = Math.abs(percent - upperPercent.value);\n if (distToLower < distToUpper) return 'lower';\n if (distToUpper < distToLower) return 'upper';\n return percent < lowerPercent.value ? 'lower' : 'upper';\n}\n\nfunction updateValue(handle: 'lower' | 'upper', newValue: number) {\n if (isRange.value) {\n const current = model.value as [number, number];\n let updated: [number, number];\n if (handle === 'lower') {\n updated = [Math.min(newValue, current[1]), current[1]];\n } else {\n updated = [current[0], Math.max(newValue, current[0])];\n }\n model.value = updated;\n emit('change', updated);\n } else {\n model.value = newValue;\n emit('change', newValue);\n }\n}\n\nfunction handleRailClick(event: MouseEvent) {\n if (disabled) return;\n if ((event.target as HTMLElement).closest('.b-slider__handle')) return;\n\n const percent = getPercentFromEvent(event);\n const value = percentToValue(percent);\n const handle = getCloserHandle(percent);\n\n if (draggableTrack.value && isRange.value) {\n const lp = lowerPercent.value;\n const up = upperPercent.value;\n if (percent >= lp && percent <= up) return;\n }\n\n updateValue(handle, value);\n emit('changeComplete', isRange.value ? (model.value as [number, number]) : (model.value as number));\n}\n\nfunction handleDragStart(handle: 'lower' | 'upper' | 'track', event: MouseEvent | TouchEvent) {\n if (disabled) return;\n event.preventDefault();\n dragging.value = handle;\n\n if (handle === 'track' && isRange.value) {\n trackDragStartValue.value = [...(model.value as [number, number])] as [number, number];\n trackDragStartPos.value = getPercentFromEvent(event);\n }\n\n document.addEventListener('mousemove', handleDragMove);\n document.addEventListener('mouseup', handleDragEnd);\n document.addEventListener('touchmove', handleDragMove);\n document.addEventListener('touchend', handleDragEnd);\n}\n\nfunction handleDragMove(event: MouseEvent | TouchEvent) {\n if (!dragging.value || disabled) return;\n const percent = getPercentFromEvent(event);\n\n if (dragging.value === 'track' && trackDragStartValue.value) {\n const delta = percent - trackDragStartPos.value;\n const startLower = trackDragStartValue.value[0];\n const startUpper = trackDragStartValue.value[1];\n const lowerPct = valueToPercent(startLower) + delta;\n const upperPct = valueToPercent(startUpper) + delta;\n\n const newLower = percentToValue(lowerPct);\n const newUpper = percentToValue(upperPct);\n\n if (newLower >= min && newUpper <= max) {\n model.value = [newLower, newUpper];\n emit('change', [newLower, newUpper]);\n }\n return;\n }\n\n const value = percentToValue(percent);\n updateValue(dragging.value as 'lower' | 'upper', value);\n}\n\nfunction handleDragEnd() {\n if (dragging.value) {\n emit('changeComplete', isRange.value ? (model.value as [number, number]) : (model.value as number));\n }\n dragging.value = null;\n trackDragStartValue.value = null;\n document.removeEventListener('mousemove', handleDragMove);\n document.removeEventListener('mouseup', handleDragEnd);\n document.removeEventListener('touchmove', handleDragMove);\n document.removeEventListener('touchend', handleDragEnd);\n}\n\nfunction handleKeyDown(event: KeyboardEvent, handle: 'lower' | 'upper') {\n if (disabled || !keyboard) return;\n const effectiveStep = step ?? 1;\n let delta = 0;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = effectiveStep;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = -effectiveStep;\n break;\n case 'Home':\n delta = min - (handle === 'lower' ? lowerValue.value : upperValue.value);\n break;\n case 'End':\n delta = max - (handle === 'lower' ? lowerValue.value : upperValue.value);\n break;\n default:\n return;\n }\n\n event.preventDefault();\n const currentVal = handle === 'lower' ? lowerValue.value : upperValue.value;\n const newValue = snapToStep(currentVal + delta);\n updateValue(handle, newValue);\n emit('changeComplete', isRange.value ? (model.value as [number, number]) : (model.value as number));\n}\n\nfunction handleHandleFocus(handle: 'lower' | 'upper') {\n focusedHandle.value = handle;\n tooltipVisible.value[handle] = true;\n}\n\nfunction handleHandleBlur(handle: 'lower' | 'upper') {\n focusedHandle.value = null;\n tooltipVisible.value[handle] = false;\n}\n\nfunction handleHandleMouseEnter(handle: 'lower' | 'upper') {\n tooltipVisible.value[handle] = true;\n}\n\nfunction handleHandleMouseLeave(handle: 'lower' | 'upper') {\n if (focusedHandle.value !== handle && dragging.value !== handle) {\n tooltipVisible.value[handle] = false;\n }\n}\n\nfunction handleMouseEnter() {\n hovered.value = true;\n}\n\nfunction handleMouseLeave() {\n hovered.value = false;\n}\n\nfunction handleTrackMouseDown(event: MouseEvent) {\n if (disabled || !draggableTrack.value) return;\n handleDragStart('track', event);\n}\n//#endregion\n\n//#region Expose\nfunction focus() {\n const el = rootRef.value?.querySelector('.b-slider__handle') as HTMLElement | null;\n el?.focus();\n}\n\nfunction blur() {\n const el = rootRef.value?.querySelector('.b-slider__handle:focus') as HTMLElement | null;\n el?.blur();\n}\n\ndefineExpose({ focus, blur });\n//#endregion\n\n//#region Cleanup\nonBeforeUnmount(() => {\n document.removeEventListener('mousemove', handleDragMove);\n document.removeEventListener('mouseup', handleDragEnd);\n document.removeEventListener('touchmove', handleDragMove);\n document.removeEventListener('touchend', handleDragEnd);\n});\n//#endregion\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n class=\"b-slider\"\n :class=\"[\n {\n 'b-slider--vertical': vertical,\n 'b-slider--disabled': disabled,\n 'b-slider--with-marks': !!marks,\n 'b-slider--reverse': reverse,\n 'b-slider--hovered': hovered,\n },\n ]\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <!-- Rail -->\n <div\n ref=\"railRef\"\n class=\"b-slider__rail\"\n @mousedown=\"handleRailClick\"\n >\n <!-- Track -->\n <div\n v-if=\"included\"\n class=\"b-slider__track\"\n :style=\"trackStyle\"\n @mousedown.stop=\"handleTrackMouseDown\"\n />\n\n <!-- Dots -->\n <span\n v-for=\"dot in dotList\"\n :key=\"`dot-${dot.value}`\"\n class=\"b-slider__dot\"\n :class=\"{ 'b-slider__dot--active': dot.isActive }\"\n :style=\"vertical\n ? (reverse ? { top: `${100 - dot.percent}%` } : { bottom: `${100 - dot.percent}%` })\n : (reverse ? { right: `${dot.percent}%` } : { left: `${dot.percent}%` })\n \"\n />\n\n <!-- Marks -->\n <span\n v-for=\"mark in markList\"\n :key=\"`mark-dot-${mark.value}`\"\n class=\"b-slider__dot\"\n :class=\"{ 'b-slider__dot--active': mark.isActive }\"\n :style=\"vertical\n ? (reverse ? { top: `${100 - mark.percent}%` } : { bottom: `${100 - mark.percent}%` })\n : (reverse ? { right: `${mark.percent}%` } : { left: `${mark.percent}%` })\n \"\n />\n\n <!-- Lower handle (range only) -->\n <div\n v-if=\"isRange\"\n class=\"b-slider__handle\"\n :class=\"{\n 'b-slider__handle--active': dragging === 'lower' || focusedHandle === 'lower',\n }\"\n :style=\"lowerHandleStyle\"\n role=\"slider\"\n :tabindex=\"disabled ? -1 : 0\"\n :aria-valuemin=\"min\"\n :aria-valuemax=\"upperValue\"\n :aria-valuenow=\"lowerValue\"\n :aria-disabled=\"disabled || undefined\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n :aria-label=\"(attrs['aria-label'] as string) ? `${attrs['aria-label']} - minimum` : 'Minimum'\"\n @mousedown=\"(e) => handleDragStart('lower', e)\"\n @touchstart=\"(e) => handleDragStart('lower', e)\"\n @keydown=\"(e) => handleKeyDown(e, 'lower')\"\n @focus=\"handleHandleFocus('lower')\"\n @blur=\"handleHandleBlur('lower')\"\n @mouseenter=\"handleHandleMouseEnter('lower')\"\n @mouseleave=\"handleHandleMouseLeave('lower')\"\n >\n <div\n v-if=\"lowerTooltipText !== null\"\n class=\"b-slider__tooltip\"\n :class=\"{ 'b-slider__tooltip--visible': showLowerTooltip }\"\n role=\"tooltip\"\n >\n {{ lowerTooltipText }}\n </div>\n </div>\n\n <!-- Upper handle (always) -->\n <div\n class=\"b-slider__handle\"\n :class=\"{\n 'b-slider__handle--active': dragging === 'upper' || focusedHandle === 'upper',\n }\"\n :style=\"upperHandleStyle\"\n role=\"slider\"\n :tabindex=\"disabled ? -1 : 0\"\n :aria-valuemin=\"isRange ? lowerValue : min\"\n :aria-valuemax=\"max\"\n :aria-valuenow=\"upperValue\"\n :aria-disabled=\"disabled || undefined\"\n :aria-orientation=\"vertical ? 'vertical' : 'horizontal'\"\n :aria-label=\"(attrs['aria-label'] as string) || (isRange ? 'Maximum' : 'Slider')\"\n @mousedown=\"(e) => handleDragStart('upper', e)\"\n @touchstart=\"(e) => handleDragStart('upper', e)\"\n @keydown=\"(e) => handleKeyDown(e, 'upper')\"\n @focus=\"handleHandleFocus('upper')\"\n @blur=\"handleHandleBlur('upper')\"\n @mouseenter=\"handleHandleMouseEnter('upper')\"\n @mouseleave=\"handleHandleMouseLeave('upper')\"\n >\n <div\n v-if=\"upperTooltipText !== null\"\n class=\"b-slider__tooltip\"\n :class=\"{ 'b-slider__tooltip--visible': showUpperTooltip }\"\n role=\"tooltip\"\n >\n {{ upperTooltipText }}\n </div>\n </div>\n </div>\n\n <!-- Mark labels -->\n <div v-if=\"marks\" class=\"b-slider__marks\">\n <span\n v-for=\"mark in markList\"\n :key=\"`mark-label-${mark.value}`\"\n class=\"b-slider__mark-text\"\n :class=\"{ 'b-slider__mark-text--active': mark.isActive }\"\n :style=\"{\n ...(vertical\n ? (reverse ? { top: `${100 - mark.percent}%` } : { bottom: `${100 - mark.percent}%` })\n : (reverse ? { right: `${mark.percent}%` } : { left: `${mark.percent}%` })\n ),\n ...mark.style,\n }\"\n >\n {{ mark.label }}\n </span>\n </div>\n </div>\n</template>\n\n<style>\n.b-slider {\n --b-slider-rail-bg: rgba(0, 0, 0, 0.04);\n --b-slider-rail-hover-bg: rgba(0, 0, 0, 0.06);\n --b-slider-rail-size: 4px;\n --b-slider-track-bg: #91caff;\n --b-slider-track-bg-disabled: rgba(0, 0, 0, 0.04);\n --b-slider-track-hover-bg: #69b1ff;\n --b-slider-handle-color: #91caff;\n --b-slider-handle-color-disabled: #bfbfbf;\n --b-slider-handle-active-color: #1677ff;\n --b-slider-handle-active-outline-color: rgba(22, 119, 255, 0.2);\n --b-slider-handle-line-width: 2px;\n --b-slider-handle-line-width-hover: 2.5px;\n --b-slider-handle-size: 10px;\n --b-slider-handle-size-hover: 12px;\n --b-slider-dot-border-color: #f0f0f0;\n --b-slider-dot-active-border-color: #91caff;\n --b-slider-dot-size: 8px;\n --b-slider-control-size: 10px;\n\n position: relative;\n box-sizing: border-box;\n padding: 4px 0;\n cursor: pointer;\n touch-action: none;\n}\n\n.b-slider--vertical {\n display: inline-block;\n height: 100%;\n min-height: 200px;\n padding: 0 4px;\n}\n\n.b-slider--disabled {\n cursor: not-allowed;\n}\n\n/* Rail */\n.b-slider__rail {\n position: relative;\n width: 100%;\n height: var(--b-slider-rail-size);\n background-color: var(--b-slider-rail-bg);\n border-radius: calc(var(--b-slider-rail-size) / 2);\n transition: background-color 0.2s;\n}\n\n.b-slider--hovered:not(.b-slider--disabled) .b-slider__rail {\n background-color: var(--b-slider-rail-hover-bg);\n}\n\n.b-slider--vertical .b-slider__rail {\n width: var(--b-slider-rail-size);\n height: 100%;\n}\n\n/* Track */\n.b-slider__track {\n position: absolute;\n height: 100%;\n background-color: var(--b-slider-track-bg);\n border-radius: calc(var(--b-slider-rail-size) / 2);\n transition: background-color 0.2s;\n}\n\n.b-slider--hovered:not(.b-slider--disabled) .b-slider__track {\n background-color: var(--b-slider-track-hover-bg);\n}\n\n.b-slider--disabled .b-slider__track {\n background-color: var(--b-slider-track-bg-disabled);\n}\n\n.b-slider--vertical .b-slider__track {\n width: 100%;\n height: auto;\n}\n\n/* Handle */\n.b-slider__handle {\n position: absolute;\n top: 50%;\n width: var(--b-slider-handle-size);\n height: var(--b-slider-handle-size);\n background-color: #fff;\n border: var(--b-slider-handle-line-width) solid var(--b-slider-handle-color);\n border-radius: 50%;\n transform: translate(-50%, -50%);\n cursor: grab;\n outline: none;\n transition:\n width 0.2s,\n height 0.2s,\n border-color 0.2s,\n border-width 0.2s,\n box-shadow 0.2s;\n touch-action: none;\n z-index: 1;\n}\n\n.b-slider--vertical .b-slider__handle {\n top: auto;\n left: 50%;\n transform: translate(-50%, 50%);\n}\n\n.b-slider__handle:hover,\n.b-slider__handle:focus-visible {\n width: var(--b-slider-handle-size-hover);\n height: var(--b-slider-handle-size-hover);\n border-width: var(--b-slider-handle-line-width-hover);\n border-color: var(--b-slider-handle-active-color);\n}\n\n.b-slider__handle--active {\n width: var(--b-slider-handle-size-hover);\n height: var(--b-slider-handle-size-hover);\n border-width: var(--b-slider-handle-line-width-hover);\n border-color: var(--b-slider-handle-active-color);\n box-shadow: 0 0 0 4px var(--b-slider-handle-active-outline-color);\n cursor: grabbing;\n}\n\n.b-slider__handle:focus-visible {\n box-shadow: 0 0 0 4px var(--b-slider-handle-active-outline-color);\n}\n\n.b-slider--disabled .b-slider__handle {\n border-color: var(--b-slider-handle-color-disabled);\n cursor: not-allowed;\n box-shadow: none;\n}\n\n.b-slider--disabled .b-slider__handle:hover,\n.b-slider--disabled .b-slider__handle:focus-visible {\n width: var(--b-slider-handle-size);\n height: var(--b-slider-handle-size);\n border-width: var(--b-slider-handle-line-width);\n border-color: var(--b-slider-handle-color-disabled);\n box-shadow: none;\n}\n\n/* Tooltip */\n.b-slider__tooltip {\n position: absolute;\n bottom: calc(100% + 8px);\n left: 50%;\n transform: translateX(-50%) scale(0.8);\n padding: 4px 8px;\n background-color: rgba(0, 0, 0, 0.85);\n color: #fff;\n font-size: 12px;\n line-height: 1.4;\n border-radius: 4px;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n transition:\n opacity 0.2s,\n transform 0.2s;\n}\n\n.b-slider__tooltip--visible {\n opacity: 1;\n transform: translateX(-50%) scale(1);\n}\n\n.b-slider--vertical .b-slider__tooltip {\n bottom: auto;\n left: calc(100% + 8px);\n top: 50%;\n transform: translateY(-50%) scale(0.8);\n}\n\n.b-slider--vertical .b-slider__tooltip--visible {\n transform: translateY(-50%) scale(1);\n}\n\n/* Dots */\n.b-slider__dot {\n position: absolute;\n top: 50%;\n width: var(--b-slider-dot-size);\n height: var(--b-slider-dot-size);\n background-color: #fff;\n border: 2px solid var(--b-slider-dot-border-color);\n border-radius: 50%;\n transform: translate(-50%, -50%);\n}\n\n.b-slider--vertical .b-slider__dot {\n top: auto;\n left: 50%;\n transform: translate(-50%, 50%);\n}\n\n.b-slider__dot--active {\n border-color: var(--b-slider-dot-active-border-color);\n}\n\n/* Marks */\n.b-slider__marks {\n position: relative;\n}\n\n.b-slider--vertical .b-slider__marks {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 3;\n pointer-events: none;\n}\n\n.b-slider__mark-text {\n position: absolute;\n top: 8px;\n transform: translateX(-50%);\n font-size: 12px;\n color: rgba(0, 0, 0, 0.65);\n white-space: nowrap;\n user-select: none;\n}\n\n.b-slider--vertical .b-slider__mark-text {\n top: auto;\n left: 20px;\n transform: translateY(50%);\n}\n\n.b-slider__mark-text--active {\n color: rgba(0, 0, 0, 0.88);\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-slider {\n --b-slider-rail-bg: rgba(255, 255, 255, 0.08);\n --b-slider-rail-hover-bg: rgba(255, 255, 255, 0.12);\n --b-slider-track-bg: #177ddc;\n --b-slider-track-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-slider-track-hover-bg: #3c9ae8;\n --b-slider-handle-color: #177ddc;\n --b-slider-handle-color-disabled: rgba(255, 255, 255, 0.3);\n --b-slider-handle-active-color: #3c9ae8;\n --b-slider-handle-active-outline-color: rgba(23, 125, 220, 0.2);\n --b-slider-dot-border-color: rgba(255, 255, 255, 0.12);\n --b-slider-dot-active-border-color: #177ddc;\n}\n\n[data-prefers-color='dark'] .b-slider__tooltip {\n background-color: rgba(255, 255, 255, 0.9);\n color: #141414;\n}\n\n[data-prefers-color='dark'] .b-slider__handle {\n background-color: #141414;\n}\n\n[data-prefers-color='dark'] .b-slider__mark-text {\n color: rgba(255, 255, 255, 0.65);\n}\n\n[data-prefers-color='dark'] .b-slider__mark-text--active {\n color: rgba(255, 255, 255, 0.88);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-slider {\n --b-slider-rail-bg: rgba(255, 255, 255, 0.08);\n --b-slider-rail-hover-bg: rgba(255, 255, 255, 0.12);\n --b-slider-track-bg: #177ddc;\n --b-slider-track-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-slider-track-hover-bg: #3c9ae8;\n --b-slider-handle-color: #177ddc;\n --b-slider-handle-color-disabled: rgba(255, 255, 255, 0.3);\n --b-slider-handle-active-color: #3c9ae8;\n --b-slider-handle-active-outline-color: rgba(23, 125, 220, 0.2);\n --b-slider-dot-border-color: rgba(255, 255, 255, 0.12);\n --b-slider-dot-active-border-color: #177ddc;\n }\n [data-prefers-color='system'] .b-slider__tooltip {\n background-color: rgba(255, 255, 255, 0.9);\n color: #141414;\n }\n [data-prefers-color='system'] .b-slider__handle {\n background-color: #141414;\n }\n [data-prefers-color='system'] .b-slider__mark-text {\n color: rgba(255, 255, 255, 0.65);\n }\n [data-prefers-color='system'] .b-slider__mark-text--active {\n color: rgba(255, 255, 255, 0.88);\n }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .b-slider__handle,\n .b-slider__track,\n .b-slider__rail,\n .b-slider__tooltip {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { BSpinSize as e } from "./design-system3.js";
|
|
2
|
+
import { Fragment as t, Teleport as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createStaticVNode as l, createTextVNode as u, createVNode as d, defineComponent as f, normalizeClass as p, openBlock as m, ref as h, renderSlot as g, toDisplayString as _, unref as v, useId as y, useSlots as b, watch as x, withCtx as S } from "vue";
|
|
3
|
+
//#region src/components/BSpin/BSpin.vue?vue&type=script&setup=true&lang.ts
|
|
4
|
+
var C = ["aria-label", "aria-describedby"], w = {
|
|
5
|
+
class: "b-spin__indicator",
|
|
6
|
+
"aria-hidden": "true"
|
|
7
|
+
}, T = ["id"], E = ["aria-label", "aria-describedby"], D = {
|
|
8
|
+
class: "b-spin__indicator",
|
|
9
|
+
"aria-hidden": "true"
|
|
10
|
+
}, O = ["id"], k = ["aria-label", "aria-describedby"], A = {
|
|
11
|
+
class: "b-spin__indicator",
|
|
12
|
+
"aria-hidden": "true"
|
|
13
|
+
}, j = ["id"], M = ["aria-busy", "inert"], N = /* @__PURE__ */ f({
|
|
14
|
+
__name: "BSpin",
|
|
15
|
+
props: {
|
|
16
|
+
spinning: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
default: !0
|
|
19
|
+
},
|
|
20
|
+
size: { default: () => e.Default },
|
|
21
|
+
tip: { default: "" },
|
|
22
|
+
delay: { default: 0 },
|
|
23
|
+
fullscreen: {
|
|
24
|
+
type: Boolean,
|
|
25
|
+
default: !1
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
setup(e) {
|
|
29
|
+
let f = b(), N = y(), P = h(!1), F;
|
|
30
|
+
function I(t) {
|
|
31
|
+
clearTimeout(F), t && e.delay > 0 ? F = setTimeout(() => {
|
|
32
|
+
P.value = !0;
|
|
33
|
+
}, e.delay) : P.value = t;
|
|
34
|
+
}
|
|
35
|
+
I(e.spinning), x(() => e.spinning, I);
|
|
36
|
+
let L = i(() => !!f.default), R = i(() => !!(e.tip || f.tip)), z = i(() => [
|
|
37
|
+
"b-spin",
|
|
38
|
+
`b-spin--${e.size}`,
|
|
39
|
+
{
|
|
40
|
+
"b-spin--spinning": P.value,
|
|
41
|
+
"b-spin--nested": L.value,
|
|
42
|
+
"b-spin--has-tip": R.value,
|
|
43
|
+
"b-spin--fullscreen": e.fullscreen
|
|
44
|
+
}
|
|
45
|
+
]);
|
|
46
|
+
return (i, f) => e.fullscreen ? (m(), a(n, {
|
|
47
|
+
key: 0,
|
|
48
|
+
to: "body"
|
|
49
|
+
}, [d(r, { name: "b-spin-fade" }, {
|
|
50
|
+
default: S(() => [P.value ? (m(), s("div", {
|
|
51
|
+
key: 0,
|
|
52
|
+
class: p(["b-spin b-spin--fullscreen", [`b-spin--${e.size}`, {
|
|
53
|
+
"b-spin--spinning": P.value,
|
|
54
|
+
"b-spin--has-tip": R.value
|
|
55
|
+
}]]),
|
|
56
|
+
role: "status",
|
|
57
|
+
"aria-label": R.value ? void 0 : "Loading",
|
|
58
|
+
"aria-describedby": R.value ? v(N) : void 0
|
|
59
|
+
}, [c("div", w, [g(i.$slots, "indicator", {}, () => [f[0] ||= c("span", { class: "b-spin__dot" }, [
|
|
60
|
+
c("i", { class: "b-spin__dot-item" }),
|
|
61
|
+
c("i", { class: "b-spin__dot-item" }),
|
|
62
|
+
c("i", { class: "b-spin__dot-item" }),
|
|
63
|
+
c("i", { class: "b-spin__dot-item" })
|
|
64
|
+
], -1)])]), R.value ? (m(), s("div", {
|
|
65
|
+
key: 0,
|
|
66
|
+
id: v(N),
|
|
67
|
+
class: "b-spin__tip"
|
|
68
|
+
}, [g(i.$slots, "tip", {}, () => [u(_(e.tip), 1)])], 8, T)) : o("", !0)], 10, C)) : o("", !0)]),
|
|
69
|
+
_: 3
|
|
70
|
+
})])) : L.value ? (m(), s("div", {
|
|
71
|
+
key: 2,
|
|
72
|
+
class: p(z.value)
|
|
73
|
+
}, [P.value ? (m(), s("div", {
|
|
74
|
+
key: 0,
|
|
75
|
+
class: "b-spin__overlay-container",
|
|
76
|
+
role: "status",
|
|
77
|
+
"aria-label": R.value ? void 0 : "Loading",
|
|
78
|
+
"aria-describedby": R.value ? v(N) : void 0
|
|
79
|
+
}, [c("div", A, [g(i.$slots, "indicator", {}, () => [f[2] ||= l("<span class=\"b-spin__dot\"><i class=\"b-spin__dot-item\"></i><i class=\"b-spin__dot-item\"></i><i class=\"b-spin__dot-item\"></i><i class=\"b-spin__dot-item\"></i></span>", 1)])]), R.value ? (m(), s("div", {
|
|
80
|
+
key: 0,
|
|
81
|
+
id: v(N),
|
|
82
|
+
class: "b-spin__tip"
|
|
83
|
+
}, [g(i.$slots, "tip", {}, () => [u(_(e.tip), 1)])], 8, j)) : o("", !0)], 8, k)) : o("", !0), c("div", {
|
|
84
|
+
class: p(["b-spin__content", { "b-spin__content--blurred": P.value }]),
|
|
85
|
+
"aria-busy": P.value,
|
|
86
|
+
inert: P.value
|
|
87
|
+
}, [g(i.$slots, "default")], 10, M)], 2)) : (m(), s(t, { key: 1 }, [P.value ? (m(), s("div", {
|
|
88
|
+
key: 0,
|
|
89
|
+
class: p(z.value),
|
|
90
|
+
role: "status",
|
|
91
|
+
"aria-label": R.value ? void 0 : "Loading",
|
|
92
|
+
"aria-describedby": R.value ? v(N) : void 0
|
|
93
|
+
}, [c("div", D, [g(i.$slots, "indicator", {}, () => [f[1] ||= l("<span class=\"b-spin__dot\"><i class=\"b-spin__dot-item\"></i><i class=\"b-spin__dot-item\"></i><i class=\"b-spin__dot-item\"></i><i class=\"b-spin__dot-item\"></i></span>", 1)])]), R.value ? (m(), s("div", {
|
|
94
|
+
key: 0,
|
|
95
|
+
id: v(N),
|
|
96
|
+
class: "b-spin__tip"
|
|
97
|
+
}, [g(i.$slots, "tip", {}, () => [u(_(e.tip), 1)])], 8, O)) : o("", !0)], 10, E)) : o("", !0)], 64));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
//#endregion
|
|
101
|
+
export { N as default };
|
|
102
|
+
|
|
103
|
+
//# sourceMappingURL=design-system219.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-system219.js","names":[],"sources":["../src/components/BSpin/BSpin.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { BSpinSize } from '@/types.ts';\nimport { computed, ref, useId, watch } from 'vue';\n\n// ─────────────────────────────────────────────\n// Props & emits\n// ─────────────────────────────────────────────\nconst {\n spinning = true,\n size = BSpinSize.Default,\n tip = '',\n delay = 0,\n fullscreen = false,\n} = defineProps<{\n /**\n * Whether the Spin indicator is active.\n * @default true\n */\n spinning?: boolean;\n /**\n * Size of the spinner - small, default, or large.\n * @default 'default'\n */\n size?: `${BSpinSize}`;\n /**\n * Descriptive text displayed below the spinning indicator.\n */\n tip?: string;\n /**\n * Delay in milliseconds before the spinner shows after `spinning` becomes true.\n * Prevents flicker for fast operations. Does not apply to hiding.\n * @default 0\n */\n delay?: number;\n /**\n * Display as fullscreen overlay (fixed, covers the entire viewport).\n * @default false\n */\n fullscreen?: boolean;\n}>();\n\n// ─────────────────────────────────────────────\n// Slots\n// ─────────────────────────────────────────────\nconst slots = defineSlots<{\n /** Content to wrap with a spinning overlay. */\n default?(): unknown;\n /** Custom spinner indicator (replaces the default dots). */\n indicator?(): unknown;\n /** Custom tip content (replaces the `tip` prop text). */\n tip?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Internal state\n// ─────────────────────────────────────────────\nconst tipId = useId();\n\n/** Delayed spinning state - respects `delay` prop. */\nconst shouldShow = ref(false);\nlet delayTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction applySpinning(value: boolean) {\n clearTimeout(delayTimer);\n if (value && delay > 0) {\n delayTimer = setTimeout(() => {\n shouldShow.value = true;\n }, delay);\n } else {\n shouldShow.value = value;\n }\n}\n\n// Run immediately on mount, then watch for changes\napplySpinning(spinning);\n\nwatch(() => spinning, applySpinning);\n\n// ─────────────────────────────────────────────\n// Derived state\n// ─────────────────────────────────────────────\nconst isNested = computed(() => Boolean(slots.default));\nconst hasTip = computed(() => Boolean(tip || slots.tip));\n\nconst rootClasses = computed(() => [\n 'b-spin',\n `b-spin--${size}`,\n {\n 'b-spin--spinning': shouldShow.value,\n 'b-spin--nested': isNested.value,\n 'b-spin--has-tip': hasTip.value,\n 'b-spin--fullscreen': fullscreen,\n },\n]);\n</script>\n\n<template>\n <!-- Fullscreen mode: uses Teleport to <body> -->\n <Teleport v-if=\"fullscreen\" to=\"body\">\n <Transition name=\"b-spin-fade\">\n <div\n v-if=\"shouldShow\"\n class=\"b-spin b-spin--fullscreen\"\n :class=\"[`b-spin--${size}`, { 'b-spin--spinning': shouldShow, 'b-spin--has-tip': hasTip }]\"\n role=\"status\"\n :aria-label=\"hasTip ? undefined : 'Loading'\"\n :aria-describedby=\"hasTip ? tipId : undefined\"\n >\n <div class=\"b-spin__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\">\n <span class=\"b-spin__dot\">\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n </span>\n </slot>\n </div>\n <div v-if=\"hasTip\" :id=\"tipId\" class=\"b-spin__tip\">\n <slot name=\"tip\">{{ tip }}</slot>\n </div>\n </div>\n </Transition>\n </Teleport>\n\n <!-- Standalone (no children) -->\n <template v-else-if=\"!isNested\">\n <div\n v-if=\"shouldShow\"\n :class=\"rootClasses\"\n role=\"status\"\n :aria-label=\"hasTip ? undefined : 'Loading'\"\n :aria-describedby=\"hasTip ? tipId : undefined\"\n >\n <div class=\"b-spin__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\">\n <span class=\"b-spin__dot\">\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n </span>\n </slot>\n </div>\n <div v-if=\"hasTip\" :id=\"tipId\" class=\"b-spin__tip\">\n <slot name=\"tip\">{{ tip }}</slot>\n </div>\n </div>\n </template>\n\n <!-- Nested (wraps children) -->\n <div v-else :class=\"rootClasses\">\n <div\n v-if=\"shouldShow\"\n class=\"b-spin__overlay-container\"\n role=\"status\"\n :aria-label=\"hasTip ? undefined : 'Loading'\"\n :aria-describedby=\"hasTip ? tipId : undefined\"\n >\n <div class=\"b-spin__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\">\n <span class=\"b-spin__dot\">\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n </span>\n </slot>\n </div>\n <div v-if=\"hasTip\" :id=\"tipId\" class=\"b-spin__tip\">\n <slot name=\"tip\">{{ tip }}</slot>\n </div>\n </div>\n <div\n class=\"b-spin__content\"\n :class=\"{ 'b-spin__content--blurred': shouldShow }\"\n :aria-busy=\"shouldShow\"\n :inert=\"shouldShow\"\n >\n <slot />\n </div>\n </div>\n</template>\n\n<style>\n/* ────────────────────────────────────────────\n CSS Custom Properties (tokens)\n ──────────────────────────────────────────── */\n.b-spin {\n /* Dot sizes per variant */\n --b-spin-dot-size-small: 14px;\n --b-spin-dot-size-default: 20px;\n --b-spin-dot-size-large: 32px;\n\n /* Dot colour */\n --b-spin-dot-color: oklch(50% 0.169 237.323); /* primary – darkened for AA contrast */\n\n /* Tip text */\n --b-spin-tip-color: oklch(50% 0.169 237.323);\n --b-spin-tip-font-size: 0.875rem;\n\n /* Overlay */\n --b-spin-overlay-bg: oklch(100% 0 0 / 0.6);\n --b-spin-content-blur: 0.5px;\n\n /* Fullscreen */\n --b-spin-fullscreen-bg: oklch(100% 0 0 / 0.75);\n\n /* Animation */\n --b-spin-animation-duration: 1.2s;\n --b-spin-transition-duration: 300ms;\n}\n\n/* ── Dark mode ───────────────────────────────── */\n[data-prefers-color='dark'] .b-spin {\n --b-spin-dot-color: oklch(72% 0.14 237);\n --b-spin-tip-color: oklch(72% 0.14 237);\n --b-spin-overlay-bg: oklch(15% 0 0 / 0.6);\n --b-spin-fullscreen-bg: oklch(15% 0 0 / 0.75);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-spin {\n --b-spin-dot-color: oklch(72% 0.14 237);\n --b-spin-tip-color: oklch(72% 0.14 237);\n --b-spin-overlay-bg: oklch(15% 0 0 / 0.6);\n --b-spin-fullscreen-bg: oklch(15% 0 0 / 0.75);\n }\n}\n\n/* ─────────────────────────────────────────────\n Base layout\n ───────────────────────────────────────────── */\n.b-spin {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n box-sizing: border-box;\n font-family: inherit;\n}\n\n/* Nested wrapper needs relative positioning for overlay */\n.b-spin--nested {\n position: relative;\n display: block;\n}\n\n/* ── Overlay container (nested mode) ── */\n.b-spin__overlay-container {\n position: absolute;\n inset: 0;\n z-index: 4;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n background: var(--b-spin-overlay-bg);\n border-radius: inherit;\n transition: opacity var(--b-spin-transition-duration) ease;\n}\n\n/* ── Content (nested) ── */\n.b-spin__content {\n transition:\n opacity var(--b-spin-transition-duration) ease,\n filter var(--b-spin-transition-duration) ease;\n}\n\n.b-spin__content--blurred {\n opacity: 0.5;\n filter: blur(var(--b-spin-content-blur));\n pointer-events: none;\n user-select: none;\n}\n\n/* ── Fullscreen ── */\n.b-spin--fullscreen {\n position: fixed;\n inset: 0;\n z-index: 1070;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n background: var(--b-spin-fullscreen-bg);\n}\n\n/* ── Dot indicator ── */\n.b-spin__indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n}\n\n.b-spin__dot {\n position: relative;\n display: inline-block;\n font-size: var(--b-spin-dot-size-default);\n width: 1em;\n height: 1em;\n animation: b-spin-rotate var(--b-spin-animation-duration) linear infinite;\n}\n\n.b-spin--small .b-spin__dot {\n font-size: var(--b-spin-dot-size-small);\n}\n\n.b-spin--large .b-spin__dot {\n font-size: var(--b-spin-dot-size-large);\n}\n\n.b-spin__dot-item {\n position: absolute;\n display: block;\n width: calc(1em * 0.45);\n height: calc(1em * 0.45);\n background-color: var(--b-spin-dot-color);\n border-radius: 50%;\n opacity: 0.3;\n animation: b-spin-bounce var(--b-spin-animation-duration) ease-in-out infinite;\n transform: scale(0.75);\n}\n\n.b-spin__dot-item:nth-child(1) {\n top: 0;\n left: 0;\n}\n\n.b-spin__dot-item:nth-child(2) {\n top: 0;\n right: 0;\n animation-delay: 0.4s;\n}\n\n.b-spin__dot-item:nth-child(3) {\n right: 0;\n bottom: 0;\n animation-delay: 0.8s;\n}\n\n.b-spin__dot-item:nth-child(4) {\n bottom: 0;\n left: 0;\n animation-delay: 1.2s;\n}\n\n/* ── Tip ── */\n.b-spin__tip {\n color: var(--b-spin-tip-color);\n font-size: var(--b-spin-tip-font-size);\n text-align: center;\n}\n\n/* ─────────────────────────────────────────────\n Keyframes\n ───────────────────────────────────────────── */\n@keyframes b-spin-rotate {\n to {\n transform: rotate(405deg);\n }\n}\n\n@keyframes b-spin-bounce {\n 0%,\n 100% {\n opacity: 0.3;\n transform: scale(0.75);\n }\n 50% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n/* ─────────────────────────────────────────────\n Fade transition (fullscreen)\n ───────────────────────────────────────────── */\n.b-spin-fade-enter-active,\n.b-spin-fade-leave-active {\n transition: opacity var(--b-spin-transition-duration) ease;\n}\n\n.b-spin-fade-enter-from,\n.b-spin-fade-leave-to {\n opacity: 0;\n}\n\n/* ─────────────────────────────────────────────\n Reduced motion\n ───────────────────────────────────────────── */\n@media (prefers-reduced-motion: reduce) {\n .b-spin__dot {\n animation: none;\n }\n\n .b-spin__dot-item {\n animation: none;\n opacity: 0.8;\n transform: scale(1);\n }\n\n .b-spin-fade-enter-active,\n .b-spin-fade-leave-active {\n transition: none;\n }\n\n .b-spin__content {\n transition: none;\n }\n}\n</style>\n"],"mappings":"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"}
|
package/dist/design-system221.js
CHANGED
|
@@ -1,109 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"aria-disabled",
|
|
6
|
-
"disabled",
|
|
7
|
-
"tabindex"
|
|
8
|
-
], m = {
|
|
9
|
-
class: "b-switch__handle",
|
|
10
|
-
"aria-hidden": "true"
|
|
11
|
-
}, h = {
|
|
12
|
-
key: 0,
|
|
13
|
-
class: "b-switch__loading-icon",
|
|
14
|
-
viewBox: "0 0 16 16",
|
|
15
|
-
fill: "none",
|
|
16
|
-
"aria-hidden": "true"
|
|
17
|
-
}, g = {
|
|
18
|
-
class: "b-switch__inner",
|
|
19
|
-
"aria-hidden": "true"
|
|
20
|
-
}, _ = {
|
|
21
|
-
key: 0,
|
|
22
|
-
class: "b-switch__inner-checked"
|
|
23
|
-
}, v = {
|
|
24
|
-
key: 1,
|
|
25
|
-
class: "b-switch__inner-unchecked"
|
|
26
|
-
}, y = /* @__PURE__ */ i({
|
|
27
|
-
__name: "BSwitch",
|
|
28
|
-
props: /* @__PURE__ */ a({
|
|
29
|
-
defaultChecked: {
|
|
30
|
-
type: Boolean,
|
|
31
|
-
default: !1
|
|
32
|
-
},
|
|
33
|
-
disabled: {
|
|
34
|
-
type: Boolean,
|
|
35
|
-
default: !1
|
|
36
|
-
},
|
|
37
|
-
loading: {
|
|
38
|
-
type: Boolean,
|
|
39
|
-
default: !1
|
|
40
|
-
},
|
|
41
|
-
size: { default: "default" }
|
|
42
|
-
}, {
|
|
43
|
-
modelValue: {
|
|
44
|
-
type: Boolean,
|
|
45
|
-
default: void 0
|
|
46
|
-
},
|
|
47
|
-
modelModifiers: {}
|
|
48
|
-
}),
|
|
49
|
-
emits: /* @__PURE__ */ a(["change", "click"], ["update:modelValue"]),
|
|
50
|
-
setup(i, { expose: a, emit: y }) {
|
|
51
|
-
let b = d(i, "modelValue"), x = y, S = l(i.defaultChecked), C = e(() => b.value === void 0 ? S.value : b.value);
|
|
52
|
-
s(() => {
|
|
53
|
-
b.value === void 0 && (S.value = i.defaultChecked);
|
|
54
|
-
}), f(() => b.value, (e) => {
|
|
55
|
-
e !== void 0 && (S.value = e);
|
|
56
|
-
});
|
|
57
|
-
function w(e) {
|
|
58
|
-
if (i.disabled || i.loading) return;
|
|
59
|
-
let t = !C.value;
|
|
60
|
-
S.value = t, b.value = t, x("change", t, e), e instanceof MouseEvent && x("click", t, e);
|
|
61
|
-
}
|
|
62
|
-
function T(e) {
|
|
63
|
-
w(e);
|
|
64
|
-
}
|
|
65
|
-
function E(e) {
|
|
66
|
-
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), w(e));
|
|
67
|
-
}
|
|
68
|
-
let D = l(null);
|
|
69
|
-
function O() {
|
|
70
|
-
D.value?.focus();
|
|
71
|
-
}
|
|
72
|
-
function k() {
|
|
73
|
-
D.value?.blur();
|
|
74
|
-
}
|
|
75
|
-
return a({
|
|
76
|
-
focus: O,
|
|
77
|
-
blur: k
|
|
78
|
-
}), (e, a) => (c(), n("button", {
|
|
79
|
-
ref_key: "rootRef",
|
|
80
|
-
ref: D,
|
|
81
|
-
type: "button",
|
|
82
|
-
role: "switch",
|
|
83
|
-
class: o(["b-switch", [`b-switch--${i.size}`, {
|
|
84
|
-
"b-switch--checked": C.value,
|
|
85
|
-
"b-switch--disabled": i.disabled,
|
|
86
|
-
"b-switch--loading": i.loading
|
|
87
|
-
}]]),
|
|
88
|
-
"aria-checked": C.value,
|
|
89
|
-
"aria-disabled": i.disabled || i.loading || void 0,
|
|
90
|
-
disabled: i.disabled,
|
|
91
|
-
tabindex: i.disabled ? -1 : 0,
|
|
92
|
-
onClick: T,
|
|
93
|
-
onKeydown: E
|
|
94
|
-
}, [r("span", m, [i.loading ? (c(), n("svg", h, [...a[0] ||= [r("circle", {
|
|
95
|
-
cx: "8",
|
|
96
|
-
cy: "8",
|
|
97
|
-
r: "6",
|
|
98
|
-
stroke: "currentColor",
|
|
99
|
-
"stroke-width": "2",
|
|
100
|
-
"stroke-linecap": "round",
|
|
101
|
-
"stroke-dasharray": "28",
|
|
102
|
-
"stroke-dashoffset": "8"
|
|
103
|
-
}, null, -1)]])) : t("", !0)]), r("span", g, [C.value ? (c(), n("span", _, [u(e.$slots, "checked", {}, void 0, !0)])) : (c(), n("span", v, [u(e.$slots, "unchecked", {}, void 0, !0)]))])], 42, p));
|
|
104
|
-
}
|
|
105
|
-
});
|
|
1
|
+
import e from "./design-system219.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
//#region src/components/BSpin/BSpin.vue
|
|
4
|
+
var t = e;
|
|
106
5
|
//#endregion
|
|
107
|
-
export {
|
|
6
|
+
export { t as default };
|
|
108
7
|
|
|
109
8
|
//# sourceMappingURL=design-system221.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system221.js","names":[],"sources":["../src/components/BSwitch/BSwitch.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref, computed, watch, onMounted } from 'vue';\n\n//#region Props\nconst {\n defaultChecked = false,\n disabled = false,\n loading = false,\n size = 'default',\n} = defineProps<{\n /** Initial checked state for uncontrolled usage. */\n defaultChecked?: boolean;\n /** Whether the switch is disabled. */\n disabled?: boolean;\n /** Whether to show a loading spinner on the handle. */\n loading?: boolean;\n /** Size of the switch. */\n size?: 'default' | 'small';\n}>();\n\n/**\n * The checked state of the switch.\n * Supports v-model for controlled usage.\n */\nconst model = defineModel<boolean>({ default: undefined });\n\nconst emit = defineEmits<{\n change: [checked: boolean, event: Event];\n click: [checked: boolean, event: MouseEvent];\n}>();\n//#endregion\n\n//#region Internal state\nconst internalChecked = ref(defaultChecked);\n\nconst isChecked = computed(() =>\n model.value !== undefined ? model.value : internalChecked.value,\n);\n\nonMounted(() => {\n if (model.value === undefined) {\n internalChecked.value = defaultChecked;\n }\n});\n\nwatch(\n () => model.value,\n (val) => {\n if (val !== undefined) {\n internalChecked.value = val;\n }\n },\n);\n//#endregion\n\n//#region Handlers\nfunction toggle(event: MouseEvent | KeyboardEvent) {\n if (disabled || loading) return;\n\n const newChecked = !isChecked.value;\n internalChecked.value = newChecked;\n model.value = newChecked;\n emit('change', newChecked, event);\n\n if (event instanceof MouseEvent) {\n emit('click', newChecked, event);\n }\n}\n\nfunction handleClick(event: MouseEvent) {\n toggle(event);\n}\n\nfunction handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle(event);\n }\n}\n//#endregion\n\n//#region Expose\nconst rootRef = ref<HTMLButtonElement | 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</script>\n\n<template>\n <button\n ref=\"rootRef\"\n type=\"button\"\n role=\"switch\"\n class=\"b-switch\"\n :class=\"[\n `b-switch--${size}`,\n {\n 'b-switch--checked': isChecked,\n 'b-switch--disabled': disabled,\n 'b-switch--loading': loading,\n },\n ]\"\n :aria-checked=\"isChecked\"\n :aria-disabled=\"disabled || loading || undefined\"\n :disabled=\"disabled\"\n :tabindex=\"disabled ? -1 : 0\"\n @click=\"handleClick\"\n @keydown=\"handleKeyDown\"\n >\n <span class=\"b-switch__handle\" aria-hidden=\"true\">\n <svg\n v-if=\"loading\"\n class=\"b-switch__loading-icon\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"28\"\n stroke-dashoffset=\"8\"\n />\n </svg>\n </span>\n <span class=\"b-switch__inner\" aria-hidden=\"true\">\n <span v-if=\"isChecked\" class=\"b-switch__inner-checked\">\n <slot name=\"checked\" />\n </span>\n <span v-else class=\"b-switch__inner-unchecked\">\n <slot name=\"unchecked\" />\n </span>\n </span>\n </button>\n</template>\n\n<style scoped>\n.b-switch {\n --b-switch-handle-bg: #fff;\n --b-switch-handle-shadow: 0 2px 4px 0 rgba(0, 35, 11, 0.2);\n --b-switch-handle-size: 18px;\n --b-switch-track-height: 22px;\n --b-switch-track-min-width: 44px;\n --b-switch-track-padding: 2px;\n --b-switch-inner-max-margin: 24px;\n --b-switch-inner-min-margin: 9px;\n --b-switch-track-bg: rgba(0, 0, 0, 0.25);\n --b-switch-track-bg-checked: #1565d8;\n --b-switch-track-bg-disabled: rgba(0, 0, 0, 0.04);\n --b-switch-loading-color: #1565d8;\n\n position: relative;\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n min-width: var(--b-switch-track-min-width);\n height: var(--b-switch-track-height);\n padding: 0;\n border: 0;\n border-radius: calc(var(--b-switch-track-height) / 2);\n background-color: var(--b-switch-track-bg);\n cursor: pointer;\n outline: none;\n transition:\n background-color 0.2s,\n opacity 0.2s;\n vertical-align: middle;\n user-select: none;\n line-height: 1;\n}\n\n.b-switch:focus-visible {\n outline: 2px solid var(--b-switch-track-bg-checked);\n outline-offset: 2px;\n}\n\n/* Checked state */\n.b-switch--checked {\n background-color: var(--b-switch-track-bg-checked);\n}\n\n/* Disabled state */\n.b-switch--disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n/* Loading state */\n.b-switch--loading {\n cursor: default;\n opacity: 0.85;\n}\n\n/* Handle */\n.b-switch__handle {\n position: absolute;\n top: var(--b-switch-track-padding);\n inset-inline-start: var(--b-switch-track-padding);\n width: var(--b-switch-handle-size);\n height: var(--b-switch-handle-size);\n border-radius: 50%;\n background-color: var(--b-switch-handle-bg);\n box-shadow: var(--b-switch-handle-shadow);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: inset-inline-start 0.2s ease-in-out;\n}\n\n.b-switch--checked .b-switch__handle {\n inset-inline-start: calc(\n 100% - var(--b-switch-handle-size) - var(--b-switch-track-padding)\n );\n}\n\n/* Loading icon */\n.b-switch__loading-icon {\n width: calc(var(--b-switch-handle-size) * 0.6);\n height: calc(var(--b-switch-handle-size) * 0.6);\n color: var(--b-switch-loading-color);\n animation: b-switch-spin 1s linear infinite;\n}\n\n.b-switch--checked .b-switch__loading-icon {\n color: var(--b-switch-track-bg-checked);\n}\n\n@keyframes b-switch-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Inner content */\n.b-switch__inner {\n display: flex;\n align-items: center;\n height: 100%;\n font-size: 12px;\n color: #fff;\n overflow: hidden;\n padding: 0;\n}\n\n.b-switch__inner-checked,\n.b-switch__inner-unchecked {\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n}\n\n.b-switch__inner-checked {\n margin-inline-start: calc(\n var(--b-switch-track-padding) + var(--b-switch-inner-min-margin)\n );\n margin-inline-end: calc(\n var(--b-switch-handle-size) + var(--b-switch-track-padding) +\n var(--b-switch-inner-min-margin) - var(--b-switch-inner-max-margin) +\n var(--b-switch-inner-max-margin)\n );\n}\n\n.b-switch__inner-unchecked {\n margin-inline-start: calc(\n var(--b-switch-handle-size) + var(--b-switch-track-padding) +\n var(--b-switch-inner-min-margin)\n );\n margin-inline-end: calc(\n var(--b-switch-track-padding) + var(--b-switch-inner-min-margin)\n );\n}\n\n/* Small size */\n.b-switch--small {\n --b-switch-handle-size: 12px;\n --b-switch-track-height: 16px;\n --b-switch-track-min-width: 28px;\n --b-switch-inner-max-margin: 18px;\n --b-switch-inner-min-margin: 6px;\n}\n\n/* Dark mode */\n[data-prefers-color='dark'] .b-switch {\n --b-switch-track-bg: rgba(255, 255, 255, 0.25);\n --b-switch-track-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-switch-handle-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.4);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-switch {\n --b-switch-track-bg: rgba(255, 255, 255, 0.25);\n --b-switch-track-bg-disabled: rgba(255, 255, 255, 0.08);\n --b-switch-handle-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.4);\n }\n}\n\n/* Reduced motion */\n@media (prefers-reduced-motion: reduce) {\n .b-switch__handle {\n transition: none;\n }\n\n .b-switch {\n transition: none;\n }\n\n .b-switch__loading-icon {\n animation: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBA,IAAM,IAAQ,EAAoB,GAAA,aAAwB,EAEpD,IAAO,GAOP,IAAkB,EAAI,EAAA,eAAe,EAErC,IAAY,QAChB,EAAM,UAAU,KAAA,IAA0B,EAAgB,QAA9B,EAAM,MACnC;AAQD,EANA,QAAgB;AACd,GAAI,EAAM,UAAU,KAAA,MAClB,EAAgB,QAAQ,EAAA;IAE1B,EAEF,QACQ,EAAM,QACX,MAAQ;AACP,GAAI,MAAQ,KAAA,MACV,EAAgB,QAAQ;IAG7B;EAID,SAAS,EAAO,GAAmC;AACjD,OAAI,EAAA,YAAY,EAAA,QAAS;GAEzB,IAAM,IAAa,CAAC,EAAU;AAK9B,GAJA,EAAgB,QAAQ,GACxB,EAAM,QAAQ,GACd,EAAK,UAAU,GAAY,EAAM,EAE7B,aAAiB,cACnB,EAAK,SAAS,GAAY,EAAM;;EAIpC,SAAS,EAAY,GAAmB;AACtC,KAAO,EAAM;;EAGf,SAAS,EAAc,GAAsB;AAC3C,IAAI,EAAM,QAAQ,WAAW,EAAM,QAAQ,SACzC,EAAM,gBAAgB,EACtB,EAAO,EAAM;;EAMjB,IAAM,IAAU,EAA8B,KAAK;EAEnD,SAAS,IAAQ;AACf,KAAQ,OAAO,OAAO;;EAGxB,SAAS,IAAO;AACd,KAAQ,OAAO,MAAM;;SAGvB,EAAa;GAAE;GAAO;GAAM,CAAC,kBAK3B,EAgDS,UAAA;YA/CH;GAAJ,KAAI;GACJ,MAAK;GACL,MAAK;GACL,OAAK,EAAA,CAAC,YAAU,CAAA,aACa,EAAA,QAAA;yBAA6C,EAAA;0BAAyC,EAAA;yBAAuC,EAAA;;GAQzJ,gBAAc,EAAA;GACd,iBAAe,EAAA,YAAY,EAAA,WAAW,KAAA;GACtC,UAAU,EAAA;GACV,UAAU,EAAA,WAAQ,KAAA;GAClB,SAAO;GACP,WAAS;MAEV,EAmBO,QAnBP,GAmBO,CAjBG,EAAA,WAAA,GAAA,EADR,EAiBM,OAjBN,GAiBM,CAAA,GAAA,AAAA,EAAA,OAAA,CAVJ,EASE,UAAA;GARA,IAAG;GACH,IAAG;GACH,GAAE;GACF,QAAO;GACP,gBAAa;GACb,kBAAe;GACf,oBAAiB;GACjB,qBAAkB;kCAIxB,EAOO,QAPP,GAOO,CANO,EAAA,SAAA,GAAA,EAAZ,EAEO,QAFP,GAEO,CADL,EAAuB,EAAA,QAAA,WAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA,KAAA,GAAA,EAEzB,EAEO,QAFP,GAEO,CADL,EAAyB,EAAA,QAAA,aAAA,EAAA,EAAA,KAAA,GAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,IAAA,EAAA"}
|
|
1
|
+
{"version":3,"file":"design-system221.js","names":[],"sources":["../src/components/BSpin/BSpin.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { BSpinSize } from '@/types.ts';\nimport { computed, ref, useId, watch } from 'vue';\n\n// ─────────────────────────────────────────────\n// Props & emits\n// ─────────────────────────────────────────────\nconst {\n spinning = true,\n size = BSpinSize.Default,\n tip = '',\n delay = 0,\n fullscreen = false,\n} = defineProps<{\n /**\n * Whether the Spin indicator is active.\n * @default true\n */\n spinning?: boolean;\n /**\n * Size of the spinner - small, default, or large.\n * @default 'default'\n */\n size?: `${BSpinSize}`;\n /**\n * Descriptive text displayed below the spinning indicator.\n */\n tip?: string;\n /**\n * Delay in milliseconds before the spinner shows after `spinning` becomes true.\n * Prevents flicker for fast operations. Does not apply to hiding.\n * @default 0\n */\n delay?: number;\n /**\n * Display as fullscreen overlay (fixed, covers the entire viewport).\n * @default false\n */\n fullscreen?: boolean;\n}>();\n\n// ─────────────────────────────────────────────\n// Slots\n// ─────────────────────────────────────────────\nconst slots = defineSlots<{\n /** Content to wrap with a spinning overlay. */\n default?(): unknown;\n /** Custom spinner indicator (replaces the default dots). */\n indicator?(): unknown;\n /** Custom tip content (replaces the `tip` prop text). */\n tip?(): unknown;\n}>();\n\n// ─────────────────────────────────────────────\n// Internal state\n// ─────────────────────────────────────────────\nconst tipId = useId();\n\n/** Delayed spinning state - respects `delay` prop. */\nconst shouldShow = ref(false);\nlet delayTimer: ReturnType<typeof setTimeout> | undefined;\n\nfunction applySpinning(value: boolean) {\n clearTimeout(delayTimer);\n if (value && delay > 0) {\n delayTimer = setTimeout(() => {\n shouldShow.value = true;\n }, delay);\n } else {\n shouldShow.value = value;\n }\n}\n\n// Run immediately on mount, then watch for changes\napplySpinning(spinning);\n\nwatch(() => spinning, applySpinning);\n\n// ─────────────────────────────────────────────\n// Derived state\n// ─────────────────────────────────────────────\nconst isNested = computed(() => Boolean(slots.default));\nconst hasTip = computed(() => Boolean(tip || slots.tip));\n\nconst rootClasses = computed(() => [\n 'b-spin',\n `b-spin--${size}`,\n {\n 'b-spin--spinning': shouldShow.value,\n 'b-spin--nested': isNested.value,\n 'b-spin--has-tip': hasTip.value,\n 'b-spin--fullscreen': fullscreen,\n },\n]);\n</script>\n\n<template>\n <!-- Fullscreen mode: uses Teleport to <body> -->\n <Teleport v-if=\"fullscreen\" to=\"body\">\n <Transition name=\"b-spin-fade\">\n <div\n v-if=\"shouldShow\"\n class=\"b-spin b-spin--fullscreen\"\n :class=\"[`b-spin--${size}`, { 'b-spin--spinning': shouldShow, 'b-spin--has-tip': hasTip }]\"\n role=\"status\"\n :aria-label=\"hasTip ? undefined : 'Loading'\"\n :aria-describedby=\"hasTip ? tipId : undefined\"\n >\n <div class=\"b-spin__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\">\n <span class=\"b-spin__dot\">\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n </span>\n </slot>\n </div>\n <div v-if=\"hasTip\" :id=\"tipId\" class=\"b-spin__tip\">\n <slot name=\"tip\">{{ tip }}</slot>\n </div>\n </div>\n </Transition>\n </Teleport>\n\n <!-- Standalone (no children) -->\n <template v-else-if=\"!isNested\">\n <div\n v-if=\"shouldShow\"\n :class=\"rootClasses\"\n role=\"status\"\n :aria-label=\"hasTip ? undefined : 'Loading'\"\n :aria-describedby=\"hasTip ? tipId : undefined\"\n >\n <div class=\"b-spin__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\">\n <span class=\"b-spin__dot\">\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n </span>\n </slot>\n </div>\n <div v-if=\"hasTip\" :id=\"tipId\" class=\"b-spin__tip\">\n <slot name=\"tip\">{{ tip }}</slot>\n </div>\n </div>\n </template>\n\n <!-- Nested (wraps children) -->\n <div v-else :class=\"rootClasses\">\n <div\n v-if=\"shouldShow\"\n class=\"b-spin__overlay-container\"\n role=\"status\"\n :aria-label=\"hasTip ? undefined : 'Loading'\"\n :aria-describedby=\"hasTip ? tipId : undefined\"\n >\n <div class=\"b-spin__indicator\" aria-hidden=\"true\">\n <slot name=\"indicator\">\n <span class=\"b-spin__dot\">\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n <i class=\"b-spin__dot-item\" />\n </span>\n </slot>\n </div>\n <div v-if=\"hasTip\" :id=\"tipId\" class=\"b-spin__tip\">\n <slot name=\"tip\">{{ tip }}</slot>\n </div>\n </div>\n <div\n class=\"b-spin__content\"\n :class=\"{ 'b-spin__content--blurred': shouldShow }\"\n :aria-busy=\"shouldShow\"\n :inert=\"shouldShow\"\n >\n <slot />\n </div>\n </div>\n</template>\n\n<style>\n/* ────────────────────────────────────────────\n CSS Custom Properties (tokens)\n ──────────────────────────────────────────── */\n.b-spin {\n /* Dot sizes per variant */\n --b-spin-dot-size-small: 14px;\n --b-spin-dot-size-default: 20px;\n --b-spin-dot-size-large: 32px;\n\n /* Dot colour */\n --b-spin-dot-color: oklch(50% 0.169 237.323); /* primary – darkened for AA contrast */\n\n /* Tip text */\n --b-spin-tip-color: oklch(50% 0.169 237.323);\n --b-spin-tip-font-size: 0.875rem;\n\n /* Overlay */\n --b-spin-overlay-bg: oklch(100% 0 0 / 0.6);\n --b-spin-content-blur: 0.5px;\n\n /* Fullscreen */\n --b-spin-fullscreen-bg: oklch(100% 0 0 / 0.75);\n\n /* Animation */\n --b-spin-animation-duration: 1.2s;\n --b-spin-transition-duration: 300ms;\n}\n\n/* ── Dark mode ───────────────────────────────── */\n[data-prefers-color='dark'] .b-spin {\n --b-spin-dot-color: oklch(72% 0.14 237);\n --b-spin-tip-color: oklch(72% 0.14 237);\n --b-spin-overlay-bg: oklch(15% 0 0 / 0.6);\n --b-spin-fullscreen-bg: oklch(15% 0 0 / 0.75);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-prefers-color='system'] .b-spin {\n --b-spin-dot-color: oklch(72% 0.14 237);\n --b-spin-tip-color: oklch(72% 0.14 237);\n --b-spin-overlay-bg: oklch(15% 0 0 / 0.6);\n --b-spin-fullscreen-bg: oklch(15% 0 0 / 0.75);\n }\n}\n\n/* ─────────────────────────────────────────────\n Base layout\n ───────────────────────────────────────────── */\n.b-spin {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n box-sizing: border-box;\n font-family: inherit;\n}\n\n/* Nested wrapper needs relative positioning for overlay */\n.b-spin--nested {\n position: relative;\n display: block;\n}\n\n/* ── Overlay container (nested mode) ── */\n.b-spin__overlay-container {\n position: absolute;\n inset: 0;\n z-index: 4;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n background: var(--b-spin-overlay-bg);\n border-radius: inherit;\n transition: opacity var(--b-spin-transition-duration) ease;\n}\n\n/* ── Content (nested) ── */\n.b-spin__content {\n transition:\n opacity var(--b-spin-transition-duration) ease,\n filter var(--b-spin-transition-duration) ease;\n}\n\n.b-spin__content--blurred {\n opacity: 0.5;\n filter: blur(var(--b-spin-content-blur));\n pointer-events: none;\n user-select: none;\n}\n\n/* ── Fullscreen ── */\n.b-spin--fullscreen {\n position: fixed;\n inset: 0;\n z-index: 1070;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n background: var(--b-spin-fullscreen-bg);\n}\n\n/* ── Dot indicator ── */\n.b-spin__indicator {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n}\n\n.b-spin__dot {\n position: relative;\n display: inline-block;\n font-size: var(--b-spin-dot-size-default);\n width: 1em;\n height: 1em;\n animation: b-spin-rotate var(--b-spin-animation-duration) linear infinite;\n}\n\n.b-spin--small .b-spin__dot {\n font-size: var(--b-spin-dot-size-small);\n}\n\n.b-spin--large .b-spin__dot {\n font-size: var(--b-spin-dot-size-large);\n}\n\n.b-spin__dot-item {\n position: absolute;\n display: block;\n width: calc(1em * 0.45);\n height: calc(1em * 0.45);\n background-color: var(--b-spin-dot-color);\n border-radius: 50%;\n opacity: 0.3;\n animation: b-spin-bounce var(--b-spin-animation-duration) ease-in-out infinite;\n transform: scale(0.75);\n}\n\n.b-spin__dot-item:nth-child(1) {\n top: 0;\n left: 0;\n}\n\n.b-spin__dot-item:nth-child(2) {\n top: 0;\n right: 0;\n animation-delay: 0.4s;\n}\n\n.b-spin__dot-item:nth-child(3) {\n right: 0;\n bottom: 0;\n animation-delay: 0.8s;\n}\n\n.b-spin__dot-item:nth-child(4) {\n bottom: 0;\n left: 0;\n animation-delay: 1.2s;\n}\n\n/* ── Tip ── */\n.b-spin__tip {\n color: var(--b-spin-tip-color);\n font-size: var(--b-spin-tip-font-size);\n text-align: center;\n}\n\n/* ─────────────────────────────────────────────\n Keyframes\n ───────────────────────────────────────────── */\n@keyframes b-spin-rotate {\n to {\n transform: rotate(405deg);\n }\n}\n\n@keyframes b-spin-bounce {\n 0%,\n 100% {\n opacity: 0.3;\n transform: scale(0.75);\n }\n 50% {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n/* ─────────────────────────────────────────────\n Fade transition (fullscreen)\n ───────────────────────────────────────────── */\n.b-spin-fade-enter-active,\n.b-spin-fade-leave-active {\n transition: opacity var(--b-spin-transition-duration) ease;\n}\n\n.b-spin-fade-enter-from,\n.b-spin-fade-leave-to {\n opacity: 0;\n}\n\n/* ─────────────────────────────────────────────\n Reduced motion\n ───────────────────────────────────────────── */\n@media (prefers-reduced-motion: reduce) {\n .b-spin__dot {\n animation: none;\n }\n\n .b-spin__dot-item {\n animation: none;\n opacity: 0.8;\n transform: scale(1);\n }\n\n .b-spin-fade-enter-active,\n .b-spin-fade-leave-active {\n transition: none;\n }\n\n .b-spin__content {\n transition: none;\n }\n}\n</style>\n"],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { defineComponent as e, renderSlot as t } from "vue";
|
|
2
|
+
//#region src/components/BSplitter/BSplitterPanel.vue?vue&type=script&setup=true&lang.ts
|
|
3
|
+
var n = /* @__PURE__ */ e({
|
|
4
|
+
name: "BSplitterPanel",
|
|
5
|
+
__name: "BSplitterPanel",
|
|
6
|
+
props: {
|
|
7
|
+
size: {},
|
|
8
|
+
defaultSize: {},
|
|
9
|
+
min: {},
|
|
10
|
+
max: {},
|
|
11
|
+
resizable: { type: Boolean },
|
|
12
|
+
collapsible: { type: [Boolean, Object] },
|
|
13
|
+
destroyOnHidden: { type: Boolean }
|
|
14
|
+
},
|
|
15
|
+
setup(e) {
|
|
16
|
+
return (e, n) => t(e.$slots, "default");
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
//#endregion
|
|
20
|
+
export { n as default };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=design-system222.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-
|
|
1
|
+
{"version":3,"file":"design-system222.js","names":[],"sources":["../src/components/BSplitter/BSplitterPanel.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n/**\n * BSplitterPanel\n * --------------\n * A pure data/marker component used inside <BSplitter>.\n *\n * It does not render any wrapper element of its own — <BSplitter> reads the\n * VNode's props and default-slot content and renders the panel <div>\n * itself, so that draggers can be interspersed correctly between panels.\n *\n * Props mirror AntD's `Splitter.Panel` API.\n */\nimport type { BSplitterPanelCollapsible } from './types';\n\ndefineOptions({ name: 'BSplitterPanel' });\n\ndefineProps<{\n /** Controlled size (px number or any CSS unit string e.g. '50%'). */\n size?: number | string;\n /** Initial size for uncontrolled mode (px number or CSS string). */\n defaultSize?: number | string;\n /** Minimum size (px or CSS string). */\n min?: number | string;\n /** Maximum size (px or CSS string). */\n max?: number | string;\n /** Whether the dragger adjacent to this panel can resize it. @default true */\n resizable?: boolean;\n /** Collapsible config — `true` enables both directions, or pass an object. */\n collapsible?: boolean | BSplitterPanelCollapsible;\n /** Destroy panel content from the DOM when its size collapses to 0. @default false */\n destroyOnHidden?: boolean;\n}>();\n\ndefineSlots<{\n default?(): unknown;\n}>();\n</script>\n\n<template>\n <!-- Render only the slot content. BSplitter wraps it in a panel div. -->\n <slot />\n</template>\n"],"mappings":";;;;;;;;;;;;;;;mBAwCE,EAAQ,EAAA,QAAA,UAAA"}
|
package/dist/design-system223.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import e from "./design-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
//#region src/components/BSwitch/BSwitch.vue
|
|
5
|
-
var n = /* @__PURE__ */ e(t, [["__scopeId", "data-v-a13562bf"]]);
|
|
1
|
+
import e from "./design-system222.js";
|
|
2
|
+
//#region src/components/BSplitter/BSplitterPanel.vue
|
|
3
|
+
var t = e;
|
|
6
4
|
//#endregion
|
|
7
|
-
export {
|
|
5
|
+
export { t as default };
|
|
8
6
|
|
|
9
7
|
//# sourceMappingURL=design-system223.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-system223.js","names":[],"sources":["../src/components/
|
|
1
|
+
{"version":3,"file":"design-system223.js","names":[],"sources":["../src/components/BSplitter/BSplitterPanel.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n/**\n * BSplitterPanel\n * --------------\n * A pure data/marker component used inside <BSplitter>.\n *\n * It does not render any wrapper element of its own — <BSplitter> reads the\n * VNode's props and default-slot content and renders the panel <div>\n * itself, so that draggers can be interspersed correctly between panels.\n *\n * Props mirror AntD's `Splitter.Panel` API.\n */\nimport type { BSplitterPanelCollapsible } from './types';\n\ndefineOptions({ name: 'BSplitterPanel' });\n\ndefineProps<{\n /** Controlled size (px number or any CSS unit string e.g. '50%'). */\n size?: number | string;\n /** Initial size for uncontrolled mode (px number or CSS string). */\n defaultSize?: number | string;\n /** Minimum size (px or CSS string). */\n min?: number | string;\n /** Maximum size (px or CSS string). */\n max?: number | string;\n /** Whether the dragger adjacent to this panel can resize it. @default true */\n resizable?: boolean;\n /** Collapsible config — `true` enables both directions, or pass an object. */\n collapsible?: boolean | BSplitterPanelCollapsible;\n /** Destroy panel content from the DOM when its size collapses to 0. @default false */\n destroyOnHidden?: boolean;\n}>();\n\ndefineSlots<{\n default?(): unknown;\n}>();\n</script>\n\n<template>\n <!-- Render only the slot content. BSplitter wraps it in a panel div. -->\n <slot />\n</template>\n"],"mappings":""}
|