@betterstart/cli 0.1.2 → 0.1.4

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 (234) hide show
  1. package/README.md +133 -0
  2. package/dist/cli.d.ts +1 -9
  3. package/dist/cli.js +13484 -354
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.d.ts +24 -260
  6. package/dist/index.js +4 -11373
  7. package/dist/index.js.map +1 -1
  8. package/package.json +29 -42
  9. package/templates/schema.json +959 -0
  10. package/templates/tiptap/hooks/use-composed-ref.ts +43 -0
  11. package/templates/tiptap/hooks/use-cursor-visibility.ts +68 -0
  12. package/templates/tiptap/hooks/use-element-rect.ts +166 -0
  13. package/templates/tiptap/hooks/use-is-breakpoint.ts +32 -0
  14. package/templates/tiptap/hooks/use-menu-navigation.ts +182 -0
  15. package/templates/tiptap/hooks/use-scrolling.ts +64 -0
  16. package/templates/tiptap/hooks/use-throttled-callback.ts +146 -0
  17. package/templates/tiptap/hooks/use-tiptap-editor.ts +46 -0
  18. package/templates/tiptap/hooks/use-unmount.ts +21 -0
  19. package/templates/tiptap/hooks/use-window-size.ts +87 -0
  20. package/templates/tiptap/lib/tiptap-utils.ts +587 -0
  21. package/templates/tiptap/styles/_keyframe-animations.scss +91 -0
  22. package/templates/tiptap/styles/_variables.scss +296 -0
  23. package/templates/tiptap/tiptap-extension/node-background-extension.ts +138 -0
  24. package/templates/tiptap/tiptap-icons/align-center-icon.tsx +38 -0
  25. package/templates/tiptap/tiptap-icons/align-justify-icon.tsx +38 -0
  26. package/templates/tiptap/tiptap-icons/align-left-icon.tsx +38 -0
  27. package/templates/tiptap/tiptap-icons/align-right-icon.tsx +38 -0
  28. package/templates/tiptap/tiptap-icons/arrow-left-icon.tsx +24 -0
  29. package/templates/tiptap/tiptap-icons/ban-icon.tsx +26 -0
  30. package/templates/tiptap/tiptap-icons/blockquote-icon.tsx +44 -0
  31. package/templates/tiptap/tiptap-icons/bold-icon.tsx +26 -0
  32. package/templates/tiptap/tiptap-icons/chevron-down-icon.tsx +26 -0
  33. package/templates/tiptap/tiptap-icons/close-icon.tsx +24 -0
  34. package/templates/tiptap/tiptap-icons/code-block-icon.tsx +38 -0
  35. package/templates/tiptap/tiptap-icons/code2-icon.tsx +32 -0
  36. package/templates/tiptap/tiptap-icons/corner-down-left-icon.tsx +26 -0
  37. package/templates/tiptap/tiptap-icons/external-link-icon.tsx +28 -0
  38. package/templates/tiptap/tiptap-icons/heading-five-icon.tsx +28 -0
  39. package/templates/tiptap/tiptap-icons/heading-four-icon.tsx +28 -0
  40. package/templates/tiptap/tiptap-icons/heading-icon.tsx +24 -0
  41. package/templates/tiptap/tiptap-icons/heading-one-icon.tsx +28 -0
  42. package/templates/tiptap/tiptap-icons/heading-six-icon.tsx +30 -0
  43. package/templates/tiptap/tiptap-icons/heading-three-icon.tsx +36 -0
  44. package/templates/tiptap/tiptap-icons/heading-two-icon.tsx +28 -0
  45. package/templates/tiptap/tiptap-icons/highlighter-icon.tsx +26 -0
  46. package/templates/tiptap/tiptap-icons/image-plus-icon.tsx +26 -0
  47. package/templates/tiptap/tiptap-icons/italic-icon.tsx +24 -0
  48. package/templates/tiptap/tiptap-icons/link-icon.tsx +28 -0
  49. package/templates/tiptap/tiptap-icons/list-icon.tsx +56 -0
  50. package/templates/tiptap/tiptap-icons/list-ordered-icon.tsx +56 -0
  51. package/templates/tiptap/tiptap-icons/list-todo-icon.tsx +50 -0
  52. package/templates/tiptap/tiptap-icons/moon-star-icon.tsx +30 -0
  53. package/templates/tiptap/tiptap-icons/redo2-icon.tsx +26 -0
  54. package/templates/tiptap/tiptap-icons/strike-icon.tsx +28 -0
  55. package/templates/tiptap/tiptap-icons/subscript-icon.tsx +38 -0
  56. package/templates/tiptap/tiptap-icons/sun-icon.tsx +58 -0
  57. package/templates/tiptap/tiptap-icons/superscript-icon.tsx +38 -0
  58. package/templates/tiptap/tiptap-icons/trash-icon.tsx +26 -0
  59. package/templates/tiptap/tiptap-icons/underline-icon.tsx +26 -0
  60. package/templates/tiptap/tiptap-icons/undo2-icon.tsx +26 -0
  61. package/templates/tiptap/tiptap-node/blockquote-node/blockquote-node.scss +37 -0
  62. package/templates/tiptap/tiptap-node/code-block-node/code-block-node.scss +54 -0
  63. package/templates/tiptap/tiptap-node/heading-node/heading-node.scss +45 -0
  64. package/templates/tiptap/tiptap-node/horizontal-rule-node/horizontal-rule-node-extension.ts +10 -0
  65. package/templates/tiptap/tiptap-node/horizontal-rule-node/horizontal-rule-node.scss +25 -0
  66. package/templates/tiptap/tiptap-node/image-node/image-node.scss +35 -0
  67. package/templates/tiptap/tiptap-node/image-upload-node/image-upload-node-extension.ts +154 -0
  68. package/templates/tiptap/tiptap-node/image-upload-node/image-upload-node.scss +249 -0
  69. package/templates/tiptap/tiptap-node/image-upload-node/image-upload-node.tsx +522 -0
  70. package/templates/tiptap/tiptap-node/image-upload-node/index.tsx +1 -0
  71. package/templates/tiptap/tiptap-node/list-node/list-node.scss +208 -0
  72. package/templates/tiptap/tiptap-node/paragraph-node/paragraph-node.scss +273 -0
  73. package/templates/tiptap/tiptap-ui/blockquote-button/blockquote-button.tsx +104 -0
  74. package/templates/tiptap/tiptap-ui/blockquote-button/index.tsx +2 -0
  75. package/templates/tiptap/tiptap-ui/blockquote-button/use-blockquote.ts +252 -0
  76. package/templates/tiptap/tiptap-ui/code-block-button/code-block-button.tsx +106 -0
  77. package/templates/tiptap/tiptap-ui/code-block-button/index.tsx +2 -0
  78. package/templates/tiptap/tiptap-ui/code-block-button/use-code-block.ts +261 -0
  79. package/templates/tiptap/tiptap-ui/color-highlight-button/color-highlight-button.scss +49 -0
  80. package/templates/tiptap/tiptap-ui/color-highlight-button/color-highlight-button.tsx +153 -0
  81. package/templates/tiptap/tiptap-ui/color-highlight-button/index.tsx +2 -0
  82. package/templates/tiptap/tiptap-ui/color-highlight-button/use-color-highlight.ts +345 -0
  83. package/templates/tiptap/tiptap-ui/color-highlight-popover/color-highlight-popover.tsx +207 -0
  84. package/templates/tiptap/tiptap-ui/color-highlight-popover/index.tsx +1 -0
  85. package/templates/tiptap/tiptap-ui/heading-button/heading-button.tsx +107 -0
  86. package/templates/tiptap/tiptap-ui/heading-button/index.tsx +2 -0
  87. package/templates/tiptap/tiptap-ui/heading-button/use-heading.ts +314 -0
  88. package/templates/tiptap/tiptap-ui/heading-dropdown-menu/heading-dropdown-menu.tsx +131 -0
  89. package/templates/tiptap/tiptap-ui/heading-dropdown-menu/index.tsx +2 -0
  90. package/templates/tiptap/tiptap-ui/heading-dropdown-menu/use-heading-dropdown-menu.ts +130 -0
  91. package/templates/tiptap/tiptap-ui/image-upload-button/image-upload-button.tsx +114 -0
  92. package/templates/tiptap/tiptap-ui/image-upload-button/index.tsx +2 -0
  93. package/templates/tiptap/tiptap-ui/image-upload-button/use-image-upload.ts +192 -0
  94. package/templates/tiptap/tiptap-ui/link-popover/index.tsx +2 -0
  95. package/templates/tiptap/tiptap-ui/link-popover/link-popover.tsx +285 -0
  96. package/templates/tiptap/tiptap-ui/link-popover/use-link-popover.ts +286 -0
  97. package/templates/tiptap/tiptap-ui/list-button/index.tsx +2 -0
  98. package/templates/tiptap/tiptap-ui/list-button/list-button.tsx +108 -0
  99. package/templates/tiptap/tiptap-ui/list-button/use-list.ts +329 -0
  100. package/templates/tiptap/tiptap-ui/list-dropdown-menu/index.tsx +1 -0
  101. package/templates/tiptap/tiptap-ui/list-dropdown-menu/list-dropdown-menu.tsx +123 -0
  102. package/templates/tiptap/tiptap-ui/list-dropdown-menu/use-list-dropdown-menu.ts +203 -0
  103. package/templates/tiptap/tiptap-ui/mark-button/index.tsx +2 -0
  104. package/templates/tiptap/tiptap-ui/mark-button/mark-button.tsx +107 -0
  105. package/templates/tiptap/tiptap-ui/mark-button/use-mark.ts +206 -0
  106. package/templates/tiptap/tiptap-ui/text-align-button/index.tsx +2 -0
  107. package/templates/tiptap/tiptap-ui/text-align-button/text-align-button.tsx +118 -0
  108. package/templates/tiptap/tiptap-ui/text-align-button/use-text-align.ts +212 -0
  109. package/templates/tiptap/tiptap-ui/undo-redo-button/index.tsx +2 -0
  110. package/templates/tiptap/tiptap-ui/undo-redo-button/undo-redo-button.tsx +105 -0
  111. package/templates/tiptap/tiptap-ui/undo-redo-button/use-undo-redo.ts +173 -0
  112. package/templates/tiptap/tiptap-ui-primitive/badge/badge-colors.scss +395 -0
  113. package/templates/tiptap/tiptap-ui-primitive/badge/badge-group.scss +16 -0
  114. package/templates/tiptap/tiptap-ui-primitive/badge/badge.scss +99 -0
  115. package/templates/tiptap/tiptap-ui-primitive/badge/badge.tsx +46 -0
  116. package/templates/tiptap/tiptap-ui-primitive/badge/index.tsx +1 -0
  117. package/templates/tiptap/tiptap-ui-primitive/button/button-colors.scss +429 -0
  118. package/templates/tiptap/tiptap-ui-primitive/button/button-group.scss +22 -0
  119. package/templates/tiptap/tiptap-ui-primitive/button/button.scss +314 -0
  120. package/templates/tiptap/tiptap-ui-primitive/button/button.tsx +102 -0
  121. package/templates/tiptap/tiptap-ui-primitive/button/index.tsx +1 -0
  122. package/templates/tiptap/tiptap-ui-primitive/card/card.scss +77 -0
  123. package/templates/tiptap/tiptap-ui-primitive/card/card.tsx +59 -0
  124. package/templates/tiptap/tiptap-ui-primitive/card/index.tsx +1 -0
  125. package/templates/tiptap/tiptap-ui-primitive/dropdown-menu/dropdown-menu.scss +63 -0
  126. package/templates/tiptap/tiptap-ui-primitive/dropdown-menu/dropdown-menu.tsx +95 -0
  127. package/templates/tiptap/tiptap-ui-primitive/dropdown-menu/index.tsx +1 -0
  128. package/templates/tiptap/tiptap-ui-primitive/input/index.tsx +1 -0
  129. package/templates/tiptap/tiptap-ui-primitive/input/input.scss +45 -0
  130. package/templates/tiptap/tiptap-ui-primitive/input/input.tsx +18 -0
  131. package/templates/tiptap/tiptap-ui-primitive/popover/index.tsx +1 -0
  132. package/templates/tiptap/tiptap-ui-primitive/popover/popover.scss +63 -0
  133. package/templates/tiptap/tiptap-ui-primitive/popover/popover.tsx +33 -0
  134. package/templates/tiptap/tiptap-ui-primitive/separator/index.tsx +1 -0
  135. package/templates/tiptap/tiptap-ui-primitive/separator/separator.scss +23 -0
  136. package/templates/tiptap/tiptap-ui-primitive/separator/separator.tsx +33 -0
  137. package/templates/tiptap/tiptap-ui-primitive/spacer/index.tsx +1 -0
  138. package/templates/tiptap/tiptap-ui-primitive/spacer/spacer.tsx +21 -0
  139. package/templates/tiptap/tiptap-ui-primitive/toolbar/index.tsx +1 -0
  140. package/templates/tiptap/tiptap-ui-primitive/toolbar/toolbar.scss +98 -0
  141. package/templates/tiptap/tiptap-ui-primitive/toolbar/toolbar.tsx +113 -0
  142. package/templates/tiptap/tiptap-ui-primitive/tooltip/index.tsx +1 -0
  143. package/templates/tiptap/tiptap-ui-primitive/tooltip/tooltip.scss +43 -0
  144. package/templates/tiptap/tiptap-ui-primitive/tooltip/tooltip.tsx +223 -0
  145. package/templates/ui/accordion.tsx +52 -0
  146. package/templates/ui/alert-dialog.tsx +116 -0
  147. package/templates/ui/alert.tsx +48 -0
  148. package/templates/ui/aspect-ratio.tsx +7 -0
  149. package/templates/ui/avatar.tsx +46 -0
  150. package/templates/ui/badge.tsx +32 -0
  151. package/templates/ui/breadcrumb.tsx +98 -0
  152. package/templates/ui/button-group.tsx +77 -0
  153. package/templates/ui/button.tsx +48 -0
  154. package/templates/ui/calendar.tsx +176 -0
  155. package/templates/ui/card.tsx +54 -0
  156. package/templates/ui/carousel.tsx +234 -0
  157. package/templates/ui/chart.tsx +349 -0
  158. package/templates/ui/checkbox.tsx +27 -0
  159. package/templates/ui/collapsible.tsx +11 -0
  160. package/templates/ui/command.tsx +142 -0
  161. package/templates/ui/context-menu.tsx +188 -0
  162. package/templates/ui/curriculum-editor.tsx +601 -0
  163. package/templates/ui/date-picker.tsx +70 -0
  164. package/templates/ui/dialog.tsx +103 -0
  165. package/templates/ui/drawer.tsx +99 -0
  166. package/templates/ui/dropdown-menu.tsx +185 -0
  167. package/templates/ui/dynamic-list-field.tsx +95 -0
  168. package/templates/ui/empty.tsx +90 -0
  169. package/templates/ui/field.tsx +231 -0
  170. package/templates/ui/file-upload-example.tsx +113 -0
  171. package/templates/ui/form.tsx +172 -0
  172. package/templates/ui/hover-card.tsx +28 -0
  173. package/templates/ui/icon-picker.tsx +435 -0
  174. package/templates/ui/icons-data.ts +6 -0
  175. package/templates/ui/image-upload-field.tsx +360 -0
  176. package/templates/ui/input-group.tsx +160 -0
  177. package/templates/ui/input-otp.tsx +70 -0
  178. package/templates/ui/input.tsx +21 -0
  179. package/templates/ui/item.tsx +171 -0
  180. package/templates/ui/kbd.tsx +28 -0
  181. package/templates/ui/label.tsx +20 -0
  182. package/templates/ui/logo.tsx +113 -0
  183. package/templates/ui/markdown-editor.tsx +303 -0
  184. package/templates/ui/markdown-utils.ts +128 -0
  185. package/templates/ui/media-upload-field.tsx +255 -0
  186. package/templates/ui/menubar.tsx +230 -0
  187. package/templates/ui/navigation-menu.tsx +119 -0
  188. package/templates/ui/pagination.tsx +96 -0
  189. package/templates/ui/placeholder.tsx +25 -0
  190. package/templates/ui/popover.tsx +32 -0
  191. package/templates/ui/progress.tsx +24 -0
  192. package/templates/ui/radio-group.tsx +37 -0
  193. package/templates/ui/resizable.tsx +41 -0
  194. package/templates/ui/rich-text-editor.tsx +374 -0
  195. package/templates/ui/scroll-area.tsx +45 -0
  196. package/templates/ui/select.tsx +151 -0
  197. package/templates/ui/separator.tsx +25 -0
  198. package/templates/ui/sheet.tsx +120 -0
  199. package/templates/ui/sidebar.tsx +684 -0
  200. package/templates/ui/skeleton.tsx +7 -0
  201. package/templates/ui/slider.tsx +24 -0
  202. package/templates/ui/sonner.tsx +29 -0
  203. package/templates/ui/spinner.tsx +15 -0
  204. package/templates/ui/switch.tsx +28 -0
  205. package/templates/ui/table.tsx +93 -0
  206. package/templates/ui/tabs.tsx +54 -0
  207. package/templates/ui/textarea.tsx +20 -0
  208. package/templates/ui/toast.tsx +127 -0
  209. package/templates/ui/toggle-group.tsx +56 -0
  210. package/templates/ui/toggle.tsx +43 -0
  211. package/templates/ui/tooltip.tsx +31 -0
  212. package/templates/ui/use-mobile.tsx +19 -0
  213. package/templates/ui/video-upload-field.tsx +368 -0
  214. package/dist/chunk-G4KI4DVB.js +0 -179
  215. package/dist/chunk-G4KI4DVB.js.map +0 -1
  216. package/dist/chunk-NKRQYAS6.js +0 -260
  217. package/dist/chunk-NKRQYAS6.js.map +0 -1
  218. package/dist/chunk-QLVSHP7X.js +0 -235
  219. package/dist/chunk-QLVSHP7X.js.map +0 -1
  220. package/dist/chunk-WY6BC55D.js +0 -357
  221. package/dist/chunk-WY6BC55D.js.map +0 -1
  222. package/dist/config/index.d.ts +0 -93
  223. package/dist/config/index.js +0 -58
  224. package/dist/config/index.js.map +0 -1
  225. package/dist/core/index.d.ts +0 -415
  226. package/dist/core/index.js +0 -906
  227. package/dist/core/index.js.map +0 -1
  228. package/dist/import-resolver-BaZ-rzkH.d.ts +0 -123
  229. package/dist/logger-awLb347n.d.ts +0 -81
  230. package/dist/plugins/index.d.ts +0 -213
  231. package/dist/plugins/index.js +0 -365
  232. package/dist/plugins/index.js.map +0 -1
  233. package/dist/types-ByX_gl6y.d.ts +0 -232
  234. package/dist/types-eI549DEG.d.ts +0 -331
@@ -0,0 +1,395 @@
1
+ .tiptap-badge {
2
+ /**************************************************
3
+ Default
4
+ **************************************************/
5
+
6
+ /* Light mode */
7
+ --tt-badge-border-color: var(--tt-gray-light-a-200);
8
+ --tt-badge-border-color-subdued: var(--tt-gray-light-a-200);
9
+ --tt-badge-border-color-emphasized: var(--tt-gray-light-a-600);
10
+ --tt-badge-text-color: var(--tt-gray-light-a-500);
11
+ --tt-badge-text-color-subdued: var(
12
+ --tt-gray-light-a-400
13
+ ); //less important badge
14
+ --tt-badge-text-color-emphasized: var(
15
+ --tt-gray-light-a-600
16
+ ); //more important badge
17
+ --tt-badge-bg-color: var(--white);
18
+ --tt-badge-bg-color-subdued: var(--white); //less important badge
19
+ --tt-badge-bg-color-emphasized: var(--white); //more important badge
20
+ --tt-badge-icon-color: var(--tt-gray-light-a-500);
21
+ --tt-badge-icon-color-subdued: var(
22
+ --tt-gray-light-a-400
23
+ ); //less important badge
24
+ --tt-badge-icon-color-emphasized: var(
25
+ --tt-brand-color-600
26
+ ); //more important badge
27
+
28
+ /* Dark mode */
29
+ .dark & {
30
+ --tt-badge-border-color: var(--tt-gray-dark-a-200);
31
+ --tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);
32
+ --tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);
33
+ --tt-badge-text-color: var(--tt-gray-dark-a-500);
34
+ --tt-badge-text-color-subdued: var(
35
+ --tt-gray-dark-a-400
36
+ ); //less important badge
37
+ --tt-badge-text-color-emphasized: var(
38
+ --tt-gray-dark-a-600
39
+ ); //more important badge
40
+ --tt-badge-bg-color: var(--black);
41
+ --tt-badge-bg-color-subdued: var(--black); //less important badge
42
+ --tt-badge-bg-color-emphasized: var(--black); //more important badge
43
+ --tt-badge-icon-color: var(--tt-gray-dark-a-500);
44
+ --tt-badge-icon-color-subdued: var(
45
+ --tt-gray-dark-a-400
46
+ ); //less important badge
47
+ --tt-badge-icon-color-emphasized: var(
48
+ --tt-brand-color-400
49
+ ); //more important badge
50
+ }
51
+
52
+ /**************************************************
53
+ Ghost
54
+ **************************************************/
55
+
56
+ &[data-style="ghost"] {
57
+ /* Light mode */
58
+ --tt-badge-border-color: var(--tt-gray-light-a-200);
59
+ --tt-badge-border-color-subdued: var(--tt-gray-light-a-200);
60
+ --tt-badge-border-color-emphasized: var(--tt-gray-light-a-600);
61
+ --tt-badge-text-color: var(--tt-gray-light-a-500);
62
+ --tt-badge-text-color-subdued: var(
63
+ --tt-gray-light-a-400
64
+ ); //less important badge
65
+ --tt-badge-text-color-emphasized: var(
66
+ --tt-gray-light-a-600
67
+ ); //more important badge
68
+ --tt-badge-bg-color: var(--transparent);
69
+ --tt-badge-bg-color-subdued: var(--transparent); //less important badge
70
+ --tt-badge-bg-color-emphasized: var(--transparent); //more important badge
71
+ --tt-badge-icon-color: var(--tt-gray-light-a-500);
72
+ --tt-badge-icon-color-subdued: var(
73
+ --tt-gray-light-a-400
74
+ ); //less important badge
75
+ --tt-badge-icon-color-emphasized: var(
76
+ --tt-brand-color-600
77
+ ); //more important badge
78
+
79
+ /* Dark mode */
80
+ .dark & {
81
+ --tt-badge-border-color: var(--tt-gray-dark-a-200);
82
+ --tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);
83
+ --tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);
84
+ --tt-badge-text-color: var(--tt-gray-dark-a-500);
85
+ --tt-badge-text-color-subdued: var(
86
+ --tt-gray-dark-a-400
87
+ ); //less important badge
88
+ --tt-badge-text-color-emphasized: var(
89
+ --tt-gray-dark-a-600
90
+ ); //more important badge
91
+ --tt-badge-bg-color: var(--transparent);
92
+ --tt-badge-bg-color-subdued: var(--transparent); //less important badge
93
+ --tt-badge-bg-color-emphasized: var(--transparent); //more important badge
94
+ --tt-badge-icon-color: var(--tt-gray-dark-a-500);
95
+ --tt-badge-icon-color-subdued: var(
96
+ --tt-gray-dark-a-400
97
+ ); //less important badge
98
+ --tt-badge-icon-color-emphasized: var(
99
+ --tt-brand-color-400
100
+ ); //more important badge
101
+ }
102
+ }
103
+
104
+ /**************************************************
105
+ Gray
106
+ **************************************************/
107
+
108
+ &[data-style="gray"] {
109
+ /* Light mode */
110
+ --tt-badge-border-color: var(--tt-gray-light-a-200);
111
+ --tt-badge-border-color-subdued: var(--tt-gray-light-a-200);
112
+ --tt-badge-border-color-emphasized: var(--tt-gray-light-a-500);
113
+ --tt-badge-text-color: var(--tt-gray-light-a-500);
114
+ --tt-badge-text-color-subdued: var(
115
+ --tt-gray-light-a-400
116
+ ); //less important badge
117
+ --tt-badge-text-color-emphasized: var(--white); //more important badge
118
+ --tt-badge-bg-color: var(--tt-gray-light-a-100);
119
+ --tt-badge-bg-color-subdued: var(
120
+ --tt-gray-light-a-50
121
+ ); //less important badge
122
+ --tt-badge-bg-color-emphasized: var(
123
+ --tt-gray-light-a-700
124
+ ); //more important badge
125
+ --tt-badge-icon-color: var(--tt-gray-light-a-500);
126
+ --tt-badge-icon-color-subdued: var(
127
+ --tt-gray-light-a-400
128
+ ); //less important badge
129
+ --tt-badge-icon-color-emphasized: var(--white); //more important badge
130
+
131
+ /* Dark mode */
132
+ .dark & {
133
+ --tt-badge-border-color: var(--tt-gray-dark-a-200);
134
+ --tt-badge-border-color-subdued: var(--tt-gray-dark-a-200);
135
+ --tt-badge-border-color-emphasized: var(--tt-gray-dark-a-500);
136
+ --tt-badge-text-color: var(--tt-gray-dark-a-500);
137
+ --tt-badge-text-color-subdued: var(
138
+ --tt-gray-dark-a-400
139
+ ); //less important badge
140
+ --tt-badge-text-color-emphasized: var(--black); //more important badge
141
+ --tt-badge-bg-color: var(--tt-gray-dark-a-100);
142
+ --tt-badge-bg-color-subdued: var(
143
+ --tt-gray-dark-a-50
144
+ ); //less important badge
145
+ --tt-badge-bg-color-emphasized: var(
146
+ --tt-gray-dark-a-800
147
+ ); //more important badge
148
+ --tt-badge-icon-color: var(--tt-gray-dark-a-500);
149
+ --tt-badge-icon-color-subdued: var(
150
+ --tt-gray-dark-a-400
151
+ ); //less important badge
152
+ --tt-badge-icon-color-emphasized: var(--black); //more important badge
153
+ }
154
+ }
155
+
156
+ /**************************************************
157
+ Green
158
+ **************************************************/
159
+
160
+ &[data-style="green"] {
161
+ /* Light mode */
162
+ --tt-badge-border-color: var(--tt-color-green-inc-2);
163
+ --tt-badge-border-color-subdued: var(--tt-color-green-inc-3);
164
+ --tt-badge-border-color-emphasized: var(--tt-color-green-dec-2);
165
+ --tt-badge-text-color: var(--tt-color-green-dec-3);
166
+ --tt-badge-text-color-subdued: var(
167
+ --tt-color-green-dec-2
168
+ ); //less important badge
169
+ --tt-badge-text-color-emphasized: var(
170
+ --tt-color-green-inc-5
171
+ ); //more important badge
172
+ --tt-badge-bg-color: var(--tt-color-green-inc-4);
173
+ --tt-badge-bg-color-subdued: var(
174
+ --tt-color-green-inc-5
175
+ ); //less important badge
176
+ --tt-badge-bg-color-emphasized: var(
177
+ --tt-color-green-dec-1
178
+ ); //more important badge
179
+ --tt-badge-icon-color: var(--tt-color-green-dec-3);
180
+ --tt-badge-icon-color-subdued: var(
181
+ --tt-color-green-dec-2
182
+ ); //less important badge
183
+ --tt-badge-icon-color-emphasized: var(
184
+ --tt-color-green-inc-5
185
+ ); //more important badge
186
+
187
+ /* Dark mode */
188
+ .dark & {
189
+ --tt-badge-border-color: var(--tt-color-green-dec-2);
190
+ --tt-badge-border-color-subdued: var(--tt-color-green-dec-3);
191
+ --tt-badge-border-color-emphasized: var(--tt-color-green-base);
192
+ --tt-badge-text-color: var(--tt-color-green-inc-3);
193
+ --tt-badge-text-color-subdued: var(
194
+ --tt-color-green-inc-2
195
+ ); //less important badge
196
+ --tt-badge-text-color-emphasized: var(
197
+ --tt-color-green-dec-5
198
+ ); //more important badge
199
+ --tt-badge-bg-color: var(--tt-color-green-dec-4);
200
+ --tt-badge-bg-color-subdued: var(
201
+ --tt-color-green-dec-5
202
+ ); //less important badge
203
+ --tt-badge-bg-color-emphasized: var(
204
+ --tt-color-green-inc-1
205
+ ); //more important badge
206
+ --tt-badge-icon-color: var(--tt-color-green-inc-3);
207
+ --tt-badge-icon-color-subdued: var(
208
+ --tt-color-green-inc-2
209
+ ); //less important badge
210
+ --tt-badge-icon-color-emphasized: var(
211
+ --tt-color-green-dec-5
212
+ ); //more important badge
213
+ }
214
+ }
215
+
216
+ /**************************************************
217
+ Yellow
218
+ **************************************************/
219
+
220
+ &[data-style="yellow"] {
221
+ /* Light mode */
222
+ --tt-badge-border-color: var(--tt-color-yellow-inc-2);
223
+ --tt-badge-border-color-subdued: var(--tt-color-yellow-inc-3);
224
+ --tt-badge-border-color-emphasized: var(--tt-color-yellow-dec-1);
225
+ --tt-badge-text-color: var(--tt-color-yellow-dec-3);
226
+ --tt-badge-text-color-subdued: var(
227
+ --tt-color-yellow-dec-2
228
+ ); //less important badge
229
+ --tt-badge-text-color-emphasized: var(
230
+ --tt-color-yellow-dec-3
231
+ ); //more important badge
232
+ --tt-badge-bg-color: var(--tt-color-yellow-inc-4);
233
+ --tt-badge-bg-color-subdued: var(
234
+ --tt-color-yellow-inc-5
235
+ ); //less important badge
236
+ --tt-badge-bg-color-emphasized: var(
237
+ --tt-color-yellow-base
238
+ ); //more important badge
239
+ --tt-badge-icon-color: var(--tt-color-yellow-dec-3);
240
+ --tt-badge-icon-color-subdued: var(
241
+ --tt-color-yellow-dec-2
242
+ ); //less important badge
243
+ --tt-badge-icon-color-emphasized: var(
244
+ --tt-color-yellow-dec-3
245
+ ); //more important badge
246
+
247
+ /* Dark mode */
248
+ .dark & {
249
+ --tt-badge-border-color: var(--tt-color-yellow-dec-2);
250
+ --tt-badge-border-color-subdued: var(--tt-color-yellow-dec-3);
251
+ --tt-badge-border-color-emphasized: var(--tt-color-yellow-inc-1);
252
+ --tt-badge-text-color: var(--tt-color-yellow-inc-3);
253
+ --tt-badge-text-color-subdued: var(
254
+ --tt-color-yellow-inc-2
255
+ ); //less important badge
256
+ --tt-badge-text-color-emphasized: var(
257
+ --tt-color-yellow-dec-3
258
+ ); //more important badge
259
+ --tt-badge-bg-color: var(--tt-color-yellow-dec-4);
260
+ --tt-badge-bg-color-subdued: var(
261
+ --tt-color-yellow-dec-5
262
+ ); //less important badge
263
+ --tt-badge-bg-color-emphasized: var(
264
+ --tt-color-yellow-base
265
+ ); //more important badge
266
+ --tt-badge-icon-color: var(--tt-color-yellow-inc-3);
267
+ --tt-badge-icon-color-subdued: var(
268
+ --tt-color-yellow-inc-2
269
+ ); //less important badge
270
+ --tt-badge-icon-color-emphasized: var(
271
+ --tt-color-yellow-dec-3
272
+ ); //more important badge
273
+ }
274
+ }
275
+
276
+ /**************************************************
277
+ Red
278
+ **************************************************/
279
+
280
+ &[data-style="red"] {
281
+ /* Light mode */
282
+ --tt-badge-border-color: var(--tt-color-red-inc-2);
283
+ --tt-badge-border-color-subdued: var(--tt-color-red-inc-3);
284
+ --tt-badge-border-color-emphasized: var(--tt-color-red-dec-2);
285
+ --tt-badge-text-color: var(--tt-color-red-dec-3);
286
+ --tt-badge-text-color-subdued: var(
287
+ --tt-color-red-dec-2
288
+ ); //less important badge
289
+ --tt-badge-text-color-emphasized: var(
290
+ --tt-color-red-inc-5
291
+ ); //more important badge
292
+ --tt-badge-bg-color: var(--tt-color-red-inc-4);
293
+ --tt-badge-bg-color-subdued: var(
294
+ --tt-color-red-inc-5
295
+ ); //less important badge
296
+ --tt-badge-bg-color-emphasized: var(
297
+ --tt-color-red-dec-1
298
+ ); //more important badge
299
+ --tt-badge-icon-color: var(--tt-color-red-dec-3);
300
+ --tt-badge-icon-color-subdued: var(
301
+ --tt-color-red-dec-2
302
+ ); //less important badge
303
+ --tt-badge-icon-color-emphasized: var(
304
+ --tt-color-red-inc-5
305
+ ); //more important badge
306
+
307
+ /* Dark mode */
308
+ .dark & {
309
+ --tt-badge-border-color: var(--tt-color-red-dec-2);
310
+ --tt-badge-border-color-subdued: var(--tt-color-red-dec-3);
311
+ --tt-badge-border-color-emphasized: var(--tt-color-red-base);
312
+ --tt-badge-text-color: var(--tt-color-red-inc-3);
313
+ --tt-badge-text-color-subdued: var(
314
+ --tt-color-red-inc-2
315
+ ); //less important badge
316
+ --tt-badge-text-color-emphasized: var(
317
+ --tt-color-red-dec-5
318
+ ); //more important badge
319
+ --tt-badge-bg-color: var(--tt-color-red-dec-4);
320
+ --tt-badge-bg-color-subdued: var(
321
+ --tt-color-red-dec-5
322
+ ); //less important badge
323
+ --tt-badge-bg-color-emphasized: var(
324
+ --tt-color-red-inc-1
325
+ ); //more important badge
326
+ --tt-badge-icon-color: var(--tt-color-red-inc-3);
327
+ --tt-badge-icon-color-subdued: var(
328
+ --tt-color-red-inc-2
329
+ ); //less important badge
330
+ --tt-badge-icon-color-emphasized: var(
331
+ --tt-color-red-dec-5
332
+ ); //more important badge
333
+ }
334
+ }
335
+
336
+ /**************************************************
337
+ Brand
338
+ **************************************************/
339
+
340
+ &[data-style="brand"] {
341
+ /* Light mode */
342
+ --tt-badge-border-color: var(--tt-brand-color-300);
343
+ --tt-badge-border-color-subdued: var(--tt-brand-color-200);
344
+ --tt-badge-border-color-emphasized: var(--tt-brand-color-600);
345
+ --tt-badge-text-color: var(--tt-brand-color-800);
346
+ --tt-badge-text-color-subdued: var(
347
+ --tt-brand-color-700
348
+ ); //less important badge
349
+ --tt-badge-text-color-emphasized: var(
350
+ --tt-brand-color-50
351
+ ); //more important badge
352
+ --tt-badge-bg-color: var(--tt-brand-color-100);
353
+ --tt-badge-bg-color-subdued: var(
354
+ --tt-brand-color-50
355
+ ); //less important badge
356
+ --tt-badge-bg-color-emphasized: var(
357
+ --tt-brand-color-600
358
+ ); //more important badge
359
+ --tt-badge-icon-color: var(--tt-brand-color-800);
360
+ --tt-badge-icon-color-subdued: var(
361
+ --tt-brand-color-700
362
+ ); //less important badge
363
+ --tt-badge-icon-color-emphasized: var(
364
+ --tt-brand-color-100
365
+ ); //more important badge
366
+
367
+ /* Dark mode */
368
+ .dark & {
369
+ --tt-badge-border-color: var(--tt-brand-color-700);
370
+ --tt-badge-border-color-subdued: var(--tt-brand-color-800);
371
+ --tt-badge-border-color-emphasized: var(--tt-brand-color-400);
372
+ --tt-badge-text-color: var(--tt-brand-color-200);
373
+ --tt-badge-text-color-subdued: var(
374
+ --tt-brand-color-300
375
+ ); //less important badge
376
+ --tt-badge-text-color-emphasized: var(
377
+ --tt-brand-color-950
378
+ ); //more important badge
379
+ --tt-badge-bg-color: var(--tt-brand-color-900);
380
+ --tt-badge-bg-color-subdued: var(
381
+ --tt-brand-color-950
382
+ ); //less important badge
383
+ --tt-badge-bg-color-emphasized: var(
384
+ --tt-brand-color-400
385
+ ); //more important badge
386
+ --tt-badge-icon-color: var(--tt-brand-color-200);
387
+ --tt-badge-icon-color-subdued: var(
388
+ --tt-brand-color-300
389
+ ); //less important badge
390
+ --tt-badge-icon-color-emphasized: var(
391
+ --tt-brand-color-900
392
+ ); //more important badge
393
+ }
394
+ }
395
+ }
@@ -0,0 +1,16 @@
1
+ .tiptap-badge-group {
2
+ align-items: center;
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ gap: 0.25rem;
6
+ }
7
+
8
+ .tiptap-badge-group {
9
+ [data-orientation="vertical"] {
10
+ flex-direction: column;
11
+ }
12
+
13
+ [data-orientation="horizontal"] {
14
+ flex-direction: row;
15
+ }
16
+ }
@@ -0,0 +1,99 @@
1
+ .tiptap-badge {
2
+ font-size: 0.625rem;
3
+ font-weight: 700;
4
+ font-feature-settings:
5
+ "salt" on,
6
+ "cv01" on;
7
+ line-height: 1.15;
8
+ height: 1.25rem;
9
+ min-width: 1.25rem;
10
+ padding: 0.25rem;
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ border: solid 1px;
15
+ border-radius: var(--tt-radius-sm, 0.375rem);
16
+ transition-property: background, color, opacity;
17
+ transition-duration: var(--tt-transition-duration-default);
18
+ transition-timing-function: var(--tt-transition-easing-default);
19
+
20
+ /* button size large */
21
+ &[data-size="large"] {
22
+ font-size: 0.75rem;
23
+ height: 1.5rem;
24
+ min-width: 1.5rem;
25
+ padding: 0.375rem;
26
+ border-radius: var(--tt-radius-md, 0.375rem);
27
+ }
28
+
29
+ /* button size small */
30
+ &[data-size="small"] {
31
+ height: 1rem;
32
+ min-width: 1rem;
33
+ padding: 0.125rem;
34
+ border-radius: var(--tt-radius-xs, 0.25rem);
35
+ }
36
+
37
+ /* trim / expand text of the button */
38
+ .tiptap-badge-text {
39
+ padding: 0 0.125rem;
40
+ flex-grow: 1;
41
+ text-align: left;
42
+ }
43
+
44
+ &[data-text-trim="on"] {
45
+ .tiptap-badge-text {
46
+ text-overflow: ellipsis;
47
+ overflow: hidden;
48
+ }
49
+ }
50
+
51
+ /* standard icon, what is used */
52
+ .tiptap-badge-icon {
53
+ pointer-events: none;
54
+ flex-shrink: 0;
55
+ width: 0.625rem;
56
+ height: 0.625rem;
57
+ }
58
+
59
+ &[data-size="large"] .tiptap-badge-icon {
60
+ width: 0.75rem;
61
+ height: 0.75rem;
62
+ }
63
+ }
64
+
65
+ /* --------------------------------------------
66
+ ----------- BADGE COLOR SETTINGS -------------
67
+ -------------------------------------------- */
68
+
69
+ .tiptap-badge {
70
+ background-color: var(--tt-badge-bg-color);
71
+ border-color: var(--tt-badge-border-color);
72
+ color: var(--tt-badge-text-color);
73
+
74
+ .tiptap-badge-icon {
75
+ color: var(--tt-badge-icon-color);
76
+ }
77
+
78
+ /* Emphasized */
79
+ &[data-appearance="emphasized"] {
80
+ background-color: var(--tt-badge-bg-color-emphasized);
81
+ border-color: var(--tt-badge-border-color-emphasized);
82
+ color: var(--tt-badge-text-color-emphasized);
83
+
84
+ .tiptap-badge-icon {
85
+ color: var(--tt-badge-icon-color-emphasized);
86
+ }
87
+ }
88
+
89
+ /* Subdued */
90
+ &[data-appearance="subdued"] {
91
+ background-color: var(--tt-badge-bg-color-subdued);
92
+ border-color: var(--tt-badge-border-color-subdued);
93
+ color: var(--tt-badge-text-color-subdued);
94
+
95
+ .tiptap-badge-icon {
96
+ color: var(--tt-badge-icon-color-subdued);
97
+ }
98
+ }
99
+ }
@@ -0,0 +1,46 @@
1
+ 'use client'
2
+
3
+ import { forwardRef } from 'react'
4
+ import './badge-colors.scss'
5
+ import './badge-group.scss'
6
+ import './badge.scss'
7
+
8
+ export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {
9
+ variant?: 'ghost' | 'white' | 'gray' | 'green' | 'default'
10
+ size?: 'default' | 'small'
11
+ appearance?: 'default' | 'subdued' | 'emphasized'
12
+ trimText?: boolean
13
+ }
14
+
15
+ export const Badge = forwardRef<HTMLDivElement, BadgeProps>(
16
+ (
17
+ {
18
+ variant,
19
+ size = 'default',
20
+ appearance = 'default',
21
+ trimText = false,
22
+ className,
23
+ children,
24
+ ...props
25
+ },
26
+ ref
27
+ ) => {
28
+ return (
29
+ <div
30
+ ref={ref}
31
+ className={`tiptap-badge ${className || ''}`}
32
+ data-style={variant}
33
+ data-size={size}
34
+ data-appearance={appearance}
35
+ data-text-trim={trimText ? 'on' : 'off'}
36
+ {...props}
37
+ >
38
+ {children}
39
+ </div>
40
+ )
41
+ }
42
+ )
43
+
44
+ Badge.displayName = 'Badge'
45
+
46
+ export default Badge
@@ -0,0 +1 @@
1
+ export * from './badge'