@bagelink/vue 1.14.13 → 1.14.15

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 (176) 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/Btn.vue.d.ts +1 -1
  5. package/dist/components/Card.vue.d.ts.map +1 -1
  6. package/dist/components/Carousel.vue.d.ts +0 -11
  7. package/dist/components/Dropdown.vue.d.ts +0 -2
  8. package/dist/components/Filter.vue.d.ts +30 -0
  9. package/dist/components/Filter.vue.d.ts.map +1 -0
  10. package/dist/components/FilterQuery.vue.d.ts +8 -3
  11. package/dist/components/Image.vue.d.ts.map +1 -1
  12. package/dist/components/ImportData.vue.d.ts.map +1 -1
  13. package/dist/components/Modal.vue.d.ts +0 -1
  14. package/dist/components/Pill.vue.d.ts.map +1 -1
  15. package/dist/components/QueryFilter.vue.d.ts +30 -0
  16. package/dist/components/QueryFilter.vue.d.ts.map +1 -0
  17. package/dist/components/Swiper.vue.d.ts +6 -12
  18. package/dist/components/Toast.vue.d.ts.map +1 -1
  19. package/dist/components/analytics/PieChart.vue.d.ts +2 -2
  20. package/dist/components/calendar/CalendarPopover.vue.d.ts +8 -4
  21. package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
  22. package/dist/components/calendar/CalendarTypes.d.ts +0 -10
  23. package/dist/components/calendar/Index.vue.d.ts +4 -20
  24. package/dist/components/calendar/views/WeekView.vue.d.ts +1 -9
  25. package/dist/components/dataTable/DataTable.vue.d.ts.map +1 -1
  26. package/dist/components/form/inputs/ArrayInput.vue.d.ts +2 -4
  27. package/dist/components/form/inputs/CheckInput.vue.d.ts +1 -2
  28. package/dist/components/form/inputs/Checkbox.vue.d.ts.map +1 -1
  29. package/dist/components/form/inputs/CodeEditor/Index.vue.d.ts +0 -54
  30. package/dist/components/form/inputs/ColorInput.vue.d.ts +1 -3
  31. package/dist/components/form/inputs/DateInput.vue.d.ts +1 -2
  32. package/dist/components/form/inputs/DatePicker.vue.d.ts +0 -1
  33. package/dist/components/form/inputs/EmailInput.vue.d.ts +2 -5
  34. package/dist/components/form/inputs/JSONInput.vue.d.ts +1 -2
  35. package/dist/components/form/inputs/MarkdownEditor.vue.d.ts +2 -7
  36. package/dist/components/form/inputs/NumberInput.vue.d.ts +1 -2
  37. package/dist/components/form/inputs/OTP.vue.d.ts +1 -2
  38. package/dist/components/form/inputs/PasswordInput.vue.d.ts +10 -16
  39. package/dist/components/form/inputs/RadioGroup.vue.d.ts +1 -3
  40. package/dist/components/form/inputs/RangeInput.vue.d.ts +1 -6
  41. package/dist/components/form/inputs/RichText/index.vue.d.ts +1 -2
  42. package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
  43. package/dist/components/form/inputs/RichText/utils/media.d.ts.map +1 -1
  44. package/dist/components/form/inputs/SelectBtn.vue.d.ts +2 -2
  45. package/dist/components/form/inputs/SelectInput.vue.d.ts +13 -20
  46. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  47. package/dist/components/form/inputs/SignaturePad.vue.d.ts +1 -6
  48. package/dist/components/form/inputs/TableField.vue.d.ts +1 -2
  49. package/dist/components/form/inputs/TelInput.vue.d.ts +1 -2
  50. package/dist/components/form/inputs/TextInput.vue.d.ts +2 -3
  51. package/dist/components/form/inputs/ToggleInput.vue.d.ts +1 -2
  52. package/dist/components/form/inputs/Upload/UploadInput.vue.d.ts +6 -27
  53. package/dist/components/form/inputs/Upload/upload.d.ts +1 -1
  54. package/dist/components/form/inputs/index.d.ts +0 -1
  55. package/dist/components/index.d.ts +1 -3
  56. package/dist/components/index.d.ts.map +1 -1
  57. package/dist/components/layout/AppContent.vue.d.ts +1 -1
  58. package/dist/components/layout/AppLayout.vue.d.ts +0 -2
  59. package/dist/components/layout/AppSidebar.vue.d.ts +1 -5
  60. package/dist/components/layout/Skeleton.vue.d.ts.map +1 -1
  61. package/dist/components/layout/TabsNav.vue.d.ts +1 -12
  62. package/dist/dialog/Dialog.vue.d.ts.map +1 -1
  63. package/dist/dialog/DialogConfirm.vue.d.ts.map +1 -1
  64. package/dist/form-flow/MultiStepForm.vue.d.ts +1 -6
  65. package/dist/form-flow/form-flow.d.ts +1 -24
  66. package/dist/i18n/index.d.ts +0 -838
  67. package/dist/index.cjs +193 -166
  68. package/dist/index.d.ts +0 -2
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.mjs +47586 -53496
  71. package/dist/plugins/bagel.d.ts.map +1 -1
  72. package/dist/style.css +1 -2
  73. package/dist/types/BagelForm.d.ts +1 -10
  74. package/dist/types/NavLink.d.ts +1 -2
  75. package/dist/types/TableSchema.d.ts.map +1 -1
  76. package/dist/types/index.d.ts +1 -2
  77. package/dist/types/index.d.ts.map +1 -1
  78. package/dist/utils/BagelFormUtils.d.ts +0 -1
  79. package/dist/utils/calendar/dateUtils.d.ts +2 -2
  80. package/dist/utils/calendar/dateUtils.d.ts.map +1 -1
  81. package/dist/utils/date.d.ts +116 -0
  82. package/dist/utils/date.d.ts.map +1 -0
  83. package/dist/utils/fetch.d.ts +29 -0
  84. package/dist/utils/fetch.d.ts.map +1 -0
  85. package/dist/utils/index.d.ts +1 -1
  86. package/dist/utils/index.d.ts.map +1 -1
  87. package/dist/utils/string.d.ts +7 -0
  88. package/dist/utils/string.d.ts.map +1 -0
  89. package/dist/utils/useSearch.d.ts +1 -1
  90. package/package.json +1 -5
  91. package/src/components/AccordionItem.vue +5 -5
  92. package/src/components/Alert.vue +3 -2
  93. package/src/components/Avatar.vue +2 -1
  94. package/src/components/BglVideo.vue +4 -4
  95. package/src/components/Btn.vue +39 -39
  96. package/src/components/Card.vue +7 -6
  97. package/src/components/Dropdown.vue +2 -2
  98. package/src/components/FieldSetVue.vue +2 -2
  99. package/src/components/FilterQuery.vue +2 -2
  100. package/src/components/Image.vue +2 -1
  101. package/src/components/ImportData.vue +12 -12
  102. package/src/components/JSONSchema.vue +2 -2
  103. package/src/components/JsonBuilder.vue +2 -2
  104. package/src/components/ListItem.vue +1 -1
  105. package/src/components/MapEmbed/Index.vue +8 -8
  106. package/src/components/Pill.vue +17 -16
  107. package/src/components/Spreadsheet/Index.vue +3 -3
  108. package/src/components/Spreadsheet/SpreadsheetTable.vue +10 -10
  109. package/src/components/Toast.vue +34 -28
  110. package/src/components/calendar/CalendarPopover.vue +1 -1
  111. package/src/components/calendar/Index.vue +1 -1
  112. package/src/components/calendar/views/AgendaView.vue +2 -2
  113. package/src/components/calendar/views/DayView.vue +1 -1
  114. package/src/components/calendar/views/MonthView.vue +5 -5
  115. package/src/components/dataTable/DataTable.vue +68 -10
  116. package/src/components/form/FieldArray.vue +5 -5
  117. package/src/components/form/inputs/ArrayInput.vue +1 -1
  118. package/src/components/form/inputs/CheckInput.vue +6 -6
  119. package/src/components/form/inputs/Checkbox.vue +5 -4
  120. package/src/components/form/inputs/CodeEditor/Index.vue +1 -1
  121. package/src/components/form/inputs/ColorInput.vue +5 -5
  122. package/src/components/form/inputs/DatePicker.vue +3 -3
  123. package/src/components/form/inputs/EmailInput.vue +14 -14
  124. package/src/components/form/inputs/NumberInput.vue +10 -10
  125. package/src/components/form/inputs/OTP.vue +2 -2
  126. package/src/components/form/inputs/PasswordInput.vue +3 -3
  127. package/src/components/form/inputs/RadioGroup.vue +1 -1
  128. package/src/components/form/inputs/RichText/editor.css +4 -4
  129. package/src/components/form/inputs/RichText/index.vue +39 -39
  130. package/src/components/form/inputs/RichText/utils/media.ts +1 -92
  131. package/src/components/form/inputs/RichText/utils/table.ts +4 -4
  132. package/src/components/form/inputs/SelectBtn.vue +1 -1
  133. package/src/components/form/inputs/SelectInput.vue +13 -13
  134. package/src/components/form/inputs/SignaturePad.vue +6 -6
  135. package/src/components/form/inputs/TableField.vue +7 -7
  136. package/src/components/form/inputs/TelInput.vue +11 -11
  137. package/src/components/form/inputs/TextInput.vue +10 -10
  138. package/src/components/form/inputs/ToggleInput.vue +11 -11
  139. package/src/components/form/inputs/Upload/upload.css +14 -14
  140. package/src/components/index.ts +0 -3
  141. package/src/components/layout/AppSidebar.vue +3 -3
  142. package/src/components/layout/BottomMenu.vue +1 -1
  143. package/src/components/layout/Skeleton.vue +5 -4
  144. package/src/components/layout/TabsNav.vue +18 -18
  145. package/src/index.ts +0 -1
  146. package/src/plugins/bagel.ts +0 -15
  147. package/src/styles/app-layout.css +231 -0
  148. package/src/styles/appearance.css +179 -21
  149. package/src/styles/bagel.css +103 -97
  150. package/src/styles/buttons.css +8 -8
  151. package/src/styles/colors.css +0 -103
  152. package/src/styles/dark.css +25 -26
  153. package/src/styles/input-variants.css +11 -11
  154. package/src/styles/inputs.css +43 -60
  155. package/src/styles/layout.css +445 -1258
  156. package/src/styles/loginCard.css +1 -1
  157. package/src/styles/mobilLayout.css +153 -28
  158. package/src/styles/text.css +500 -1508
  159. package/src/styles/theme.css +199 -435
  160. package/src/styles/transitions.css +4 -4
  161. package/src/types/TableSchema.ts +1 -0
  162. package/src/types/index.ts +0 -5
  163. package/src/utils/calendar/dateUtils.ts +2 -3
  164. package/src/utils/date.ts +482 -0
  165. package/src/utils/fetch.ts +128 -0
  166. package/src/utils/index.ts +35 -0
  167. package/src/utils/string.ts +56 -0
  168. package/bin/generateFormSchema.ts +0 -1035
  169. package/bin/utils.ts +0 -223
  170. package/src/components/Modal.vue +0 -184
  171. package/src/components/ModalConfirm.vue +0 -42
  172. package/src/components/ModalForm.vue +0 -102
  173. package/src/plugins/modalTypes.ts +0 -61
  174. package/src/plugins/useModal.ts +0 -225
  175. package/src/styles/modal.css +0 -120
  176. package/src/styles/pillColors.css +0 -0
@@ -66,21 +66,21 @@ onMounted(() => {
66
66
  appearance: none;
67
67
  position: relative;
68
68
  display: inline-block;
69
- background: var(--input-bg);
70
- height: calc(var(--input-height) / 2);
71
- width: calc(var(--input-height) - 2px);
69
+ background: var(--bgl-input-bg);
70
+ height: calc(var(--bgl-input-height) / 2);
71
+ width: calc(var(--bgl-input-height) - 2px);
72
72
  vertical-align: middle;
73
73
  border-radius: 2rem;
74
74
  box-shadow: 0px 1px 3px #0003 inset;
75
75
  transition: 0.25s linear all;
76
- outline: 1px solid var(--border-color);
76
+ outline: 1px solid var(--bgl-border-color);
77
77
 
78
78
  }
79
79
  .bgl-toggle input::before {
80
80
  position: absolute;
81
81
  content: "";
82
- height: calc(var(--input-height) / 2 - 2px);
83
- width: calc(var(--input-height) / 2 - 2px);
82
+ height: calc(var(--bgl-input-height) / 2 - 2px);
83
+ width: calc(var(--bgl-input-height) / 2 - 2px);
84
84
  inset-inline-start: 1px;
85
85
  bottom: 1px;
86
86
  border-radius: 50%;
@@ -95,8 +95,8 @@ onMounted(() => {
95
95
  transition: var(--bgl-transition);
96
96
  cursor: pointer;
97
97
  user-select: none;
98
- line-height: var(--input-height);
99
- font-size: var(--input-font-size);
98
+ line-height: var(--bgl-input-height);
99
+ font-size: var(--bgl-input-font-size);
100
100
  vertical-align: middle;
101
101
  }
102
102
 
@@ -123,7 +123,7 @@ onMounted(() => {
123
123
  background: var(--bgl-input-label-active-color, var(--bgl-primary));
124
124
  }
125
125
  .bgl-toggle :checked::before{
126
- margin-inline-start:calc(var(--input-height) / 2 - 2px) ;
126
+ margin-inline-start:calc(var(--bgl-input-height) / 2 - 2px) ;
127
127
  }
128
128
  .bgl-toggle input:checked + label {
129
129
  color: var(--bgl-input-label-active-color, var(--bgl-primary)) !important;
@@ -131,13 +131,13 @@ onMounted(() => {
131
131
 
132
132
  /* ── bgl-outline variant ── */
133
133
  .bgl-outline input {
134
- outline: 1.5px solid var(--border-color) !important;
134
+ outline: 1.5px solid var(--bgl-border-color) !important;
135
135
  outline-offset: 2px;
136
136
  }
137
137
 
138
138
  /* ── frame variant ── */
139
139
  .frame input {
140
- outline: 1.5px solid var(--border-color) !important;
140
+ outline: 1.5px solid var(--bgl-border-color) !important;
141
141
  outline-offset: 2px;
142
142
  transition: outline-color 0.2s ease, box-shadow 0.2s ease;
143
143
  background: transparent;
@@ -1,19 +1,19 @@
1
1
  .fileUploadWrap {
2
- outline: 1px solid var(--border-color);
3
- border-radius: var(--input-border-radius);
2
+ outline: 1px solid var(--bgl-border-color);
3
+ border-radius: var(--bgl-input-border-radius);
4
4
  text-align: center;
5
5
  cursor: pointer;
6
6
  transition: var(--bgl-transition);
7
7
  position: relative;
8
- font-size: var(--input-font-size);
8
+ font-size: var(--bgl-input-font-size);
9
9
  overflow-y: auto;
10
- background: var(--input-bg);
10
+ background: var(--bgl-input-bg);
11
11
  height: 215px;
12
12
  outline-offset: -1px;
13
13
  }
14
14
 
15
15
  .bagel-input .fileUploadWrap.fileDropZone {
16
- background: var(--input-bg);
16
+ background: var(--bgl-input-bg);
17
17
  display: flex;
18
18
  align-items: center;
19
19
  justify-content: center;
@@ -31,21 +31,21 @@
31
31
  }
32
32
 
33
33
  .multi-image-item-preview {
34
- border: 1px solid var(--border-color) !important;
35
- border-radius: var(--input-border-radius);
34
+ border: 1px solid var(--bgl-border-color) !important;
35
+ border-radius: var(--bgl-input-border-radius);
36
36
  margin: 0.5rem !important;
37
37
  background: var(--bgl-popup-bg);
38
38
  padding: 0;
39
39
  padding-inline-end: 1rem;
40
40
  padding-inline-start: 0.25rem;
41
41
  text-align: start;
42
- color: var(--input-color);
42
+ color: var(--bgl-input-color);
43
43
  display: grid;
44
44
  grid-template-columns: auto 1fr 22px;
45
45
  gap: 0.5rem;
46
46
  align-items: center;
47
- height: var(--btn-height);
48
- font-size: var(--label-font-size);
47
+ height: var(--bgl-btn-height);
48
+ font-size: var(--bgl-label-font-size);
49
49
  }
50
50
 
51
51
  .multi-image-item-preview p {
@@ -56,9 +56,9 @@
56
56
 
57
57
  .multi-preview {
58
58
  /* width: 40px; */
59
- height: calc(var(--btn-height) - 0.5rem);
60
- max-width: calc(var(--btn-height) - 0.5rem);
61
- border-radius: calc(var(--input-border-radius) / 2);
59
+ height: calc(var(--bgl-btn-height) - 0.5rem);
60
+ max-width: calc(var(--bgl-btn-height) - 0.5rem);
61
+ border-radius: calc(var(--bgl-input-border-radius) / 2);
62
62
  object-fit: cover;
63
63
  background: var(--bgl-gray-light);
64
64
  text-align: center !important;
@@ -274,7 +274,7 @@
274
274
  .bagel-input.frame .fileUploadWrap,
275
275
  .bagel-input.frame .fileUploadWrap.fileDropZone {
276
276
  background: transparent;
277
- outline-color: var(--border-color);
277
+ outline-color: var(--bgl-border-color);
278
278
  transition: outline-color 0.2s ease, box-shadow 0.2s ease;
279
279
  }
280
280
 
@@ -34,9 +34,6 @@ export { default as ListView } from './ListView.vue'
34
34
  export { default as Loading } from './Loading.vue'
35
35
  export { default as MapEmbed } from './MapEmbed/Index.vue'
36
36
  export { default as Menu } from './Menu.vue'
37
- export { default as Modal } from './Modal.vue'
38
- export { default as ModalConfirm } from './ModalConfirm.vue'
39
- export { default as ModalForm } from './ModalForm.vue'
40
37
  export { default as NavBar } from './NavBar.vue'
41
38
  export { default as PageTitle } from './PageTitle.vue'
42
39
  export { default as Pagination } from './Pagination.vue'
@@ -160,7 +160,7 @@ const sidebarStyles = computed(() => {
160
160
  :style="{
161
161
  backgroundColor: props.bgColor,
162
162
  color: props.textColor,
163
- ...(props.card && { borderRadius: 'var(--card-border-radius)' }),
163
+ ...(props.card && { borderRadius: 'var(--bgl-card-border-radius)' }),
164
164
  }" :class="{
165
165
  'card cardWrapSide': props.card,
166
166
  'px-05': !isVisuallyOpen,
@@ -227,7 +227,7 @@ const sidebarStyles = computed(() => {
227
227
 
228
228
  <style>
229
229
  .aside_frame {
230
- outline: 1px solid var(--border-color);
230
+ outline: 1px solid var(--bgl-border-color);
231
231
  }
232
232
 
233
233
  .card .aside_frame {
@@ -236,7 +236,7 @@ const sidebarStyles = computed(() => {
236
236
 
237
237
  .app-sidebar {
238
238
  transition: width 0.4s ease;
239
- --input-font-size: 0.875rem;
239
+ --bgl-input-font-size: 0.875rem;
240
240
  /* 14px */
241
241
  }
242
242
 
@@ -59,7 +59,7 @@ defineProps<{
59
59
  }
60
60
 
61
61
  .bgl_bottombar .nav-button {
62
- border-radius: var(--card-border-radius);
62
+ border-radius: var(--bgl-card-border-radius);
63
63
 
64
64
  }
65
65
 
@@ -1,9 +1,10 @@
1
1
  <script lang="ts" setup>
2
+ defineOptions({ name: 'BglSkeleton' })
2
3
  const {
3
4
  count = 1,
4
5
  height,
5
6
  width,
6
- borderRadius = 'var(--skeleton-radius)',
7
+ borderRadius = 'var(--bgl-skeleton-radius)',
7
8
  round = false,
8
9
  class: className = '',
9
10
  } = defineProps<{
@@ -31,11 +32,11 @@ const slots: SetupContext['slots'] = useSlots()
31
32
 
32
33
  <style scoped>
33
34
  .skeleton-wrap {
34
- margin-bottom: var(--skeleton-margin);
35
+ margin-bottom: var(--bgl-skeleton-margin);
35
36
  }
36
37
 
37
38
  .skeleton {
38
- background-color: var(--skeleton-bg);
39
+ background-color: var(--bgl-skeleton-bg);
39
40
  border-radius: var(--bg-card-radius);
40
41
  margin-bottom: 0.25em;
41
42
  position: relative;
@@ -44,7 +45,7 @@ const slots: SetupContext['slots'] = useSlots()
44
45
 
45
46
  .skeleton::before {
46
47
  content: "";
47
- background: linear-gradient(90deg, transparent 20%, var(--skeleton-pulse) 50%, transparent 80%);
48
+ background: linear-gradient(90deg, transparent 20%, var(--bgl-skeleton-pulse) 50%, transparent 80%);
48
49
  animation: loadingAnimation 1s ease-in-out infinite;
49
50
  position: absolute;
50
51
  inset: 0px;
@@ -171,17 +171,17 @@ onBeforeUnmount(() => {
171
171
 
172
172
  <style>
173
173
  :root {
174
- --bgl_tabs-background: var(--input-bg);
175
- --bgl_tabs-border-radius: var(--input-border-radius);
176
- --bgl_tabs-inline-padding: calc(var(--btn-padding) / 8);
177
- --bgl_tabs-block-padding: calc(var(--btn-padding) / 8);
174
+ --bgl_tabs-background: var(--bgl-input-bg);
175
+ --bgl_tabs-border-radius: var(--bgl-input-border-radius);
176
+ --bgl_tabs-inline-padding: calc(var(--bgl-btn-padding) / 8);
177
+ --bgl_tabs-block-padding: calc(var(--bgl-btn-padding) / 8);
178
178
  --bgl_tabs-shadow: inset 0 0 10px #00000012;
179
179
  --bgl_tabs-gap: 0.25rem;
180
- --bgl_tabs-font-size: var(--input-font-size);
181
- --bgl_tab-inline-padding: calc(var(--btn-padding) / 2);
182
- --bgl_tab-block-padding: calc(var(--btn-padding) / 8);
180
+ --bgl_tabs-font-size: var(--bgl-input-font-size);
181
+ --bgl_tab-inline-padding: calc(var(--bgl-btn-padding) / 2);
182
+ --bgl_tab-block-padding: calc(var(--bgl-btn-padding) / 8);
183
183
  --bgl_tab-gap: 0.5rem;
184
- --bgl_tabs-border-radius: var(--input-border-radius);
184
+ --bgl_tabs-border-radius: var(--bgl-input-border-radius);
185
185
  --bgl-tab-hover-bg: rgba(255, 255, 255, .4);
186
186
  --bgl_tabs-indicator-color: var(--bgl-popup-bg);
187
187
  --bgl-tabs-flat-indicator-color: var(--bgl-primary);
@@ -204,7 +204,7 @@ onBeforeUnmount(() => {
204
204
  cursor: pointer;
205
205
  font-size: inherit;
206
206
  font-family: inherit;
207
- height: calc(var(--btn-height) - var(--bgl_tabs-block-padding) * 2);
207
+ height: calc(var(--bgl-btn-height) - var(--bgl_tabs-block-padding) * 2);
208
208
  padding-inline: var(--bgl_tab-inline-padding);
209
209
  padding-block: 0;
210
210
  border-radius: var(--bgl_tab-border-radius);
@@ -242,7 +242,7 @@ onBeforeUnmount(() => {
242
242
  background: transparent;
243
243
  border-bottom: 1px solid var(--bgl-tabs-flat-indicator-color);
244
244
  border-radius: 0;
245
- top: calc(var(--btn-padding) * 1.25);
245
+ top: calc(var(--bgl-btn-padding) * 1.25);
246
246
  bottom: unset;
247
247
 
248
248
  }
@@ -255,30 +255,30 @@ onBeforeUnmount(() => {
255
255
  }
256
256
  .bgl_tab-thin {
257
257
  padding-inline: calc(var(--bgl_tab-inline-padding) / 2);
258
- height: calc(var(--btn-height) * 0.7 - var(--bgl_tabs-block-padding) * 2);
258
+ height: calc(var(--bgl-btn-height) * 0.7 - var(--bgl_tabs-block-padding) * 2);
259
259
  }
260
260
 
261
261
  .bgl_tab-xs {
262
262
  padding-inline: calc(var(--bgl_tab-inline-padding) / 3);
263
- font-size: calc(var(--input-font-size) * 0.6);
264
- height: calc(var(--btn-height) * 0.5 - var(--bgl_tabs-block-padding) * 2);
263
+ font-size: calc(var(--bgl-input-font-size) * 0.6);
264
+ height: calc(var(--bgl-btn-height) * 0.5 - var(--bgl_tabs-block-padding) * 2);
265
265
  }
266
266
 
267
267
  .bgl_tab-s {
268
268
  padding-inline: calc(var(--bgl_tab-inline-padding) / 1.5);
269
- height: calc(var(--btn-height) * 0.7 - var(--bgl_tabs-block-padding) * 2);
269
+ height: calc(var(--bgl-btn-height) * 0.7 - var(--bgl_tabs-block-padding) * 2);
270
270
  }
271
271
 
272
272
  .bgl_tab-l {
273
273
  padding-inline: calc(var(--bgl_tab-inline-padding) * 1.3);
274
- font-size: calc(var(--input-font-size) * 1.1);
275
- height: calc(var(--btn-height) * 1.2 - var(--bgl_tabs-block-padding) * 2);
274
+ font-size: calc(var(--bgl-input-font-size) * 1.1);
275
+ height: calc(var(--bgl-btn-height) * 1.2 - var(--bgl_tabs-block-padding) * 2);
276
276
  }
277
277
 
278
278
  .bgl_tab-xl {
279
279
  padding-inline: calc(var(--bgl_tab-inline-padding) * 1.6);
280
- font-size: calc(var(--input-font-size) * 1.3);
281
- height: calc(var(--btn-height) * 1.5 - var(--bgl_tabs-block-padding) * 2);
280
+ font-size: calc(var(--bgl-input-font-size) * 1.3);
281
+ height: calc(var(--bgl-btn-height) * 1.5 - var(--bgl_tabs-block-padding) * 2);
282
282
  }
283
283
 
284
284
  .bgl_tab-align-start {
package/src/index.ts CHANGED
@@ -23,7 +23,6 @@ export {
23
23
  useI18n,
24
24
  } from './i18n'
25
25
  export { type BagelOptions, BagelVue, getI18n } from './plugins/bagel'
26
- export { ModalPlugin, useModal } from './plugins/useModal'
27
26
 
28
27
  export { type BagelToastOptions, type ToastApi, ToastPlugin, useToast } from './plugins/useToast'
29
28
 
@@ -2,14 +2,12 @@ import type { Plugin } from 'vue'
2
2
  import type { CreateBagelI18nOptions } from '../i18n'
3
3
 
4
4
  import type { BagelToastOptions } from './useToast'
5
- import { configure } from '@bagelink/utils'
6
5
  import FloatingVue from 'floating-vue'
7
6
  import lightboxPlugin from '../components/lightbox/index'
8
7
  import { DialogPlugin } from '../dialog/useDialog'
9
8
  import { ripple, pattern } from '../directives'
10
9
  import { createI18n, getI18n } from '../i18n'
11
10
  import clickOutside from '../utils/clickOutside'
12
- import { ModalPlugin } from './useModal'
13
11
  import { ToastPlugin } from './useToast'
14
12
  import '@oddbird/popover-polyfill'
15
13
 
@@ -29,7 +27,6 @@ export const BagelVue: Plugin<BagelOptions> = {
29
27
  // Install UI plugins
30
28
  app.use(lightboxPlugin)
31
29
  app.use(DialogPlugin)
32
- app.use(ModalPlugin)
33
30
  app.use(ToastPlugin, options.toast || {})
34
31
 
35
32
  // Install FloatingVue for tooltips/popovers
@@ -46,18 +43,6 @@ export const BagelVue: Plugin<BagelOptions> = {
46
43
  // Setup i18n
47
44
  const i18n = createI18n(options.i18n || {})
48
45
  app.use(i18n as any)
49
-
50
- // Bridge locale into @bagelink/utils
51
- configure({
52
- locale: () => {
53
- try {
54
- const { locale } = getI18n().global
55
- return typeof locale === 'string' ? locale : locale.value
56
- } catch {
57
- return 'en'
58
- }
59
- },
60
- })
61
46
  },
62
47
  }
63
48
 
@@ -0,0 +1,231 @@
1
+ /* App-level layout patterns — extracted from theme.css (June 2026)
2
+ * These are application-specific rules, not design tokens or reusable utilities.
3
+ */
4
+
5
+ .popup {
6
+ border-radius: 15px;
7
+ background: var(--bgl-popup-bg);
8
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
9
+ padding: 2rem;
10
+ min-width: 300px;
11
+ text-align: center;
12
+ }
13
+
14
+ .tabs {
15
+ column-gap: 1rem;
16
+ margin-top: 20px;
17
+ margin-bottom: -2rem;
18
+ border-top: 1px solid var(--bgl-border-color);
19
+ width: calc(100% + 4rem);
20
+ margin-inline-start: -2rem;
21
+ padding-inline-start: 2rem;
22
+ overflow: auto;
23
+ display: flex;
24
+ }
25
+
26
+ .tab,
27
+ .router-tab {
28
+ font-size: 14px;
29
+ font-weight: 600;
30
+ line-height: 2.5;
31
+ cursor: pointer;
32
+ transition: var(--bgl-transition);
33
+ border-bottom: 2px solid transparent;
34
+ padding: 0 5px;
35
+ white-space: nowrap;
36
+ text-decoration: none;
37
+ color: inherit;
38
+ }
39
+
40
+ .tab.active,
41
+ .router-tab.router-link-active {
42
+ color: var(--bgl-primary);
43
+ border-bottom: 2px solid var(--bgl-primary);
44
+ }
45
+
46
+ .tab:hover,
47
+ .router-tab:hover {
48
+ color: var(--bgl-primary);
49
+ }
50
+
51
+ .tab:active,
52
+ .router-tab:active {
53
+ filter: brightness(70%);
54
+ }
55
+
56
+ .entity-container {
57
+ display: grid;
58
+ height: 100%;
59
+ grid-template-columns: minmax(300px, 1fr) 3fr;
60
+ grid-gap: 1rem;
61
+ column-gap: 1rem;
62
+ grid-template-rows: 1fr;
63
+ grid-template-areas: 'list-view detail-view';
64
+ transition: grid-template-columns 0.4s cubic-bezier(0.79, 0.01, 0.34, 0.99);
65
+ transition:
66
+ grid-template-columns 0.4s cubic-bezier(0.79, 0.01, 0.34, 0.99),
67
+ -ms-grid-columns 0.4s cubic-bezier(0.79, 0.01, 0.34, 0.99);
68
+ transition: all 0.5s cubic-bezier(0.79, 0.01, 0.34, 0.99);
69
+ }
70
+
71
+ .detail-main {
72
+ overflow-y: auto;
73
+ }
74
+
75
+ .content-row p {
76
+ margin: 0 0 10px 0;
77
+ }
78
+
79
+ .id {
80
+ color: var(--bgl-gray);
81
+ font-size: 9px;
82
+ }
83
+
84
+ .field {
85
+ --field-count: 1;
86
+ --width: calc(100% / var(--field-count));
87
+ grid-auto-columns: minmax(var(--width), var(--width));
88
+ font-size: 10px;
89
+ text-align: start;
90
+ }
91
+
92
+ .detail-view-inner {
93
+ display: grid;
94
+ height: 100%;
95
+ overflow: hidden;
96
+ grid-template-rows: max-content 1fr;
97
+ gap: 1rem;
98
+ }
99
+
100
+ .detail-view-inner-wrap {
101
+ height: 100%;
102
+ overflow: hidden;
103
+ transition: var(--bgl-transition);
104
+ }
105
+
106
+ .table-list-wrap {
107
+ overflow: auto;
108
+ }
109
+
110
+ .copy-url {
111
+ background-color: var(--bgl-gray-light);
112
+ border-radius: var(--bgl-btn-border-radius);
113
+ padding: 0.5rem 1rem;
114
+ align-items: center;
115
+ justify-content: flex-start;
116
+ margin-bottom: 1rem;
117
+ display: flex;
118
+ justify-content: space-between;
119
+ }
120
+
121
+ .copy-url a {
122
+ margin: 0;
123
+ font-size: 12px;
124
+ opacity: 0.8;
125
+ color: var(--bgl-text-color);
126
+ word-break: break-all;
127
+ }
128
+
129
+ .list-view {
130
+ grid-area: list-view;
131
+ grid-template-areas: 'list-header''list-content';
132
+ grid-template-columns: 1fr;
133
+ overflow-y: auto;
134
+ grid-template-rows: max-content 1fr;
135
+ transition: var(--bgl-transition-ease);
136
+ }
137
+
138
+ .shekel {
139
+ line-height: 0;
140
+ }
141
+
142
+ .view-wrapper {
143
+ height: 100%;
144
+ position: relative;
145
+ overflow: hidden;
146
+ }
147
+
148
+ .extraOptions {
149
+ max-height: 30px;
150
+ overflow: hidden;
151
+ transition: all 0.2s 30s ease;
152
+ }
153
+
154
+ .extraOptions:hover {
155
+ max-height: 200vh;
156
+ transition: 0.2s all 0.2s ease;
157
+ }
158
+
159
+ @media screen and (max-width: 1000px) {
160
+ .entity-container {
161
+ grid-template-columns: minmax(22vw, 1fr) 2fr;
162
+ }
163
+ }
164
+
165
+ @media screen and (max-width: 910px) {
166
+ .tab {
167
+ font-size: 12px;
168
+ }
169
+
170
+ .entity-container {
171
+ grid-template-columns: 1fr;
172
+ gap: 0;
173
+ }
174
+
175
+ .detail-view-inner {
176
+ border-radius: var(--bgl-card-border-radius);
177
+ background: var(--bgl-box-bg);
178
+ }
179
+
180
+ .detail-view-inner-wrap {
181
+ position: absolute;
182
+ height: 100%;
183
+ width: 100%;
184
+ background: var(--bgl-bg);
185
+ }
186
+
187
+ .detail-view-inner-wrap.bgl_card {
188
+ background: var(--bgl-box-bg);
189
+ }
190
+
191
+ .bgl_card {
192
+ padding: 1rem 1rem;
193
+ }
194
+
195
+ .tabs {
196
+ column-gap: 10px;
197
+ margin-top: 10px;
198
+ margin-bottom: -15px;
199
+ box-sizing: border-box;
200
+ margin-inline-start: -1rem;
201
+ padding-inline-start: 1rem;
202
+ max-width: calc(100vw - 2rem);
203
+ }
204
+
205
+ .popup {
206
+ border-radius: 15px;
207
+ background: var(--bgl-popup-bg);
208
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 10%);
209
+ padding: 2rem;
210
+ min-width: 0;
211
+ max-width: 90%;
212
+ max-height: 90vh;
213
+ overflow-x: auto;
214
+ text-align: center;
215
+ }
216
+
217
+ .detail-main {
218
+ overflow-y: unset;
219
+ }
220
+
221
+ .detail-section {
222
+ height: fit-content;
223
+ }
224
+
225
+ .field {
226
+ display: flex;
227
+ flex-wrap: wrap;
228
+ gap: 0.5rem;
229
+ align-items: center;
230
+ }
231
+ }