@bagelink/vue 1.14.13 → 1.15.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.
Files changed (238) hide show
  1. package/dist/components/AddressSearch.vue.d.ts +6 -7
  2. package/dist/components/Alert.vue.d.ts.map +1 -1
  3. package/dist/components/Avatar.vue.d.ts.map +1 -1
  4. package/dist/components/Badge.vue.d.ts.map +1 -1
  5. package/dist/components/Btn.vue.d.ts +1 -1
  6. package/dist/components/Btn.vue.d.ts.map +1 -1
  7. package/dist/components/Card.vue.d.ts.map +1 -1
  8. package/dist/components/Carousel.vue.d.ts +0 -11
  9. package/dist/components/Dropdown.vue.d.ts +0 -2
  10. package/dist/components/Dropdown.vue.d.ts.map +1 -1
  11. package/dist/components/Filter.vue.d.ts +30 -0
  12. package/dist/components/Filter.vue.d.ts.map +1 -0
  13. package/dist/components/FilterQuery.vue.d.ts +8 -3
  14. package/dist/components/Image.vue.d.ts.map +1 -1
  15. package/dist/components/ImportData.vue.d.ts.map +1 -1
  16. package/dist/components/ListItem.vue.d.ts.map +1 -1
  17. package/dist/components/MapEmbed/Index.vue.d.ts.map +1 -1
  18. package/dist/components/Modal.vue.d.ts +0 -1
  19. package/dist/components/Pagination.vue.d.ts.map +1 -1
  20. package/dist/components/Pill.vue.d.ts.map +1 -1
  21. package/dist/components/QueryFilter.vue.d.ts +30 -0
  22. package/dist/components/QueryFilter.vue.d.ts.map +1 -0
  23. package/dist/components/Swiper.vue.d.ts +6 -12
  24. package/dist/components/Swiper.vue.d.ts.map +1 -1
  25. package/dist/components/Toast.vue.d.ts.map +1 -1
  26. package/dist/components/analytics/PieChart.vue.d.ts +2 -2
  27. package/dist/components/calendar/CalendarPopover.vue.d.ts +8 -4
  28. package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
  29. package/dist/components/calendar/CalendarTypes.d.ts +0 -10
  30. package/dist/components/calendar/Index.vue.d.ts +4 -20
  31. package/dist/components/calendar/views/WeekView.vue.d.ts +1 -9
  32. package/dist/components/dataTable/DataTable.vue.d.ts.map +1 -1
  33. package/dist/components/form/index.d.ts.map +1 -1
  34. package/dist/components/form/inputs/ArrayInput.vue.d.ts +2 -4
  35. package/dist/components/form/inputs/CheckInput.vue.d.ts +1 -2
  36. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  37. package/dist/components/form/inputs/CodeEditor/Index.vue.d.ts +0 -54
  38. package/dist/components/form/inputs/ColorInput.vue.d.ts +1 -3
  39. package/dist/components/form/inputs/DateInput.vue.d.ts +1 -2
  40. package/dist/components/form/inputs/DatePicker.vue.d.ts +0 -1
  41. package/dist/components/form/inputs/EmailInput.vue.d.ts +2 -5
  42. package/dist/components/form/inputs/JSONInput.vue.d.ts +1 -2
  43. package/dist/components/form/inputs/MarkdownEditor.vue.d.ts +2 -7
  44. package/dist/components/form/inputs/NumberInput.vue.d.ts +1 -2
  45. package/dist/components/form/inputs/OTP.vue.d.ts +1 -2
  46. package/dist/components/form/inputs/PasswordInput.vue.d.ts +10 -16
  47. package/dist/components/form/inputs/RadioGroup.vue.d.ts +1 -3
  48. package/dist/components/form/inputs/RangeInput.vue.d.ts +1 -6
  49. package/dist/components/form/inputs/RichText/index.vue.d.ts +1 -2
  50. package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
  51. package/dist/components/form/inputs/RichText/utils/media.d.ts.map +1 -1
  52. package/dist/components/form/inputs/SelectBtn.vue.d.ts +2 -2
  53. package/dist/components/form/inputs/SelectInput.vue.d.ts +13 -20
  54. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  55. package/dist/components/form/inputs/SignaturePad.vue.d.ts +1 -6
  56. package/dist/components/form/inputs/TableField.vue.d.ts +1 -2
  57. package/dist/components/form/inputs/TelInput.vue.d.ts +1 -2
  58. package/dist/components/form/inputs/TextInput.vue.d.ts +2 -3
  59. package/dist/components/form/inputs/ToggleInput.vue.d.ts +1 -2
  60. package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts +6 -27
  61. package/dist/components/form/inputs/Upload/upload.d.ts +1 -1
  62. package/dist/components/form/inputs/index.d.ts +0 -1
  63. package/dist/components/index.d.ts +1 -3
  64. package/dist/components/index.d.ts.map +1 -1
  65. package/dist/components/layout/AppContent.vue.d.ts +1 -1
  66. package/dist/components/layout/AppContent.vue.d.ts.map +1 -1
  67. package/dist/components/layout/AppLayout.vue.d.ts +0 -2
  68. package/dist/components/layout/AppLayout.vue.d.ts.map +1 -1
  69. package/dist/components/layout/AppSidebar.vue.d.ts +1 -5
  70. package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
  71. package/dist/components/layout/Panel.vue.d.ts.map +1 -1
  72. package/dist/components/layout/Resizable.vue.d.ts.map +1 -1
  73. package/dist/components/layout/Skeleton.vue.d.ts.map +1 -1
  74. package/dist/components/layout/TabsNav.vue.d.ts +1 -12
  75. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -1
  76. package/dist/components/layout/appLayoutContext.d.ts +24 -0
  77. package/dist/components/layout/appLayoutContext.d.ts.map +1 -0
  78. package/dist/components/layout/index.d.ts.map +1 -1
  79. package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
  80. package/dist/composables/index.d.ts.map +1 -1
  81. package/dist/composables/useDevice.d.ts.map +1 -1
  82. package/dist/composables/useEscapeKey.d.ts +12 -0
  83. package/dist/composables/useEscapeKey.d.ts.map +1 -0
  84. package/dist/composables/useSchemaField.d.ts.map +1 -1
  85. package/dist/composables/useTheme.d.ts.map +1 -1
  86. package/dist/dialog/Dialog.vue.d.ts.map +1 -1
  87. package/dist/dialog/DialogConfirm.vue.d.ts.map +1 -1
  88. package/dist/form-flow/FormFlow.vue.d.ts.map +1 -1
  89. package/dist/form-flow/MultiStepForm.vue.d.ts +1 -6
  90. package/dist/form-flow/form-flow.d.ts +1 -24
  91. package/dist/form-flow/form-flow.d.ts.map +1 -1
  92. package/dist/i18n/index.d.ts +0 -838
  93. package/dist/index.cjs +245 -222
  94. package/dist/index.d.ts +0 -2
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.mjs +42201 -51162
  97. package/dist/plugins/bagel.d.ts.map +1 -1
  98. package/dist/style.css +1 -2
  99. package/dist/types/BagelForm.d.ts +1 -10
  100. package/dist/types/BagelForm.d.ts.map +1 -1
  101. package/dist/types/BtnOptions.d.ts.map +1 -1
  102. package/dist/types/NavLink.d.ts +1 -2
  103. package/dist/types/TableSchema.d.ts.map +1 -1
  104. package/dist/types/index.d.ts +1 -2
  105. package/dist/types/index.d.ts.map +1 -1
  106. package/dist/utils/BagelFormUtils.d.ts +0 -1
  107. package/dist/utils/calendar/dateUtils.d.ts +2 -2
  108. package/dist/utils/calendar/dateUtils.d.ts.map +1 -1
  109. package/dist/utils/constants.d.ts.map +1 -1
  110. package/dist/utils/date.d.ts +116 -0
  111. package/dist/utils/date.d.ts.map +1 -0
  112. package/dist/utils/fetch.d.ts +29 -0
  113. package/dist/utils/fetch.d.ts.map +1 -0
  114. package/dist/utils/index.d.ts +1 -1
  115. package/dist/utils/index.d.ts.map +1 -1
  116. package/dist/utils/string.d.ts +7 -0
  117. package/dist/utils/string.d.ts.map +1 -0
  118. package/dist/utils/useSearch.d.ts +1 -1
  119. package/package.json +3 -10
  120. package/src/components/AccordionItem.vue +5 -5
  121. package/src/components/Alert.vue +37 -16
  122. package/src/components/Avatar.vue +2 -1
  123. package/src/components/Badge.vue +145 -22
  124. package/src/components/BglVideo.vue +4 -4
  125. package/src/components/Btn.vue +81 -69
  126. package/src/components/Card.vue +7 -6
  127. package/src/components/Dropdown.vue +7 -14
  128. package/src/components/FieldSetVue.vue +2 -2
  129. package/src/components/FilterQuery.vue +3 -3
  130. package/src/components/Image.vue +5 -3
  131. package/src/components/JSONSchema.vue +4 -4
  132. package/src/components/JsonBuilder.vue +3 -3
  133. package/src/components/ListItem.vue +2 -4
  134. package/src/components/MapEmbed/Index.vue +18 -17
  135. package/src/components/NavBar.vue +2 -2
  136. package/src/components/Spreadsheet/Index.vue +4 -4
  137. package/src/components/Spreadsheet/SpreadsheetTable.vue +10 -10
  138. package/src/components/Swiper.vue +3 -1
  139. package/src/components/Toast.vue +57 -36
  140. package/src/components/calendar/CalendarPopover.vue +1 -1
  141. package/src/components/calendar/Index.vue +5 -5
  142. package/src/components/calendar/views/AgendaView.vue +2 -2
  143. package/src/components/calendar/views/DayView.vue +1 -1
  144. package/src/components/calendar/views/MonthView.vue +8 -8
  145. package/src/components/dataTable/DataTable.vue +68 -10
  146. package/src/components/form/index.ts +0 -4
  147. package/src/components/form/inputs/ArrayInput.vue +1 -1
  148. package/src/components/form/inputs/CheckInput.vue +6 -6
  149. package/src/components/form/inputs/Checkbox.vue +5 -4
  150. package/src/components/form/inputs/CodeEditor/Index.vue +1 -1
  151. package/src/components/form/inputs/ColorInput.vue +5 -5
  152. package/src/components/form/inputs/DatePicker.vue +3 -3
  153. package/src/components/form/inputs/EmailInput.vue +15 -15
  154. package/src/components/form/inputs/NumberInput.vue +11 -11
  155. package/src/components/form/inputs/OTP.vue +4 -4
  156. package/src/components/form/inputs/PasswordInput.vue +3 -3
  157. package/src/components/form/inputs/RadioGroup.vue +1 -1
  158. package/src/components/form/inputs/RichText/editor.css +4 -4
  159. package/src/components/form/inputs/RichText/index.vue +39 -39
  160. package/src/components/form/inputs/RichText/utils/media.ts +1 -92
  161. package/src/components/form/inputs/RichText/utils/table.ts +4 -4
  162. package/src/components/form/inputs/SelectBtn.vue +1 -1
  163. package/src/components/form/inputs/SelectInput.vue +16 -16
  164. package/src/components/form/inputs/SignaturePad.vue +6 -6
  165. package/src/components/form/inputs/TableField.vue +7 -7
  166. package/src/components/form/inputs/TelInput.vue +12 -12
  167. package/src/components/form/inputs/TextInput.vue +11 -11
  168. package/src/components/form/inputs/ToggleInput.vue +11 -11
  169. package/src/components/form/inputs/Upload/upload.css +16 -16
  170. package/src/components/index.ts +2 -9
  171. package/src/components/layout/AppContent.vue +5 -19
  172. package/src/components/layout/AppLayout.vue +47 -18
  173. package/src/components/layout/AppSidebar.vue +19 -36
  174. package/src/components/layout/BottomMenu.vue +1 -1
  175. package/src/components/layout/Resizable.vue +5 -2
  176. package/src/components/layout/Skeleton.vue +5 -4
  177. package/src/components/layout/TabsNav.vue +23 -23
  178. package/src/components/layout/appLayoutContext.ts +44 -0
  179. package/src/components/layout/index.ts +2 -0
  180. package/src/components/lightbox/Lightbox.vue +3 -9
  181. package/src/composables/index.ts +1 -0
  182. package/src/composables/useDevice.ts +2 -1
  183. package/src/composables/useEscapeKey.ts +56 -0
  184. package/src/composables/useSchemaField.ts +2 -17
  185. package/src/composables/useTheme.ts +23 -19
  186. package/src/form-flow/FormFlow.vue +2 -0
  187. package/src/form-flow/form-flow.ts +7 -0
  188. package/src/index.ts +0 -3
  189. package/src/plugins/bagel.ts +0 -15
  190. package/src/styles/app-layout.css +231 -0
  191. package/src/styles/appearance.css +179 -21
  192. package/src/styles/bagel.css +103 -97
  193. package/src/styles/buttons.css +8 -8
  194. package/src/styles/colors.css +0 -103
  195. package/src/styles/dark.css +25 -26
  196. package/src/styles/input-variants.css +11 -11
  197. package/src/styles/inputs.css +44 -61
  198. package/src/styles/layout.css +445 -1258
  199. package/src/styles/loginCard.css +1 -1
  200. package/src/styles/mobilLayout.css +153 -28
  201. package/src/styles/text.css +500 -1508
  202. package/src/styles/theme.css +199 -435
  203. package/src/styles/transitions.css +4 -4
  204. package/src/types/BagelForm.ts +46 -151
  205. package/src/types/BtnOptions.ts +5 -3
  206. package/src/types/TableSchema.ts +1 -0
  207. package/src/types/index.ts +0 -5
  208. package/src/utils/calendar/dateUtils.ts +2 -3
  209. package/src/utils/constants.ts +7 -0
  210. package/src/utils/date.ts +482 -0
  211. package/src/utils/fetch.ts +128 -0
  212. package/src/utils/index.ts +54 -3
  213. package/src/utils/sizeParsing.ts +5 -5
  214. package/src/utils/string.ts +56 -0
  215. package/vite.config.ts +5 -1
  216. package/bin/generateFormSchema.ts +0 -1035
  217. package/bin/utils.ts +0 -223
  218. package/src/components/Carousel.vue +0 -724
  219. package/src/components/ImportData.vue +0 -1749
  220. package/src/components/Modal.vue +0 -184
  221. package/src/components/ModalConfirm.vue +0 -42
  222. package/src/components/ModalForm.vue +0 -102
  223. package/src/components/Pill.vue +0 -149
  224. package/src/components/Slider.vue +0 -1446
  225. package/src/components/Title.vue +0 -23
  226. package/src/components/ToolBar.vue +0 -9
  227. package/src/components/form/BagelForm.vue +0 -219
  228. package/src/components/form/BglFieldSet.vue +0 -14
  229. package/src/components/form/BglMultiStepForm.vue +0 -469
  230. package/src/components/form/FieldArray.vue +0 -422
  231. package/src/components/form/useBagelFormState.ts +0 -76
  232. package/src/composables/useFormField.ts +0 -38
  233. package/src/dialog/DialogOLD.vue +0 -358
  234. package/src/plugins/modalTypes.ts +0 -61
  235. package/src/plugins/useModal.ts +0 -225
  236. package/src/styles/modal.css +0 -120
  237. package/src/styles/pillColors.css +0 -0
  238. package/src/utils/BagelFormUtils.ts +0 -684
@@ -2,13 +2,15 @@
2
2
  import type { BaseBagelField, Field, Path } from '@bagelink/vue'
3
3
  import type { SetupContext } from 'vue'
4
4
  import type { TableSchemaProps } from '../../types/TableSchema'
5
+ import type { DraggableEvent } from '../draggable/useDraggable'
5
6
  import {
6
7
  Icon,
7
8
  keyToLabel,
8
9
  Loading
9
10
  } from '@bagelink/vue'
10
- import { useSlots, watch, computed, toValue } from 'vue'
11
+ import { useSlots, watch, computed, toValue, ref, nextTick, onMounted } from 'vue'
11
12
  import { useSchemaField } from '../../composables/useSchemaField'
13
+ import { useDraggable } from '../draggable/useDraggable'
12
14
  import { useTableData } from './useTableData'
13
15
  import { useTableSelection } from './useTableSelection'
14
16
  import { useTableVirtualization } from './useTableVirtualization'
@@ -21,6 +23,7 @@ const props = defineProps<TableSchemaProps<T>>()
21
23
  const emit = defineEmits<{
22
24
  orderBy: [EmitOrderT]
23
25
  select: [T]
26
+ reorder: [{ oldIndex: number, newIndex: number, item: T }]
24
27
  lastItemVisible: []
25
28
  }>()
26
29
 
@@ -78,6 +81,38 @@ const {
78
81
  }
79
82
  })
80
83
 
84
+ const isSortable = computed(() => !!props.sortable)
85
+ const dragHandle = computed(() => {
86
+ if (typeof props.sortable === 'object' && props.sortable?.handle) return props.sortable.handle
87
+ return '.drag-handle-col'
88
+ })
89
+
90
+ // Drag-to-reorder
91
+ const tbodyRef = ref<HTMLTableSectionElement>()
92
+
93
+ const { initDraggableContainer } = useDraggable({
94
+ handle: dragHandle.value,
95
+ mode: 'line',
96
+ items: props.data,
97
+ onEnd: (event: DraggableEvent) => {
98
+ if (event.oldIndex === event.newIndex) return
99
+ const item = computedData.value[event.oldIndex]
100
+ const cleanItem = cleanTransformedData(item)
101
+ emit('reorder', { oldIndex: event.oldIndex, newIndex: event.newIndex, item: cleanItem })
102
+ }
103
+ })
104
+
105
+ function reinitDrag() {
106
+ if (!isSortable.value || !tbodyRef.value) return
107
+ nextTick(() => {
108
+ if (tbodyRef.value) initDraggableContainer(tbodyRef.value)
109
+ })
110
+ }
111
+
112
+ watch(() => props.data, reinitDrag, { deep: true })
113
+ watch(isSortable, (val) => { if (val) nextTick(reinitDrag) })
114
+ onMounted(reinitDrag)
115
+
81
116
  function renderFieldForRow(field: Field<T>, row: T) {
82
117
  const { renderField } = useSchemaField<T>({
83
118
  mode: 'table',
@@ -119,29 +154,33 @@ const showLoading = computed(() => loading.value)
119
154
  <div v-bind="wrapperProps" :class="{ 'pointer-events-none': showLoading }">
120
155
  <table class="infinite-wrapper" :class="{ selecting: computedSelectedItems.length }">
121
156
  <thead class="row first-row">
122
- <th v-if="isSelectable">
157
+ <th v-if="isSortable" class="col-drag" />
158
+ <th v-if="isSelectable && !isSortable">
123
159
  <input ref="allSelectorEl" type="checkbox" @click.stop @change="(e) => toggleSelectAll(e)">
124
160
  </th>
125
161
  <th
126
162
  v-for="field in computedSchema" :key="field.id" class="col"
127
- @click="toggleSort(field?.id || '')"
163
+ @click="!isSortable && toggleSort(field?.id || '')"
128
164
  >
129
165
  <div class="flex">
130
166
  {{ field.label || field.attrs?.label || keyToLabel(field?.id) }}
131
- <div class="list-arrows" :class="{ sorted: sortField === field?.id }">
167
+ <div v-if="!isSortable" class="list-arrows" :class="{ sorted: sortField === field?.id }">
132
168
  <Icon :class="{ desc: sortDirection === 'DESC' }" icon="keyboard_arrow_up" />
133
169
  </div>
134
170
  </div>
135
171
  </th>
136
172
  </thead>
137
- <tbody>
173
+ <tbody ref="tbodyRef">
138
174
  <tr
139
175
  v-for="{ data: row } in list" :key="row?.id || `row-${Math.random()}`"
140
176
  class="row row-item position-relative"
141
177
  :class="{ selected: row?.id && computedSelectedItems.includes(row.id) }"
142
178
  @click="(event) => toggleSelectItem(row, event)"
143
179
  >
144
- <td v-if="isSelectable">
180
+ <td v-if="isSortable" class="col-drag">
181
+ <Icon icon="drag_indicator" :size="1.2" class="drag-handle-col grab" />
182
+ </td>
183
+ <td v-if="isSelectable && !isSortable">
145
184
  <div @click.stop>
146
185
  <input v-model="selectedItems" type="checkbox" :value="row?.id || ''">
147
186
  </div>
@@ -164,6 +203,25 @@ const showLoading = computed(() => loading.value)
164
203
  </template>
165
204
 
166
205
  <style scoped>
206
+ .col-drag {
207
+ width: 2.5rem;
208
+ padding: 0 0.25rem;
209
+ }
210
+
211
+ .col-drag .bgl_icon-font {
212
+ color: var(--bgl-black-tint);
213
+ opacity: 0.5;
214
+ transition: opacity 0.15s;
215
+ }
216
+
217
+ .row-item:hover .col-drag .bgl_icon-font {
218
+ opacity: 0.8;
219
+ }
220
+
221
+ .grab {
222
+ cursor: grab;
223
+ }
224
+
167
225
  .table-list-wrap {
168
226
  min-height: 150px;
169
227
  }
@@ -238,7 +296,7 @@ th {
238
296
  }
239
297
 
240
298
  .row {
241
- border-bottom: 1px solid var(--border-color);
299
+ border-bottom: 1px solid var(--bgl-border-color);
242
300
  cursor: pointer;
243
301
  }
244
302
 
@@ -254,7 +312,7 @@ th {
254
312
 
255
313
  .row.first-row::after {
256
314
  content: '';
257
- border-bottom: 1px solid var(--border-color);
315
+ border-bottom: 1px solid var(--bgl-border-color);
258
316
  position: absolute;
259
317
  left: 0;
260
318
  right: 0;
@@ -382,7 +440,7 @@ th input[type='checkbox'] {
382
440
 
383
441
  th::after {
384
442
  content: '';
385
- border-bottom: 1px solid var(--border-color);
443
+ border-bottom: 1px solid var(--bgl-border-color);
386
444
  position: absolute;
387
445
  left: 0;
388
446
  right: 0;
@@ -390,7 +448,7 @@ th::after {
390
448
  }
391
449
 
392
450
  tr {
393
- border-bottom: 1px solid var(--border-color);
451
+ border-bottom: 1px solid var(--bgl-border-color);
394
452
  cursor: pointer;
395
453
  align-items: center;
396
454
  }
@@ -1,5 +1 @@
1
- export { default as BglForm } from './BagelForm.vue'
2
- export { default as BagelForm } from './BagelForm.vue'
3
- export { default as BagelMultiStepForm } from './BglMultiStepForm.vue'
4
- export { default as FieldArray } from './FieldArray.vue'
5
1
  export * from './inputs'
@@ -219,7 +219,7 @@ function getItemRef(i: number) {
219
219
 
220
220
  <style>
221
221
  :root {
222
- --array-input-bg: var(--input-bg);
222
+ --array-input-bg: var(--bgl-input-bg);
223
223
  }
224
224
  .array-input-row {
225
225
  grid-template-columns: 1fr auto;
@@ -58,8 +58,8 @@ onMounted(() => {
58
58
 
59
59
  .bgl-checkbox input[type='checkbox'] {
60
60
  accent-color: var(--bgl-input-label-active-color, var(--bgl-accent-color));
61
- height: calc(var(--input-height) / 2.75);
62
- width: calc(var(--input-height) / 2.75);
61
+ height: calc(var(--bgl-input-height) / 2.75);
62
+ width: calc(var(--bgl-input-height) / 2.75);
63
63
  min-width: 0;
64
64
  display: flex;
65
65
  justify-content: center;
@@ -69,8 +69,8 @@ onMounted(() => {
69
69
 
70
70
  .bgl-checkbox input[type='checkbox']::before {
71
71
  content: '';
72
- height: calc(var(--input-height) / 2.75);
73
- width: calc(var(--input-height) / 2.75);
72
+ height: calc(var(--bgl-input-height) / 2.75);
73
+ width: calc(var(--bgl-input-height) / 2.75);
74
74
  background: var(--bgl-input-label-active-color, var(--bgl-primary));
75
75
  border-radius: 100%;
76
76
  opacity: 0;
@@ -86,7 +86,7 @@ onMounted(() => {
86
86
  .bgl-checkbox label {
87
87
  cursor: pointer;
88
88
  user-select: none;
89
- font-size: var(--input-font-size);
89
+ font-size: var(--bgl-input-font-size);
90
90
  transition: var(--bgl-transition-400);
91
91
  }
92
92
 
@@ -99,7 +99,7 @@ onMounted(() => {
99
99
  }
100
100
 
101
101
  .bagel-input:focus-within.bgl-checkbox:not(:checked) label {
102
- color: var(--label-color) !important;
102
+ color: var(--bgl-label-color) !important;
103
103
  }
104
104
 
105
105
  .bgl-checkbox input:disabled+label,
@@ -1,4 +1,5 @@
1
1
  <script setup lang="ts">
2
+ defineOptions({ name: 'BglCheckbox' })
2
3
  const val = defineModel<boolean>('modelValue', { default: false })
3
4
  </script>
4
5
 
@@ -13,8 +14,8 @@ const val = defineModel<boolean>('modelValue', { default: false })
13
14
  .primary-checkbox input {
14
15
  appearance: none;
15
16
  accent-color: var(--bgl-accent-color);
16
- height: calc(var(--input-height) / 1.75);
17
- width: calc(var(--input-height) / 1.75);
17
+ height: calc(var(--bgl-input-height) / 1.75);
18
+ width: calc(var(--bgl-input-height) / 1.75);
18
19
  min-width: 0;
19
20
  display: flex;
20
21
  justify-content: center;
@@ -26,8 +27,8 @@ const val = defineModel<boolean>('modelValue', { default: false })
26
27
  }
27
28
 
28
29
  .primary-checkbox {
29
- height:var(--input-height);
30
- width:var(--input-height);
30
+ height:var(--bgl-input-height);
31
+ width:var(--bgl-input-height);
31
32
  display: flex;
32
33
  justify-content: center;
33
34
  align-items: center;
@@ -180,7 +180,7 @@ watch(() => props.modelValue, () => {
180
180
  }
181
181
 
182
182
  .code-editor-grandpa:focus-within {
183
- outline: solid 1px var(--border-color, #4f575f);
183
+ outline: solid 1px var(--bgl-border-color, #4f575f);
184
184
  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.13);
185
185
  }
186
186
 
@@ -70,9 +70,9 @@ watch(
70
70
 
71
71
  <style>
72
72
  .colorInputPick {
73
- --input-font-size: 12px;
73
+ --bgl-input-font-size: 12px;
74
74
  background: transparent !important;
75
- height: var(--input-height) !important;
75
+ height: var(--bgl-input-height) !important;
76
76
  min-width: 50px !important;
77
77
  outline: none !important;
78
78
  }
@@ -90,7 +90,7 @@ watch(
90
90
  /* ── frame: transparent bg, outline that highlights on focus ── */
91
91
  .bagel-input.frame .colorInputPickWrap {
92
92
  background: transparent !important;
93
- outline: 1.5px solid var(--border-color);
93
+ outline: 1.5px solid var(--bgl-border-color);
94
94
  outline-offset: -1px;
95
95
  transition: outline-color 0.2s ease, box-shadow 0.2s ease;
96
96
  }
@@ -101,7 +101,7 @@ watch(
101
101
 
102
102
  /* ── bgl-outline: border only ── */
103
103
  .bagel-input.bgl-outline .colorInputPickWrap {
104
- outline: 1.5px solid var(--border-color);
104
+ outline: 1.5px solid var(--bgl-border-color);
105
105
  outline-offset: -1px;
106
106
  }
107
107
 
@@ -117,7 +117,7 @@ watch(
117
117
  background: transparent !important;
118
118
  border-radius: 0 !important;
119
119
  outline: none !important;
120
- border-bottom: 1.5px solid var(--border-color);
120
+ border-bottom: 1.5px solid var(--bgl-border-color);
121
121
  transition: border-color 0.25s ease;
122
122
  position: relative;
123
123
  }
@@ -449,7 +449,7 @@ function selectDate(date: Date | null) {
449
449
  <style scoped>
450
450
  .calendar-container {
451
451
  max-width: 90vw;
452
- border-radius: var(--card-border-radius);
452
+ border-radius: var(--bgl-card-border-radius);
453
453
  background: var(--bgl-box-bg);
454
454
  }
455
455
 
@@ -508,9 +508,9 @@ function selectDate(date: Date | null) {
508
508
  }
509
509
 
510
510
  .day:hover:not(.disabled) {
511
- background-color: var(--input-bg);
511
+ background-color: var(--bgl-input-bg);
512
512
  color: var(--bgl-text-color);
513
- outline: 1px solid var(--border-color);
513
+ outline: 1px solid var(--bgl-border-color);
514
514
  }
515
515
 
516
516
  .day:hover:not(.disabled).selected {
@@ -382,7 +382,7 @@ onMounted(() => {
382
382
  }
383
383
 
384
384
  .bagel-input label {
385
- font-size: var(--label-font-size);
385
+ font-size: var(--bgl-label-font-size);
386
386
  }
387
387
 
388
388
  .bagel-input.format-invalid,
@@ -399,14 +399,14 @@ onMounted(() => {
399
399
  border-radius: 50%;
400
400
  background: var(--bgl-orange);
401
401
  right: 0.6rem;
402
- bottom: calc(var(--input-height) / 2 - 3.5px);
402
+ bottom: calc(var(--bgl-input-height) / 2 - 3.5px);
403
403
  pointer-events: none;
404
404
  }
405
405
 
406
406
  .bagel-input.format-invalid.textInputIconWrap::after,
407
407
  .bagel-input.format-valid.textInputIconWrap::after,
408
408
  .bagel-input.format-empty.textInputIconWrap::after {
409
- right: calc(var(--input-height) / 3 + 1.8rem);
409
+ right: calc(var(--bgl-input-height) / 3 + 1.8rem);
410
410
  }
411
411
 
412
412
  .bagel-input.format-empty::after {
@@ -417,7 +417,7 @@ onMounted(() => {
417
417
  border-radius: 50%;
418
418
  background: var(--bgl-gray, #aaa);
419
419
  right: 0.6rem;
420
- bottom: calc(var(--input-height) / 2 - 3.5px);
420
+ bottom: calc(var(--bgl-input-height) / 2 - 3.5px);
421
421
  pointer-events: none;
422
422
  }
423
423
 
@@ -433,7 +433,7 @@ onMounted(() => {
433
433
  border-radius: 50%;
434
434
  background: var(--bgl-green);
435
435
  right: 0.6rem;
436
- bottom: calc(var(--input-height) / 2 - 3.5px);
436
+ bottom: calc(var(--bgl-input-height) / 2 - 3.5px);
437
437
  pointer-events: none;
438
438
  }
439
439
  </style>
@@ -455,33 +455,33 @@ onMounted(() => {
455
455
  }
456
456
 
457
457
  .bagel-input label {
458
- font-size: var(--label-font-size);
458
+ font-size: var(--bgl-label-font-size);
459
459
  }
460
460
 
461
461
  /* email input is always LTR — use physical properties so icons stay in the correct
462
462
  visual position regardless of the document's text direction */
463
463
  .textInputIconWrap .bgl_icon-font {
464
- color: var(--input-color);
464
+ color: var(--bgl-input-color);
465
465
  position: absolute;
466
- right: calc(var(--input-height) / 3 - 0.25rem);
467
- margin-top: calc(var(--input-height) / 2 + 0.1rem);
466
+ right: calc(var(--bgl-input-height) / 3 - 0.25rem);
467
+ margin-top: calc(var(--bgl-input-height) / 2 + 0.1rem);
468
468
  line-height: 0;
469
469
  }
470
470
 
471
471
  .textInputIconWrap input {
472
- padding-right: calc(var(--input-height) / 3 + 1.5rem);
472
+ padding-right: calc(var(--bgl-input-height) / 3 + 1.5rem);
473
473
  }
474
474
 
475
475
  .txtInputIconStart .iconStart {
476
- color: var(--input-color);
476
+ color: var(--bgl-input-color);
477
477
  position: absolute;
478
- left: calc(var(--input-height) / 3 - 0.25rem);
479
- margin-top: calc(var(--input-height) / 2);
478
+ left: calc(var(--bgl-input-height) / 3 - 0.25rem);
479
+ margin-top: calc(var(--bgl-input-height) / 2);
480
480
  line-height: 0;
481
481
  }
482
482
 
483
483
  .txtInputIconStart input {
484
- padding-left: calc(var(--input-height) / 3 + 1.5rem);
484
+ padding-left: calc(var(--bgl-input-height) / 3 + 1.5rem);
485
485
  }
486
486
 
487
487
  .bagel-input.small textarea {
@@ -507,6 +507,6 @@ onMounted(() => {
507
507
  }
508
508
 
509
509
  .bagel-input.has-error input {
510
- border-color: var(--bgl-red, #dc3545) !important;
510
+ border-color: var(--bgl-red) !important;
511
511
  }
512
512
  </style>
@@ -220,9 +220,9 @@ const hasValue = computed(() => formattedValue.value.length > 0)
220
220
  .input-icon-wrap {
221
221
  display: flex;
222
222
  align-items: center;
223
- background: var(--input-bg);
224
- border-radius: var(--input-border-radius);
225
- height: var(--input-height);
223
+ background: var(--bgl-input-bg);
224
+ border-radius: var(--bgl-input-border-radius);
225
+ height: var(--bgl-input-height);
226
226
  transition: box-shadow 0.2s ease, outline-color 0.2s ease;
227
227
  }
228
228
 
@@ -235,14 +235,14 @@ const hasValue = computed(() => formattedValue.value.length > 0)
235
235
  }
236
236
 
237
237
  .input-icon-wrap:focus-within {
238
- outline-color: var(--input-bg);
238
+ outline-color: var(--bgl-input-bg);
239
239
  box-shadow: inset 0 0 8px #00000018;
240
240
  }
241
241
 
242
242
  .input-icon-wrap .iconStart,
243
243
  .input-icon-wrap > .bgl_icon-font {
244
244
  flex-shrink: 0;
245
- color: var(--input-color);
245
+ color: var(--bgl-input-color);
246
246
  line-height: 0;
247
247
  padding-inline: 0.35rem;
248
248
  }
@@ -250,7 +250,7 @@ const hasValue = computed(() => formattedValue.value.length > 0)
250
250
  /* ── frame variant ─────────────────────────────────────────────── */
251
251
  .bagel-input.frame .input-icon-wrap {
252
252
  background: transparent;
253
- outline: 1.5px solid var(--border-color);
253
+ outline: 1.5px solid var(--bgl-border-color);
254
254
  outline-offset: -1px;
255
255
  }
256
256
 
@@ -261,7 +261,7 @@ const hasValue = computed(() => formattedValue.value.length > 0)
261
261
 
262
262
  /* ── outline variant ───────────────────────────────────────────── */
263
263
  .bagel-input.bgl-outline .input-icon-wrap {
264
- outline: 1.5px solid var(--border-color);
264
+ outline: 1.5px solid var(--bgl-border-color);
265
265
  outline-offset: -1px;
266
266
  }
267
267
 
@@ -271,7 +271,7 @@ const hasValue = computed(() => formattedValue.value.length > 0)
271
271
  background: transparent;
272
272
  border-radius: 0;
273
273
  height: auto;
274
- border-bottom: 1.5px solid var(--border-color);
274
+ border-bottom: 1.5px solid var(--bgl-border-color);
275
275
  }
276
276
 
277
277
  .bagel-input.underlined .input-icon-wrap::after {
@@ -306,11 +306,11 @@ const hasValue = computed(() => formattedValue.value.length > 0)
306
306
  }
307
307
 
308
308
  .top-bgl-ctrl-num-btn {
309
- margin-top: calc(var(--input-height) / 10) !important;
309
+ margin-top: calc(var(--bgl-input-height) / 10) !important;
310
310
  }
311
311
 
312
312
  .bgl-ctrl-num-btn {
313
- height: calc(var(--input-height) / 2.5) !important;
313
+ height: calc(var(--bgl-input-height) / 2.5) !important;
314
314
  isolation: isolate;
315
315
  }
316
316
 
@@ -320,6 +320,6 @@ const hasValue = computed(() => formattedValue.value.length > 0)
320
320
  }
321
321
 
322
322
  .bagel-input.has-error input {
323
- border-color: var(--bgl-red, #dc3545) !important;
323
+ border-color: var(--bgl-red) !important;
324
324
  }
325
325
  </style>
@@ -117,11 +117,11 @@ function isDigitsFull() {
117
117
 
118
118
  <style scoped>
119
119
  .otp-error-message {
120
- color: var(--bgl-red, #dc3545);
120
+ color: var(--bgl-red);
121
121
  }
122
122
  .otp_wrap.has-error input,
123
123
  .otp_wrap.has-error textarea {
124
- outline: 1px solid var(--bgl-red, #dc3545) !important;
124
+ outline: 1px solid var(--bgl-red) !important;
125
125
  }
126
126
 
127
127
  .otp_wrap {
@@ -167,7 +167,7 @@ function isDigitsFull() {
167
167
 
168
168
  .otp-input.frame .digit-box {
169
169
  background: transparent;
170
- outline: 1.5px solid var(--border-color);
170
+ outline: 1.5px solid var(--bgl-border-color);
171
171
  outline-offset: -1px;
172
172
  transition: outline-color 0.2s ease, box-shadow 0.2s ease;
173
173
  }
@@ -184,7 +184,7 @@ function isDigitsFull() {
184
184
  /* ── bgl-outline variant ────────────────────────────────────────────────── */
185
185
 
186
186
  .otp-input.bgl-outline .digit-box {
187
- outline: 1.5px solid var(--border-color);
187
+ outline: 1.5px solid var(--bgl-border-color);
188
188
  outline-offset: -1px;
189
189
  }
190
190
 
@@ -77,7 +77,7 @@ const strengthScore = computed(() => {
77
77
 
78
78
  const strengthColor = computed(() => {
79
79
  const score = strengthScore.value
80
- if (score == null) return 'var(--input-bg)' // gray - no password
80
+ if (score == null) return 'var(--bgl-input-bg)' // gray - no password
81
81
  if (score <= 1) return 'var(--bgl-red)' // red
82
82
  if (score === 2) return 'var(--bgl-orange)' // orange
83
83
  if (score === 3) return 'var(--bgl-yellow)' // amber
@@ -134,7 +134,7 @@ const feedbackMessage = computed(() => {
134
134
 
135
135
  <style>
136
136
  .m-password {
137
- height: var(--input-height) !important;
137
+ height: var(--bgl-input-height) !important;
138
138
  }
139
139
 
140
140
  [dir='rtl'] .passwordInput input {
@@ -149,7 +149,7 @@ const feedbackMessage = computed(() => {
149
149
  .password-strength-bar {
150
150
  flex: 1;
151
151
  height: 6px;
152
- background-color: var(--input-bg);
152
+ background-color: var(--bgl-input-bg);
153
153
  }
154
154
 
155
155
  .password-strength-fill {
@@ -141,7 +141,7 @@ function handleChange() {
141
141
 
142
142
  <style scoped>
143
143
  .group-label {
144
- font-size: var(--label-font-size);
144
+ font-size: var(--bgl-label-font-size);
145
145
  margin: 0 0 0.25rem 0;
146
146
  }
147
147
 
@@ -67,7 +67,7 @@ th {
67
67
  /* Add styles for embedded content */
68
68
  .richtext-editor-content iframe {
69
69
  max-width: 100%;
70
- border: 1px solid var(--border-color, #ddd);
70
+ border: 1px solid var(--bgl-border-color, #ddd);
71
71
  border-radius: 8px;
72
72
  display: block;
73
73
  margin: 1em auto;
@@ -148,7 +148,7 @@ th {
148
148
  .richtext-editor-content .embed-iframe {
149
149
  width: 100%;
150
150
  height: 315px;
151
- border: 1px solid var(--border-color, #ddd);
151
+ border: 1px solid var(--bgl-border-color, #ddd);
152
152
  border-radius: 8px;
153
153
  background: white;
154
154
  }
@@ -214,7 +214,7 @@ th {
214
214
 
215
215
  /* Add a subtle border to distinguish embedded content */
216
216
  .richtext-editor-content iframe:not([class*='editableContent']) {
217
- border: 1px solid var(--border-color);
217
+ border: 1px solid var(--bgl-border-color);
218
218
  border-radius: 4px;
219
219
  background: white;
220
220
  }
@@ -304,7 +304,7 @@ th {
304
304
  max-width: 100%;
305
305
  width: 100%;
306
306
  margin: 0 auto;
307
- border: 1px solid var(--border-color, #ddd);
307
+ border: 1px solid var(--bgl-border-color, #ddd);
308
308
  border-radius: 8px;
309
309
  background: white;
310
310
  transition: all 0.3s ease;